Go问答技术文章
-
Go Handler 读取请求体后下游为空,通常是前置组件消费了 Request.Body。本文给出解析一次传递 Payload、兼容旧下游重建 Body,以及大小限制和错误处理方案。442 收藏 -
Golang · Go问答 | 2星期前 | HTTP · go · sse · net/http · net/http WriteTimeout SSE IdleTimeout Go HTTP 长连接空闲超时
Go net/http 的 IdleTimeout 主要管理 keep-alive 连接等待下一个请求,并不是 SSE 消息间隔计时器。本文区分 IdleTimeout、WriteTimeout、Flush、心跳和中间代理策略,给出一套可落地的 SSE 排查与处理方式。442 收藏 -
并发测试里固定随机种子仍可能复现不了同一结果,常见原因是多个 goroutine 共享 Rand 或 Source,调用顺序被调度改变。本文按当前 math/rand 规则解释并发边界,给出局部随机源、种子派生和 rand.Seed 迁移方案。442 收藏 -
Go Background 本身不保存请求值。本文区分派生上下文复用、共享可变对象和取消关系,提供每请求独立关联号中间件,并说明私有键、WithoutCancel 与后台任务的数据边界。442 收藏 -
Go netlink的AttributeDecoder.Type返回基础类型,TypeFlags返回高位标志。通过离线属性示例说明位掩码、网络字节序、Nested与Flag的区别,以及载荷解析约束。442 收藏 -
Go 泛型约束中的 int 只匹配精确的 int 类型,~int 才会接纳底层类型为 int 的命名类型。本文用最小代码和类型集合说明两者差异。441 收藏 -
Golang · Go问答 | 1个月前 | Context · 并发控制 · Go问答 · Go 资源清理 sync.Once context.WithCancel context.CancelFunc
Go 的 CancelFunc 可以被多个 goroutine 重复调用,但这不代表文件、连接和事务清理也天然幂等。本文用统一停止入口、等待工作退出和 sync.Once 设计多入口收尾,说明取消信号与资源释放的边界。441 收藏 -
讲清 Go sync.WaitGroup 的计数快照、Add 与 Wait 的竞态边界,以及动态派生任务和 WaitGroup.Go 的安全用法。441 收藏 -
go vet 的 copylocks 检查会提醒你:包含互斥锁、Once 或 WaitGroup 的值不应沿着参数、返回值、赋值和 range 路径被复制。本文用最小结构体说明告警边界,并给出指针接收者、指针集合和 CI 检查的修复方式。441 收藏 -
Go cgo 构建遇到 undefined symbol 时,先用 go build -x 找到实际链接输入,再按 -L 搜索路径、-l 库名、依赖顺序和 pkg-config 逐项定位。本文只讨论 #cgo LDFLAGS 与链接器输入。441 收藏 -
Go race 无报告不能证明全程序并发正确。本文从包范围、实际路径和共享对象排查覆盖盲区,给出并发用例结构与测试参数,并区分数据竞争检测和业务断言。441 收藏 -
Go 定时任务最容易被忽略的问题不是如何按时触发,而是上一次还没结束时下一次又开始。本文用 context、超时和退出确认设计一个不会重叠执行的任务循环,并说明失败、取消和告警怎么收口。440 收藏 -
Go 服务调整 TLS 最低版本后旧客户端握手失败,通常不是证书单一问题,而是双方允许的协议版本没有交集。本文用 tls.Config、MinVersion、MaxVersion 和连接状态说明如何定位,并给出隔离旧客户端入口的兼容策略。440 收藏 -
Go 客户端自定义 TLS 拨号或按 IP 连接时,ServerName 缺失会破坏主机名校验与 SNI 证书选择。本文区分拨号地址、证书身份和根证书信任,给出 http.Transport 与 tls.Client 的安全修复写法。440 收藏 -
Go 子切片不会复制底层数组,长期保存一个很小的窗口也可能让大数组持续可达。本文从 len、cap 和引用关系入手,说明何时必须复制、full slice expression 能解决什么,以及如何避免缓存和结构体字段继续持有旧数组。440 收藏