Go语言技术文章
-
Go 把大文件全部 embed 后,资源会进入最终可执行文件,直接放大发布体积;启动影响则取决于操作系统映射、首次读取和业务解码。本文给出构建对比、内存边界和资源拆分方法。289 收藏 -
用 Go 的 fs.FS 抽象统一前端资源访问,开发期读取本地目录,发布期切换到 embed.FS,兼顾热更新、路径安全、缓存和测试。275 收藏 -
Go 的 //go:embed 在目录模式下会递归排除点号或下划线开头的文件。本文对比目录、星号与 all: 三种模式,解释嵌套隐藏文件、模块边界和构建失败规则,并给出 WalkDir 排查方法。444 收藏 -
用一个嵌入资源适配层同时解决 Go 静态模板打包、目录前缀隔离和单元测试替换问题。文章给出 embed.FS、fs.Sub、template.ParseFS、fstest.MapFS 与 fstest.TestFS 的完整工程写法。230 收藏 -
C 回调进入 Go 时,关键不是猜线程会不会变化,而是明确运行时接入、线程局部状态、C 指针生命周期、cgo.Handle 和停机顺序。271 收藏 -
Golang · Go教程 | 6天前 | docker · CGO · Go教程 · CGO_ENABLED Docker Buildx cgo交叉编译 Go交叉编译镜像 多架构镜像 GNU交叉编译器
面向含 cgo 的 Go 项目,比较关闭 cgo、交叉编译器镜像和原生多架构节点三种路线,给出 amd64/arm64 GNU 工具链映射、多阶段 Dockerfile、Buildx 构建与可重复性验收方法。480 收藏 -
cgo 的固定边界成本、指针与转换规则会在细碎调用中被放大。本文用调用计数、基准和 profile 分层定位,并示范把逐元素调用改成安全的批量接口。361 收藏 -
用 C.CBytes、C.GoBytes 和 C.free 划清 Go 与 C 的字节缓冲区所有权,避免异步保存 Go 指针造成悬空引用。379 收藏 -
C 位于 Go 垃圾回收器的对象图之外,不能在 cgo 调用结束后随意保存普通 Go 指针。本文从 GC 可追踪性、固定内存和嵌套指针三个不变量出发,对比同步借用、复制到 C 堆、runtime.Pinner 与 runtime/cgo.Handle,并给出代码、风险表和审计清单。236 收藏 -
Golang · Go教程 | 6天前 | CGO · 资源管理 · Go教程 · runtime.KeepAlive runtime/cgo.Handle Go cgo C库句柄 LockOSThread
Go 封装 C 库句柄时,应让一个包装对象独占 C 指针,以显式且幂等的 Close 负责释放,并用互斥锁处理并发访问。若 C API 依赖线程状态,则用锁定 OS 线程的专属 goroutine 承担创建、调用与销毁。本文同时说明 cgo 指针边界、KeepAlive、回调句柄和发布检查。400 收藏 -
第三方 Go 模块停止维护后,不要只看更新时间做决定。本文从 API 兼容性、修复责任和迁移成本出发,比较替换、分叉与适配器隔离三种方案,并给出 go.mod、fork 和 govulncheck 的落地检查点。357 收藏 -
Go 服务处理外部输入时,不能只校验 JSON 格式。本文给出请求体长度、字段格式与时间、并发资源预算三层限制的最小写法、错误映射和复查清单。325 收藏 -
安全扫描通过不等于 Go 服务已经安全。本文说明 govulncheck、go vet、竞态检测和模糊测试各自能证明什么、有哪些盲区,并给出分层 CI 门禁与复查清单。126 收藏 -
用 go list -m -u -json all 生成 Go 模块清单,再用 govulncheck -json ./... 保存漏洞结果,在持续集成中按调用栈、修复版本和周期任务持续跟踪依赖安全。244 收藏 -
Go 依赖扫描命中漏洞但 govulncheck 未发现可达调用时,本文给出升级与临时豁免的判断矩阵、证据清单、到期机制和复扫方法。127 收藏