程序员茄子
全部
编程
代码
资讯
案例
综合
联系我们
编程
php
mysql
shell
go
vue
css
api接口对接
支付接口对接
杀掉 MySQL 主库后的两秒:ProxySQL + Orchestrator 异步复制故障切换实验
编程
杀掉 MySQL 主库后的两秒:ProxySQL + Orchestrator 异步复制故障切换实验
2026-10-20 20:01:15
用 Docker 起一套 MySQL 8.4.11 + ProxySQL + Orchestrator 实验室,故意 docker kill 主库,逐秒记录 2 秒零吞吐、4 个失败事务的切换过程;并复现两个 failover hook 的真实 bug(admin 只能本地连接、LOAD MYSQL SERVERS TO RUNTIME 加载过期表让从库短暂变 writer)与提升后重启又变只读的坑。
MySQL
ProxySQL
Orchestrator
高可用
运维实战
在 RDS 上跑 pt-osc:ERROR 1419、参数组重启与 --recursion-method 假死
编程
在 RDS 上跑 pt-osc:ERROR 1419、参数组重启与 --recursion-method 假死
2026-10-20 00:06:37
在 Amazon RDS / Aurora 上跑 pt-online-schema-change,失败点不在 DDL 而在权限模型和工具默认行为:开自动备份就有 binlog,建触发器被 ERROR 1419 挡住,而 RDS 不允许 SET GLOBAL,只能新建 custom 参数组并重启;接着缺 PROCESS 权限、--recursion-method 自动发现从库导致进程挂死(PTDEBUG 停在 MasterSlave:4350 SELECT @@SERVER_ID);最后清理时 DROP 顺序搞反会撞上 ERROR 1146。
pt-online-schema-change
MySQL
RDS
Aurora
OnlineDDL
权限
Percona
AES-256-GCM 字段加密后 WHERE email=? 查不到:用 HMAC 盲索引补搜索,以及 4 个上线前缺口
编程
AES-256-GCM 字段加密后 WHERE email=? 查不到:用 HMAC 盲索引补搜索,以及 4 个上线前缺口
2026-10-20 00:04:37
手机号、邮箱做字段级加密后,随机 nonce 让密文失去可比性,登录查询和唯一约束同时失效。这篇用 PHP 的 AES-256-GCM 加 HMAC-SHA256 盲索引还原等值查询,给出建表结构、索引同步陷阱,并划清哪些列(低基数、password_hash、金额、时间)根本不该加密。
敏感信息加密
AES-256-GCM
盲索引
数据脱敏
PHP
VueUse v15 升级笔记:templateRef 被删、timer 换成 scheduler,还有 6 处会改行为的变更
编程
VueUse v15 升级笔记:templateRef 被删、timer 换成 scheduler,还有 6 处会改行为的变更
2026-10-20 00:04:32
面向已在生产使用 Vue 3 + VueUse 的项目:v15 要求 Vue 3.5、Node 22,templateRef 移除改用 useTemplateRef,timer 选项统一为 scheduler,useThrottleFn 的 trailing 默认改为 true,useEventSource 的 message 事件与 useIDBKeyval 跨标签页同步都会改变现有行为。逐项给出改法与回归顺序。
VueUse
Vue3
组合式函数
前端升级
pt-osc 中断之后:残留触发器、卡在 MDL 上的 DROP TRIGGER 与 3.6.0 的 --resume
编程
pt-osc 中断之后:残留触发器、卡在 MDL 上的 DROP TRIGGER 与 3.6.0 的 --resume
2026-10-20 00:03:55
pt-online-schema-change 被 kill 或 critical-load 中止后,原表会留下三个 pt_osc_* 触发器、一张拷了一半的 _table_new,以及 3.6.0 才有的 history 进度记录。本文讲残留物怎么核对清理、DROP TRIGGER 为什么会被 MDL 卡住一年(lock_wait_timeout 默认 31536000)、触发器没删却把新表 drop 造成 ERROR 1146 的失败顺序,以及 --history/--resume 的四个前提与局限。
pt-online-schema-change
MySQL
OnlineDDL
DDL
Percona
触发器
故障恢复
ghcr.io 拉镜像报 unauthorized / denied / manifest unknown:按凭据→权限→名字的顺序排查
编程
ghcr.io 拉镜像报 unauthorized / denied / manifest unknown:按凭据→权限→名字的顺序排查
2026-10-20 00:03:47
ghcr.io 拉镜像失败的三种形态(401 unauthorized / 403 denied / 404 manifest unknown)怎么区分:先用 docker logout 清本地坏凭据,再用 /token 换 token 打 manifest 接口定位是凭据还是权限;GitHub 侧要查包可见性、包与仓库链接的继承开关、组织 PAT 生存期策略、Actions 的 Manage Actions access,以及 K8s imagePullSecrets 里过期 token 的表现。
GHCR
Docker
容器镜像仓库
GitHub
认证
权限
运维
批量 UPDATE 撑大 binlog cache:临时文件、1197 报错与排查顺序
编程
批量 UPDATE 撑大 binlog cache:临时文件、1197 报错与排查顺序
2026-10-19 21:06:02
单个事务的 binlog 事件超过 binlog_cache_size 后会落到 tmpdir 临时文件,磁盘悄悄被吃掉;超过 max_binlog_cache_size 还会报 1197。含状态变量比值读法、tmpdir 排查顺序、按主键分批与 binlog_row_image 的取舍。
MySQL
运维
binlog
事务
Redis 8.4 XREADGROUP CLAIM:一条命令同时取空闲 pending 和新增条目
编程
Redis 8.4 XREADGROUP CLAIM:一条命令同时取空闲 pending 和新增条目
2026-10-19 21:04:19
Redis 8.4 给 XREADGROUP 加了 CLAIM min-idle-time,一次调用同时认领空闲 pending 与读取新增条目,替掉 XAUTOCLAIM 加 XREADGROUP 的两段式消费循环。含旧循环对照、阈值与重试预算的换算、XPENDING 监控与幂等边界。
Redis
消息队列
Streams
运维
PHP 8.6 的 PASSWORD_BCRYPT_SHA256:先做 HMAC-SHA256,避开 bcrypt 的 72 字节截断
编程
PHP 8.6 的 PASSWORD_BCRYPT_SHA256:先做 HMAC-SHA256,避开 bcrypt 的 72 字节截断
2026-10-19 21:03:04
bcrypt 只读前 72 字节,长密码会被静默截断。PHP 8.6 新增 PASSWORD_BCRYPT_SHA256:先 HMAC-SHA256 再送 bcrypt,沿用 Passlib 方案。含生成/校验写法、列宽与 password_needs_rehash 迁移顺序、与旧 bcrypt 不兼容的边界。
PHP
密码哈希
bcrypt
安全
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
泛型
标准库
集合
Redis 8.4 给 SET 加了 IFEQ/IFDEQ:条件写可以替代手写 Lua 乐观锁
编程
Redis 8.4 给 SET 加了 IFEQ/IFDEQ:条件写可以替代手写 Lua 乐观锁
2026-10-19 21:01:23
Redis 8.4 的 SET 新增 IFEQ/IFNE/IFDEQ/IFDNE 条件写,配合 DIGEST、DELEX、MSETEX 就能替代手写 Lua 做乐观锁与条件批量。含命令示例、返回值语义、字节比较与集群限制,以及仍该用 Lua/WATCH 的场景。
Redis
乐观锁
CAS
Lua
缓存
Laravel 13.36:长驻 worker 跑过一个写任务后,后面一万个任务的读都压在主库
编程
Laravel 13.36:长驻 worker 跑过一个写任务后,后面一万个任务的读都压在主库
2026-10-19 20:02:53
Laravel 13.36 允许队列 worker 在任务之间清掉粘性数据库连接。讲清 sticky 为什么把长驻 worker 的读一直钉在主库、新开关 Worker::$flushStickyConnections 怎么开、打开后复制延迟与任务依赖的代价,以及判断要不要开的三个核对点。
Laravel
PHP
队列
MySQL
读写分离
Inertia v3 上线踩的 8 个坑:409 版本冲突、303 重定向与被 CDN 吃掉的 Vary 头
编程
Inertia v3 上线踩的 8 个坑:409 版本冲突、303 重定向与被 CDN 吃掉的 Vary 头
2026-10-19 00:09:59
从 Inertia v3 的 HTTP 协议切入,拆开 X-Inertia 头、page object、409 版本冲突、302→303 转换、Vary 缓存分桶、partial reload 惰性求值与 SSR 13714 探活。每个坑给现象、原因和 curl 验证方式,面向已用 Laravel + Vue 上线、正在排查整页刷新和缓存串味的工程师。
Inertia.js
Laravel
Vue
PHP
SPA
前端路由
幂等防重不止唯一索引:幂等键的四层拦截与三个失效点
编程
幂等防重不止唯一索引:幂等键的四层拦截与三个失效点
2026-10-19 00:04:20
同一个请求被处理两次,问题往往不在业务代码某一行,而在幂等键设计。这篇划清幂等只在写操作上成立,给出键的三种生成方式与粒度、网关/Redis 原子消费/MySQL 唯一索引/状态机条件更新的四层拦截顺序,以及「每次重试重生成键」「先查后写」「去重记录与业务不同事务、TTL 短于重试窗口」三个失效点,附 Go 的 1062 判断与并发验证方法。
幂等防重
幂等键
Redis
MySQL
重复提交
gh-actions-lock 0.2.0 升级后要处理的坑:粘性锁、更严的 --verify 与本地 action 迁移
编程
gh-actions-lock 0.2.0 升级后要处理的坑:粘性锁、更严的 --verify 与本地 action 迁移
2026-10-19 00:03:59
gh-actions-lock 0.2.0 升级排错笔记:锁文件 schema 变 v0.0.3、普通 run 改粘性锁、--rescan 移除、--verify 开始对未使用条目和未接入 workflow 报错、--verify-local 不再迁移 ./ 引用、--relock 与 --accept-moved 的分工、本地路径 action 跳过 onboarding 的路径解析坑,以及 allowlist 按 SHA 校验和 Dependabot 的 schema 兼容问题。
GitHubActions
actions-lock
CI
CD
供应链安全
lockfile
gh
PgDog v0.1.62:事务池复用连接时,SET/RESET 与 advisory lock 的会话状态怎么串味
编程
PgDog v0.1.62:事务池复用连接时,SET/RESET 与 advisory lock 的会话状态怎么串味
2026-10-19 00:03:42
PgDog v0.1.62 集中修了事务池下的会话状态泄漏:SET LOCAL ... TO DEFAULT 被当成会话级 SET、RESET 不恢复启动参数、ROLLBACK 撤销上一事务的 RESET、DISCARD ALL 命令标签错误打断 JDBC prepared statement、pg_try_advisory_lock 没拿到锁也 pin 连接。附最小复现 SQL、pgdog.toml 关键默认值与升级验证步骤。
PgDog
PostgreSQL
连接池
事务池
SET
advisory
lock
DISCARD
数据库代理
OpenSSL 4.0.0 升级排查:ENGINE 被删、SM2 默认 distid 变更,编译和互验都得先过一遍
编程
OpenSSL 4.0.0 升级排查:ENGINE 被删、SM2 默认 distid 变更,编译和互验都得先过一遍
2026-10-18 21:08:31
OpenSSL 4.0.0 不是 LTS,升级要先过一遍编译与互验:ENGINE 与 SSLv3 移除、ASN1_STRING 变 opaque 加 const 签名、c_rehash 换成 openssl rehash、SM2 默认 distid 变更会让新旧版本互验失败,签名算法名也改成 IANA 名字。
OpenSSL
TLS
升级迁移
ProxySQL 3.0.11/3.1.11/4.0.11:字面量用户变量不再钉死 hostgroup,caching_sha2_password 补齐 RSA 认证
编程
ProxySQL 3.0.11/3.1.11/4.0.11:字面量用户变量不再钉死 hostgroup,caching_sha2_password 补齐 RSA 认证
2026-10-18 21:05:04
ProxySQL 3.0.11 起 SET @request_id=1234 这类字面量赋值不再把会话钉在 hostgroup,多路复用得以保留;3.1.11 让非 TLS 客户端走 RSA 完成 caching_sha2_password 认证。文中给出开关配置、require_x509 与密钥轮换等升级前检查项。
MySQL
中间件
连接池
PHP 8.6.0 RC3 撤回三处「更快」改动:hrtime() 快了 4%、fiber 里警告被静音
编程
PHP 8.6.0 RC3 撤回三处「更快」改动:hrtime() 快了 4%、fiber 里警告被静音
2026-10-18 21:02:32
PHP 8.6.0 RC3 回滚了 8.6 自己引入的三处回归:fiber 内警告被静音、hrtime() 改用 CLOCK_MONOTONIC_RAW 后快约 4%、strict_types=1 下 array_map 加速路径抛 TypeError,另有 OPcache 把负零折叠。含实测表格与升级注意。
PHP
版本升级
性能
PHP 8.6 收紧 session 三个默认值:先受影响的是 SAML SSO 和跨域表单
编程
PHP 8.6 收紧 session 三个默认值:先受影响的是 SAML SSO 和跨域表单
2026-10-18 21:02:25
PHP 8.6 把 use_strict_mode、cookie_httponly、cookie_samesite 的默认值改成 1/1/Lax,SessionHandler::validateId() 也真正实现,外部提供的 session ID 会被拒。文中给出四步排查顺序、php.ini 与 Symfony 配置片段,以及为什么不建议全站放宽。
PHP
会话安全
升级踩坑
PostgreSQL 18 vs 17.9:2000 万行实测,大聚合慢 1.6 倍,skip scan 是唯一稳赢项
编程
PostgreSQL 18 vs 17.9:2000 万行实测,大聚合慢 1.6 倍,skip scan 是唯一稳赢项
2026-10-18 20:01:53
同样 2000 万行灌进 PostgreSQL 17.9 和 18,五类查询跑完发现:大聚合慢 1.6 倍,深 join 默认也慢,只有 skip scan 明确变快。附 io_method 三档对比、pg_upgrade 统计信息搬运与 checksum 默认开启带来的升级前置条件。
PostgreSQL
数据库升级
pg_upgrade
skip
scan
io_method
订单关单后的资源释放:库存回滚、优惠券退回与额度解冻怎么做到不重不漏
编程
订单关单后的资源释放:库存回滚、优惠券退回与额度解冻怎么做到不重不漏
2026-10-18 00:04:35
订单关单只改 status 会留下退不干净的库存、券和冻结额度。这篇给可落地的做法:关单事务只抢状态并写 outbox 释放任务、库存用 available/locked 预占模型并给 locked 加下界条件、流水表唯一键做幂等、优惠券过期与叠加退券的取舍、冻结额度双向更新、以及「locked 汇总 = 待支付明细」的每日对账 SQL 和重试/人工补偿口径。
订单关单
库存回滚
幂等
优惠券
对账
订单状态机
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
前端工程
锁文件存在不等于被遵守:七个包管理器的默认行为与强制模式对照
编程
锁文件存在不等于被遵守:七个包管理器的默认行为与强制模式对照
2026-10-18 00:03:49
把「锁文件」拆成尊重与强制两个维度:npm/pnpm 默认尊重但冲突时静默覆盖,Cargo/Pipenv 默认重新解析并改写锁文件,Poetry/Gradle/Go 默认即强制。附 npm install 与 npm ci 的 resolver 差异、lockfileVersion 1/2/3、隐藏锁文件的三条有效条件、integrity 校验与冲突重建步骤。
锁文件
lockfile
依赖管理
npm
CI
供应链
大家都在搜索什么?
devops
易支付
一个官网+多少钱
统一接受回调
统一回调
python
sub
node
宝塔日志
mysql
shell
ElasticSearch
css
vue
api接口对接
2025
支付接口对接
go
php
php回调
上一页
1
2
3
4
5
6
7
…
287
下一页
共 287 页
到第
页
确定