Go语言技术文章
-
讲清 Go time.ParseInLocation 在夏令时重复本地时间中的边界:固定 IANA 时区,保存 Zone、offset、IsDST、原始文本和 UTC 瞬间,避免把两次出现的本地时间误当成同一条记录。320 收藏 -
Go http.Transport 设置 DisableKeepAlives 后吞吐下降,通常是连接复用被关闭,重复承担建连、TLS 握手和连接调度成本。本文解释它与 TCP keepalive 的区别,并给出复用、限额和清理空闲连接的配置取舍。350 收藏 -
Go 的 time.Parse 没有时区时按 UTC 解释文本,time.ParseInLocation 则按传入 Location 解释。本文用同一日期、IANA 时区和比较方法说明两者差异及常见坑。156 收藏 -
讲清 Go http.Transport 的 IdleConnTimeout 如何按 keep-alive 空闲时长回收连接,并区分连接数量、响应头等待、请求总超时和主动清理。396 收藏 -
Go time.ParseInLocation 适合解析不带时区的业务时间字符串。本文对比 time.Parse 的 UTC 默认行为,说明如何加载 IANA 时区、统一存储 UTC,并处理偏移、缩写和夏令时边界。372 收藏 -
Go 服务端 Handler 通常不需要手动关闭 http.Request.Body,HTTP Server 会在请求结束时负责收尾;真正必须由调用方关闭的是客户端 Response.Body。本文按生命周期拆开这两个容易混淆的责任边界。387 收藏 -
Go gzip.Writer.Flush 会让流式数据更早可见,但高频调用会同步写出、增加同步标记并切碎压缩批次。本文给出消息边界、HTTP 缓冲和压测判断方法。472 收藏 -
Go 的 http.Request.GetBody 不是所有请求都会自动生成,只有客户端 NewRequest 识别的标准 reader 才会填充。本文区分客户端与服务端边界,并给出自定义 Body 的安全重放写法。212 收藏 -
讲清 Go compress/gzip 的 Header.Name 如何写入 gzip 文件头、何时设置才生效、字符限制是什么,以及它与输出文件路径的区别。332 收藏 -
Go 服务端中间件读取 http.Request Body 后,下游为什么只能拿到空内容?关键在于 Body 是一次性读取流,读取后要用缓存字节重建 Request.Body,并同时控制请求体大小与错误分支。484 收藏 -
Go 的 gzip.Reader 默认会把拼接成员连续解压。若要逐个读取,先关闭 Multistream;每个成员读到 io.EOF 后调用 Reset,再次关闭 Multistream,并确保底层 Reader 实现 io.ByteReader。382 收藏 -
Go 的 embed 在编译期读取资源;交叉编译不会自动改写同一文件,平台差异应通过构建约束选择不同源文件。168 收藏 -
Go archive/zip 的 Writer.Close 负责写入 ZIP 中央目录,忽略其错误可能把半成品当成成功文件。本文用分层错误处理和临时文件发布说明可靠写法。481 收藏 -
交叉编译后不要只看构建机上的 GOOS 和 GOARCH。本文用 go env、文件格式、go version -m 和 build ID 四层证据,确认最终二进制实际面向的操作系统与 CPU 架构。396 收藏 -
Go 的 archive/zip 中,File.Open 返回的是带解压与校验边界的 io.ReadCloser。读取成员后应关闭它;如果外层使用 OpenReader 打开压缩包,还要另行关闭外层 ReadCloser。390 收藏