- 博客(8)
- 收藏
- 关注
原创 volatile关键字的理解以及代码验证
volatile字面翻译,就是不稳定的,是JAVA语法中的一个关键字,为实例字段的同步访问提供了一种免锁机制,如果声明一个字段为volatile,那么不同线程之间对该字段的读写操作是正确的和同步的。使用volatile,比起使用显示的创建锁和使用synchronized来讲,代码会更加简洁,同时,性能开销也会更小。
2023-07-18 16:39:04 75
原创 HashMap源码解读
遍历树节点,将节点数据分别放入低位链表与高位链表中,分别放入新数组中,低位链表的位置在原下标位置上,高位链表的位置在原下标+旧数组长度的位置上,然后分别判断,如果低位链表和高位链表的下标上,节点个数是否小于6,如果小于6,那么就转换为链表形式放入,否则,以红黑树的形式放入。如果该Node有多个Node的链表,那么分为高位链表与低位链表,分别放入新数组中,低位链表的位置在原下标位置上,高位链表的位置在原下标+旧数组长度的位置上。这里,我们看到,如果tab如果为空,那么,就去创初始化一个Node数组,
2023-07-14 09:46:11 51
原创 LinkedList的特点以及使用场景
可以看出,随机访问,对于LinkedList来讲,还是相当缓慢的,需要遍历,时间复杂度为O(n),如果你的下标更靠近头结点,那么就从头节点开始遍历,如果更靠近尾结点,那么从尾结点开始遍历。LinkedList 适用于频繁插入与删除的场景,并且,不存在扩容的问题,但是,并不擅长随机访问,由于内存的不连续性,不存在内存碎片的问题,接下来,我们看一下get方法,看一下,LinkedList是如何查询元素的。不需要连续的地址空间,不容易产生内存碎片。老样子,看原来,先从成员变量看起。接下来,我们来看看源码。
2023-07-11 09:38:29 318
原创 ArrayList的特点
ArrayList 底层是数组,有初始容量以及最大容量的限制,适用于频繁随机访问的场景,并不适用于频繁插入以及删除的场景,会有浪费空间的可能.
2023-07-10 10:54:49 63
原创 String,StringBuffer,StringBuilder的区别
请说一下String,StringBuffer,StringBuilder的相同点和不同点。
2023-07-06 16:35:47 39
原创 编写jar包完成SpringBoot自动装配的测试案例
编写jar包完成SpringBoot自动装配的测试案例1.新建项目就新建了一个项目,里面什么依赖都没有加2.修改Maven配置添加依赖这个依赖是为了在编写yml配置文件的时候有提示<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</ar
2021-06-07 22:49:27 335
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人