-
用 Go archive/zip 创建 ZIP 时,通过 FileHeader.Method 选择 Store 或 Deflate,并了解 RegisterCompressor 调整 Deflate 的边界。
-
Go读取多段PEM证书应循环pem.Decode并推进rest,再逐块调用x509.ParseCertificate。本文提供限量读取示例,说明混合块、DER错误、顺序保留和解析与信任验证的区别。
-
Go crypto/tls 的 VerifyConnection 会在标准证书校验后接收 ConnectionState,适合补充证书属性、连接状态和恢复连接策略。本文比较默认校验、VerifyPeerCertificate 与 VerifyConnection 的边界,并说明 InsecureSkipVerify 和服务端客户端证书的风险。
-
Go crypto/tls 用 tls.Config.NextProtos 声明客户端的 ALPN 协议偏好,并在握手完成后从 ConnectionState.NegotiatedProtocol 读取最终结果。本文说明成功协商、未协商与无共同协议的处理边界。
-
Go crypto/tls 的 ConnectionState 会记录 TLS 连接的协商状态,其中 DidResume 用于表示本次连接是否从既有会话成功恢复。本文说明读取时机、首次握手与会话恢复的区别,以及如何把结果用于日志和指标。
-
Go使用NewReaderDict和约定的预置字典解压zlib输入。本文用有输出上限的完整示例说明ErrDictionary、读取校验、Close及输入重试位置,避免把部分结果误认为成功。
-
批量压缩多个独立数据块时,可以复用同一个 gzip.Writer,但必须先 Close 完当前 gzip 流,再调用 Reset 切换输出目标,并在首次写入前重新设置 Header。本文用两个缓冲区说明复用顺序、元数据边界和不适合共享 Writer 的场景。
-
Go archive/zip 将 ZIP 条目的扩展字段放在 FileHeader.Extra 中。本文用安全的 TLV 遍历读取原始字节,处理未知字段、截断输入、重复字段与条目遍历边界。
-
Go compress/gzip 的 Reader 会在创建或 Reset 后暴露 gzip Header。本文说明怎样读取 Header.Name、为什么文件名可能为空,以及多成员 gzip、完整读取和校验关闭的边界。
-
Go读取ZIP的UTF-8声明应检查Flags第11位,文件名字节合法性与NonUTF8则需分别理解。本文提供只读观察程序,并解释ASCII、中文名称、注释和写入标志的差异。
-
Go 的 archive/tar 读取截断归档时,正常结束与数据不完整不是同一个结果。本文用 Reader.Next、Header.Size、io.Copy 和 io.ErrUnexpectedEOF 说明如何定位截断位置,并在流式解包中安全停止。
-
Go archive/tar 的 Header.AccessTime 不是赋值后就一定会写入。本文说明 FormatPAX、FormatGNU 与未指定格式的差异,给出写入、读取和零值判断示例,并梳理访问时间的精度与兼容取舍。
-
Go读取tar成员类型应使用Reader.Next返回的Header.Typeflag。本文比较IsDir与名称后缀,提供只读清单程序,并说明旧式标志规范化、链接、未知类型和EOF的处理。
-
Go embed 的“文件不存在”分成构建期匹配失败和运行期路径缺失两类。本文用 embed.FS 说明如何判断 fs.ErrNotExist,并设计不会因可选资源缺失而无法构建的目录结构。
-
Go embed 配合 fs.Glob 可以在只读的 embed.FS 中按 path.Match 规则查找内嵌模板。本文给出嵌入、匹配、解析和安全边界的完整写法。