程序员茄子
全部
编程
代码
资讯
案例
综合
联系我们
Go 相关技术文章(第3页)
php
mysql
shell
go
vue
css
api接口对接
支付接口对接
go fix 换了分析器名:waitgroup 改成 waitgroupgo,CI 里那行 -run 会静默失效
编程
go fix 换了分析器名:waitgroup 改成 waitgroupgo,CI 里那行 -run 会静默失效
2026-10-23 21:05:56
Go 1.27 的 go fix 新增 atomictypes、embedlit、slicesbackward、unsafefuncs 四个 modernizer,删掉 fmtappendf,waitgroup 改名 waitgroupgo。本文给出 -diff 审查流程、CI 脚本适配,以及为什么改了名却不报错。
Go
工具链
CI
订单状态机的状态语义与恢复路径:Closed 可恢复,Cancelled 只退款
编程
订单状态机的状态语义与恢复路径:Closed 可恢复,Cancelled 只退款
2026-10-23 00:03:59
把订单的「已关闭」和「已取消」合成一个终态,支付回调晚到就只能人工对账。这篇按 orderflow 的六状态枚举和 CanTransitionTo 迁移表,拆开两条恢复路径:Closed 先 QueryOrder 复核、校验金额,再走独立的 CASReopenPaid 逆向恢复并触发 OnReopened;Cancelled 保持不动,只以 (order_no, trade_no) 唯一键写退款 outbox。附 CAS 条件更新 SQL、OnPaid 失败停在 Paid 的 fallback 重扫,以及状态机适用边界。
订单状态机
状态机
支付回调
订单关单
CAS
幂等
Go
Go 1.27.2 的两个 CONNECT 连接错位问题:反向代理侧怎么排查和处置
编程
Go 1.27.2 的两个 CONNECT 连接错位问题:反向代理侧怎么排查和处置
2026-10-22 21:04:31
Go 1.27.2 修掉两个 CONNECT 连接错位:客户端 Transport 把带 body 的 CONNECT 发出去后又把连接放回空闲池,服务端返回 2xx 却没 hijack 时继续按 HTTP 读。说明触发条件、共享 Transport 下的跨用户响应投毒与请求走私、自查命令和缓解方式。
Go
net
http
反向代理
安全
升级 Go 1.27 后 JSON 接口的行为变化:v1 默默接受的输入,v2 默认报错
编程
升级 Go 1.27 后 JSON 接口的行为变化:v1 默默接受的输入,v2 默认报错
2026-10-22 21:02:02
Go 1.27 把 encoding/json 换成了 v2 后端:非法 UTF-8、对象内重复键从「静默容错」变成报错。整理两类输入的表现差异、错误文案变化的排查方式、jsontext 流式校验、v1 语义 Options 与 GOEXPERIMENT=nojsonv2 兜底,以及 format/unknown/inline 等选项的移除与改名。
Go
encoding
json
JSON
升级兼容
投诉回调收不到、回复一直 400、complete 调早了:微信支付消费者投诉 2.0 服务端排障
代码
投诉回调收不到、回复一直 400、complete 调早了:微信支付消费者投诉 2.0 服务端排障
2026-10-22 09:02:14
投诉单在商户后台看得到、系统里却收不到,回复接口一直返回 400,complete 调早了被用户重复投诉——这三件事都出在微信支付消费者投诉 2.0 的服务端对接细节上。文中说明回调地址必须先调创建接口、通知解密后只有 complaint_id 与 action_type、5 秒应答与重投的幂等处理、response 接口四种 400 的成因(含文档 500/200 字符不一致),以及未收到回调时怎么用详情/列表接口补单。
微信支付
支付对接
接口排障
Go
客诉处理
BOM 的消费端:shell 报 Exec format error、Go 报 illegal byte order mark、JSON 解析停在第 0 位
案例
BOM 的消费端:shell 报 Exec format error、Go 报 illegal byte order mark、JSON 解析停在第 0 位
2026-10-22 00:03:42
同一个 EF BB BF,在导出侧是 Excel 认 UTF-8 CSV 的必需品,在消费侧却让内核 execve 返回 ENOEXEC、Go 编译器报 illegal byte order mark、JSON.parse 在第 0 位失败。整理字节层确认方法、shell/Go/Python/Node/Jackson/PHP 的行为对照表,以及 sed 去 BOM、CI 检查与 .gitattributes 不管 BOM 的边界。
BOM
UTF-8
字节序标记
Shell
Go
JSON
字符编码
支付宝要 7 个字符 success,微信要空响应体:支付异步通知的应答语义与重试时间表
编程
支付宝要 7 个字符 success,微信要空响应体:支付异步通知的应答语义与重试时间表
2026-10-22 00:03:29
同一套 JSON 响应封装发给支付宝和微信,三家全判失败:支付宝要响应体只有 success 七个字符,微信 APIv3 要 200/204 空报文,V2 要 XML return_code=SUCCESS。整理三家应答语义、25h/8 次与 24h4m 的重试节奏,以及 ACK 之前必须先落库的原因与 Go/PHP handler 骨架。
异步通知
支付回调
notify_url
接口对接
Go
PHP
幂等
Go 1.27.3 / 1.26.10:crypto/x509 拉黑中间证书后的升级与排查
编程
Go 1.27.3 / 1.26.10:crypto/x509 拉黑中间证书后的升级与排查
2026-10-21 21:04:37
Go 1.27.3 与 1.26.10 在 crypto/x509 里加入中间证书 denylist,Verify 会过滤整条链,对应 CVE-2026-111943。本文说明受影响区间、为什么只升系统 CA 包不够、Go 1.27 起 SystemCertPool 尊重 SSL_CERT_FILE 的变化,并给出验证代码与 toolchain 固定写法。
Go
安全升级
TLS
Go 1.27 的 Transport 自动排空未读响应体:getStatus 从 710ms 降到 150ms
代码
Go 1.27 的 Transport 自动排空未读响应体:getStatus 从 710ms 降到 150ms
2026-10-21 20:02:32
Go 1.27 让 net/http.Transport 在 Close 时异步排空未读的 HTTP/1 响应体(最多 50ms 或 256KB),只取状态码的 getStatus 从 710ms 降到 150ms。文章讲清未读 body 为何阻断连接复用、json.Decoder 少读一个换行的影响、手工排空从无界 io.Copy 到有界异步的演进,并附 Go 1.27.2 与 1.26.9 的 20 请求连接数实测矩阵、背靠背请求竞态与主动断连的三种写法。
Go
net
http
性能优化
HTTP
四家支付回调收敛到一个入口:/pay/notify/{channel} 的实现笔记
代码
四家支付回调收敛到一个入口:/pay/notify/{channel} 的实现笔记
2026-10-21 09:02:28
微信 v3、支付宝、Stripe、PayPal 的回调应答语义和验签材料完全不同,四份 handler 复制来复制去就会串:支付宝返回 JSON 就被判失败并重试 8 次,原始 body 被 JSON 中间件吃掉就验签不过。文章给出统一入口的分层、四家验签与应答对照表、channel+event_id 幂等表、Go 接口与关键代码,以及回调乱序与查单兜底。
支付接口
回调
Go
Stripe
微信支付
幂等键
PayPal webhook 验签失败与收不到回调:从四段待签串查到 443 投递
代码
PayPal webhook 验签失败与收不到回调:从四段待签串查到 443 投递
2026-10-21 09:01:17
PayPal 回调已经到账却验签不过,或者干脆收不到,通常是两件事:待签串 transmissionId|timeStamp|webhookId|crc32 里 webhook_id 取错、CRC32 写成十六进制、用了重新序列化的 body;以及 443 入站被拦。文章给出 Go 自校验实现、证书白名单与缓存、25 次/3 天重试下的幂等做法,以及 Order/Capture 双生命周期该在哪个状态发货。
PayPal
webhook
验签
支付接口
Go
staticcheck 抑制告警的三条路://lint:ignore 必填 reason,配置排除却不算「无用指令」
编程
staticcheck 抑制告警的三条路://lint:ignore 必填 reason,配置排除却不算「无用指令」
2026-10-21 00:03:42
Go 编译器几乎没有 warning 这一级,逻辑告警全靠 go vet 与 staticcheck。这篇拆 staticcheck 的三条抑制路径:staticcheck.conf 的 checks/inherit 合并、//lint:ignore 行级指令(reason 必填、只作用于下一行)、//lint:file-ignore,以及「没匹配到的指令会被当成问题报出来」「配置禁用的检查不算无用指令」这些反咬细节,最后给出从基线到只拦新增的清理顺序。
warnings
staticcheck
Go
代码质量
lint
lock
编译器替你 free:GOEXPERIMENT=runtimefreegc 的插入条件、16 字节阈值与收益边界
编程
编译器替你 free:GOEXPERIMENT=runtimefreegc 的插入条件、16 字节阈值与收益边界
2026-10-20 21:06:14
Go 的 runtimefreegc 实验让编译器在能证明对象已死的位置插入 runtime.free,减少 GC 扫描对象。本文讲它想省掉哪段工作、为什么阈值定在 16 字节、与 Go 1.25 栈分配 32 字节阈值方向相反的关系,以及哪些场景会纯亏,附 gotip 基准写法。
Go
GC
编译器
性能
代金券回调新增 appid/openid:多公众号共商户号时怎么路由、校验与限频
案例
代金券回调新增 appid/openid:多公众号共商户号时怎么路由、校验与限频
2026-10-20 21:05:24
微信支付 2026-10 更新:代金券消息通知地址可带 appid,核销回调才返回 openid,多公众号共用商户号时必须按 appid 做路由;会员卡模板一批字段必填改选填会让本地校验报错;商品券 display_info 与可用商品编码列表二选一;会员接口限频放宽到 100/秒。
支付对接
微信支付
接口变更
Go
Stripe 拒付处理:due_by=0 不是今天到期,证据只交一次就锁死
代码
Stripe 拒付处理:due_by=0 不是今天到期,证据只交一次就锁死
2026-10-20 09:01:57
接 Stripe 拒付最容易在三个地方写错:把 due_by=0 当成今天到期、把整份证据 hash 一次性提交、在争议开放期间还去调退款。这篇按 Dispute 状态机拆开讲,给 Go 的 webhook 幂等落库与到期扫描代码,并算清 received fee / countered fee / compliance 500 美元押金的退还口径。
Stripe
支付对接
拒付处理
webhook
Go
Go 1.28 的七个集合提案:Union 为什么要拆成两个函数,Get 和 At 又在争什么
编程
Go 1.28 的七个集合提案:Union 为什么要拆成两个函数,Get 和 At 又在争什么
2026-10-19 21:02:30
Go 集合工作组 Issue #80590 的七个提案:container/set、mapset、hash.Map/Set、tree.Map、heap/v2,以及 Go 1.27 已落地的 hash/maphash.Hasher。重点讲 Union/UnionWith 拆分、Get 与 At 的命名争议、DeleteFunc 必须进接口的复杂度原因。
Go
泛型
标准库
集合
用 go build -toolexec 拦下每次 compile:计时、改源码、往 importcfg 里塞包
代码
用 go build -toolexec 拦下每次 compile:计时、改源码、往 importcfg 里塞包
2026-10-18 21:01:44
go build -toolexec 会把包装程序插到 compile、link、asm、cgo 之前。文中给出最小计时器实现、importcfg 的目录与格式、追加 import 的两步做法,以及 Go 1.27 的 @file 响应文件、stdversion vet 检查等直接影响包装程序的变化。
Go
构建
工具链
gopls v0.24.0:交互式重构走 LSP 扩展,ptrtoerror 抓 E 与 *E 混用
代码
gopls v0.24.0:交互式重构走 LSP 扩展,ptrtoerror 抓 E 与 *E 混用
2026-10-18 21:01:37
gopls v0.24.0 支持 LSP 3.18 与交互式重构:struct tag、实现接口、移动声明都改成多步对话框。新增 ptrtoerror 分析器专抓 E 与 *E 都实现 error 导致的静默失败,另有 slicesclip、reflecttypeassert 等 modernizer 与 Go 1.28 的 string(x) 迁移。
Go
工具链
静态分析
Backup Center:Laravel + Go Agent 做多机网站备份,存储按 YYYYMMDD 归档
案例
Backup Center:Laravel + Go Agent 做多机网站备份,存储按 YYYYMMDD 归档
2026-10-18 20:02:23
一台 Center 加每机一个 Go Agent,把网站备份统一调度到 S3/SFTP/WebDAV。记录一键脚本的环境变量与 OpenVZ/LXC 兼容坑、Agent 的 systemd 接入、tag 触发的发布流程,以及 README 没交代的一致性、加密、去重三个待验证点。
自托管
备份
Laravel
Go
Docker
运维
20 字限制卡住一个 👨👩👧👦:emoji 的码点、字节与 grapheme cluster
编程
20 字限制卡住一个 👨👩👧👦:emoji 的码点、字节与 grapheme cluster
2026-10-18 00:04:23
表单「20 个字」限制被一个家庭 emoji 撑爆、按码点截断后渲染成方块,是编码层最常见的错位。这篇把 emoji 的 7 种编码形式(VS16、肤色修饰、ZWJ、区域指示符、tag、keycap)和三种长度口径拆开,给出 Go/PHP/JS 按 grapheme cluster 计数与截断的可执行写法,以及 utf8mb4 列宽、排序规则与终端宽度上的边界。
emoji
Unicode
字符编码
Go
PHP
前端工程
Excel 双击 UTF-8 CSV 全是「涓枃」:BOM 写在哪一步,写了为什么还是乱码
案例
Excel 双击 UTF-8 CSV 全是「涓枃」:BOM 写在哪一步,写了为什么还是乱码
2026-10-18 00:04:03
后端导出的 UTF-8 CSV 用 Excel 双击打开中文全是「涓枃」:Excel 按系统 ANSI 代码页解码,只认文件开头的 BOM。给出 PHP/Python/Node/Go 写 BOM 的正确位置,四种「写了 BOM 反而更乱」的真实原因与字节级验证方法,以及中文文件名走 filename*=UTF-8'' 的处理方式,最后说明何时该弃 CSV 改 xlsx。
乱码
CSV导出
字符集
UTF-8
BOM
Excel
PHP
Python
Go
重试不是越多越好:出站 HTTP 客户端的分类、full jitter 与每依赖预算
编程
重试不是越多越好:出站 HTTP 客户端的分类、full jitter 与每依赖预算
2026-10-17 21:31:29
调用第三方 API 出问题时,最常见的错误是就地加重试。本文给出一套出站 HTTP 客户端的重试策略:按状态码和幂等性分类、带抖动的指数退避、正确合并 Retry-After、为每个依赖设置重试预算与并发隔离,并附一份可直接用的 Go 实现。
接口对接
HTTP
Go
重试
稳定性
Go 1.27 泛型方法:能链式调用,但反射扫不到它
编程
Go 1.27 泛型方法:能链式调用,但反射扫不到它
2026-10-17 21:04:39
Go 1.27 泛型方法的两条边界:接口方法不能声明类型参数、泛型方法也实现不了接口;以及由此带来的反射盲区——NumMethod 里看不到泛型方法,序列化/ORM/RPC 框架会漏 API。附链式调用与官方原因解释。
Go
泛型
反射
语言特性
Go 1.27 的 encoding/json 换内核:升级后默认行为变了,any 解析反而更慢
编程
Go 1.27 的 encoding/json 换内核:升级后默认行为变了,any 解析反而更慢
2026-10-17 21:03:50
Go 1.27 的 encoding/json 变成 json/v2 的兼容层后,升级即生效的行为差异:非法 UTF-8 报错、字段名大小写敏感、nil slice 变 []、[]byte 变 base64、Duration 无默认格式;以及解到 any 反而慢 1.5 倍的原因和渐进迁移顺序。
Go
JSON
版本升级
性能
大家都在搜索什么?
devops
易支付
一个官网+多少钱
统一接受回调
统一回调
python
sub
node
宝塔日志
mysql
shell
ElasticSearch
css
vue
api接口对接
2025
支付接口对接
go
php
php回调
上一页
1
2
3
4
5
6
7
…
23
下一页
共 23 页
到第
页
确定