<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[JavaBoy_XZL的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/JavaBoy_XZL</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; JavaBoy_XZL]]></copyright><item><title><![CDATA[Spring条件化装配Bean]]></title><link>https://blog.youkuaiyun.com/JavaBoy_XZL/article/details/142169880</link><guid>https://blog.youkuaiyun.com/JavaBoy_XZL/article/details/142169880</guid><author>JavaBoy_XZL</author><pubDate>Thu, 12 Sep 2024 11:04:43 +0800</pubDate><description><![CDATA[可以看出来，这个接口实现起来很简单直接，只需提供matches()方法的实现即可。如果matches()方法返回 true，那么就会创建带有@Conditional注解的bean。借助isAnnotated()方法，我们能够判断带有@Bean注解的方法是不是还有其他特定的注解。借助其他的那些方法，我们能够检查@Bean注解的方法上其他注解的属性。2.借助getBeanFactory()返回的ConfigurableListableBeanFactory检查bean是否存在，甚至探查bean的属性；]]></description><category></category></item><item><title><![CDATA[maven坐标与依赖]]></title><link>https://blog.youkuaiyun.com/JavaBoy_XZL/article/details/140828221</link><guid>https://blog.youkuaiyun.com/JavaBoy_XZL/article/details/140828221</guid><author>JavaBoy_XZL</author><pubDate>Wed, 31 Jul 2024 17:25:25 +0800</pubDate><description><![CDATA[现在account-email有一个compile范围的spring-core依赖，spring-core有一个compile范围的comms-logging依赖，所以comms-logging会成为account-email的compile范围的。本例主构件输出nexus-indexer-2.0.0.jar，附属构件比如有：nexus-indexer-2.0.0-javadoc.jar，nexus-indexer-2.0.0-source.jar等。：标记依赖是否可选，若为true则为可选依赖。]]></description><category></category></item><item><title><![CDATA[maven repository]]></title><link>https://blog.youkuaiyun.com/JavaBoy_XZL/article/details/140826639</link><guid>https://blog.youkuaiyun.com/JavaBoy_XZL/article/details/140826639</guid><author>JavaBoy_XZL</author><pubDate>Wed, 31 Jul 2024 16:41:09 +0800</pubDate><description><![CDATA[releases的enabled值为true，表示开启JBoss仓库的发布版本下载支持，snapshots的enabled值为false，表示关闭JBoss仓库的快照版本的下载支持。任何一个仓库的id是唯一的，maven自带的中央仓库使用的id为central，如果其他仓库的id也为central，那么它将覆盖自带的中央仓库。镜像仓库完全屏蔽了被镜像仓库，当镜像仓库停止服务的时候，maven仍无法访问被镜像仓库，因而将无法下载构建。由于私服可以代理任何外部的公共仓库，所以可以说私服就是所有仓库的镜像。]]></description><category></category></item><item><title><![CDATA[Spring Bean生命周期]]></title><link>https://blog.youkuaiyun.com/JavaBoy_XZL/article/details/140666480</link><guid>https://blog.youkuaiyun.com/JavaBoy_XZL/article/details/140666480</guid><author>JavaBoy_XZL</author><pubDate>Wed, 24 Jul 2024 16:25:13 +0800</pubDate><description><![CDATA[5.如果Bean实现了ApplicationContextAware接口，Spring将调用setApplicationContext()接口方法，将应用上下文的引用传入；6.如果Bean实现了BeanPostProcessor接口，Spring将调用它们的postProcessBeforeInitialization()接口方法；4.如果Bean实现了BeanFactoryAware接口，Spring将调用setBeanFactory()接口方法，将BeanFactory容器实例传入；]]></description><category></category></item><item><title><![CDATA[Java 反射机制]]></title><link>https://blog.youkuaiyun.com/JavaBoy_XZL/article/details/140666043</link><guid>https://blog.youkuaiyun.com/JavaBoy_XZL/article/details/140666043</guid><author>JavaBoy_XZL</author><pubDate>Wed, 24 Jul 2024 16:12:43 +0800</pubDate><description><![CDATA[JAVA反射机制是在运行状态中，对于任意一个类，都能够知道这个类的所有属性和方法；这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。]]></description><category></category></item><item><title><![CDATA[通俗易懂的观察者模式]]></title><link>https://blog.youkuaiyun.com/JavaBoy_XZL/article/details/129667586</link><guid>https://blog.youkuaiyun.com/JavaBoy_XZL/article/details/129667586</guid><author>JavaBoy_XZL</author><pubDate>Mon, 20 Mar 2023 15:06:34 +0800</pubDate><description><![CDATA[观察者模式定义了对象之间的一对多依赖，让多个观察者同时监听某个主题对象，当主体对象发生变化时，它的所有观察者都会收到响应的通知。基于JDK对观察者模式提供的支持，下面举个观察者模式的例子。]]></description><category></category></item><item><title><![CDATA[Java随机生成字符串的4种方式]]></title><link>https://blog.youkuaiyun.com/JavaBoy_XZL/article/details/129008018</link><guid>https://blog.youkuaiyun.com/JavaBoy_XZL/article/details/129008018</guid><author>JavaBoy_XZL</author><pubDate>Mon, 13 Feb 2023 14:18:21 +0800</pubDate><description><![CDATA[Apache Commons Lang库有一个org.apache.commons.lang.RandomStringUtils类，该类具有生成固定长度的随机字符串的方法。java.util.UUID 类可用于生成UUID， 它的static randomUUID方法返回一个32个字符的字符串。此方法与Math方法类似，即创建所有字符的超集，生成一个随机索引，并使用该索引处的字符创建最终字符串。它的方法可以生成只包含字母(随机字母)、数字(随机数字)或两者(随机字母数字)的随机字符串。]]></description><category></category></item><item><title><![CDATA[解释器模式]]></title><link>https://blog.youkuaiyun.com/JavaBoy_XZL/article/details/122981507</link><guid>https://blog.youkuaiyun.com/JavaBoy_XZL/article/details/122981507</guid><author>JavaBoy_XZL</author><pubDate>Thu, 17 Feb 2022 13:57:14 +0800</pubDate><description><![CDATA[概述



