自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(138)
  • 收藏
  • 关注

原创 MySQL 事务的“暗面”与“高光”:故障、调优与案例复盘

再优雅的设计,也挡不住真实的故障。事务持有行锁 30 秒,触发 innodb_lock_wait_timeout,被 MySQL 强制回滚。调整 innodb_flush_log_at_trx_commit=1 保证每次提交都 fsync。打开 innodb_buffer_pool_size 到物理内存的 60%–70%,减少磁盘 IO。开启 innodb_undo_log_truncate,定期收缩 Undo 表空间。打开 innodb_print_all_deadlocks,日志会打印完整死锁图。

2025-09-02 14:02:04 316

原创 MySQL 事务:从 ACID 到现实世界——概念、机制与落地全景

在 MySQL 的疆域里,事务不是可有可无的“插件”,而是整个系统得以被信任的“宪法”。无论是一条转账指令,还是一次库存扣减,只要跨越了多个步骤,就必须让事务出面,确保“要么全部成功,要么全部失败”。通过 MVCC,InnoDB 让“读”与“写”互不阻塞:写操作创建新版本,读操作访问旧版本,既保证一致性,又提升吞吐量。脏读:事务 A 读到事务 B 未提交的修改,结果 B 回滚,A 读到的就是“幽灵数据”。Read Uncommitted:最低隔离,几乎无锁,速度最快,但会出现“脏读”。

2025-09-02 14:01:19 907

原创 PHP 与“前端后移”——一场关于边界、职责与协同的深度对话

开发者把鉴权、灰度、AB 实验逻辑写成 50 行 PHP 脚本,部署到离用户最近的 300+ PoP 节点,RTT 从 120 ms 降到 20 ms,而无需关心 Node/npm 依赖地狱。前端团队把 Nuxt、Next.js 的渲染函数“下沉”到 PHP 容器:通过 V8Js 扩展或 QuickJS FFI,在 PHP 进程内执行打包后的前端 bundle,实现毫秒级 SSR。技术选型回到本质:让正确的人,在正确的时间,用正确的工具,解决正确的问题。PHP,又一次证明了自己的“正确性”。

2025-08-26 17:29:26 407

原创 从“脚本语言”到“企业级引擎”——PHP 在 2025 年技术栈中的再定位

更有趣的是,PHP 早已不是简单“嵌入 HTML 的小脚本”,它正以“可观测、可伸缩、可治理”的姿态,重新成为企业级技术栈里的关键一环。2025 年双 11 期间,阿里云函数计算公布的数字显示,PHP 函数在峰值流量里承担了 42% 的 QPS,却只占整体费用的 21%,成为“性价比之王”。通过 php-fpm_exporter、nginx-vts-exporter、mysql_exporter,把运行时的 QPS、延迟、队列长度实时写入 Prometheus,再经由 Grafana 统一展现。

2025-08-26 17:28:18 464

原创 Linux 桌面“无声崩溃”排查记:一次 4K 屏掉帧背后的心智模型升级

4K 144 Hz 的高分辨率帧缓需要持续高速 DMA,但 CPU Package 频繁进 C10 导致 PCIe 唤醒延迟,于是 GPU Video 引擎空转等数据,掉帧。本文用“观察—假设—验证—修复”四步,复盘这次无声的崩溃,并总结出一套“桌面性能心智模型”。周五下午,开发小哥阿良把崭新的 4K@144 Hz 显示器接上 Linux 工作站,满怀期待打开 VS Code,结果鼠标一滑就掉帧。当你拥有一套“四象限心智模型”,就能把“玄学掉帧”变成“可观测、可复现、可修复”的工程问题。

2025-08-20 23:57:14 283

原创 把 Linux 当“乐高”:一行命令都不敲,也能完成系统裁剪与自动化部署

