源码
文章平均质量分 70
阅读源码
houjibofa2050
读源码,要有技术深度,做一个把一招练一万遍的程序员。
展开
-
AtomicLong与LongAdder比较
1.什么是AtomicInteger与LongAdder? AtomicInteger和LongAdder都是解决对数字的累加的原子操作,底层都使用到了cas结束,但是LongAdder在多线程的情况下,性能比AtomicLong性能要高。 2.为什么LongAdder的性能比AtomicLong的性能要高? AtomicLong底层实现 public final long getAndAddLong(Object var1, long var2, long...原创 2021-09-16 01:02:42 · 388 阅读 · 0 评论 -
sync.map底层实现与应用场景
目录 1.sync.map的底层实现是什么? 2.sync.map 适用的场景是什么样子的? 参考 1.sync.map的底层实现是什么? 底层结构是mutex,read,dirty,misses四个字段 使用两个map,一个用于读,一个用于写,类比缓存与数据库,读优先read,写用dirty. 核心设计思想是保证高频读的无锁思想,用空间换空间。 read 使用的Atomic实现,read 做缓存,先读read,read数据读不到,读dirty。...原创 2021-08-29 14:40:00 · 608 阅读 · 0 评论 -
ThreadLocal作用与源码分析
目录 1.什么是ThreadLocal,threadlocal的作用是什么? 2.threadlocal的常用方法有哪些? 3.threadlocal的底层实现是什么? 4.使用threadlocal,可能会出现什么问题?为防止出现问题怎么处理? 5.threadlocal使用了map结构,是怎么解决hash冲突的?解决hash冲突有几种方式? 6.threadlocal使用了map结构,默认的数组大小是多少,扩容阈值时多? 7.set函数的源码分析 8.get函数的源码分析 9.re原创 2021-08-15 16:53:46 · 140 阅读 · 0 评论 -
HashMap ConcurrentHashMap 在1.7 与1.8 的区别
HashMap 1.7 底层使用的数据结构是数组+链表,链表是为了解决hash碰撞的,相同的值插入,链表的插入采用的是头插法。 HashMap 1.8 底层使用的数据结构是数组+链表+红黑树,链表是为了解决hash碰撞的,红黑树是解决链表长度过长的查询问题。 此处链表的插入采用的是尾插法。 使用源码证明: java1.7 HashMap 常量 static final int DEF...原创 2020-03-26 19:50:22 · 1814 阅读 · 0 评论 -
HashMap 底层源码分析
jdk 1.8 hashmap底层的数据结构数组+链表+红黑树 底层存储数据的结构Node内部类 hashmap调用hash函数 1.计算hashcode函数的值 2.hashcode值右移16位,获得hashcode的高位 3.hashcode高位与低位进行与运算 hashmap默认的初始容量16 hashmap的最大容量 2^3...原创 2019-02-11 18:10:20 · 191 阅读 · 0 评论