<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[master_boy的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/master_boy</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; master_boy]]></copyright><item><title><![CDATA[若依验证码渲染失效问题]]></title><link>https://blog.youkuaiyun.com/master_boy/article/details/155600263</link><guid>https://blog.youkuaiyun.com/master_boy/article/details/155600263</guid><author>master_boy</author><pubDate>Fri, 05 Dec 2025 11:06:00 +0800</pubDate><description><![CDATA[Linux服务器Java字体渲染异常排查记录 迁移服务器环境时发现Java程序渲染的验证码图片无文字显示，但无报错日志。排查发现服务器仅安装Cantarell可变字体（VF），而Java对VF字体支持不佳。通过fc-list确认字体缺失后，安装兼容性更好的DejaVu字体（yum install dejavu-sans-fonts），问题解决。关键结论：Linux服务器需确保安装Java兼容的通用字体（如DejaVu），VF字体易导致渲染失败。]]></description><category></category></item><item><title><![CDATA[arthus协助线上问题排查]]></title><link>https://blog.youkuaiyun.com/master_boy/article/details/155235014</link><guid>https://blog.youkuaiyun.com/master_boy/article/details/155235014</guid><author>master_boy</author><pubDate>Tue, 25 Nov 2025 14:49:53 +0800</pubDate><description><![CDATA[摘要：线上排查&quot;AI分析报告&quot;菜单未展示问题，通过检查代码更新、数据验证和配置确认均无异常。最终使用Arthas工具监听方法调用，发现用户配置的组件路径前存在空格导致匹配失败。本次排查经验表明：细节问题需要多工具验证，Navicat未发现的问题通过Arthas一目了然，体现了线上问题排查的典型思路与方法。（148字）]]></description><category></category></item><item><title><![CDATA[MySQL 数据库优化设计：优化原理和数据库表设计技巧]]></title><link>https://blog.youkuaiyun.com/master_boy/article/details/153412047</link><guid>https://blog.youkuaiyun.com/master_boy/article/details/153412047</guid><author>master_boy</author><pubDate>Thu, 16 Oct 2025 21:30:00 +0800</pubDate><description><![CDATA[MySQL数据库优化设计要点 本文深入探讨MySQL数据库优化的三个核心维度：字段类型选择、索引策略和存储引擎特性。在字段类型方面，强调根据数据特性选择CHAR/VARCHAR和最小数字类型，使用UNSIGNED确保数据完整性。索引设计重点讲解B-Tree结构优势、避免回表的聚簇索引与二级索引区别，以及覆盖索引和最左前缀原则的应用。存储引擎部分对比InnoDB和MyISAM，突出InnoDB的行级锁对并发性能的提升。此外，还详细分析了联表查询的嵌套循环连接算法及其优化策略，包括为关联字段建立索引和小表驱动大]]></description><category></category></item><item><title><![CDATA[客户端加密 和 服务端加密：端到端安全的真正含义]]></title><link>https://blog.youkuaiyun.com/master_boy/article/details/152811182</link><guid>https://blog.youkuaiyun.com/master_boy/article/details/152811182</guid><author>master_boy</author><pubDate>Thu, 09 Oct 2025 18:04:19 +0800</pubDate><description><![CDATA[加密技术的核心，始终是在用户绝对的隐私控制和中心化带来的便利性/功能性之间找到一个最合适的落点。如果你在构建的是隐私至上的应用，例如安全通讯、密码管理、医疗/法律数据存储，那么客户端加密是唯一选择。如果你在构建的是功能和用户体验优先的应用，例如云存储、企业 SaaS、数据分析平台，那么服务端加密会更实用、高效。当你真正理解了“自己上锁再寄出”和“让别人帮你上锁”的区别，你就彻底掌握了现代安全架构的基石。这就是为什么WhatsApp 可以做到端到端，以及为什么Crypto 钱包丢了助记词就真的再见了。]]></description><category></category></item><item><title><![CDATA[Java并发编程：从源码分析ThreadPoolExecutor的三大核心机制]]></title><link>https://blog.youkuaiyun.com/master_boy/article/details/152328046</link><guid>https://blog.youkuaiyun.com/master_boy/article/details/152328046</guid><author>master_boy</author><pubDate>Tue, 30 Sep 2025 21:00:00 +0800</pubDate><description><![CDATA[本文深入解析Java线程池ThreadPoolExecutor的三大核心机制：1) 巧妙利用ctl变量同时存储线程池状态和线程数，通过位运算高效管理；2) execute()方法的三步决策流程，优先创建核心线程、次优入队、最后创建临时线程或拒绝任务；3) Worker机制通过AQS实现任务获取与执行的安全控制。源码设计精妙，对临界场景的兜底处理值得学习，展现了Java并发编程的精髓。]]></description><category></category></item><item><title><![CDATA[性能革命的底层逻辑：深入理解 Spring Cloud Gateway 的 Reactor 核心]]></title><link>https://blog.youkuaiyun.com/master_boy/article/details/152272394</link><guid>https://blog.youkuaiyun.com/master_boy/article/details/152272394</guid><author>master_boy</author><pubDate>Mon, 29 Sep 2025 20:30:00 +0800</pubDate><description><![CDATA[本文深入解析了Spring Cloud Gateway高性能背后的核心机制——Project Reactor响应式编程框架。文章首先对比传统阻塞式I/O模型的瓶颈，指出Reactor通过非阻塞I/O和事件驱动模式，实现用少量线程处理高并发的优势。重点介绍了Reactor的核心概念：包括数据流模型（Publisher/Subscriber）、背压机制以及Mono/Flux两种核心类型。详细阐述了操作符（如map/flatMap）的异步处理能力，并通过代码示例对比了响应式与传统阻塞式编程的区别。最后深入讲解了调]]></description><category></category></item><item><title><![CDATA[Java并发编程: 探索synchronized的奥秘]]></title><link>https://blog.youkuaiyun.com/master_boy/article/details/152226306</link><guid>https://blog.youkuaiyun.com/master_boy/article/details/152226306</guid><author>master_boy</author><pubDate>Sun, 28 Sep 2025 22:00:00 +0800</pubDate><description><![CDATA[synchronized 是 Java 实现线程安全的关键字，它通过原子性、可见性和有序性保证多线程安全。底层基于对象头和 Monitor 机制，利用 CAS 和内存屏障实现锁管理。在字节码层面，方法同步使用 ACC_SYNCHRONIZED 标记，代码块同步则通过 monitorenter/monitorexit 指令实现。ObjectMonitor 机制包含 OwnerThread、EntryList 和 WaitSet，管理线程的竞争与等待。实际应用中，它能有效解决共享变量并发访问问题，如计数器递增的]]></description><category></category></item><item><title><![CDATA[Java 并发编程：BlockingQueue vs wait/notify 详解]]></title><link>https://blog.youkuaiyun.com/master_boy/article/details/152121080</link><guid>https://blog.youkuaiyun.com/master_boy/article/details/152121080</guid><author>master_boy</author><pubDate>Fri, 26 Sep 2025 11:58:52 +0800</pubDate><description><![CDATA[本文对比了Java并发编程中实现生产者-消费者模式的两种方式：使用wait/notify和BlockingQueue。wait/notify方式灵活但易出错，适合教学理解原理；BlockingQueue更简单安全，通过ReentrantLock和Condition自动处理线程同步，推荐使用ArrayBlockingQueue等实现类。文章分析了两种方式的代码实现和特点，并介绍了BlockingQueue的内部机制和常见实现类。]]></description><category></category></item><item><title><![CDATA[揭秘设计模式：状态设计模式 优雅地管理对象状态]]></title><link>https://blog.youkuaiyun.com/master_boy/article/details/152047382</link><guid>https://blog.youkuaiyun.com/master_boy/article/details/152047382</guid><author>master_boy</author><pubDate>Wed, 24 Sep 2025 22:30:00 +0800</pubDate><description><![CDATA[摘要： 状态模式通过将对象行为封装到独立的状态类中，避免 if-else 逻辑膨胀。以在线订单系统为例，不同状态（新建、已发货、已完成等）的行为和转换由各自类（如 NewState、ShippedState）实现，上下文类（Order）仅委托当前状态处理操作。这种设计符合开闭原则，提升可维护性，简化复杂状态管理。示例代码展示了状态转换的清晰流程，如从新建到发货的迁移。状态模式是优化多条件分支代码的优雅解决方案。]]></description><category></category></item><item><title><![CDATA[XSS 攻击？别怕，我们来聊聊怎么把它防住！]]></title><link>https://blog.youkuaiyun.com/master_boy/article/details/152007071</link><guid>https://blog.youkuaiyun.com/master_boy/article/details/152007071</guid><author>master_boy</author><pubDate>Tue, 23 Sep 2025 19:23:12 +0800</pubDate><description><![CDATA[XSS攻击防护指南 XSS（跨站脚本攻击）是一种常见的网络安全威胁，攻击者通过注入恶意脚本到网页中，窃取用户数据或执行恶意操作。XSS攻击分为三种类型：反射型（非持久性）、存储型（最危险，持久性）和DOM型（客户端执行）。防护措施包括：1）服务器端输入过滤净化；2）前端输出编码转义；3）实施内容安全策略（CSP）限制脚本来源。Spring Boot应用中可通过自定义过滤器和请求包装类实现XSS防护，重写参数获取方法进行输入净化。多层次的防护策略能有效降低XSS攻击风险。]]></description><category></category></item><item><title><![CDATA[揭秘xxl-job：从高可用到调度一致性]]></title><link>https://blog.youkuaiyun.com/master_boy/article/details/151872277</link><guid>https://blog.youkuaiyun.com/master_boy/article/details/151872277</guid><author>master_boy</author><pubDate>Fri, 19 Sep 2025 18:41:30 +0800</pubDate><description><![CDATA[XXL-JOB分布式调度系统的高可用机制解析 本文深入探讨了XXL-JOB分布式调度系统的高可用实现机制，主要包括三个核心方面： Admin多节点部署：通过共享中心数据库实现调度中心的高可用，避免单点故障风险，确保调度服务持续运行。 调度一致性保障：采用数据库行级锁机制解决多节点环境下的任务重复调度问题，保证同一任务只被一个节点处理。 执行器高可用机制：通过心跳检测和故障转移策略，当执行器宕机时自动将任务重新调度到健康节点，保障任务可靠执行。 文章还通过源码分析展示了系统如何实现故障检测和任务重新调度的技术]]></description><category></category></item><item><title><![CDATA[Java 25 新特性 更简洁、更高效、更现代]]></title><link>https://blog.youkuaiyun.com/master_boy/article/details/151834296</link><guid>https://blog.youkuaiyun.com/master_boy/article/details/151834296</guid><author>master_boy</author><pubDate>Thu, 18 Sep 2025 21:30:00 +0800</pubDate><description><![CDATA[Java 25作为长期支持（LTS）版本正式发布，带来多项现代化改进。主要更新包括：基本类型模式匹配简化代码、模块导入减少冗余、轻量级main方法便于入门、Record类增强数据安全、结构化并发优化多线程管理。性能方面推出向量API、紧凑对象头和分代Shenandoah GC，并增强JFR监控能力。安全更新支持现代加密标准，同时移除32位支持专注64位系统。这些改进使Java更简洁、高效且安全，既降低学习门槛又提升专业开发体验。]]></description><category></category></item><item><title><![CDATA[Spring Cloud Gateway：一次不规范 URL 引发的路由转发404问题排查]]></title><link>https://blog.youkuaiyun.com/master_boy/article/details/151789694</link><guid>https://blog.youkuaiyun.com/master_boy/article/details/151789694</guid><author>master_boy</author><pubDate>Wed, 17 Sep 2025 20:30:00 +0800</pubDate><description><![CDATA[Spring Cloud Gateway 404 问题排查摘要 在网关开发中遇到一个异常现象：通过IP访问http://localhost:9900/api-user/xxxx1正常，但域名访问http://xxx.xxx.xxx:9900/api-user/xxxx1返回404。通过源码分析发现，RoutePredicateHandlerMapping在路由匹配时使用getRawPath()获取原始路径，而域名请求的路径解析存在问题。关键在于getRawPath()返回的未解码路径在路由匹配时无法正确识别]]></description><category></category></item><item><title><![CDATA[揭秘XXL-JOB：Bean、GLUE 与脚本模式的底层奥秘]]></title><link>https://blog.youkuaiyun.com/master_boy/article/details/151721791</link><guid>https://blog.youkuaiyun.com/master_boy/article/details/151721791</guid><author>master_boy</author><pubDate>Mon, 15 Sep 2025 21:45:00 +0800</pubDate><description><![CDATA[XXL-JOB任务执行机制解析：本文通过可视化流程图和源码分析，深入剖析XXL-JOB任务执行的完整流程。系统采用RPC通信机制，调度中心（xxl-job-admin）将任务分发给执行器（ExecutorBizImpl），由JobThread线程队列实现任务排队执行，确保高并发场景下的稳定性。文章重点解析了三种任务模式：Bean模式通过注解注册任务方法；GLUE模式动态编译Groovy代码；脚本模式直接执行脚本文件。核心类JobThread.java和ExecutorBizImpl.java的源码分析揭示了]]></description><category></category></item><item><title><![CDATA[揭秘 XXL-JOB 调度：从代码深处看路由策略的精妙设计]]></title><link>https://blog.youkuaiyun.com/master_boy/article/details/151623546</link><guid>https://blog.youkuaiyun.com/master_boy/article/details/151623546</guid><author>master_boy</author><pubDate>Fri, 12 Sep 2025 22:45:00 +0800</pubDate><description><![CDATA[XXL-JOB分布式任务调度框架的核心奥秘在于其精妙的路由策略设计。文章深入分析了调度中心与执行器的协作机制，揭示了任务从表单配置到代码执行的全过程。重点剖析了路由策略的实现原理，包括枚举与实例的绑定机制，以及轮询、随机、故障转移等具体策略的代码实现。通过线程池异步处理和原子计数器等设计，XXL-JOB确保了任务调度的高效性和可靠性。这种架构设计使得系统能够智能分配任务，应对节点故障等分布式环境下的挑战。]]></description><category></category></item><item><title><![CDATA[揭秘设计模式：命令模式-告别混乱，打造优雅可扩展的代码]]></title><link>https://blog.youkuaiyun.com/master_boy/article/details/151410672</link><guid>https://blog.youkuaiyun.com/master_boy/article/details/151410672</guid><author>master_boy</author><pubDate>Wed, 10 Sep 2025 23:00:00 +0800</pubDate><description><![CDATA[命令模式通过将请求封装成对象，彻底解耦调用者和执行者，实现代码优雅扩展。核心思想是定义Command接口，由具体命令绑定接收者与操作，调用者仅依赖接口执行。对比传统紧耦合代码，命令模式轻松支持撤销/重做、异步任务队列等高级功能，在Spring事务、Swing事件等场景广泛应用。虽然可能增加类数量，但其模块化设计使系统更灵活健壮，特别适合需要行为参数化、操作历史记录等复杂业务场景。]]></description><category></category></item><item><title><![CDATA[揭秘设计模式：一个转接头，竟然能让你的代码更优雅？聊聊适配器模式]]></title><link>https://blog.youkuaiyun.com/master_boy/article/details/151357971</link><guid>https://blog.youkuaiyun.com/master_boy/article/details/151357971</guid><author>master_boy</author><pubDate>Tue, 09 Sep 2025 12:09:25 +0800</pubDate><description><![CDATA[本文介绍了适配器模式（Adapter Pattern）在软件开发中的应用。适配器模式通过将不兼容的接口转换成统一的目标接口，使原本无法协同工作的类能够无缝协作。文章以音频播放器为例，展示了如何使用适配器将WAV播放器适配到统一的媒体播放接口中，并分析了该模式在Spring框架中的实际应用。适配器模式的优势包括实现开闭原则、责任分离和新老系统无缝对接，是解决接口不兼容问题的优雅方案。]]></description><category></category></item><item><title><![CDATA[揭秘设计模式：工厂模式的五级进化之路]]></title><link>https://blog.youkuaiyun.com/master_boy/article/details/151329113</link><guid>https://blog.youkuaiyun.com/master_boy/article/details/151329113</guid><author>master_boy</author><pubDate>Mon, 08 Sep 2025 23:15:00 +0800</pubDate><description><![CDATA[工厂模式是软件开发中解决对象创建问题的关键设计模式，其进化历程分为五个层级：0级硬编码直接new对象，导致代码臃肿难维护；1级简单工厂通过专门类管理对象创建，但工厂会随产品增多而膨胀；2级工厂方法为每个产品创建专属工厂，提高了扩展性但增加了类数量；3级抽象工厂能创建整套相关产品，适合套餐类需求但扩展性受限；4级注册式工厂通过中央注册中心动态管理工厂，实现彻底解耦，代表如Spring的IoC容器。该模式在支付系统、GUI开发等场景广泛应用，是构建可扩展系统的利器。]]></description><category></category></item><item><title><![CDATA[解密设计模式：别再被内存问题困扰了！聊聊你可能忽略的“享元模式”]]></title><link>https://blog.youkuaiyun.com/master_boy/article/details/151191581</link><guid>https://blog.youkuaiyun.com/master_boy/article/details/151191581</guid><author>master_boy</author><pubDate>Thu, 04 Sep 2025 23:30:00 +0800</pubDate><description><![CDATA[设计模式中的享元模式是一种优化内存使用的精妙方案，它通过分离对象的内在状态（共享部分）和外在状态（独有部分）来大幅减少内存消耗。文章通过游戏开发和Java字符串常量池两个实例，生动展示了享元模式的实际价值，并提供了完整的Java代码实现，包括享元接口、享元类、享元工厂和客户端调用。同时，文章还澄清了享元模式与单例模式的区别，前者关注共享相似对象的内存，后者保证全局唯一性。享元模式的核心思想是&quot;分治&quot;，将复杂问题分解为可共享和不可共享的部分，从而实现高效复用。]]></description><category></category></item><item><title><![CDATA[揭秘设计模式：优雅地为复杂对象结构增添新功能-访问者模式]]></title><link>https://blog.youkuaiyun.com/master_boy/article/details/151153661</link><guid>https://blog.youkuaiyun.com/master_boy/article/details/151153661</guid><author>master_boy</author><pubDate>Wed, 03 Sep 2025 21:45:00 +0800</pubDate><description><![CDATA[访问者模式是一种行为型设计模式，它允许在不修改对象结构的前提下为其添加新的操作。通过将数据结构与操作逻辑分离，访问者模式完美解决了传统方法中因类型判断导致的代码臃肿问题。该模式利用双分派机制，在元素类中定义accept方法接收访问者对象，再由访问者实现针对不同元素的具体操作。当需要新增功能时，只需创建新的访问者类即可，无需修改现有元素类，符合开闭原则。典型的应用场景包括文档处理、编译器设计等需要处理复杂对象结构的系统。]]></description><category></category></item></channel></rss>