把镜像 dd 进 U 盘,插入工控机,3 秒启动,SSH 默认开,登录即提示“Welcome to Custom Linux 1.0”。A:Yocto-as-a-Service 已内置 ARM64、riscv64、x86_64 三种交叉工具链,下拉菜单选即可。只读 rootfs:在 kas 的图形界面勾选 “read-only-rootfs”,自动生成 dm-verity 哈希。当 Linux 的工具链容器化、云端化、可视化之后,“系统裁剪”不再是内核黑客的专利,而是产品经理也能玩的乐高。

2025-08-20 23:56:36 563

原创 Linux Namespace 隔离的“暗面”——故障排查、认知误区与演进蓝图

当运维不再关心容器里到底是 Namespace 还是 Hypervisor,当开发者不再写“兼容多环境”的 if-else,当安全工程师不再逐条审计 cap_sys_admin 时,Namespace 才真正完成了它的使命——让技术细节消失在业务价值之后。• 路径 C:利用 ptrace 附加到宿主机进程 → 防御:echo 1 > /proc/sys/kernel/yama/ptrace_scope。/ns 的 setns 仍可重新加入宿主机命名空间,需配合 seccomp 禁止 setns 系统调用。

2025-08-19 18:46:46 477

原创 从“为什么”到“怎么做”——Linux Namespace 隔离实战全景地图

真正的难点永远不是“能不能隔离”,而是“隔离之后如何交付、如何运维、如何持续演进”。Cgroup Namespace(常被误称为第七 Namespace):提供 cgroup 视图隔离,常与上面六维组合使用,形成“资源视角”的二次封装。C. 风险收益:故障爆炸半径从“整台虚机”降到“单个 Namespace”,配合 cgroup 的硬限制,可实现故障自愈而非人工救火。Namespace 的价值就在于:用极低的额外开销换来“足够好”的隔离边界,为更高阶的弹性、密度、成本优化奠定底座。

2025-08-19 18:46:16 434

原创 实战视角:同一套业务用 Vue 3 与 React 18 各写一遍,我们收获了什么?

团队 6 人,分两组:3 人用 Vue 3 + Nuxt 3,3 人用 React 18 + Next 13 App Router。周期 6 周,交付同一套视觉稿、同一套 API。React:create-next-app 同样 3 分钟,但需手动装 Tailwind、Zustand、React-Hook-Form。React:React-Hook-Form 性能极优,但 rules 需写成对象,嵌套字段可读性略差。| 指标 | Vue 3 + Nuxt | React 18 + Next | 备注 |

2025-08-18 23:55:07 576

原创 十年回望:Vue 与 React 的设计哲学、演进轨迹与生态博弈

本文尝试脱离语法层面,用“设计哲学—演进轨迹—生态博弈”三段式,拆解 Vue 与 React 的底层差异。十年后,我们或许不再讨论“Vue vs React”,而是讨论“如何在一个项目里混合使用 Vue Compiler 与 React Server Components”。Vue 的 UniApp、React 的 React Native/Expo 都在争夺“一次编写,多端运行”终极入口。Vue Vapor、React Forget 都在把“框架运行时”编译掉,未来可能只剩“编译器插件”。

2025-08-18 23:54:12 1091

原创 Linux 桌面到工作站的“性能炼金术”——开发者效率的 6 个隐形瓶颈与破解方案

当你理解“调度器、I/O、内存、图形、热控、电源”六条主线后,就能像调乐器一样,把一台通用 Linux 调成最适合自己工作流的“私人工作站”。问题往往不在硬件,而在“隐形瓶颈”:调度、I/O、内存压缩、图形栈、热管理、电源策略。临时:echo 50000 > /proc/sys/kernel/sched_migration_cost_ns;Linux 桌面/工作站的性能问题,大多不是缺硬件,而是“默认配置”与“实际场景”错配。场景:编译 AOSP 时,CPU 温度 95 ℃,频率瞬间掉到 1 GHz。

2025-08-13 23:56:02 458

原创 把 Linux 装进“小盒子”——边缘计算场景下的 Linux 裁剪、启动与远程运维全景指南

