Go语言技术文章
-
Go 服务 CPU 没满但请求排队、延迟升高,可能是共享锁竞争而不是算力不足。本文按运行手册说明如何判断信号、短时开启 mutex profile、定位持锁路径、做低风险修复并验证回归。395 收藏 -
Golang · Go教程 | 3星期前 | go · 性能 · net/http · HTTP缓存 · Go ETag If-None-Match 304缓存 http.ResponseWriter
Go 服务返回静态 JSON 或文章详情时,ETag 可以让浏览器先带 If-None-Match 询问资源是否变化,未变化就返回 304,减少响应体传输。本文用 net/http 写一个可运行的缓存协商示例,说明哈希生成、条件判断、响应头顺序和测试边界。395 收藏 -
自旋锁不能用sync.Mutex替代,因其底层会主动让出P而非纯自旋;真需自旋须用atomic手写,且仅适用于纳秒级临界区、单核/低并发场景,必须配合runtime.pause()退避、严格使用CompareAndSwapInt32获取锁、StoreInt32释放锁,避免竞态与CPU空转。394 收藏 -
Go语言需通过bazil/fuse调用内核FUSE模块实现真实挂载,因os/fs或net/http无法响应内核VFS请求;挂载点必须为空目录、进程常驻、权限正确,且所有handler需recoverpanic。394 收藏 -
让新结构体满足旧interface的关键是通过适配器模式精准转发调用,不篡改语义、不新增逻辑,严格遵循方法集规则和接收器类型匹配,并避免导出内部字段以维护封装性。394 收藏 -
GoCDK无法直接统一多云对象存储,因其blob.OpenBucket对各云鉴权、区域、Endpoint差异化处理缺失,且国产云不兼容AWSS3URL格式与签名机制。394 收藏 -
GoHTTP客户端需调优http.Transport参数以发挥Keep-Alive效果:合理设置MaxIdleConns、MaxIdleConnsPerHost、IdleConnTimeout及TCPKeepAlive,复用Client实例,读取并关闭resp.Body,监控连接状态,并按场景决定是否禁用Keep-Alive。394 收藏 -
Golang · Go教程 | 2星期前 | WEB开发 · go · net/http · 表单 · html/template · net/http URL参数 html/template 安全输出 Go教程 查询表单
服务端渲染的列表页并不只是读一个 q 参数:筛选条件要能回填,空结果要有明确状态,用户输入也不能直接拼进 HTML。本文用 Go net/http、url.Values 和 html/template 做一个可运行的筛选表单,并整理参数边界与安全输出检查。394 收藏 -
用time.Ticker配合map做滑动窗口计数会丢数据,因定时清理导致边界请求(如第59.8秒请求在第60秒被误删)未被统计;真正可行的是保留时间戳动态过滤或采用环形数组分片+懒清理机制。393 收藏 -
gotest-runTestName可快速运行指定测试函数,支持正则匹配,但需注意大小写、导出规则、函数签名、包路径、buildtags及Windows引号转义等问题。393 收藏 -
Go语言中反射可动态获取接口变量的类型和值,通过reflect.ValueOf()和reflect.TypeOf()遍历结构体字段与方法,仅能访问导出字段(首字母大写),适用于序列化、ORM等场景。393 收藏 -
default分支使select非阻塞:当所有case均不可立即执行时立即执行default,而非等待;它不参与case竞争,也不提供超时能力,仅反映当前无就绪channel。393 收藏 -
缓存装饰器本质是闭包封装函数工厂+map存储结果,需注意map并发安全、key类型敏感、泛型正确使用及按场景选sync.Map或RWMutex。393 收藏 -
sync.Cond 的 Wait、Signal 和 Broadcast 不是消息队列,正确用法是持锁检查条件、循环等待,并在状态变化后通知。本文用任务队列示例解释信号丢失、虚假唤醒和关闭退出的处理边界。393 收藏 -
Golang · Go问答 | 2星期前 | go · 性能排查 · net/http · HTTP客户端 · httptrace · DNS tls 连接复用 httptrace Go问答 HTTP请求慢
Go HTTP 客户端变慢时,只看总耗时无法判断卡在 DNS、建连、TLS 还是服务端响应。本文用 httptrace.ClientTrace 采集分段时间,结合连接复用标记和最小复查清单,定位一次请求变慢的真正环节。393 收藏