程序员茄子
全部
编程
代码
资讯
案例
综合
联系我们
软件定制开发/软件按需定制 技术文章
php
mysql
shell
go
vue
css
api接口对接
支付接口对接
Rspamd 不出 BAYES_SPAM:min_learns 是 ham/spam 各自 200,不是总数
编程
Rspamd 不出 BAYES_SPAM:min_learns 是 ham/spam 各自 200,不是总数
2026-11-06 00:04:39
Rspamd 训练了几百封邮件却始终不出 BAYES_SPAM/BAYES_HAM,日志里那句 "skip classification as ham class has not enough learns: 23, 200 required" 就是答案:min_learns=200 是每个类各自的门槛。文中给默认 statistic.conf、配置该放 local.d/classifier-bayes.conf(不能与 local.d/statistic.conf 并用)、Redis 后端 servers 写 localhost 的双栈坑、autolearn 三种写法与"符号已存在就不学"的限制、rspamc learn_spam/stat 核对与 bayes_expiry 维护。
Rspamd
邮件服务器
反垃圾邮件
Bayes
运维实战
SA5011 说这里会 nil 解引用:证据其实是你自己写的那句 if x == nil
编程
SA5011 说这里会 nil 解引用:证据其实是你自己写的那句 if x == nil
2026-11-06 00:04:18
staticcheck 的 SA5011 不是「这里一定 nil」,而是把你自己写过的 nil 比较当作证据。本文拆它的判定组合,讲清三类误报(多余的第二次检查、测试里 t.Fatal 之后、自定义 Fatalf 不被识别为终止函数)、golangci-lint facts 缓存导致的抖动,以及 2026.2 停用 SA5011 后 gopls nilness 的替代与取舍。
SA5011
staticcheck
Go
lint
nilness
Go 批处理 UPDATE 开了 clientFoundRows=true:判空从静默漏数据变成无限空转
编程
Go 批处理 UPDATE 开了 clientFoundRows=true:判空从静默漏数据变成无限空转
2026-11-06 00:04:12
Go 脚本用 UPDATE ... LIMIT 分批处理时,如果连接串开了 clientFoundRows=true,RowsAffected 返回的是匹配行数而不是改动行数,同一批行会被反复处理:轻则无限空转,重则默认语义下 changed=0 提前 break、静默漏掉后面几百万行。给出一个探针 SQL 判断当前连接池的语义,以及用主键游标改写批处理的完整代码。
clientFoundRows
MySQL
Go
go-sql-driver
RowAffected
批处理
RowsAffected
SA4023 报的总是 nil 比较:typed nil 装进 interface 后为什么不等于 nil
编程
SA4023 报的总是 nil 比较:typed nil 装进 interface 后为什么不等于 nil
2026-11-06 00:03:56
SA4023 报的是 interface 与 untyped nil 的无效比较:*T(nil) 装箱后接口非 nil,err != nil 恒真。文中给出最小复现、判定两条件、evcc 与泛型包装器的修法,以及 2026.2 重写后的版本核对顺序。
SA4023
staticcheck
Go
lint
代码质量
Nil
Rspamd 日志里的 [12.30/15.00] 不是判决:score 只给阈值,action 由模块定
编程
Rspamd 日志里的 [12.30/15.00] 不是判决:score 只给阈值,action 由模块定
2026-11-06 00:03:47
Rspamd 的 score 不等于判决:actions{} 里 reject=15/add_header=6/greylist=4 只是阈值表,greylist、ratelimit、dmarc、force_actions 等模块可以直接强制 action。文中给出 local.d 合并规则、日志 forced: 字段读法、soft reject 与 reject 的区别、reject 早停导致同信两种分数的原因(Pass: all / rspamc -p),以及自定义 action 的 flags 坑与调优顺序。
Rspamd
邮件服务器
反垃圾邮件
Postfix
运维实战
History list 只涨不降:InnoDB 行版本被谁钉住,先看 innodb_trx 的 trx_started
编程
History list 只涨不降:InnoDB 行版本被谁钉住,先看 innodb_trx 的 trx_started
2026-11-06 00:03:38
History list length 长期不回落、undo 表空间只涨不缩,多数不是 purge 线程不够,而是有长事务抱着旧快照钉住了 update undo。本文从 InnoDB 行版本的三个隐藏字段讲起,给出 innodb_trx 按 trx_started 排序、映射连接、排除 purge 落后的四步定位顺序,以及 KILL 后进入 ROLLBACK 期间 undo 仍不可回收的边界。
行版本
MySQL
InnoDB
MVCC
undo
log
长事务
wujie 子应用的 7 个生产事故:跨 realm 校验、origin 误用与 SW 注册边界
案例
wujie 子应用的 7 个生产事故:跨 realm 校验、origin 误用与 SW 注册边界
2026-11-05 21:31:47
一个 Vue 3 子应用同时跑 wujie 嵌入、独立访问、普通 iframe 三种形态,由此暴露 7 个事故:跨 realm 的 instanceof 让每次点击都报警、postMessage 的 targetOrigin 填了自己、URL 传 token 的页面漏登记导致幽灵 401、Service Worker 在 iframe 里注册必炸、bus 监听只 on 不 off 导致重复调用、$wujie 缺失白屏、大屏 resize 收不到宿主事件。每个都有现象、根因和修复代码。
wujie
微前端
Vue3
ServiceWorker
抛错的 computed 卡住了共享 notify buffer:Vue 3.6 alpha.1–rc.9 的 watcher 停摆
编程
抛错的 computed 卡住了共享 notify buffer:Vue 3.6 alpha.1–rc.9 的 watcher 停摆
2026-11-05 21:31:43
Vue 3.6 从 alpha.1 到 rc.9 存在一个响应式回归:computed getter 抛错会打断共享 notify buffer 的 flush 循环,游标没归零,导致另一个完全无关的 watcher 停止更新、直到下一次任意写入才被「捎带」执行。本文拆解 notify buffer 与 flush 的真实控制流,给出复现代码、rc.10 的 try/catch 修复,以及六步排查清单。
Vue3
响应式
前端
源码
MySQL 8.4.13:丢弃表空间再导入旧镜像后,点查为什么读到旧数据
案例
MySQL 8.4.13:丢弃表空间再导入旧镜像后,点查为什么读到旧数据
2026-11-05 21:07:05
MySQL 8.4.13 修了两个 InnoDB 表空间导入缺陷:导出的表被改过、表空间 DISCARD 后又导入旧镜像时,点查会命中陈旧 AHI 条目返回旧代数据;导入失败后的残留页还会在 eviction 时触发 btr0sea.cc 断言。本文给现象、原因与排查步骤。
MySQL
InnoDB
数据库
故障排查
表空间
Go 1.27 的 encoding/json/v2:默认拒重复键和非法 UTF-8,v1 代码已换实现
编程
Go 1.27 的 encoding/json/v2:默认拒重复键和非法 UTF-8,v1 代码已换实现
2026-11-05 21:06:05
Go 1.27 把 encoding/json 换成 v2 实现,错误文本可能变化;新包 json/v2 默认拒绝非法 UTF-8 和重复成员名,inline 标签改名 embed。本文列出 v2 的 API 形态、三条迁移路径与 GOEXPERIMENT=nojsonv2 回退的边界。
Go
JSON
标准库
迁移
后端
generateBundle 里改 bundle 的 key 在 Rolldown 失效:一次离线包白屏复盘
代码
generateBundle 里改 bundle 的 key 在 Rolldown 失效:一次离线包白屏复盘
2026-11-05 21:05:31
Vite 8 换到 Rolldown 后,插件在 generateBundle 里 delete/赋值 bundle key 会被忽略且只打警告,多页构建的产物路径重定位全失效,而校验仍报 valid。本文复盘白屏链路,给出原地改 fileName 的兼容写法与交叉校验。
Vite
Rolldown
前端构建
插件
Vue
PostgreSQL 19 默认关掉 JIT:先找出哪些查询原来在替它付编译成本
编程
PostgreSQL 19 默认关掉 JIT:先找出哪些查询原来在替它付编译成本
2026-11-05 21:04:30
PostgreSQL 19(GA 计划 11 月 19 日)把 jit 默认值从 on 改成 off,三个成本阈值不变。本文说明 JIT 如何在计划阶段被成本触发、怎么从 EXPLAIN ANALYZE 和 pg_stat_statements 找出原来靠 JIT 的查询,以及 ALTER ROLE 只对新会话生效这层限制。
PostgreSQL
数据库
JIT
升级
运维
Laravel 13.40 长任务回调:队列阈值是毫秒,定时任务阈值是秒
编程
Laravel 13.40 长任务回调:队列阈值是毫秒,定时任务阈值是秒
2026-11-05 21:03:44
Laravel 13.40 加了慢任务回调,但 Queue 与 Schedule 两个方法对裸数字的单位不一致(毫秒 vs 秒),且被 --timeout 杀掉的 job 永远不会触发。本文还整理了读副本 commit ID 的驱动前提,以及 queue:work 日志里 DONE 变 RELEASED 的影响。
Laravel
PHP
队列
MySQL
PostgreSQL
Caddy 2.11.9:/wp-admin/ 404 的回归修了,FastCGI 的 env 也不再被请求头覆盖
综合
Caddy 2.11.9:/wp-admin/ 404 的回归修了,FastCGI 的 env 也不再被请求头覆盖
2026-11-05 21:03:06
Caddy 2.11.8 的目录索引回归让 /wp-admin/ 这类尾斜杠路径绕过 index.php 直接 404,2.11.9 修掉了它,同时把 FastCGI 的 env 优先级、脚本歧义 400、client_auth 冲突报错一起收紧了。本文按影响面列出需要改配置的点。
Caddy
FastCGI
PHP
运维
Web服务器
PIE 1.5 的无人值守安装不再自动选包:CI 里必须写 --select=ext=pkg
代码
PIE 1.5 的无人值守安装不再自动选包:CI 里必须写 --select=ext=pkg
2026-11-05 21:02:18
PIE 1.5 改了无人值守安装扩展的选包方式:旧参数 --allow-non-interactive-project-install 被弃用且忽略,缺包直接失败。本文给出 --select=扩展名=包名 的写法、--no-dev 只跳过 require-dev 检查的边界,以及 pie upgrade 如何遵守安装时的版本约束。
PHP
PIE
扩展
CI
Docker
PHP 8.5.12 启动期 delayed OOM:uri 模块 RINIT 失败让 worker 直接 exit(1)
编程
PHP 8.5.12 启动期 delayed OOM:uri 模块 RINIT 失败让 worker 直接 exit(1)
2026-11-05 20:02:43
PHP 8.5.12 起 memory_limit 越界改为延迟抛 OOM,请求启动期留出一段没有检查的窗口;落在窗口里的 multipart 上传会让 worker exit(1):FPM 变 502 不是 500,mod_php 杀掉 Apache 子进程,upload_tmp_dir 还留残留文件。附 N 扫描复现方法与 8.5.11 对照数据。
PHP
运维
内存
排错
Redis 8.12-rc2 的 SEXPIRE:读路径砍掉一次往返,代价是 intset 直接跳成 hashtable
编程
Redis 8.12-rc2 的 SEXPIRE:读路径砍掉一次往返,代价是 intset 直接跳成 hashtable
2026-11-05 20:00:56
Redis 8.12 给 set 成员加了独立 TTL,实测读路径快一倍、写路径没变快;但给 300 个整数的 intset 里一个成员设过期,编码会直接跳到 hashtable,内存涨 15 倍且 SPERSIST 后不回退。
Redis
数据库
性能
运维
支付宝周期扣款上线踩的三个坑:CYCLE_PAY_AUTH 少个 p、扣款窗口只有 5 天、单笔封顶 100 元
代码
支付宝周期扣款上线踩的三个坑:CYCLE_PAY_AUTH 少个 p、扣款窗口只有 5 天、单笔封顶 100 元
2026-11-05 09:01:34
支付宝周期扣款(订阅自动续费)上线排障:签约用 CYCLE_PAY_AUTH_P、扣款用 CYCLE_PAY_AUTH,少个 P 就报 MERCHANT_AGREEMENT_IS_NOT_EXIST;扣款只能在约定日及前 5 天内发起、一个周期只成功一次;单笔 100 元封顶让年付订阅走不通,要换资金预授权;用户解约后查协议只返回 USER_AGREEMENT_NOT_EXIST,UNSIGN 只能靠异步通知拿到。附 biz_content 示例、窗口调度代码与上线检查清单。
支付宝
周期扣款
代扣
订阅支付
接口对接
排障
mod_php + prefork 容量计算:ServerLimit 默认 256 压着 MaxRequestWorkers,PSS 才是每进程口径
编程
mod_php + prefork 容量计算:ServerLimit 默认 256 压着 MaxRequestWorkers,PSS 才是每进程口径
2026-11-05 00:05:16
mod_php 只能跑 prefork,容量规划要按每进程 PSS 算,opcache 的 mmap 共享段不能乘进程数。附 MaxRequestWorkers 被 ServerLimit 256 压住的报错、MaxConnectionsPerChild 回收取舍,以及 scoreboard 全是 W 时该查什么。
mod_php
Apache
mpm_prefork
性能调优
运维
auto-imports.d.ts 已生成还报 Cannot find name 'ref':TS、ESLint 9、模板三处断链
编程
auto-imports.d.ts 已生成还报 Cannot find name 'ref':TS、ESLint 9、模板三处断链
2026-11-05 00:04:27
unplugin-auto-import 把 import 注入了,静态检查却没看见:dts 落在根目录而 tsconfig 只 include src、ESLint 9 不再读 .eslintrc-auto-import.json、vueTemplate 下 ref 不解包、vueDirectives 没开导致 v-loading 静默失效。按症状给出配置写法与排查顺序。
自动导入
Vue3
Vite
ESLint
TypeScript
前端工程化
Modernizer 3.4.0 拿 javaVersion 当尺子:JDK 8 升 17 时 400+ 条遗留 API 规则怎么接
编程
Modernizer 3.4.0 拿 javaVersion 当尺子:JDK 8 升 17 时 400+ 条遗留 API 规则怎么接
2026-11-05 00:04:10
Modernizer Maven 插件按 rule.version 与 javaVersion 比较来报遗留 Java API,尺子填错一档就全不报或全报。整理 3.4.0 的 pom 接入、绑 verify、三个默认值坑(failOnViolations、includeTestClasses、violationsFile 会禁用默认 400+ 规则)、javap 格式排除项写法、@SuppressModernizer 边界,以及几处不等价替换。
modernizer
Java
Maven
静态检查
JDK升级
ASM
Grype 的退出码语义:--fail-on 触发时返回 2 不是 1,过滤在阈值判断之前
编程
Grype 的退出码语义:--fail-on 触发时返回 2 不是 1,过滤在阈值判断之前
2026-11-05 00:04:09
Grype 在 CI 里最容易出错的不是扫描本身,而是退出码与过滤参数组合:--fail-on 触发返回 2、配置注释却写 1,阈值判断发生在 --only-fixed/--ignore-states/VEX 过滤之后,fix state 四个值决定剩多少条,--only-fixed 与 --only-notfixed 同用会把结果全部过滤成假绿。附区分「策略拦截」与「扫描失败」的包装脚本。
Grype
漏洞扫描
容器安全
SBOM
CI
DevSecOps
notify_url 收不到回调:http 0、3xx、403、405、500 逐层定位
编程
notify_url 收不到回调:http 0、3xx、403、405、500 逐层定位
2026-11-05 00:03:39
浏览器能打开 notify_url,不代表支付平台的服务端 POST 能投递成功。按 http 0(DNS/证书/端口/IPv6)、3xx(尾斜杠与强制 HTTPS 重定向)、403/405、500 分层定位,附支付宝与微信地址格式差异表、curl 复现命令与 Nginx 反代配置。
notify_url
支付回调
异步通知
接口对接
运维
Nginx
EL9 不再提供 mod_php:Apache 2.4 + PHP 8.4 迁到 php-fpm 的配置与失效点
编程
EL9 不再提供 mod_php:Apache 2.4 + PHP 8.4 迁到 php-fpm 的配置与失效点
2026-11-05 00:03:27
EL9 官方仓库不再提供 mod_php,EL8 仍提供但要切 prefork。从 mod_php 迁到 php-fpm + mod_proxy_fcgi 的实测配置,以及 php_value 失效、运行用户变更、REDIRECT_ 前缀、opcache 每池独立、502/503 判据这几个坑。
mod_php
Apache
PHP-FPM
运维
mod_proxy_fcgi
大家都在搜索什么?
devops
易支付
一个官网+多少钱
统一接受回调
统一回调
python
sub
node
宝塔日志
mysql
shell
ElasticSearch
css
vue
api接口对接
2025
支付接口对接
go
php
php回调
上一页
1
2
3
4
5
6
7
…
346
下一页
共 346 页
到第
页
确定