Go语言技术文章
-
解释 Go sql.DB.Stats 中 WaitCount 持续增长的含义,区分连接池等待、数据库变慢和资源未释放,并给出窗口采样与参数排查方法。220 收藏 -
Go 的 database/sql 提供了泛型 sql.Null[T] 来接收可能为 NULL 的列。本文从 Scan 指针、Valid 判断、零值区分和 driver.Value 类型边界四个方面说明可空字段的正确写法。451 收藏 -
Go 的 Rows.Next 返回 false 既可能是正常读完,也可能是遍历途中出错。本文说明 Rows.Err、Scan 和 Close 各自负责什么,并给出完整查询模板。324 收藏 -
Go 的 sql.Conn.Raw 能在受控回调中暴露底层驱动连接。本文用 pgx CopyFrom 说明类型断言、生命周期、错误处理和连接池边界。307 收藏 -
Go sql.DB.BeginTx 会用传入的 context 管理整个事务生命周期。上下文取消后 database/sql 会回滚事务,Commit 返回错误。本文区分事务上下文、语句上下文与安全收尾写法。431 收藏 -
Go 里给 TLS 客户端加入自定义根证书时,先保留系统 CertPool,再用 x509.CertPool.Clone 建立隔离副本,避免不同租户或连接配置互相污染。本文说明最小写法、Clone 与直接赋值的边界,以及 RootCAs 的发布检查。339 收藏 -
Go x509.Certificate.VerifyHostname 忽略旧版 Common Name,是因为主机名校验应使用证书的 SAN。本文区分 DNS SAN、IP SAN 与证书链校验,并给出迁移和排查清单。186 收藏 -
Go 中给 TLS 握手设置取消条件,直接把带超时或可取消的 Context 传给 tls.Dialer.DialContext。本文说明它对 TCP 建连和 TLS 握手的覆盖范围、错误判断及连接成功后的读写超时边界。243 收藏 -
复盘 Go TLS 会话恢复仍走完整握手的常见根因,重点检查客户端缓存、TLS 1.3 会话票据读取、缓存键与多实例票据密钥。334 收藏 -
讲清 tls.Config.Clone 的浅拷贝与并发边界,演示连接级配置派生、切片复制、证书池隔离和会话恢复注意事项。488 收藏 -
从证书原材料、默认验证、连接状态和会话恢复四个边界,说明 Go tls.Config.VerifyConnection 与 VerifyPeerCertificate 的选择方法和组合方式。449 收藏 -
说明 Go crypto/subtle.XORBytes 处理等长 []byte 的调用方式,解释返回值、目标长度、切片重叠和不等长输入的边界,并给出生产代码中的长度检查方案。323 收藏 -
Golang · Go问答 | 2星期前 | go · RSA · 密码学 · Go rsa.PSSOptions SaltLength PSSSaltLengthEqualsHash SignPSS
Go 的 PSSOptions.SaltLength 可选自动最大盐长、等于哈希长度或指定正整数。本文给出推荐场景、跨语言互操作、验证端严格度、FIPS 边界和测试矩阵。433 收藏 -
Go 的 rsa.EncryptOAEP 与 rsa.DecryptOAEP 必须使用相同 label。本文用用途名、数据类型和版本构造稳定 label,封装专用解密入口,并说明错用密文、统一错误处理、哈希一致和真实性边界。442 收藏 -
Go crypto/rand.Text 当前通常返回 26 个 Base32 字符,但官方只保证至少 128 位随机性并允许未来变长。本文解释长度来源、API 边界和固定长度令牌的显式编码方案。501 收藏