自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(100)
  • 收藏
  • 关注

原创 手写Zookeeper分布式锁

zookeeper版本:zookeeper-3.4.12,该版本原生api不支持递归创建节点。

2024-05-21 17:17:41 188

原创 Zookeeper安装配置

安装zookeeper前,请确保系统具备jdk8及以上的Java环境配置,否则可能运行不了。

2024-05-17 15:49:51 306

原创 Optional类用法

空指针异常是Java应用程序失败的最常见原因。Google公司在著名的Guava项目中引入了Optional类,通过使用检查空值的方式来防止代码污染,来解决臭名昭著的空指针异常问题。受此启发,Optional类已成为Java 8 类库的一部分。

2024-04-16 10:01:40 394 1

原创 大话设计模式——24.迭代器模式(Iterator Pattern)

提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部实现。(Java中使用最多的设计模式之一)优点可以不暴露集合的内部结构,又可让外部代码透明地访问集合内部的数据支持以不同的方式遍历一个聚合对象缺点对于比较简单的遍历如数组、有序列表,该方式实现比较繁琐在遍历的同时更改迭代器所在的集合结构会导致异常。

2024-04-10 14:16:19 722

原创 大话设计模式——23.备忘录模式(Memento Pattern)

又称快照模式,在不破坏封装性的前提下,捕获一个对象的内部状态,并且该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态优点提供了可以恢复的机制实现了信息的封装,用户不需要关心状态的保存细节缺点会占用较多的系统存储资源。

2024-04-10 13:40:35 540

原创 大话设计模式——22.访问者模式(Visitor Pattern)

表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作优点满足开闭原则,新增操作只需新增访问类即可缺点增加新的数据结构会变得困难。

2024-04-10 12:57:32 577

原创 大话设计模式——21.中介者模式(Mediator Pattern)

用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互优点中介者的出现减少了Colleague之间的耦合,使得可以独立地改变和复用各个Colleague类和中介者由于把对象如何协作进行了抽象,将中介作为一个独立的改变并将其封装在一个对象中,将关注的对象从对象各自本身的行为转移到它们之间的交互上,可以从宏观角度去看待系统缺点由于中介者对象过度的集中化可能导致其复杂性大大增加,导致理解难度增加和可维护性降低。

2024-04-10 11:44:48 578

原创 大话设计模式——20.解释器模式(Interpreter Pattern)

给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子优点容易改变和扩展文法,该模式使用类来表示文法规则,可使用继承来改变或扩展文法容易实现文法,定义抽象语法树中各个节点的类实现大体类似易于编写缺点文法中的每一条规则至少定义了一个类,因此包含许多规则的文法可能难以管理和维护文法复杂时建议使用其他如语法分析程序或编译器生成器等处理。

2024-04-10 11:04:41 340

原创 大话设计模式——19.责任链模式(Chain of Responsibility Pattern)

使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。主要有两个核心行为:1.处理请求;2.将请求传递到下一节点优点客户只需要将请求发送到职责链上即可,无需关心请求的具体细节,降低了耦合度通过改变链内的调动次序,可以动态新增或删除处理类,提高了可维护性可以根据需求新增请求处理类,提高了可扩展性,同时满足开闭原则每个请求处理类只服务于自己的责任范围,满足单一职责原则缺点。

2024-04-10 10:26:23 1117

原创 大话设计模式——18.策略模式(Strategy Pattern)

是一系列算法的封装,即做的事情相同(方法名称相同)但是实现的方式不同,以相同方式调用所有的算法,减少算法与使用算法的耦合。直接调用方法。满足开闭原则,当增加具体策略时,不需要修改上下文代码避免使用过多的条件判断,过多的条件判断语句不利于系统可维护性,扩展性和灵活性缺点策略类可能过多可能导致膨胀,复用性较小。

2024-04-09 15:33:53 608

原创 大话设计模式——17.状态模式(State Pattern)

对象的行为依赖于它的状态(属性),可以根据状态的改变而改变相关行为。优点只需改变对象的状态,就可改变对象的行为多个环境对象共享一个状态对象,可以减少系统中对象的个数缺点增加系统类和对象的个数使用不当将造成程序结构和代码的混乱不符合开闭原则,新增状态需要修改源码。

2024-04-09 14:15:42 574

原创 大话设计模式——16.命令模式(Command Pattern)

请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的对象进行执行。命令模式是一种特殊的策略模式,体现多个策略执行的问题,而不是选择的问题优点调用者对象与接受者对象没有任何依赖关系,降低了系统的耦合度方便新的命令添加至系统中,扩展性强缺点过多的命令会导致系统中存在过多的具体命令类。

2024-04-09 11:55:38 612

原创 大话设计模式——15.观察者模式(Observer Pattern)