在数据中心里,我们习惯把 Linux 当成“无限资源”:几十 GB 内存、TB 级磁盘、万兆网络。但在边缘网关、工业控制器、车载 ECU 甚至智能摄像头上,硬件预算可能是 256 MB RAM、512 MB 存储、一颗 ARM Cortex-A7。于是,Linux 必须被“塞进小盒子”:既要保留完整 TCP/IP、容器、OTA 升级能力,又要砍掉桌面、文档、编译器。把 Linux 塞进小盒子,不是简单的“裁剪”,而是一次系统工程、成本工程、合规工程的全面考验。

2025-08-13 23:55:32 525

原创 从裸机到云原生:Linux 操作系统实战进阶的“四维跃迁”

原因在于:Linux 的实战场景已从“单台服务器”跃迁到“云-边-端混合操作系统”。本文用“四维跃迁”模型——单机、集群、容器、云原生——帮你完成从 80 分到 95 分的跨越。但一到生产环境,面对“高可用”“弹性伸缩”“安全合规”就束手无策。从裸机到虚拟机,从 Docker 到 Kubernetes,再到 Serverless,Linux 的每一次跃迁都伴随着新的抽象层。当你能在“单机-集群-容器-云原生”之间自由切换,你就拥有了驾驭任何操作系统、任何云平台的核心能力。

2025-08-12 22:41:17 717

原创 从第一次敲下 ls 到线上救火:Linux 操作系统「入门—进阶—实战」全景路线图

十年后的今天,我已经可以在公交上用手机连上服务器,淡定地扩容磁盘、重启故障的 Nginx,而旁边的乘客以为我在回微信。软件生态:包管理器(apt、yum、dnf)如同手机应用商店,PPA 或 Snap 则是第三方市场。目录树:把“一切皆文件”翻译成生活比喻——根目录是城市中心,/bin 是警察局,/etc 是市政公告栏,/var/log 是信访办。掌握这三兄弟后,再遇到“系统卡成 PPT”你就不会盲目重启,而是像侦探一样先定位凶手。愿下一次黑屏闪烁时,你不再害怕,而是兴奋地说:“嘿,老朋友,又见面了。

2025-08-12 22:40:18 461

原创 把算法“读成故事”——用叙事感拆掉入门的三道墙

把算法讲成故事,就是把抽象符号还原成人话。当你把优化动机讲成“人物成长”,就不再是“时间复杂度从 O(2ⁿ) 变成 O(n²)”这种冷冰冰的话,而是“小工如何摆脱加班”的爽文。当你能把“红黑树”讲成“宫廷斗争”,把“最短路径”讲成“快递小哥的 GPS”,你就拥有了“可讲述的记忆”。当你把数据结构“人格化”,记忆就不再是“下标越界”“指针悬空”,而是“士兵太呆板”“侠客太随性”。• 把“复杂度”翻译成“心跳次数”——10 次心跳 vs 1000 次心跳。• 弱点:两个名字撞抽屉,就得用“拉链”或“再探”。

2025-08-11 17:22:57 555

原创 从零开始的算法成长地图——先把“为什么”想清楚,再谈“怎么做”

很多初学者一听到“算法”就条件反射地想到奥赛、ACM、LeetCode 的“红绿配色”。其实,算法的本质是一套“做事的步骤”。代码只是算法的“肉身”。• 每学一个算法,画一张“故事板”:输入长什么样、中间态如何变化、输出如何呈现。自救:先读图解类入门书,把“图、树、堆”这些概念变成“朋友圈可见的笔记”。当你能把“算法思维”迁移到工作、生活、甚至人际沟通里,才算真正“入门”。• 让朋友当“人肉 CPU”,按你的流程走一遍,看会不会卡壳。• 把 bug 还原成“算法决策错误”,而不是“代码写错”。

2025-08-11 17:22:24 391

原创 AutoML 的下半场——从“模型选择”到“端到端业务闭环”