如上图，设计一个软件用来进行加减计算。我们第一想法就是使用工具类，提供对应的加法和减法的工具方法。


//用于两个整数相加
public static int add(int a,int b){
    return a + b;
}

//用于两个整数相加
public static int add(int a,int b,int c){
    return a + b + c;
}

//用于n个整数相加
public static int add(Integer ... arr) {.]]></description><category></category></item><item><title><![CDATA[备忘录模式（Java行为型设计模式）]]></title><link>https://blog.youkuaiyun.com/JavaBoy_XZL/article/details/122959712</link><guid>https://blog.youkuaiyun.com/JavaBoy_XZL/article/details/122959712</guid><author>JavaBoy_XZL</author><pubDate>Wed, 16 Feb 2022 11:35:02 +0800</pubDate><description><![CDATA[概述

备忘录模式提供了一种状态恢复的实现机制，使得用户可以方便地回到一个特定的历史步骤，当新的状态无效或者存在问题时，可以使用暂时存储起来的备忘录将状态复原，很多软件都提供了撤销（Undo）操作，如 Word、记事本、Photoshop、IDEA等软件在编辑时按 Ctrl+Z 组合键时能撤销当前操作，使文档恢复到之前的状态；还有在 浏览器 中的后退键、数据库事务管理中的回滚操作、玩游戏时的中间结果存档功能、数据库与操作系统的备份操作、棋类游戏中的悔棋功能等都属于这类。

定义：

又叫快照模式，在不破坏封]]></description><category></category></item><item><title><![CDATA[访问者模式（Java行为型设计模式）]]></title><link>https://blog.youkuaiyun.com/JavaBoy_XZL/article/details/122937801</link><guid>https://blog.youkuaiyun.com/JavaBoy_XZL/article/details/122937801</guid><author>JavaBoy_XZL</author><pubDate>Tue, 15 Feb 2022 10:35:51 +0800</pubDate><description><![CDATA[概述

定义：

封装一些作用于某种数据结构中的各元素的操作，它可以在不改变这个数据结构的前提下定义作用于这些元素的新的操作。

结构

访问者模式包含以下主要角色:

* 抽象访问者（Visitor）角色：定义了对每一个元素`（Element）`访问的行为，它的参数就是可以访问的元素，它的方法个数理论上来讲与元素类个数（Element的实现类个数）是一样的，从这点不难看出，访问者模式要求元素类的个数不能改变。* 具体访问者（ConcreteVisitor）角色：给出对每一个元素类访问时所产生的具体行为。*]]></description><category></category></item><item><title><![CDATA[迭代器模式(Java行为型设计模式)]]></title><link>https://blog.youkuaiyun.com/JavaBoy_XZL/article/details/122921289</link><guid>https://blog.youkuaiyun.com/JavaBoy_XZL/article/details/122921289</guid><author>JavaBoy_XZL</author><pubDate>Mon, 14 Feb 2022 11:51:02 +0800</pubDate><description><![CDATA[概述

定义：

提供一个对象来顺序访问聚合对象中的一系列数据，而不暴露聚合对象的内部表示。

结构

迭代器模式主要包含以下角色：

* 抽象聚合（Aggregate）角色：定义存储、添加、删除聚合元素以及创建迭代器对象的接口。