也称发布订阅模式(Publish/Subscribe),定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新观察者与被观察者是抽象耦合的,降低了目标与观察者之间的耦合关系目标与观察者之间建立了一套触发机制缺点观察者与被观察者之间如果存在循环依赖,可能会触发彼此之间的循环调用,导致系统崩溃若一个被观察者对象存在大量观察者对象,如果这些观察者对象都需要通知,会耗费大量时间。

2024-04-09 11:10:40 589

原创 大话设计模式——14.享元模式(Flyweight Pattern)

尝试重用现有的同类对象,未找到匹配的对象,则创建新对象。它提供了减少对象数量从而改善应用所需的对象结构的方式UML图:Java的String类型数据,字符串常量池中存在则并返回,没有则创建字符串并保存在字符串常量池中系统中存在大量相似对象,需要进行池化的时候,如数据库连接池、线程池等需要生成大量的细粒度的实例,且实例大体相似优点可以减少对象的创建,减少程序内存的占用,提高系统性能缺点增加了系统的复杂性必须有一个工厂类加以控制。

2024-04-08 16:18:41 394

原创 大话设计模式——13.外观模式(Facade Pattern)

又称门面模式,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。UML图第三方SDK大多使用该模式,通过一个外观类,可对用户屏蔽很多实现细节对于复杂难以维护的老系统进行拓展外界对子系统的访问只能黑盒操作,需要对一个复杂的模块或子系统提供一个对外界访问的接口优点:减少系统之间的相互依赖,提高灵活性符合依赖倒转原则(面向接口编程)符合迪米特法则(最少知道原则,类之间应尽量少的发生相互作用)缺点增加了系统的调用链路。

2024-04-08 15:22:05 397

原创 大话设计模式——12.组合模式(Composite Pattern)

又称部分整体模式,将对象组合成树形结构以表示‘部分-整体’的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性UML图:应用场景银行总行-分行总公司-分公司文件夹-文件要处理的对象可以生成一颗树形结构,对树上的节点和叶子进行操作时,能够提供一致的方式优点客户端只需要面对一致的对象无需考虑整体部分的问题方便创建复杂的层次结构缺点客户端需耗费较多时间梳理类之间的层次关系。

2024-04-08 14:46:44 373

原创 大话设计模式——11.桥接模式(Bridge Pattern)

将抽象部分与它的实现部分分离,使它们可以独立变化。UML图:系统需要在构建的抽象化角色和具体化角色之间增加更多的灵活性不想使用继承导致系统类的个数急剧增加某个类存在多个变化维度使用继承方式容易出现类的膨胀优点实现抽象和实现的分离,提高系统灵活性具备良好的扩展性,符合开闭原则缺点增加系统的理解和设计难度。

2024-04-08 13:43:53 722 1

原创 大话设计模式——10.适配器模式(Adapter Pattern)

将一个类的接口转换成客户希望的另外一个接口。使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。可以让任何两个没有关联的类⼀起运行,使得原本接口不兼容的类也可以一起工作提高代码可复用性和灵活性增加了整体的调用链路。

2024-04-07 16:46:37 350

原创 大话设计模式——9.单例模式(Singleton Pattern)

确保一个类只有一个实例,并提供全局访问点来获取该实例,是最简单的设计模式。UML图:饿汉式(线程安全)提前创建实例,好处在于该实例全局唯一,不存在线程冲突;坏处在于未使用时也会占用内存资源。懒汉式(原生写法存在线程冲突问题)将实例的创建延迟到第一次使用时进行,相当于懒加载私有化构造器提供唯一的全局访问接口对象不复杂时,建议使用饿汉式。其他情况下使用懒汉式性能较好。

2024-04-07 15:27:58 697

原创 大话设计模式——六大基本设计原则(SOLID原则)

设计模式不应过渡使用,可能会导致代码变得复杂且难以理解,提高了代码抽象性,可能导致系统可维护性降低,导致适得其反。

2024-04-07 13:26:59 809

原创 大话设计模式——8.原型模式(Prototype Pattern)

用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。属于创建型模式。指创建一个新的对象,然后将原始对象的字段值复制到新对象中。如果字段是基本类型,直接复制其值;如果字段是引用类型,则复制其引用,新对象和原对象将共享同一份引用指向相同的内存地址。一般实现Cloneable接口,重写clone()方法。指创建一个新的对象,然后将原始对象的字段值复制到新对象中。但与浅拷贝不同的是,对于引用类型的字段,深拷贝会递归地复制其所指向的对象,而不是复制引用本身。一般实现Serializable。

2024-03-17 22:12:35 626

原创 大话设计模式——7.抽象工厂模式(Abstract Factory Pattern)

