程序员茄子
全部
编程
代码
资讯
案例
综合
联系我们
软件定制开发/软件按需定制 技术文章
php
mysql
shell
go
vue
css
api接口对接
支付接口对接
LTS 的支持窗口从哪天开始算:补丁版本不续命,ESM/ELC 才算延长
编程
LTS 的支持窗口从哪天开始算:补丁版本不续命,ESM/ELC 才算延长
2026-11-11 00:05:29
装了更晚的补丁版本并不等于把 EOL 往后推:支持期只挂在 minor/major 版本上,4.1 到期时 4.1.x 全家同时失效。文章对照 midPoint、.NET、Ubuntu、Zabbix、Jenkins LTS、RHEL、OpenHarmony 七套 LTS 口径,拆开「起算点 / 标准窗口 / 付费延长」三者,并说明 EOL 后 unattended-upgrades 仍在写日志、apt 却已 404 的假象。
LTS升级
运维
版本管理
EOL
Linux
Ubuntu 24.04 升到 26.04 之后:三处被静默改掉的配置与逐项验证命令
编程
Ubuntu 24.04 升到 26.04 之后:三处被静默改掉的配置与逐项验证命令
2026-11-11 00:04:34
Ubuntu 24.04 原地升级到 26.04 LTS 跑完并不等于系统完好:/etc/sysctl.conf 被 procps 标为 remove-on-upgrade 直接删除、第三方 apt 源被清成一行注释只剩 .disabled、残留 conffile 让 logrotate 整体失败。文中给出每处的验证命令与修复方向,以及 PostgreSQL 18 只装不迁、PHP socket 路径、MySQL default_authentication_plugin 三处「看着正常其实没迁」的组件和 SSH 自锁预防。
LTS升级
Ubuntu
运维
系统升级
Linux
pt-query-digest 默认只报 20 条:--limit、--outliers、--since 的统计口径
编程
pt-query-digest 默认只报 20 条:--limit、--outliers、--since 的统计口径
2026-11-11 00:04:16
pt-query-digest 的默认值会改变报告口径:--limit 95%:20 是百分比与条数两道截断,取先到者,被砍掉的行聚合成 MISC;--outliers 默认 Query_time:1:10 会绕过 --limit 把查询塞回报告;--since 严格、--until 非严格,时间戳非单调时会误丢事件。另含 stddev/median 的截尾算法、V/M 判读、genlog 默认 order-by 变化、--filter 属性未定义崩溃等坑,附可复现命令序列。
PerconaToolkit
pt-query-digest
MySQL
慢查询
慢日志
Percona
性能优化
运维
没有 FOREIGN KEY 的库,如何让 ER 图连上线:tbls 与 SchemaSpy 的关系推断
编程
没有 FOREIGN KEY 的库,如何让 ER 图连上线:tbls 与 SchemaSpy 的关系推断
2026-11-11 00:04:10
老库和删掉外键的库用 tbls/SchemaSpy 生成文档时,ER 图常常是一堆没有连线的孤岛。这篇讲清 tbls 的 relations 手写与 detectVirtualRelations 五种推断策略各匹配什么、哪里会误判,以及 SchemaSpy 的 implied relationships 与 SchemaMeta 如何纠正,最后给出把推断结果固定进 CI 的做法。
数据库文档
tbls
SchemaSpy
ER图
外键
MySQL
PostgreSQL
ERROR 2061 不是密码错:caching_sha2_password 缓存失效后,非 TLS 连接全掉进 full auth
编程
ERROR 2061 不是密码错:caching_sha2_password 缓存失效后,非 TLS 连接全掉进 full auth
2026-11-11 00:03:50
caching_sha2_password 的 fast auth 依赖服务端内存缓存,缓存一失效就走 full auth,非 TLS 连接随即报 ERROR 2061。本文给缓存失效时机表、RSA 公钥两条路径、JDBC/Go/PHP 驱动差异,以及自研协议客户端漏读 AuthMoreData 导致包错位的真实 PR 案例。
caching_sha2_password
MySQL
认证插件
排障
RSA公钥
数据库
transaction_replay 救不回事务的三处盲区:会话状态重建与 checksum 校验
编程
transaction_replay 救不回事务的三处盲区:会话状态重建与 checksum 校验
2026-11-11 00:03:45
MaxScale readwritesplit 的 transaction_replay 为什么不总能救回事务:事务中途改 SQL_MODE 会让重放的会话状态顺序错位、max_sescmd_history 默认 50 条且被裁剪导致状态不完整、checksum 只看服务器响应看不见外部副作用,附 safe_commit 与幂等落库的做法。
transaction_replay
MaxScale
MariaDB
readwritesplit
数据库代理
读写分离
会话状态
聊天记录分桶存进 MongoDB:一条消息占 1/100 个文档,位置全靠算
编程
聊天记录分桶存进 MongoDB:一条消息占 1/100 个文档,位置全靠算
2026-11-10 21:34:51
聊天记录用 MongoDB 分桶存储:一个文档 100 条消息,(seq-1)/100 定文档、(seq-1)%100 定下标;Kafka 重复消费靠先 update 后 insert 的幂等状态机兜住;撤回、删除、已读用三个标签在读时投影,群消息只存一份。
Go
MongoDB
架构
Do 返回之后请求体还在被读:Go http.Transport 的 data race,vmagent 留着它、vmauth 必须修
编程
Do 返回之后请求体还在被读:Go http.Transport 的 data race,vmagent 留着它、vmauth 必须修
2026-11-10 21:33:51
Go 的 http.Transport 在独立 goroutine 里写请求体,Do 返回时它可能还在读你复用的缓冲。复现 race 报告、讲清 writeLoop/readLoop/roundTrip 的时序,再对比 vmagent 故意保留与 vmauth 必须修的判断依据:共享的是字节还是游标。
Go
并发
调试
rsync 3.5.2 修 sender 侧 CPU 耗尽:hosts deny 会 fail-open,auth users 会静默跳过规则
编程
rsync 3.5.2 修 sender 侧 CPU 耗尽:hosts deny 会 fail-open,auth users 会静默跳过规则
2026-11-10 21:11:32
rsync 3.5.2 修掉 CVE-2026-119741:恶意 receiver 用弱校验和连续碰撞,把 sender 的 CPU 打满,公开 daemon 模块无需账号即可触发。加上 3.5.0 那批 33 个问题里的 hosts deny fail-open、auth users 静默跳过规则,以及这批修复自带的行为变化与升级自查清单。
运维
rsync
安全公告
备份
Bash 5.3 实用改动:命令替换不再 fork、GLOBSORT 排序,还有两处会咬到旧脚本
编程
Bash 5.3 实用改动:命令替换不再 fork、GLOBSORT 排序,还有两处会咬到旧脚本
2026-11-10 21:09:37
Bash 5.3 里写脚本真正用得上的改动:${ cmd; } 与 ${|cmd;} 在当前 shell 执行不再 fork、BASH_MONOSECONDS 直接读单调时钟、GLOBSORT 让路径名展开自带排序,外加 source -p、compgen -V、read -E 等。也整理了两处会改变现有脚本行为的兼容性变化。
Shell
Bash
脚本
运维
Vue 3.6 rc.11:v-memo 在 Vapor 模板里被静默忽略,只在 dev 给一句警告
代码
Vue 3.6 rc.11:v-memo 在 Vapor 模板里被静默忽略,只在 dev 给一句警告
2026-11-10 21:07:38
Vue 3.6.0-rc.11 为 Vapor 里被忽略的行为加了 dev 警告:v-memo、globalProperties、元素上的 @vue:* 钩子都只是警告而非报错,生产环境仍然静默失效。本文整理这几条与更严格的编译期检查(无 script setup、const/v-for 上的 v-model),给出把 Vue warn 升级成失败的测试配置。
Vue
Vapor
前端
迁移
MySQL 9.7 移除了 mysql_native_password:先清配置里的三个变量,再改账号
编程
MySQL 9.7 移除了 mysql_native_password:先清配置里的三个变量,再改账号
2026-11-10 21:06:53
mysql_native_password 在 MySQL 9.7 已从服务端移除,同时带走了 --mysql-native-password、--mysql-native-password-proxy-users 和 default_authentication_plugin。本文给出升级前的配置文件与账号排查语句、改到 caching_sha2_password 的具体 SQL、两类典型连接失败,以及同版本的三条相关行为变化。
MySQL
认证
升级
运维
caching_sha2_password
curl 8.23.0 唯一的 High:上传时收到 RST_STREAM 会触发 UAF,8.12.0 起都中招
资讯
curl 8.23.0 唯一的 High:上传时收到 RST_STREAM 会触发 UAF,8.12.0 起都中招
2026-11-10 21:06:03
curl 8.23.0 一次公开了 24 个漏洞,其中唯一的 High 是 CVE-2026-92392:上传过程中收到服务端 RST_STREAM(HTTP_1_1_REQUIRED 或 REFUSED_STREAM)会释放后再用 struct Curl_easy。影响 8.12.0–8.22.0。本文给出利用前提、版本矩阵、如何用 %{http_version} 确认自己走的是 HTTP/2,以及三条缓解路径。
curl
安全公告
HTTP2
CVE
Go 1.27 的 crypto/mldsa:签名 2420 字节,落到 TLS、JWT 和数据库列宽时的取舍
编程
Go 1.27 的 crypto/mldsa:签名 2420 字节,落到 TLS、JWT 和数据库列宽时的取舍
2026-11-10 21:04:58
Go 1.27 的 crypto/mldsa 把 FIPS 204 的 ML-DSA 带进标准库,API 很直白,麻烦在体积:公钥 1312 字节、签名 2420 字节起步。本文给出三组参数的确切字节数、Context 与确定性签名的用法、FIPS 模块下的报错,以及 TLS 握手、JWT 头部、数据库列宽三处真实取舍。
Go
密码学
TLS
JWT
PHP 8.6 的 Io\Poll:用 epoll/kqueue 做事件循环,和 stream_select 的差别与三个坑
编程
PHP 8.6 的 Io\Poll:用 epoll/kqueue 做事件循环,和 stream_select 的差别与三个坑
2026-11-10 21:02:48
PHP 8.6 通过 Polling API RFC 引入 Io\Poll,把注册与等待拆开,后端按平台走 epoll、kqueue 或 poll。本文给出可直接跑的 TCP 示例,说明与 stream_select 的真实差别,以及边缘触发要读到空、流必须非阻塞、watcher 注销要自理这三个坑。
PHP
事件循环
Socket
epoll
PECL 2027 年转只读、2029 年关站:Dockerfile 里的 pecl install 和 mbstring 得改了
编程
PECL 2027 年转只读、2029 年关站:Dockerfile 里的 pecl install 和 mbstring 得改了
2026-11-10 21:01:44
PECL 的退出时间表已经摆上桌面:2027-06-30 只读、2029-12-31 关站,中间还有四轮 brownout。本文整理 RFC 的日期节点、官方 PHP 8.6 镜像不再带 PECL 且不再预编译 mbstring 的具体变化,以及怎么在 Dockerfile 和 CI 里定位 pecl install、迁到 PIE。
PHP
PECL
PIE
Docker
goroutineleak profile:在 Go 1.27 生产环境定位卡在 channel 和锁上的 goroutine
编程
goroutineleak profile:在 Go 1.27 生产环境定位卡在 channel 和锁上的 goroutine
2026-11-10 20:03:05
Go 1.27 把 goroutineleak profile 转为正式特性:借 GC 三色标记的可达性分析,找出永久阻塞在 channel、select 或 sync 原语上的 goroutine。本文给出采集方式(net/http/pprof 的 /debug/pprof/goroutineleak 或 runtime/pprof)、pprof list 定位到具体发送行、四种真实泄漏模式(并发 worker 早返回、double send、timeout select、range 未 close)的修复方法,以及三条漏报限制和最坏 O(n²) 的性能代价。
Go
并发
pprof
性能
排查
Fleetd v0.3.0:让软路由主动连回后台,命令权限留在客户端
编程
Fleetd v0.3.0:让软路由主动连回后台,命令权限留在客户端
2026-11-10 20:01:42
Fleetd 是一个 MIT 开源自托管的服务器与软路由管理工具,v0.3.0 首版。本文拆它的几个设计取舍:客户端主动连回服务端以穿透 NAT、新机器先指纹批准、远程命令三级权限(monitor/allowlist/full)放在客户端本地、浏览器签名加客户端公钥校验、客户端更新用签名发布包,以及 Docker Compose 试用步骤和默认配置的注意事项。
Fleetd
运维
自托管
OpenWrt
Go
Google Play 订阅 RTDN 只是通知:三天不 acknowledge 自动退款,权限要按 subscriptionState 给
编程
Google Play 订阅 RTDN 只是通知:三天不 acknowledge 自动退款,权限要按 subscriptionState 给
2026-11-10 09:01:21
安卓订阅付费成功却不开通会员、开通三天后又被退款收回,多是把 RTDN 的 notificationType 当成了业务状态。这篇按官方文档理清处理链:通知只当触发器,状态以 purchases.subscriptionsv2.get 为准;三天 acknowledge 窗口、预付费的半分时长规则、ON_HOLD 与 CANCELED 的权限差异、revoke 主动退款、Pub/Sub 的 JWT 校验与幂等,以及 purchaseToken 与常见错误码。
GooglePlay
订阅支付
RTDN
服务端校验
Android
主库失联时先问从库:orchestrator 的 DeadMaster 判据与自动恢复三个闸门
综合
主库失联时先问从库:orchestrator 的 DeadMaster 判据与自动恢复三个闸门
2026-11-10 00:04:57
orchestrator 判定主库故障不靠单点探测:连不上主库之外,还要能连上从库且从库也确认看不到主库。本文拆死锁判据(DeadMaster 与 UnreachableMaster 的分界、UnreachableMasterWithLaggingReplicas 的重连动作),以及检测到之后为什么不一定会切:集群白名单、实例否决、3600 秒防抖三闸门,附 semi-sync 卡死默认不动的原因、提升前互斥开关与 MySQL 侧 slave_net_timeout 配置。
Orchestrator
MySQL
故障切换
高可用
复制拓扑
容器 OOMKilled,pprof heap 却只有 14.5MB:先把 Go 进程的内存账拆开
编程
容器 OOMKilled,pprof heap 却只有 14.5MB:先把 Go 进程的内存账拆开
2026-11-10 00:04:35
容器 OOMKilled 但 pprof heap 只有十几 MB,是统计对象混了:RSS 包含栈、runtime 元数据、未归还 OS 的 span 与 cgo/mmap,Go heap 只占其中一块。给出三分支判定表(非泄漏 / 泄漏 / churn)、heap 与 allocs 四视图与 ?gc=1 做差命令、GOMEMLIMIT 的计量口径与三条失效边界,以及该告警的 runtime/metrics 指标。
内存排查
Go
pprof
GOMEMLIMIT
运维
Argon2id 的 m 写在 hash 串里:一次 verify 可能吃掉 1 GiB,Go 和 PHP 都不拦
编程
Argon2id 的 m 写在 hash 串里:一次 verify 可能吃掉 1 GiB,Go 和 PHP 都不拦
2026-11-10 00:04:33
PHC 串自带 m/t/p,verify 只能按串内参数重算,于是「一次验证分配多少内存」由数据决定,不由你的配置决定。Go x/crypto/argon2 只拦 time/threads 过小、对 memory 无上界,libargon2 的结构校验上界约 0xFFFFFFFF 个 block;外部导入或被人写过的 hash 行就可能让一次校验吃掉 1 GiB。文内给可运行的 Go PHC 解析 + 策略钳制 + constant-time 比较代码,以及下界(弱 hash 植入)与存储、并发侧的落地检查。
Argon2id
密码哈希
PHC
Go
PHP
安全
ingestr 增量策略的两个坑:默认是 replace,delete+insert 缺边界就静默跳过
编程
ingestr 增量策略的两个坑:默认是 replace,delete+insert 缺边界就静默跳过
2026-11-10 00:03:46
ingestr 的 --incremental-strategy 默认是 replace,不是增量;delete+insert 依赖 --interval-start/--interval-end,边界既没显式给、又推不出来时会跳过 delete 和 insert 且不报错。附策略语义、incremental-key 该用哪类列、truncate+insert 移除后的升级、merge 的 NULL 主键差异与定位手段。
ingestr
数据摄取
增量同步
数据库迁移
Go
MySQL
PostgreSQL
docker prune 删完磁盘没降:未使用判定与三类残留探针
编程
docker prune 删完磁盘没降:未使用判定与三类残留探针
2026-11-10 00:03:34
docker image/system prune 报告 reclaim 了几 GB,df 却没动:一是「未使用」按容器引用判定,停止的容器仍算引用,volume 的引用链要等容器删除才断;二是 build cache 是独立记录,system prune 只清 dangling 部分;三是 json.log 与被 unlink 但仍打开的层文件不在任何 prune 范围内。附各命令对照表、ImagesPrune 的 dangling filter 坑与 df -v、lsof +L1 探针。
prune
Docker
运维实战
磁盘空间
大家都在搜索什么?
devops
易支付
一个官网+多少钱
统一接受回调
统一回调
python
sub
node
宝塔日志
mysql
shell
ElasticSearch
css
vue
api接口对接
2025
支付接口对接
go
php
php回调
上一页
1
2
3
4
5
6
7
…
350
下一页
共 350 页
到第
页
确定