动态

两次说「好」的地方 — 重复是从哪儿来的

作者: makemind · 2026年7月17日

七月第三周。这周挖的是 同一件事发生两次 的地方。

本周 Signal

它说了两次「好」。两次说好」造出同一个时段进两笔预约的情形。不管是两块屏还是客人连按两下,重叠之所以成立,是因为服务端不检查。这一篇放的是 一个拒绝重叠的工具,而不是把窗口调窄。

重试不是免费的。重试要付的代价」数的是响应慢了之后再发一次会多出什么。当网络并没有断、只是答案回来晚了,重试就会多造一笔订单。

判断变成了七行。可以去问的记录」和「不用翻译就坐下」从两侧戳同一个位置。农户平时口头说的一条规则,落成的不是代码而是 七行声明;班长的点检表则由校验守住,一个字都不许改。

工具与包的备忘

这周花时间最多的不是写代码,而是 把缺陷复现出来。想用两个客户端同时按来造重复预约,造不出来。因为 stdio 会把请求排队——一个结束了下一个才进去。于是另外放了一个在服务端内部制造重叠的工具,用那条路径复现了。传输层替你藏住并发的时候,缺陷就是看不见的——这才是这周真正的发现。

还有一块画面撒了谎。一句警告显示成了 绿色,因为颜色被硬编码在画面 JSON 里。日志里明明白白记着它是警告——不亲眼看渲染出来的像素,这个缺陷是抓不到的。

一点想法

重复通常被解释成「有人同时按了」。实际上它来自 没有人检查。并发只是把这个缺席暴露出来的条件而已。所以要修的地方不是时序,而是一个会拒绝的工具。

下周

去看不用问就会被告知「变了」的画面,以及工具到底不做的那件事。


makemind.dev 「动态」— 每周一次,这一周上了什么,做的时候又卡在哪儿。

Twitter