![](https://img-blog.csdnimg.cn/direct/793a06a8e78145e4bf6d974912ae8598.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java面试痛点
文章平均质量分 93
面试痛点问题
拙野
只追求质量,不追求数量。不糊弄别人就是不糊弄自己!
展开
-
一文彻底分清缓存穿透、缓存击穿、缓存雪崩问题(含记忆技巧)
缓存穿透是指用户请求的数据在缓存中不存在即没有命中,同时在数据库中也不存在,导致用户每次请求该数据都要去数据库中查询一遍。如果有恶意攻击者不断请求系统中不存在的数据,会导致短时间大量请求落在数据库上,造成数据库压力过大,甚至导致数据库承受不住而宕机崩溃。那么,我们该怎么记忆缓存穿透呢?我们可以这么想,缓存穿透其实就是恶意攻击,就是有人想“穿”过你的防护网(缓存)来“偷”你的家(数据库),这也就是穿透。或者你这样想,有人想恶意攻击你的数据库,这是不是不好的行为,是不是小偷的行为!原创 2024-03-27 23:45:13 · 6230 阅读 · 16 评论 -
高频面试知识点ThreadLocal,看完必彻底搞懂(二)
从上图中,我们可以看出来,当指向ThreadLocal的强引用不存在的时候,垃圾回收器便会在下一次GC的时候,将其回收。//e不为空,要么就是是同一个key,直接覆盖value即可,要么就是哈希冲突了,这种情况不做处理,直接在往下寻址就可,还有一种情况就是不是同一个key,而是这个位置是一个key被回收,而value未被回收的Entry,此时用新的替换掉旧的即可。从上面的源码分析中,我们知道,真正的清理逻辑是在cleanSomeSlots()方法里面的,那么我们就看看,它里面做了什么处理。原创 2023-11-05 22:55:50 · 307 阅读 · 0 评论 -
高频面试知识点ThreadLocal,看完必彻底搞懂(一)
相信参加过很多次面试的圣斗士都知道,关于ThreadLocal基本上是面试必问,而且对于大多数人来说,也都是害怕被问到这个问题的。当然,也包括博主我。虽然,每次拿起八股文,都会看看ThreadLocal。但是,看完也就那样,知道个名字,知道他是线程独有的变量,不被其他线程共享使用。然而,最终也就是停留在知道这个层面,人云亦云的去说。至于到底ThreadLocal是什么,为什么需要ThreadLocal,为什么有同步锁了,还需要ThreadLocal?原创 2023-11-05 22:56:58 · 789 阅读 · 8 评论