Go语言技术文章
-
Go finalizer 不是对象销毁通知。短命对象可能仍可达、回调尚未执行、属于零大小或 tiny 批分配、存在引用环,或者进程已退出。本文给出判断边界、KeepAlive 用法和更稳妥的资源释放选择。456 收藏 -
Go pprof 的 alloc_space 看累计分配,inuse_space 看最近一次 GC 后仍存活的内存。同一调用栈排名相反并不矛盾,关键是先确认对象生命周期,再用两个视图交叉判断。211 收藏 -
讲清 Go crypto/tls Config.MinVersion 的最低版本语义,比较 MinVersion 与 MaxVersion 的范围配置,并用 ConnectionState 判断实际协商结果。448 收藏 -
Go GC pacer 变慢不一定是内存泄漏:用 gctrace、运行时指标和 CPU profile 对照回收后存活堆与 GC 工作量,区分堆增长和 CPU 压力,再决定改分配路径还是调参数。161 收藏 -
用 Go 的 net/netip Prefix.Masked 把带主机位的 CIDR 统一成稳定网段键,并说明无效前缀、IPv4 与 IPv6 的处理边界。448 收藏 -
runtime.KeepAlive 不是“调用前保活”开关,而是把对象的可达性保证到它所在的位置。本文用系统调用示例说明放错位置为何仍可能提前回收,以及如何把保护边界放在真正的调用之后。270 收藏 -
介绍 Go net/netip.ParseAddrPort 如何解析 IPv4、IPv6 和数字端口,说明 AddrPort 的字段读取、方括号规则、端口 0 与常见错误处理。177 收藏 -
Golang · Go教程 | 1个月前 | 性能优化 · Go教程 · net/http · 兼容性 · Preload Go net/http ErrNotSupported http.Pusher HTTP/2 Server Push Early Hints
Go 的 http.Pusher 仍可探测,但 Push 在客户端禁用或连接不支持时会返回 ErrNotSupported。更稳的资源加载方案是以最终 HTML 为主,按首屏预算组合 preload 与 103 Early Hints,把 Push 降级为可选加速。484 收藏 -
unsafe.SliceData 对空切片的结果取决于 nil 和 cap:nil 返回 nil,cap 为 0 的非 nil 空切片返回不确定地址,不能直接解引用;cap 大于 0 时才有首个 backing array 元素可谈。222 收藏 -
用 Go net/http Flusher 发送增量响应时,先判断 ResponseWriter 能力,再处理请求取消、写入错误和代理缓冲,避免把 Flush 当成端到端实时保证。165 收藏 -
解释 Go 中 unsafe.Pointer 与 uintptr 的生命周期差异,说明为什么地址整数不能长期保存,并给出受限偏移、真实指针、索引和检查工具的可执行判断方法。330 收藏 -
讲清 Go net/http ServeContent 的 modtime 应该从哪里取、为什么不能用 time.Now,以及大文件下载中的 Last-Modified、条件请求和 Seek 边界。407 收藏 -
Go 的 C 回调不能直接把函数值当作 C 函数指针传递。本文用导出函数、C 网关和 runtime/cgo.Handle 说明如何保持回调引用,并按同步、异步和并发注销场景判断安全释放时机。301 收藏 -
Go 多账号 HTTP 调用要把每个登录身份绑定到独立的 cookiejar.Jar 和 http.Client。本文说明如何复用同一会话、共享 Transport、重置 CookieJar,并用安全的 Cookie 名称检查排查登录态串号。278 收藏 -
解释 Go runtime/cgo.Handle 删除后的有效性边界:C 端继续回传旧句柄时,Go 侧 Value 会触发 panic,并给出回调停止、所有权交接和重复释放的处理方式。345 收藏