自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

记忆殿堂的博客

苦练基本功,每天前进十公里,致力于写出更规范好看的代码(bug)。

  • 博客(40)
  • 问答 (3)
  • 收藏
  • 关注

原创 华为od算法

2023华为OD机试真题B卷 Java 实现【冠亚军排名,奖牌榜排名】_MISAYAONE的博客-CSDN博客华为OD机试 - 冠亚军排名,奖牌榜排名(Java)-CSDN博客2023华为od机试统一考试B卷【拔河比赛】Java 实现-CSDN博客2023华为od机试真题B卷【比赛的冠亚季军】Java 实现_MISAYAONE的博客-CSDN博客2023华为od机试真题B卷【找出两个整数数组中同时出现的整数】Java 实现-CSDN博客。

2023-10-22 19:35:53 93

原创 几道常见的面试题及详解

1)说说get与post的联系和区别?get和post本质上都是tcp连接,但由于http协议和浏览器或者服务器的限制,从而使它们在应用过程中产生了差别。区别的话可以从三个层面来解答:http报文层面:get将请求信息放在url上,post放在报文体中数据库层面:get符合幂等性和安全性,post不符合其他层面:get可以被缓存、被存储,而post不行参考:get和post的区别?都9102年了,还问GET和POST的区别GET 和 POST 到底有什么区别?2)浏览器输

2021-02-27 00:19:15 167

原创 深入浅出带你读懂Java线程池(持续更新)

线程池简化了线程的管理工作,并且java.util.concurrent提供了一种灵活的线程池实现作为Executor框架的一部分。在Java类库中,任务执行的主要抽象不是Thread,而是Executor。Executor提供了一种标准的方法将任务的提交过程与执行过程解耦开来,并用Runnable来表示任务。Executor基于生产者-消费者模式,提交任务的操作相当于生产者(生成待完成的工作单元),任务执行的线程则相当于消费者(执行完这些工作单元)。如果要在程序中实现一个生产者-消费者的设计,那么最简单

2021-02-09 16:30:26 140

原创 深入浅出带你读懂Java并发基础(持续更新)

并发容器CopyOnWriteArrayList用于替代同步List,在某些情况下它提供了更好的并发性能,并且在迭代期间不需要对容器进行加锁或复制。“写入时复制(Copy-On-Write)”容器的线程安全性在于,只要正确地发布一个事实不可变的对象,那么在访问该对象时就不再需要进一步的同步。在每次修改时,都会创建并重新发布一个新的容器副本,从而实现可变性。同步工具类闭锁闭锁是一种同步工具类,可以延迟线程的进度直到其到达终止状态。闭锁的作用相当于一扇门:在闭锁到达结束状态之前,这扇门一直是关闭的,并

2021-02-09 12:58:21 135

原创 深入浅出带你读懂线程安全性(持续更新)

基础知识如果当多个线程访问同一个可变的状态变量时没有使用合适的同步,那么程序就会出现错误。有三种方式可以修复这个问题:不在线程之间共享该变量将状态变量修改为不可变的变量在访问状态变量时使用同步线程安全性的定义:当多个线程访问某个类时,这个类始终都能表现出正确的行为,那么这个类是线程安全的。竞态条件:当某个计算的正确性取决于多个线程的交替执行时序时,那么就会发生竞态条件。换句话说,就是正确的结果取决于运气。最常见的竞态条件类型就是“先检查后执行”操作,即通过一个可能失效的观测结果来决定下一步的

2021-02-02 10:10:31 565

原创 深入浅出带你读懂Java多线程开篇(持续更新)

前置知识在此之前让我们了解一下操作系统,单处理器,多处理器,进程,线程的概念及它们之间的联系。在早期的计算机中不包含操作系统,它们从头到尾只执行一个程序,并且这个程序能访问计算机中的所有资源。操作系统的出现使得计算机每次能运行多个程序,并且不同的程序都在单独的进程中运行:操作系统为各个独立执行的进程分配各种资源,包括内存,文件句柄以及安全证书等。如果需要的话,在不同的进程之间可以通过一些粗粒度的通信机制来交换数据,包括:套接字、信号处理器、共享内存、信号量以及文件等。//todo picture为了

