Go语言技术文章
-
Go 的 encoding/csv 会自动忽略完全空行,但不会把只含空格的行当作空行。本文说明 Comment、TrimLeadingSpace 与 FieldsPerRecord 的取舍,并给出带错误处理的读取示例。401 收藏 -
QueryContext 取消后连接不一定立刻回到连接池。本文从 Rows 生命周期、驱动取消能力和 DB.Stats 观测三个角度定位原因,并给出可复用的释放与排查模板。400 收藏 -
go mod tidy 加入看似未使用的模块,通常是因为它会扫描测试、工具、构建标签和跨平台源码。本文用依赖路径、模块图和可回滚命令说明如何判断该模块是否应该保留。400 收藏 -
Golang · Go教程 | 3天前 | CGO · 资源管理 · Go教程 · runtime.KeepAlive runtime/cgo.Handle Go cgo C库句柄 LockOSThread
Go 封装 C 库句柄时,应让一个包装对象独占 C 指针,以显式且幂等的 Close 负责释放,并用互斥锁处理并发访问。若 C API 依赖线程状态,则用锁定 OS 线程的专属 goroutine 承担创建、调用与销毁。本文同时说明 cgo 指针边界、KeepAlive、回调句柄和发布检查。400 收藏 -
Go 源站关闭 HTTP/2 后客户端仍显示 h2,通常是因为客户端看到的是到 CDN、负载均衡或反向代理的前端连接。本文从逐跳协议边界、Server.Protocols 绑定、直连源站与 r.Proto 证据入手,定位真正仍在使用 HTTP/2 的链路。400 收藏 -
同一套 Go 应用需要随不同构建目标携带不同静态资源时,可以让构建标签选择资源入口文件,再由 embed.FS 把选中的目录编进二进制。本文给出默认版与企业版的组织方式,并让业务层保持统一的 fs.FS 接口。400 收藏 -
Golang · Go教程 | 19小时前 | HTTP · go · Cookie · 跨域 · cors · cookie Go cors net/http SameSite 跨站请求 http.Cookie
Go 的 net/http 可以通过 Cookie.SameSite 表达 Strict、Lax 和 None 三种跨站发送策略,但浏览器是否真正带上 Cookie 还取决于 Secure、fetch credentials 和 CORS。本文从一个跨站会话场景拆开这些配置的职责边界。399 收藏 -
用 Go iter.Seq 封装数据库 keyset 分页,把查询延迟到遍历发生时,并在提前停止、扫描错误和上下文取消时正确结束查询与释放 sql.Rows。398 收藏 -
sync.RWMutex 不支持把 RLock 升级为 Lock,读锁未释放时申请写锁会等待自己释放读锁而形成阻塞。本文用原创代码对比拆分读写临界区与直接使用单写锁的改造方案,并说明重新检查、锁复制和对象生命周期边界。395 收藏 -
pkg.go.dev 的正式 JSON API 可把 Go 包导入路径解析为 modulePath,再分页读取该模块的版本集合。本文给出 curl 与 Go 标准库实现,并说明路径歧义、跨主版本、伪版本、撤回标记、分页令牌和限流的处理方法。394 收藏 -
Go DNS 查询失败时,用 errors.As 找到 *net.DNSError,再区分 IsNotFound、Timeout 与 Temporary,决定停止、有限重试还是继续排查。391 收藏 -
讲清 iter.Pull2 的 next、stop 与外部 Err 查询顺序,用单次键值源示例避免提前退出后的资源泄漏、漏错和并发误用。391 收藏 -
Go 接口里装入 nil 指针后,接口本身通常不等于 nil。本文从动态类型与动态值解释原因,并给出类型断言、反射判断和返回值设计方案。390 收藏 -
unique.Handle 的相等性遵循创建它的 T 值的 Go == 语义;只有当 T 本身是指针时,Handle 相等才可解释为指针值相等,不能泛化为任意原始对象地址相同。390 收藏 -
用 Go flight recorder 在内存中保留故障前的执行轨迹,按慢请求阈值写出一次快照,再用 go tool trace 定位阻塞根因。390 收藏