2026-10-13 软件 把 BadgerDB 移植到仓颉(四):怎样测才算数 从 Go 移植 BadgerDB 到仓颉(四) 四个方法学缺陷、Go 侧三个陷阱,与一套可核验的流程 Cangjie · 基准测试 · 方法论 这是系列最后一篇。第三篇讲了三个被推翻的结论 , 本篇追问:它们为什么会错,以及怎样才能不再错。 Continue reading...
2026-10-12 软件 把 BadgerDB 移植到仓颉(三):重跑基准,三个结论翻了 从 Go 移植 BadgerDB 到仓颉(三) 重跑一遍基准,三个结论都翻了 Cangjie · 基准测试 · badger-cj 这是系列第三篇。前两篇讲实现 与优化 , 本篇讲复核:把积累半年的基准数据重跑一遍之后,有三条结论被推翻, 而且方向都是反的。 Continue reading...
2026-10-11 软件 把 BadgerDB 移植到仓颉(二):十次优化与一次误判 从 Go 移植 BadgerDB 到仓颉(二) 十次优化,和一次「我以为是编译器 bug」的乌龙 Cangjie · 性能优化 · badger-cj 这是系列第二篇。第一篇讲无锁跳表的实现 , 本篇讲怎么把它调快,以及一个把我引向错误方向的排查。 Continue reading...
2026-10-10 软件 把 BadgerDB 移植到仓颉(一):没有裸指针怎么做无锁跳表 从 Go 移植 BadgerDB 到仓颉(一) 仓颉没有裸指针,于是我把节点指针换成了数组下标 Cangjie · LSM-Tree · badger-cj · 移植 这是系列第一篇,讲怎么把它写出来:语言差异怎么绕、以及怎么用。 后续三篇分别讲优化与误判、基准复核、以及怎样测才算数。 Continue reading...
2026-09-09 软件 仓颉服务 - 忆时塔 OOM 追凶记 一次横跨六个仓颉自研库的排查 从一条空 message 的异常,到 662 个 CLOSE_WAIT —— 长连接泄漏如何伪装成存储 OOM 2026-08-19 → 2026-09-09 · Cangjie · badger-cj · mcp-cj · json-rpc 一条空消息 事情的开始,是一条几乎不包含任何信息的报错。 我在本地跑着一个常驻的 MCP 服务——一个基于时序数据库、用于会话记录存储的记忆系统(下面就叫它「线上这个服务」)。它会在后台定期执行维护任务。 Continue reading...