第一次浪潮(2016-2020)以 Google AutoML Tables、H2O Driverless AI 为代表,核心卖点是“自动选模型、自动调超参数”,把数据科学家从 Grid Search 中解放出来。AutoML 的终极目标不是“干掉数据科学家”,而是让数据科学家把 80% 的时间从“调包、调参”转向“定义业务目标、解释模型行为”。于是,AutoML 进入下半场:端到端业务闭环。AutoML-Ops:把 CI/CD、FinOps、合规全部自动化,数据科学家只需定义“业务目标 + 约束”;

2025-08-09 23:53:51 634

原创 大模型“涌现”背后的暗线——规模、数据、目标函数的三重协奏

2023 年 5 月,GPT-4 Technical Report 里轻描淡写的一句话——“在 100B 附近出现显著性能跃迁”——点燃了全球对“涌现(emergence)”的狂热。当我们把“有效参数密度”“结构化多样性”“多梯度目标”做成可调旋钮,“涌现”就能从黑天鹅变成白天鹅。强化学习目标:RLHF 把“人类偏好”编码为奖励信号,相当于在隐空间引入“第二梯度”,促使模型学习隐式规划;评估盲区:传统基准(GLUE、MMLU)只在“平均性能”上呈现涌现,若拆到子任务,跃迁往往呈“阶梯状”。

2025-08-09 23:53:15 301

原创 机器学习工程化 3.0:从“实验科学”到“持续交付”的 7 个关卡

收益:当上游业务把“age”字段从 INT 改成 STRING,CI 立刻失败,避免下游模型训练“静默踩坑”。当数据、特征、模型、资源、成本全部可管、可控、可追溯,机器学习才真正走出实验室,成为企业生产流水线的一环。第 61-90 天:接入 FinOps,GPU 利用率从 42% 提升到 78%,成本下降 35%。第二代要解决“跨团队复用”。背景:推荐团队 6 人,维护 23 个模型,GPU 成本每月 50 万美金。成本策略:低优任务用 Spot,高优任务用 On-Demand,自动竞价。

2025-08-07 23:55:01 534

原创 从“炼金术”到“工程学”:深度学习十年范式变迁与未来十年路线图

彼时,训练一个 60M 参数的模型需要 6 天、两块 GTX 580,调参如同炼丹:学习率、动量、Dropout 全靠“拍脑袋”。PyTorch 的“动态图 + Python 优先”赢得社区,但 JAX 的“函数式 + 并行原语”正在下一代大模型中崛起。取决于谁能先解决“万亿参数、万卡训练”的工程细节。Weights & Biases、Neptune 等平台把“训练日志”变成“交互式报告”,支持按 Token、按层、按专家维度钻取异常。RLHF、DPO、KTO 让模型学会“说人话”,而非“背数据”。

2025-08-07 23:54:30 923

原创 AI 原生 IDE 的崛起:当集成开发环境变成“智能同事”

据腾讯透露,CodeBuddy 正与微信开发者工具链打通,未来小程序开发者可在聊天窗口直接说“把首页 Banner 改成轮播”,IDE 自动改 WXML、WXSS、JS,并提交 Git 记录。”AI 会给出 diff,并自动更新测试文件。设计师在 Figma 画好登录页,直接拖进 IDE,AI 识别图层结构,生成 React + Tailwind 组件,并自动补齐无障碍属性。为防止开发者无节制调用云端大模型,企业管理员可设置“Token 预算”,超出后 IDE 自动降级到本地轻量模型,并生成成本报告。

2025-08-05 23:47:11 423

原创 当代码开始自写:AI 编程如何重塑“开发者”三个字

这一幕,正是 AI 编程新时代的缩影:代码开始自己写自己,人类第一次真正退到“导演”的位置。AI 编程新时代的最大启示,不是“程序员将消失”,而是“不会指挥 AI 的程序员会被淘汰”。2027 年,OpenAI 发布“Dev-GPT-7”,只需一句“做一个类似抖音的 App”,即可在 30 分钟内生成完整前后端、推荐算法与运维脚本。每周一次的“AI Retro”会议正在硅谷流行:团队围坐,复盘 AI 在上周生成了多少代码、引入多少 Bug、节省多少人时,并把新的边界条件沉淀成“提示规范”。

