先查询再更新,还是update-where-status-xx,并发下的两种命运
取消订单的代码,几乎每个后端都写过:先查出来,校验状态是不是"待支付",再 updateById 改成"已取消"。测试环境点一百次都对。可线上同一秒里,用户点了取消,支付回调同时到达——一个把它改成"已取消",一个把它改成"已支付",最后留在库里的状态,取决于谁后提交。
再聊一个 Java 惯例:名词给对象,动词给方法
前两篇分别聊了区间为什么爱写成左闭右开、判空为什么优先用 isEmpty()。这两个惯例背后是同一条原则:用约定俗成的形式,让读代码的人少想一步。顺着这个思路,再说一个 Java 里几乎人人都在用、却很少有人细想其背后原因的惯例:给对象起名时用名词,给方法起名时用动词。
Java社招面试必问:MQ消息重复消费怎么办?一文搞懂幂等设计!
#智赋新质 全域焕新#大家好呀,我是小米,一个喜欢折腾技术、也喜欢把复杂技术讲成故事的程序员大哥哥,最近有个朋友去参加 Java 社招面试,面试官问了一个问题:“你们系统使用 MQ 的时候,如何保证消息不被重复消费?
一条UPDATE,锁了整张表
上周三凌晨两点,运维群里炸了。订单服务 QPS 从 2000 掉到个位数,所有订单接口全部超时。数据库连接池打满,CPU 却没跑满。
Java 中的 ABA 问题详解
一、什么是 ABA 问题ABA 问题是 CAS (Compare And Swap) 操作中的一个经典问题。定义:在 CAS 操作过程中,一个变量的值从 A 变成 B,又从 B 变回 A。此时 CAS 操作会认为值没有变化,但实际上中间已经发生了变化。
电脑里到底藏了多少软件?一个命令全显示出来,自己都吓一跳
最简单、最靠谱、不用装任何软件的办法,一条命令就能把电脑里所有装过的软件全列出来,包括那些你早就忘了、藏得很深的程序。一、用系统自带的「winget」(推荐,最快最干净) Windows10/11 都自带,不用下载东西。 1. 按键盘:Win + R2.
AI 写的 UPDATE 没有 WHERE,我把它发到了生产
周一早上七点五十,我收到一条告警。某张表的 updated_at 字段,短时间内有大批记录变成了同一个时间戳。我心里咯噔一下——这个字段,只有 UPDATE 会动。问题不在代码写错了,在于这条 UPDATE 的 WHERE 条件,在运行时被拼没了。
Jtest:用 AI 为 Java 单元测试减负,从遗留代码到持续交付
2026 年,越来越多的 Java 开发团队在 AI 辅助编程的帮助下提升了编码效率。但随之而来的问题是:代码量快速增长,单元测试的覆盖率却往往未能同步跟上。许多项目中,测试债务正逐渐累积。
Java 读取、修改和清空 PDF 文档属性(元数据)
PDF 文件除了正文内容,还可以保存一些文档属性,例如标题、作者、主题、关键词以及创建时间。这些信息通常不会直接显示在 PDF 页面上,但可以在 PDF 阅读器的文档属性中查看。