Go语言技术文章
-
MySQL 在线 DDL 仍可能被元数据锁阻塞。本文用 sys.schema_table_lock_waits 和 performance_schema.metadata_locks 定位持锁事务,并通过 lock_wait_timeout、ALGORITHM 和 LOCK 设定可控的变更失败边界。216 收藏 -
还原 MySQL 死锁等待关系,需要逐项对应事务、持有锁、请求锁和冲突资源,不能只看当前 SQL。本文给出关系表和 Performance Schema 查询,并解释实时快照、间隙锁及重试边界。387 收藏 -
数据库 · MySQL | 3星期前 | MySQL · 事务 · InnoDB · Serializable READ COMMITTED REPEATABLE READ MySQL事务隔离级别 一致性读 InnoDB快照
从 InnoDB 快照建立时机入手,比较四种事务隔离级别对一致性读、并发提交和锁定读的影响,并给出两个会话的最小验证模板。317 收藏 -
MySQL JSON_TABLE 单独用普通 PATH 取值时,字段缺失和 JSON null 都可能表现为 NULL;增加 EXISTS PATH 列记录路径是否出现,再结合取值列即可区分三种输入状态。124 收藏 -
用 ROW_NUMBER 按业务字段分组、按时间和唯一键倒序,再在外层筛选 rn=1,即可取得每组最新完整记录。本文给出 CTE 示例,并解释并列时间、状态过滤位置及性能边界。275 收藏 -
用 MySQL JSON_TABLE 和 NESTED PATH 展开嵌套数组,分清 FOR ORDINALITY、ON EMPTY、ON ERROR、EXISTS PATH 以及空数组产生的 NULL 行。335 收藏 -
Go plugin 无法跨任意构建环境直接复用。本文按错误阶段解释工具链、共享依赖源码、构建参数和动态库差异,给出统一构建、符号加载与成套升级回退的方法。418 收藏 -
Go 项目把 interface API 迁移到泛型时,不能只看代码是否编译。本文用共享测试表、最小泛型约束和并行适配层,比较旧接口与泛型实现的输出、错误、零值和边界行为,帮助你分阶段完成迁移并保持测试等价。423 收藏 -
Go 程序在 arm64 上变慢时,不能只看一组 benchmark 就认定是编译器问题。本文先固定代码、输入和环境,再用 amd64/arm64 对照、同机 Go 工具链对照、CPU profile 和指令集实验,把性能下降归因到业务代码、标准库、运行时或编译器生成代码。231 收藏 -
Go 交叉编译时报找不到系统库,通常不是 GOOS 或 GOARCH 本身写错,而是项目进入了 cgo 路径却没有目标平台的 C 编译器、头文件或链接库。本文按纯 Go 与 cgo 两条边界给出排查和构建方案。445 收藏 -
Go json/v2 迁移不能只替换 import。本文区分工具链升级与语义切换,梳理字段匹配、空值、omitempty 和严格输入风险,给出兼容选项示例及发布回退清单。384 收藏 -
Go 1.22 改变了 for 循环变量的作用域,旧版测试尤其是 t.Parallel 子测试可能从误通过变成真实失败。本文用最小配方解释 go.mod、GOEXPERIMENT=loopvar 与 go vet 的协作方式,帮助你安全完成迁移。266 收藏 -
Go 1.16 将 io/ioutil 的能力分散到 io 和 os。本文按函数职责整理 ReadFile、ReadDir、ReadAll、临时文件等迁移方式,并说明 DirEntry 与 FileInfo 的兼容边界。151 收藏 -
Go toolchain 自动下载失败时,可以根据项目是否允许升级,选择 GOTOOLCHAIN=local 或 go1.x.y+path 固定本地工具链,并检查 go.mod、go.work 与 PATH 中的版本关系。103 收藏 -
Go 依赖升级后出现接口不兼容,先不要盲目回退。本文用 go.mod、go list -m、go mod graph 和编译错误把问题分成导入路径变化、公开 API 断裂与间接依赖切换三类,再给出回退、迁移和兼容适配的选择方法。176 收藏