* 具体聚合（ConcreteAggregate）角色：实现抽象聚合类，返回一个具体迭代器的实例。* 抽象迭代器（Iterator）角色：定义访问和遍历聚合元素的接口，通常包含 hasNext()、next() 等方法。* 具体迭代器（Concretelterator）角色：实]]></description><category></category></item><item><title><![CDATA[中介者模式(Java行为型设计模式)]]></title><link>https://blog.youkuaiyun.com/JavaBoy_XZL/article/details/122855598</link><guid>https://blog.youkuaiyun.com/JavaBoy_XZL/article/details/122855598</guid><author>JavaBoy_XZL</author><pubDate>Thu, 10 Feb 2022 13:33:05 +0800</pubDate><description><![CDATA[概述

一般来说，同事类之间的关系是比较复杂的，多个同事类之间互相关联时，他们之间的关系会呈现为复杂的网状结构，这是一种过度耦合的架构，即不利于类的复用，也不稳定。例如在下左图中，有六个同事类对象，假如对象1发生变化，那么将会有4个对象受到影响。如果对象2发生变化，那么将会有5个对象受到影响。也就是说，同事类之间直接关联的设计是不好的。

如果引入中介者模式，那么同事类之间的关系将变为星型结构，从下右图中可以看到，任何一个类的变动，只会影响的类本身，以及中介者，这样就减小了系统的耦合。一个好的设计，必定不会]]></description><category></category></item><item><title><![CDATA[观察者模式（Java行为型设计模式）]]></title><link>https://blog.youkuaiyun.com/JavaBoy_XZL/article/details/122836418</link><guid>https://blog.youkuaiyun.com/JavaBoy_XZL/article/details/122836418</guid><author>JavaBoy_XZL</author><pubDate>Wed, 09 Feb 2022 11:08:53 +0800</pubDate><description><![CDATA[概述

定义：

又被称为发布-订阅（Publish/Subscribe）模式，它定义了一种一对多的依赖关系，让多个观察者对象同时监听某一个主题对象。这个主题对象在状态变化时，会通知所有的观察者对象，使他们能够自动更新自己。

结构

在观察者模式中有如下角色：

* Subject：抽象主题（抽象被观察者），抽象主题角色把所有观察者对象保存在一个集合里，每个主题都可以有任意数量的观察者，抽象主题提供一个接口，可以增加和删除观察者对象。
* ConcreteSubject：具体主题（具体被观察者），该角色将]]></description><category></category></item><item><title><![CDATA[状态模式（Java行为型设计模式）]]></title><link>https://blog.youkuaiyun.com/JavaBoy_XZL/article/details/122689844</link><guid>https://blog.youkuaiyun.com/JavaBoy_XZL/article/details/122689844</guid><author>JavaBoy_XZL</author><pubDate>Tue, 25 Jan 2022 18:08:30 +0800</pubDate><description><![CDATA[概述

【例】通过按钮来控制一个电梯的状态，一个电梯有开门状态，关门状态，停止状态，运行状态。每一种状态改变，都有可能要根据其他状态来更新处理。例如，如果电梯门现在处于运行时状态，就不能进行开门操作，而如果电梯门是停止状态，就可以执行开门操作。

类图如下：



代码如下：


//电梯接口
public interface ILift {
    //电梯的4个状态
    //开门状态
    public final static int OPENING_STATE = 1;
    //关门状态.]]></description><category></category></item><item><title><![CDATA[责任链模式（Java行为型设计模式）]]></title><link>https://blog.youkuaiyun.com/JavaBoy_XZL/article/details/122607466</link><guid>https://blog.youkuaiyun.com/JavaBoy_XZL/article/details/122607466</guid><author>JavaBoy_XZL</author><pubDate>Thu, 20 Jan 2022 18:31:06 +0800</pubDate><description><![CDATA[概述

在现实生活中，常常会出现这样的事例：一个请求有多个对象可以处理，但每个对象的处理条件或权限不同。例如，公司员工请假，可批假的领导有部门负责人、副总经理、总经理等，但每个领导能批准的天数不同，员工必须根据自己要请假的天数去找不同的领导签名，也就是说员工必须记住每个领导的姓名、电话和地址等信息，这增加了难度。这样的例子还有很多，如找领导出差报销、生活中的“击鼓传花”游戏等。

定义：

又名职责链模式，为了避免请求发送者与多个请求处理者耦合在一起，将所有请求的处理者通过前一对象记住其下一个对象的引用而连]]></description><category></category></item><item><title><![CDATA[Java命令模式（行为型设计模式）]]></title><link>https://blog.youkuaiyun.com/JavaBoy_XZL/article/details/122607170</link><guid>https://blog.youkuaiyun.com/JavaBoy_XZL/article/details/122607170</guid><author>JavaBoy_XZL</author><pubDate>Thu, 20 Jan 2022 18:18:12 +0800</pubDate><description><![CDATA[概述

日常生活中，我们出去吃饭都会遇到下面的场景。



