首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
确定删除此收藏集吗
删除后此收藏集将被移除
取消
确定删除
确定删除此文章吗
删除后此文章将被从当前收藏集中移除
取消
确定删除
编辑收藏集
名称:
描述:
0
/100
公开
当其他人关注此收藏集后不可再更改为隐私
隐私
仅自己可见此收藏集
取消
确定
源码
订阅
ma_firsttime
更多收藏集
微信扫码分享
微信
新浪微博
QQ
10篇文章 · 0订阅
死磕 java集合之ArrayList源码分析
欢迎关注我的公众号“彤哥读源码”,查看更多源码系列文章, 与彤哥一起畅游源码的海洋。 ArrayList是一种以数组实现的List,与数组相比,它具有动态扩展的能力,因此也可称之为动态数组。 ArrayList实现了List, RandomAccess, Cloneable, …
死磕 java集合之TreeSet源码分析
TreeSet底层是采用TreeMap实现的一种Set,所以它是有序的,同样也是非线程安全的。 经过前面我们学习HashSet和LinkedHashSet,基本上已经掌握了Set实现的套路了。 源码比较简单,基本都是调用map相应的方法。 而TreeSet实现了SortedSe…
一句话,讲清楚java泛型的本质(非类型擦除)
🖕欢迎关注我的公众号“彤哥读源码”,查看更多源码系列文章, 与彤哥一起畅游源码的海洋。 刚拿到这道题,我也是一脸懵逼,这要报错也应该是在return list.toArray((T[]) new Comparable[list.size()]);这行啊,而且要报错应该两个方法…
深入理解 ReentrantLock
ReentrantLock 是一种可重入锁,它指的是一个线程能够对资源重复加锁。ReentrantLock 与 synchronized 类似,能够保证解决线程安全问题,但是却提供了比 synchronized 更强大、灵活的机制,例如可中断式的获取锁、可定时的获取锁等。 另外…
死磕 java集合之ConcurrentHashMap源码分析(三)——删除元素全解析(内含彩蛋)
🖕欢迎关注我的公众号“彤哥读源码”,查看更多源码系列文章, 与彤哥一起畅游源码的海洋。 删除元素跟添加元素一样,都是先找到元素所在的桶,然后采用分段锁的思想锁住整个桶,再进行操作。 获取元素,根据目标key所在桶的第一个元素的不同采用不同的方式获取元素,关键点在于find()…
死磕 java集合之ConcurrentHashMap源码分析(二)——扩容全解析
🖕欢迎关注我的公众号“彤哥读源码”,查看更多源码系列文章, 与彤哥一起畅游源码的海洋。 本章接着上一章,链接直达请点我。 第一次放元素时,初始化桶数组。 (3)扩容门槛写死的是桶数组大小的0.75倍,桶数组大小即map的容量,也就是最多存储多少个元素。 每次添加元素后,元素数…
死磕 java集合之HashMap源码分析
欢迎关注我的公众号“彤哥读源码”,查看更多源码系列文章, 与彤哥一起畅游源码的海洋。 HashMap采用key/value存储结构,每个key对应唯一的value,查询和修改的速度都很快,能达到O(1)的平均时间复杂度。它是非线程安全的,且不保证元素存储的顺序; HashMap…
【肥朝】面试常问话题之一,你看源码学到了什么?
你对XXX源码这么熟悉,那有没有遇到过什么坑?面试官问我,使用Dubbo有没有遇到一些坑?我笑了。 再接着,就是公共的抽象类. 很明显,照葫芦画瓢,你参考jackson和gson的做法都知道,是需要继承AbstractGenericHttpMessageConverter,然后…
深入理解 ReentrantReadWriteLock
ReentrantLock 是排它锁,它在同一时刻只允许一个线程进行访问。在很多场景中,读服务远多于写服务,而读服务之间不存在数据竞争问题,在一个线程读数据时禁止其他读线程访问,会导致性能降低。 所以就有了读写锁,它在同一时刻可以允许多个读线程访问,但在写线程访问时,则所有的读…
死磕 java集合之ConcurrentHashMap源码分析(一)——插入元素全解析
🖕欢迎关注我的公众号“彤哥读源码”,查看更多源码系列文章, 与彤哥一起畅游源码的海洋。 前记,从这篇文章开始我们换一种学习的方式,彤哥先抛出问题,大家尝试着在脑海中回答这些问题,然后再进入我们的源码分析过程,最后彤哥再挑几个问题回答。 ConcurrentHashMap是Ha…