- 博客(44)
- 收藏
- 关注
原创 《 Spring Boot实战:优雅构建责任链模式投诉处理业务》
本文详细介绍了在Spring Boot中如何实现责任链模式,通过构建投诉处理系统作为实际场景。从定义投诉请求类开始,逐步实现了抽象处理者类和多个具体的处理者类,并成功创建了投诉处理链。通过控制器处理来自API的投诉请求,展示了责任链模式在Spring Boot应用中的灵活性和扩展性。本文还讨论了责任链模式如何解决传统处理方式的不足,提高了系统的维护性和可扩展性。最后,通过API测试验证了实现的有效性,为开发者在Spring Boot项目中应用责任链模式提供了宝贵的参考。
2024-09-25 14:01:19
1361
原创 《解锁高效流程设计:深度剖析责任链模式与实战应用》
责任链模式通过定义请求处理的链式调用,优化流程设计,增强系统灵活性和扩展性。以权限审批为例,展示其构建与测试过程,并探讨在SpringMVC等框架中的应用,强调了其在解耦与流程管理上的重要性。
2024-09-25 09:05:24
1463
原创 状态模式原理剖析
状态模式(State Pattern) 是一种行为设计模式,它允许对象在其内部状态改变时改变其行为。换句话说,当对象状态发生变化时,它的行为也会随之变化。**核心思想**:状态模式将对象的不同状态封装成独立的类,并让对象在不同的状态下有不同的行为。状态模式通过将状态的行为和逻辑封装在状态类中,使得状态之间的转换变得清晰、易扩展。在电商平台或者订餐系统中,订单的状态是一个典型的使用**状态模式**的场景
2024-09-24 17:01:39
1533
原创 解释器模式原理剖析和Spring中的应用
是一种行为型设计模式,它定义了一种语言的文法表示,并提供了一个解释器来处理该文法的表达式。解释器模式可以用于构建**语法解释器**,例如计算器、简单编程语言的解释器等。解释器模式 在 Spring 框架中的应用并不像某些行为型模式(如策略模式、工厂模式)那样直接、明显,然而在一些高级功能或组件的实现中,解释器模式的思想仍然被应用到了。尤其是在需要处理表达式、规则解析或动态解析配置的场景中
2024-09-24 16:05:36
1035
原创 策略模式与工厂模式的区别
策略模式侧重于封装算法或行为,并允许根据运行时条件动态选择不同的策略。它适用于需要在运行时根据场景动态切换行为的情况。工厂模式侧重于创建对象,隐藏对象创建的复杂性,使得客户端只关心使用对象,而不需要关心如何创建对象。它适用于创建对象过程较为复杂的情况。示例总结如果你想在一个支付系统中动态选择支付方式,那么你应该使用策略模式。如果你在一个应用中需要根据数据库类型来生成不同的数据库连接对象,那么你应该使用工厂模式。
2024-09-23 13:52:21
1333
原创 策略模式在 Spring Boot 框架中的应用
在 Spring Boot 中的应用十分广泛,特别是在处理需要根据条件选择不同实现时,常常会使用到策略模式。例如在依赖注入、业务逻辑处理、数据转换、支付系统、权限控制等场景中,我们都可以通过策略模式来提高代码的灵活性和可扩展性。在 Spring Boot 中,策略模式的实现通常借助 依赖注入 来动态选择具体的策略,这使得我们可以轻松地扩展新的策略类,而不需要修改现有的代码
2024-09-22 16:35:56
1055
原创 告别条件判断:策略模式让代码更优雅
策略模式是一种行为型设计模式,定义了一系列算法或行为,并将它们封装起来,使它们可以互换使用。通过将不同的算法封装在独立的策略类中,策略模式使得算法可以独立于使用它的客户端进行变化。核心思想策略模式通过封装变化的部分,允许程序在运行时动态选择不同的策略(算法)进行处理,避免了在客户端代码中使用条件语句来选择算法,从而提高了系统的灵活性。
2024-09-22 16:29:34
1471
原创 撤销与恢复的奥秘:设计模式之备忘录模式详解
备忘录模式是一种行为型设计模式,用于保存对象的某一时刻状态,以便稍后可以恢复到该状态,而不破坏对象的封装性。备忘录模式将对象的状态封装在一个独立的备忘录对象中,外界无法直接访问备忘录的内部细节,只能通过特定接口恢复对象的状态。核心思想通过在不破坏封装性的前提下,记录和恢复对象的内部状态,备忘录模式可以让对象恢复到以前的某个状态,常用于撤销操作等场景。Originator类代表文本编辑器,它能够创建和恢复备忘录对象......
2024-09-22 15:16:53
1221
原创 化繁为简:中介者模式如何管理复杂对象交互
中介者模式 是一种行为型设计模式,定义了一个中介者对象,来封装一组对象之间的交互。中介者模式通过将对象之间的交互行为从多个对象中抽离出来,集中封装在一个中介者对象中,从而使各个对象之间的耦合松散,且可以独立地改变它们之间的交互。1. 集中通信:中介者模式通过引入 `Mediator`,将多个对象之间的交互逻辑集中到中介者中,使得各个同事类之间的关系变得松散耦合。2. 消息传递:同事对象通过调用中介者的 `send()` 方法进行通信。中介者负责接收和转发消息,并协调其他同事对象的行为。
2024-09-20 14:41:54
1285
原创 观察者模式全攻略:从设计原理到 SpringBoot 实践案例
我们详细解析了观察者模式这一经典的行为型设计模式。观察者模式通过定义一对多的依赖关系,使得对象状态发生变化时,可以自动通知所有依赖的观察者,从而实现解耦。在实际开发中,观察者模式被广泛应用于事件驱动系统中
2024-09-20 09:15:00
1329
原创 深入探索迭代器模式的原理与应用
在复杂的集合操作中,如何优雅且高效地遍历对象是开发者面临的一大挑战。本文通过形象案例、详细类图以及完整的Java代码,带你深入理解迭代器模式的核心原理。我们还将解析它在JDK中的实际应用,揭示其在ArrayList、HashMap等常见集合中的重要角色。了解迭代器模式的优缺点与应用场景,助力开发更简洁、灵活的代码结构!
2024-09-19 15:02:32
1300
原创 设计模式之访问者模式:灵活访问对象结构的强大工具
是一种行为型设计模式,允许在不改变数据结构的前提下定义在这些结构上的新操作。它将操作行为与对象结构分离,使得可以在不修改对象结构的情况下添加新的操作行为当需要对一个复杂的对象结构(如集合、树形结构)进行不同的操作,但又不希望因为添加新操作而频繁修改数据结构时,可以使用访问者模式。
2024-09-19 10:27:07
999
原创 设计模式之命令模式:从原理到实战,深入解析及源码应用
命令模式(Command Pattern)是一种行为设计模式,它将一个请求封装为一个对象,从而允许使用不同的请求、队列或者日志来参数化对象,并支持可撤销的操作。命令模式的核心思想是将命令的发起者和执行者解耦,从而使得命令的发起者不必关心命令是如何被执行的。
2024-09-18 15:24:16
1760
原创 深入解析模板模式,提升代码复用性,简化复杂流程管理
模板模式是一种行为型设计模式,它定义了算法的骨架,而将某些步骤的具体实现延迟到子类中。通过这种方式,模板方法允许子类在不改变算法结构的情况下,重新定义算法中的某些步骤。
2024-09-18 10:19:24
1276
原创 享元模式详解:解锁高效资源管理的终极武器
享元模式(Flyweight Pattern)是一种结构型设计模式,旨在通过共享细粒度对象来减少内存使用和对象创建的开销。享元模式可以在系统中重复使用多个相同或相似的对象,通过避免重复创建相同的对象来提高性能,特别是在大量对象需要频繁创建时,享元模式能够极大减少内存消耗。
2024-09-14 15:07:10
1410
原创 外观模式详解:如何为复杂系统构建简洁的接口
为子系统中的一组接口提供一个统一的接口。它是一个结构型设计模式,能够为复杂子系统提供一个更简单的接口,使客户端无需了解子系统的内部细节。简而言之,外观模式通过创建一个外观类,简化对子系统的访问,隐藏系统的复杂性。
2024-09-14 13:41:14
1057
原创 深入解析代理模式:静态代理、JDK 动态代理和 CGLIB 的全方位对比!
代理模式(Proxy Pattern)是一种结构型设计模式,它提供了对象的替身,即代理对象来控制对实际对象的访问。通过代理对象,可以在不修改目标对象的情况下,扩展或控制其功能。例如,代理模式可以用于延迟加载、权限控制、日志记录等场景。本文详细介绍代理模式三种形态:静态代理,JDk代理,CGLIB代理,并使用银行权限的案例实现上面三种代理机制。深入理解SpringAOP中的代理机制的类型和如何选择代理机制。
2024-09-13 17:35:00
1871
2
原创 你不知道的组合模式!如何在复杂项目中灵活处理对象层次结构?
组合模式(Composite Pattern)是一种结构型设计模式,它允许将对象组合成树形结构以表示“整体-部分”的层次结构。组合模式使得客户端可以一致地对待单个对象和对象的组合,从而能够对树形结构中的所有对象进行统一的操作。
2024-09-13 10:22:17
657
原创 装饰者模式实现和JDK中的应用
装饰者模式,也叫装饰模式,是一种结构型设计模式。它允许通过将对象放入特殊的包装对象中来为对象添加新行为,而无需修改原始对象的代码。关键思想是包装,我们用装饰类将对象嵌套起来,从而动态地给对象添加功能。
2024-09-12 14:13:18
891
原创 桥接模式详解和分析JDBC中的应用
桥接模式(Bridge Pattern)是一种结构型设计模式,目的是将抽象部分与它的实现部分分离开来,使它们可以独立变化。这种模式通过组合的方式(而不是继承)将不同的维度分离,使代码更加灵活、易于扩展。
2024-09-12 09:31:27
1167
原创 适配器模式:软件架构中的万能插头,轻松连接不同世界
适配器模式(Adapter Pattern)是一种结构型设计模式,它的作用是将一个类的接口转换为客户端所期望的另一种接口。适配器模式让原本接口不兼容的类能够合作无间,常用于将新系统集成到旧系统中。
2024-09-11 13:56:16
1214
原创 设计模式实战:工厂模式让你的代码飞起来!
工厂模式(Factory Pattern)是一种创建型设计模式,定义了一个创建对象的接口,但由子类来决定实例化哪个具体类。需要生成复杂对象,但不希望客户端依赖这些对象的具体类时。当多个类具有相似功能,但只在某些细节上有区别时,工厂模式能够统一这些不同点。
2024-09-10 14:32:24
1292
原创 设计模式七大原则详解
设计模式的七大原则,主要包括单一职责原则,开闭原则,里氏替换原则,依赖倒转原则,接口隔离原则,迪米特原则,合成/聚合复用原则。详细介绍每种原则和使用Java代码实现
2024-09-09 11:14:58
1397
原创 JVM运行时参数
JVM运行时参数是用于配置和调整Java虚拟机的行为和性能的参数。这些参数可以在启动Java应用程序时通过命令行或配置文件进行设置,合理配置参数可以使JVM虚拟机的达到更好的性能,降低OOM发生的概率官网地址:https://docs.oracle.com/javase/8/docs/technotes/tools/windows/java.html。
2024-09-05 08:54:33
622
原创 JVM垃圾回收机制和垃圾回收器
JVM(Java虚拟机)的垃圾回收是自动管理内存的过程,用于回收不再使用的对象并释放内存资源。早在1960年,第一门开始使用内存动态分配和垃圾收集技术的Lisp语言诞生。这种自动化的内存管理机制极大地减轻了开发人员对手动释放内存的负担,提高了开发效率。垃圾是指在运行程序中没有任何指针指向的对象,这个对象就是需要被回收的垃圾。如果不及时对内存中的垃圾进行清理,那么,这些垃圾对象所占的内存空间会一直保留到应用程序的结束,被保留的空间无法被其它对象使用,甚至可能导致内存溢出。
2024-09-04 13:51:32
1402
原创 从JVM角度深入理解String
String是Java中的一个类,是一个引用类型,用于表示字符串。它是不可变的(immutable),即一旦创建,其值就不能被修改。任何对String对象的修改操作都会创建一个新的String对象,而不是在原有字符串上进行修改。
2024-09-04 09:43:23
1541
原创 JVM方法区
“尽管所有的方法区在逻辑上是属于堆的一部分,但一些简单的实现可能不会选择去进行垃圾收集或者进行压缩。“但对于HotSpotJVM而言,方法区还有一个别名叫做Non-Heap(非堆),目的就是要和堆分开。方法区看作是一块独立于Java堆的内存空间。
2024-09-03 13:44:20
1124
原创 JVM堆空间详细分析
一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域。堆区在JVM 启动的时候即被创建,其空间大小也就确定了,是JVM管理的最大一块内存空间。《Java虚拟机规范》中对Java堆的描述是:所有的对象实例以及数组都应当在运行时分配在堆上。(The heap is the run-time data area fromwhich memory for all class instances and arrays is allocated)我要说的是:“几乎”所有的对象实例都在这里分配内存。
2024-09-03 09:58:01
1583
1
原创 JVM之程序计数器
JVM中的程序计数寄存器 (Proqram Counter Register)中,Reqister 的命名源于CPU的寄存器,寄存器存储指令相关的现场信息。CPU只有把数据装载到寄存器才能够运行这里,并非是广义上所指的物理寄存器,或许将其翻译为PC计数器(或指令计数器) 会更加贴切(也称为程序钩子) ,并且也不容易引起一些不必要的误会。JVM中的PC寄存器是对物理PC寄存器的一种抽象模拟。它是一块很小的内存空间,几乎可以忽略不记。也是运行速度最快的存储区域。
2024-09-02 13:39:25
879
1
原创 JVM运行时数据区
内存是非常重要的系统资源,是硬盘和CPU 的中间仓库及桥梁承载着操作系统和应用程序的实时运行。JVM内存布局规定了Java在运行过程中内存申请、分配、管理的策略,保证了JVM的高效稳定运行不同的JVM对于内存的划分方式和管理机制存在着部分差异。下图是经典的JVM内存布局下图是ali的布局图Java虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁。另外一些则是与线程一一对应的,这些与线程对应的数据区域会随着线程开始和结束而创建和销毁。
2024-09-02 08:47:32
862
原创 JVM类的加载和类的加载器
在Java的日常应用程序开发中,类的加载几乎是由上述3种类加载器相互配合执行的,在必要时,我们还可以自定义类加载器,来定制类的加载方为什么要自定义类加载器?隔离加载类修改类加载的方式扩展加载源防止源码泄漏1.开发人员可以通过继承抽象类java.lang.classLoader类的方式,实现自己的类加载器,以满足一些特殊的需求。
2024-08-30 13:40:15
1219
原创 平衡二叉树(Balanced Binary Tree)
平衡二叉树是一种特殊的通过保持平衡性,平衡二叉树可以在最坏情况下仍然具有较好的性能,保证查找、插入和删除操作的时间复杂度为O(log n)。平衡二叉树的常用实现方法有红黑树、AVL、替罪羊树、Treap、伸展树等。
2024-08-30 09:02:01
813
原创 二叉搜索树(Binary Search Tree,BST)
二叉搜索树(Binary Search Tree),也称二叉查找树或二叉排序树,是一种特殊的,它满足以下性质由于这种特性,二叉搜索树可以支持高效地进行查找、插入和删除操作。对于查找操作,可以通过比较目标值与当前节点的值来决定向左子树还是右子树进行搜索。对于插入操作,可以按照比较结果找到合适的位置并插入新节点。对于删除操作,则需要按照一定规则来处理不同情况下的节点删除。
2024-08-29 09:21:01
658
1
原创 二叉树(binary tree)
二叉树(Binary Tree)是一种常见的树状数据结构,它由一组节点组成,每个节点最多有两个子节点,分别称为左子节点和右子节点。
2024-08-29 09:17:39
891
CGLIB代理机制需要的所有JAR包免费下载
2024-09-13
MemoryAnalyzer是一个快速、功能丰富的Java heap分析工具,帮助开发者查找内存泄漏和减少内存消耗免费下载
2024-09-14
VisualVM 免费下载
2024-09-14
SpringBoot整合ShardingSphere分库分表
2024-08-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人