ConcurrentHashMap JDK1.8 源码分析
1 助记JDK 1.7使用的是segment分段锁,默认为16个segment,扩容分别在各自的segment进行。JDK 1.8使用的是Synchronized+CAS自旋,相应的内部结构和hashmap一样,改为了红黑树当Node数组为空,直接用CAS初始化或者插入数据当Node数组节点不为空,
查看全文源码分析
1 助记JDK 1.7使用的是segment分段锁,默认为16个segment,扩容分别在各自的segment进行。JDK 1.8使用的是Synchronized+CAS自旋,相应的内部结构和hashmap一样,改为了红黑树当Node数组为空,直接用CAS初始化或者插入数据当Node数组节点不为空,
查看全文1 对比以前:在没有Spring之前,我们需要通过XML或者Java中定义@Bean 来把我们要用的jar装配到Spring中现在:Springboot提供了一个规范,只要按照这个规范定义好我们用的starter,它就会为我们自动装配。2 具体实现2.1 Springboot的核心注解@Enable
查看全文助记初始大小:单例,初始为10,扩容1.5倍mod: failfast问题时间复杂度add :O(1)add(index): O(n-index),因为需要数组移动get:O(1)最大容量:Integer.Max-8构造函数ArrayList 有三种方式来初始化以无参数构造方法创建 ArrayLis
查看全文帮助记忆组成:Node数组+链表/红黑树数组:默认为0,用了单例模式,第一次调用初始化为16,扩容因子为0.75链表:长度大于8,且数组长度大于64,转为红黑树,长度小于6,转为链表hash索引:异或高四位,防止hash冲突扩容:重新散列法hash异或高四位,防止hash冲突static final
查看全文