2025-08-05 23:46:41 545

原创 从“静态文件”到“可编程配置”——Nacos 引领的配置中心演进之路与落地心法

更进一步,Nacos 提供了“配置追踪”功能:把配置变更事件与业务监控指标(如错误率、RT、订单量)自动关联,形成一张“时间轴”。这些诉求逼迫我们把配置从“静态文件”升级为“可编程的、带版本、可回滚、可灰度、可审计的代码级资产”。当你把配置当成一等公民,把变更当成一次小发布,把回滚当成一次快速实验,你就真正进入了云原生时代的“快速、弹性、自治”之门。“配置即监控”:把实时指标反向写入配置中心,实现“自调参”——当系统检测到“平均 GC 时间>200ms”时,自动把堆内存从 4G 调到 6G。

2025-08-03 15:18:07 705

原创 从“配置地狱”到“云端乐园”——Nacos 如何成为分布式微服务配置中心的“定海神针”

进入微服务时代,服务数量呈指数级增长:A 服务调 B 服务,B 服务又依赖 C 服务,几十个甚至上百个实例散落在不同的机房、不同的云。相比“定时轮询 + 本地缓存”的老办法,既降低了空转流量,又避免了“改了配置三分钟才生效”的尴尬。Nacos 不再只是一个“中心化的仓库”,而是演化为“云原生基础设施”的一环,与 GitOps、可观测、弹性伸缩一起,构成现代应用的“自动驾驶仪”。在长连接层面,Nacos 引入了“责任链”式的健康检查:断链后客户端自动重连,重连成功后按需拉取最新配置,整个过程对业务透明。

2025-08-03 15:16:44 603

原创 .NET 云原生十二要素落地手册:从代码到生产的一万公里长征

引子:十二要素不是教条,而是生存指南Heroku 在 2011 年提出《Twelve-Factor App》,如今已成为云原生世界的宪法。对于 .NET 开发者,它不仅是“把配置文件外置”那么简单,而是涵盖开发、测试、部署、观测、治理的完整生命周期。本篇用一万字把十二要素映射到 .NET 技术栈,每一步都给出可落地的工具与策略。

2025-07-28 23:55:10 563

原创 .NET 性能调优全景指南:从 JIT 到 Native AOT 的十万字浓缩

引子:为什么你的 API 延迟总是比别人慢 10 ms?同样的 8 核 16 G 云主机、同样的数据库、同样的业务逻辑,别人的 P99 延迟 12 ms,你的却 22 ms。多出来的 10 ms,往往藏在 JIT 编译、GC 停顿、锁竞争、CPU 缓存失效、线程调度五个黑洞里。本篇用一万字带你走进 .NET 性能宇宙的每一道裂缝。

2025-07-28 23:54:06 424

原创 ASP.NET Core 高并发万字攻防战:架构设计、性能优化与生产实践

ASP.NET Core 给了开发者一把锋利的剑,但要刺穿高并发之墙,还需架构、编码、运维三位一体。正如《孙子兵法》所言:“胜兵先胜而后求战”,所有性能优势都来自提前设计,而非事后调优。

2025-07-27 14:42:06 478

原创 从 .NET Framework 到 .NET 8:跨平台融合史诗与生态演进全景

当 .NET 8 在 2023 年 11 发布时,微软宣布每年 11 月固定推出 LTS,奇数年推出 STS(Standard-Term Support)。这种节奏让“升级焦虑”成为过去式。正如 .NET 团队 slogan 所说:“Build anything, run everywhere, maintain forever.” 从 Framework 到 8,我们见证的不只是版本号的堆叠,而是一场真正的平台革命。

2025-07-27 14:40:35 1036

原创 十万 Goroutine 背后的调度宇宙:从时间片到协作式让渡的万字漫游

