一个 producer 八小时没写进消息,根因是有人给同一个 service account 加了一条 DENY。Confluent Cloud 上 API Key 只做认证,ACL 认的是账号,一次权限改动的作用面是账号名下所有 key。
给 Hugo 静态站接 WebMCP
静态站没有后端,也能用 document.modelContext.registerTool 把搜索索引挂成浏览器里的 agent 能直接调的工具。代价是一张 origin trial token 和 2026-11-17 的到期日,好处落在访客那边。
Kubernetes 1.37 升级前要过一遍的东西
Kubernetes 1.37 在 2026-08-26 发布,67 项 enhancement 里真正影响升级的不多:四条 ACTION REQUIRED、一批默认值翻开的 Beta gate、三条带版本期限的弃用。
corrode.dev 的 Go 到 Rust 迁移指南:工具链、类型系统、集成策略与哪些场景留在 Go
Matthias Endler 写给后端团队的迁移指南。Go 已经站在静态类型编译语言这边,换 Rust 的收益在类型系统:nil、错误传播、数据竞争和取消原本靠约定和 linter 兜住,现在有了编译期检查,代价是借用检查器、编译时间和 async 着色。
JVM 怎么把 bytecode 跑成 native code:class loader、runtime data areas、execution engine
singhajit.com 上标称 17 分钟读完的 JVM 运行时入门:从 javap 看到的 iload、iadd 讲到 C1、C2 分层编译和 deoptimization,GC 那节覆盖 G1、ZGC 和分代回收的取舍。
用 external-dns 自动创建 DNS 记录:source、target、所有权登记,以及两个偏危险的默认值
hostname 已经写在 Ingress 或 HTTPRoute 里,再去 DNS 那边手建一条记录,等于给集群状态留了一份要同步维护的副本。交给 external-dns 的代价是自己定三件事:读哪种资源、target 指向哪里、哪些记录归这个实例。
UUIDv4 / UUIDv7 / ULID 当主键的取舍:键宽和递增性在四种部署方式下的收益和代价
选 UUIDv4、UUIDv7 还是 ULID 当主键,真正在选的只有键宽和同一毫秒内有没有顺序。InnoDB 上一个写入者时递增键少近四成的页,四个写入者只剩两成、文本主键反而更差;按主键范围分片的库上递增变成写热点,按 hash 分布的库不看这一项。
Spring Boot fat jar 下 Class.forName 只在部分线程上找不到类:打包方式和线程来源各管一关
同一句 Class.forName 在 IDE 里跑得好好的,打成 fat jar 就报找不到类:看打包方式给的是哪个 application class loader,也看这条线程的 TCCL 是继承创建者的还是被 ThreadFactory 设过。
分页查询慢了 40 秒:两张明细表同层 JOIN 乘出 396 万行,聚合又压回 1,220 行
两张明细表只共享半个唯一键,同层 JOIN 之后才聚合,分页接口那 40 秒慢查询就出在中间被 DISTINCT 压回去的那些行上;拆成三步后这组参数下结果逐行一致。
容器内存 99% 但没有 OOM:可能是页缓存
容器内存告警冲到 99.45% 却没触发 OOM,峰值里约 87% 是页缓存;同一个容器热缓存下重启只剩 23.70%,最后把告警的分子换成 RSS。