抽象工厂模式是工厂模式的进一步优化,提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。属于创建型模式。1)优点:a. 让具体的创建实例过程与客户端分离,客户端是通过它们的抽象接口操纵实例,产品的具体类名也被具体工厂实现分离,不会出现在客户代码中b. 可以保证使用方始终只使用同一个产品族中的对象c. 扩展容易,只需要增加新的产品类和对应的工厂类即可2)缺点:a. 不符合开闭原则,新增产品类时需要修改抽象工厂和抽象产品中的代码b. 增加了系统的复杂性和抽象性。

2024-03-15 22:01:49 527

原创 大话设计模式——6.工厂方法模式(Factory Method Pattern)

工厂方法模式也称工厂模式,是简单工厂模式的进一步抽象。定义一个用于创建对象的接口,使一个类的实例化延迟到其子类,让子类决定实例化哪个类。通过工厂父类定义负责创建产品的公共接口,通过子类确定所需要创建的类型。属于创建型模式。1)优点:符合6大原则,只需要知道产品的抽象类即可,无需关心其他具体实现类每个产品都需要有对应的具体产品类和具体工厂。

2024-03-14 21:19:57 488

原创 大话设计模式——5.代理模式(Proxy Pattern)

为其他具体对象提供一种代理用以控制对这个对象的访问,属于结构型模式。无需修改代理的对象源码,符合开闭原则,可使系统具有较好的灵活性和可扩展性可以对代理的具体对象做增强处理,如增加一些功能等增加了系统的复杂性与调用过程的链路。

2024-03-07 12:15:21 610

原创 大话设计模式——4.装饰模式(Decorator Pattern)

1)可以在不改动原有对象代码的情况下扩展对象的功能,通过聚合的方式相较于继承更加灵活。2)UML图1)优点扩展功能不必修改原有代码,符合开闭原则较继承方式更为灵活2)缺点会构建较多子类,代码编写变的复杂,增加了系统的复杂度与运维理解难度。

2024-02-29 16:05:38 548

原创 大话设计模式——3.建造者模式(Builder Pattern)

将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。UML图优点:隐藏具体的建造细节,将产品本身与产品的创建过程解耦具体建造者之间相对独立,可以更加精细地控制产品的创建过程新增具体建造者无须修改原有类库的代码,符合开闭原则缺点:创建的产品的需要有较多的共同点,否则使用效果不理想也会增加系统代码的复杂度,使其更为抽象,维护难度增大。

2024-02-26 20:16:16 527

原创 大话设计模式——2.简单工厂模式(Simple Factory Pattern)

定义:又称静态工厂方法,可以根据参数的不同返回不同类的实例,专门定义一个类(工厂类)来负责创建其他类的实例可通过类名直接调用,被创建的实例通常具有共同的父类。计算器中的加减乘除,可将不同的运算看成不同的对象,通过工厂类进行构建,传入你想创建的对象的运算符号。工厂对象创建:提供一个统一的静态方法,创建运算对象。基类:运算对象,确定运算参数和方法。后续运算对象创建类似。加法运算对象继承基类。

2024-02-20 17:51:10 641

原创 大话设计模式——1.模板方法模式(Template Method Pattern)

定义:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些。优点:提供了一个比较好的代码复用平台,可以不改变算法的结构去重新定义算法的某些特定步骤。例子:比较重大的考试往往有A、B两套试卷,其中一套出现问题可以立马更换另一套。缺点:增加了系统的复杂性和抽象性以及理解难度(设计模式中的通用缺点)

2024-02-12 22:07:35 985

原创 关于@Valid不能嵌套校验的坑

在需要校验的list属性中再追加。字段进行校验,如图即可嵌套校验。

2023-03-23 14:24:07 278

原创 Shiro过滤器Filter的实战使用

Shiro过滤器Filter的实战使用

2023-02-23 18:18:30 1456

原创 Shiro常用的Filter过滤器

Shiro常用的Filter过滤器

2023-02-22 15:14:16 662

原创 Shiro 自定义Realm

Shiro 自定义Realm

2023-02-22 14:27:02 182

原创 java中可以对对象赋值的位置及顺序

java中可以对对象赋值的位置及顺序

2023-02-22 11:48:30 273

原创 Shiro内置JdbcRealm使用

Shiro内置JdbcRealm使用

2023-02-22 11:29:49 208

原创 Shiro中Subject常用方法

Shiro中Subject常用方法

2023-02-21 17:55:49 205

原创 Apache Shiro核心架构概念

shiro核心架构概念介绍

2023-02-21 16:05:29 204

原创 Apache Shiro与Spring Security对比

shiro与security对比

2023-02-21 15:47:30 498

原创 关于权限设计的ACL和RBAC的简单了解

权限设计知识了解ACL&RBAC

2023-02-21 15:10:23 356

原创 关于v-model无法获取props属性值问题解决思路

v-model无法操作props数据

2023-02-18 17:01:49 1260

原创 echarts简单封装

vue中echarts组件封装

2023-02-18 15:00:31 140

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除