Go 的 netpoll 把 socket 注册到 epoll/kqueue,当 I/O 就绪时把对应的 G 重新放入 LRQ。当某个 P 的队列空而全局队列又空时,它会随机挑选一个 P,偷取一半任务。Go 团队决定把调度逻辑搬到用户态,从而把线程重命名为 Machine(M),仅作为真正执行载体。早期调度器是协作式,如果 G 永不主动让出 CPU(比如空循环),会导致其他 Goroutine 饿死。当 M 阻塞在系统调用时,P 会被剥夺并交给其他 M,实现 CPU 零浪费。

2025-07-25 21:45:11 566

原创 从第一行命令到百万并发:Go 语言工作区演进史与生态哲学

它不是简单的路径变量,而是官方强制规定的“三室两厅”:src 存放源码、pkg 缓存中间产物、bin 收纳可执行文件。官方明确表示:未来十年,GOPATH 不会消失,但会越来越像基础设施里的 libc——你不必天天提起,却每分每秒都在依赖。于是,godep、glide、gvt 等第三方工具涌现,它们通过“vendor 目录 + 元数据文件”模拟版本锁定,但每个工具格式不一,反而加剧了碎片化。这种“路径即身份”的哲学,让代码定位无需额外元数据,但也带来“不能随意挪动文件夹”的约束。

2025-07-25 21:44:24 690

原创 SDK 集成噩梦诊断手册:从“跑不通”到“丝般顺滑”的 40 条心法

下一次“跑不通”的工单,你会在 10 分钟内优雅回复:“已定位,已解决。系统版本不匹配,先查 Release Notes 的“最低要求”。· 集成者:一行 Pod 安装后,编译报错 300 行,心态崩。· DevOps:镜像多了 200 MB,老板问“为什么”。集成 SDK 的本质是“跨团队、跨技术栈、跨时间”的协作。加密算法使用 AES/ECB,合规要求 AES/GCM。把 40 条心法贴在 wiki,下次集成,你不再抓瞎。· 维护者:用户说“跑不通”,日志却只给“闪退”。

2025-07-23 23:52:07 406

原创 从一行头文件到亿级设备:SDK 全生命周期架构与演进史

跨平台:一次源码,Windows、Linux、macOS、RTOS、浏览器。本文把 SDK 当成一条生命体,讲述它从“一行头文件”到“亿级设备”的全过程。· 跨语言:C/C++、Java、Python、Rust、JS、Dart。· 语义化:主版本表示“不兼容”,次版本“向下兼容”,补丁“无感知”。· 跨工具链:CMake、Gradle、Pod、npm、Cargo。把契约设计得优雅、稳定、安全、可演进,你就拥有了整个生态的“根技术”。SDK 既是开发者与平台的“握手协议”,也是商业价值的“护城河”。

2025-07-23 23:51:11 644

原创 质量即服务:从测试策略到平台运营的全链路作战手册

需求验收标准 → 静态扫描 → 单测 → 契约测试 → 镜像构建 → 集成测试 → 性能基线 → 安全扫描 → 灰度 → 监控 → 回滚 → 复盘。· 质量提升 1 % → 发布频次提升 10 % → 营收提升 2 %(数据来自某电商 A/B 实验)。用一张“质量-频次-营收”三维图,让老板一眼看懂“质量不是成本中心,而是增长杠杆”。· 每个关卡默认“绿灯”,失败即“红灯”,红灯 10 分钟自动回滚。· 交付链:需求 → 设计 → 编码 → 测试 → 上线 → 运维。任何测试活动必须回答:在哪条链?

2025-07-22 23:57:07 495

原创 从“点状用例”到“质量生态”:现代软件测试的演进、困局与破局

十年间,交付频次从季度发布到每天十几次,测试却依旧被压缩到“上线前 2 小时”。案例:某电商 3 个月把“质量熵”从 0.42 降到 0.19,发布故障率下降 60 %。· 度量:定义“质量熵”——单位需求对应的缺陷期望数,用贝叶斯滚动更新。一句话:测试人员的核心竞争力不再是“找 Bug”,而是“设计质量策略”。测试的价值不是“拦截缺陷”,而是“提供关于风险的快速、可信、经济的反馈”。· 平台:一站式质量门户,用例、执行、报告、缺陷、监控五统一。· 用大型语言模型生成边界用例,覆盖以前遗漏的“异常语料”。

