Go语言技术文章
-
Type=notify 不把进程启动当成服务就绪,而是等待服务通过 NOTIFY_SOCKET 发送 READY=1。本文用一个最小 Python 服务和 unit 文件说明通知时机、NotifyAccess=main、检查命令、启动超时与回滚边界。436 收藏 -
Go 的 encoding/json 没有给某个字段单独绑定 Reader 的接口。本文用自定义 UnmarshalJSON 检查字段字节数,再在 HTTP 入口限制整个请求体,说明字段超限、请求体超限、语法错误和类型错误的处理边界。436 收藏 -
从 Ingress 迁移到 Gateway API 时,不要只替换资源名称。本文用一条订单路由说明 Gateway、监听器、HTTPRoute、TLS Secret 与 Service 的映射,并介绍如何用 ingress2gateway 发现遗漏、保留新旧入口并行以及按状态条件安排切换。436 收藏 -
Go 1.27 将标准库 Unicode 数据升级到 17.0.0。本文用 unicode.Version、分类表和 UTF-8 校验搭出兼容处理方案,并说明旧工具链、字体与终端显示之间的边界。436 收藏 -
围绕 Go net/http 的 Response.Body.Close、EOF、Transport 连接池和 HTTP/1.x 复用边界,整理响应体未完全读取时的排查与处理方案。436 收藏 -
Go HTTP/1 服务端默认可能先消耗未读请求体再写响应,ResponseController.EnableFullDuplex 可让 handler 按需交替读取请求体与写出响应。本文说明调用位置、ErrNotSupported 处理、Flush 的职责,以及 HTTP/2 和代理缓冲的边界。436 收藏 -
Go 1.27 及更高版本中,go mod tidy 会整理多个 require 块。本文区分块布局、间接标记和模块版本变化,说明如何用 -diff 判断是否只是格式整理。436 收藏 -
Go work sync 没有更新某个模块的 go.sum,通常不是命令失效,而是它同步的是 workspace build list 到各模块的 go.mod;workspace 独有的校验记录由 go.work.sum 保存。本文按文件职责和命令边界说明如何判断结果。436 收藏 -
解释 Go 循环中的 defer 为什么不会在每轮迭代结束时执行,并给出局部函数封装资源释放的实用写法。436 收藏 -
围绕 Kubernetes 1.37 Garhwal 的版本偏差、cgroup v1 默认限制、API 与插件兼容,说明如何建立分批升级、暂停条件、恢复责任和通知记录。436 收藏 -
Go 反射中判断类型是否实现接口,应使用 reflect.Type.Implements。本文说明如何构造接口类型、处理 T 与 *T 的方法集差异、规避 nil 和非接口参数问题,并比较 Implements 与 AssignableTo 的适用场景。436 收藏 -
PHP PDO::FETCH_GROUP 只需把分组字段放在 SELECT 第一列,再和 FETCH_ASSOC 组合传给 fetchAll,就能得到按字段索引的嵌套数组。本文说明数组结构、排序、空值和 FETCH_UNIQUE 的区别。436 收藏 -
用 Go expvar.Func 发布只读动态指标:理解读取时回调、JSON 返回值、Publish 注册、/debug/vars 接入,以及并发和性能边界。436 收藏 -
Go ast.Inspect 返回 false 只跳过当前子树。本文用原创函数声明筛选示例,解释 found 标记、nil 退出通知,以及用 ast.Preorder 和 break 结束迭代的区别。436 收藏 -
Go reflect.MapIter.Reset 传入 reflect.Value{} 可以解除迭代器对原 map 的引用,但不会清空 map 或强制垃圾回收。本文说明遍历结束后的脱钩位置、迭代器复用条件,以及其他引用仍存活时的边界。436 收藏