- 博客(64)
- 问答 (1)
- 收藏
- 关注
原创 设计模式之模板方法模式
模板方法模式是一种行为设计模式,它在一个方法中定义了一个算法的骨架,并允许子类为一个或多个步骤提供实现。这可以让子类在不改变算法结构的情况下,重新定义算法的某些步骤。
2024-06-06 10:25:40 411
原创 设计模式之中介者模式
中介者模式是一种行为设计模式,它减少了类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理所有的通信,并支持易维护的方式来协调多个类。
2024-06-06 10:24:47 407
原创 设计模式之建造者模式
建造者模式是一种创建型设计模式,它提供了一种封装一个对象的复杂构造过程的解决方案。在建造者模式中,我们将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。
2024-06-06 10:23:45 578
原创 设计模式之策略模式
策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在策略模式中,我们创建对象,它们表示各种策略,并且一个上下文对象,其行为根据其策略对象的行为而变化。策略对象改变上下文对象的执行算法。这种类型的设计模式属于行为模式。在策略模式中,我们创建了表示各种策略的对象和一个行为随其策略对象变化的上下文对象。策略对象改变上下文对象的执行算法。
2024-06-06 10:06:01 350
原创 设计模式之备忘录模式
备忘录模式(Memento Pattern)是一种行为设计模式,它提供了一种在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可以将该对象恢复到原先保存的状态。Originator(发起人):创建一个含有当前状态的备忘录对象,也可以使用备忘录对象恢复内部状态。Memento(备忘录):存储发起人的状态信息,但对外部屏蔽了发起人状态的细节,防止外部对象对状态进行非法访问。
2024-06-05 12:45:36 1096
原创 设计模式之命令模式
命令模式(Command Pattern)是一种行为设计模式,它将请求封装为一个对象,从而让你可以用不同的请求对客户进行参数化,队列化请求或者记录请求日志,以及支持可撤销的操作。命令接口(Command Interface):定义执行操作的接口。具体命令(Concrete Command):实现命令接口,负责具体的业务逻辑处理。接收者(Receiver):真正执行操作的类,包含业务逻辑方法。调用者(Invoker):持有命令对象,并调用其execute方法来执行命令。
2024-06-05 10:56:38 1055
原创 设计模式之责任链模式
责任链模式(Chain of Responsibility Pattern)是一种行为设计模式,它允许你将请求沿着处理者链进行发送。收到请求后,每个处理者都可以处理请求或将其传递给链中的下一个处理者。这一模式简化了对象之间的相互连接,使得多个对象都有机会处理请求,从而避免了请求的发送者和接收者之间的耦合。处理请求的接口:定义处理请求的接口或抽象类。具体处理者:实现上述接口的具体类,可以处理请求,也可以选择将请求传递给链中的下一个处理者。责任链:管理处理者的链结构,可以决定请求的传递路径。
2024-06-04 15:12:45 600
原创 设计模式之迭代器模式
迭代器模式(Iterator Pattern)是行为设计模式之一,它提供了一种访问集合对象元素的方式,而不需要暴露集合的内部表示。迭代器模式可以让你顺序地访问集合中的每个元素,而无需知道集合的底层实现。这种方式支持对不同类型的集合进行统一的操作,增加了程序的灵活性和可扩展性。Iterable(Iterable Interface): 定义了创建迭代器对象的接口。Iterator(Iterator Interface): 定义了遍历集合元素所需的方法,如hasNext()和next()。
2024-06-03 17:45:50 433
原创 设计模式之状态模式
状态模式是一种行为设计模式,它允许对象在内部状态改变时改变其行为,看起来好像这个对象改变了它的类。这种模式常用于处理对象在不同状态下的不同行为,使得代码更加结构化和易于维护。Context(上下文):持有一个State对象的引用,通常会有一个方法来设置或获取当前状态。State(状态):定义了状态接口,声明了所有可能的操作。ConcreteState(具体状态):实现了State接口,提供了具体的行为。
2024-06-03 12:58:09 595
原创 设计模式之委派(托)模式
委派模式(Delegate Pattern)是一种设计模式,它允许在运行时将责任或行为从一个对象传递给另一个对象。在这种模式中,一个对象(称为委托者)持有对另一个对象(称为被委托者或实际处理者)的引用,并将某些请求转发给这个被委托者来处理。委派模式提供了一种方式来扩展对象的功能,而无需修改对象的结构或实现。在某些编程语言中,如C#,delegate 关键字用于定义委托类型,这是一种引用类型,可以指向符合特定方法签名的任何方法。
2024-06-03 08:17:39 536
原创 设计模式之解释器模式
解释器模式(Interpreter Pattern)是一种行为设计模式,它提供了一种方式来表示语言或表达式的语法,并定义了如何解释这些表达式来执行特定任务。这种模式常用于小型语言或简单的表达式解析,例如配置文件、SQL查询构建器或者计算表达式等。Expression(表达式): 抽象表达式接口,定义了一个interpret方法,用于解释表达式。AbstractExpression(抽象表达式): 为所有具体表达式提供一个公共接口,通常包含interpret方法的实现。
2024-06-02 09:41:37 360
原创 设计模式之访问者模式
访问者模式(Visitor Pattern)是一种行为设计模式,它允许在不修改对象结构的前提下,为对象添加新的操作。这种模式将算法与数据结构分离,提供了对对象结构进行高层操作的方式,使得在不改变原有对象结构的情况下,可以对对象的行为进行扩展。访问者模式的核心思想是定义一个访问者接口,这个接口规定了可以对哪些元素进行操作。然后,让结构中的每个元素都接受这个访问者,并实现一个接受(visit)方法,该方法接受访问者作为参数,调用访问者中的相应操作。这样,访问者就可以遍历整个对象结构并执行特定的操作。
2024-06-02 09:20:37 491
原创 设计模式之观察者模式
观察者模式(Observer Pattern)是一种行为设计模式,它允许你定义一个订阅机制,可以在对象事件发生时通知多个“观察”该对象的其他对象。这种模式创建了一种一对多的依赖关系,当主题(Subject)的状态改变时,所有依赖于它的观察者(Observer)都会得到通知并自动更新。
2024-06-02 09:14:51 284
原创 2024最新VMware Workstation Pro下载教程
现在下载都需到博通注册对应的账号。登录后会跳转到博通的管理中心。自从2024年5月份之后,就不能直接在vm官网下载。登录邮箱输入对应的验证码。5. 个人使用选择个人版。
2024-06-01 21:49:25 6019 17
原创 flowable常见操作
描述:A将任务转办给B,B审核完成就到下一个节点,不会再到A。描述:名词介绍:A将任务转办给B,B审核完成就再回到A。描述:业务数据的审核需要区别不同用户和委派任务的审核。
2024-05-30 11:31:24 298
原创 flowable工作流定制化修改
自定义用户任务拦截器@Slf4j@Override@Override源码中...@Override......= null) {......= null) {......// 这边去定制化各种验证校验器简单检查流程是否存在开始、结束节点@OverrideaddError(errors, "流程必须存在开始或结束节点", mainProcess, "流程必须存在开始或结束节点");
2024-05-30 11:11:21 932
原创 MapStruct高级用法
例如可以定义默认方法将枚举转换成字符串或者数值,所有枚举字段会自动隐式转换,上述的例子中已经体现,就不举例说明。依赖注入(Using dependency injection)后续发现其他高级特性待补充…映射参数到目标对象上。
2024-05-29 08:10:48 1343
原创 Redisson源码研究
主要分析关键代码再往下看脚本命令保证了对操作的原子性=若,则自动超时过期若,则是的看门狗机制,后端定时任务每隔看下缓存是否过期,若存在自动设置TTL为主要这个时间是多少我们再细看下源码定义了也就是上述说的每隔10s触发一次, ,自动续期30s
2024-03-29 16:01:53 289
原创 alibaba nacos discovery bootstrap.yml未能加载导致Could not resolve placeholder ‘xxx‘ in value ${xxx}
SpringBoot 2.4版本之后 SpringCloud 2020 需要引入该依赖,才能读取到bootstrap文件。按理说引入nacos discovery不应该出现这个问题。
2024-03-28 17:46:05 307
原创 使用Collectors.toMap()报NullPointerException
分析Collectors.toMap(Pair::getKey, Pair::getValue, (v1, v2) -> v1)按照我们正常思维逻辑这不应该会出现这个问题,想当然理解成。这边可以看出key,value都可以为空。不能为空,再看下我们使用的。记录下最近工作中在使用。
2024-01-02 10:59:46 1967
原创 设计模式之享元模式
享元模式(Flyweight Pattern)是池技术的重要实现方式,其定义如下:Use sharing to support large numbers of fine-grained objects efficiently.(使用共享对象可有效地支持大量的细粒度的对象。享元模式的定义为我们提出了两个要求:细粒度的对象和共享对象。我们知道分配太多的对象到应用程序中将有损程序的性能,同时还容易造成内存溢出,那怎么避免呢?就是享元模式提到的共享技术。我们先来了解一下对象的内部状态和外部状态。
2024-01-01 19:33:41 793
原创 设计模式之组合模式
组合模式(Composite Pattern)也叫合成模式,有时又叫做部分-整体模式(Part-Whole),主要是用来描述部分与整体的关系,其定义如下:我们先来说说组合模式的几个角色:定义参加组合对象的共有方法和属性,可以定义一些默认的行为或属性,比如我们例子中的getInfo就封装到了抽象类中。·Leaf叶子构件叶子对象,其下再也没有其他的分支,也就是遍历的最小单位。树枝对象,它的作用是组合树枝节点和叶子节点形成一个树形结构。高层模块调用简单一棵树形机构中的所有节点都是Component,局部和整体对调
2024-01-01 19:22:02 1242 1
原创 设计模式之门面模式
门面模式(Facade Pattern)也叫做外观模式,是一种比较常用的封装模式,其定义如下:Provide a unified interface to a set of interfaces in a subsystem.Facade defines a higher-level interface that makes the subsystem easier to use.(要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。门面模式提供一个高层次的接口,使得子系统更易于使用。
2023-12-31 16:16:44 1132
原创 设计模式之适配器模式
适配器模式(Adapter Pattern)的定义如下:Convert the interface of a class into another interface clients expect.Adapter lets classes work together that couldn’t otherwise because of incompatible interfaces.(将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。
2023-12-31 16:02:38 1584
原创 设计模式之桥接模式
桥接模式(Bridge Pattern),是一个比较简单的模式,其定义如下:Decouple an abstraction from its implementation so that the two can vary independently.(将抽象和实现解耦,使得两者可以独立地变化。桥接模式4个角色Abstraction 抽象化角色它的主要职责是定义出该角色的行为,同时保存一个对实现化角色的引用,该角色一般是抽象类。
2023-12-30 18:58:21 975
原创 设计模式之装饰器模式
装饰模式(Decorator Pattern)是一种比较常见的模式,其定义如下:Attach additional responsibilities to an object dynamically keeping the same interface.Decorators provide a flexible alternative to subclassing for extending functionality.(动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比生成子类更为灵活。
2023-12-30 18:37:04 1188
原创 设计模式之代理模式
代理模式文章目录代理模式定义优点使用场景模式扩展静态代理动态代理示例代码地址定义代理模式(Proxy Pattern)是一个使用率非常高的模式,其定义如下:Provide a surrogate or placeholder for another object to control access to it.(为其他对象提供一种代理以控制对这个对象的访问。)代理模式也叫做委托模式,它是一项基本设计技巧。许多其他的模式,如状态模式、策略模式、访问者模式本质上是在更特殊的场合采用了委托模式,而且
2023-12-28 10:04:28 761
原创 设计模式之原型模式
原型模式(Prototype Pattern)的简单程度仅次于单例模式和迭代器模式。正是由于简单,使用的场景才非常地多,其定义如下:Specify the kinds of objects to create using a prototypical instance,and create new objects by copying this prototype.(用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
2023-12-27 08:07:31 1219
原创 设计模式之建造者模式
建造者模式()也叫做生成器模式,其定义如下:Separate the construction of a complex object from its representation so that the same construction process can create different representations.(将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
2023-12-24 15:27:10 425
原创 设计模式之抽象工厂模式
抽象工厂模式(Abstract Factory Pattern)是一种比较常用的模式,其定义如下:Provide an interface for creating families of related or dependent objects without specifying their concrete classes.(为创建一组相关或相互依赖的对象提供一个接口,而且无需指定它们的具体类。
2023-12-24 11:43:37 732
原创 设计模式之工厂方法模式
工厂方法模式使用的频率非常高,在我们日常的开发中总能见到它的身影。其定义为:Define an interface for creating an object,but let subclasses decide which class to instantiate.Factory Method lets a class defer instantiation to subclasses.(定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。
2023-12-24 11:31:38 671
原创 设计模式之单例模式
Singleton类称为单例类,通过使用private的构造函数确保了在一个应用中只产生一个实例,并且是自行实例化的(在Singleton中自己使用全局唯一处理资源访问冲突。
2023-12-23 20:02:00 378
原创 软件设计原则
还是一个降低类之间的耦合度的意思,从这儿我们看出,其实设计模式就是一个软件的设计思想,从大型软件架构出发,为了升级和维护方便。这有助于降低类之间的耦合度,提高代码的可读性和可维护性。据库类型,只需创建一个新的子类,实现 Database 基类中定义的抽象方法即可。我们综合两者的描述,将这条原则用中文描述出来,是这样的:子类对象(object。每个模块只和自己的朋友“说话”(talk),不和陌生人“说话”(talk)。用来指导继承关系中子类该如何设计的,子类的设计要保证在替换父类的时候,不改。
2023-12-22 15:50:27 784
原创 spring-validation实现分组校验
JSR 303中提出了Bean Validation,表示JavaBean的校验,Hibernate Validation是其具体实现,并对其进行了一些扩展,添加了一些实用的自定义校验注解。 Spring中集成了这些内容,你可以在Spring中以原生的手段来使用校验功能,当然Spring也对其进行了一点简单的扩展,以便其更适用于Java web的开发。比如我很多时候新增和修改的DTO只是存在主键或者其他的一些少量字段差异而已,但是自己又不想去CV。首先swagger可以使用来忽略api文档的显示。
2023-12-21 11:01:46 1017
原创 java后端开发如何提升代码质量
写了很多年的代码了,突然有新人会问你这个问题,如何提升代码质量?这也不是一下子就能说得明白,或者能立马上手。关键还是在于多读多写,熟能生巧,实话,实话,实话!接口,该接口由一个返回为 void 的 close 组成。Java 类库和第三方类库中的。语句时,所有这些问题一下子都得到了解决。如果你编写的类表示必须关闭的资源,那么这个类也应。许多类和接口现在都实现或继承了。当 Java 7 引入了。
2023-12-20 15:06:41 353
原创 Springboot日常开发使用策略、工厂模式
以发送短信为例三大运营商,我们可以定义为枚举或者常量,个人喜欢使用枚举,看个人喜好枚举类定义接口/*** 短信类型* @return 短信枚举/*** 发送短信* @param sms 短信内容三种运营商发送代码实现类移动@Service@Slf4j@Override@Override联通@Service@Slf4j@Override@Override电信@Service@Slf4j@Override@Override初始化Bean。
2023-12-19 10:07:10 1299
原创 Arrays.asList添加元素报java.lang.UnsupportedOperationException
由此可以看出asList其实就是就是一个定长数组且不能被修改,类似。3.使用Arrays.stream()
2023-12-18 17:21:02 576
空空如也
有关kafka消费者的问题,描述如下
2016-05-09
TA创建的收藏夹 TA关注的收藏夹
TA关注的人