go
已收录文章:159篇
-
用 Go archive/tar 读取压缩包时,先做本地路径判断,再限制输出根目录并拒绝链接条目,最后用越界和覆盖测试验收解包逻辑。341 收藏
-
Go 1.24 新增的 os.Root 可以把文件操作限制在指定目录内,减少路径拼接带来的越界风险。本文用一个导入任务目录演示 Open、Join、Mkdir 和遍历文件的安全边界,并用回归测试核对绝对路径、.. 路径和符号链接场景。340 收藏
-
部署前想确认两份配置目录到底差在哪里,可以用 Go 标准库做一个只读快照工具。本文从 io/fs 和 filepath.WalkDir 出发,完成隐藏文件过滤、相对路径排序、SHA-256 摘要和 JSON 差异报告,并验证退出状态与异常边界。339 收藏
-
Go 处理大文件上传时,不要直接把请求体读进内存。本文用临时文件串起流式写入、大小校验、SHA-256 校验和原子替换,说明每一步为什么存在,以及失败时怎样清理。335 收藏
-
调用 context.WithCancel 后,goroutine 仍然不退出,通常不是 cancel 失效,而是工作循环没有监听 Done 或被阻塞在不可取消的操作上。本文用最小代码复现问题,再通过 pprof、日志和退出计数定位原因,给出可回归的修复方式。334 收藏
-
Go 从 channel 接收时,关闭后的读取会立刻返回元素类型的零值。本文用订单事件场景说明如何用第二个返回值 ok 区分真实数据、关闭信号与业务结束条件,并给出可复查的写法。333 收藏
-
环境变量里的布尔值并不只有 true 和 false。本文用 strconv.ParseBool 拆开可接受字面量、空值默认、错误回滚和配置热更新边界,给出一套不会把拼写错误静默当成关闭的 Go 配置写法。333 收藏
-
Go 服务接入 Responses API 的流式输出后,最难排查的不是连接建立,而是中途断流、客户端取消和重试重复。本文用事件序列、Context 和请求日志拆开问题,给出可回滚的排查与修复方案。326 收藏
-
Go 1.27 让 encoding/json 使用 v2 实现,旧代码大多无需改动,但重复字段、非法 UTF-8 和错误信息差异值得在升级前做一次验收。本文用最小测试复现边界,给出兼容判断、回滚开关与迁移检查清单。325 收藏
-
Go 1.24 为 encoding/json 增加 omitzero。本文用 time.Time、自定义 IsZero、指针和切片示例,拆清它与 omitempty 的判断边界,并给出兼容迁移和测试清单。321 收藏
-
sync.Map 不是普通 map 的无脑替代品。本文用热点配置缓存这个场景,比较读多写少、频繁更新和带类型断言三种路径,结合 Go 基准测试与内存占用,说明什么时候值得采用、什么时候应该继续使用 map 加 RWMutex。318 收藏
-
Go 1.21 之后,go 命令会根据 go.mod 的 go、toolchain 指令选择工具链。本文用一个 CI 版本漂移场景,拆开自动切换的依据、GOTOOLCHAIN 的三种边界,以及如何保留本地便利和线上可复现。316 收藏