自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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

原创 原型模式详细介绍和代码实现

设计模式之原型模式详解 和java代码实现

2024-09-11 10:09:24 1096

原创 Java实现建造者模式和源码中的应用

Java实现建造者模式和源码中的应用

2024-09-10 17:06:49 1230

原创 设计模式实战:工厂模式让你的代码飞起来!

工厂模式(Factory Pattern)是一种创建型设计模式,定义了一个创建对象的接口,但由子类来决定实例化哪个具体类。需要生成复杂对象,但不希望客户端依赖这些对象的具体类时。当多个类具有相似功能,但只在某些细节上有区别时,工厂模式能够统一这些不同点。

2024-09-10 14:32:24 1292

原创 Java实现单例模式

Java实现单例模式的几种形态,分析实现这几种形态的优缺点

2024-09-09 14:08:53 1135

原创 设计模式七大原则详解

设计模式的七大原则,主要包括单一职责原则,开闭原则,里氏替换原则,依赖倒转原则,接口隔离原则,迪米特原则,合成/聚合复用原则。详细介绍每种原则和使用Java代码实现

2024-09-09 11:14:58 1397

原创 从JVM角度看对象创建过程和内存布局

从JVM角度看对象创建过程和内存布局

2024-09-06 13:39:25 1401

原创 JVM性能监控和调优

介绍JVM如何进行性能监控和调优,包括遇见常见的内存溢出问题如何排查

2024-09-05 10:32:13 993

原创 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

原创 Java实现常见查找算法

Java实现常见查找算法,主要包括线性查找,二分查找,插值查找,斐波那契查找,哈希查找,二叉树查找

2024-09-01 10:45:37 1234

原创 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包免费下载

CGLIB 通过生成目标类的子类,并重写其中的方法来实现代理。它是在运行时生成的字节码,所以可以代理普通类和接口。代理类实际上是目标类的子类,并且会调用父类的方法。 依赖:需要导入 `cglib` 相关的库。 限制:由于 CGLIB 是通过继承实现的,所以不能代理 `final` 类或`final` 方法,因为这些无法被继承和重写。 1. 支持无接口类的代理:CGLIB 能够代理普通类,不要求目标类必须实现接口,这比 JDK 动态代理更灵活。 2. 性能高:相比 JDK 动态代理,CGLIB 生成的代理类性能更高,尤其是在大量调用代理方法的场景下。 3. 透明性:客户端无需修改,代理类的生成是透明的。 可以下载上面的jar包直接导入使用

2024-09-13

MemoryAnalyzer是一个快速、功能丰富的Java heap分析工具,帮助开发者查找内存泄漏和减少内存消耗免费下载

主要功能: 1.内存快照分析: 通过读取HPROF二进制Heap Dump文件、IBM系统dump文件(经过处理后)以及IBM portable Heap Dump文件,MemoryAnalyzer能够分析这些快照文件,帮助开发者了解程序的内存使用情况。 提供对象信息(类、成员变量、直接量及引用值)、类信息(类加载器、名称、超类、静态成员)以及Garbage Collections Roots(JVM可达的对象)等详细信息。 2.内存泄漏检测: MemoryAnalyzer可以识别出阻止垃圾收集器回收工作的对象,并通过报表直观地展示这些对象,帮助开发者定位内存泄漏的原因。 3.内存溢出分析: 分析程序在运行过程中出现的内存溢出情况,帮助开发者定位问题代码,以便进行优化和改进。 使用方法: 打开MemoryAnalyzer工具,选择“Open Heap Dump”选项,加载Heap Dump文件。 等待文件加载完成后,通过MemoryAnalyzer提供的各种分析工具(如Histogram、Dominator Tree、Leak Suspects等)进行内存分析。

2024-09-14

VisualVM 免费下载

VisualVM是一个功能强大的Java虚拟机(JVM)监控、分析和故障排查工具,它提供了广泛的监控和分析功能,可帮助开发人员诊断和解决Java应用程序的性能问题。 主要功能: 1.CPU监控:显示Java进程的CPU使用率、线程消耗和方法级别的CPU消耗,帮助识别CPU消耗最高的方法和线程。 2.内存监控:提供堆内存、非堆内存和对象统计等信息,用于分析内存使用情况和检测内存泄漏 3.线程监控:显示应用程序中的活动线程和线程状态(如运行、休眠、等待、驻留等),用于分析线程活动和线程死锁。 4.性能分析 5.快照分析 6.转储功能 7.远程监控 8.CPU分析器 9.内存分析器 10.线程分析器 使用场景 性能调优:开发人员可以使用VisualVM来监控Java应用程序的性能指标,如CPU使用率、内存使用率等,从而快速定位性能瓶颈并进行优化。 故障排查:当Java应用程序出现性能问题时,VisualVM可以帮助开发人员快速识别问题原因,如内存泄漏、线程死锁等。 内存和CPU分析:通过生成和分析快照,开发人员可以深入了解应用程序的内存和CPU使用情况,从而进行针对性的优化。

2024-09-14

SpringBoot整合ShardingSphere分库分表

1.阐述了当前的高性能数据库架构的几种模式; 2.介绍了如何使用Springboot框架进行整合ShardingSphere分表分库框架; 3.概括了项目中使用ShardingSphere遇到的一些问题和注意事项 4.提供了一些配置

2024-08-29

空空如也

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

TA关注的人

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