定义：

将一个请求封装为一个对象，使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通，这样方便将命令对象进行存储、传递、调用、增加与管理。

结构

命令模式包含以下主要角色：

* 抽象命令类（Command）角色： 定义命令的接口，声明执行的方法。
* 具体命令（Concrete Command）角色：具体的命令，实现命令接口；通常会持有接收者，并调用接收者的功能来完成命令要执行的操作。
* 实现者/接收者（Recei.]]></description><category></category></item><item><title><![CDATA[Java设计模式之策略模式（行为型设计模式）]]></title><link>https://blog.youkuaiyun.com/JavaBoy_XZL/article/details/122545237</link><guid>https://blog.youkuaiyun.com/JavaBoy_XZL/article/details/122545237</guid><author>JavaBoy_XZL</author><pubDate>Mon, 17 Jan 2022 18:19:19 +0800</pubDate><description><![CDATA[概述

先看下面的图片，我们去旅游选择出行模式有很多种，可以骑自行车、可以坐汽车、可以坐火车、可以坐飞机。



作为一个程序猿，开发需要选择一款开发工具，当然可以进行代码开发的工具有很多，可以选择Idea进行开发，也可以使用eclipse进行开发，也可以使用其他的一些开发工具。



定义：

​ 该模式定义了一系列算法，并将每个算法封装起来，使它们可以相互替换，且算法的变化不会影响使用算法的客户。策略模式属于对象行为模式，它通过对算法进行封装，把使用算法的责任和算法的实现分割开来，并委派给不同的...]]></description><category></category></item><item><title><![CDATA[Java模板方法模式（行为型设计模式）]]></title><link>https://blog.youkuaiyun.com/JavaBoy_XZL/article/details/122499557</link><guid>https://blog.youkuaiyun.com/JavaBoy_XZL/article/details/122499557</guid><author>JavaBoy_XZL</author><pubDate>Fri, 14 Jan 2022 18:05:58 +0800</pubDate><description><![CDATA[概述

在面向对象程序设计过程中，程序员常常会遇到这种情况：设计一个系统时知道了算法所需的关键步骤，而且确定了这些步骤的执行顺序，但某些步骤的具体实现还未知，或者说某些步骤的实现与具体的环境相关。

例如，去银行办理业务一般要经过以下4个流程：取号、排队、办理具体业务、对银行工作人员进行评分等，其中取号、排队和对银行工作人员进行评分的业务对每个客户是一样的，可以在父类中实现，但是办理具体业务却因人而异，它可能是存款、取款或者转账等，可以延迟到子类中实现。

定义：

定义一个操作中的算法骨架，而将算法的一些]]></description><category></category></item><item><title><![CDATA[结构型模式之享元模式]]></title><link>https://blog.youkuaiyun.com/JavaBoy_XZL/article/details/122416495</link><guid>https://blog.youkuaiyun.com/JavaBoy_XZL/article/details/122416495</guid><author>JavaBoy_XZL</author><pubDate>Mon, 10 Jan 2022 18:42:11 +0800</pubDate><description><![CDATA[概述

定义：运用共享技术来有效地支持大量细粒度对象的复用。它通过共享已经存在的对象来大幅度减少需要创建的对象数量、避免大量相似对象的开销，从而提高系统资源的利用率。

结构

享元（Flyweight ）模式中存在以下两种状态：

1. 内部状态，即不会随着环境的改变而改变的可共享部分。
2. 外部状态，指随环境改变而改变的不可以共享的部分。享元模式的实现要领就是区分应用中的这两种状态，并将外部状态外部化。

享元模式的主要有以下角色：

* 抽象享元角色（Flyweight）：通常是一个接口或抽象类，在]]></description><category></category></item><item><title><![CDATA[结构型设计模式之组合模式]]></title><link>https://blog.youkuaiyun.com/JavaBoy_XZL/article/details/122369575</link><guid>https://blog.youkuaiyun.com/JavaBoy_XZL/article/details/122369575</guid><author>JavaBoy_XZL</author><pubDate>Fri, 07 Jan 2022 18:10:12 +0800</pubDate><description><![CDATA[概述





​ 对于这个图片肯定会非常熟悉，上图我们可以看做是一个文件系统，对于这样的结构我们称之为树形结构。在树形结构中可以通过调用某个方法来遍历整个树，当我们找到某个叶子节点后，就可以对叶子节点进行相关的操作。可以将这颗树理解成一个大的容器，容器里面包含很多的成员对象，这些成员对象即可是容器对象也可以是叶子对象。但是由于容器对象和叶子对象在功能上面的区别，使得我们在使用的过程中必须要区分容器对象和叶子对象，但是这样就会给客户带来不必要的麻烦，作为客户而已，它始终希望能够一致的对待容器对象和叶子对象。]]></description><category></category></item></channel></rss>