Go语言技术文章
-
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 收藏 -
Go 服务从终端切换到脚本或服务管理器后,相对路径可能因为工作目录变化而失效。本文用 os.Getwd 确认现场,在启动阶段用 filepath.Abs 固定路径,并说明为什么不应在运行中随意 os.Chdir。261 收藏 -
Go 目录读取不能只看 error。os.ReadDir 可能返回已经读到的目录项和错误;os.File.ReadDir 按批次读取时要先处理 entries,再区分 io.EOF 与真正的读取失败。162 收藏 -
Go 写文件后读不到最新内容,应先区分用户态缓冲与文件同步。本文说明 bufio.Writer.Flush、os.File.Sync 和 Close 的职责,用独立临时文件演示错误处理,并解释读取游标、旧读取缓冲与持久化目标的差别。460 收藏