<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[2301_79963518的博客]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/2301_79963518</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; 2301_79963518]]></copyright><item><title><![CDATA[地狱级面试题：单机、无监控、不让发布，怎么修线上 Bug？]]></title><link>https://blog.csdn.net/2301_79963518/article/details/166367901</link><guid>https://blog.csdn.net/2301_79963518/article/details/166367901</guid><author>2301_79963518</author><pubDate>Tue, 22 Sep 2026 16:50:36 +0800</pubDate><description><![CDATA[上一篇博客里，我分享了从“查日志”到“生产级应急”的思维转变。听到这个问题时，我内心是崩溃的。这哪是考技术？这分明是在考“如何在没有降落伞的情况下修飞机”。但冷静下来后，我发现这道题的真正价值，不在于你能不能“解出答案”，而在于你能不能在极端苛刻的条件下，展现出“极限求生”的工程思维。今天，我就把这次“被 PUA”的经历，整理成一篇“地狱场景下的运维求生指南”。]]></description><category></category></item><item><title><![CDATA[从“查日志”到“生产级应急”：一次面试翻车后的深度复盘]]></title><link>https://blog.csdn.net/2301_79963518/article/details/166367347</link><guid>https://blog.csdn.net/2301_79963518/article/details/166367347</guid><author>2301_79963518</author><pubDate>Tue, 22 Sep 2026 16:31:36 +0800</pubDate><description><![CDATA[这让我明白，技术成长不仅是知识的积累，更是思维的升级。如果你也在准备面试，或者刚进入职场，希望这篇复盘能帮你避开我踩过的坑。在生产环境，纪律比速度更重要，流程比技巧更可靠。愿我们都能从“会写代码的人”，成长为“能扛生产的工程师”。]]></description><category></category></item><item><title><![CDATA[缓存击穿双重检查（Double Check）：为什么抢到锁还要再查一次？]]></title><link>https://blog.csdn.net/2301_79963518/article/details/166136035</link><guid>https://blog.csdn.net/2301_79963518/article/details/166136035</guid><author>2301_79963518</author><pubDate>Sun, 20 Sep 2026 16:44:16 +0800</pubDate><description><![CDATA[在Java后端面试中，“缓存击穿”是一道极高频的架构设计题。很多同学听到这道题，第一反应往往是“加互斥锁”——只让一个线程去查库重建缓存，其他人排队等待。很多人就卡壳了。今天我们就结合并发时序图，把这个看似“多余”的双重检查讲透，看看它背后隐藏的并发智慧。]]></description><category></category></item><item><title><![CDATA[接口QPS太高扛不住？Java后端高并发全链路优化指南]]></title><link>https://blog.csdn.net/2301_79963518/article/details/166135378</link><guid>https://blog.csdn.net/2301_79963518/article/details/166135378</guid><author>2301_79963518</author><pubDate>Sun, 20 Sep 2026 16:21:35 +0800</pubDate><description><![CDATA[如果流量穿透了缓存直达数据库，我们就需要靠数据库层面的优化来硬扛。1. 读写分离利用MySQL的主从复制机制。主库负责写（Insert/Update/Delete），从库负责读（Select）。配合 ShardingSphere 或 MyCat 等中间件，应用层自动路由。注意点：主从同步有延迟，对于刚写完就要读的场景（如下单后查订单），强制走主库。2. 分库分表当单表数据量超过千万级，或者并发写入超过5000 QPS时，就需要考虑分库分表了。垂直拆分：按业务模块拆分（如用户库、订单库）。]]></description><category></category></item><item><title><![CDATA[从 HTTP 底层视角，彻底搞懂 Spring Boot 参数接收注解]]></title><link>https://blog.csdn.net/2301_79963518/article/details/166134144</link><guid>https://blog.csdn.net/2301_79963518/article/details/166134144</guid><author>2301_79963518</author><pubDate>Sun, 20 Sep 2026 15:36:44 +0800</pubDate><description><![CDATA[很多刚接触 Spring Boot 开发的同学，在写接口时总会陷入一个困惑：为什么有时候用，有时候用，有时候又要用？这些注解到底该怎么选？其实，这个困惑的根源在于没有建立起“HTTP 请求长什么样”的底层认知。一个 HTTP 请求里，参数能放的位置一共就 4 个，Spring 用不同的注解，本质上就是在告诉你“去哪个位置取数据”。一旦你理解了 HTTP 请求的完整结构，所有的参数接收方式就都通了。]]></description><category></category></item><item><title><![CDATA[告别“教学演示日志”：企业级 Spring Boot 日志规范实战]]></title><link>https://blog.csdn.net/2301_79963518/article/details/165889489</link><guid>https://blog.csdn.net/2301_79963518/article/details/165889489</guid><author>2301_79963518</author><pubDate>Fri, 18 Sep 2026 20:29:55 +0800</pubDate><description><![CDATA[在从后端向全栈转型的过程中，我们往往容易陷入一个误区：认为日志就是程序的“录像机”，必须记录下每一个执行步骤。但实际上，在企业级开发中，日志更像是一个“黑匣子”。今天，我们就来深度复盘一下，如何剔除那些无效的“噪音日志”，构建一套真正能用于线上排查的日志体系。]]></description><category></category></item><item><title><![CDATA[JMeter 入门：从安装到压测 Spring Boot 接口]]></title><link>https://blog.csdn.net/2301_79963518/article/details/165886822</link><guid>https://blog.csdn.net/2301_79963518/article/details/165886822</guid><author>2301_79963518</author><pubDate>Fri, 18 Sep 2026 17:43:10 +0800</pubDate><description><![CDATA[JMeter 是 Apache 基金会的开源项目，采用 Apache License 2.0 协议，免费、无功能限制、不用注册，是压测工具里最主流的选择。「查看结果树」点开任意一条请求，有三个页签：「取样器结果」看请求元数据，「请求」看发出去的报文，「响应数据」看接口返回的内容。接口 404、参数漏传、鉴权没带，这些都不是性能问题，但都会把「异常 %」顶上去，白跑一轮。网上流传的「全量汉化包」基本是第三方改过的 jar 包，来源不明，版本不匹配还容易把 JMeter 搞坏，不建议碰。]]></description><category></category></item><item><title><![CDATA[一文讲透限流算法的底层逻辑与实战选型]]></title><link>https://blog.csdn.net/2301_79963518/article/details/165232002</link><guid>https://blog.csdn.net/2301_79963518/article/details/165232002</guid><author>2301_79963518</author><pubDate>Sun, 13 Sep 2026 14:49:46 +0800</pubDate><description><![CDATA[在高并发系统的面试中，限流算法几乎是必考题。很多同学能流利地背出“固定窗口、滑动窗口、漏桶、令牌桶”的原理，但在实际项目选型或面对面试官的连环追问时，却往往无从下手。

