<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[qq_74825504的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/qq_74825504</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_74825504]]></copyright><item><title><![CDATA[什么是索引下推？]]></title><link>https://blog.youkuaiyun.com/qq_74825504/article/details/150859242</link><guid>https://blog.youkuaiyun.com/qq_74825504/article/details/150859242</guid><author>qq_74825504</author><pubDate>Tue, 26 Aug 2025 16:01:14 +0800</pubDate><description><![CDATA[低版本 “二次筛选” 的本质是 “历史设计取舍”。低版本 MySQL 出现 “引擎层只筛前缀、服务层二次筛选” 的问题，不是 “设计失误”，而是早期为了 **“多引擎适配”“架构简化”“降低维护成本”** 做出的合理取舍 —— 用 “可控的性能损耗” 换 “架构的灵活性和稳定性”。而 ICP 优化，是 MySQL 团队在业务数据量激增、性能需求升级后，对 “架构分工” 的一次动态调整：在不破坏核心解耦的前提下，让离数据更近的引擎层承担部分筛选职责，最终解决 “无效数据传输” 的痛点。]]></description><category></category></item><item><title><![CDATA[HashMap为什么要使用扰动函数？]]></title><link>https://blog.youkuaiyun.com/qq_74825504/article/details/149120844</link><guid>https://blog.youkuaiyun.com/qq_74825504/article/details/149120844</guid><author>qq_74825504</author><pubDate>Fri, 04 Jul 2025 16:44:54 +0800</pubDate><description><![CDATA[将原始哈希值的高 16 位与低 16 位进行异或操作，可以充分利用哈希值的每一位信息，增加哈希值的随机性，减少哈希冲突，提高哈希表的均匀性和性能。]]></description><category></category></item><item><title><![CDATA[Java并发编程中的AQS是什么？]]></title><link>https://blog.youkuaiyun.com/qq_74825504/article/details/149076059</link><guid>https://blog.youkuaiyun.com/qq_74825504/article/details/149076059</guid><author>qq_74825504</author><pubDate>Wed, 02 Jul 2025 18:44:46 +0800</pubDate><description><![CDATA[if (compareAndSetState(0, 1)) { // CAS尝试获取// 无需CAS，独占模式释放是安全的此实现展示了AQS的模板方法设计：子类只需定义资源获取/释放规则，排队、阻塞等复杂逻辑由AQS父类完成。AbstractQueuedSynchronizer（AQS）作为Java并发编程的基石级框架，其价值不仅体现在提供高性能同步工具，更在于它定义了一套可扩展的同步范式。通过state状态管理和CLH队列的精妙结合，AQS平衡了性能、公平性和灵活性三大核心需求。]]></description><category></category></item><item><title><![CDATA[Java 并发编程的 CAS（Compare and Swap）是什么？]]></title><link>https://blog.youkuaiyun.com/qq_74825504/article/details/149075977</link><guid>https://blog.youkuaiyun.com/qq_74825504/article/details/149075977</guid><author>qq_74825504</author><pubDate>Wed, 02 Jul 2025 18:33:40 +0800</pubDate><description><![CDATA[并发库的“心脏”。]]></description><category></category></item><item><title><![CDATA[关于对ThreadLocal的一些疑惑]]></title><link>https://blog.youkuaiyun.com/qq_74825504/article/details/149049118</link><guid>https://blog.youkuaiyun.com/qq_74825504/article/details/149049118</guid><author>qq_74825504</author><pubDate>Tue, 01 Jul 2025 16:12:57 +0800</pubDate><description><![CDATA[每个线程有一个，用于存储该线程中所有实例的值。每个实例在中作为键，其值存储在中。每个线程的可以包含多个不同的实例作为键，每个键对应一个值。]]></description><category></category></item><item><title><![CDATA[事务的四大特性是什么?它们的实现原理是怎样的?]]></title><link>https://blog.youkuaiyun.com/qq_74825504/article/details/149048935</link><guid>https://blog.youkuaiyun.com/qq_74825504/article/details/149048935</guid><author>qq_74825504</author><pubDate>Tue, 01 Jul 2025 16:06:33 +0800</pubDate><description><![CDATA[原子性是指事务是一个不可分割的最小工作单位，事务中的操作要么全部成功，要么全部失败。如果事务中的任何一个操作失败，整个事务都会回滚到事务开始之前的状态。一致性是指事务执行前后，数据库的完整性约束没有被破坏。事务执行的结果必须使数据库从一个一致性状态转换到另一个一致性状态。隔离性是指并发执行的事务之间不会相互干扰。一个事务在执行过程中，其他事务不能看到该事务中间状态的数据。持久性是指事务一旦提交，其对数据库的改变就是永久的，即使系统发生故障也不会丢失。原子性：通过日志记录和回滚操作实现。一致性。]]></description><category></category></item><item><title><![CDATA[什么是分布式锁]]></title><link>https://blog.youkuaiyun.com/qq_74825504/article/details/149026105</link><guid>https://blog.youkuaiyun.com/qq_74825504/article/details/149026105</guid><author>qq_74825504</author><pubDate>Mon, 30 Jun 2025 16:22:24 +0800</pubDate><description><![CDATA[分布式锁是构建可靠分布式系统的关键基础设施。理解其核心原理（互斥、超时/租约、容错）、主流实现方案（Redis/ZK/etcd）的细节与权衡、使用中的陷阱（时钟、GC、网络）以及最佳实践（唯一标识、续期、精炼临界区），是开发者必备的技能。没有完美的分布式锁方案，只有适合特定场景和容忍度要求的方案。未来，随着硬件、云服务、新协议和新架构的演进，分布式锁将继续朝着更高性能、更强鲁棒性、更易用和更智能的方向发展。]]></description><category></category></item><item><title><![CDATA[java中的spi是什么东西]]></title><link>https://blog.youkuaiyun.com/qq_74825504/article/details/149025799</link><guid>https://blog.youkuaiyun.com/qq_74825504/article/details/149025799</guid><author>qq_74825504</author><pubDate>Mon, 30 Jun 2025 16:11:08 +0800</pubDate><description><![CDATA[为框架扩展性提供标准化支持。其重要性在 JDBC、日志门面、微服务框架等领域尤为凸显。，运行时动态绑定 Logback/Log4j2 等实现。，其能力边界持续扩展。在云原生时代，SPI 机制有望与。Java SPI 在 20 余年的演进中证明了其。（如 Google AutoService）它通过约定优于配置的原则，实现。尽管原生实现存在性能与功能局限，但通过。打破双亲委派模型的限制，使核心库（如。（Spring Boot 的。MySQL JAR 包含。文件，避免手动编写配置。）能加载应用路径（如。]]></description><category></category></item><item><title><![CDATA[EasyMail ：使新邮件监听、邮件发送更简便]]></title><link>https://blog.youkuaiyun.com/qq_74825504/article/details/149025551</link><guid>https://blog.youkuaiyun.com/qq_74825504/article/details/149025551</guid><author>qq_74825504</author><pubDate>Mon, 30 Jun 2025 16:03:03 +0800</pubDate><description><![CDATA[EasyMail 是一个基于 Spring Boot 和java-mail的应用级邮件服务框架，简化了java-mail的邮件监听方式，提供了完整的邮件发送和监听功能，增加丰富的重试机制，保障了连接的可靠性，解锁各种相关与邮件的业务。该框架采用模块化设计，支持多种发送策略、模板引擎、异步处理、新邮件注解驱动等高级特性，适用于各种企业级应用场景。]]></description><category></category></item><item><title><![CDATA[深入理解 B+ 树：数据库索引的脊梁]]></title><link>https://blog.youkuaiyun.com/qq_74825504/article/details/149025451</link><guid>https://blog.youkuaiyun.com/qq_74825504/article/details/149025451</guid><author>qq_74825504</author><pubDate>Mon, 30 Jun 2025 15:58:57 +0800</pubDate><description><![CDATA[尽管面临 SSD、LSM-Tree 等新技术的挑战，B+ 树凭借其成熟性、稳定性和在特定场景（尤其是读密集、范围查询重要）下的持续优势，仍将是数据库系统中不可或缺的核心组件。它深刻理解磁盘随机访问与顺序访问的巨大性能鸿沟，通过精妙的结构设计（多路平衡、索引数据分离、叶子链表）将昂贵的随机 I/O 转化为高效的顺序 I/O 或大幅减少 I/O 次数。这是数据库实现中的复杂点之一。如果删除导致根节点只剩下一个子节点（且该子节点是内部节点或叶子节点），则删除根节点，使其唯一子节点成为新的根节点（树变矮一层）。]]></description><category></category></item><item><title><![CDATA[深入理解 MVCC：数据库高并发的核心引擎]]></title><link>https://blog.youkuaiyun.com/qq_74825504/article/details/149025178</link><guid>https://blog.youkuaiyun.com/qq_74825504/article/details/149025178</guid><author>qq_74825504</author><pubDate>Mon, 30 Jun 2025 15:49:50 +0800</pubDate><description><![CDATA[MVCC 是数据库领域一项经久不衰的关键技术。它通过维护数据的历史版本，为并发事务提供逻辑上隔离的数据库视图，从而在保证一定隔离性的前提下，极大地提升了数据库的并发处理能力和读性能。理解其核心原理（版本链、Read View、可见性判断）、优缺点、适用场景以及运维注意事项，对于设计高性能数据库应用、进行有效的数据库调优和故障排查至关重要。随着硬件发展和新型数据库架构（HTAP、分布式）的演进，MVCC 技术本身也在不断创新和优化，继续扮演着支撑海量数据高并发处理的幕后英雄角色。]]></description><category></category></item><item><title><![CDATA[深入理解synchronized：Java并发编程的基石与进化]]></title><link>https://blog.youkuaiyun.com/qq_74825504/article/details/148923173</link><guid>https://blog.youkuaiyun.com/qq_74825504/article/details/148923173</guid><author>qq_74825504</author><pubDate>Thu, 26 Jun 2025 12:56:05 +0800</pubDate><description><![CDATA[通过CAS将Mark Word复制到锁记录，并指向锁记录指针。：第一个获取锁的线程将线程ID写入Mark Word。：单线程重复访问锁（如Servlet的init方法）：轻量级锁自旋失败（默认自旋10次，JVM可调）synchronized不是简单的语法糖，而是。▶️ JVM将相邻的同步块合并为单个大同步块，（天然线程安全），有望彻底消除某些场景的锁需求。：从CPU缓存一致性（MESI）到OS线程调度。：一旦升级为重量级锁，无法回退到轻量级状态。：后续该线程进入同步块只需检查线程ID，]]></description><category></category></item><item><title><![CDATA[ConcurrentHashMap：Java高并发编程的哈希表利器]]></title><link>https://blog.youkuaiyun.com/qq_74825504/article/details/148922939</link><guid>https://blog.youkuaiyun.com/qq_74825504/article/details/148922939</guid><author>qq_74825504</author><pubDate>Thu, 26 Jun 2025 12:36:03 +0800</pubDate><description><![CDATA[是 Java 并发编程库中一颗璀璨的明珠，其发展历程（分段锁 -> CAS+桶锁）是并发优化技术演进的生动教材。它通过精妙的设计（volatile读、CAS 尝试、桶锁、红黑树、协作扩容、分散计数），在保证线程安全的前提下，实现了极高的并发吞吐量，尤其适合读多写少的高并发场景。深入理解其设计哲学、版本差异、弱一致性本质以及原子方法的正确使用，是高效安全运用 CHM 的关键。尽管它已非常强大，在面对极端写冲突、极致内存优化或新兴硬件时，仍有持续优化的空间，展现了软件工程永无止境的追求。深入解释了。]]></description><category></category></item><item><title><![CDATA[深入理解HashMap：从数据结构到高并发战场]]></title><link>https://blog.youkuaiyun.com/qq_74825504/article/details/148922342</link><guid>https://blog.youkuaiyun.com/qq_74825504/article/details/148922342</guid><author>qq_74825504</author><pubDate>Thu, 26 Jun 2025 11:50:45 +0800</pubDate><description><![CDATA[默认初始容量 16，如果已知要存 1000 个元素，默认负载因子下，需扩容到 2048，中间经历多次扩容。用空间 (多节点) 换时间 (高性能、高并发、大容量)，用算法 (哈希、路由) 解决定位问题。过高 (如0.9) 导致冲突概率大增，链表/树变长，性能下降。，在冲突严重时 (如恶意攻击，大量键故意产生相同哈希)，性能急剧下降。让不同的键尽可能均匀地分布在数组的各个位置（桶），减少冲突。实现更细粒度的并发控制，性能远高于同步的 HashMap。优化分片策略，减少扩容/缩容时的数据迁移量。]]></description><category></category></item><item><title><![CDATA[千万级动态数据毫秒级查询优化：无Redis的高性能架构设计]]></title><link>https://blog.youkuaiyun.com/qq_74825504/article/details/148921411</link><guid>https://blog.youkuaiyun.com/qq_74825504/article/details/148921411</guid><author>qq_74825504</author><pubDate>Thu, 26 Jun 2025 11:28:09 +0800</pubDate><description><![CDATA[近 N 天/月/年数据 (如近1年)。]]></description><category></category></item><item><title><![CDATA[如何使用java监听邮箱内容和发送邮件？]]></title><link>https://blog.youkuaiyun.com/qq_74825504/article/details/148879010</link><guid>https://blog.youkuaiyun.com/qq_74825504/article/details/148879010</guid><author>qq_74825504</author><pubDate>Tue, 24 Jun 2025 20:41:10 +0800</pubDate><description><![CDATA[如何使用java监听邮箱内容和发送邮件？]]></description><category></category></item><item><title><![CDATA[实时监听qq邮箱新邮件]]></title><link>https://blog.youkuaiyun.com/qq_74825504/article/details/147398687</link><guid>https://blog.youkuaiyun.com/qq_74825504/article/details/147398687</guid><author>qq_74825504</author><pubDate>Mon, 21 Apr 2025 17:35:14 +0800</pubDate><description><![CDATA[支持多种邮箱，只需要将邮箱配置设置为对应的厂商就行了。]]></description><category></category></item><item><title><![CDATA[docker启动rocketmq-dashboard报错：library initialization failed - out of memoryAborted (core dumped)]]></title><link>https://blog.youkuaiyun.com/qq_74825504/article/details/147243562</link><guid>https://blog.youkuaiyun.com/qq_74825504/article/details/147243562</guid><author>qq_74825504</author><pubDate>Tue, 15 Apr 2025 10:58:38 +0800</pubDate><description><![CDATA[临时调整在启动容器时，可以通过docker run命令添加--ulimit永久调整编辑Docker的systemd配置文件[Service]ExecStart=]]></description><category></category></item><item><title><![CDATA[使用Spring Boot Admin搭建钉钉机器人通知功能的小demo]]></title><link>https://blog.youkuaiyun.com/qq_74825504/article/details/146160411</link><guid>https://blog.youkuaiyun.com/qq_74825504/article/details/146160411</guid><author>qq_74825504</author><pubDate>Mon, 10 Mar 2025 18:50:32 +0800</pubDate><description><![CDATA[进入admin-server模块的配置文件，按照之前生成的代码依次替换为自己的。这里需要启动自己的nacos服务，替换为自己的地址+端口。项目启动好后可以调用一下接口进行测试。群归属随便选一个就行，不影响。安全方式选择-加签，后面会用。在被监控项目加入配置。]]></description><category></category></item><item><title><![CDATA[部署在虚拟机的中间件无法连接本机的mysql]]></title><link>https://blog.youkuaiyun.com/qq_74825504/article/details/145400953</link><guid>https://blog.youkuaiyun.com/qq_74825504/article/details/145400953</guid><author>qq_74825504</author><pubDate>Thu, 30 Jan 2025 21:46:07 +0800</pubDate><description><![CDATA[或者，如果你使用的是 Windows，可以通过服务管理器重启 MySQL 服务。在 MySQL 中，你需要为远程主机创建一个用户，并授予权限。这将授予该用户访问所有数据库和表的权限。如果只需要访问特定数据库，可以将。或者在 Windows 防火墙中添加规则，允许端口 3306 的流量。是 MySQL 服务器的 IP 地址。确保 MySQL 配置文件（通常是。是 MySQL 服务器的端口号。完成上述步骤后，尝试从远程主机。替换为你想要创建的用户名。替换为刚刚创建的用户名。]]></description><category></category></item></channel></rss>