- 博客(4)
- 收藏
- 关注
原创 03、ConcurrentHashMap怎么保证HashMap的线程安全呢?
Segment数组的意义就是将一个大的table分割成多个小的table来进行加锁,保证了数据安全,而每一个Segment元素存储的是 数组+链表,这个和HashMap的数据存储结构一样;根据key进行hashCode值计算,找到对应的Node,如果为空表示当前位置可以写入数据,利用CAS尝试写入,失败则自旋保证成功,如果非空,则利用synchronized锁写入数据。优化了底层数据结构,降低了锁的粒度,仅仅使用一次hash就能获取到桶的位置,提高了执行和并行效率,提高吞吐量;
2023-05-23 09:19:46 232 1
原创 02、什么是HashMap?有了解过吗?!
先说一下jdk1.7中hashMap的底层结构,再说1.7中可能存在的问题,最后说:jdk1.8中针对问题做了哪些优化点!
2023-05-22 19:41:17 48 1
原创 01、ArrayList 和 LinkedList 区别
所以链表的增删效率是要优于数组的,因此,LinkedList 在增删元素方面会比ArrayList快。你的逻辑有更多的插入和删除元素操作,更少的读取数据,可以选择LinkedList。链表的时间复杂度是O(n),从头节点开始遍历,找到对应元素存储的位置;增删场景下,数组是需要重排数据的,重排数据意味着要更改数组的数据结构;数组的时间复杂度是O(1),通过数组下标,直接获取数据;你需要先找到n-1的元素中的next才能找到第n个元素,因此,在内存方面,相对于链表,占用的空间应该会大一些,
2023-05-19 09:16:38 63
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人