Go教程技术文章
-
Go 的 gzip.Writer 可以在首次写入前通过 Name 和 ModTime 设置 GZIP 头元数据;本文给出可读回核对的完整示例,并说明 Close、Reset、零值时间和编码边界。215 收藏 -
Go gzip.Reader 默认会连续解压拼接成员。本文用 Multistream(false)、bufio.Reader 和 Reset 逐段取得每个成员的 Header 与正文,并加入单成员大小限制、错误处理和安全落盘边界。312 收藏 -
Go compress/flate 的 Write 可能暂存在压缩器内部,实时传输要在消息写入后调用 Flush,把当前数据和同步标记推到底层 writer;Close 只负责最终收尾。本文用长度帧、io.Pipe 和 io.ReadFull 说明发送、接收与刷新频率的边界。492 收藏 -
Go compress/flate 的 HuffmanOnly 只做 Huffman 熵编码,不再寻找 Lempel-Ziv 重复串。它更适合已经经过 Snappy、LZ4 等 LZ 类压缩、但字节频率仍明显偏斜的数据;普通文本直接使用它往往会牺牲压缩率。本文用原创示例说明选择边界、资源收尾和上线前对比方法。217 收藏 -
Go 的 flate.NewReader 返回值同时实现 flate.Resetter,可在每段独立 DEFLATE 数据开始前调用 Reset 切换输入,复用内部已分配内存。本文给出完整循环,并说明 Close、字典、ByteReader 过读和并发使用边界。488 收藏 -
用 Go compress/flate 的 NewReaderDict 配合同一份预置字典解压 DEFLATE 数据,示范 io.Copy、Close、Reset 的写法,并按字典、输入流和读取边界排查失败原因。178 收藏 -
当 []byte 来自读取缓冲区、sync.Pool 或短生命周期回调时,直接保存会继续共享底层数组。本文说明如何在队列、goroutine 和缓存边界使用 bytes.Clone 获得独立副本,并处理 nil、空切片与复制成本。359 收藏 -
用 Go bytes.Reader 保存绝对偏移、回退试读分支,并区分 Seek 越界、负位置、EOF 与 ReadAt 独立探测。179 收藏 -
使用 bytes.Buffer 分批处理数据时,应先用 Len 判断完整批次,再用 Next 消费固定长度;不足一批的尾部继续留在缓冲区。本文给出同步、异步和收尾写法。128 收藏 -
Go bytes.CutPrefix 可以把可选协议前缀解析成 after 与 found 两个明确结果。本文用协议帧示例说明前缀命中、旧格式兼容、空字段校验和 bytes.Clone 的生命周期边界。283 收藏 -
用 Go bufio.Writer.AvailableBuffer 配合 append 和 strconv.AppendInt 构造短记录,减少循环中的临时切片分配,并说明容量不足、切片生命周期、Flush 和 Go 版本兼容边界。226 收藏 -
Go bufio.Reader.Discard 按固定字节数跳过协议头部,重点说明返回数量、短输入、负数参数和动态长度边界。365 收藏 -
讲解 Go bufio.Scanner 如何编写保留分隔符的 SplitFunc,覆盖 advance、token、atEOF、跨缓冲区匹配和尾部残片处理。121 收藏 -
说明 Go bufio.Scanner 读取超长单行时如何用 Buffer 调整 token 上限,正确处理错误与内存边界,并判断何时改用 bufio.Reader。175 收藏 -
说明 Go archive/zip 如何使用 OpenRaw 和 CreateRaw 原样复制已压缩条目,覆盖 FileHeader 复制、中央目录收尾、重名处理、ErrInsecurePath 与 CreateHeader 的适用边界。442 收藏