- 博客(6)
- 收藏
- 关注
原创 Spring Boot Starters 学习记录
1、简化依赖,它可以整合很多jar依赖,然后统一引入,这样当你需要的时候就可以引入一个starter 就完成了相关依赖的导入,比如spring-boot-starter-web,只包含了spring-webmvc,sping-web,hibernate-validator,spring-boot-starter-tomcat(内嵌tomcat)
2023-09-06 14:55:43
48
1
原创 HashMap源码学习
HashMap ,是一种散列表,存储key-Value 键值对,又称哈希表。HashMap 是一种散列表结构,底层采用数组+链表+红黑树来实现存储。HashMap 默认的大小是 16,只有在第一次插入元素的时候才会分配空间,并且分配的大小一定是二的整数次幂。HashMap扩容的时候,节点位置需要重新计算,(位置要不不变,要不在原位置+上个桶的长度的)HashMap是一个槽一个槽进行计算的(e.hash & oldCap ==0 说明位置没有变,否则移到下一个位置)。
2023-09-03 18:19:32
96
原创 LinkedList源码学习
LinkedList基于节点实现的双向链表的List,每个节点都指向前一个和后一个节点从而形成链表。LinkedList提供队列、双端队列、栈的功能LinkedList 随机访问平均时间复杂度是 O(n) ,查找指定元素的平均时间复杂度是 O(n)。LinkedList 移除指定位置的元素的最好时间复杂度是 O(1) ,最坏时间复杂度是 O(n) ,平均时间复杂度是 O(n)。LinkedList 添加元素的最好时间复杂度是O(1),最坏时间复杂度是O(n),平均时间复杂度是O(n)。
2023-08-13 17:24:45
83
1
原创 ArrayList 源码学习
ArrayList 是基于[]数组实现的 List 实现类,支持在数组容量不够时,一般按照1.5倍自动扩容。同时,它支持手动扩容、手动缩容。ArrayList 随机访问时间复杂度是 O(1) ,查找指定元素的平均时间复杂度是 O(n)。ArrayList 移除指定位置的元素的最好时间复杂度是 O(1) ,最坏时间复杂度是 O(n) ,平均时间复杂度是 O(n)。最好是在末尾(不需要移动元素)。ArrayList 移除指定元素的时间复杂度是 O(n)。需要遍历,然后移动元素。
2023-08-12 23:09:27
29
原创 JAVA实现阻塞队列
引入synchronized 关键字,保证同一方法,同一时刻只能被一个线程所调用。需要判断队列是否为空,或者是否占满,然后去阻塞对应的方法。以上就是一个简单的阻塞队列的代码实现,希望能够帮助到你。废话不多说直接上代码。
2023-08-06 16:26:20
85
原创 JAVA实现CAS原理
CAS有3个操作数,旧的预期值A,内存地址中的值V,要修改的新值B。当且仅当预期值A和内存值V相同时,将内存值V修改为B,否则什么都不做,可以理解它为一种乐观锁。System.out.println("最终结果值: " + casTest.getValue());System.out.println("返回的是修改前的值:" + getInt);//这个值实际上应该是通过old对象和引用地址偏移量获取到的真实内存值,2、do while 循环进行比较并修改内存值,保证修改变量的原子性。
2023-08-06 12:17:10
88
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人