最新文章
全部 10 篇 →给评测接上 CI 门禁:一条 209 个用例的检查,和一次改错两遍的归因
接着上一篇:reviewer 的 Blocking 只有一句——这 209 个新用例没有任何 CI job 跑。门禁接上之后它自己红了三次,前两次的归因都是错的:第一次怪错了锁文件,第二次把"宽度"当成了原因,真正的原因是 Typer 在 GITHUB_ACTIONS 下强制开色。记下这台"测量仪器"本身需要先修的过程,以及最后怎么在日志被挡住的情况下把绿灯验实。
给 Agent 的"工作交接"写个评测:一个 benchmark 的设计与 review 揪出的六个洞
OceanBase PowerContext 的一个 issue 要求把 Rollover Handoff 和"压缩式摘要"放到同一把尺子下比一比。harness 写完被 reviewer 揪出六个洞,回头看每个洞背后是同一个病:拿一个对象做判断,但那个对象不是你要测的东西。收尾时 CI 又红了一次,取证下来发现被判红的也不是这段代码——同一个病的流程层版本。
配了负载均衡策略却没生效:从四行 case 挖出三处沉睡的 bug
load-balance.type 配成 ConsistentHashLoadBalance 或 LeastActiveLoadBalance,行为却和随机一样,没有报错也没有日志。补上分发表里缺的两个 case 只是开始——策略一旦真的可达,三个一直睡着的缺陷会被同时激活。
一行 END 标记能由记忆自己写出来:一次 Unicode 行边界引发的信任边界逃逸
Agent 把不可信历史用 BEGIN/END 标记包起来,下游按"第一行裸 END"判断边界在哪结束。一条记忆就能用自己的内容伪造出这一行——因为 JSON 序列化不转义 U+2028,而 splitlines 认它。第一版修法被 reviewer 打回两次之后,我换了个坐标系。
Go 服务里的并发控制:从 context 到 errgroup 的工程实践
把 context 当成"取消信号广播器"而不是参数袋子,用 errgroup 管住一批 goroutine 的生命周期,再配合 semaphore 限流——一套可以直接抄进项目的并发控制骨架。
MySQL 索引失效的 12 个真实场景复盘
把线上慢查询日志里反复出现的索引失效场景整理成 12 条:每条给出复现 SQL、为什么失效、以及改写成什么样。文末附一套排查 checklist。
分布式 ID 生成方案横评:雪花、号段与 Leaf
自增主键在分库分表下不够用了怎么办?把 UUID、数据库自增、号段模式、雪花算法、美团 Leaf、百度 UidGenerator 放在一起,从趋势递增、时钟回拨、可用性三个维度做横向对比,并给出选型决策树。
写技术文档的 5 个模板:让半年后的自己看得懂
设计文档、故障复盘、README、源码分析、变更记录——这 5 类技术文档各有固定的信息骨架。给出可直接复制的模板,以及一条判断"该不该写文档"的标准。
关于这个站
这里是我(JasonDeng)的技术笔记,关注后端工程与分布式系统。喜欢读中间件源码,也喜欢把踩过的坑写成能复用的文档。
站点用 Markdown 写作,我自己写了个静态生成器负责渲染,推送到 GitHub 后自动构建发布。文章按标签归类,也可以用右上角的搜索(快捷键 /)直接找。