Go问答技术文章
-
讲清 Go http.CookieJar 中 Domain 为空与显式 Domain 的区别,结合 HostOnly、Path、Secure 和 PublicSuffixList 给出 Cookie 投递范围排查方法。289 收藏 -
讲清 Go http.Client 如何借助 CookieJar 在重定向中按域名、路径和安全属性保留正确 Cookie,并给出公共后缀列表、CheckRedirect 与排查清单。206 收藏 -
Go HTTP 超时不一定发生在服务端处理阶段,本文用错误链、Client/Transport 参数和 httptrace 阶段日志,定位 DNS、建连、TLS、响应头或响应体读取层。124 收藏 -
区分 Go HTTP 请求超时与 Transport 空闲连接回收,给出连接池参数、共享 Transport 和主动清理的排查方法。120 收藏 -
Golang · Go问答 | 2星期前 | net/http · Go问答 · ReadTimeout ReadHeaderTimeout Go HTTP 超时 http.Server 超时配置 Go 请求头超时
Go 的 HeaderTimeout 实际对应 http.Server.ReadHeaderTimeout。本文用一组 http.Server 配置说明如何把请求头、完整请求读取、响应写出和 keep-alive 空闲预算分开设置,并指出两个读取超时不相加的边界。266 收藏 -
Go 更新接口中,缺失字段、JSON null 和空字符串不是同一种含义。本文用 json.Decoder 与 json.RawMessage 保留字段存在性,再映射为可校验的三态结构,避免 PATCH 请求误覆盖数据。293 收藏 -
Go json.Decoder 将 JSON 解码到 interface{} 时,数字默认会变成 float64。本文用 UseNumber 保留 json.Number,再按业务需要转换为 int64、float64 或字符串,并比较结构体、动态 map 与 RawMessage 的适用边界。474 收藏 -
Go 的 JSON 结构体解码默认会忽略未知字段。本文用 json.Decoder 的 DisallowUnknownFields 配置严格检查,并说明兼容旧客户端、区分类型错误与未知字段错误的落地方法。373 收藏 -
Go bufio.Reader 的 UnreadByte 只能回退最近一次成功读取的一个字节;Peek、Discard 和 WriteTo 不会建立可回退状态,回退成功后也不能再次调用。把试探读取封装为 ReadByte、判断、必要时单次回退的连续协议,可避免缓冲位置错乱。245 收藏 -
Go bufio.Reader 处理超长行时,关键是识别 ReadLine 的 isPrefix 语义并复制拼接片段;普通按行读取可用 ReadString 或 ReadBytes,同时设置单行大小上限,避免把缓冲片段误当成完整记录。107 收藏 -
用 bufio.Reader.Peek 预读固定长度协议头时,读取位置不会前移;继续使用同一个 Reader 消费正文即可。文章同时给出复制预读字节、处理 ErrBufferFull 与 io.EOF 的边界方案。478 收藏 -
Scanner.Buffer 并不是把 token 变成无限大。Go 扫描长行时还要考虑 max、初始 cap、换行符空间、Buffer 调用时机和自定义 Split,本文给出排查顺序与 Reader 替代方案。383 收藏 -
Golang · Go问答 | 2星期前 | go · Go File.WriteAt 并发写 Go 文件分片写入 Go os.File 并发安全 Go WriterAt 不重叠区间 Go O_APPEND WriteAt
Go 的 os.File 可以被多个 goroutine 并发调用,但 File.WriteAt 是否安全取决于写入区间、打开模式、缓冲区生命周期和错误处理。本文用分片写入示例说明可行边界。307 收藏 -
Go 的 File.Sync 只针对已经打开的文件描述符提交数据和文件元数据,临时文件 Rename 后的目录项仍属于父目录。本文拆分三层持久化边界,并给出 Go 的安全替换写法与平台注意事项。489 收藏 -
Go 的 initialization cycle 不是运行时偶发错误,而是包级变量的依赖无法排出合法初始化顺序。本文用直接引用、函数体传递引用和三种拆环方案说明如何定位与修复。350 收藏