![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 96
yanzigejuly
这个作者很懒,什么都没留下…
展开
-
记一次for update“同一事务”中update无法获取数据锁的解决
问题原因就在这,虽然测试环境实际上只有一个数据库,但是ShardingJDBC配置了主从,那么即使只有一个数据库,也会产生两条连接,一条用于主、一条用于从,所以在select for update语句的时候默认使用从库的链接的事务中获取数据,并且将数据加锁,而表面上看代码是同一事务的update时,实际上是使用主库的链接的事务进行更新数据,所以select 和 update不在同一个事务中,故代码层面看是同一事务的先后两个操作,update时实际获取不到之前的select的锁,所以发生等待直至超时报错。原创 2024-07-30 18:34:14 · 456 阅读 · 0 评论 -
各种集合、对象的对比记忆
同类型的StringBuilder和StringBuffer的实现原理一样,其父类都是AbstractStringBuilder。StringBuffer是线程安全的,StringBuilder是JDK 1.5新增的,其功能和StringBuffer类似,但是非线程安全。因此,在没有多线程问题的前提下,使用StringBuilder会取得更好的性能。String是不可变对象,每次对String类型进行操作都等同于产生了一个新的String对象,然后指向新的String对象。原创 2024-07-29 17:47:42 · 493 阅读 · 0 评论 -
Java的12个语法糖
前面介绍了12种Java中常用的语法糖。所谓语法糖就是提供给开发人员便于开发的一种语法而已。但是这种语法只有开发人员认识。要想被执行,需要进行解糖,即转成JVM认识的语法。当我们把语法糖解糖之后,你就会发现其实我们日常使用的这些方便的语法,其实都是一些其他更简单的语法构成的。有了这些语法糖,我们在日常开发的时候可以大大提升效率,但是同时也要避免过渡使用。使用之前最好了解下原理,避免掉坑。说明:本文转载自公众号 Hollis 的文章《原创 | 不了解这12个语法糖,别说你会Java!侵权删。转载 2024-07-27 11:36:39 · 8 阅读 · 0 评论 -
深入理解HashMap扩容机制(JDK7)
Hashmap的扩容需要满足两个条件:当前数据存储的数量(即size())大小必须大于等于阈值;当前加入的数据发生了hash冲突。因为上面这两个条件,所以存在下面这些情况就是hashmap在存值的时候(默认大小为16,负载因子0.75,阈值12),可能达到最后存满16个值的时候,再存入第17个值才会发生扩容现象,因为前16个值,每个值在底层数组中分别占据一个位置,并没有发生hash碰撞。当然也有可能存储更多值(超多16个值,最多可以存27个值)都还没有扩容。原创 2024-07-26 14:50:44 · 972 阅读 · 0 评论