<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[shemuel的技术笔记]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/qq_35249342</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_35249342]]></copyright><item><title><![CDATA[面试官： 如何设计一个评论系统？]]></title><link>https://blog.youkuaiyun.com/qq_35249342/article/details/149426320</link><guid>https://blog.youkuaiyun.com/qq_35249342/article/details/149426320</guid><author>qq_35249342</author><pubDate>Thu, 17 Jul 2025 17:21:46 +0800</pubDate><description><![CDATA[流量规模技术方案查询方式中小体量单表 + 两级 root_idMySQL 直接分页 + join中高体量分表 + root_id + 异步聚合分表查询 + Redis 缓存超大规模多层缓存 + KV 查询抛开业务谈设计都是耍流氓，根据不同的规模选择最合适的方案，满足现有业务发展需求，便是优秀的架构设计。小体量可采用通用设计模型，预留关键扩展点（如 ID 算法、root_id、MQ 链路），未来才能轻松应对流量爬坡。如果文章对你有帮助，点个免费的赞鼓励一下吧！关注公众号:加瓦点灯，]]></description><category></category></item><item><title><![CDATA[Spring AI + Milvus 实现 RAG 智能问答系统实战]]></title><link>https://blog.youkuaiyun.com/qq_35249342/article/details/149094225</link><guid>https://blog.youkuaiyun.com/qq_35249342/article/details/149094225</guid><author>qq_35249342</author><pubDate>Thu, 03 Jul 2025 14:55:35 +0800</pubDate><description><![CDATA[通过的组合，可以轻松构建强大的、基于RAG 架构的智能语义搜索和问答应用。Spring AI 极大地简化了 AI 能力集成，让 Java 后端也能快速拥抱大语言模型和向量数据库技术。如果文章对你有帮助，点个免费的赞鼓励一下吧！关注公众号:加瓦点灯，每天推送干货知识！]]></description><category></category></item><item><title><![CDATA[一文搞懂高性能定时器：时间轮]]></title><link>https://blog.youkuaiyun.com/qq_35249342/article/details/148957544</link><guid>https://blog.youkuaiyun.com/qq_35249342/article/details/148957544</guid><author>qq_35249342</author><pubDate>Fri, 27 Jun 2025 17:24:05 +0800</pubDate><description><![CDATA[时间轮（TimeWheel）是一种高效的定时任务调度算法，适用于高并发场景。它通过环形数组和哈希思想实现O(1)的任务添加和到期检测，比传统基于优先级队列的定时器更轻量级。Netty的HashedWheelTimer是其典型实现，常用于连接超时管理等低时效性任务。在SpringBoot中，通过@Bean配置HashedWheelTimer并配合@PostConstruct和@PreDestroy进行任务调度和资源管理，可有效处理海量短周期定时任务。时间轮的优势在于性能与任务数量无关，但其精度存在±Tick ]]></description><category></category></item><item><title><![CDATA[读扩散 vs 写扩散：IM系统消息分发策略深度解析]]></title><link>https://blog.youkuaiyun.com/qq_35249342/article/details/148928008</link><guid>https://blog.youkuaiyun.com/qq_35249342/article/details/148928008</guid><author>qq_35249342</author><pubDate>Thu, 26 Jun 2025 16:22:34 +0800</pubDate><description><![CDATA[这两个术语本质上是在讲：“消息写入和分发的责任，应该交给谁？选择写扩散当接收者数量有限（<100）实时性要求高读操作远多于写操作系统规模较小选择读扩散当接收者数量巨大（>1000）存储成本敏感允许一定延迟历史消息查询频繁混合策略适用大多数生产环境需要平衡实时性和资源消耗系统包含多种消息类型（私聊/群聊）总结在设计分布式消息系统时，理解业务场景的本质需求，结合读扩散和写扩散的互补优势，采用动态策略和分级处理机制，才能构建出既高效又经济的消息分发系统。]]></description><category></category></item><item><title><![CDATA[实战 | 如何设计一套真实、抗刷的文章阅读数统计系统？]]></title><link>https://blog.youkuaiyun.com/qq_35249342/article/details/148901348</link><guid>https://blog.youkuaiyun.com/qq_35249342/article/details/148901348</guid><author>qq_35249342</author><pubDate>Wed, 25 Jun 2025 16:07:30 +0800</pubDate><description><![CDATA[阅读数看似简单，但在真实环境中要做好却并不容易。用户行为识别数据去重机制防刷策略缓存与数据库双写系统稳定性与性能优化通过本文设计的这套方案，我们可以兼顾准确性、防刷能力、系统性能与用户体验，构建一套可持续、可扩展的文章阅读统计系统。👋最后问一句：你网站的阅读数，可信吗？如果文章对你有帮助，点个免费的赞鼓励一下吧！关注公众号:加瓦点灯，每天推送干货知识！]]></description><category></category></item><item><title><![CDATA[浅谈Java Introspector：理解与应用 Java Bean 内省机制]]></title><link>https://blog.youkuaiyun.com/qq_35249342/article/details/148845690</link><guid>https://blog.youkuaiyun.com/qq_35249342/article/details/148845690</guid><author>qq_35249342</author><pubDate>Mon, 23 Jun 2025 14:10:38 +0800</pubDate><description><![CDATA[摘要： JVM的优雅停机机制通过信号处理与Shutdown Hook实现应用资源的妥善释放。当收到SIGTERM或SIGINT等信号时，JVM会依次执行：冻结用户线程、运行注册的Shutdown Hook、触发finalizer（不推荐），最终退出。Spring Boot在此基础上封装了上下文关闭流程，提供多种方式处理停机逻辑。在Kubernetes环境中，需配合preStop钩子和terminationGracePeriodSeconds实现完整停机流程。注意：SIGKILL和System.halt()会]]></description><category></category></item><item><title><![CDATA[深挖 JVM 关闭钩子与 Signal 机制：优雅停机背后的秘密]]></title><link>https://blog.youkuaiyun.com/qq_35249342/article/details/148793647</link><guid>https://blog.youkuaiyun.com/qq_35249342/article/details/148793647</guid><author>qq_35249342</author><pubDate>Fri, 20 Jun 2025 15:33:24 +0800</pubDate><description><![CDATA[摘要： JVM的优雅停机机制通过信号处理与Shutdown Hook实现应用资源的妥善释放。当收到SIGTERM或SIGINT等信号时，JVM会依次执行：冻结用户线程、运行注册的Shutdown Hook、触发finalizer（不推荐），最终退出。Spring Boot在此基础上封装了上下文关闭流程，提供多种方式处理停机逻辑。在Kubernetes环境中，需配合preStop钩子和terminationGracePeriodSeconds实现完整停机流程。注意：SIGKILL和System.halt()会]]></description><category></category></item><item><title><![CDATA[万字解析三大限流算法：时间窗口，令牌桶，漏桶]]></title><link>https://blog.youkuaiyun.com/qq_35249342/article/details/148792673</link><guid>https://blog.youkuaiyun.com/qq_35249342/article/details/148792673</guid><author>qq_35249342</author><pubDate>Fri, 20 Jun 2025 15:00:38 +0800</pubDate><description><![CDATA[系统限流技术解析：滑动窗口、漏桶与令牌桶算法 摘要：限流机制是系统防护的关键技术，本文详细剖析了三种主流限流算法。滑动窗口算法通过精确统计动态时间段内的请求数实现限流；漏桶算法以恒定速率处理请求，适合平滑流量；令牌桶算法则允许一定突发流量，更具灵活性。文章从工作原理、数学模型、实现代码到优缺点进行了全面对比，为系统架构师提供了实用的算法选型指导，帮助构建稳定、高效的系统防护体系。]]></description><category></category></item><item><title><![CDATA[万字解析mysql锁机制]]></title><link>https://blog.youkuaiyun.com/qq_35249342/article/details/148792621</link><guid>https://blog.youkuaiyun.com/qq_35249342/article/details/148792621</guid><author>qq_35249342</author><pubDate>Fri, 20 Jun 2025 14:59:00 +0800</pubDate><description><![CDATA[MySQL锁机制是数据库并发控制的核心组件，主要分为全局锁、表级锁、页级锁和行级锁。按锁的兼容性可分为共享锁(S)、排他锁(X)及意向锁(IS,IX)；按加锁思想又分为乐观锁(应用层实现)和悲观锁(数据库实现)。不同事务隔离级别采用不同的锁策略，如InnoDB默认的RR级别使用Next-Key Lock防止幻读。锁机制通过协调并发访问，确保数据一致性和完整性，同时平衡性能与安全性。]]></description><category></category></item><item><title><![CDATA[理解 JVM 的 Safepoint：一次全面但不啰嗦的讲解]]></title><link>https://blog.youkuaiyun.com/qq_35249342/article/details/148792599</link><guid>https://blog.youkuaiyun.com/qq_35249342/article/details/148792599</guid><author>qq_35249342</author><pubDate>Fri, 20 Jun 2025 14:58:10 +0800</pubDate><description><![CDATA[JVM的Safepoint机制解析与实践影响 摘要：Safepoint是JVM执行过程中的关键机制，它定义了线程可以安全暂停的特殊位置，用于支持垃圾回收、锁撤销、类卸载等需要全局一致性的操作。通过全局标志位和主动检查实现线程暂停，但存在长时间循环可能阻塞STW的风险。实践案例显示，监测工具jmap的误用会导致服务卡顿，因触发Safepoint时需等待所有线程响应。测试代码验证了当主线程等待子线程进入Safepoint时的延迟现象，可通过调整JVM参数优化。理解Safepoint机制对诊断JVM性能问题至关重]]></description><category></category></item><item><title><![CDATA[通过 Netty 的 Pipeline 学习责任链设计模式]]></title><link>https://blog.youkuaiyun.com/qq_35249342/article/details/148792571</link><guid>https://blog.youkuaiyun.com/qq_35249342/article/details/148792571</guid><author>qq_35249342</author><pubDate>Fri, 20 Jun 2025 14:57:20 +0800</pubDate><description><![CDATA[责任链模式是一种解耦发送者和处理者的行为设计模式，通过链式传递请求让多个处理对象有机会处理。Netty框架的ChannelPipeline完美运用了这一模式，通过添加多个ChannelHandler形成双向链表，每个Handler处理特定业务逻辑或传递请求。源码分析显示，Netty通过ChannelHandlerContext包装Handler，使用ctx.fireXXX()方法实现链式调用。该模式支持动态插拔Handler、顺序执行和灵活组合等特性，在保持代码扩展性的同时降低了模块耦合度。LoggingH]]></description><category></category></item><item><title><![CDATA[对线面试官：Elasticsearch为什么快？]]></title><link>https://blog.youkuaiyun.com/qq_35249342/article/details/147988019</link><guid>https://blog.youkuaiyun.com/qq_35249342/article/details/147988019</guid><author>qq_35249342</author><pubDate>Thu, 15 May 2025 17:23:42 +0800</pubDate><description><![CDATA[倒排索引是一种按关键词组织文档的数据结构，用于加快全文检索。简单说，就是“词 → 出现在哪些文档”。用倒排索引替代扫描匹配，避免全文遍历写入即建索，实现查询零延迟预处理Lucene 提供了极致的单机检索效率分布式结构使其天然支持扩展与并发多层缓存减少了磁盘 I/O 与 CPU 计算段合并与压缩保持系统长期健康稳定掌握这些原理，不仅能理解 Elasticsearch 的高性能本质，也能在实际使用中更好地优化查询速度与系统稳定性。如果文章对你有帮助，点个免费的赞鼓励一下吧！关注gzh。]]></description><category></category></item><item><title><![CDATA[为什么总有人觉得5万块钱可以做一个淘宝？]]></title><link>https://blog.youkuaiyun.com/qq_35249342/article/details/147514173</link><guid>https://blog.youkuaiyun.com/qq_35249342/article/details/147514173</guid><author>qq_35249342</author><pubDate>Fri, 25 Apr 2025 15:31:02 +0800</pubDate><description><![CDATA[今天，我以淘宝的系统为例，给你介绍了一个系统逐渐由简单变复杂的发展历程，希望你能认清不同业务量级的系统本质上就不是一个系统。一方面，有人会因为对业务量级理解不足，盲目低估其他人系统的复杂度；另一方面，也有人会盲目应用技术，给系统引入不必要的复杂度，让自己陷入泥潭。作为拥有技术能力的程序员，我们都非常在意个人技术能力的提升，但却对在什么样情形下，什么样的技术更加适用考虑得不够。采用恰当的技术，解决当前的问题，是每个程序员都应该仔细考虑的问题。]]></description><category></category></item><item><title><![CDATA[Docker容器化：说一说IM系统中模块水平扩展的实现]]></title><link>https://blog.youkuaiyun.com/qq_35249342/article/details/147513527</link><guid>https://blog.youkuaiyun.com/qq_35249342/article/details/147513527</guid><author>qq_35249342</author><pubDate>Fri, 25 Apr 2025 15:08:36 +0800</pubDate><description><![CDATA[如果文章对你有帮助，点个免费的赞鼓励一下吧！关注gzh:加瓦点灯，每天推送干货知识！]]></description><category></category></item><item><title><![CDATA[Theadlocal内存泄露？没那么夸张]]></title><link>https://blog.youkuaiyun.com/qq_35249342/article/details/147513500</link><guid>https://blog.youkuaiyun.com/qq_35249342/article/details/147513500</guid><author>qq_35249342</author><pubDate>Fri, 25 Apr 2025 15:07:52 +0800</pubDate><description><![CDATA[是 Java 提供的一种用于线程本地存储的机制。它可以为每一个线程提供一个变量的副本，使得每个线程都可以独立地修改自己的副本，而不会影响其他线程的变量。在多线程环境下，这样做的好处是避免了非线程安全的问题，无需使用锁来进行同步。是一个功能强大的工具，其核心价值在于线程封闭（Thread Confinement），将某些需隔离的资源绑定到线程生命周期，简化多线程编程复杂度。不要因为害怕内存泄露而不敢用，只要我们用完就清除，就不会泄露，大胆用起来吧！如果文章对你有帮助，点个免费的赞鼓励一下吧！关注gzh。]]></description><category></category></item><item><title><![CDATA[带着BAT大厂的面试问题去理解Synchronized]]></title><link>https://blog.youkuaiyun.com/qq_35249342/article/details/147513460</link><guid>https://blog.youkuaiyun.com/qq_35249342/article/details/147513460</guid><author>qq_35249342</author><pubDate>Fri, 25 Apr 2025 15:06:14 +0800</pubDate><description><![CDATA[如果文章对你有帮助，点个免费的赞鼓励一下吧！关注gzh:加瓦点灯，每天推送干货知识！]]></description><category></category></item><item><title><![CDATA[带着大厂面试问题去理解Synchronized]]></title><link>https://blog.youkuaiyun.com/qq_35249342/article/details/147392959</link><guid>https://blog.youkuaiyun.com/qq_35249342/article/details/147392959</guid><author>qq_35249342</author><pubDate>Mon, 21 Apr 2025 14:20:49 +0800</pubDate><description><![CDATA[如果文章对你有帮助，点个免费的赞鼓励一下吧！关注gzh:加瓦点灯，每天推送干货知识！]]></description><category></category></item><item><title><![CDATA[SQL语句是怎么被执行的？一条sql语句的幕后旅程]]></title><link>https://blog.youkuaiyun.com/qq_35249342/article/details/147284346</link><guid>https://blog.youkuaiyun.com/qq_35249342/article/details/147284346</guid><author>qq_35249342</author><pubDate>Wed, 16 Apr 2025 19:00:26 +0800</pubDate><description><![CDATA[虽然只是简单更新一个字段，但背后 MySQL 做了大量精密工作——从内存控制、日志写入到事务保障，处处体现出设计者的匠心。如果文章对你有帮助，点个免费的赞鼓励一下吧！关注gzh:加瓦点灯，每天推送干货知识！]]></description><category></category></item><item><title><![CDATA[从懵逼到上头：和MVCC死磕的108分钟顿悟时刻]]></title><link>https://blog.youkuaiyun.com/qq_35249342/article/details/147229108</link><guid>https://blog.youkuaiyun.com/qq_35249342/article/details/147229108</guid><author>qq_35249342</author><pubDate>Mon, 14 Apr 2025 17:34:10 +0800</pubDate><description><![CDATA[MVCC，即多版本并发控制，是一种乐观并发控制技术。数据库为每一行记录保存多个版本。这些版本不仅包含数据的最新状态，还保留了历史状态，从而使得并发事务在读取数据时可以看到一个“快照”。每条记录通过内置的系统列保存版本信息，如事务 ID（通常称为 DB_TRX_ID）、回滚指针（ROLLBACK POINTER）以及删除标记等。这些信息构成了记录的版本链，帮助判断哪个版本对当前事务可见。如果文章对你有帮助，点个免费的赞鼓励一下吧！关注gzh:加瓦点灯，每天推送干货知识！]]></description><category></category></item><item><title><![CDATA[从阻塞到 Reactor：理解 Java I/O 背后的架构思维]]></title><link>https://blog.youkuaiyun.com/qq_35249342/article/details/147138881</link><guid>https://blog.youkuaiyun.com/qq_35249342/article/details/147138881</guid><author>qq_35249342</author><pubDate>Fri, 11 Apr 2025 10:59:42 +0800</pubDate><description><![CDATA[在Java的发展历程中，I/O 模型不断演进以满足高并发和高性能的需求。最初的同步阻塞 I/O 设计简单，但在高并发场景下性能瓶颈明显。为了解决该问题，Java 引入了非阻塞 I/O 模型，而后通过 I/O 多路复用技术（NIO）可以让单个线程同时处理多个 I/O 事件。最后，通过将 I/O 事件的侦测和业务处理分离（例如单线程多路复用负责监听事件，多线程负责业务处理），极大地提升了系统的伸缩性和响应速度。下面我们来详细说明这几个阶段的工作原理和实现方法。异步 I/O 模型。]]></description><category></category></item></channel></rss>