Go语言技术文章
-
读取数十万文件的目录时,os.ReadDir 的排序语义和一次性返回 []os.DirEntry 会同时影响内存与响应时间。本文从目录扫描小工具出发,比较 ReadDir 与 File.ReadDir 的边界,并给出保留排序、改为分批遍历和验收内存的实现方法。458 收藏 -
文章 · 前端 | 1星期前 | 前端 · css · 动画 · Web API · CSS scroll-driven animations animation-timeline scroll-timeline view-timeline animation-range
用 CSS scroll-driven animations 把动画绑定到滚动位置或元素进入视口的进度,拆清 scroll timeline、view timeline、animation-range 的关系,并给出 prefers-reduced-motion 与 @supports 降级方案。119 收藏 -
Go 的 []byte 传递经常隐藏底层数组共享。本文用 bytes.Clone 拆开切片别名与大数组内存保留两个问题,给出判断时机、基准验证和边界取舍。138 收藏 -
从 HTTP 请求、后台 goroutine 和数据库查询三个场景说明 context.WithCancel 返回的 cancel 为什么必须调用,给出 defer、父子上下文和取消后收尾的可验证写法。378 收藏 -
Go 1.27 继续优化 cgo 调用成本,但官方数字不能直接等同于业务提速。本文从基准测试、分配、调用次数和尾延迟四个角度,给出升级前后的可复现实验方法。376 收藏 -
strings.Builder 适合高效拼接字符串,但写入后复制会触发运行时检查。本文从零值使用、复制边界和返回字符串的别名风险说明正确写法。483 收藏 -
多模态接口处理图片时,分辨率越高不一定越划算。本文用图片尺寸、切片数量和 media_resolution 拆开 token 与延迟的关系,并给出调用前估算、缩放和结果复核方法。161 收藏 -
用一个可复现的并发通知示例,说明 WaitGroup、关闭通道和超时断言怎样配合,避免 Go 测试偶发卡死或漏验收。445 收藏 -
Go 中同一个 os.File 先写后读时,读到 EOF 往往不是文件没有内容,而是文件偏移已经停在末尾。本文用可运行示例拆解 Seek、ReadAt 和偏移复位的差异,说明何时共享游标、何时使用定位读取。103 收藏 -
用 Go 的 http.ResponseController 实现流式 HTTP 响应,讲清 FlushError、写超时、客户端断开和资源清理之间的边界。421 收藏 -
Go 1.24 新增 testing.B.Loop。本文用一个可运行的基准测试说明它和 b.N 写法的区别、计时边界、编译器保活语义,以及升级后如何核对结果。381 收藏 -
Go 的 regexp.FindStringSubmatchIndex 返回的是字节下标,不是字符位置。本文用带中文的日志片段说明如何读取捕获组、处理未匹配分组,并避免切片越界。312 收藏 -
Go 1.24 默认支持泛型类型别名。本文从跨包迁移一个泛型类型的实际场景出发,说明别名与定义类型的语义差异、Go 1.23 实验开关的边界,以及如何用编译、测试和工具链检查完成迁移验收。185 收藏 -
用月光、湖心芦苇和远山做一组适合手机锁屏的竖屏壁纸:主图保留上方时间区与中部图标区的干净留白,再通过色彩与雾气改词得到一张明显不同的雾紫变体。253 收藏 -
Golang · Go问答 | 1星期前 | 性能优化 · Context · go并发 · 故障排查 · 接口开发 · Go goroutine泄漏 context.WithCancel 请求生命周期 defer cancel
调用 context.WithCancel 并不自动消除 goroutine 泄漏。关键在于 cancel 的调用位置、子协程是否监听 Done,以及请求提前返回时能否及时结束。本文从一个持续增长的接口现场拆出根因、修复和复查方法。427 收藏