首页
AI Coding
沸点
课程
直播
活动
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…