<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[不堪提]]></title><description><![CDATA[海内存知己，天涯若比邻]]></description><link>https://blog.youkuaiyun.com/hdd5678</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; hdd5678]]></copyright><item><title><![CDATA[抓狂的 Spring 面试必考题：Spring Bean 生命周期]]></title><link>https://blog.youkuaiyun.com/hdd5678/article/details/159656542</link><guid>https://blog.youkuaiyun.com/hdd5678/article/details/159656542</guid><author>hdd5678</author><pubDate>Mon, 30 Mar 2026 22:23:43 +0800</pubDate><description><![CDATA[Spring Bean生命周期详解：从实例化到销毁的全过程。Bean的生命周期分为四大阶段：实例化（物理诞生）、属性赋值（建立依赖关系）、初始化（AOP代理、接口回调）和销毁（资源释放）。具体包括10个关键步骤：1）反射实例化对象；2）@Autowired属性注入；3）Aware接口身份识别；4）@PostConstruct预处理；5）InitializingBean自定义初始化；6）AOP动态代理生成；7）@PreDestroy预处理；8）DisposableBean自定义销毁。理解这些流程能有效解决循环]]></description><category></category></item><item><title><![CDATA[深度解密 MySQL 更新流水线：Redo Log、脏页与 Checkpoint 的奇妙协作]]></title><link>https://blog.youkuaiyun.com/hdd5678/article/details/159546908</link><guid>https://blog.youkuaiyun.com/hdd5678/article/details/159546908</guid><author>hdd5678</author><pubDate>Fri, 27 Mar 2026 15:15:49 +0800</pubDate><description><![CDATA[MySQL通过精心设计的日志和缓冲机制实现高性能与高可靠性的平衡。关键组件包括Buffer Pool（内存缓冲区）、脏页（内存修改未刷盘）和Redo Log Buffer（修改记录）。UPDATE操作流程：1）修改内存数据产生脏页；2）记录Redo Log到内存缓冲区；3）事务提交时先刷Redo Log到磁盘（WAL机制）。Checkpoint机制将随机IO转为批量顺序IO，通过双写缓冲区防止部分页损坏。整个过程体现了数据库核心设计思想：用内存加速、日志保安全、异步刷盘降负载，实现随机IO到顺序IO的转化。]]></description><category></category></item><item><title><![CDATA[【面试突击】MySQL InnoDB存储引擎：B+树叶子节点能存多少数据？]]></title><link>https://blog.youkuaiyun.com/hdd5678/article/details/156392700</link><guid>https://blog.youkuaiyun.com/hdd5678/article/details/156392700</guid><author>hdd5678</author><pubDate>Mon, 29 Dec 2025 16:46:28 +0800</pubDate><description><![CDATA[MySQL InnoDB叶子节点数据存储分析 InnoDB存储引擎使用B+树索引结构，其叶子节点存储完整数据行。每个叶子节点（页）固定16KB大小，能存储的行数由行大小决定： 行大小构成：包含字段数据和约20-30字节的行格式开销 典型场景： 普通表（200字节/行）：每页约80行 极简表（100字节）：每页约163行 大字段表（1KB）：每页仅16行 B+树容量影响： 3层B+树可存储约1亿行（200字节/行） 行越大，总容量越小，树高度增加 优化建议： 拆分大字段到扩展表 选择合适的数据类型 通过SHO]]></description><category></category></item><item><title><![CDATA[【面试突击】TCP 四次挥手详解]]></title><link>https://blog.youkuaiyun.com/hdd5678/article/details/156358074</link><guid>https://blog.youkuaiyun.com/hdd5678/article/details/156358074</guid><author>hdd5678</author><pubDate>Sun, 28 Dec 2025 11:01:57 +0800</pubDate><description><![CDATA[TCP四次挥手是可靠关闭连接的关键机制。第一次挥手客户端发送FIN请求关闭；第二次服务器回复ACK确认；第三次服务器发送FIN通知关闭；第四次客户端回复ACK确认。由于TCP全双工特性，ACK和FIN需要分开发送，确保双方独立关闭数据流。客户端在TIME_WAIT状态等待2MSL，防止报文丢失。该机制体现了TCP协议的严谨性，保障连接可靠终止。]]></description><category></category></item><item><title><![CDATA[【面试突击】HTTPS 完整工作流程详解]]></title><link>https://blog.youkuaiyun.com/hdd5678/article/details/156311552</link><guid>https://blog.youkuaiyun.com/hdd5678/article/details/156311552</guid><author>hdd5678</author><pubDate>Sat, 27 Dec 2025 14:55:11 +0800</pubDate><description><![CDATA[HTTPS（HTTP Secure）是在 HTTP 基础上加入 TLS/SSL 加密层的安全协议。它通过非对称加密、对称加密和数字证书三大技术，保障互联网通信的安全性。CA（Certificate Authority）是证书颁发机构，相当于互联网的"公安局"，为网站颁发"数字身份证"。全球知名 CA 包括：DigiCert、Let’s Encrypt、GlobalSign、Sectigo 等。HTTPS 通过 TCP 三次握手建立连接，然后通过 TLS 握手完成密钥协商和身份验证。]]></description><category></category></item><item><title><![CDATA[【面试突击】深入理解 TCP 三次握手与 HTTP 协议演进]]></title><link>https://blog.youkuaiyun.com/hdd5678/article/details/156311568</link><guid>https://blog.youkuaiyun.com/hdd5678/article/details/156311568</guid><author>hdd5678</author><pubDate>Fri, 26 Dec 2025 17:44:15 +0800</pubDate><description><![CDATA[HTTPS（HTTP Secure）是在 HTTP 基础上加入 TLS/SSL 加密层的安全协议。它通过非对称加密、对称加密和数字证书三大技术，保障互联网通信的安全性。
]]></description><category></category></item><item><title><![CDATA[【面试突击】Redis 哨兵（Sentinel）完全指南：从原理到实战]]></title><link>https://blog.youkuaiyun.com/hdd5678/article/details/156304531</link><guid>https://blog.youkuaiyun.com/hdd5678/article/details/156304531</guid><author>hdd5678</author><pubDate>Fri, 26 Dec 2025 14:30:13 +0800</pubDate><description><![CDATA[Redis哨兵（Sentinel）是官方提供的高可用解决方案，用于监控主从架构并实现自动故障转移。当主节点故障时，哨兵能自动完成故障检测、主从切换和客户端通知，避免传统架构需要手动干预的问题。哨兵通过定期PING命令监控节点状态，当主节点无响应时先标记为主观下线，经其他哨兵确认后变为客观下线，随后选举Leader哨兵执行故障转移。关键配置包括quorum（法定人数）设置和哨兵数量选择（推荐奇数个），并遵循优先级、复制偏移量等规则选择新主节点。哨兵之间通过主节点的发布订阅机制自动发现彼此，共同维护Redis集]]></description><category></category></item><item><title><![CDATA[【面试突击】Redis 主从复制核心面试知识点]]></title><link>https://blog.youkuaiyun.com/hdd5678/article/details/156270771</link><guid>https://blog.youkuaiyun.com/hdd5678/article/details/156270771</guid><author>hdd5678</author><pubDate>Fri, 26 Dec 2025 10:54:35 +0800</pubDate><description><![CDATA[Redis主从复制是一种数据同步机制，通过一主多从架构实现数据冗余、读写分离和高可用性。核心特点包括：主节点负责写操作，从节点只读；异步数据同步；支持全量复制（首次连接或主节点重启）和部分复制（短暂断线恢复）。复制流程涉及运行ID、复制偏移量和复制积压缓冲区等关键概念，确保数据一致性。该机制通过数据冗余保障可靠性，配合读写分离提升性能（如1主3从可达40万QPS），并为故障转移和负载均衡提供基础，是构建高可用Redis系统的重要组件。]]></description><category></category></item><item><title><![CDATA[【面试突击】Kafka 核心面试知识点]]></title><link>https://blog.youkuaiyun.com/hdd5678/article/details/156272696</link><guid>https://blog.youkuaiyun.com/hdd5678/article/details/156272696</guid><author>hdd5678</author><pubDate>Fri, 26 Dec 2025 10:51:28 +0800</pubDate><description><![CDATA[Kafka是一个分布式流处理平台，具备消息队列、存储系统和流处理三大核心能力。其核心特点包括高吞吐量、低延迟、持久化、分布式和可靠性。主要应用场景涵盖日志收集、消息系统、用户活动追踪等。Kafka架构由Producer、Consumer、Broker等组件构成，采用分区机制提高并发和负载均衡，副本机制(Leader/Follower)确保高可用。消息流转过程涉及生产消息的选择分区、同步副本，以及消费消息的分区分配和offset提交。分区策略包括指定分区、Key哈希和轮询，副本通过ISR机制保持同步。Kafk]]></description><category></category></item><item><title><![CDATA[【面试突击】MySQL 查询优化核心面试知识点]]></title><link>https://blog.youkuaiyun.com/hdd5678/article/details/156272076</link><guid>https://blog.youkuaiyun.com/hdd5678/article/details/156272076</guid><author>hdd5678</author><pubDate>Thu, 25 Dec 2025 15:33:50 +0800</pubDate><description><![CDATA[MySQL查询优化核心知识点包括索引优化和SQL语句优化两大方面。索引优化部分详解了B+Tree、Hash等索引类型及适用场景，索引分类（单列/联合、主键/唯一/普通等），以及索引优化规则（最左前缀原则、索引失效场景、索引覆盖和索引下推）。SQL语句优化则强调了避免SELECT *、小表驱动大表原则、用JOIN替代子查询、分页优化等技巧。这些知识点是MySQL性能调优的核心内容，能有效提升查询效率，减少系统资源消耗。]]></description><category></category></item><item><title><![CDATA[【面试突击】PostgreSQL vs MySQL 索引架构深度对比：聚簇索引 vs 堆表]]></title><link>https://blog.youkuaiyun.com/hdd5678/article/details/156272009</link><guid>https://blog.youkuaiyun.com/hdd5678/article/details/156272009</guid><author>hdd5678</author><pubDate>Thu, 25 Dec 2025 15:31:00 +0800</pubDate><description><![CDATA[本文深入对比了PostgreSQL和MySQL在索引架构上的核心差异。MySQL采用聚簇索引，数据按主键排序存储，主键查询只需一次索引查找；而PostgreSQL使用堆表结构，数据无序存储，所有索引都指向数据物理位置，查询需要额外访问堆表。通过图书馆管理系统的生动类比，文章阐释了两种架构的工作机制：MySQL类似按书号排序的书架，PostgreSQL则像无序仓库配合索引册。文中详细解析了PostgreSQL堆表和索引的存储原理，包括TID概念和索引结构，帮助读者理解两者在查询性能、更新成本等方面的差异。这种]]></description><category></category></item><item><title><![CDATA[【面试突击】Spring Security + OAuth2 密码模式实战：Gateway 作为网关与资源服务器，Auth 作为认证服务器（完整认证链路解析）]]></title><link>https://blog.youkuaiyun.com/hdd5678/article/details/156235275</link><guid>https://blog.youkuaiyun.com/hdd5678/article/details/156235275</guid><author>hdd5678</author><pubDate>Wed, 24 Dec 2025 15:44:13 +0800</pubDate><description><![CDATA[本文介绍了一种基于Spring Security和OAuth2密码模式的微服务认证鉴权方案。Auth服务作为认证服务器负责Token签发与校验，Gateway同时承担网关和资源服务器角色。文章详细梳理了从客户端登录到Token生成、校验及用户信息透传的全流程，包括关键组件如BasicAuthenticationFilter、ProviderManager、UserDetailsService和TokenStore的执行顺序。方案采用Redis存储Token，通过Gateway实现Token远程校验和用户信息]]></description><category></category></item><item><title><![CDATA[【面试突击】深度解析：Redis 与数据库（DB）的一致性方案]]></title><link>https://blog.youkuaiyun.com/hdd5678/article/details/156222400</link><guid>https://blog.youkuaiyun.com/hdd5678/article/details/156222400</guid><author>hdd5678</author><pubDate>Wed, 24 Dec 2025 09:33:15 +0800</pubDate><description><![CDATA[懒加载（Lazy Loading）：更新后的数据可能很久才被读一次。直接删除，等下次读时再加载，能节省内存资源。安全性（防止脏数据覆盖）如果两个线程同时写，更新缓存可能导致并发问题（线程 A 先写，线程 B 后写，但 B 的网络慢，导致 A 的旧值覆盖了 B 的最新值）。删除操作是幂等的，能显著降低这种竞争风险。“通常我们采用模式，即先更新 DB 再删除缓存。为了应对极端情况下的主从延迟，可以配合延时双删。如果业务对数据一致性要求极高，我们会通过Canal 监听 Binlog。]]></description><category></category></item><item><title><![CDATA[【面试突击】MySQL 索引必会：B+Tree、回表、覆盖索引、最左前缀、索引下推（ICP）]]></title><link>https://blog.youkuaiyun.com/hdd5678/article/details/156151097</link><guid>https://blog.youkuaiyun.com/hdd5678/article/details/156151097</guid><author>hdd5678</author><pubDate>Mon, 22 Dec 2025 15:05:31 +0800</pubDate><description><![CDATA[本文深入解析MySQL InnoDB索引的核心机制，重点剖析B+Tree索引结构、聚簇索引与二级索引的区别。详细解释了回表查询的原理及其性能问题，并介绍如何通过覆盖索引避免回表。深入讲解联合索引的最左匹配原则及其实现原理，包括范围查询对索引使用的影响。特别介绍了索引下推(ICP)技术如何优化查询性能。文章还提供了索引设计实战建议，帮助开发者合理设计索引结构，并通过EXPLAIN分析查询执行计划。这些知识对MySQL性能优化和面试准备都具有重要价值。]]></description><category></category></item><item><title><![CDATA[【面试突击】Spring IOC：Bean 创建流程全解析（从 getBean 到 AOP 代理生成）]]></title><link>https://blog.youkuaiyun.com/hdd5678/article/details/156150712</link><guid>https://blog.youkuaiyun.com/hdd5678/article/details/156150712</guid><author>hdd5678</author><pubDate>Mon, 22 Dec 2025 15:02:59 +0800</pubDate><description><![CDATA[本文深入解析了Spring IOC容器中Bean的创建流程。核心流程包括：1)通过doGetBean入口检查缓存或触发创建；2)doCreateBean四步生产线：实例化生成原始对象、属性填充注入依赖、初始化执行回调、注册销毁方法；3)AOP代理在初始化阶段的BeanPostProcessor.after环节生成；4)最终成品存入单例池。特别强调了循环依赖处理通过三级缓存机制实现，以及AOP代理的生成时机。整个流程将BeanDefinition转化为可用的Bean实例（可能是代理），体现了Spring依赖注]]></description><category></category></item><item><title><![CDATA[【面试突击】深度进阶：Spring AOP 代理机制、失效场景与切面顺序全解析]]></title><link>https://blog.youkuaiyun.com/hdd5678/article/details/156150068</link><guid>https://blog.youkuaiyun.com/hdd5678/article/details/156150068</guid><author>hdd5678</author><pubDate>Mon, 22 Dec 2025 14:24:43 +0800</pubDate><description><![CDATA[本文深入解析Spring AOP三大核心问题：代理机制、失效场景与切面顺序。Spring AOP基于动态代理，默认JDK代理（需接口）或CGLIB代理（继承实现）。常见失效场景包括内部调用（this指向原始对象）、方法权限问题和非Spring Bean对象。多切面执行顺序遵循&quot;洋葱模型&quot;，@Order值越小优先级越高，入站先执行@Before，出站后执行@After。文章还总结了AOP五大术语：切面、切入点、通知、连接点和代理，建议合理使用AOP，避免过度增加调试难度。]]></description><category></category></item><item><title><![CDATA[【面试突击】Spring Bean 生命周期深度解析：结合三级缓存理解循环依赖]]></title><link>https://blog.youkuaiyun.com/hdd5678/article/details/156149609</link><guid>https://blog.youkuaiyun.com/hdd5678/article/details/156149609</guid><author>hdd5678</author><pubDate>Mon, 22 Dec 2025 14:15:49 +0800</pubDate><description><![CDATA[Spring通过三级缓存机制解决循环依赖问题，其中AOP代理的提前触发是关键。一级缓存存储成品Bean，二级缓存存储半成品Bean，三级缓存存放对象工厂。当发生循环依赖时（如A依赖B，B依赖A），B在填充属性A时会触发三级缓存中的工厂，通过getEarlyBeanReference提前生成A的代理对象并存入二级缓存，确保注入的是代理对象而非原始对象。这种机制既保证了Bean的单例性，又避免了AOP切面逻辑丢失。三级缓存的核心价值在于按需延迟处理AOP，而二级缓存则确保多依赖场景下代理对象的唯一性。]]></description><category></category></item><item><title><![CDATA[【面试突击】JVM 内存结构和 JDK7 / JDK8 差异，用一次就能讲清楚]]></title><link>https://blog.youkuaiyun.com/hdd5678/article/details/156143684</link><guid>https://blog.youkuaiyun.com/hdd5678/article/details/156143684</guid><author>hdd5678</author><pubDate>Mon, 22 Dec 2025 10:05:56 +0800</pubDate><description><![CDATA[本文对比了JDK7和JDK8的JVM内存结构差异，重点解析了方法区的实现变化：JDK7使用堆内的PermGen存储类信息，而JDK8改用本地内存的Metaspace。文章还概述了堆、栈、直接内存等关键区域的功能及常见问题，提供了清晰的总览表。通过简洁的语言和对比表格，帮助读者快速掌握核心知识点，应对面试和排查OOM问题。]]></description><category></category></item><item><title><![CDATA[【面试突击】JAVA基础知识-线程池与参数调优]]></title><link>https://blog.youkuaiyun.com/hdd5678/article/details/156082930</link><guid>https://blog.youkuaiyun.com/hdd5678/article/details/156082930</guid><author>hdd5678</author><pubDate>Sat, 20 Dec 2025 09:15:36 +0800</pubDate><description><![CDATA[本文深入解析Java线程池的核心参数与调优策略，重点围绕ThreadPoolExecutor的构造参数展开。首先阐明使用线程池的必要性：降低线程创建开销、控制并发数、提升系统稳定性。随后详细解析corePoolSize、maximumPoolSize等关键参数，对比ArrayBlockingQueue、LinkedBlockingQueue等不同队列的特性与适用场景，分析四种拒绝策略的差异。最后指出不推荐直接使用Executors工厂方法的原因：其默认使用无界队列存在OOM风险。文章为Java线程池的合理配]]></description><category></category></item><item><title><![CDATA[【面试突击】JAVA基础知识-GC 机制与分代回收]]></title><link>https://blog.youkuaiyun.com/hdd5678/article/details/156085667</link><guid>https://blog.youkuaiyun.com/hdd5678/article/details/156085667</guid><author>hdd5678</author><pubDate>Sat, 20 Dec 2025 09:15:16 +0800</pubDate><description><![CDATA[Java GC机制与分代回收 Java采用自动垃圾回收(GC)机制管理堆内存，通过可达性分析算法判断对象存活状态。核心GC算法包括标记-清除、标记-整理和复制算法，各具特点：标记-清除简单但会产生内存碎片；标记-整理解决碎片问题但成本较高；复制算法适合存活率低的区域但空间利用率低。 JVM采用分代收集策略，将堆分为新生代和老年代。新生代使用复制算法，包含Eden区和两个Survivor区，通过Minor GC快速回收短期对象；老年代存放长期存活对象，采用标记-清除或标记-整理算法进行Major GC。对象在]]></description><category></category></item></channel></rss>