<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[wlwork66的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/wlwork66</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; wlwork66]]></copyright><item><title><![CDATA[org.aopalliance.intercept.MethodInterceptor]]></title><link>https://blog.youkuaiyun.com/wlwork66/article/details/170040171</link><guid>https://blog.youkuaiyun.com/wlwork66/article/details/170040171</guid><author>wlwork66</author><pubDate>Wed, 04 Nov 2026 12:50:53 +0800</pubDate><description><![CDATA[它的核心价值是：不改原方法代码，在方法执行前、后插入通用逻辑，例如计时、日志、鉴权、异常处理和重试。因此，MethodInterceptor 是调用链上的增强层，连接池才是这次异常的靠近故障点。invoke() 负责定义增强逻辑，proceed() 负责让调用链继续往下走。因此，proceed() 不一定直接调用目标方法：如果还有下一个拦截器，就先进入下一个；MethodInvocation 当前方法调用本身，包含方法、参数、目标对象等，并负责继续执行调用链。// 执行下一个拦截器，最终执行目标方法。]]></description><category></category></item><item><title><![CDATA[Decorator]]></title><link>https://blog.youkuaiyun.com/wlwork66/article/details/169945997</link><guid>https://blog.youkuaiyun.com/wlwork66/article/details/169945997</guid><author>wlwork66</author><pubDate>Tue, 03 Nov 2026 15:47:30 +0800</pubDate><description><![CDATA[TaskDecorator 是异步场景下"跨线程传递上下文"的标准方案，主要用于传递 MDC、用户信息、数据源路由等上下文数据，核心价值是让异步任务的日志链路不中断、业务上下文不丢失。TaskDecorator 是 Spring 提供的一个钩子接口，用于在异步任务执行前对 Runnable 进行包装，常用于跨线程传递上下文。如果你在项目中遇到具体的异步上下文传递问题，可以把代码贴出来，我帮你给出最合适的 Decorator 方案 👍。✅ 核心能力：在线程切换时，把"父线程的上下文"搬到"子线程"]]></description><category></category></item><item><title><![CDATA[ThreadPoolTaskExecutor]]></title><link>https://blog.youkuaiyun.com/wlwork66/article/details/169827793</link><guid>https://blog.youkuaiyun.com/wlwork66/article/details/169827793</guid><author>wlwork66</author><pubDate>Mon, 02 Nov 2026 10:37:11 +0800</pubDate><description><![CDATA[org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor 是 Spring 对 Java 原生线程池（ThreadPoolExecutor）的封装和增强，广泛用于 异步任务、并发执行、任务解耦 等场景。ThreadPoolTaskExecutor 是 Spring 提供的一个可配置、可管理的线程池实现，底层基于 JUC 的 ThreadPoolExecutor。下面从 原理、优点、缺点、适用场景、对比、使用建议 几个方面系统解读。]]></description><category></category></item><item><title><![CDATA[org.springframework.context.ApplicationListener]]></title><link>https://blog.youkuaiyun.com/wlwork66/article/details/169562694</link><guid>https://blog.youkuaiyun.com/wlwork66/article/details/169562694</guid><author>wlwork66</author><pubDate>Fri, 30 Oct 2026 19:37:27 +0800</pubDate><description><![CDATA[org.springframework.context.ApplicationListener 是 Spring 事件机制中的核心接口，用于监听并处理 Spring 容器发布的事件（ApplicationEvent）。ApplicationListener 是 Spring 事件机制的核心接口，用于监听容器或业务事件，实现组件解耦、生命周期管理和事件驱动架构。• 所有监听该事件的 ApplicationListener 都会被回调。监听 Spring 容器中的特定事件，并在事件发生时执行相应的逻辑。]]></description><category></category></item><item><title><![CDATA[替换11111]]></title><link>https://blog.youkuaiyun.com/wlwork66/article/details/130526969</link><guid>https://blog.youkuaiyun.com/wlwork66/article/details/130526969</guid><author>wlwork66</author><pubDate>Mon, 21 Sep 2026 16:05:22 +0800</pubDate><description><![CDATA[在执行该命令后，vim将扫描整个文件中的每一行，并将第一个匹配到的“abc”字符串替换为“xyz”。如果当前行有多处匹配，将一直提示用户是否替换，直到用户确认或者取消。如果用户选择替换，vim会继续扫描接下来的位置执行替换操作，直到文件末尾。另外，如果你希望在执行替换操作过程中观察文件的变化情况，可以使用:set list命令将空格、Tab符等特殊字符显示出来。Tab 显示为 ^I，行尾显示为 $，空格显示为 ·关闭显示 :set nolist。]]></description><category></category></item><item><title><![CDATA[ImmutableBiMap]]></title><link>https://blog.youkuaiyun.com/wlwork66/article/details/165723047</link><guid>https://blog.youkuaiyun.com/wlwork66/article/details/165723047</guid><author>wlwork66</author><pubDate>Thu, 17 Sep 2026 10:36:57 +0800</pubDate><description><![CDATA[结合你前面大量在用的 蚂蚁 LDC / Mock / 网关 / 映射配置 场景，我直接给你讲清楚 它是什么、什么时候该用、什么时候千万别用。ImmutableBiMap 是 Guava 提供的「不可变 + 双向 + value 唯一」的 Map，非常适合枚举、状态码、字段映射等“静态双向查找”场景；ImmutableBiMap = 不可变（Immutable） + 双向 Map（BiMap）// ❌ 编译期就报错（无该方法）✅ 2. 编码 / 协议字段映射（网关 / Mock）]]></description><category></category></item><item><title><![CDATA[youtube=]]></title><link>https://blog.youkuaiyun.com/wlwork66/article/details/161401408</link><guid>https://blog.youkuaiyun.com/wlwork66/article/details/161401408</guid><author>wlwork66</author><pubDate>Mon, 25 May 2026 23:17:10 +0800</pubDate><description><![CDATA[https://github.com/yt-dlp/yt-dlp/releaseschmod +x /usr/local/bin/yt-dlp]]></description><category></category></item><item><title><![CDATA[idea---------------]]></title><link>https://blog.youkuaiyun.com/wlwork66/article/details/128638277</link><guid>https://blog.youkuaiyun.com/wlwork66/article/details/128638277</guid><author>wlwork66</author><pubDate>Wed, 18 Mar 2026 20:03:31 +0800</pubDate><description><![CDATA[驼峰式命名和下划线命名交替变化。]]></description><category></category></item><item><title><![CDATA[http-SNI]]></title><link>https://blog.youkuaiyun.com/wlwork66/article/details/158391222</link><guid>https://blog.youkuaiyun.com/wlwork66/article/details/158391222</guid><author>wlwork66</author><pubDate>Wed, 25 Feb 2026 19:23:12 +0800</pubDate><description><![CDATA[SNI 是 TLS 扩展，用于在握手时告知服务器客户端要访问的域名。Apache HttpClient 默认支持 SNI，能自动从请求 URL 中提取主机名并发送。通常你不需要为此做特殊配置，但自定义 SSL 连接工厂时应避免禁用 SNI 功能。这样，你的 Java 应用就能正确地与现代 Web 服务器建立安全的 HTTPS 连接。]]></description><category></category></item><item><title><![CDATA[nginx- $connection-$connection_requests]]></title><link>https://blog.youkuaiyun.com/wlwork66/article/details/157939976</link><guid>https://blog.youkuaiyun.com/wlwork66/article/details/157939976</guid><author>wlwork66</author><pubDate>Tue, 10 Feb 2026 14:35:11 +0800</pubDate><description><![CDATA[作用和意义：• 唯一标识当前TCP连接：$connection 是Nginx为每个TCP连接分配的一个递增的数字ID（从1开始）• 在worker进程内唯一：这个ID是在每个Nginx worker进程内部唯一的• 标识整个连接生命周期： 同一个TCP连接在整个生命周期内，这个ID保持不变 作用和意义：• 记录连接复用次数： 表示当前TCP连接上已经处理过的HTTP请求总数 • 递增计数：每当这个连接处理一个请求，计数器就加1• 监控连接复用效率：数字越大，说明连接复用效果越好]]></description><category></category></item><item><title><![CDATA[PowerMockRunner-MockitoJUnitRunner-SmartRunner-对比]]></title><link>https://blog.youkuaiyun.com/wlwork66/article/details/157064712</link><guid>https://blog.youkuaiyun.com/wlwork66/article/details/157064712</guid><author>wlwork66</author><pubDate>Mon, 19 Jan 2026 10:30:32 +0800</pubDate><description><![CDATA[我们首先需要理解这三个类的作用和它们各自的使用场景。]]></description><category></category></item><item><title><![CDATA[Jrebel]]></title><link>https://blog.youkuaiyun.com/wlwork66/article/details/122222524</link><guid>https://blog.youkuaiyun.com/wlwork66/article/details/122222524</guid><author>wlwork66</author><pubDate>Thu, 25 Dec 2025 14:53:48 +0800</pubDate><description><![CDATA[click

]]></description><category></category></item><item><title><![CDATA[org.apache.commons.beanutils.BeanUtils#populate]]></title><link>https://blog.youkuaiyun.com/wlwork66/article/details/156113796</link><guid>https://blog.youkuaiyun.com/wlwork66/article/details/156113796</guid><author>wlwork66</author><pubDate>Sat, 20 Dec 2025 17:13:48 +0800</pubDate><description><![CDATA[/ 注册日期转换器// 现在可以转换日期格式的字符串是一个非常实用的工具方法✅ 实现了 Map 到 JavaBean 的自动映射✅ 支持类型自动转换✅ 简化了数据绑定代码✅ 在传统 Web 开发、配置文件解析等场景广泛应用在现代 Spring Boot 应用中，通常使用或 Jackson 进行数据绑定，但在某些遗留系统或特定场景下，BeanUtils.populate 仍然是一个有价值的选择。]]></description><category></category></item><item><title><![CDATA[`org.springframework.util.ClassUtils#forName]]></title><link>https://blog.youkuaiyun.com/wlwork66/article/details/156113744</link><guid>https://blog.youkuaiyun.com/wlwork66/article/details/156113744</guid><author>wlwork66</author><pubDate>Sat, 20 Dec 2025 17:09:25 +0800</pubDate><description><![CDATA[是 Spring 提供的一个增强版的类加载工具✅ 支持基本类型、数组、内部类等多种格式✅ 提供更友好的异常处理（非检查异常）✅ 支持灵活的类加载器指定✅ 在 Spring 生态中广泛使用，特别是配置解析、动态代理等场景在 Spring 项目中，优先使用而不是，可以获得更好的兼容性和更简洁的代码。]]></description><category></category></item><item><title><![CDATA[java.lang.Class#isAssignableFrom(Class＜?＞ cls)]]></title><link>https://blog.youkuaiyun.com/wlwork66/article/details/156113670</link><guid>https://blog.youkuaiyun.com/wlwork66/article/details/156113670</guid><author>wlwork66</author><pubDate>Sat, 20 Dec 2025 17:07:31 +0800</pubDate><description><![CDATA[是一个非常重要的反射方法，用于检查类或接口之间的继承/实现关系。判断调用该方法的 Class 对象所代表的类/接口，是否与参数传入的 Class 对象相同，或者是它的父类/父接口。简单记忆： 检查：A 能否从 B 赋值而来（B 是否是 A 的子类型）口诀：

与  的区别




特性






操作对象
Class 对象（反射）
对象实例


编译时检查
无，运行时检查
有，编译时检查类型兼容性


示例




用途场景
框架、反射、动态类型处理
日常编程中的类型检查



实用场景
1. 框架中的动]]></description><category></category></item><item><title><![CDATA[uml-泳道图-tu-puml]]></title><link>https://blog.youkuaiyun.com/wlwork66/article/details/114269010</link><guid>https://blog.youkuaiyun.com/wlwork66/article/details/114269010</guid><author>wlwork66</author><pubDate>Fri, 19 Dec 2025 17:23:40 +0800</pubDate><description><![CDATA[泳道图，一种UML活动图；
UML包含了泳道图

]]></description><category></category></item><item><title><![CDATA[org.springframework.web.bind.annotation.RequestMapping]]></title><link>https://blog.youkuaiyun.com/wlwork66/article/details/155263961</link><guid>https://blog.youkuaiyun.com/wlwork66/article/details/155263961</guid><author>wlwork66</author><pubDate>Wed, 26 Nov 2025 10:29:19 +0800</pubDate><description><![CDATA[您写的语法正确且实用匹配所有以v开头后跟任意字符的版本前缀支持任意深度的子路径适用于多版本API路由场景这种模式在微服务架构和API版本管理中非常有用！]]></description><category></category></item><item><title><![CDATA[spi-各类含义---]]></title><link>https://blog.youkuaiyun.com/wlwork66/article/details/118611202</link><guid>https://blog.youkuaiyun.com/wlwork66/article/details/118611202</guid><author>wlwork66</author><pubDate>Fri, 21 Nov 2025 10:43:19 +0800</pubDate><description><![CDATA[运行时加载实现。为什么要在 META-INF/services 目录下建立文件呢，跟踪源码，
在 ServiceLoader 
类中可以看到有这个前缀定义，
到这你可以看出这是一个约定俗成的事情。

where?
SPI 最常用的场景就是标准定义与实现解耦，运行时加载实现。
原理?
说白了，就是运行时在指定的目录下加载对应的文件，读取文件中的内容，然后实例化对应的类。

...]]></description><category></category></item><item><title><![CDATA[idea maven Sync All Maven Projects 和 Reload All Maven Projects 两个选择项的区别，以前似乎只有一个选择啊]]></title><link>https://blog.youkuaiyun.com/wlwork66/article/details/155069457</link><guid>https://blog.youkuaiyun.com/wlwork66/article/details/155069457</guid><author>wlwork66</author><pubDate>Thu, 20 Nov 2025 17:28:43 +0800</pubDate><description><![CDATA[在 IntelliJ IDEA 中，和。]]></description><category></category></item><item><title><![CDATA[jlink-烧录程序]]></title><link>https://blog.youkuaiyun.com/wlwork66/article/details/139683785</link><guid>https://blog.youkuaiyun.com/wlwork66/article/details/139683785</guid><author>wlwork66</author><pubDate>Tue, 08 Jul 2025 15:32:29 +0800</pubDate><description><![CDATA[gd32f407ve。]]></description><category></category></item></channel></rss>