Go问答技术文章
-
Go JSON 时间字段可通过自定义 UnmarshalJSON 兼容有限格式,并显式约定无时区输入的含义。本文给出字段存在性、null、错误反馈和 UTC 统一回写的完整示例。214 收藏 -
Go json.Decoder 可能在 Decode 时提前读取底层 Reader。本文用 Buffered、io.MultiReader 和边界检查,把尚未消费的字节安全交给后续流式解析。376 收藏 -
Go encoding/json 默认解码会让 JSON 缺失字段、null 和零值在部分类型上落到相同结果。本文用指针、json.RawMessage 和自定义包装类型,逐步保留字段存在性、null 状态与有效零值。138 收藏 -
Go HTTP Server 流式下载应优先监听 r.Context().Done(),并把取消信号传给上游数据源;ResponseWriter.Write 错误作为补充信号,及时停止读取并释放资源。158 收藏 -
Go http.Server.ErrorLog 的类型是 *log.Logger,适合接收连接错误、Handler 异常和底层文件系统错误。本文用并发安全的 io.Writer 适配器把标准库消息输出为 JSON 行,并区分访问日志与 ConnState 的职责边界。411 收藏 -
Golang · Go问答 | 1天前 | go · Context · 服务端 · net/http · Go http.server context.Context 请求上下文 BaseContext ConnContext
Go http.Server.BaseContext 用于为一个监听器接收的请求提供统一根 context,默认是 context.Background()。本文用最小示例说明它与 ConnContext、Request.Context 的区别,以及取消、返回 nil 和多监听器场景的边界。393 收藏 -
Go net/http 解析 Set-Cookie 时,无法映射到 Cookie 已知字段的属性会以原始片段进入 Unparsed;语法错误则通过 error 返回。本文说明怎样读取 Unparsed、如何记录未知属性,以及为什么不能把 Cookie.String 当作未知属性的回写器。209 收藏 -
Go http.Transport 的 WriteBufferSize 控制 Transport 写入网络连接时使用的缓冲区。本文说明零值默认行为、共享 Transport 的配置方式、按连接评估内存代价,以及哪些问题不该靠调大写缓冲解决。434 收藏 -
Go HTTP Transport 复用连接时,应分别设置空闲池预算、每目标总连接上限与超时。通过共享客户端小项目说明响应体处理、httptrace 观察及 HTTP/2 下的取舍。227 收藏 -
Go HTTP 超时不能只看一条错误字符串:context deadline、http.Client.Timeout 和 Transport 阶段超时的触发范围不同。本文按请求边界、错误链和连接阶段给出区分方法。344 收藏 -
Go HTTP 请求应把 context 超时绑定到 Request,并在拿到响应后关闭 Response.Body;循环调用时复用同一个 http.Client,让 Transport 有机会复用持久连接。395 收藏 -
Go HTTP 请求超时后仍占资源,通常不是 context 取消失效,而是请求、响应体、连接复用和业务 goroutine 的清理职责没有分开。本文用可执行示例说明正确的取消与关闭方式。172 收藏 -
Go time.After 只能返回接收通道。本文用单次所有者模式解释 NewTimer 与 context 取消、Stop 清理、同时就绪及 Go 1.23 语义差异。231 收藏 -
在重复等待场景中,time.After 适合一次性超时;需要复用和动态调整时,应持有 time.NewTimer 返回的 Timer,并按 Go 版本选择正确的 Reset 与清理方式。214 收藏 -
使用 Go runtime/metrics 读取 runnable、running、waiting 与 live goroutine 指标,区分近似值和总量,并用连续采样判断运行队列压力,避免把单次高点误判为泄漏或根因。306 收藏