程序员茄子
全部
编程
代码
资讯
案例
综合
联系我们
案例
php
mysql
shell
go
vue
css
api接口对接
支付接口对接
5500 个 WordPress 站点里每个 PHP-FPM worker 600MB:一次被当成 DDoS 的 OPcache bug 排障
案例
5500 个 WordPress 站点里每个 PHP-FPM worker 600MB:一次被当成 DDoS 的 OPcache bug 排障
2026-10-27 21:32:25
5500 个 WordPress 站点共用一块 OPcache,每次 Yoast 更新后的 opcache_reset 都在放大 php-src #23859 里的 map_ptr 共享计数,新 worker 从第一个请求起就占 600MB,OOM-killer 轮流杀数据库和 nginx。本文还原用 cgi-fcgi 探针和 /proc/smaps 定位匿名段的过程,以及 restrict_api、process_control_timeout 等缓解手段。
OPcache
PHP-FPM
内存排查
OOM
WordPress
排障案例
PXC 升到 8.0 后每 30 秒一阵巨量磁盘写:Linux 大 folio 遇上 mmap 的 Galera cache
案例
PXC 升到 8.0 后每 30 秒一阵巨量磁盘写:Linux 大 folio 遇上 mmap 的 Galera cache
2026-10-26 21:05:55
PXC 5.7 升 8.0 后各节点每 30 多秒爆发几 GB 磁盘写,MySQL 统计却解释不了。责任线程全落在 Galera 接收与应用线程上,真因是操作系统同时升到内核 6.1:大 folio 加 mmap 写回只能整 folio 刷盘,而 Galera cache 正是 mmap 文件。文里给线程写入占比、自查命令与五种 workaround。
MySQL
运维
Linux
性能排查
parentLocales 与 uloc_getParent 不是一回事:en-GB 的父级是 en-001,ICU 截成 en
案例
parentLocales 与 uloc_getParent 不是一回事:en-GB 的父级是 en-001,ICU 截成 en
2026-10-26 00:04:49
ICU 的 uloc_getParent 只按最后一个下划线截断,CLDR 的 parentLocales.json 里 en-GB 却指向 en-001、zh-Hant 指向 und。本文对照两套 parent 语义,梳理 CLDR 45 把 parentLocales 按 component 分表、新增 nonlikelyScript 规则后,只读显式 locales 列表的代码会在哪个版本开始出错,附可跑的对照脚本与升级自查清单。
parentLocales
CLDR
locale
i18n
ICU
国际化
Java
Intl.DateTimeFormat 的 dateStyle 与单组件互斥:容器里差 8 小时与 hourCycle 的 0/1 起点
案例
Intl.DateTimeFormat 的 dateStyle 与单组件互斥:容器里差 8 小时与 hourCycle 的 0/1 起点
2026-10-25 00:06:07
Intl.DateTimeFormat 有两类不会提示的失败:dateStyle/timeStyle 与 hour、year 等单组件同时写会直接抛 TypeError;timeZone 默认取运行时时区,容器里通常 UTC,服务器与浏览器输出就差 8 小时。文中给出互斥规则与 resolvedOptions 不展开的原因、IANA 与偏移两种时区写法、h11/h12/h23/h24 的起点差异与 hour12 的覆盖顺序,并附一段可跑的断言脚本。
Intl
Intl.DateTimeFormat
i18n
国际化
前端
JavaScript
时区
MF2 随 CLDR 47 转正:数据模型、MF1 语法对照与迁移验证
案例
MF2 随 CLDR 47 转正:数据模型、MF1 语法对照与迁移验证
2026-10-23 00:03:33
MF2 在 CLDR 47 转为 Stable,但 ICU4J/ICU4C 的 message2 仍是技术预览。本文拆开 MF2 的数据模型:声明、matcher 四条合法性约束、Syntax Error 与 Data Model Error 的分层,给出与 MF1 的四处硬差异对照(占位符、复数、转义、兜底)以及 bidi 默认策略对断言的副作用和迁移检查清单。
MessageFormat
MF2
i18n
国际化
ICU
CLDR
本地化
BOM 是 Windows 写进去、在 Linux 炸开的:PowerShell 5.1 默认编码、compose 的 \uFEFFTEST 与 MySQL 1064
案例
BOM 是 Windows 写进去、在 Linux 炸开的:PowerShell 5.1 默认编码、compose 的 \uFEFFTEST 与 MySQL 1064
2026-10-22 00:04:33
带 BOM 的 UTF-8 在 Windows 上一切正常,落到 Linux 的配置解析器、compose 或 MySQL 客户端时 BOM 就变成内容:PowerShell 5.1 的 Out-File/Set-Content 默认编码对照、实测五种写法的开头字节、compose env_file 里键名变成 \uFEFFTEST、compose.yml 报 service 'version'、MySQL 1064 与 Workbench 的原始报错,附字节确认与清洗命令。
BOM
PowerShell
docker-compose
MySQL
字符编码
运维
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
字符编码
ICU 79 升级笔记:UnicodeString 将被标 final、H24 弃用,从 78.3 到 79 要验证的 5 件事
案例
ICU 79 升级笔记:UnicodeString 将被标 final、H24 弃用,从 78.3 到 79 要验证的 5 件事
2026-10-21 00:04:11
按「谁受影响 → 变更细节 → 怎么验证」梳理 ICU 78.3 到 79 的升级路径:ICU4C 要 C++17、ICU4J 最低 Java 11,79 计划把 UnicodeString 等类标 final、弃用 H24 并把周编号统一为 ISO,ICU4J 从 80 起不再保证跨版本 Java 序列化兼容;附 UnicodeSet pattern 解析变化、行断行反向迭代性能修复、tzdata 2026d 与数据裁剪手段。
ICU
Unicode
CLDR
国际化
i18n
升级迁移
代金券回调新增 appid/openid:多公众号共商户号时怎么路由、校验与限频
案例
代金券回调新增 appid/openid:多公众号共商户号时怎么路由、校验与限频
2026-10-20 21:05:24
微信支付 2026-10 更新:代金券消息通知地址可带 appid,核销回调才返回 openid,多公众号共用商户号时必须按 appid 做路由;会员卡模板一批字段必填改选填会让本地校验报错;商品券 display_info 与可用商品编码列表二选一;会员接口限频放宽到 100/秒。
支付对接
微信支付
接口变更
Go
CLDR locale 继承:en-GB 的父级是 en-001,不是 en
案例
CLDR locale 继承:en-GB 的父级是 en-001,不是 en
2026-10-20 00:07:16
CLDR 的 locale 继承不是删最后一个子标签:en-GB 的父级是 en-001,en-AT 要经过 en-150,es-MX 走 es-419,zh-Hant 直接回 und。本文用 5.8KB 的 parentLocales.json 给出真实映射、可运行的继承链代码,以及词条放在哪一层会影响哪些地区。
CLDR
locale
i18n
国际化
en-001
parentLocales
Node.js
Node 上 Intl 输出不一致:CLDR 48 的 unit ID 改名、周编号与 de-CH 分隔符
案例
Node 上 Intl 输出不一致:CLDR 48 的 unit ID 改名、周编号与 de-CH 分隔符
2026-10-20 00:04:18
同一段 Intl 代码在本地和线上输出不一致,多半不是代码问题,而是运行时打包了不同版本的 CLDR。本文给出 CLDR 48 的迁移清单:unit ID 从 permillion 改成 part-per-1e6、周编号改按 ISO、de-CH 分组符变 apostrophe、era code 与 territories 字段删除,并给出用 cldr-json 读数据、在 CI 里做版本与行为快照断言的做法。
CLDR
ICU
i18n
国际化
locale
Node.js
Intl
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
运维
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
Illegal mix of collations(1267/1271):用 COLLATION() 定位比较两侧的真实来源
案例
Illegal mix of collations(1267/1271):用 COLLATION() 定位比较两侧的真实来源
2026-10-17 00:03:36
MySQL/MariaDB 报 Illegal mix of collations(1267/1271)怎么排查:从错误码看两侧 collation 来源,用 COLLATION() 与 information_schema 定位冲突列与连接设置,讲清 MySQL coercibility 与 MariaDB derivation 推导规则、COLLATE 修法的索引代价,以及 uca1400_ai_ci 默认变更带来的新冲突。
collation
排序规则
MySQL
MariaDB
数据库
字符集
运维
utf8mb3 转 utf8mb4:767 字节索引上限、191/768 前缀与 row size 8126 的踩坑记录
案例
utf8mb3 转 utf8mb4:767 字节索引上限、191/768 前缀与 row size 8126 的踩坑记录
2026-10-16 00:03:48
从 utf8mb3 转 utf8mb4 时,内容没问题但表结构常被 InnoDB 的字节上限卡住:COMPACT 行格式 767 字节对应 191 字符前缀、DYNAMIC 行格式 3072 字节对应 768 字符,以及 TINYTEXT/VARCHAR 长度、row size 8126、ER_1071/1709/1118 报错与可执行修复 SQL。
utf8mb4
MySQL
字符集
索引
InnoDB
运维
数据库
emoji
Heron:agent 只读采集、hub 不下发命令的自托管主机监控
案例
Heron:agent 只读采集、hub 不下发命令的自托管主机监控
2026-10-15 20:02:43
Heron 是 Go 写的轻量自托管主机监控:hub 用一个静态二进制加 SQLite 文件存储、展示、告警,agent 只读采集上报。它的安全边界设计值得一读——agent 不照单执行 hub 指令,hub 能影响的只有上报节奏、探测任务、出口地址探测开关和验签后的更新任务。附安装命令与平台限制。
运维
监控
Go
自托管
开源项目
MySQL 排序规则迁移:utf8mb4_0900_ai_ci、89 种 collation 与 5.7 回导报错
案例
MySQL 排序规则迁移:utf8mb4_0900_ai_ci、89 种 collation 与 5.7 回导报错
2026-10-15 01:43:47
MySQL 8.0 把 utf8mb4 默认排序规则从 utf8mb4_general_ci 换成 utf8mb4_0900_ai_ci:拆解 collation 命名后缀、UCA 版本号、89 种 utf8mb4 排序规则从哪来,以及 8.0 建表回导 5.7/5.6 报错、NO PAD 与 PAD SPACE 的差异,给出选型与迁移注意点。
排序规则
collation
MySQL
数据库
字符集
utf8mb4
运维
微信支付合单支付文档更新:sub_orders 字段名没变,语义从「子单」改成了「商品单」
案例
微信支付合单支付文档更新:sub_orders 字段名没变,语义从「子单」改成了「商品单」
2026-10-14 21:02:54
微信支付合单支付把 sub_orders、out_trade_no 的语义描述从「子单」改为「商品单」,字段名没变但业务映射可能理解错。另整理进件地址字段长度放宽、退款 user_received_account 不再展示卡尾号等近期变更。
微信支付
支付接口
API
字段变更
对账
PayZephyr:一个 Payment facade 统一 8 家支付网关的 Laravel 包
案例
PayZephyr:一个 Payment facade 统一 8 家支付网关的 Laravel 包
2026-10-10 21:04:32
PayZephyr 是 Laravel 支付包,用一个 Payment facade 统一 Paystack、Stripe、PayPal、Flutterwave、Square、Monnify、OPay、Mollie 八家网关,支持自动 failover、防重复扣款、签名 webhook、订阅与退款。本文给出支付、回调 verify、订阅与部分退款的代码,并提示退款可能异步结算需查 isPending。
支付
Laravel
PHP
防重放
支付网关
订阅
CAD
用 flamegraph 排查 Workers 生产 CPU/内存:从 cf CLI 抓 profile 到 R2 递归调用优化
案例
用 flamegraph 排查 Workers 生产 CPU/内存:从 cf CLI 抓 profile 到 R2 递归调用优化
2026-10-10 20:04:28
Cloudflare Workers 与 Durable Objects 上线按需 CPU/内存 profiling:cf CLI 或 Dashboard 发起采样、看交互式 flamegraph。文中给出 R2 binding 的真实案例——JSON.stringify 递归 replacer 导致嵌套值重复处理、优化后快 2.7 倍;以及内存案例利用 pprof 定位到部分禁用的 Prometheus 代码占 66.7% 分配,修复后 P999 从 133MB 降到 118MB。
Cloudflare
Workers
性能优化
flamegraph
pprof
Serverless
文件
RSI
函数
OBS
内存
渲染
GEOFlow 3.0.0 部署笔记:开发与生产两套 Docker Compose 流程
案例
GEOFlow 3.0.0 部署笔记:开发与生产两套 Docker Compose 流程
2026-10-01 21:03:08
GEOFlow 3.0.0 是 Laravel 内容工程与多站点分发平台,含 AI 质检队列、托管站点、签名更新。这里记开发与生产两套 Docker Compose 流程、组件与运行要求(PHP 8.3+/PostgreSQL+pgvector/Redis)以及升级注意事项。
Laravel
PHP
Docker
自托管
内容平台
助手
OpenFlare:自托管 OpenResty 控制面,Server 发版本、Agent 拉配置并 reload
案例
OpenFlare:自托管 OpenResty 控制面,Server 发版本、Agent 拉配置并 reload
2026-10-01 21:02:26
OpenFlare 是轻量自托管的 OpenResty 控制面:配置版本化、Agent 自动 openresty -t 校验与 reload 失败回滚、TLS 与域名管理。含 Docker Compose 部署与 Agent 接入脚本、发版流程。
OpenResty
Go
自托管
反向代理
Docker
release-hub:用一份 manifest.json 自托管桌面应用更新,不依赖 GitHub Releases
案例
release-hub:用一份 manifest.json 自托管桌面应用更新,不依赖 GitHub Releases
2026-10-01 21:02:26
release-hub 用单二进制加 SQLite 自托管桌面应用的版本检查与下载分发,提供 manifest.json 契约、Stable/Beta 双 channel、流式 SHA-256。含 Docker + Nginx Proxy Manager 部署与 CI 上传命令。
Go
自托管
Docker
桌面应用更新
SQLite
图标
把图床从 PHP/Laravel 换到 Go:ywty 的 Gin、Nuxt 3 与三种部署方式
案例
把图床从 PHP/Laravel 换到 Go:ywty 的 Gin、Nuxt 3 与三种部署方式
2026-10-01 21:02:26
ywty 把 Lsky Pro+ 从 PHP/Laravel 重写成 Go + Gin + GORM、前端升级 Nuxt 3 SSR。含 30+ 表模型、SQLite/MySQL 双支持、Docker Compose、本地开发与生产三种部署方式与命令。
Go
Nuxt
图床
自托管
Gin
Casbin
CAS
大家都在搜索什么?
devops
易支付
一个官网+多少钱
统一接受回调
统一回调
python
sub
node
宝塔日志
mysql
shell
ElasticSearch
css
vue
api接口对接
2025
支付接口对接
go
php
php回调
上一页
1
2
3
4
5
6
7
下一页
共 7 页
到第
页
确定