最近的文章
MySQL的可重复读怎么这么坑
·5 分钟
后端
数据库
MySQL
一、线上问题:更新一个不存在的值,竟锁住“未来数据”? # 最近朋友遇到一个匪夷所思的线上故障:一条看似普通的 SQL UPDATE user SET status=1 WHERE biz_id=999(假设表中当前最大 biz_id=300),竟然导致后续所有 biz_id > 300 的插入请求全部阻塞!更夸张的是,这个操作甚至锁住了 biz_id=300(存在的记录)的插入请求。明明更新的值不存在,为何会触发“锁扩散”?
深入解析ThreadLocalMap的开放地址法实现
·4 分钟
后端
框架
Java
背景 # 在前面的博客中,我们介绍了ThreadLocal的实现原理,其中最核心的部分就是ThreadLocalMap这个数据结构。我们都知道HashMap是使用红黑树或者链表来解决哈希冲突的,那么ThreadLocalMap底层又是如何处理冲突的呢?
深入剖析ThreadLocal的内存泄漏问题与弱引用的作用
·5 分钟
后端
框架
Java
背景 # 在之前的探讨中,我们已经了解了如何使用ThreadLocal。接下来,我们将深入探究为什么在实际使用中ThreadLocal无法及时释放内存,必须等到线程结束后才能释放,以及ThreadLocal中的弱引用到底起到了什么作用。
ThreadLocal 真的会导致内存泄漏吗?深入剖析使用场景与最佳实践
·3 分钟
后端
框架
Java
背景 # 在一次代码评审中,同事指出我使用 ThreadLocal 可能会导致内存泄漏,这让我大吃一惊——ThreadLocal 这么常用的工具类怎么会引发内存泄漏呢?于是我开始深入研究这个问题。
Mockito资料整理
·5 分钟
后端
框架
Java
单元测试
背景 # 网上Mockito 资料我看了一下很多都不够清晰,我总结一下我在使用 Mockito 常用的方法
设计模式探索:从原则到实践
·15 分钟
框架
后端
Java
背景 # 在公司推进DDD中,我发现即使代码按照DDD进行分层,但是底层代码还是阅读性比较差,只不过被分到不同的子服务中。怎么让代码更加整洁规范呢?我觉得可以采用设计模式,所以我花了点时间重新学习了所有的设计模式。