自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 HashMap源码解析

使用特殊的算法返回哈希值。初始化加载因子0.75。此时table=null。

2023-05-06 15:37:06 110

原创 HashSet底层解析

HashSet实际上是HashMap(HashMap的底层是数组+链表+红黑树)。可以存放null值,但只能有一个null。不保证元素是有序的,取决于hash后,再确定索引的结果。

2023-05-05 17:22:34 263

原创 LinkedList底层解析

这个方法大致逻辑是:先将尾节点用一个对象常量l保存,随后new一个节点对象newNode,将我们传入的新增元素放入这个对象的item,这个对象的上一个节点为l,下一个节点为空。如果不为空,将l的下个节点指向新节点。与ArrayList不同,LinkedList在底层是通过链表来实现的,每个元素(节点)都包含了一个指向前驱和后继节点的引用。LinkedList可以动态地添加或删除元素,因为它不需要像数组一样移动元素,只需要修改节点的前驱或后继节点的引用即可。只有一个无参构造器和一个传入集合的构造器。

2023-04-26 16:13:27 528

原创 java线程池

用户无需关注如何创建线程,如何调度线程来执行任务,用户只需提供Runnable对象,将任务的运行逻辑提交到执行器Executor中,由Executor框架完成线程的调配和任务的执行部分。线程池在内部实际上构造了一个生产者消费者模型,将线程和任务两者解耦,并不直接关联,从而良好的管理缓冲任务,复用线程。当线程池空闲时并且超过了此时间,多余的线程就会销毁,直到线程池中的线程数等于 corePoolSize 的值为止;当线程池的所有线程都在处理任务时,若来了新任务则会缓存到此任务队列中,然后等待执行。

2023-04-19 18:00:38 234

原创 ArrayList底层结构与源码分析

可以看到,在add方法的第一行,有一个ensureCapacityInternal()的方法,每次执行add()方法总是会执行 ensureCapacityInternal()方法,其含义是是否执行扩容。grow为真正扩容的方法。可以看到,第一次扩容为10,之后为长度的1.5倍(oldCapacity >> 1),扩容的机制是数组拷贝(Arrays.copyOf())。其中elementData就是实质上存放数据的地方,是一个Object数组,也就应证了ArrayList底层维护的是一个数组这个说法。

2023-04-11 11:27:29 112

原创 java基础巩固——stream流

与相同功能的操作相比,Stream流的代码量小,代码更高级。Stream流在面向大的数据时,执行效率更高。使用Stream流的操作时不占用存储(原因是stream只能被“消费”一次,一旦遍历过就会失效,就像容器的迭代器那样,想要再次遍历必须重新生成)。Stream流的思想大致可以理解为一条流水线,经过我们规定的方式去加工产品,经过多道工序后,最终就得到了我们想要的最终产品。

2023-03-29 17:10:58 831

原创 java基础——包装类、常用类

1.这行代码首先会触发自动装箱操作,调用Integer类的valueOf方法,可以看到,在方法内部,并不是一个简简单单的一个return new Integer(),而是有一个判断。结合方法的注解,不难发现,源码的意思是,如果你的值在缓存的范围内(-128——127),则不执行操作,直接从缓存中获取。StringBuffer是String的一个增强类,代表一个可变的字符序列,可以对字符串内容进行增删,很多方法都与String相同。当它们有了类的特点,就可以调用类的方法。进行与数学相关的运算的类。

2023-03-26 15:49:58 454

原创 java基础巩固——运算符

1. 运算符分类(1) 算术运算符(2) 赋值运算符(3) 关系运算符 [比较运算符](4) 逻辑运算符(5) 位运算符 [需要二进制基础](6) 三元运算

2023-03-21 09:51:55 97

原创 java基础巩固——基本数据类型

1. java 数据类型分为两大类 基本数据类型, 引用类型2. 基本数据类型有8种 数值型 [byte , short , int , long , float ,double] 非数值型[char , boolean]3. 引用类型 [类,接口, 数组]

2023-03-20 12:42:48 70

原创 Java反射机制(2)

前面我们大致了解了什么是java的反射机制。本篇文章我将继续就Java反射机制进行学习。希望能帮助帮助到我自己和阅读者。反射的原理:在进行类加载的时候,在堆中生成一个记录类结构的Class对象。Class:代表一个类,Class对象表示某个类加载后在堆中的对象。Field:代表类的成员变量,Field对象表示某个类的成员变量。Method:代表类的方法,Method对象表示某个类的方法。Constructor:代表类的构造器,Constructor对象代表某个类的构造器。它们都在java.lang.refl

2022-07-04 21:12:35 377

原创 Java反射机制(1)

Java的反射机制允许程序在执行期间借助于Reflection API取得任何类的内部信息,例如:Field 成员变量、Constructer 构造器、 Method 成员方法),并且能够操作对象的属性以及方法。反射在设计模式和底层框架中被广泛使用。首先我们根据一个例子引出反射:现在有一个Cat类:在同包下还有一个properties文件re.properties: 此时,问题来了,如果我们要根据配置文件re.properties读取Cat的类信息并调用其方法,该怎么做呢?我们的常规操作Cat

2022-07-02 17:26:54 405 1

空空如也

空空如也

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

TA关注的人

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