Go语言技术文章
-
os.DirFS 接收的是 io/fs 逻辑路径,不是任意操作系统路径,因此会拒绝 ..、绝对路径和空路径段。但这只阻止调用参数直接上跳,不能防住目录内符号链接逃逸,也不能消除相对根目录受 Chdir 影响的问题。本文说明校验方法与 os.Root.FS 的适用边界。214 收藏 -
Golang · Go问答 | 3天前 | goroutine · pprof · Go问答 · goroutineleak Go pprof goroutine 泄漏剖析 waiting 状态 goroutine profile
waiting 数量多本身不能证明泄漏。本文区分普通 goroutine profile 与 Go 1.27 goroutineleak profile,并用趋势、可达性和资源影响建立可执行的判断方法。213 收藏 -
Golang · Go教程 | 4天前 | JSON · 时间处理 · Go教程 · database/sql · 后端开发 · RFC3339 Go时间序列化 time.Duration JSON 数据库时间戳 sql.NullTime
用一个小型任务接口统一 Go 业务时间、Duration 与数据库可空时间戳,给出自定义 JSON 类型、仓储映射和往返测试。212 收藏 -
多租户服务若共享可变 x509.CertPool,容易把一个租户的私有 CA 扩散给其他租户。本文通过故障复盘给出独立根池、TLS 绑定、轮换与测试方案。212 收藏 -
解释 Go 实验性 runtime/secret.Do 为什么不能让从回调返回的 string 自动被擦除,并给出把敏感计算收口、由调用者预分配结果空间和发布检查的做法。211 收藏 -
runtime.Pinner 可在 Go 1.21 及更高版本中显式固定 Go 对象。本文说明 cgo 参数的隐式固定边界、Pin/Unpin 最小写法、嵌套指针规则及跨调用保存指针时的生命周期管理。209 收藏 -
Go TLS 热更新证书不会让已经完成握手的旧长连接立即失效;新证书主要作用于后续握手,而恢复会话还有票据边界。本文按连接生命周期说明原子更新、失败回退、会话恢复与连接排空策略。209 收藏 -
Go 反射中的无效 Value、nil 指针和类型零值不是一回事。本文用 IsValid、Kind、IsNil、IsZero 的安全顺序,解释 typed nil、nil slice、空 slice 和普通零值的区别,并给出可复用的分类函数。208 收藏 -
Go 的 replace 可以替换间接依赖,但它只改变主模块依赖图中的模块内容来源;是否进入图仍由 require 和模块图决定。本文用 MVS、go mod graph 与 go list -m all 给出判断方法。208 收藏 -
围绕 time.Ticker 的动态改周期、永久停止和停止后复用,讲清 Reset、Stop 与 C 通道之间的调用顺序,避免重复创建和并发竞态。208 收藏 -
用 Go 的 html/template 生成 HTML 邮件,演示正文、属性和 URL 上下文的自动转义,并说明 template.HTML 只适用于可信片段。207 收藏 -
ServeMux 的匹配不是简单比较路径字符串,而是综合方法、主机和路径,并按请求集合的具体程度选择模式。本文用请求生命周期拆解通配符、优先级、405、尾斜杠和 Go 1.22 兼容边界。207 收藏 -
本文演示 Go base32.NewDecoder 如何配合 io.CopyBuffer 流式解码大文件,并补充编码一致性、大小限制、错误处理和临时文件提交。206 收藏 -
Go 缓存与泄漏在 GC 看来都是可达对象。本文从 heap profile 的增长分配栈出发,沿根引用、容器和业务对象还原持有链,并用容量、TTL、清空及取消实验验证释放边界。206 收藏 -
slices.SortFunc 不会替你校验比较函数。违反严格弱序后,切片可能部分错序、结果随输入变化;本文给出 cmp.Compare、多字段排序、稳定性选择和性质测试方案。206 收藏