程序员茄子
全部
编程
代码
资讯
案例
综合
联系我们
软件定制开发/软件按需定制 技术文章
php
mysql
shell
go
vue
css
api接口对接
支付接口对接
聊天记录分桶存进 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
运维实战
磁盘空间
Go 1.28 给子进程加 Landlock:在 fork 与 execve 之间收紧权限
编程
Go 1.28 给子进程加 Landlock:在 fork 与 execve 之间收紧权限
2026-11-09 21:33:17
Go 1.28 把 Landlock 接进 syscall.SysProcAttr:UseLandlock、LandlockFD、LandlockFlags、NoNewPrivs 四个字段在 fork 与 execve 之间生效,只限制子进程,父进程不受影响,os/exec 和 os.StartProcess 都能用。但 Go 只负责应用 ruleset,不负责创建;Landlock 不支持时创建会直接失败,不会静默跳过。文中给出用 x/sys/unix 建 ruleset 并禁掉子进程建目录的可运行示例,以及这种沙箱管不到继承 fd、不替代容器的边界。
Go
Landlock
Linux
沙箱
安全
从 v3 迁到 go-yaml v4:改导入路径只是第一步,缩进和 Node 钩子会先暴露问题
编程
从 v3 迁到 go-yaml v4:改导入路径只是第一步,缩进和 Node 钩子会先暴露问题
2026-11-09 21:31:57
go-yaml v4.0.0 稳定版把 gopkg.in/yaml.v3 送进只收安全修复的状态。迁移时改导入路径只能算第一步:Dump 默认 2 空格缩进加紧凑序列,和 Marshal 的 4 空格输出不等价,要 WithV3Defaults()+WithLineWidth(-1) 才对得上;NewLoader/NewDumper 构造函数会返回 error;用 *yaml.Node 的自定义 UnmarshalYAML 钩子会直接报迁移错误,转换错误也从 *yaml.TypeError 变成 *yaml.LoadErrors。
Go
YAML
go-yaml
迁移
序列化
Redis 8.4.7 起 cluster bus 端口未认证会在启动时告警:先收敛 16379,再决定 protected-mode
编程
Redis 8.4.7 起 cluster bus 端口未认证会在启动时告警:先收敛 16379,再决定 protected-mode
2026-11-09 21:10:50
Redis Cluster 的 bus 端口(6379+10000)只有开 tls-cluster 才有认证,requirepass 管不到它。8.4.7 起节点启动会告警,并新增 cluster-bus-port-protected-mode。文中给 bind 与 nftables 收敛方案、明文集群不能直接设 yes 的顺序,以及 8.4.8 的 bus 溢出修复。
Redis
集群
运维
安全加固
OpenSSH 10.6p2:musl + 关闭 PAM 的构建存在密码绕过,升级后要手动重启 sshd
编程
OpenSSH 10.6p2:musl + 关闭 PAM 的构建存在密码绕过,升级后要手动重启 sshd
2026-11-09 21:09:28
OpenSSH 10.6p2 修的密码认证绕过需要 musl libc 加关闭 PAM 两个条件同时成立,发布时没有 CVE,扫描器可能扫不出来。包升级不会重启守护进程,必须手动 restart;文中给检查构建类型、查 Accepted password 日志、以及关掉密码认证的临时缓解。
运维
OpenSSH
安全补丁
Linux
MySQL 9.7.0 LTS 把 Hypergraph Optimizer 下放到社区版:慢的多表 JOIN 报表可以先在会话级试
编程
MySQL 9.7.0 LTS 把 Hypergraph Optimizer 下放到社区版:慢的多表 JOIN 报表可以先在会话级试
2026-11-09 21:08:09
MySQL 9.7.0 LTS 把 Hypergraph Optimizer 从商业版下放到社区版:传统 left-deep 枚举会漏掉多表 JOIN 的更优计划,超图加动态规划能搜更大空间。文中给 optimizer_switch 会话级开关、EXPLAIN ANALYZE 前后对比流程,以及哪些查询不值得开。
MySQL
查询优化
JOIN
版本升级
PHP 8.6 的 pack()/unpack() 端序修饰符:用 l>、l< 直接指定大小端
编程
PHP 8.6 的 pack()/unpack() 端序修饰符:用 l>、l< 直接指定大小端
2026-11-09 21:06:15
PHP 8.6 给 pack()/unpack() 增加 < 与 > 端序修饰符,可接在 s/S/l/L/q/Q 与 f/d 后面,直接指定小端或大端,不再依赖机器字节序,也不用 strrev 拼 64 位整数和浮点。文中给新旧写法对照与协议头解析示例。
PHP
二进制
网络协议
版本升级
大家都在搜索什么?
devops
易支付
一个官网+多少钱
统一接受回调
统一回调
python
sub
node
宝塔日志
mysql
shell
ElasticSearch
css
vue
api接口对接
2025
支付接口对接
go
php
php回调
上一页
1
2
3
4
5
6
7
…
350
下一页
共 350 页
到第
页
确定