<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[freeRoad]]></title><description><![CDATA[on the way to freedom.]]></description><link>https://blog.csdn.net/adorechen</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; adorechen]]></copyright><item><title><![CDATA[k8s上配置canal用的zookeeper为什么需要用两个service？]]></title><link>https://blog.csdn.net/adorechen/article/details/153830059</link><guid>https://blog.csdn.net/adorechen/article/details/153830059</guid><author>adorechen</author><pubDate>Fri, 24 Oct 2025 15:20:07 +0800</pubDate><description><![CDATA[摘要：在Kubernetes中搭建Zookeeper集群时，需要配置两种Service：Headless Service用于集群内部节点通信，提供固定DNS解析；普通Service为外部服务提供统一访问入口。优化建议包括：1）普通Service仅暴露必要端口(2181)；2）显式声明协议类型；3）通过命名和注释提高可维护性；4）可选配置会话亲和性。两个Service分工明确，分别解决内部通信稳定性和外部访问便捷性问题。]]></description><category></category></item><item><title><![CDATA[Ubuntu 22 下脚本登录MFA堡垒机]]></title><link>https://blog.csdn.net/adorechen/article/details/150016715</link><guid>https://blog.csdn.net/adorechen/article/details/150016715</guid><author>adorechen</author><pubDate>Thu, 07 Aug 2025 16:46:34 +0800</pubDate><description><![CDATA[当 SSH 登录需要时，由于涉及交互式提示（密码输入后需进一步输入验证码），普通的ssh或sshpass无法直接处理，需要使用 expect来自动化交互式会话。expect可以监听 SSH 输出的提示信息，然后自动（或手动）输入对应的验证码。]]></description><category></category></item><item><title><![CDATA[Windows11 安装Minikube的方式]]></title><link>https://blog.csdn.net/adorechen/article/details/149776482</link><guid>https://blog.csdn.net/adorechen/article/details/149776482</guid><author>adorechen</author><pubDate>Wed, 30 Jul 2025 14:30:16 +0800</pubDate><description><![CDATA[本文介绍了两种在Windows系统下安装minikube的方法。方法一使用scoop安装，需以管理员身份运行PowerShell并选择Hyper-V驱动；方法二适用于已安装WSL2的用户，通过WSL环境安装Docker驱动版minikube。两种方式均提供了详细的安装和启动命令，用户可根据系统环境选择适合的安装方案。]]></description><category></category></item><item><title><![CDATA[深入理解 Java Builder 设计模式：解决构造函数爆炸问题]]></title><link>https://blog.csdn.net/adorechen/article/details/149564682</link><guid>https://blog.csdn.net/adorechen/article/details/149564682</guid><author>adorechen</author><pubDate>Wed, 23 Jul 2025 10:59:27 +0800</pubDate><description><![CDATA[Builder 模式是一种创建型设计模式，它将复杂对象的构建与表示分离，使得同样的构建过程可以创建不同的表示。Builder 模式允许你分步构建一个复杂对象，在最后一步完成对象的创建。Builder 模式是解决构造函数爆炸问题的有效方案，它通过链式调用的方式提供了更清晰、更灵活的对象构建方式。Builder 模式不仅提高了代码的可读性和可维护性，还支持创建不可变对象，增强了代码的健壮性。在设计具有多个可选参数的类时，Builder 模式应该成为你的首选解决方案。]]></description><category></category></item><item><title><![CDATA[Java HttpClient使用手册]]></title><link>https://blog.csdn.net/adorechen/article/details/149542235</link><guid>https://blog.csdn.net/adorechen/article/details/149542235</guid><author>adorechen</author><pubDate>Tue, 22 Jul 2025 17:31:19 +0800</pubDate><description><![CDATA[在 Java 中，是一个现代化的 HTTP 客户端，自 Java 11 起引入，用于替代旧的。它支持 HTTP/1.1 和 HTTP/2，提供异步非阻塞 API，并支持流式处理请求和响应。]]></description><category></category></item><item><title><![CDATA[MySQL JSON type字段的使用]]></title><link>https://blog.csdn.net/adorechen/article/details/147755334</link><guid>https://blog.csdn.net/adorechen/article/details/147755334</guid><author>adorechen</author><pubDate>Wed, 07 May 2025 10:25:36 +0800</pubDate><description><![CDATA[在 MySQL 里，JSON 字段类型用于存储 JSON（JavaScript Object Notation）数据。JSON 数据属于半结构化数据，其形式为键值对，并且支持嵌套结构。下面为你详细介绍 MySQL 的 JSON 字段类型。]]></description><category></category></item><item><title><![CDATA[podman/docker国内可用的docker镜像源（2025-05）]]></title><link>https://blog.csdn.net/adorechen/article/details/147652534</link><guid>https://blog.csdn.net/adorechen/article/details/147652534</guid><author>adorechen</author><pubDate>Thu, 01 May 2025 15:20:01 +0800</pubDate><description><![CDATA[我的环境时windows11下的podman，所以需要podman machine，纯linux环境可以跳过podman machine这步。999-podman-machine.conf 这个文件名字可能每台机子有自己的名称，可以在路径下找到自己的名字。输出所示，表示registry配置成功。]]></description><category></category></item><item><title><![CDATA[Java8 后接口的用法总结]]></title><link>https://blog.csdn.net/adorechen/article/details/147565937</link><guid>https://blog.csdn.net/adorechen/article/details/147565937</guid><author>adorechen</author><pubDate>Sun, 27 Apr 2025 18:25:22 +0800</pubDate><description><![CDATA[接口的作用是用来抽象行为，提供具体实现类的行为约定。接口尽量使用单一职责原理，保证接口功能的清晰。确实需要多个职责时，使用接口的扩展extends来实现。这是接口最基本的用法，在 Java 8 之前就已存在。接口里可以定义抽象方法，这些方法没有方法体，实现接口的类必须实现这些抽象方法。// 定义一个接口// 抽象方法，计算面积// 抽象方法，计算周长// 实现接口的类@Override@OverrideJava 8 引入了默认方法，使用default关键字修饰。]]></description><category></category></item><item><title><![CDATA[代理专栏总结]]></title><link>https://blog.csdn.net/adorechen/article/details/147541148</link><guid>https://blog.csdn.net/adorechen/article/details/147541148</guid><author>adorechen</author><pubDate>Sat, 26 Apr 2025 19:14:39 +0800</pubDate><description><![CDATA[通过以上知识点，可系统理解 Java 代理机制、Spring AOP 的核心原理及事务管理的实际应用，帮助排查开发中常见的事务不回滚等问题。]]></description><category></category></item><item><title><![CDATA[Spring 学习笔记之 @Transactional 异常不回滚汇总]]></title><link>https://blog.csdn.net/adorechen/article/details/147361101</link><guid>https://blog.csdn.net/adorechen/article/details/147361101</guid><author>adorechen</author><pubDate>Sat, 26 Apr 2025 18:32:26 +0800</pubDate><description><![CDATA[使用springboot时，只要引入spring-jdbc/jpa相关的依赖后，在想要启用事务的方法上加上@Transactional注解就能开启事务，碰到异常就能自动回滚。大大的提高了编码的便捷性性，同时也不侵入代码，保持了代码的简洁性。默认情况下，Spring时使用的Spring AOP （mode=Mode.Proxy， proxyTargetClass=false)方式启动数据库事务拦截。只有了解清楚了具体背景，才能清除知道事务为什么在碰到异常时没有能够正确回滚。]]></description><category></category></item><item><title><![CDATA[Spring 学习笔记之 @Transactinal实现原理]]></title><link>https://blog.csdn.net/adorechen/article/details/147526620</link><guid>https://blog.csdn.net/adorechen/article/details/147526620</guid><author>adorechen</author><pubDate>Sat, 26 Apr 2025 12:12:52 +0800</pubDate><description><![CDATA[主要借助 Spring 的 AOP（面向切面编程）机制来达成事务管理。当一个方法被注解修饰时，Spring 会在该方法执行前后添加事务相关的处理逻辑，以保证方法内的数据库操作在一个统一的事务环境中进行。注解通过 Spring 的 AOP 机制，在目标方法执行前后插入事务管理逻辑，从而实现了数据库事务的自动管理。它大大简化了事务处理的代码，提升了开发效率。]]></description><category></category></item><item><title><![CDATA[Spring 学习笔记之 @Transactional详解]]></title><link>https://blog.csdn.net/adorechen/article/details/147274473</link><guid>https://blog.csdn.net/adorechen/article/details/147274473</guid><author>adorechen</author><pubDate>Sat, 19 Apr 2025 11:13:16 +0800</pubDate><description><![CDATA[是 Spring 中用于声明式事务管理的核心注解。它允许开发者通过简单的注解方式，将事务管理逻辑与业务逻辑分离，从而简化事务的管理。2.1 作用注解用于声明事务的边界。它可以让 Spring 容器在方法执行前后自动管理事务的开启、提交和回滚。开启事务：在方法执行前，Spring 会创建一个新的事务（或加入已有的事务）。提交事务：如果方法正常执行完成，Spring 会提交事务。回滚事务：如果方法抛出异常，Spring 会根据配置决定是否回滚事务。2.2 使用场景通常用于服务层（@Service。]]></description><category></category></item><item><title><![CDATA[Spring AOP 学习笔记之 Advice详解]]></title><link>https://blog.csdn.net/adorechen/article/details/147220277</link><guid>https://blog.csdn.net/adorechen/article/details/147220277</guid><author>adorechen</author><pubDate>Tue, 15 Apr 2025 14:15:00 +0800</pubDate><description><![CDATA[定义：Advice 是 AOP 的核心概念之一，表示在特定的连接点（Join Point）上执行的代码逻辑。作用：通过 Advice，可以在方法调用前后、异常抛出时等位置插入自定义逻辑。]]></description><category></category></item><item><title><![CDATA[Spring AOP 学习笔记之 常用注解]]></title><link>https://blog.csdn.net/adorechen/article/details/147141581</link><guid>https://blog.csdn.net/adorechen/article/details/147141581</guid><author>adorechen</author><pubDate>Mon, 14 Apr 2025 13:07:33 +0800</pubDate><description><![CDATA[要在springboot中启用AOP，需要引入spring-boot-starter-aop依赖。]]></description><category></category></item><item><title><![CDATA[Spring AOP学习笔记之 基本概念]]></title><link>https://blog.csdn.net/adorechen/article/details/147141293</link><guid>https://blog.csdn.net/adorechen/article/details/147141293</guid><author>adorechen</author><pubDate>Fri, 11 Apr 2025 12:59:03 +0800</pubDate><description><![CDATA[在代码中，@Pointcut("execution(* org.derek.ctroller.*.*(..))") 定义了一个切入点，表示匹配 org.derek.ctroller 包及其子包下的所有方法。在代码中，execution(* org.derek.ctroller.*.*(..)) 定义了一个连接点，表示匹配 org.derek.ctroller 包及其子包下的所有方法。@After("log()")：无论方法是否抛出异常，都会执行的日志记录。Spring AOP 通过动态代理实现 AOP。]]></description><category></category></item><item><title><![CDATA[Java代理（六）当前主流动态代理框架性能对比]]></title><link>https://blog.csdn.net/adorechen/article/details/146983288</link><guid>https://blog.csdn.net/adorechen/article/details/146983288</guid><author>adorechen</author><pubDate>Thu, 03 Apr 2025 17:17:06 +0800</pubDate><description><![CDATA[​​​​Java 类库带有一个代理工具包，允许创建实现一组给定接口的类。这个内置的代理供应商很方便，但也很有限。例如，上面提到的安全框架不能以这种方式实现，因为我们想要扩展类而不是接口。代码生成库是在 Java 早期实现的，遗憾的是它没有跟上 Java 平台的发展。尽管如此，cglib 仍然是一个非常强大的库，但它的积极发展变得相当模糊。出于这个原因，它的许多用户离开了 cglib。该库带有一个编译器，该编译器采用包含 Java 源代码的字符串，这些字符串在应用程序运行时被翻译成 Java 字节码。]]></description><category></category></item><item><title><![CDATA[Java代理（五）动态代理之ByteBuddy]]></title><link>https://blog.csdn.net/adorechen/article/details/146964908</link><guid>https://blog.csdn.net/adorechen/article/details/146964908</guid><author>adorechen</author><pubDate>Thu, 03 Apr 2025 13:21:38 +0800</pubDate><description><![CDATA[try {功能：这是主要的拦截逻辑方法，负责拦截目标方法的调用并执行自定义逻辑。参数说明：@This Object obj：表示当前代理对象。@Origin Method method：表示被拦截的方法。@AllArguments Object[] args：表示被拦截方法的参数列表。这里可以不用实现某个固定的InvocationHandler或者MethodInterceptor类似的接口了，ByteBuddy自己自动匹配拦截。]]></description><category></category></item><item><title><![CDATA[Java代理（四）动态代理之CGLIB]]></title><link>https://blog.csdn.net/adorechen/article/details/146918882</link><guid>https://blog.csdn.net/adorechen/article/details/146918882</guid><author>adorechen</author><pubDate>Wed, 02 Apr 2025 13:49:58 +0800</pubDate><description><![CDATA[JDK Dynamic Proxy 和 CGLib 是两种常用的代理技术，它们各自有不同的适用场景和局限性。]]></description><category></category></item><item><title><![CDATA[Java代理（三）动态代理之JDK Dynamic Proxy]]></title><link>https://blog.csdn.net/adorechen/article/details/146909179</link><guid>https://blog.csdn.net/adorechen/article/details/146909179</guid><author>adorechen</author><pubDate>Tue, 01 Apr 2025 14:26:12 +0800</pubDate><description><![CDATA[首先，需要定义一个或多个接口，代理对象将实现这些接口。在这个例子中，Calculator是一个接口。Proxy.newProxyInstance方法的内部工作原理可以总结为以下步骤：检查参数：确保传入的类加载器和接口数组不为空。生成代理类字节码：使用ProxyGenerator.generateProxyClass方法生成代理类的字节码。加载代理类：使用传入的类加载器将生成的代理类加载到JVM中。]]></description><category></category></item><item><title><![CDATA[Java 代理（二） 动态代理概述篇]]></title><link>https://blog.csdn.net/adorechen/article/details/146803194</link><guid>https://blog.csdn.net/adorechen/article/details/146803194</guid><author>adorechen</author><pubDate>Tue, 01 Apr 2025 10:22:43 +0800</pubDate><description><![CDATA[动态代理是指在程序运行期间动态创建代理类和代理对象的方式。与静态代理不同，动态代理不需要在编译时定义代理类，而是通过反射机制在运行时生成代理类。动态代理的核心思想是“解耦”，它允许我们在不修改目标对象的情况下，为其添加额外的功能。JDK动态代理适合代理接口，而CGLIB动态代理适合代理没有接口的类。根据实际需求选择合适的代理方式即可。]]></description><category></category></item></channel></rss>