程序员茄子
全部
编程
代码
资讯
案例
综合
联系我们
软件定制开发/软件按需定制 技术文章
php
mysql
shell
go
vue
css
api接口对接
支付接口对接
用 @tanstack/ai-vue 接流式对话:SSE 端点、useChat 与工具审批
代码
用 @tanstack/ai-vue 接流式对话:SSE 端点、useChat 与工具审批
2026-11-12 21:32:08
用 @tanstack/ai-vue 在 Vue 3 里接流式 AI 对话:服务端 chat() + toServerSentEventsResponse 返回 SSE,客户端 useChat 必须传 threadId、connection 与 fetcher 二选一,返回值是只读 ref;toolDefinition 一份定义服务端客户端共用,needsApproval 通过 interrupts 审批,并给出什么情况下不值得引入这套 SDK。
Vue
TypeScript
大模型
SSE
开源项目
Pinia Colada 实战:query key、enabled 与缓存失效的坑
编程
Pinia Colada 实战:query key、enabled 与缓存失效的坑
2026-11-12 21:31:30
Pinia Colada 在 Vue 3 里做数据获取层的实操记录:query key 必须是函数、inject 在 query 函数里重拉时失效、store 里消费 query 会让它永生、enabled 暂停共享查询、分页用 placeholderData 保留旧数据、清缓存要先 cancel 再 remove、setQueryData 会强置 status=success。
Vue
Pinia
前端
缓存
TypeScript
MySQL 9.7 弃用 FLUSH PRIVILEGES:多数脚本里它本来就多余,顺手把 Connection Control 换成组件
编程
MySQL 9.7 弃用 FLUSH PRIVILEGES:多数脚本里它本来就多余,顺手把 Connection Control 换成组件
2026-11-12 21:06:19
MySQL 9.7 把 FLUSH PRIVILEGES 标为弃用,执行即产生 warning,FLUSH_PRIVILEGES 权限、mysqladmin flush-privileges/reload 也在弃用清单里。而这条语句在 GRANT/REVOKE 之后本来就是冗余的,真正受影响的是一堆初始化 SQL 和运维脚本。另附 Connection Control 从插件换成 component_connection_control 的替换顺序,以及失败登录计数表搬到 performance_schema 后的监控改法。
MySQL
数据库运维
权限管理
升级
Go 1.28 小 key 哈希从 AES 换成 wyhash:swissmap 转正后,旧 map 基准不再可比
编程
Go 1.28 小 key 哈希从 AES 换成 wyhash:swissmap 转正后,旧 map 基准不再可比
2026-11-12 21:04:33
Go 1.28 把 map 小 key 的哈希从 AES 换成 wyhash,阈值按微架构不同:Zen 4 是 8 字节、Apple M1 Max 是 16 字节,arm64 的延迟阈值还没做。同时 swissmap 成为唯一实现,mapaccess2 被内联进 mapaccess1,interface key 的哈希折入动态类型 typehash。文章说明为什么这意味着旧 map 基准不再可比、GOEXPERIMENT=swissmap 失效。
Go
运行时
哈希表
性能
nginx 1.31.0 拒收 h2/h3 里的 Connection、Keep-Alive:先排查前面那台 1.1 网关
综合
nginx 1.31.0 拒收 h2/h3 里的 Connection、Keep-Alive:先排查前面那台 1.1 网关
2026-11-12 21:04:23
nginx 1.31.0 按 RFC 9113 强制校验:HTTP/2、HTTP/3 请求里出现 Connection、Proxy-Connection、Keep-Alive、Transfer-Encoding、Upgrade,或 TE 不是 trailers,一律拒绝。以前这些字段只是被忽略,现在会直接挂。文中给出三类高危链路(自研 SDK 复用 1.1 头表、1.1 网关回源透传、h2 里发 Upgrade)、抓包复现与十步升级检查清单。
nginx
HTTP
2
运维
反向代理
Go 1.28 开发分支:复合字面量按目标类型省略,函数参数、append、switch 已支持
编程
Go 1.28 开发分支:复合字面量按目标类型省略,函数参数、append、switch 已支持
2026-11-12 21:03:06
Go 1.28 开发分支已经落地讨论十年的提案 #12854:复合字面量在目标类型可推断时可省略元素类型,覆盖 struct 字面量、函数参数、append、copy、delete、switch 和与有类型操作数的比较。文中列出已合入的 CL、仍走旧规则的边界(两侧都无类型的比较)、go 指令决定语言版本,以及用 -lang 对比验证的办法。
Go
语言提案
类型推断
编译器
Rolldown 1.3 把 preserveModules 文件名改回 Rollup 规则:data.json 变成 data.json.js
代码
Rolldown 1.3 把 preserveModules 文件名改回 Rollup 规则:data.json 变成 data.json.js
2026-11-12 21:01:56
Rolldown 1.3.0 是 minor 版本,但两处变更会让升级卡住:preserveModules 的文件名开始遵循 Rollup,data.json 变成 data.json.js、Comp.vue 变成 Comp.vue.js,把 exports 指向旧文件名的库要跟着改;CLI 的 --input 不能再和位置参数入口混用。另附 import attributes 实验开关、构建报告目录,以及为什么不应在 Vite 里用 overrides 强灌 1.3.0。
Rolldown
Vite
前端构建
打包工具
Go 1.27.4 / 1.26.11 修 12 个 CVE:先重建 net/http 服务,再处理 --sysroot 构建失败
编程
Go 1.27.4 / 1.26.11 修 12 个 CVE:先重建 net/http 服务,再处理 --sysroot 构建失败
2026-11-12 20:02:30
Go 1.27.4 与 1.26.11 一并修 12 个 CVE:11 个在 cgo 构建链,1 个是 net/http 里 MaxBytesReader 超限时写 Connection: close 的竞态崩溃。前者要换工具链、后者要重新构建并重部署。附 12 个 CVE 对照表、--sysroot 与 -target 被拒后交叉编译报 invalid flag 的两种修法及取舍、用 toolchain 行钉补丁版本,以及 govulncheck 查不到标准库点版本时如何确认。
Go
安全
CVE
cgo
构建
PHP 8.5.12 升级笔记:两个未授权 RCE 的缓解配置,以及几条会反噬的“土办法”
编程
PHP 8.5.12 升级笔记:两个未授权 RCE 的缓解配置,以及几条会反噬的“土办法”
2026-11-12 20:01:24
PHP 8.5.12 / 8.4.27 / 8.3.36 / 8.2.35 修复两个 CVSS 9.2 的未授权 RCE(CVE-2026-109618 OOM 半初始化、CVE-2026-109619 残留全局状态)。给出 FPM pool php_admin_value 下发 memory_limit=-1、post_max_size 组合、session.upload_progress.enabled=0、fatal_error_backtraces=0 的可复制写法,说明为什么 RLIMIT_AS/RLIMIT_DATA 是反坑、ini_set() 与 .user.ini 无效,并附同批 8.5.11 的 FPM IPv6 ACL 绕过与 OpenSSL 回退 CN 等修复清单和升级后验证步骤。
PHP
安全
运维
PHP-FPM
CVE
只下交易账单永远对不上银行到账:微信资金账单里的手续费与逐笔余额
代码
只下交易账单永远对不上银行到账:微信资金账单里的手续费与逐笔余额
2026-11-12 09:02:51
对账时订单数对得上、金额却总差一截,差额正好等于当天手续费——因为只下了交易账单。这篇讲微信资金账单 /v3/bill/fundflowbill 与 tradebill 的口径差:一笔支付在资金账单里是「交易收入 + 手续费支出」两行,充值/提现/分账/代金券只在资金账单里;三个账户(BASIC/OPERATION/FEES)要分别下、分别校验。附 Go 解析片段:每行字段前的反引号怎么剥、汇总行怎么识别、用账户结余做逐笔连续性校验,以及记账时间不等于退款成功时间、3 QPS、次日 10 点后取、只保留近三个月这些边界。
微信支付
对账
资金账单
Go
CSV
MySQL 报 ERROR 1461(max_prepared_stmt_count 16382):先看 Com_stmt_close 是不是 0
案例
MySQL 报 ERROR 1461(max_prepared_stmt_count 16382):先看 Com_stmt_close 是不是 0
2026-11-12 00:04:59
MySQL 抛 ERROR 1461「Can't create more than max_prepared_stmt_count statements (current value: 16382)」时,用 Com_stmt_prepare/Com_stmt_close 的差值判断是语句泄漏还是配额不够;说清全局配额与每连接缓存的乘法关系、PDO 与 Connector/J 的默认模式,以及 performance_schema 定位持有语句最多的连接。
预处理语句
MySQL
prepared
statement
数据库排障
nf_conntrack: table full 排障:count/max 看不出丢包,判据在 drop 列与 hashsize
编程
nf_conntrack: table full 排障:count/max 看不出丢包,判据在 drop 列与 hashsize
2026-11-12 00:04:36
应用侧只报 i/o timeout、connection refused,真正线索是 dmesg 里的 nf_conntrack: table full, dropping packet。这篇讲清判据:先看 /proc/net/stat/nf_conntrack 的 drop、early_drop、insert_failed 累计列,而不是盯 count/max 使用率;再讲 max 默认等于 buckets、只加 max 不加 hashsize 只加长链、buckets 只在初始 netns 可写、容器每 netns 独立表导致宿主机看不出、sysctl -p 在模块未加载时静默失败,以及止血与找源的顺序。
运维排障
nf_conntrack
netfilter
网络排障
Linux运维
验签总差在 `%21` 和 `!` 之间:空格、`~`、`!` 在三套 URL 编码规则里的分歧
编程
验签总差在 `%21` 和 `!` 之间:空格、`~`、`!` 在三套 URL 编码规则里的分歧
2026-11-12 00:04:04
同一串参数值在 PHP urlencode、rawurlencode、Go QueryEscape、PathEscape、JS encodeURIComponent 下输出不同:空格是 + 还是 %20、~ 是 %7E 还是原样、! 编不编码。附五函数输出对照、Go 源码里的 encodePathSegment 分支,以及签名验签不一致时的逐层排查顺序。
URL编码
PHP
Go
JavaScript
签名
接口对接
同一用户并发请求排队、CPU 却不高:PHP 会话锁的持有边界与后端默认值
编程
同一用户并发请求排队、CPU 却不高:PHP 会话锁的持有边界与后端默认值
2026-11-12 00:03:49
PHP 默认 files 会话在 session_start() 时对会话文件取 flock 排他锁,同一 session 的并发请求被串行化:FPM worker 打满但 CPU 不高、慢日志时间花在 session_start()。给出现象判据、strace/lsof 证据链、session_write_close 与 read_and_close 的持锁边界,以及 memcached 默认加锁、phpredis 默认不加锁的差异和 Redis 会话的三个配置约束。
会话状态
PHP
Session
并发
Redis
Web
微信支付退款 ABNORMAL:钱已从基本户扣出,停在退款中间账户
编程
微信支付退款 ABNORMAL:钱已从基本户扣出,停在退款中间账户
2026-11-12 00:03:35
微信支付退款单状态 ABNORMAL 不是退款失败:资金已从基本户扣出、停在退款中间账户。分清申请阶段 403 USER_ACCOUNT_ABNORMAL、终态 CLOSED 与 ABNORMAL 三种「退款异常」,给出 apply-abnormal-refund 的路径、原退款单号规则、type 两种处理的取舍与 Go 侧状态分流。
退款异常
微信支付
支付接口
ABNORMAL
接口对接
GoBackup:一个 Go 二进制,把数据库和目录按 cron 备份到 20+ 种存储
编程
GoBackup:一个 Go 二进制,把数据库和目录按 cron 备份到 20+ 种存储
2026-11-11 21:34:14
GoBackup 是 Go 写的单二进制备份工具,一份 YAML 把 MySQL/PG/Redis 和目录按 cron 推到 S3/OSS/SCP 等 20 多种存储。这篇记配置结构、keep 回收、加密与热重载命令,以及它不负责恢复这件事。
GoBackup
备份
MySQL
PostgreSQL
YAML
lazysql:用 Vim 键位在终端连库,跑完 SELECT 就回代码
编程
lazysql:用 Vim 键位在终端连库,跑完 SELECT 就回代码
2026-11-11 21:33:01
lazysql 是 Go 写的终端数据库客户端,Vim 键位 + 三栏 TUI,支持 MySQL/PG/SQLite/MSSQL/ClickHouse。这篇记录安装、连接串与 TOML 配置写法,以及 ReadOnly 只读开关为什么要给生产库打开。
lazysql
Go
MySQL
PostgreSQL
终端工具
MySQL 9.7 升级后 DDL 被拒:先读 SHOW WARNINGS,再决定用 INPLACE 还是升 9.7.4
编程
MySQL 9.7 升级后 DDL 被拒:先读 SHOW WARNINGS,再决定用 INPLACE 还是升 9.7.4
2026-11-11 21:08:26
MySQL 9.7 早期为了修 B 树死锁把索引记录大小估算改准了,副作用是 CREATE TABLE / ALTER TABLE 校验变严,一些更早 LTS 能过的表定义被拒或出告警。9.7.4 回退了多数 DDL,但 ALGORITHM=INSTANT 仍严格。文章给排查顺序、核对列与前缀索引的 SQL,以及两条处理路径的代价。
MySQL
DDL
升级
排障
PHP 8.6 的 Time\Duration:把超时和退避延迟换成带纳秒精度的值类型
代码
PHP 8.6 的 Time\Duration:把超时和退避延迟换成带纳秒精度的值类型
2026-11-11 21:07:09
PHP 8.6 新增 Time\Duration:final readonly、纳秒精度的固定时长值类型,没有天/月这类日历单位所以长度无歧义。文章讲清工厂方法、四则运算、比较与排序回调、约 292 年上限,以及何时该用它替换 int 毫秒、何时该继续用 DateInterval 或落成数值。
PHP
8.6
时间处理
类型设计
Go 1.27 升级笔记:编译能过,先响的是 vet、gofmt 和 go.mod diff
编程
Go 1.27 升级笔记:编译能过,先响的是 vet、gofmt 和 go.mod diff
2026-11-11 21:06:37
Go 1.27 的语言没有变动,升级后先响的是工具链:go test 默认跑 stdversion vet、go mod tidy 会把重复 require 块并成两块、gofmt 的列对齐判定改了会带来空白 diff、go tool trace 只传端口时只绑 localhost。文章还覆盖 vet 对 %w 包指针的新报告和已移除 GODEBUG 开关的处理,并给落地顺序。
Go
工具链
CI
升级
MySQL 9.7 的 enable_cascade_triggers:级联动作会激活子表触发器,但这个变量已标弃用
编程
MySQL 9.7 的 enable_cascade_triggers:级联动作会激活子表触发器,但这个变量已标弃用
2026-11-11 21:05:14
MySQL 9.7 新增会话变量 enable_cascade_triggers,默认关闭。打开后 SQL 层外键的 CASCADE / SET NULL 会在子表行上激活触发器,触发器报错会让整条语句连级联变更一起回滚。文章给核查 SQL、三类误开症状,并指出这个变量在 9.7.0 清单里已被标为弃用。
MySQL
触发器
外键
数据一致性
MySQL 9.7.4 起用四段式版本号:驱动无感,巡检脚本会漏
编程
MySQL 9.7.4 起用四段式版本号:驱动无感,巡检脚本会漏
2026-11-11 21:04:32
MySQL 9.7.4 起,服务端多了 `MAJOR.MINOR.PATCH.UPDATE` 四段式精确版本标识,但 `VERSION()`、经典握手和既有 API 仍是三段。结果是驱动无感、而用正则抓三段版本号的巡检脚本会把同一条 patch line 上的两次更新压成同一个值。这篇讲清取值方式与灰度比对写法。
MySQL
版本管理
运维
监控
MySQL 9.7 的 innodb_log_writer_threads 默认值:log_bin、核数与 cpuset 一起决定
编程
MySQL 9.7 的 innodb_log_writer_threads 默认值:log_bin、核数与 cpuset 一起决定
2026-11-11 21:03:46
MySQL 9.7 改了 innodb_log_writer_threads 的默认值判定:log_bin=OFF 时只要超过 4 个逻辑 CPU 就开线程,而 log_bin=ON 仍沿用 32 核门槛。加上 9.7 开始按 cpuset 计算可用核数,容器绑核会让默认值在边界上翻转。这篇给规则表、核查命令和取舍判断。
MySQL
InnoDB
性能调优
容器
PHP 8.6 的 Stream 错误模型:用 `error_mode` 把 warning 变成 `StreamException`
编程
PHP 8.6 的 Stream 错误模型:用 `error_mode` 把 warning 变成 `StreamException`
2026-11-11 21:01:58
PHP 8.6 给流操作加了统一的错误 API:`error_mode` 可选保持 warning、抛 `StreamException` 或静默,`error_store` + `stream_last_errors()` 提供结构化错误和 50 多个语义错误码。文章讲清必须显式挂在 context 上、为什么不允许全局生效,以及哪些代码值得改造、哪些别碰。
PHP
8.6
异常处理
I
O
大家都在搜索什么?
devops
易支付
一个官网+多少钱
统一接受回调
统一回调
python
sub
node
宝塔日志
mysql
shell
ElasticSearch
css
vue
api接口对接
2025
支付接口对接
go
php
php回调
上一页
1
2
3
4
5
6
7
…
351
下一页
共 351 页
到第
页
确定