Go语言技术文章
-
fetch 遇到 404 不进入 catch,是因为请求已经拿到了 HTTP 响应。本文用 response.ok、status 和 JSON 解析示例说明正确的错误处理方式。481 收藏 -
多模块 Go 仓库里,go test ./... 只覆盖当前模块并不一定是测试失效。本文从 go.work、use、replace 和模块边界入手,给出补齐工作区并逐模块测试的实用做法。481 收藏 -
Go 接口类型本身支持比较,但接口里的动态值如果是 slice、map、func,或包含这些字段的数组和结构体,比较相同动态类型的两个接口就可能触发 panic。本文说明判断边界,并给出 reflect.Value.Comparable、reflect.DeepEqual 和类型化比较的选择方法。481 收藏 -
Linux 上用 ss -lntp 可以同时查看监听地址、端口、PID 和进程名。本文解释进程字段缺失的权限原因,并给出按端口、地址族和网络命名空间定位服务的排查方法。481 收藏 -
journalctl 可以把 --unit 和 --boot 组合使用:先用 --list-boots 确认启动轮次,再按服务单元筛选某次启动的日志;最后可用 --since、--until、-n 和输出格式选项缩小排查范围。481 收藏 -
ResizeObserver 回调修改被观察尺寸会形成布局反馈链。本文从循环成因、requestAnimationFrame 调度、期望尺寸守卫和 CSS 容器查询四个方面给出可落地的排查与修复写法。481 收藏 -
Go 用 context.WithValue 传 trace id 时,key 不要直接用 string;用包内私有类型配合类型化存取函数,既能避免跨包碰撞,也能限制值只服务于请求链路。481 收藏 -
本地模型选 4-bit 还是 8-bit,不能只看显存节省。本文用统一基线、固定输入和实际测量比较显存、吞吐、延迟与精度风险,并给出 Transformers 加载示例和部署决策表。481 收藏 -
Go archive/zip 的 Writer.Close 负责写入 ZIP 中央目录,忽略其错误可能把半成品当成成功文件。本文用分层错误处理和临时文件发布说明可靠写法。481 收藏 -
fmt.Errorf 用 %w 包装自定义错误后,调用方可通过 errors.As 找回具体类型;本文解释值接收者、指针接收者、%v 与目标指针的对应关系。481 收藏 -
Go 遍历 tar 归档时,不要只看文件名后缀,而应读取 tar.Header.Typeflag。本文用一套最小遍历代码说明如何识别目录、符号链接和硬链接,并处理 Linkname、Read、io.EOF 及路径安全边界。481 收藏 -
用 Go t.Cleanup 把资源创建与释放登记绑定起来,理解后进先出、父子测试生命周期、提前失败和清理错误记录的实现边界。481 收藏 -
高频循环里反复调用time.After会让计时器无法主动取消。本文用可复用的time.NewTimer演示Stop、排空、Reset和退出清理,并说明Go 1.23前后的Timer语义差异。481 收藏 -
cgroup v2 的 memory.high 是内存使用软阈值,越界后让任务承受回收与节流压力,但不会直接触发 OOM;memory.max 是硬上限,回收失败时可在该 cgroup 内触发 OOM。本文说明两者如何配合及怎样用 memory.events 判断命中哪条线。481 收藏 -
Go net.Resolver 的自定义超时要分成两层:调用 LookupIPAddr 时用 context.WithTimeout 限制整次解析,Resolver.Dial 内部再用 net.Dialer.DialContext 约束连接 DNS 服务的时间。本文给出可复用代码,并说明 PreferGo、StrictErrors、UDP/TCP 与错误判断边界。481 收藏