- 博客(9)
- 收藏
- 关注
原创 Spring
Spring事务的七种传播方式Spring事务的传播机制可以通过修改@Transactional注解的propagation属性来配置,Spring默认使用的是REQUIRED,大体上分为三种。不需要使用事务PROPAGATION_NEVER:没有事务就正常执行,如果有事务就抛出异常。PROGATION_NOT_SUPPORTED:没有事务正常执行,如果有事务将事务挂起,然后以非事务方式执行。事务可有可无PROPAGATION_SUPPORTS:有事务就使用,没有事务就不使用。必须
2023-03-26 11:18:46
114
原创 为什么HashMap的数组长度一定要二的幂次
结论: 为了更好的保证hash算法的散列性,数组扩容后对应的元素位置也比较固定java中是通过数组长度与hash进行&运算来确定一个元素数组槽位置的假设数组长度是7,那么数组最大索引就是6,而&运算只有都是1才会返回1,所以对于hash值2和3来说他们计算结果一样,无法更好的保证散列性110 & 010 = 010;110 & 011 = 010;如果数组长度是2的幂次,假设是8,那么数组最大索引就是7,能够保证二进制位所有位都是1,更好的保证了散列性
2021-12-19 18:23:07
214
原创 HashMap是如何将链表转换成红黑树的
结论:HashMap会在put元素的时候判断当前链表长度是否达到了树的阈值且数组长度大于最小转换树的长度,如果满足触发转换树的操作通过treeifybin方法将Node节点的链表转换成TreeNode节点的双向链表通过treeify方法将TreeNode节点的链表转换成红黑树保证数组槽的第一个节点是红黑树的根节点具体操作:putval方法(删除了无关代码):对链表进行遍历,判断是否达到了树的阈值,如果达到了调用treeifyBin方法 for (int binCount = 0; ;
2021-12-19 14:58:55
2470
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人