Go语言技术文章
-
Go crypto/tls 在启动时加载多份证书,用 GetCertificate 按 SNI 精确选择并拒绝未知名称。示例说明回调调用条件、只读映射、兼容性及证书信任和业务鉴权的区别。434 收藏 -
解释 Go io.MultiWriter 按顺序写入多个 Writer 的行为,区分错误、短写入和部分结果,并给出失败后的重试与补偿判断方法。434 收藏 -
Go ECDSA Sign 摘要长度报错通常源于原始字节与文本编码混用,或哈希选项不匹配。本文比较三个签名入口,给出 SHA-256 签名验签示例及参数排错表。434 收藏 -
Go net.JoinHostPort 用于把主机和端口拼成网络地址。本文说明它为什么会给 IPv6 主机自动加方括号,并覆盖域名、IPv4、空主机、zone 标识和 SplitHostPort 配合时的实用边界。434 收藏 -
Go crypto/x509 CertPool 可以把 PEM 格式的自定义根证书接入 TLS 客户端或证书链验证。本文区分空池与系统池、讲清 AppendCertsFromPEM 的返回值,并给出 RootCAs 与 VerifyOptions.Roots 的配置边界。434 收藏 -
解释 go-pretty Pager 的 PageSize 与实际数据行数、渲染行数和页数的区别,给出展示分页与业务分页的选择方法。434 收藏 -
用Go go-message构建纯文本正文与CSV附件并存的邮件,说明mixed容器、部件关闭、默认编码、内存限额与邮件交付边界。434 收藏 -
Go http.Transport 的 WriteBufferSize 控制 Transport 写入网络连接时使用的缓冲区。本文说明零值默认行为、共享 Transport 的配置方式、按连接评估内存代价,以及哪些问题不该靠调大写缓冲解决。434 收藏 -
Go 的 multipart.Part.FileName 从 Content-Disposition 的 filename 参数读取文件名,并在返回前通过 filepath.Base 去掉目录信息。本文用逐部件解析示例说明读取方式、解析失败边界和上传落盘时的安全命名策略。434 收藏 -
说明 Go ZIP 解析、条目打开与读取阶段的错误保留,用 %w 和 errors.Join 保留原因,给出内存归档示例,并解释校验和、关闭、容量限制及错误分类边界。434 收藏 -
Go runtime.SetFinalizer 不生效时,先检查对象是否仍然可达、终结器是否通过闭包重新引用对象,以及是否把 GC 当成了确定的定时器。本文按迁移视角说明显式 Close、KeepAlive 和终结器兜底的正确边界。434 收藏 -
Go 的 csv.Reader 默认按 RFC 4180 解析。遇到裸引号或未成对引号时,LazyQuotes 可以放宽规则,但也会让脏数据进入下游。本文从 ParseError、错误类型、受控入口和回溯记录说明什么时候开、什么时候拒绝。434 收藏 -
Go hmac.Equal 接受两个字节切片,长度不同会直接返回 false,不会因为长度不一致而 panic。本文说明它的长度边界、同算法前提和签名解码后的安全比较写法。434 收藏 -
crypto/subtle.ConstantTimeSelect 只接受 0 或 1,并在两个候选整数之间做固定时间选择。本文用 ConstantTimeEq 生成选择值,解释它适合保护什么、不能替代哪些安全边界,以及如何用测试核对结果。433 收藏 -
自签名 CA 或内网证书接入 Go 客户端时,握手失败往往不是服务端证书坏了,而是根证书没有进入本次 Verify 使用的证书池。本文从系统根证书池、NewCertPool、AddCert 到 Verify 串起一条可运行的证书链校验路径。433 收藏