2023_08—第三周
2023-08-23
最近在 Review 同事代码时发现某个方法中加了事务 @Transactional 注解,方法体中的逻辑大概是这样:👇🏻
1 | |
看上去挺正常的,但实际进入 deleteAll() 方法后发现 SQL 使用的是 TRUNCATE TABLE Statement,这就有意思了。这种情况事务能不能生效呢?如果不生效就悲催了,一旦 insert() 方法执行异常,整张表就相当于被清空了。。
查资料先,,
最近在 Review 同事代码时发现某个方法中加了事务 @Transactional 注解,方法体中的逻辑大概是这样:👇🏻
1 | |
看上去挺正常的,但实际进入 deleteAll() 方法后发现 SQL 使用的是 TRUNCATE TABLE Statement,这就有意思了。这种情况事务能不能生效呢?如果不生效就悲催了,一旦 insert() 方法执行异常,整张表就相当于被清空了。。
查资料先,,
在 Object::wait 的方法注释中有这样一句:
As in the one argument version, interrupts and spurious wakeups are possible, and this method should always be used in a loop:
1
2
3
4
5synchronized (obj) {
while (<condition does not hold>)
obj.wait();
... // Perform action appropriate to condition
}
大意是 Object::wait 的最佳实践是放在循环体中使用,循环体之后是获取锁资源后真实执行的同步代码。
新冠疫情终于在2022年的最后一个月结束了,幸运的是家里的老人都平安过来了。只是奶奶的情况不是很好,阿兹海默,不认识我妈了,每顿吃的什么也不记得了,,一切都发生在短短的一年间。刚回家的时候,才知道爸妈在电话中提到的『没精神』是怎样一种状况,,眼皮耷拉着,像是困极了。还好,年后明显感觉精神多了,不再总是低头眯着,,静等春来!
Extra..
2022年还有什么想说的??
🕯🕯🕯
今年家里又走了一个老人,奶奶也比之前更容易流泪了,,尤其是我要回深圳的时候
Extra..
2021年还有什么想说的??
本以为只是一个简单的单线程线程池,与 Executors.newFixedThreadExecutor(1) 类似,但它的 DOC 注释中又显式提到:
Unlike the otherwise equivalent {@code newFixedThreadPool(1)} the returned executor is guaranteed not to be reconfigurable to use additional threads.
与类似功能的
newFixedThreadPool(1)不一样,该方法返回的线程池执行器不可以被重新配置以使用额外的线程。
关键在于不可以重新配置。来看看它的构造器:
1 | |
最近在复习丁奇大大MySQL实战45讲 - 08 | 事务到底是隔离的还是不隔离的?中关于 RC 隔离级别的实现时,以前好像读懂的地方又读不懂了。尤其是对下👇图:数据版本可见性规则 中高低水位『当前事务』的理解。
在可重复读隔离级别下,事务在启动的时候就『拍了个快照』。
按照可重复读的定义,一个事务启动的时候,能够看到所有已经提交的事务结果。但是之后,这个事务执行期间,其他事务的更新对它不可见。
🕯🕯🕯
向在这场疫情中去世的奉献者们致敬!
Extra..
2020年还有什么想说的??
🕯🕯🕯
今天给阿妈打电话的时候,得知三奶奶也走了,你们要好好的,互相照顾喔。
Extra..
2019年还有什么想说的??