Go语言技术文章
-
Go crypto/subtle.WithDataIndependentTiming 用于在回调期间启用架构相关的数据独立时序能力,但不会把普通变长代码自动变成常量时间。本文用 ConstantTimeCompare 说明正确包法、goroutine 作用域、架构差异和安全边界。391 收藏 -
Golang · Go教程 | 3星期前 | 并发 · Go教程 · trace.NewTask go tool trace Go runtime/trace 执行跟踪 trace.WithRegion
Go runtime/trace 不只是记录运行时事件,还能用 task、region 和 Log 标记一次跨 goroutine 的业务操作。本文从排查现场出发,说明如何把任务上下文传入 goroutine、如何标记区间,以及如何避免结束时机和标记粒度失控。391 收藏 -
用 Go archive/tar 和 filepath.WalkDir 打包目录,讲清 FileInfoHeader 保留文件模式、相对路径、符号链接与关闭顺序。391 收藏 -
Go ServeMux 没有命中请求时,先按方法、主机和路径三层拆开排查。本文用 Go 1.22 的模式语法解释尾斜杠、通配符、{$}、最具体模式优先和 405 结果,并给出可观察实际命中的写法。391 收藏 -
用自建 x509.CertPool 配置 VerifyOptions.Roots,只信任指定根证书;同时区分 Intermediates、DNSName 和 KeyUsages,避免把系统根或中间证书误当成信任边界。391 收藏 -
Go crypto/tls Config.Clone 适合在复用基础 TLS 配置时派生按连接修改的副本。本文说明浅层克隆、证书池和回调的共享边界,并解释会话恢复对验证回调的影响。391 收藏 -
go-i18n 中 MessageID 负责定位消息资源,DefaultMessage 负责资源缺失时的完整回退消息。本文说明两者的优先级、复数模板边界与生产代码选择方法。391 收藏 -
Go 的 url.URL 会同时保留解码后的 Path 与可选的 RawPath 编码提示。本文用具体 URL 说明两者为什么不同,并用 EscapedPath 判断最终输出。391 收藏 -
用 Go 的 os.Pipe 把一个 exec.Cmd 的标准输出接到另一个进程的标准输入,本文给出可复用的最小示例,并说明 Start、Wait、Close 的顺序以及与 StdoutPipe、io.Pipe、Output 的选型区别。391 收藏 -
Go time.Time.MarshalBinary 可以保存时间点、纳秒和时区偏移,但不会保存原始 Location 名称,也不会保留单调时钟读数。本文用原创示例说明二进制往返、错误处理和额外保存 IANA 时区名的边界。391 收藏 -
讲解 Go 1.27 HTTP/1 响应体关闭后的有限自动排空,结合有界读取、共享 Transport 与 httptrace,区分关闭责任、读完正文和连接复用。390 收藏 -
Go 交叉编译找不到目标系统头文件,通常是 cgo 使用了宿主机编译器,或目标 sysroot、第三方开发包不完整。本文按 cgo 开关、CC、sysroot、pkg-config 和链接阶段给出排查顺序。390 收藏 -
Go 的 golang.org/x/text/secure/precis 提供 UsernameCaseMapped 账户名配置文件。本文用注册和登录场景说明如何处理规范化结果、空值错误、Compare 与 CompareKey 的选择,以及显示名和身份键的边界。390 收藏 -
Go bidirule 检查 RFC 5893 方向规则,不判断文本语义或发布许可。本文给出独立检查报告示例,说明字段适用范围、状态设计和方向规则与内容策略的分工。390 收藏 -
Go debug/gosym.Table.PCToFunc 接收一个 uint64 程序计数器,返回包含该地址的 *gosym.Func;查询不到时返回 nil。本文从已加载的符号表出发,说明如何读取函数名、Entry、End,并区分函数查询与源码行号查询。390 收藏