程序员茄子
全部
编程
代码
资讯
案例
综合
联系我们
软件定制开发/软件按需定制 技术文章
php
mysql
shell
go
vue
css
api接口对接
支付接口对接
TCC 的三种异常压在一张表上:tcc_fence_log 四个状态,useTCCFence 默认还是 false
编程
TCC 的三种异常压在一张表上:tcc_fence_log 四个状态,useTCCFence 默认还是 false
2026-11-03 00:04:21
TCC 的幂等、空回滚、资源悬挂在实现层是同一件事:一条分支记录被 Try 和 Cancel 错序写入。以 Seata 1.5.1 的 tcc_fence_log 为例,拆开 status 四态(tried/committed/rollbacked/suspended)各自挡哪种错序,说明 useTCCFence 默认 false 这个升级陷阱、空回滚必须写记录才能防悬挂的原因,并给出自建这张表的唯一键与同库约束。
TCC
分布式事务
Seata
DTM
组件粒度别按行数拆:一个下拉开出四个组件,小红点却留在 Badge 里
编程
组件粒度别按行数拆:一个下拉开出四个组件,小红点却留在 Badge 里
2026-11-03 00:04:12
Ant Design 的 Select 在 headless 层拆成 Root/Trigger/Value/Content/Item,Badge 的小红点却一直是内部实现。本文用 Event/Props/Expose/Context 四条信息通路(外加 Feedback 例外)给出可执行的组件粒度判据,附 Switch、Select、Caret 的判定过程、Vue 代码对照,以及「只有转发 props」这种拆早了的信号。
组件粒度
组件设计
前端工程
Vue
React
Headless
UI
beforeEnter 在 /users/2 → /users/3 时不触发:导航守卫 12 步顺序与三个边界
编程
beforeEnter 在 /users/2 → /users/3 时不触发:导航守卫 12 步顺序与三个边界
2026-11-03 00:03:56
导航守卫真正难的不是记钩子名,而是 12 步执行顺序和触发边界:beforeEnter 在 /users/2 → /users/3 这种参数变化时根本不执行;数据请求该放 beforeResolve 而不是 afterEach;返回值 false、路由地址、true 的语义与 next 三态等价表;异步守卫挂起期间 URL 与视图不一致、return false 时 URL 回滚的原因。附自检清单。
导航守卫
Vue
Router
前端路由
割接切了地址,旧库还有连接在跑:*sql.DB、DNS TTL、keepalive 三处滞留
综合
割接切了地址,旧库还有连接在跑:*sql.DB、DNS TTL、keepalive 三处滞留
2026-11-03 00:03:54
割接窗口里数据侧切完、连接侧没切完,是旧库流量掉不下去的常见原因。分别拆解 Go *sql.DB 连接池换 DSN 的坑、DNS TTL 与 JVM/resolver 缓存、Nginx upstream 与 conntrack 的 keepalive 滞留,给出旧库 processlist 的判读方法和按连接侧排序的窗口清单。
割接窗口
MySQL
Go
connect
pool
DNS
nginx
1461 报错先算 16382 ÷ 连接数:Node.js 驱动层 prepared statement 配额怎么定位
编程
1461 报错先算 16382 ÷ 连接数:Node.js 驱动层 prepared statement 配额怎么定位
2026-11-03 00:03:47
MySQL 报 1461(max_prepared_stmt_count 用尽)时,先算 16382÷连接数看每连接还能缓存几条。这篇从 Node 侧看:mysql2 的 maxPreparedStatements 默认 16000 几乎等于全局配额,Prisma 的 statement_cache_size 默认 1000;给出 execute/query 协议差异、unprepare 与 statement.close 的适用边界,以及用 performance_schema 聚合、processlist 映射、KILL 后计数归零、tcpdump 抓 COM_STMT_PREPARE 把泄漏钉到具体连接的完整路径。
MySQL
1461
prepared-statement
Node.js
mysql2
Prisma
performance_schema
kula 部署笔记:单二进制 Linux 监控,Docker 里必须共享 PID 命名空间
综合
kula 部署笔记:单二进制 Linux 监控,Docker 里必须共享 PID 命名空间
2026-11-02 21:31:59
kula 是单二进制 Linux 监控:每秒读 /proc 与 /sys,写入 1s/1m/5m 三层环形缓冲(默认 250/150/50 MB),面板在 27960。笔记给出安装命令、Docker 里为什么必须 --pid host、Prometheus 端点与 AGPLv3 单机定位的取舍。
Go
监控
Linux
Docker
运维
Go 1.27 泛型方法:方法能自带类型参数,接口方法仍然不行
编程
Go 1.27 泛型方法:方法能自带类型参数,接口方法仍然不行
2026-11-02 21:31:47
Go 1.27 允许方法声明自己的类型参数:给出 List.Map 的最小对比、method expression 与实例化的写法,列出四条硬限制(接口方法不能带类型参数、泛型方法不满足接口、reflect 拿不到、实例化递归被拒),最后说明何时仍应写顶层泛型函数。
Go
泛型
语言规范
编译错误
Composer 2.11.0 升级笔记:内联仓库的 token 曾写进 composer.lock,source-fallback 被移除
编程
Composer 2.11.0 升级笔记:内联仓库的 token 曾写进 composer.lock,source-fallback 被移除
2026-11-02 21:09:47
Composer 2.11.0 以安全修复为主:内联仓库的 HTTP 头(API token)曾被写进 composer.lock,升级后要查历史并轮换;拒绝 eMudhra 中间证书签发的 TLS 链;新增 cooldown 配合 policy 防投毒;同时移除 2.10 的 source-fallback,dist 装不上不再回退源码。附检查命令。
Composer
PHP
依赖管理
供应链安全
Podman 6.0 升级笔记:BoltDB、cgroups v1、CNI 全被移除,volume prune 与 list 的语义也反了
综合
Podman 6.0 升级笔记:BoltDB、cgroups v1、CNI 全被移除,volume prune 与 list 的语义也反了
2026-11-02 21:08:32
Podman 6.0 移除 BoltDB、cgroups v1、CNI、slirp4netns 与 iptables,升级路径和以往不同:必须先升 5.8 让 BoltDB 迁到 SQLite 再升 6,底座要换成 cgroups v2 + Netavark + Pasta + nftables。另记 CLI 语义反转(volume prune 只清匿名卷、filter 由 OR 变 AND、commit 默认暂停)与升级前检查命令。
Podman
容器
运维
版本升级
MySQL 26.10 把 REST Service 塞进 server:省掉 Router 进程后,故障域和四段版本号都要重算
编程
MySQL 26.10 把 REST Service 塞进 server:省掉 Router 进程后,故障域和四段版本号都要重算
2026-11-02 21:07:23
MySQL 26.10 把 REST Service 变成 server 内的 component,不再必须单独跑 MySQL Router:拓扑少一个进程,也少了故障隔离,worker/连接数/请求大小改按数据库实例规划。另讲四段版本号对监控脚本的坑(VERSION() 仍三段,取完整版本要用 VERSION_WITH_UPDATE)、Health Monitor 进 CE 与 Connector/C++ 移除 compat RPM。
MySQL
数据库运维
版本升级
Nuxt 5 迁移:Options API 被编译出客户端包、路由默认区分大小写、server/utils 子目录不再自动导入
代码
Nuxt 5 迁移:Options API 被编译出客户端包、路由默认区分大小写、server/utils 子目录不再自动导入
2026-11-02 21:06:40
Nuxt 5 迁移里不报错但改变运行路径的默认值:Options API 被编译出客户端包、路由默认区分大小写且 sensitive 只能写在 nuxt.config、server/utils 子目录不再自动导入、clearNuxtState 改重置初始值、顶层 await navigateTo 后续代码不执行等。每条附排查 grep 与改造方式。
Nuxt
Vue
前端迁移
Node.js
Valkey 9.0 与 9.1.x 混跑:listpack 编码不兼容让 RDB 加载失败,CLUSTER SLOTS 多出的字段会打挂旧客户端
编程
Valkey 9.0 与 9.1.x 混跑:listpack 编码不兼容让 RDB 加载失败,CLUSTER SLOTS 多出的字段会打挂旧客户端
2026-11-02 21:05:51
Valkey 滚动升级窗口里两个会让节点直接不可用的兼容点:9.0 与 9.1.x 的 listpack 编码对某些长度条目不一致,导致 RDB 加载与复制失败(9.1.3 修复);9.1 起 CLUSTER SHARDS/SLOTS 每节点多出 availability-zone 字段,严格解析的旧 go-redis 会拒收。附排查命令与 9.1.3/9.2 RC 运维相关变更。
Valkey
Redis
集群运维
滚动升级
PostgreSQL 18 升级:VACUUM 开始管子表、pg_upgrade 卡在 checksum、AFTER 触发器换角色
编程
PostgreSQL 18 升级:VACUUM 开始管子表、pg_upgrade 卡在 checksum、AFTER 触发器换角色
2026-11-02 21:03:48
PostgreSQL 18 三处容易在维护窗口才暴露的行为变化:VACUUM/ANALYZE 默认递归处理继承子表需加 ONLY、initdb 默认开数据校验和导致 pg_upgrade 直接失败、AFTER 触发器改按事件入队时的角色执行。附 unlogged 分区表、COPY FROM 的 \\. 与时区缩写的兼容差异和检查命令。
PostgreSQL
数据库升级
运维
any-sync-bundle 部署笔记:外部地址首启就写死、备份要等干净停止、老 CPU 跑 AIO 会直接 illegal instruction
综合
any-sync-bundle 部署笔记:外部地址首启就写死、备份要等干净停止、老 CPU 跑 AIO 会直接 illegal instruction
2026-11-02 20:02:27
用 any-sync-bundle 单容器自建 Anytype 同步服务器:只开 TCP 33010 与 UDP 33020,默认内置 BadgerDB 与 MongoDB/Redis。重点是三个容易踩的坑——ANY_SYNC_BUNDLE_INIT_EXTERNAL_ADDRS 首启就固化进 bundle-config.yml、改环境变量无效;备份必须等 bundle_shutdown_complete;老 CPU 无 AVX 时内置 MongoDB 直接 illegal instruction。
自托管
Docker
Go
Anytype
运维
OxPHP 0.14.0 升级:弃用变量被静默忽略,路由退回传统模式后任意 .php 都可执行
编程
OxPHP 0.14.0 升级:弃用变量被静默忽略,路由退回传统模式后任意 .php 都可执行
2026-11-02 20:01:33
OxPHP 0.14.0 把 INDEX_FILE、WORKER_FILE、PHP_DENY_DIRS 等变量直接停止读取且不告警:依赖它们的框架/工作进程部署会退回传统路由,文档根下任意 .php 都会被提供。同时修复了工作进程会话串号、putenv 令牌跨请求泄漏、慢速 HTTP/1.1 客户端把整个响应体留在内存等问题,附逐项迁移变量与升级检查清单。
PHP
OxPHP
Docker
升级
应用服务器
同一个 out_trade_no 第二次下单:支付宝四个错误码怎么分诊、怎么收尾
代码
同一个 out_trade_no 第二次下单:支付宝四个错误码怎么分诊、怎么收尾
2026-11-02 09:01:14
同一笔单号第二次下单为什么报错不一样:按支付宝 trade_status 分诊——WAIT_BUYER_PAY 可复用(参数不变、同一付款人)、TRADE_SUCCESS/TRADE_FINISHED 报 ALIN42279 或 ACQ.TRADE_HAS_SUCCESS、TRADE_CLOSED 报 ALIN42280 或 ACQ.TRADE_HAS_CLOSE、改了金额标题报 CONTEXT_INCONSISTENT。附订单号生成规则、24 小时撤销边界、退款 out_request_no 换号、SYSTEM_ERROR 只查询不判失败,以及 Go 收口代码。
支付宝
out_trade_no
支付接口对接
错误码
订单号复用
幂等
双击 Submit 插了两行:一次性 token、幂等键、CSRF 各挡哪种重复
编程
双击 Submit 插了两行:一次性 token、幂等键、CSRF 各挡哪种重复
2026-11-02 00:04:38
CSRF token 是 per-session 的稳定值,连续提交两次都通过;Idempotency-Key 是 header,裸表单浏览器不会带。所以只有 CSRF 的表单双击照样插两行。这篇把一次性提交 token 的 Mint/Scan/Consume 三步写成可跑的 Go 代码,并给出四个判据层面的错误:SETNX+EXPIRE 非原子、select+delete 校验 token 有并发窗口、指纹模式误杀相同内容的合法提交、以及用 429 回应重复提交等于叫客户端退避重试。
重复提交
表单防重
幂等
Redis
Go
HTTP
静态脱敏要保持关联:ID 单独哈希会把外键打断,改用映射表 + 同偏移日期
编程
静态脱敏要保持关联:ID 单独哈希会把外键打断,改用映射表 + 同偏移日期
2026-11-02 00:04:38
静态脱敏后测试库「看着像、用不了」的根因是列各自随机:外键指向不存在的行、唯一索引撞车、时序与分布全乱。笔记给出用 HMAC 做确定性映射 + 映射表的具体写法,逐个说明碰撞、0 值主键、日期整体平移、枚举只保分布、映射表即还原钥匙五个坑,附四条验收 SQL 与适用边界。
脱敏策略
静态脱敏
数据脱敏
数据库安全
HMAC
测试数据
运维
动态脱敏
Intl.NumberFormat 不解析:19 位金额串、min2 分组与 -0 的三种显示
编程
Intl.NumberFormat 不解析:19 位金额串、min2 分组与 -0 的三种显示
2026-11-02 00:04:30
Intl.NumberFormat 只格式化不解析,三处容易踩的地方:JSON 金额是字符串时先 parseFloat 会把 19 位数字末位抹成 0(v3 起字符串按十进制精确解析,BigInt 分单位可加 E-6 直传);useGrouping 的 'min2' 让 1000 不分组、10000 才分组,字符串 'true'/'false' 会被静默替换成默认值;signDisplay 五个取值对负零的显示从 "-0" 到 "+0" 各不相同。另附 formatToParts 反解本地化数字的写法与 round-trip 校验。
Intl.NumberFormat
Intl
i18n
国际化
JavaScript
前端
Go 的 sql.Stmt 与连接池:为什么句柄数约等于连接数乘 SQL 文本数
编程
Go 的 sql.Stmt 与连接池:为什么句柄数约等于连接数乘 SQL 文本数
2026-11-02 00:04:17
Com_stmt_prepare 一直涨、句柄数约等于连接数乘 SQL 文本数,多半不是代码反复 Prepare,而是 DB 级 sql.Stmt 在每条连接上各准备一份。讲清 css 记录机制、interpolateParams 的真实作用域(只影响隐式路径)、Tx.Stmt 反模式,以及先收敛 SQL 文本再调连接池的处置顺序。
prepared
statement
Go
database
sql
MySQL
KingbaseES 动态脱敏:anon.add_policy 只认表.列,视图配不了、CTAS 会把脱敏值落库
编程
KingbaseES 动态脱敏:anon.add_policy 只认表.列,视图配不了、CTAS 会把脱敏值落库
2026-11-02 00:03:57
KingbaseES v9.4.12 的 sys_anon 动态脱敏落地笔记:插件预加载与扩展创建、add_policy 五个参数逐个说明、default/partial/random 三类函数的实际输出,以及手册条目对应的现场后果——视图不能配策略、脱敏表上的物化视图刷不动、分区表只能挂主表、username 置空等于全用户脱敏、CTAS 落盘脱敏值不可还原、MERGE INTO 直接失败、触发器可绕过。附可复现验证 SQL 与八步排查顺序。
脱敏策略
KingbaseES
动态脱敏
数据脱敏
数据库安全
sys_anon
运维
Connector/J 预处理没走服务端:useServerPrepStmts 默认 false,缓存上限 25/256 怎么改
编程
Connector/J 预处理没走服务端:useServerPrepStmts 默认 false,缓存上限 25/256 怎么改
2026-11-02 00:03:53
general_log 里只有 Query 没有 Prepare、Com_stmt_prepare 不涨?多半是 Connector/J 的四个默认值:useServerPrepStmts=false、cachePrepStmts=false、prepStmtCacheSize=25、prepStmtCacheSqlLimit=256。给判据、互斥关系、useCursorFetch 隐式覆盖与验证步骤。
MySQL
preparedstatement
JDBC
Connector
J
Java
statement
mise v2026.10.15:24 小时冷却覆盖所有后端,pin 最新版会解析成 no versions found
编程
mise v2026.10.15:24 小时冷却覆盖所有后端,pin 最新版会解析成 no versions found
2026-11-01 21:32:29
mise v2026.10.15 把默认 24 小时 minimum_release_age 冷却从部分后端扩到全部后端,版本只发布不到 24 小时会解析成 no versions found;另附分钟级配置开关、版本列表改走 mise-versions 主机对自定义源的影响、read_json/read_yaml/read_toml 模板函数与 PowerShell 安装器。
mise
开发工具
版本管理
CI
dotfiles
Go
SILO 20261026 升级笔记:多池删除改成先清旧副本,跨站复制不再 BadDigest,也不能滚动降级
综合
SILO 20261026 升级笔记:多池删除改成先清旧副本,跨站复制不再 BadDigest,也不能滚动降级
2026-11-01 21:31:39
SILO(MinIO fork)20261026 版把多池删除改成先清非权威池再删权威副本,版本桶生命周期只加删除标记时保留远端分层数据,复合 CRC 分片复制透传 FULL_OBJECT 避免 BadDigest;附 mcli 新 pending 状态与退出码语义、升级顺序与一致性边界。
对象存储
S3
MinIO
SILO
运维
Go
大家都在搜索什么?
devops
易支付
一个官网+多少钱
统一接受回调
统一回调
python
sub
node
宝塔日志
mysql
shell
ElasticSearch
css
vue
api接口对接
2025
支付接口对接
go
php
php回调
上一页
1
2
3
4
5
6
7
…
344
下一页
共 344 页
到第
页
确定