今天，我们不背八股文。让我们跳出枯燥的公式，通过现实场景和底层逻辑，彻底搞懂这四大限流算法到底在解决什么问题，以及在你的 Spring Boot 项目中该如何优雅地落地。]]></description><category></category></item><item><title><![CDATA[深入理解 Spring Boot 自动装配]]></title><link>https://blog.csdn.net/2301_79963518/article/details/165005318</link><guid>https://blog.csdn.net/2301_79963518/article/details/165005318</guid><author>2301_79963518</author><pubDate>Fri, 11 Sep 2026 18:56:53 +0800</pubDate><description><![CDATA[理解了自动装配的原理，你就能理解为什么引入一个starter依赖就能用了。实际上，任何团队都可以编写自己的 Starter，把公共组件的配置封装起来。创建一个模块，编写自动配置类（使用+ 条件注解）在路径下创建文件在文件中声明你的自动配置类的全限定名创建一个模块，只负责引入依赖（空 jar，只做依赖聚合）业务方引入 starter 依赖 → Spring Boot SPI 扫描到配置 → 自动装配生效。]]></description><category></category></item><item><title><![CDATA[Linux 核心命令速查指南：从文件操作到系统运维]]></title><link>https://blog.csdn.net/2301_79963518/article/details/164999845</link><guid>https://blog.csdn.net/2301_79963518/article/details/164999845</guid><author>2301_79963518</author><pubDate>Fri, 11 Sep 2026 16:09:30 +0800</pubDate><description><![CDATA[Linux 遵循“一切皆文件”的理念，文件与目录的导航和管理是最基础的操作。]]></description><category></category></item><item><title><![CDATA[从餐厅叫号说起：彻底搞懂 Select、Poll、Epoll 三代 I/O 多路复用]]></title><link>https://blog.csdn.net/2301_79963518/article/details/164753753</link><guid>https://blog.csdn.net/2301_79963518/article/details/164753753</guid><author>2301_79963518</author><pubDate>Wed, 09 Sep 2026 18:57:44 +0800</pubDate><description><![CDATA[如果你正在学 Java 网络编程，一定绕不开 Select、Poll、Epoll 这三个词。面试必问，但大多数教程一上来就丢一堆内核源码和系统调用，看完更懵了。这篇文章不打算那样讲。文件描述符是什么 → 为什么需要 I/O 多路复用 → Select/Poll/Epoll 分别怎么工作 → 水平触发和边缘触发到底什么区别。每一步都用生活中的例子帮你建立直觉，确保你每一步都能听懂。]]></description><category></category></item><item><title><![CDATA[高并发场景，一个接口大量调用]]></title><link>https://blog.csdn.net/2301_79963518/article/details/164152304</link><guid>https://blog.csdn.net/2301_79963518/article/details/164152304</guid><author>2301_79963518</author><pubDate>Fri, 28 Aug 2026 19:33:47 +0800</pubDate><description><![CDATA[客户端 → CDN（静态资源/缓存）↓Nginx / Gateway（限流、负载均衡）↓Spring Boot 应用（无状态，异步入队，快速返回 taskId）↓Kafka / RabbitMQ（削峰缓冲）↓AI 消费者集群（动态批处理、GPU 推理）↓对象存储（保存图像）+ Redis（缓存结果）↓客户端轮询/回调获取图像 URL关键点异步化是根本，将耗时操作移出请求线程。消息队列是削峰利器，保护后端。缓存（本地 + 分布式 + CDN）大幅减少计算。限流熔断防止过载。水平扩展。]]></description><category></category></item><item><title><![CDATA[给 AI 的需求描述模板（参考）]]></title><link>https://blog.csdn.net/2301_79963518/article/details/164152057</link><guid>https://blog.csdn.net/2301_79963518/article/details/164152057</guid><author>2301_79963518</author><pubDate>Fri, 28 Aug 2026 19:04:14 +0800</pubDate><description><![CDATA[3. 参数：新建请求类 XxxRequest 放在 model/dto/picture/ 包下，校验用 javax.validation 注解 + ThrowUtils。]]></description><category></category></item><item><title><![CDATA[接手项目时，发一次“初始化考古提示词”]]></title><link>https://blog.csdn.net/2301_79963518/article/details/164152036</link><guid>https://blog.csdn.net/2301_79963518/article/details/164152036</guid><author>2301_79963518</author><pubDate>Fri, 28 Aug 2026 19:02:24 +0800</pubDate><description><![CDATA[2. service/impl/UserServiceImpl.java —— Service 层事务、异常的写法。请你先通读项目代码，帮我反向提炼出一份《项目开发约定》，作为以后让我写代码时的提示词模板。4. model/dto/ 和 model/vo/ —— 请求类、VO 的命名和校验习惯。【技术栈与分层】【Controller 约定】【Service 约定】【数据访问约定】【鉴权约定】【异常与响应约定】【DTO/VO 约定】【其他硬性规则】只留【背景】【具体需求】【验收标准】三个空位给我填。]]></description><category></category></item><item><title><![CDATA[MySQL锁机制全解析：从原理到线上避坑]]></title><link>https://blog.csdn.net/2301_79963518/article/details/164026841</link><guid>https://blog.csdn.net/2301_79963518/article/details/164026841</guid><author>2301_79963518</author><pubDate>Mon, 24 Aug 2026 16:36:19 +0800</pubDate><description><![CDATA[这些问题的核心都和MySQL的锁机制有关。今天我们就把MySQL的锁从原理到实战一次性讲透，帮你避开线上90%的锁相关的坑。]]></description><category></category></item><item><title><![CDATA[MySQL SQL 调优实战指南：从发现慢查询到根治性能瓶颈]]></title><link>https://blog.csdn.net/2301_79963518/article/details/163919742</link><guid>https://blog.csdn.net/2301_79963518/article/details/163919742</guid><author>2301_79963518</author><pubDate>Thu, 20 Aug 2026 15:15:31 +0800</pubDate><description><![CDATA[SQL 调优不是一个"出了问题才去做"的应急手段，而是一种应该贯穿开发全流程的思维方式。写代码时：遵循 SQL 编写规范，从源头避免慢 SQL上线前：用 EXPLAIN 检查核心 SQL 的执行计划上线后：通过慢查询日志和监控持续发现问题出现问题时：按照"发现 → 分析 → 方案 → 验证 → 监控"的流程系统性解决掌握了这套方法论，你就有了应对任何慢查询的底气。]]></description><category></category></item><item><title><![CDATA[MySQL 的 EXPLAIN 到底怎么看？一次慢查询排查实战指南]]></title><link>https://blog.csdn.net/2301_79963518/article/details/163919056</link><guid>https://blog.csdn.net/2301_79963518/article/details/163919056</guid><author>2301_79963518</author><pubDate>Thu, 20 Aug 2026 14:59:43 +0800</pubDate><description><![CDATA[EXPLAIN 是 MySQL 慢查询优化的第一步，也是最基础的一步。不执行 SQL，只看执行计划重点关注 type、key、rows、Extra 四个字段type 至少达到 range，最好 ref；key 不能是 NULL；rows 越小越好；Extra 里不能有 Using filesort 和 Using temporary。]]></description><category></category></item><item><title><![CDATA[MySQL 索引数量越多越好？一次 INSERT 背后，MySQL 到底偷偷做了多少事]]></title><link>https://blog.csdn.net/2301_79963518/article/details/163917136</link><guid>https://blog.csdn.net/2301_79963518/article/details/163917136</guid><author>2301_79963518</author><pubDate>Thu, 20 Aug 2026 13:48:54 +0800</pubDate><description><![CDATA[收益：加速查询，避免全表扫描代价：拖慢写入、占用空间、优化器选择困难用尽量少的索引，覆盖尽量多的查询场景。联合索引和覆盖索引是实现这个目标的两把利器。]]></description><category></category></item><item><title><![CDATA[从 8 秒到 3 秒：一次批量出库场景下，用索引合并把 UPDATE 性能提升了一倍多]]></title><link>https://blog.csdn.net/2301_79963518/article/details/163891428</link><guid>https://blog.csdn.net/2301_79963518/article/details/163891428</guid><author>2301_79963518</author><pubDate>Wed, 19 Aug 2026 16:55:54 +0800</pubDate><description><![CDATA[最近在复盘时遇到的一个慢 SQL 优化案例，觉得挺有代表性的，决定整理成一篇博客记录下来。项目里有一个出库场景：数据库里存了一条条的出库明细，批量出库时需要把对应商品的库存状态更新为"已出库"。一开始写的 SQL 性能很差，1 万条数据要跑 8 秒多，后来通过改写 SQL 触发了索引合并（Index Merge），耗时直接降到了 3 秒多。这篇文章就从这个真实场景出发，聊聊EXPLAIN执行计划、range和的区别，以及背后的磁盘 I/O 原理。]]></description><category></category></item><item><title><![CDATA[MySQL 索引下推（ICP）：从“为什么聪明“到“单列索引到底行不行“]]></title><link>https://blog.csdn.net/2301_79963518/article/details/163888744</link><guid>https://blog.csdn.net/2301_79963518/article/details/163888744</guid><author>2301_79963518</author><pubDate>Wed, 19 Aug 2026 15:02:09 +0800</pubDate><description><![CDATA[最近在学习 MySQL 索引优化的时候，遇到了一个很有意思的概念——索引下推（Index Condition Pushdown，简称 ICP）。网上很多文章要么一笔带过，要么讲得过于抽象，看完之后还是似懂非懂。于是我自己做了一轮深度挖掘，从"它到底解决了什么问题"，到"联合索引和多个单列索引到底有什么区别"，一步步把这块知识彻底搞清楚了。这篇文章就是把我整个学习过程和思考路径记录下来，希望能帮到和我一样曾经困惑过的同学。]]></description><category></category></item></channel></rss>