Go语言技术文章
-
敏感信息进入 Go 日志后,不能只靠调用点自觉替换。本文先说明已泄露日志的止损,再用 slog LogValuer、ReplaceAttr 和统一 Logger 装配建立多层脱敏,并列出嵌套字段、自由文本与旁路输出的验证清单。341 收藏 -
自定义 slog.Handler 重复输出属性,通常源于 WithAttrs 修改共享切片、WithGroup 重复展开或 Handle 合并了两次。本文按属性来源、不可变派生和分组作用域给出排查与修复方法。341 收藏 -
Golang · Go教程 | 3天前 | TLS · Go教程 · Go x509 VerifyOptions ExtKeyUsageServerAuth ExtKeyUsageClientAuth mTLS证书用途
讲解 Go crypto/x509 VerifyOptions.KeyUsages 的服务器与客户端证书用途差异,给出显式验证函数、常见错误、TLS 配置映射和回归测试清单,避免空 KeyUsages 默认值与 ExtKeyUsageAny 带来的误判。341 收藏 -
面向以 -cover 构建的长期运行程序,说明 Go runtime/coverage.WriteCountersDir 生成的计数快照如何与匹配的元数据配合,并用 go tool covdata 做汇总分析。341 收藏 -
Go 的 log/slog 可以把 HandlerOptions.Level 设置为 slog.LevelVar,在不重建 Logger 的情况下运行时切换最低日志级别。本文给出完整配置示例,说明 Set、Level、Enabled 的边界,以及多 Handler、并发更新和昂贵参数计算时的处理方式。340 收藏 -
Go container/list.MoveAfter 传入同一个节点时不会改变顺序,因为 e == mark 没有新的位置;本文进一步区分节点值相同、已经相邻和跨链表节点的边界。340 收藏 -
用 Go 的 url.JoinPath 组装 API 路径,讲清路径段转义、查询参数、URL 对象转换、清理规则和常见坑。339 收藏 -
Go net/http 会按目标主机判断敏感请求头是否继续转发。本文结合 CheckRedirect 说明默认行为、跨域边界和受控目标的认证头处理方式。339 收藏 -
Go 里给 TLS 客户端加入自定义根证书时,先保留系统 CertPool,再用 x509.CertPool.Clone 建立隔离副本,避免不同租户或连接配置互相污染。本文说明最小写法、Clone 与直接赋值的边界,以及 RootCAs 的发布检查。339 收藏 -
Go sync.Cond 的 Wait 返回只表示收到通知,不代表共享条件已经成立。本文用队列式示例说明为什么必须在循环中重新检查条件,并梳理 Signal、Broadcast 与锁的配合边界。339 收藏 -
Go select 多个发送或接收分支同时就绪时会均匀伪随机选择,本文说明 case 顺序、default、关闭通道和 nil 通道的边界,并给出优先级处理方案。339 收藏 -
Go time.Ticker.Reset 只改变后续周期,不等于清空 ticker.C。本文解释旧 tick 为什么不能用普通接收直接“排空”,并给出单 goroutine、非阻塞判断和重建 ticker 的选择边界。339 收藏 -
Golang · Go问答 | 4星期前 | Context · HTTP客户端 · Go问答 · Go请求超时 Go clienttimeout http.Client Timeout Go客户端超时 Transport阶段超时
本文解释 Go http.Client.Timeout 的总时限范围,并用请求级 context 与 Transport 阶段参数区分不同客户端边界。338 收藏 -
Golang · Go问答 | 3星期前 | go · Context · Go问答 · context.Cause Go context.WithCancelCause CancelCauseFunc Go 上下文取消原因 Go 下游读取取消原因
讲清 Go context.WithCancelCause 返回的 CancelCauseFunc 如何把具体错误传给下游,以及 context.Cause 与 ctx.Err 的区别、取消顺序和资源清理边界。338 收藏 -
用 Go 的 image/draw.DrawMask 把源图按 Alpha 蒙版叠加到目标图,掌握坐标对齐、draw.Over 与常见偏移排查方法。338 收藏