-
Go HTTP/2 priority 没有生效时,先确认 Go 版本、HTTP/2 协议和服务端开关。本文解释 net/http.Server.DisableClientPriority 的布尔语义,以及自定义写调度器让该字段失效的边界。
-
Go 1.24 起可以通过 net/http.Protocols 明确控制 Server 接收的协议。本文用服务端配置示例说明如何让 HTTP/1 与未加密 HTTP/2 共存,解释 h2c 与 TLS HTTP/2 的差异,并给出回滚和排障要点。
-
Go 的 http.Transport.HTTP2 用于配置 HTTP/2 连接的高级参数,但它不负责选择协议。本文区分 Protocols 与 HTTP2Config,说明客户端可用字段、零值语义和服务端专属配置。
-
Go net/http 的 Cookie 同时提供 RawExpires 和 Expires:前者保留 Set-Cookie 中的原始过期文本,后者是解析后的 UTC 时间。本文用一个小型响应读取示例说明如何读取、判断解析失败,并按日志、兼容处理和业务判断选择字段。
-
Go net/http 的 Response.Body 是 io.ReadCloser,关闭负责资源交接,是否读到 EOF 则会影响 HTTP/1.x 持久连接能否复用。本文解释只 Close 与读完再 Close 的差异,并给出小响应和大响应的处理写法。
-
Go 的 net/http.Transport.MaxResponseHeaderBytes 用来限制客户端接收的响应头总字节数。本文说明正数阈值、零值默认行为、超限错误与 Transport 复用时的配置边界。
-
Go net/http.Header.WriteSubset 可以按排除表把请求头写成线格式,但排除键不会自动规范化。本文用一个转发场景讲清 Header map、排除表、Request.Host 与写出错误的边界。
-
Go 1.25 的 runtime/trace.FlightRecorder 适合为长时间运行服务保留最近一段执行追踪。本文说明 MinAge、MaxBytes、WriteTo 和单次快照触发之间的关系。
-
Go 1.27 调整了 go tool trace 的 -http 参数行为:只写端口时页面限制在 localhost。本文对比常见监听地址,说明本机查看与远程访问该怎么选。
-
Go slog.SetDefault 可以让 slog 顶层函数和标准 log 默认 Logger 共用同一个结构化 Handler。本文说明 JSONHandler 接入、SetLogLoggerLevel 的级别控制,以及独立 log.Logger 与 NewLogLogger 的边界。
-
Go encoding/json/v2 默认会忽略结构体中没有对应字段的 JSON 成员。本文用 RejectUnknownMembers 开启严格解码,并通过 SemanticError、ErrUnknownName 与 JSONPointer 定位多余字段。
-
复用同一个结果结构体调用 Go mapstructure 解码时,未出现在新输入中的字段可能继续保留。本文解释默认合并行为,并给出 ZeroFields、重新创建结果对象和 Metadata 的选择方法。
-
os.Root.OpenFile 只允许在已打开的根目录树内访问文件。本文从相对路径、..、绝对路径和 PathError 四个角度解释越界失败的原因,并给出安全的错误处理与选型边界。
-
Go 1.27 的 goroutineleak 画像只报告运行时能证明永久阻塞的一部分 goroutine。本文按 Lookup 参数和 HTTP 路径说明采集方式,并解释全局引用、可运行 goroutine、IO 阻塞及偶发时序为什么不会出现在画像中。
-
Go net/http 的 Server.Protocols 为空时采用默认协议集合;如果服务端只需要 HTTP/1,应显式创建 http.Protocols 并调用 SetHTTP1(true),不要把 nil 配置误认为仅 HTTP/1。本文说明配置写法、集合语义和常见误区。