JAVA入门基础(4)

1.在1.8后HashMap由链表转红黑树的阈值为什么是8?
  1. 红黑树插入效率慢,例如我插入一个001、002、003会进行左旋,进行数据交换,效率较低,阈值为8是想达到一个平衡。

  1. 红黑树中的TreeNode是链表中的Node所占空间的2倍。

  1. 虽然红黑树的查找效率为o(logN),要优于链表的o(N),但是当链表长度比较小的时候,即使全部遍历,时间复杂度也不会太高。

  1. 实验证明,之所以是8,hash碰撞发生8次的概率已经降低到了0.00000006。

  1. 链表长度大于8时,链表性能已经很差了。

2.在JDK1.7版本的HashMap为什么会出现死循环?

存储结构:数组 + 链表

主要是扩容时多线程头插法导致的

参考:https://blog.csdn.net/gupaoedu_tom/article/details/124449573

3.ArrayList的Fast-fail(快速失败)机制
  1. 使用了Iterator迭代器;

  1. 在迭代过程中集合发生了修改(add、remove等),导致expectedModCount  != modCount ,抛出ConcurrentModificationException;

4.Integer类的缓存机制,缓存的范围是多少?

-128~127

5.垃圾回收算法,三色标记,安全点

垃圾回收算法:

  1. 标记-清除算法

  1. 标记-整理算法

  1. 标记-复制算法

  1. 分代收集算法(年轻代、老年代分代使用以上三种算法)

三色标记:黑白灰,从GC root开始标记对象,白色为垃圾

安全点:https://blog.csdn.net/u010502101/article/details/120030517

6.mysql索引失效

https://blog.csdn.net/nanyan_xixi/article/details/125825332

7.InnoDB索引和数据页理解

https://blog.csdn.net/agonie201218/article/details/126094568

8.@Transactional 失效的几种情况

https://blog.csdn.net/Ahuuua/article/details/123876919

类内部访问@Transactional失效原因补充:

例:

类A中a方法调用b方法,b方法加@Transactional,生成代理类B代理A,B中a方法直接调用A方法中a方法,B中b方法加事务增强并调用A中b方法。

  1. 外部调用A中b方法,有事务,因为注入的对象是代理对象B,相当于调用B中的b方法;

  1. 外部调用A中a方法,b方法无事务,因为注入的对象是代理对象B,B中的a方法调用的是A中的a方法,而A中的a方法调用的是自己的b方法,并不是B的b方法,所以事务失效。

9.spring三级缓存解决aop代理循环依赖图示

https://blog.csdn.net/yangfeng20/article/details/128733214

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值