程序员茄子
全部
编程
代码
资讯
案例
综合
联系我们
go 相关技术文章
php
mysql
shell
go
vue
css
api接口对接
支付接口对接
Go 1.26 实验包 runtime/secret:函数返回时清空寄存器与栈,堆要等 GC
编程
Go 1.26 实验包 runtime/secret:函数返回时清空寄存器与栈,堆要等 GC
2026-11-13 21:02:11
Go 1.26 的实验包 runtime/secret 让一段处理密钥的代码跑在 secret 模式下:返回时同步清空寄存器与栈,堆分配则要等 GC 判定不可达后才擦除。本文记录它的启用方式、平台限制(仅 Linux amd64/arm64)、为什么手写清零会被编译器优化掉,以及哪些场景值得用。
Go
安全
运行时
内存
Go 1.26 的 go fix 重写:与 go vet 同框架,`//go:fix inline` 能做源码级 API 迁移
编程
Go 1.26 的 go fix 重写:与 go vet 同框架,`//go:fix inline` 能做源码级 API 迁移
2026-11-13 21:01:34
Go 1.26 把 go fix 彻底重写:旧历史 fixer 全删,改跑 go vet 同一套分析框架,靠几十个 modernizer 把代码迁到现代写法;新增 //go:fix inline 可把调用点直接替换成函数体,用来做 API 迁移。附 CI 顺序、diff 过大怎么拆、go mod init 降低默认 go 版本等副作用。
Go
工具链
重构
迁移
Go 1.28 小 key 哈希从 AES 换成 wyhash:swissmap 转正后,旧 map 基准不再可比
编程
Go 1.28 小 key 哈希从 AES 换成 wyhash:swissmap 转正后,旧 map 基准不再可比
2026-11-12 21:04:33
Go 1.28 把 map 小 key 的哈希从 AES 换成 wyhash,阈值按微架构不同:Zen 4 是 8 字节、Apple M1 Max 是 16 字节,arm64 的延迟阈值还没做。同时 swissmap 成为唯一实现,mapaccess2 被内联进 mapaccess1,interface key 的哈希折入动态类型 typehash。文章说明为什么这意味着旧 map 基准不再可比、GOEXPERIMENT=swissmap 失效。
Go
运行时
哈希表
性能
Go 1.28 开发分支:复合字面量按目标类型省略,函数参数、append、switch 已支持
编程
Go 1.28 开发分支:复合字面量按目标类型省略,函数参数、append、switch 已支持
2026-11-12 21:03:06
Go 1.28 开发分支已经落地讨论十年的提案 #12854:复合字面量在目标类型可推断时可省略元素类型,覆盖 struct 字面量、函数参数、append、copy、delete、switch 和与有类型操作数的比较。文中列出已合入的 CL、仍走旧规则的边界(两侧都无类型的比较)、go 指令决定语言版本,以及用 -lang 对比验证的办法。
Go
语言提案
类型推断
编译器
Go 1.27.4 / 1.26.11 修 12 个 CVE:先重建 net/http 服务,再处理 --sysroot 构建失败
编程
Go 1.27.4 / 1.26.11 修 12 个 CVE:先重建 net/http 服务,再处理 --sysroot 构建失败
2026-11-12 20:02:30
Go 1.27.4 与 1.26.11 一并修 12 个 CVE:11 个在 cgo 构建链,1 个是 net/http 里 MaxBytesReader 超限时写 Connection: close 的竞态崩溃。前者要换工具链、后者要重新构建并重部署。附 12 个 CVE 对照表、--sysroot 与 -target 被拒后交叉编译报 invalid flag 的两种修法及取舍、用 toolchain 行钉补丁版本,以及 govulncheck 查不到标准库点版本时如何确认。
Go
安全
CVE
cgo
构建
只下交易账单永远对不上银行到账:微信资金账单里的手续费与逐笔余额
代码
只下交易账单永远对不上银行到账:微信资金账单里的手续费与逐笔余额
2026-11-12 09:02:51
对账时订单数对得上、金额却总差一截,差额正好等于当天手续费——因为只下了交易账单。这篇讲微信资金账单 /v3/bill/fundflowbill 与 tradebill 的口径差:一笔支付在资金账单里是「交易收入 + 手续费支出」两行,充值/提现/分账/代金券只在资金账单里;三个账户(BASIC/OPERATION/FEES)要分别下、分别校验。附 Go 解析片段:每行字段前的反引号怎么剥、汇总行怎么识别、用账户结余做逐笔连续性校验,以及记账时间不等于退款成功时间、3 QPS、次日 10 点后取、只保留近三个月这些边界。
微信支付
对账
资金账单
Go
CSV
验签总差在 `%21` 和 `!` 之间:空格、`~`、`!` 在三套 URL 编码规则里的分歧
编程
验签总差在 `%21` 和 `!` 之间:空格、`~`、`!` 在三套 URL 编码规则里的分歧
2026-11-12 00:04:04
同一串参数值在 PHP urlencode、rawurlencode、Go QueryEscape、PathEscape、JS encodeURIComponent 下输出不同:空格是 + 还是 %20、~ 是 %7E 还是原样、! 编不编码。附五函数输出对照、Go 源码里的 encodePathSegment 分支,以及签名验签不一致时的逐层排查顺序。
URL编码
PHP
Go
JavaScript
签名
接口对接
lazysql:用 Vim 键位在终端连库,跑完 SELECT 就回代码
编程
lazysql:用 Vim 键位在终端连库,跑完 SELECT 就回代码
2026-11-11 21:33:01
lazysql 是 Go 写的终端数据库客户端,Vim 键位 + 三栏 TUI,支持 MySQL/PG/SQLite/MSSQL/ClickHouse。这篇记录安装、连接串与 TOML 配置写法,以及 ReadOnly 只读开关为什么要给生产库打开。
lazysql
Go
MySQL
PostgreSQL
终端工具
Go 1.27 升级笔记:编译能过,先响的是 vet、gofmt 和 go.mod diff
编程
Go 1.27 升级笔记:编译能过,先响的是 vet、gofmt 和 go.mod diff
2026-11-11 21:06:37
Go 1.27 的语言没有变动,升级后先响的是工具链:go test 默认跑 stdversion vet、go mod tidy 会把重复 require 块并成两块、gofmt 的列对齐判定改了会带来空白 diff、go tool trace 只传端口时只绑 localhost。文章还覆盖 vet 对 %w 包指针的新报告和已移除 GODEBUG 开关的处理,并给落地顺序。
Go
工具链
CI
升级
聊天记录分桶存进 MongoDB:一条消息占 1/100 个文档,位置全靠算
编程
聊天记录分桶存进 MongoDB:一条消息占 1/100 个文档,位置全靠算
2026-11-10 21:34:51
聊天记录用 MongoDB 分桶存储:一个文档 100 条消息,(seq-1)/100 定文档、(seq-1)%100 定下标;Kafka 重复消费靠先 update 后 insert 的幂等状态机兜住;撤回、删除、已读用三个标签在读时投影,群消息只存一份。
Go
MongoDB
架构
Do 返回之后请求体还在被读:Go http.Transport 的 data race,vmagent 留着它、vmauth 必须修
编程
Do 返回之后请求体还在被读:Go http.Transport 的 data race,vmagent 留着它、vmauth 必须修
2026-11-10 21:33:51
Go 的 http.Transport 在独立 goroutine 里写请求体,Do 返回时它可能还在读你复用的缓冲。复现 race 报告、讲清 writeLoop/readLoop/roundTrip 的时序,再对比 vmagent 故意保留与 vmauth 必须修的判断依据:共享的是字节还是游标。
Go
并发
调试
Go 1.27 的 crypto/mldsa:签名 2420 字节,落到 TLS、JWT 和数据库列宽时的取舍
编程
Go 1.27 的 crypto/mldsa:签名 2420 字节,落到 TLS、JWT 和数据库列宽时的取舍
2026-11-10 21:04:58
Go 1.27 的 crypto/mldsa 把 FIPS 204 的 ML-DSA 带进标准库,API 很直白,麻烦在体积:公钥 1312 字节、签名 2420 字节起步。本文给出三组参数的确切字节数、Context 与确定性签名的用法、FIPS 模块下的报错,以及 TLS 握手、JWT 头部、数据库列宽三处真实取舍。
Go
密码学
TLS
JWT
goroutineleak profile:在 Go 1.27 生产环境定位卡在 channel 和锁上的 goroutine
编程
goroutineleak profile:在 Go 1.27 生产环境定位卡在 channel 和锁上的 goroutine
2026-11-10 20:03:05
Go 1.27 把 goroutineleak profile 转为正式特性:借 GC 三色标记的可达性分析,找出永久阻塞在 channel、select 或 sync 原语上的 goroutine。本文给出采集方式(net/http/pprof 的 /debug/pprof/goroutineleak 或 runtime/pprof)、pprof list 定位到具体发送行、四种真实泄漏模式(并发 worker 早返回、double send、timeout select、range 未 close)的修复方法,以及三条漏报限制和最坏 O(n²) 的性能代价。
Go
并发
pprof
性能
排查
Fleetd v0.3.0:让软路由主动连回后台,命令权限留在客户端
编程
Fleetd v0.3.0:让软路由主动连回后台,命令权限留在客户端
2026-11-10 20:01:42
Fleetd 是一个 MIT 开源自托管的服务器与软路由管理工具,v0.3.0 首版。本文拆它的几个设计取舍:客户端主动连回服务端以穿透 NAT、新机器先指纹批准、远程命令三级权限(monitor/allowlist/full)放在客户端本地、浏览器签名加客户端公钥校验、客户端更新用签名发布包,以及 Docker Compose 试用步骤和默认配置的注意事项。
Fleetd
运维
自托管
OpenWrt
Go
容器 OOMKilled,pprof heap 却只有 14.5MB:先把 Go 进程的内存账拆开
编程
容器 OOMKilled,pprof heap 却只有 14.5MB:先把 Go 进程的内存账拆开
2026-11-10 00:04:35
容器 OOMKilled 但 pprof heap 只有十几 MB,是统计对象混了:RSS 包含栈、runtime 元数据、未归还 OS 的 span 与 cgo/mmap,Go heap 只占其中一块。给出三分支判定表(非泄漏 / 泄漏 / churn)、heap 与 allocs 四视图与 ?gc=1 做差命令、GOMEMLIMIT 的计量口径与三条失效边界,以及该告警的 runtime/metrics 指标。
内存排查
Go
pprof
GOMEMLIMIT
运维
Argon2id 的 m 写在 hash 串里:一次 verify 可能吃掉 1 GiB,Go 和 PHP 都不拦
编程
Argon2id 的 m 写在 hash 串里:一次 verify 可能吃掉 1 GiB,Go 和 PHP 都不拦
2026-11-10 00:04:33
PHC 串自带 m/t/p,verify 只能按串内参数重算,于是「一次验证分配多少内存」由数据决定,不由你的配置决定。Go x/crypto/argon2 只拦 time/threads 过小、对 memory 无上界,libargon2 的结构校验上界约 0xFFFFFFFF 个 block;外部导入或被人写过的 hash 行就可能让一次校验吃掉 1 GiB。文内给可运行的 Go PHC 解析 + 策略钳制 + constant-time 比较代码,以及下界(弱 hash 植入)与存储、并发侧的落地检查。
Argon2id
密码哈希
PHC
Go
PHP
安全
ingestr 增量策略的两个坑:默认是 replace,delete+insert 缺边界就静默跳过
编程
ingestr 增量策略的两个坑:默认是 replace,delete+insert 缺边界就静默跳过
2026-11-10 00:03:46
ingestr 的 --incremental-strategy 默认是 replace,不是增量;delete+insert 依赖 --interval-start/--interval-end,边界既没显式给、又推不出来时会跳过 delete 和 insert 且不报错。附策略语义、incremental-key 该用哪类列、truncate+insert 移除后的升级、merge 的 NULL 主键差异与定位手段。
ingestr
数据摄取
增量同步
数据库迁移
Go
MySQL
PostgreSQL
Go 1.28 给子进程加 Landlock:在 fork 与 execve 之间收紧权限
编程
Go 1.28 给子进程加 Landlock:在 fork 与 execve 之间收紧权限
2026-11-09 21:33:17
Go 1.28 把 Landlock 接进 syscall.SysProcAttr:UseLandlock、LandlockFD、LandlockFlags、NoNewPrivs 四个字段在 fork 与 execve 之间生效,只限制子进程,父进程不受影响,os/exec 和 os.StartProcess 都能用。但 Go 只负责应用 ruleset,不负责创建;Landlock 不支持时创建会直接失败,不会静默跳过。文中给出用 x/sys/unix 建 ruleset 并禁掉子进程建目录的可运行示例,以及这种沙箱管不到继承 fd、不替代容器的边界。
Go
Landlock
Linux
沙箱
安全
从 v3 迁到 go-yaml v4:改导入路径只是第一步,缩进和 Node 钩子会先暴露问题
编程
从 v3 迁到 go-yaml v4:改导入路径只是第一步,缩进和 Node 钩子会先暴露问题
2026-11-09 21:31:57
go-yaml v4.0.0 稳定版把 gopkg.in/yaml.v3 送进只收安全修复的状态。迁移时改导入路径只能算第一步:Dump 默认 2 空格缩进加紧凑序列,和 Marshal 的 4 空格输出不等价,要 WithV3Defaults()+WithLineWidth(-1) 才对得上;NewLoader/NewDumper 构造函数会返回 error;用 *yaml.Node 的自定义 UnmarshalYAML 钩子会直接报迁移错误,转换错误也从 *yaml.TypeError 变成 *yaml.LoadErrors。
Go
YAML
go-yaml
迁移
序列化
maps.Grow 进了 Go 1.28 草案:给 map 预留容量,少搬几次 bucket
编程
maps.Grow 进了 Go 1.28 草案:给 map 预留容量,少搬几次 bucket
2026-11-09 21:02:59
make(map, n) 的 n 只在创建时生效,已存在的 map 没有预留手段。maps.Grow 已进 Go 1.28 草案,按「还将插入多少项」预分配,减少扩容搬 bucket。文中给合并 http.Header、配置 map 的写法,以及三类没用的场景和内存代价。
Go
性能优化
map
版本前瞻
Go 1.27 的 encoding/json/v2:重复键和非法 UTF-8 从静默通过变成报错
编程
Go 1.27 的 encoding/json/v2:重复键和非法 UTF-8 从静默通过变成报错
2026-11-09 21:02:04
Go 1.27 的 encoding/json/v2 默认拒绝对象内重复键与字符串中的非法 UTF-8,而 encoding/json 底层已换成 v2 实现,行为保留但错误文案变了。文中给对比代码、Options 退回 v1 语义的用法,以及配置合并、旧字段兼容这两类最容易炸的场景。
Go
JSON
版本升级
错误处理
Go 1.27.3 的 LICM 把 unsafe.Pointer 加法提到 if 外,栈增长时撞上 fatal error
编程
Go 1.27.3 的 LICM 把 unsafe.Pointer 加法提到 if 外,栈增长时撞上 fatal error
2026-11-09 20:02:09
golang/go#82865:被 if o != nil 保护的 unsafe.Add 地址计算,被 Go 1.27 新增的 LICM pass 提到 guard 之外并 spill 到栈槽;循环里的调用一旦触发栈增长,栈扫描器看到 0x20 就直接 fatal error: invalid pointer found on stack。根因是 pass 只检查 IsPtr() 而漏掉 TUNSAFEPTR。含 reproducer、六个触发条件与 workaround。
Go
编译器
unsafe
运行时
tbls 接进 CI:diff 只比 Markdown,删表残留与 SVG 噪音是两个真坑
编程
tbls 接进 CI:diff 只比 Markdown,删表残留与 SVG 噪音是两个真坑
2026-11-09 00:03:56
把 tbls 接进 CI 后最容易忽略的三处判定:tbls diff 只对比 Markdown 文档、--force 不删除已删表遗留的 md(要 --rm-dist 才闭合)、ER 图默认 svg 让 git diff 变成噪音。附 lint 依赖数据库注释、SQL Server 兼容级别 110、json:// 离线生成等实测口径。
tbls
数据库文档
CI
Go
MySQL
PostgreSQL
Go 1.28 的复合字面量类型省略:整个字面量的类型开始由目标类型推断
编程
Go 1.28 的复合字面量类型省略:整个字面量的类型开始由目标类型推断
2026-11-08 21:07:35
Go 1.28 把复合字面量的类型省略从元素位置扩展到由目标类型推断整个字面量:函数调用实参、append/copy/delete、switch 都进入范围,两侧都不是 typed 的比较仍退回旧机制。文中按 CL 列出覆盖面,以及工具链、gopls 与代码生成器需要同步升级的原因。
Go
语言特性
工具链
大家都在搜索什么?
devops
易支付
一个官网+多少钱
统一接受回调
统一回调
python
sub
node
宝塔日志
mysql
shell
ElasticSearch
css
vue
api接口对接
2025
支付接口对接
go
php
php回调
上一页
1
2
3
4
5
6
7
…
25
下一页
共 25 页
到第
页
确定