2021-02-02 07:13:32 226 1

原创 一年Java开发经验小公司面试总结

笔试ArrayList、LinkedList、Vector的实现方式mybatis中的动态SQL元素线程有几种实现方式SQL题给两张表,一张订单表,一张设备表,查询id=1的设备最近的一条订单数据。编程题买饮料问题,这个写出来了。面试都是根据你的简历来提问,不熟悉的东西慎写。聊项目,你在这个项目中担任了什么角色,做了什么事情。继续深挖项目,这个uuid是怎么实现的。会前端吗,怎么在页面之间传递数据。谈一下微服务网关的实现原理。重写写一下之前的SQL,查询所有设备的最新一条订单数据。

2021-02-01 04:36:01 625

原创 Java中的数组

数组与其他种类的容器之间的区别有三方面:效率、类型和保存基本类型的能力。在Java中,数组是一种效率最高的存储和随机访问引用序列的方式。数组就是一个简单的线性序列,这使得元素访问非常快速。但是为这种速度所付出的代价是数组对象的大小被固定,并且在其生命周期中不可改变。尽管通常应该首选ArrayList而不是数组,但是这种弹性需要开销,因此,ArrayLists的效率比数组低很多。数组是第一级对象无论使用哪种类型的数组,数组标识符只是一个引用,指向在堆中创建的一个真实对象,这个对象用以保存指向其他对象的引用

2021-01-31 07:03:44 124

原创 浅析Java中的RTTI机制与反射机制

Java有两种方式让我们在运行时识别对象和类的信息的。一种是“传统的”RTTI(Run-Time Type Identification),它假定我们编译时已经知道所有的类型;另一种是“反射”机制,它允许我们在运行是发现和使用类的信息。14.2 Class对象要理解RTTI在Java中的工作原理,首先必须知道类型信息在运行时是如何表示的。这项工作是由称为Class对象的特殊对象完成的,它包含了与类有关的信息。事实上,Class对象就是用来创建类的所有的”常规“对象的。Java使用Class对象来执行其R

2021-01-31 05:10:06 206

原创 Java编程思想-字符串

13.1 不可变StringString对象是不可变的。查看JDK文档你就会发现,String类种每一个看起来会修改String值的方法,实际上都是创建了一个全新的String对象,以包含修改后的字符串内容。而最初的String对象则毫无变动。13.2 StringBuilderStringBuilder提供了丰富而全面的方法,包括insert()、replace()、substring()甚至reverse(),但是最常用的还是append()和toString()。还有delete()方法。当你

2021-01-31 00:15:47 101

原创 Java编程思想-容器

通常,程序总是根据运行时才知道的某些条件去创建新对象。在此之前,不会知道所需对象的数量,甚至不知道确切的类型。为解决这个普遍的编程问题,需要在任意时刻和任意位置创建任意数量的对象。Java有多种保存对象(应该说是对象的引用)。数组是保存一组对象的最有效的方式,但是数组具有固定的尺寸,而在更一般的情况中,你写程序并不知到需要多少个对象,或者是否需要更复杂的方式来存储对象,因此数组尺寸这一限制显得过于受限了。Java实用类库提供了一套相当完整的容易类来解决这个问题,其中基本的类型是List、Set、Queu

2021-01-30 01:27:50 214

原创 Java编程思想-接口

9.1 抽象类和抽象方法Java提供一种叫做抽象方法的机制,这种方法是不完整的;仅有声明而没有方法体。下面是抽象方法声明所采用的语法:abstract void f();包含抽象方法的类叫做抽象类。如果一个类包含一个或多个抽象方法,该类必须被限定为抽象的。如果从一个抽象类继承,并想创建该类的对象,那么就必须为父类的所有抽象方法提供方法定义。如果不这么做,那么子类便也是抽象类,且编译器将会强制我们用abstract关键字来限定这个类。9.6 适配接口接口最吸引人的原因之一就是允许同一个接口具有多

