-
Go 1.24 起可以用 os.Root 把文件操作限制在指定目录树内。本文用 Root.Remove 删除根目录内文件和空目录,并说明相对路径、越界路径、非空目录与 Root 生命周期的错误边界。
-
Go ECDSA Sign 摘要长度报错通常源于原始字节与文本编码混用,或哈希选项不匹配。本文比较三个签名入口,给出 SHA-256 签名验签示例及参数排错表。
-
Go 服务端收到 ClientHello 后,怎样用 tls.Config.GetConfigForClient 按 SNI 或 ALPN 选择配置?本文梳理回调参数、nil 与 error、配置不可变和会话恢复边界。
-
Go 1.27 的 httptest.NewTestServer 默认使用内存网络,适合放进 testing/synctest 的并发测试 bubble。本文说明怎样使用 server.Client 发请求、为什么不应调用 Start、URL 和配置的边界,以及 testing.TB 自动清理与 NewServer loopback 模式的区别。
-
Go 1.25 起可以用 os.Root.Chmod 在受限目录树内修改文件权限。本文给出最小写法,说明相对路径、FileMode、错误分类和跨平台边界。
-
Go Protocompile 的 Compiler.Compile 接收 context.Context。本文用多文件 proto 示例说明怎样把请求取消或超时传入编译流程,用 errors.Is 区分 context.Canceled、context.DeadlineExceeded 与普通编译错误,并处理未完成结果。
-
Go crypto/tls 的 CurvePreferences 类型是 []tls.CurveID,列表顺序不会直接决定协商优先级。本文围绕 MLKEM1024 说明 nil 默认值、显式集合、GODEBUG 与客户端服务端交集的排错边界。
-
Go TLS 排障中,PeerCertificates 表示对端发送的证书列表,VerifiedChains 表示本地构造出的验证链。本文说明如何结合握手状态、客户端与服务端角色判断证书链,避免只凭证书数量下结论。
-
Go 的 Transport.TLSNextProto 不是普通的 HTTP/2 开关,而是 TLS ALPN 协商后把连接交给协议处理器的低层映射。本文按回调签名、authority、TLS 连接所有权和 HTTP/2 自动启用边界说明怎样注册与判断。
-
Go log/slog 的 Handler.WithAttrs 用来为新 Handler 保留公共属性。本文从 Logger.With 的调用关系讲起,说明如何附加请求字段、为什么原 Handler 不会被修改,以及自定义 Handler 如何处理属性切片、分组和 LogValuer。
-
Go x509 的 SSL_CERT_FILE 没有生效时,先检查它是否指向单个 PEM 文件,再排除自定义 RootCAs、平台证书 API 和 Go 版本差异。本文按参数形态拆解环境变量未加载证书的常见原因。
-
pflag 中不能通过比较当前值和默认值判断用户是否传参,因为用户可能显式传入了与默认值相同的值。本文说明 Changed、Visit 与 NoOptDefVal 的使用边界。
-
Go 1.26 新增的 Transport.NewClientConn 可以创建不进入 Transport 连接缓存的独立客户端连接。本文说明 scheme、address、ClientConn.RoundTrip、状态读取和关闭责任,并对比普通 http.Client.Do 的适用场景。
-
Go httptrace.Got1xxResponse 会在最终响应前收到每个 1xx 信息响应的状态码和响应头。本文说明如何把 ClientTrace 挂到请求上下文、读取 MIMEHeader、处理 100 Continue 与 103 Early Hints,并划清错误中止、重定向和响应体关闭边界。
-
Go HTTP/2 的 MaxConcurrentStreams 限制的是单条连接的并发流,不是所有连接共享的服务总并发。本文说明 Server.HTTP2 的配置方式、跨连接边界以及上线检查清单。