Go教程技术文章
-
Go 的 crypto/subtle.ConstantTimeSelect 适合在两个整数结果之间做常量时间选择,但它不能替代完整的密码学实现。本文从掩码、输入约束、编译验收和错误用法说明它的边界。244 收藏 -
用 Go runtime/trace 的 Task、Log 和 Region 标记一次异步请求,把采集、查看与代码验证串起来,帮助定位跨 goroutine 的阶段耗时和事件顺序。244 收藏 -
Golang · Go教程 | 1个月前 | 单元测试 · testing · Go教程 · 问题排查 · Go test 测试辅助函数 Go testing.T.Helper 失败位置 单元测试排错
testing.T.Helper 不会修复断言失败,它只让 Go 测试输出跳过辅助函数并指向调用处。本文从调用顺序、嵌套 helper、顶层测试函数和 goroutine 边界入手,给出排查失败位置仍指向 helper 文件的最小检查清单。244 收藏 -
用 go list -m -u -json all 生成 Go 模块清单,再用 govulncheck -json ./... 保存漏洞结果,在持续集成中按调用栈、修复版本和周期任务持续跟踪依赖安全。244 收藏 -
Go 的 archive/tar 读取截断归档时,正常结束与数据不完整不是同一个结果。本文用 Reader.Next、Header.Size、io.Copy 和 io.ErrUnexpectedEOF 说明如何定位截断位置,并在流式解包中安全停止。244 收藏 -
Go slices.BinarySearchFunc可在自定义顺序中查找,前提是排序与查询比较语义一致。通过分数降序的结构体示例,说明整数目标、重复键、未命中插入位置和顺序维护。244 收藏 -
Go unicode/utf8.RuneLen 返回单个 rune 编码成 UTF-8 所需的字节数:正常值为 1 到 4,非法 Unicode 值返回 -1。本文区分 RuneLen、len 和 RuneCountInString,并说明 RuneError 与非法 rune 的边界。244 收藏 -
Go os.Pipe 可以把一个进程的标准输出接到另一个进程的标准输入。本文从一个小型命令管道出发,说明读写端方向、Cmd 生命周期、关闭时机,以及结果为空和等待不返回的常见原因。244 收藏 -
Golang · Go教程 | 2个月前 | 并发 · pprof · 故障排查 · Go教程 · net/http/pprof goroutineleak goroutine 泄漏 runtime/pprof Go 1.27
Go 1.27 将 goroutineleak profile 正式带入 runtime/pprof 和 net/http/pprof。本文从一个被 channel 永久阻塞的最小案例出发,演示如何采样、判断可疑协程,并说明全局变量和可运行协程为什么会造成漏报边界。243 收藏 -
Go 的 url.ParseQuery 遇到非法百分号时不会只返回空结果:它仍会给出非 nil 的 Values,保留可解码的查询参数,同时返回首个解码错误。本文拆开这个边界,并给出严格拒绝与安全降级的选择方法。243 收藏 -
自定义 bufio.Scanner 的 SplitFunc 时,最后一个字段没有分隔符很容易被漏掉。本文用逗号分词示例说明 atEOF 与剩余 data 的关系,并给出连续分隔符、空 token 和 ErrFinalToken 的处理边界。243 收藏 -
reflect.StructOf 遇到重复字段名会直接 panic。本文从字段去重、参数边界、局部 recover 和表驱动测试四个方面,给出可诊断的动态结构构造方式。243 收藏 -
Go 中排查 unicode/utf8 非法序列时,先用 Valid 判断整体字节,再用 RuneError 与 size=1 定位具体偏移,并区分截断、错误编码和真实替换字符。243 收藏 -
Go 中给 TLS 握手设置取消条件,直接把带超时或可取消的 Context 传给 tls.Dialer.DialContext。本文说明它对 TCP 建连和 TLS 握手的覆盖范围、错误判断及连接成功后的读写超时边界。243 收藏 -
本文用 tls.Config.GetCertificate 与 atomic.Pointer 构建 Go HTTPS 证书热更新:监听端口持续运行,SIGHUP 触发加载,新证书通过密钥、有效期和主机名检查后才原子替换;失败保留旧证书,并说明既有连接、SNI、多证书和上线观测边界。243 收藏