2021-01-29 09:21:05 68

原创 英语提升利器之沙拉查词,Anki

学好英语对程序员的重要性不言而喻。而对于已经工作的程序员来说,专门花时间去背英语单词显然性价比不高。在日常工作的场景中,大多数程序员只要能够熟练阅读英文官方文档和技术文章就足够了。在这篇文章中,我将为大家介绍两个提升英语阅读的利器—沙拉查词,Anki。学习场景浏览器取词当我们在浏览器上查阅英文文档的时候,遇到看不懂的词,一个划词插件可以帮我们节省很多步骤和时间。在对比了几款划词插件后,沙拉查词以它丰富的词典,灵活的划词方式,完善的单词管理吸引了我。在进一步的使用之后,它也没让我失望。并且作为一个完全免

2021-01-29 07:56:53 1003 2

原创 Java大师是怎么讲多态的

本文所有绝大部分内容都提取自《Java编程思想》第8章。最近想复习一下Java中多态这个概念,就在网上找了十几篇文章来看,看完之后还是感觉一头雾水。只好老老实实去看《Java编程思想》,看完之后不能说醍醐灌顶吧,但确实对多态这个概念有了更全面的认识。明白了为什么会有多态以及多态的用途,而不单单只是一个让我死记硬背的概念。Q:什么是多态?A: 先看一段代码//有三个音符的乐谱public enum Note { MIDDLE_C, C_SHARP, B_FLAT;}//能演奏出音符的乐

2021-01-29 05:31:29 144

原创 Java编程思想-复用类

