Go语言技术文章
-
Go bufio.Scanner 报 too many empty tokens,通常不是缓冲区太小,而是自定义 SplitFunc 在 EOF 下反复返回未推进的非 nil token。本文用返回值关系说明根因、修复方式和 Reader 的适用边界。495 收藏 -
说明 Go bufio.Scanner 读取超长单行时如何用 Buffer 调整 token 上限,正确处理错误与内存边界,并判断何时改用 bufio.Reader。175 收藏 -
Go bufio.Scanner 返回 token too long,通常是单个 token 超过默认缓冲上限。本文说明 Scanner.Buffer 的正确配置时机,并给出长记录切换 bufio.Reader 的处理方案。422 收藏 -
Go archive/zip 的 Writer.Copy 用于原始条目复制,不负责重建文件头。本文解释 Copy、CreateRaw 与 CreateHeader 的边界,并给出修改 ZIP 元数据和重新压缩内容的实现方式。334 收藏 -
说明 Go archive/zip 如何使用 OpenRaw 和 CreateRaw 原样复制已压缩条目,覆盖 FileHeader 复制、中央目录收尾、重名处理、ErrInsecurePath 与 CreateHeader 的适用边界。442 收藏 -
介绍 Go 中如何让 zip.Reader 作为 fs.FS 使用,覆盖磁盘 ZIP、内存 ZIP、fs.ReadFile、fs.ReadDir、fs.Sub、路径约束与资源关闭。253 收藏 -
Go archive/zip 的 Reader.Open 使用 io/fs 的正斜杠路径语义。本文说明反斜杠导致找不到条目的原因,并给出规范路径访问、原始名称精确匹配和 ErrInsecurePath 处理方案。374 收藏 -
Go archive/zip 出现 directory size overflow 时,先区分单个文件大小、ZIP 中心目录大小和旧实现的 32 位字段限制,再按流式写入、Zip64、Close 错误和消费端兼容性逐项排查。326 收藏 -
说明 Go archive/zip 如何自动生成 ZIP64 元数据,使用 io.Copy 流式写入大条目,并正确读取 64 位大小字段与处理关闭错误。122 收藏 -
排查 archive/zip 注册压缩器后没有调用的问题,重点检查 method ID、CreateHeader、CreateRaw、Copy、Writer 实例与注册时机。467 收藏 -
演示如何用 Writer.RegisterCompressor 为指定 ZIP 方法注册压缩器,并说明 Method 选择、Close 刷新、并发安全、读取兼容性和性能衡量方法。220 收藏 -
Go archive/tar 写入 io.Pipe 后在 Close 阻塞,通常是读端没有持续消费导致的同步背压。本文比较 bytes.Buffer、文件和 io.Pipe 的适用场景,并给出带错误传播与取消处理的流式写法。458 收藏 -
介绍 Go 用 io.Pipe 将 archive/tar 输出直接作为 HTTP 请求体的方法,说明背压、关闭顺序、错误传播和 Content-Length 边界。229 收藏 -
解释 Go archive/tar 在 tarinsecurepath=0 下返回 ErrInsecurePath 的原因,给出条目名检查、链接处理和安全解包边界。142 收藏 -
用 Go archive/tar 解包时,不能只把 Header.Name 与目标目录 Join 起来。本文用文件名本地化检查、条目类型拒绝和 os.Root 根目录写入约束,给出一套可落地的安全解包方案。188 收藏