零拷贝
零拷贝几种方式介绍
spring加载bean方式大全
目前我用的是 JDK1.8 版本的,内部使用数组 + 链表 / 红黑树链表大于8转换成红黑数,红黑树节点小于6退化为链表
判断数组是否为空,为空进行初始化;
不为空,计算 k 的 hash 值,通过 (n - 1) & hash计算应当存放在数组中的下标 index ;
查看 table[index] 是否存在数据,没有数据就构造一个Node节点存放在 table[index] 中;
存在数据,说明发生了hash冲突, 继续判断key是否相等,相等,用新的value替换原数据(onlyIfAbsent为false);
如果不相等,判断当前节点类型是不是树型节点,如果是树型节点,创建树型节点插入红黑树中;
如果不是树型节点,创建普通Node加入链表中;
判断链表长度是否大于 8,并且数组长度大于64, 大于的话链表转换为红黑树(),
链表长度大于8,数据组长度小于64,先进行resize()
插入完成之后判断当前节点数是否大于阈值,如果大于开始扩容为原数组的二倍
注意:
JDK 1.8 引入了红黑树,当链表的长度大于 8 的时候就会转换为红黑树,不过,在转换之前,会先去查看 table 数组的长度是否大于 64,如果数组的长度小于 64,那么 HashMap 会优先选择对数组进行扩容 **resize**,而不是把链表转换成红黑树,进行resize时当红黑树节点小于6时,转换成链表
completaFuture 使用
1 | distribution: 分配 |
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.
1 | $ hexo new "My New Post" |
More info: Writing