程序员茄子
全部
编程
代码
资讯
案例
综合
联系我们
软件定制开发/软件按需定制 技术文章 · 第6页
php
mysql
shell
go
vue
css
api接口对接
支付接口对接
支付宝手机网站支付 alipay.trade.wap.pay 下单:product_code 写错不报错,pageExecute 的 GET 和 POST 别混
编程
支付宝手机网站支付 alipay.trade.wap.pay 下单:product_code 写错不报错,pageExecute 的 GET 和 POST 别混
2026-11-04 00:03:49
手机网站支付下单侧容易踩的四处:product_code 的 ALIPAY_WAP_PAY / QUICK_WAP_WAY 两代写法、pageExecute 返回自提交表单还是带 sign 的长链接、return_url 只做展示不能写订单状态、notify_url 必须公网可 POST,以及沙箱与生产参数成套切换和签名错误排查顺序。
支付宝手机网站支付
支付宝
手机网站支付
接口对接
PHP
签名验签
把 PHP 编译成原生二进制:TypePHP 的三条构建路径与它会卡住的语法
代码
把 PHP 编译成原生二进制:TypePHP 的三条构建路径与它会卡住的语法
2026-11-03 21:32:59
TypePHP 用 PHP 写了个自举的 AOT 编译器,把 PHP 源码降级成 C++17 再编译成原生二进制、PHP 扩展或共享库。本文给出依赖安装、tpc 用法、project.yml 关键字段、--nano 的能力裁剪,以及最关键的兼容性边界:全局作用域只能声明、必须 main()、变量变量不支持、Closure 不能重绑、生成器不是 Zend Generator、引用参数要 std::ref。附什么场景值得上、什么场景别硬套。
PHP
AOT
编译器
swoole
性能优化
opcache.jit=tracing 白掉 17% RPS:PHP tracing JIT 的 use-after-free 与 buffer_free 不回收
编程
opcache.jit=tracing 白掉 17% RPS:PHP tracing JIT 的 use-after-free 与 buffer_free 不回收
2026-11-03 21:31:41
把 PHP tracing JIT 打开当默认值,三天后又被退回关闭。原因有两层:热点落在 C 内建函数时 JIT 纯亏 17% RPS;多租户下 opcache_invalidate() 不回收 JIT buffer,buffer_free 永远不动。中间还踩到一个 php-src 的 use-after-free,修复随 8.4.26 / 8.5.11 发布。含 opcache_get_status 复现步骤与重开默认的三条前置条件。
PHP
OPcache
JIT
性能优化
use-after-free
Go 1.24 默认用 MPTCP 监听:Linux 内核 CVE-2026-98432 的排查与缓解
资讯
Go 1.24 默认用 MPTCP 监听:Linux 内核 CVE-2026-98432 的排查与缓解
2026-11-03 21:04:12
Linux 内核 CVE-2026-98432(IPv4 TCP options RCU UAF,CVSS 9.8)的利用前提是暴露 MPTCP 监听,而 Go 1.24 起把 multipathtcp 默认值改成 2,Go 服务在 Linux 上默认就是 MPTCP 监听。给出 ss -Mltnp / go version -m 排查、GODEBUG 与 sysctl 缓解,以及为什么关 MPTCP 不算修复。
Go
Linux
安全
PHP 8.6 的 Stream 错误 API:把 E_WARNING 换成可查询的 StreamError
编程
PHP 8.6 的 Stream 错误 API:把 E_WARNING 换成可查询的 StreamError
2026-11-03 21:04:11
PHP 8.6 新增 Stream 错误 API:StreamError / StreamException、StreamErrorStore / Mode / Code 枚举,加 stream_last_errors / stream_clear_errors,由 context 的 error_mode / error_store / error_handler 控制。讲清为什么默认 opt-in、错误存储按 stream 堆积怎么清、error_handler 里为什么不能再碰 stream。
PHP
错误处理
Stream
K8s 1.35.10 修了 namespaceSelector 负算子:被排除命名空间里的 Pod 不再参与打分
综合
K8s 1.35.10 修了 namespaceSelector 负算子:被排除命名空间里的 Pod 不再参与打分
2026-11-03 21:03:24
kube-scheduler 在 1.35.10 修了一个 bug:pod 反亲和的 namespaceSelector 用 NotIn / DoesNotExist 时,本应排除的命名空间里的 Pod 仍在参与节点过滤与打分。讲清怎么从 FailedScheduling 与落点偏差认出它、kubectl 核对命名空间标签、DoesNotExist 不等于命名空间不存在,以及升级后落点会变。
Kubernetes
调度
排障
MySQL 9.7 的 enable_cascade_triggers:级联外键会触发子表触发器,复制路径不对称
编程
MySQL 9.7 的 enable_cascade_triggers:级联外键会触发子表触发器,复制路径不对称
2026-11-03 21:03:24
MySQL 9.7 新增 enable_cascade_triggers(默认 OFF):打开后 CASCADE 与 SET NULL 能激活子表 BEFORE/AFTER 触发器,触发器随发起语句执行、报错连同级联一起回滚。row-based 复制只记结果不重跑触发器,statement-based 按源设置走,混用 binlog_format 会让副本审计表分叉。
MySQL
主从复制
触发器
curl 报 65 CURLE_SEND_FAIL_REWIND:PHP 8.6 用 CURLOPT_SEEKFUNCTION 让流式请求体可回卷
编程
curl 报 65 CURLE_SEND_FAIL_REWIND:PHP 8.6 用 CURLOPT_SEEKFUNCTION 让流式请求体可回卷
2026-11-03 21:02:16
流式请求体遇到 307/308 重定向、401 多轮认证或连接重试时,curl 无法回卷直接报 65。PHP 8.6 加了 CURLOPT_SEEKFUNCTION,回调按 offset/origin 定位并返回 OK/FAIL/CANTSEEK。给出文件流与只进流(临时文件落地)两种写法,以及 size_delivered 区分截断。
PHP
curl
接口对接
PHP 8.6 的 Io\Poll:替掉 stream_select 的 1024 fd 上限与全量扫描
编程
PHP 8.6 的 Io\Poll:替掉 stream_select 的 1024 fd 上限与全量扫描
2026-11-03 21:02:16
PHP 8.6 新增 Io\Poll 轮询 API,Linux 走 epoll、BSD/macOS 走 kqueue,绕开 stream_select 的 FD_SETSIZE 1024 上限和每次 O(n) 全量扫描。列出 Context/Watcher/StreamPollHandle 的用法骨架、异常分类,以及从 stream_select 迁移要先包装句柄、重核超时参数等注意点。
PHP
异步
网络编程
PHP 8.6 里 trim() 开始吃掉 \f:默认字符集、array_filter 的 ValueError 与一批弃用
编程
PHP 8.6 里 trim() 开始吃掉 \f:默认字符集、array_filter 的 ValueError 与一批弃用
2026-11-03 21:02:16
PHP 8.6 三处不改签名却改结果的变动:trim/ltrim/rtrim/chop 默认字符集加入 form feed 0x0C,CSV 与 PDF 抓文本的字段字节会静默变化;array_filter 非法 $mode 从静默按 0 处理改成抛 ValueError;ArrayIterator 一批方法与 spl_object_hash 开始弃用。
PHP
版本升级
兼容性
Go 1.28 的 map 哈希改动:小键改走 wyhash,int64(0) 和 uint64(0) 不再碰撞
编程
Go 1.28 的 map 哈希改动:小键改走 wyhash,int64(0) 和 uint64(0) 不再碰撞
2026-11-03 21:01:18
Go 1.28 换掉 UseAeshash,改成按微架构配置阈值 MinAeshashSize,小键改走 wyhash;接口哈希折入动态类型 typehash,map[any]any 里 int64(0) 与 uint64(0) 不再碰撞。附各平台基准数字、CL 号与三类会因此失真的业务代码。
Go
runtime
数据结构
Go 1.27 默认 500 个请求头就回 431:kube-apiserver 大批 group 用户被拒的排查
综合
Go 1.27 默认 500 个请求头就回 431:kube-apiserver 大批 group 用户被拒的排查
2026-11-03 21:01:18
Go 1.27 给 net/http 加了 MaxHeaderValueCount,默认 500 个 header value,超限返回 431。kube-apiserver 上 impersonate 或代理用户 group 超过 500 个就直接被拒,1.35.10 把上限提到 16384。讲清 431 与 413 的区别、头数量怎么数、curl 复现与 Go 侧配置。
Go
运维
Kubernetes
Go 1.28 的 PGO 能吃 perf 采样了:perf_to_profile 转换与样本列匹配的坑
编程
Go 1.28 的 PGO 能吃 perf 采样了:perf_to_profile 转换与样本列匹配的坑
2026-11-03 21:01:18
Go 1.28 的 PGO 现在能直接吃 Linux perf 采的 CPU profile:perf.to_profile 转换后 FromPProf 会挑出 cycles_event/count 这类 CPU 样本列。给出 perf record 到 go build -pgo 的完整命令链,以及 -pgo 只认单文件、采样频率、容器 CAP_PERFMON 等实操坑。
Go
性能优化
profile
Go 1.27 让 net/http 自动 drain:HTTP/1 连接复用从 710ms 到 150ms
编程
Go 1.27 让 net/http 自动 drain:HTTP/1 连接复用从 710ms 到 150ms
2026-11-03 20:03:41
只取 StatusCode 就 Close 的 HTTP/1 请求,Go 1.26 之前每次都丢连接重建,100 次请求 710ms。Go 1.27 让 Transport 自动异步 drain 未读响应体(上限 50ms / 256KB),代码不变降到 150ms。含手写 drain 四步演进、JSON 换行差一个字节的典型坑,以及 release notes 提示的反向风险。
Go
net
http
性能优化
HTTP
1.1
20 个定时任务挂了 12 小时零告警:systemd-run --user 在系统级服务里找不到总线
案例
20 个定时任务挂了 12 小时零告警:systemd-run --user 在系统级服务里找不到总线
2026-11-03 20:02:26
系统级服务里调 systemd-run --user --scope,缺 XDG_RUNTIME_DIR 导致连不上 /run/user/<uid>/bus,20 多个定时任务失败 188 次、看门狗全程无告警。完整排查链、三条探针命令,以及补环境变量、enable-linger、改 --service、改用系统级 service 四种修法的取舍。
systemd
Linux
运维
定时任务
故障排查
RocketMQ 发送全部失败:日志指向 10909,Broker 只监听了 10911
案例
RocketMQ 发送全部失败:日志指向 10909,Broker 只监听了 10911
2026-11-03 20:01:14
灰度上线后 RocketMQ 消息发送成功率掉到 0,Broker 指标全都正常,应用日志报 connect to <ip>:10909 failed。本文从端口特征入手,说清 VIP 通道端口为何是 listenPort-2、vipChannelEnabled 默认为 true 的来源,并对比开放 10909 与客户端关闭 VIP 通道两条修复路径的取舍。
RocketMQ
消息队列
排障
运维
Java
PayPal Webhook 验签 FAILURE 排查笔记:签名串、raw body 与验签通过后的掉单
代码
PayPal Webhook 验签 FAILURE 排查笔记:签名串、raw body 与验签通过后的掉单
2026-11-03 09:01:23
PayPal Webhook 验签失败时多数不是密钥问题:签名串是 transmissionId|timeStamp|webhookId|crc32(rawBody),crc32 必须是十进制、body 必须是原始字节;再加上 cert_url 白名单、webhook_id 环境混用两个坑。文末给出验签通过后仍掉单的四类原因与排查顺序。
支付
PayPal
Webhook
接口对接
排障
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
泛型
语言规范
编译错误
大家都在搜索什么?
devops
易支付
一个官网+多少钱
统一接受回调
统一回调
python
sub
node
宝塔日志
mysql
shell
ElasticSearch
css
vue
api接口对接
2025
支付接口对接
go
php
php回调
上一页
1
…
3
4
5
6
7
8
9
…
349
下一页
共 349 页
到第
页
确定