Go语言技术文章
-
Go POSIX 与默认正则既有语法范围差异,也有最左最先与最左最长的选择差异。本文通过原创对照示例说明 Compile、CompilePOSIX、Longest 的取舍,并提醒捕获分组和并发配置边界。491 收藏 -
Go 的 math/big.Rat.SetString 支持十进制小数、指数和分数格式。本文排查逗号、单位、空白和返回值误用等失败原因,并说明 RatString 与 FloatString 的区别。349 收藏 -
math/big.Int.SetString 返回的是大整数指针和成功布尔值,不会单独返回 error。本文围绕进制参数、前缀、失败返回值和边界封装,说明为什么解析失败时会得到 nil,以及怎样安全处理。153 收藏 -
Go HKDF 派生长度不足应先区分 Reader 与标准库定长接口,再检查字节单位及累计输出上限。本文给出定长读取和错误处理示例,解释输入参数、重复创建 Reader 与迁移时的结果分配差异。257 收藏 -
Go RSA-PSS 签名成功但验签失败时,优先对齐 digest、Hash 和 SaltLength。本文用 SHA-256 与等 Hash 盐长说明 SignPSS、VerifyPSS 的参数责任,并比较固定盐长与自动盐长在跨实现协议中的取舍。416 收藏 -
Go Ed25519 验签失败时,优先核对原始消息、公钥和签名字节是否一致,再检查 Base64、十六进制解码与长度边界。368 收藏 -
Go 自定义证书链验证失败时,先把 Roots、Intermediates 和 KeyUsages 分开检查:根证书决定信任锚,中间证书负责补链,KeyUsages 决定用途约束。339 收藏 -
Go 程序在精简容器中调用 x509.SystemCertPool 发现证书池为空或 HTTPS 校验失败时,先检查根证书目录和返回错误,再用 SSL_CERT_FILE、SSL_CERT_DIR 或镜像内的 CA 包修复。249 收藏 -
Go zlib 解压出现校验和错误时,需要区分尾部不匹配、输入截断和关闭错误。本文用受控小样本演示完整读取、保留错误链与失败正文隔离,并说明压缩器关闭和底层资源的处理责任。110 收藏 -
Go gzip 解压后文件名为空,通常不是数据损坏,而是 gzip Header 没有可选的 Name 字段。本文说明如何在 Writer 端保存文件名、在 Reader 端读取并处理空值,以及跨系统传输时怎样设计可靠的文件名兜底。483 收藏 -
Go 读取稀疏 tar 条目时,Header.Size 表示逻辑文件大小,稀疏空洞会由 Reader 以 NUL 字节呈现。本文区分逻辑长度与归档实际载荷,说明如何流式读取、设置大小上限,并避免手工计算下一个条目的偏移。437 收藏 -
Go sql.DB 的 SetConnMaxLifetime 设置的是连接最多可被复用的时长,过期连接可能在下一次复用前惰性关闭,并不承诺到点立即断开。本文用 DB.Stats 区分连接年龄、空闲时间和并发上限三个边界。254 收藏 -
Go 使用 fs.Sub 创建子文件系统后,根目录文件应使用 "." 和相对路径访问。本文解释 ValidPath 规则、常见错误写法,以及如何区分路径无效与文件不存在。498 收藏 -
Go embed 匹配为空时,先确认 go:embed 所在包目录,再检查模式、隐藏文件规则和 embed.FS 的树内读取路径。本文用一个小目录说明编译期匹配与运行时读取的边界。127 收藏 -
Go filepath.WalkDir 遇到权限目录时,不要直接让整个遍历失败。先判断回调 err 和 d,再用 errors.Is 识别 fs.ErrPermission,并按场景选择返回 nil、fs.SkipDir、fs.SkipAll 或原始错误。425 收藏