正如Java中所有事物一样,问题解决都是围绕类展开的。可以通过创建新类来复用代码,而不必再重头开始编写。可以使用别人业己开发并调试好的类。第一种方法非常直观:只需在新的类中产生现有类的对象。由于新的类是由现有类的对象所组成,所以这种方法称为组合。该方法只是复用了现有程序代码的功能,而非它的形式。第二种方法则更细致一些,它按照现有类的类型来创建新类。无需改变现有类的形式,采用现有类的形式并在其中添加新代码。这种方式称为继承。7.1 组合语法我们可以在一个新类的定义中使用其他对象。这就是组合(compo

2021-01-28 16:19:09 122 1

原创 Java编程思想-初始化与清理

C++引入了构造器的概念,这是一个在创建对象时被自动调用的特殊方法。Java中也采用了构造器,并额外提供了“垃圾回收器”。对于不再使用的内存资源,垃圾回收器能自动将其释放。5.1 用构造器确保初始化在Java中,通过提供构造器,类的设计者可确保每个对象都会初始化。创建对象时,如果其类具有构造器,Java就会在用户有能力操作对象之前自动调用相应的构造器,从而保证了初始化的进行。构造器是一种特殊类型的方法,因为它没有返回值。这与返回值为空(void)明显不同。对于空返回值,尽管方法本身不会自动返回什么,但

2021-01-28 15:04:59 129

原创 Java编程思想-控制执行流程

4.4 Foreach语法Java SE5引入了一种新的更加简洁的for语法用于数组和容器,即foreach语法,表示不必创建int变量去对由访问项构成的序列进行计数,foreach将自动产生每一项。for(float x : f) {}这条语句定义了一个float类型的变量x,继而将每一个f的元素赋值给x。任何返回一个数组的方法都可以使用foreach。例如,String类有一个方法toCharArray(),它返回一个char数组,因此可以很容易地像下面这样迭代在字符串里面的所有字符:publ

2021-01-27 21:17:05 88

原创 Java编程思想-操作符

3.2 使用Java操作符几乎所有的操作符都只能操作“基本类型”。例外的操作符是“=”、“==”,这些操作符能操作所有的对象。除此以外,String类支持“+”和“+=”。3.5 算术操作符下面这个例子展示了Random的用法:public class MathOps {Random rand=new Random(47);int j;j=rand.nextInt(100)+1;print("j:"+j );}要生成数字,程序首先会创建一个Random类的对象。如果在创建过程

2021-01-27 20:39:36 110

原创 Java编程思想-一切都是对象

2.1 用引用操纵对象尽管一切都看作对象,但操纵的标识符实际上是对象的一个“引用”。可以将这一情形想象成遥控器(引用)来操纵电视机(对象)。只要握住这个遥控器,就能保持与电视机的连接。当有人想改变频道或者减小音量时,实际操控的是遥控器(引用),再由遥控器来调控电视机(对象)。此外,即使没有电视机,遥控器亦可独立存在。也就是说,你拥有一个引用,并不需要有一个对象与它关联。因此,如果想操纵一个词或者句子,则可以创建一个String引用:String s;2.2 必须由你创建所有对象一旦创建了一个引用,

2021-01-27 02:43:53 141

原创 Java编程思想-对象导论

1.1抽象过程面向对象方式通过向程序员表示问题空间中的元素的工具而更进了一步。这种表示方式非常通用,使得程序员不会受限于特定类型的问题。我们将问题空间中的元素机器在解空间中的表示称为”对象“。这种思想的实质是:程序可以通过添加新类型的对象使自身适用于某个特定问题。因此,当你在阅读描述解决方案的代码的同时,也是在阅读问题的表述。相比以前我们所使用的语言,这是一种更灵活和更强有力的语言抽象。Booch对对象提出了一个更加简洁的描述:对象具有状态、行为和标识。这意味这每一个对象都可以拥有内部数据(该对象的状态

2021-01-26 22:51:56 152 2

原创 快速入门设计模式

设计原则找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起。针对接口编程,而不是针对实现编程。多用组合,少用继承。为了交互对象之间的松耦合设计而努力。类应该对扩展开放,对修改关闭。要依赖抽象,不要依赖具体类。最小知识原则:只和你的密友谈话。别调用我们,我们会调用你。一个类应该只有一个引起变化的原因策略模式我们知道,并非“所有”的子类都具有飞行和...

2019-05-08 21:41:34 442

原创 《图解HTTP》读书笔记

HTTP基础URI是Uniform Resource Identifier的缩写,是由某个协议方案表示的资源的定位标识符。采用HTTP协议时,协议方案就是http。除此之外,还有ftp,mailto,telnet,file等。查询字符串:针对已指定的文件路径内的资源,可以使用查询字符串传入任意参数。此项可选。片段标识符:使用片段标识符通常可标记出已获取资源中的子资源(文档内的某个位置)。...

2019-05-08 21:41:21 154

原创 《图解TCP/IP》读书笔记

地址分类A类地址是首位以“0”开头的地址。从第一位到第八位是它的网络标识。用十进制表示的话,0.0.0.0-127.0.0.0是A类的网络地址。A类地址的后24位相当于主机标识。因此,一个网段内可容纳的主机地址上限为16,777,214个。B类IP是前两位为“10”的地址。从第1位到第16位是它的网络标识。用十进制表示的话,128.0.0.1-191.255.0.0是B类的网络地址。B类地址...

2019-05-08 21:41:03 222

原创 快速入门Java(四)接口,lambda表达式,内部类

一、接口的概念接口:用来描述类具有什么功能,而并不给出每个功能的具体实现。内部类:内部类定义在另外一个类的内部,其中的方法可以访问包含它们的外部类的域,主要用于设计具有相互协作关系的集合。在Java中,接口不是类,而是对类的一组需求描述。如果类遵循某个特定接口,那么就履行这项服务。接口中的所有方法自动地属于public。因此,在接口中声明方法时,不必提供关键字public。在接口中还可以...

2019-05-08 21:40:54 124

原创 Java快速入门(七)集合

在Java类库中,集合类的基本接口是Collection类。一、Java库中的具体集合ArrayList一种可以动态增长和缩减的索引序列。LinkedList一种可以在任何位置进行高效地插入和删除操作的有序序列。ArrayDeque一种用循环数组实现的双端队列。HashSet一种没有重复元素的无序集合。TreeSet一种有序集。EnumSet一种包含枚举类型值的集。LinkedH...

2019-05-08 21:39:56 278

原创 Java快速入门(六)泛型

使用泛型机制编写的程序代码要比那些杂乱地使用Object变量,然后再进行强制类型转换的代码具有更好的安全性和可读性。泛型程序设计意味着编写的代码可以被很多不同类型的对象所重用。例如,我们并不希望为聚集String和File对象分别设计不同的类。实际上,也不需要这样做,因为一个ArrayList类可以聚集任何对象。这是一个泛型程序设计的实例。在Java中增加泛型类之前,泛型程序设计是用继承实现的...

2019-05-08 21:39:45 149

原创 快速入门Java(五)异常

如果一个用户在运行程序期间,由于程序的错误或一些外部环境的影响造成用户数据的丢失。为了避免这类事件的发生,至少应该做到以下几点:向用户通告错误保存所有的工作结果允许用户已妥善的形式退出程序一、处理异常在Java中,如果某个方法不能采取正常的途径完成它的任务,就可以通过另外一个路径退出方法。在这种情况下,方法并不会返回任何值,而是抛出一个封装了错误信息的对象。需要注意的是,这个方法将会...

2019-05-08 21:39:22 118

原创 快速入门Java(一)语法

Java中的基本类型在Java中,一共有8种基本类型,4种基本类型,2种浮点类型,1种字符类型char,1种用于表示真值的boolean类型。在c和c++中,int和long类型的大小与目标平台相关。Java中的字符串从概念上讲,Java字符串就是Unicode字符序列。String类的substring方法可以从一个较大的字符串提取出一个子串。当将一个字符串与一个非字符串的值进行拼接时...

2019-05-08 21:39:08 160

原创 快速入门Java(三)多态,抽象类,Object,枚举类,反射

一、类,超类和子类在Java中,所有的继承都是公有继承,而没有C++中的私有继承和保护继承。将通用的方法放在超类中,而将具有特殊用途的方法放在子类中。super不是一个对象的引用,不能将super赋给另一个对象变量,它只是一个指示编译器调用超类方法的特殊关键字。在子类中可以增加方法或覆盖超类的方法,然而绝对不能删除继承的任何域和方法。子类构造器由于Manager类的构造器不能访问Empl...

2019-05-08 21:38:43 260

原创 快速入门Java(二)语法

类之间的关系在类之间,最常见的关系有依赖(“uses-a”)如果一个类的方法操纵另一个类的对象,我们就说一个类依赖于另一个类。聚合(“has-a”)类A的对象包含类B的对象。继承(“is-a”)类的定义在Java中,最简单的类定义形式为:class ClassName{field1field2…constructor1constructor2…method1me...

2019-05-08 21:38:31 138

原创 快速入门MySQL

检索数据DISTINCT 此关键字指示MySQL只返回不同的值。SELECT DISTINCT vend_idFROM products;SELECT语句返回所有匹配的行,它们可能是指定表中的每个行。为了返回第一行或前几行,可使用LIMIT子句。SELECT prod_nameFROM productsLIMIT 5;SELECT prod_nameFROM product...

2019-05-08 21:37:53 136

原创 字符的编码方式

ASCII 码学过计算机的人都知道 ASCII 码,总共有 128 个,用一个字节的低 7 位表示,0~31 是控制字符如换行回车删除等;32~126 是打印字符,可以通过键盘输入并且能够显示出来。ISO-8859-1128 个字符显然是不够用的,于是 ISO 组织在 ASCII 码基础上又制定了一些列标准用来扩展 ASCII 编码,它们是 ISO-8859-1~ISO-8859-15,其中...

2019-05-08 21:37:39 1178

原创 多线程基础知识

第1章 快速认识线程线程是程序执行的一个路径,每个线程都有自己的局部变量表,程序计数器(指向正在执行的指令指针)以及各自的生命周期。其实Thread的run和start就是一个比较典型的模板设计模式,父类编写算法结构代码,子类实现逻辑细节。这样做的好处是,程序结构由父类控制,并且是final修饰的,不允许重写,子类只需要实现想要的逻辑任务即可。实现线程的执行单元有两种方式,第一种是重写Th...

2019-05-08 21:37:05 183

原创 深入理解volatile关键字

layout: posttitle: 深入理解volatile关键字subtitle: 深入理解volatile关键字date: 2018-06-05author: wysheader-img: img/post-bg-cook.jpgcatalog: truetags:- Java并发volatile关键字的介绍volatile关键字只...

2019-05-08 21:36:20 351

原创 安装elasticsearch遇到的几个问题

首先我已经安装好了jdk1.8的环境并成功解压,并打算用./bin/elasticsearch这个命令把elasticsearch跑起来,然后我遇到了第一个问题。一第一个问题的提示是:Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x0000000085330000, 2060255232, 0) f...

2019-03-31 03:17:35 1291

原创 第10章 深入理解Session与Cookie

    Session与Cookie的作用都是为了保持访问用户与后端服务器的交互状态。    使用Cookie来传递信息时,随着Cookie个数的增多和访问量的增加,它占用的网络带宽也很大,试想假如Cookie占用200个字节,如果一天的PV有几亿,它要占用多少带宽?所以有大访问量的时候希望用Session,但是Se...

2018-11-09 02:05:08 139

原创 第3章 深入分析Java Web中的中文编码问题

计算机中存储信息的最小单元是一个字节,即8个bit,所以能表示的字符范围是0~255个。ASCII码总共128个。ISO-8858-1总共能表示256个字符。GB2313是双字节编码,总的编码范围是A1-F7,包含6763个汉字。GBK总共有23840个码位,它能表示21003个汉字。UTF-16用两个字节表示。UTF-8采用了一种变长技术,每个编码区域有不同的字码长度。UTF-8...

2018-11-08 16:36:40 134

原创 第2章 深入分析Java I/O的工作机制

Java的I/O操作类在包java.io下,这些类大概可以分为如下四组。1.基于字节操作的I/O接口:InputStream和OutputStream2.基于字符操作的I/O接口:Writer和Reader3.基于磁盘操作的I/O接口:File4.基于网络操作的I/O接口:Socket   不管是磁盘还是网络传输,最小的存储单元都是字节,而不是字符,所以I/O操作的...

2018-11-07 21:00:59 260

原创 第1章 深入web请求过程

深入web请求过程不管网络架构如何变化,但始终有一些固定不变的原则需要遵守。1,互联网上所有资源都要用一个url来表示。url就是统一资源定位符。2,必须基于HTTP协议与服务端交互。如何发起一个HTTP请求?发起一个HTTP请求和建立一个Socket连接区别不大,只不过outputStream,write写的二进制字节数据格式要符合HTTP协议。浏览器在建立Socket之前,必须根...

2018-11-07 20:29:16 153

原创 操作系统第一篇《基础原理篇》

第三章5.处理器从用户态转为内核态面临的关键问题是什么?如何解决?通过设置状态字(cpu状态字里面的一个字位),可以将cpu设置为内核态,或者用户态,或者其它的子态。6.下列操作是否可以在用户态下执行?a)保护中断现场。否b)因系统调用陷入内核。否c)启动外部设备。否d)外设与内存经DMA进行数据交换。否e)缺页中断。否

2016-08-11 21:54:18 298

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除