~/blog (main)*
◉ RSS 00:00:00
guest@chenmo: ~ — zsh — 80×24
guest@chenmo ~ %
//01WRITINGS

最新文章

全部归档 ↗
ls posts/ → 3 / 3 篇

P99 调优实录:从 800ms 打到 80ms

不是 GC,不是数据库,最后凶手是连接池里的 DNS 缓存。完整复盘从假设、埋点、压测到修复的全过程,附排查清单。

//02OPEN_SOURCE

开源项目

github.com/gitzhy07 ↗
//03SNIPPETS

碎片与灵感

更多片段 ↗
snippet.go|Go · 18 行
// 指数退避 + 全抖动:比「重试 3 次」温柔得多
func Retry(ctx context.Context, fn func() error) error {
delay := 100 * time.Millisecond
for i := 0; i < 6; i++ {
if err := fn(); err == nil {
return nil
}
jitter := time.Duration(rand.Int63n(int64(delay)))
select {
case <-time.After(jitter):
case <-ctx.Done():
return ctx.Err()
}
delay *= 2
}
return errors.New("重试次数耗尽")
}
}
NOTE · 2025-06-21 23:14

Go 1.23 的 range over func 真香,配合 iter 包写管道终于不用回调套回调了。周末整理一篇笔记。

NOTE · 2025-06-09 21:02

把家里的 N100 小主机刷了 Proxmox,现在跑着 7 个容器 + 1 个 HomeLab 面板,整机功耗 6W,比路由器还安静。

NOTE · 2025-05-30 10:47

面试被问「如何设计全局唯一 ID」,聊到 Snowflake 的时钟回拨时发现自己的答案有漏洞,回来重读了一遍 Twitter 原文,已补充到旧文里。

//04CONNECT

订阅与友链

subscribe.shbash
$ ./subscribe.sh --channel email
每周三 21:00 推送新文章,只有正文,没有广告,随时退订。
// 等待输入…