库存服务拿到「订单已创建」的消息,按 orderId 去查库,有时查不到,过一会儿重试又有了。消息没有丢,是发送发生在事务提交之前。消费者用的是别的数据库连接,只能看见已经提交的行。
同一行数据里,上游给的 Unix 秒换算成北京时间是对的,created_at 却像少了 8 小时。SQL 没有写反。JVM 默认时区、MySQL 会话时区、列类型(TIMESTAMP / DATETIME)各算各的,再拿去切统计窗口,就会整段错位。
Spring 事务传播机制是指,包含多个事务的方法在相互调用时,事务是如何在这些方法间传播的。
在 Java 语言中,保证线程安全性的主要手段是加锁,而 Java 中的锁主要有两种:synchronized 和 Lock,我们今天重点来看一下 synchronized 的几种用法。
迭代器的快速失败行为应该只用于检测错误
随着计算机行业的飞速发展,摩尔定律逐渐失效,多核CPU成为主流。使用多线程并行计算逐渐成为开发人员提升服务器性能的基本武器。J.U.C提供的线程池:ThreadPoolExecutor类,帮助开发人员管理线程并方便地执行并行任务。了解并合理使用线程池,是一个开发人员必修的基本功。