2025-07-22 23:56:37 725

原创 CPU 不再飙红:Tomcat 调优 30 条军规

开启 StuckThreadDetectionValve,600 秒报警,防止死循环拖死线程。下一次 CPU 100 % 来临时,你会淡定地拿起 checklist,而不是抓瞎地调参数。关闭 keep-alive 的滥用场景,静态资源走 CDN,Tomcat 专注业务。acceptCount 太小会丢连接,太大会堆积,建议与 backlog 同值。17. NUMA 绑核,4 核以内可绑 0-3,跨 node 延迟高 10 %。使用共享线程池,多 Connector 共用 Executor,减少资源碎片。

2025-07-20 17:41:13 570

原创 把 CPU 100 % 打回冷宫:一次线上事故的全景复盘

本来 GC 不是元凶,但线程池过大后,每个线程都持有不少临时对象,Young GC 频率从 3 秒一次变成 1 秒两次,top 一看,第一种是单个线程 CPU 飙到 90 % 以上,第二种是几百个线程各吃 1 %~2 %,但总数吓人。我们用了 45 分钟完成定位、优化、回滚、验证,最终把 CPU 压回 60 %,RT 回到 180 ms。我们的现场属于第二种,2000 多个工作线程,平均每个 1 %,加起来就是 100 %。CPU 100 % 先查线程栈,再查 GC,再查 sys 态,再查业务代码。

2025-07-20 17:40:43 761

原创 Tomcat 生产 40 条军规:容量规划、调优、故障演练与安全加固

军规 35:iptables -A INPUT -p tcp --dport 8080 -j DROP 模拟网络分区,哨兵探测到后是否切流。preStop: /bin/sh -c "sleep 15 && catalina.sh stop" 让正在处理的请求完成。军规 36:echo 3 > /proc/sys/vm/drop_caches 触发缓存失效,观察 RT 抖动。%{X-Forwarded-For}i %l %u %t "%r" %s %b %D,%D 记录微秒级耗时。

2025-07-19 23:51:27 835

原创 从 Server.xml 到字节码:Tomcat 内核全景与请求旅程 10 000 字深剖

坑:Tomcat 10 以后包名从 org.apache.catalina.session.RedisSessionManager 换成非官方维护,注意兼容性。JSP 编译:如果请求 *.jsp,Jasper 把 JSP 转译成 .java,再编译成 .class,默认放在 $CATALINA_BASE/work。WebappClassLoader:每个 Context 一个实例,先自己加载 /WEB-INF/classes 与 /WEB-INF/lib,再向上委派。

2025-07-19 23:50:28 647

原创 Vue3 业务落地全景:脚手架、权限、国际化、微前端、跨端与低代码 50 条实战心法

心法 5:引入 unplugin-auto-import/unplugin-vue-components,模板中无需手写 import,Tree-Shaking 仍然生效。心法 4:环境变量分层:.env.local → .env.development → .env.staging → .env.production,防止测试配置泄漏。心法 6:husky + lint-staged 提交前跑 eslint --fix + prettier --write,MR 只关心业务逻辑。需要 vite 开发?

2025-07-18 23:29:41 777

原创 Vue3 从 0 到 ∞:Composition API 的底层哲学、渲染管线与生态演进全景

1 解析 Parse:template → AST,使用 @vue/compiler-dom,支持 v-if、v-for、slot、指令等语法糖。history API 抽象成三种模式(Web、Hash、Memory),路由守卫支持 async/await,实现“动态路由 + 权限”闭环。· PatchFlag 细粒度标记:TEXT、CLASS、STYLE、PROPS、FULL_PROPS、NEED_PATCH 等。支持插件、时间旅行、SSR 水合。

2025-07-18 23:27:56 470

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除