自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 从未见过如此厚颜无耻之 网络请求客户端

最近趁着公司项目业务需求不是很多,专门花了一段时间对我们团队负责的项目代码做了一个 code review, 其中发现了一个让我非常恼火的事情。我发现就我们一个项目居然出现了好几个负责网络请求的客户端,其中包括Java 原生客户端, Apache HTTPClient, OKHttp, 还有Spring RestTemplate,甚至还有基于Java 原生客户端自行封装的一个 OutGateway。

2023-10-16 09:33:27 68

原创 命令模式:将请求封装成对象以实现解耦与灵活性

命令模式是一种行为型设计模式,通过将请求封装成对象,使得发送者与接收者之间解耦,同时还能够支持撤销、重做等操作。命令模式的核心思想是将请求封装成一个命令对象,这个命令对象包括了接收者和执行的操作。综上所述,命令模式是一个有用的设计模式,通过将请求封装成对象,实现了发送者与接收者之间的解耦,同时也支持撤销、重做等操作。命令模式将发送者与接收者解耦,使得它们之间的依赖关系更松散,同时也支持新的命令的添加和扩展。命令模式支持命令的撤销和重做操作,因为每个命令对象都可以实现对应的撤销操作。

2023-08-29 10:40:57 85

原创 责任链模式:构建灵活的请求处理流程

责任链模式的核心概念是将多个处理者连接成一个链,并使请求在链上传递,直至有一个处理者能够处理它为止。每个处理者都可以决定是否处理请求,或者将请求传递给链中的下一个处理者。责任链模式可以用来处理不同级别的审批,每个处理者处理其权限范围内的审批请求。综上所述,责任链模式是一个强大的设计模式,通过构建灵活的请求处理流程,能够更好地满足软件系统中复杂的处理需求。责任链模式将请求的发送者与接收者解耦,每个处理者只需关注自己的处理逻辑,更易于维护和扩展。责任链模式使得可以灵活地添加新的处理者,无需修改现有代码。

2023-08-29 10:31:46 96

原创 深入探讨迭代器模式:简化集合元素遍历的设计模式

然而,遍历这些集合元素可能会涉及到繁琐的代码,而且在不同的集合类型上实现遍历也可能具有差异。迭代器模式是一种行为型设计模式,其核心思想是将集合类的遍历与集合类本身分离,使得遍历操作更加简单和通用。通过将集合遍历与集合类分离,迭代器模式能够简化遍历逻辑、提高代码可维护性,并使得代码更具灵活性。综上所述,迭代器模式是一个强大的设计模式,通过将集合与遍历解耦,可以在集合元素遍历中提供更加通用、清晰和可维护的解决方案。迭代器模式可以实现不同的迭代器,使得在不同需求下可以使用不同的遍历方式,例如正向、反向、跳跃等。

2023-08-29 10:19:29 58

原创 深入理解观察者模式:解析其在现代软件开发中的应用与优势

观察者模式是一种行为型设计模式,它定义了对象之间的一种一对多的依赖关系,使得当一个对象的状态发生变化时,所有依赖于它的对象都能够得到通知并自动更新。主题是被观察的对象,它维护了一个观察者列表,用于存储所有依赖于该主题的观察者对象。观察者是订阅了主题的对象,它们会在主题的状态发生变化时得到通知并执行相应的操作。通过观察者模式,主题和观察者之间实现了松耦合,主题无需关心具体观察者的实现,从而使系统更加灵活和易于维护。装饰器模式允许在不改变接口的情况下增强对象的功能,而观察者模式关注的是对象状态的变化通知。

2023-08-29 10:16:41 54

原创 模板方法模式:优雅定义算法框架的设计艺术

模板方法模式是一种行为型设计模式,它的核心思想在于定义一个算法的骨架,将一些步骤的具体实现留给子类去完成。这使得主要的算法结构在父类中被定义,而具体的实现可以在子类中灵活变化。模板方法模式在实现算法框架的同时,保留了部分灵活性,适应了不同的需求。模板方法模式作为一种行为型设计模式,为我们提供了一种在父类中定义算法框架、在子类中实现具体步骤的优雅方式。它在实际开发中充分体现了代码的复用性和可维护性,同时也允许具体步骤的个性化定制。设计模式是软件开发的重要指导原则,而模板方法模式则是其中的瑰宝之一。

2023-08-21 15:07:19 73 1

原创 策略模式:优雅应对算法变化的设计艺术

策略模式是一种行为型设计模式,其核心思想在于将不同的算法或策略封装成独立的类,使得这些类可以互相替换,而客户端代码不会受到影响。这种设计模式通过将可变部分与不变部分分离,遵循了开闭原则(Open-Closed Principle),从而让系统更加灵活和可扩展。策略模式作为一种行为型设计模式,以其优雅的方式实现了算法的动态切换和扩展。它通过将不同的算法封装成独立的策略类,使得系统更加灵活、可维护和易于扩展。在现代软件开发中,策略模式为我们提供了一种高效的解决方案,能够应对日益变化的需求和算法。

2023-08-21 15:01:36 55 1

原创 享元模式:最小化内存使用的共享对象模式

通过共享相同的内部状态,可以减少对象的创建和销毁开销,提高系统性能。享元模式是一种设计模式,旨在通过共享对象以减少内存占用,特别是在存在大量相似对象时。这种模式将对象的状态分为内部状态和外部状态,从而使多个对象可以共享相同的内部状态,而外部状态则在需要时传递。当需要创建一个新的对象时,工厂类会检查是否已存在具有相同内部状态的对象,如果存在则重用它,否则创建一个新的对象。在享元模式中,对象的状态被划分为内部状态和外部状态。内部状态是可以共享的,而外部状态则是变化的,并在需要时传递给对象。

2023-08-18 09:41:16 50 1

原创 外观模式:简化复杂系统的接口

外观模式的核心思想是将一组复杂的接口封装在一个更简单的接口后面,以减少客户端与子系统之间的直接交互。外观模式是一种结构型设计模式,旨在为复杂的子系统提供一个统一的高层接口,以便客户端可以更简单地与该子系统进行交互。它通过将子系统的组件封装在一个外观类中,从而降低了客户端与子系统之间的耦合度,同时提供了一个更简化的接口。外观模式通过提供一个统一的接口,将复杂的子系统封装起来,降低了客户端与子系统之间的耦合度,同时简化了客户端的使用。客户端只需要与外观类进行交互,无需了解子系统的复杂性。

2023-08-18 09:27:40 67 1

原创 装饰器模式:在不改变对象结构的前提下,动态地为对象添加功能。

装饰器模式是一种结构型设计模式,它允许您在不改变现有对象结构的情况下,动态地为对象添加新的功能和行为。通过比较装饰器模式与继承,强调了装饰器模式的优势。最后,总结了装饰器模式的核心思想和应用场景。装饰器模式是一种强大的设计模式,它允许我们在不改变对象结构的情况下,动态地为对象添加新的功能。装饰器模式和继承都可以用于扩展对象的功能,但装饰器模式更灵活。:扩展装饰器的功能,实现具体的装饰逻辑。:定义被装饰对象和装饰器对象共同的接口,可以是抽象类或接口。然后,我们实现具体的装饰器类,例如加糖的装饰器。

2023-08-15 10:51:08 47

原创 组合模式:将对象组合成树形结构以表示“部分-整体”层次结构

组合模式允许您创建一个抽象的组件类,该类定义了在叶子对象和容器对象之间共享的方法。叶子对象是没有子对象的基本对象,而容器对象包含其他组件,形成了一个递归结构。| |/ \/ \

2023-08-15 10:34:21 51

原创 桥接模式:连接抽象与实现

桥接模式就是一种能够将抽象部分与实现部分分离开来,使它们能够独立地变化,同时又能够在抽象部分与实现部分之间建立联系的设计模式

2023-08-14 09:59:41 74

原创 适配器模式:无缝连接不同接口

适配器模式是一种结构性设计模式,它可以让不兼容的接口协同工作。这种模式常用于系统需要与外部组件进行集成,但由于接口不匹配而导致无法直接协作的情况。适配器模式可以在不修改现有代码的情况下,将不同接口的类无缝连接起来,从而实现协同工作。适配器模式是一种重要的设计模式,它能够帮助我们解决不兼容接口的问题,实现不同类之间的协作。通过适配器模式,我们可以使现有的类能够在不修改其代码的情况下,协同工作。在实际开发中,合理使用适配器模式可以提高代码的复用性和系统的可维护性。

2023-08-14 09:35:51 117

原创 JAVA 数据结构----集合

集合: 表示一组被称为其元素的对象. 这个对象中存放着多个相同类型的元素. 不同类型的集合有不同的特点,比如:有些集合允许重复元素,而有的则不行; 又有的是有序的,而有的则无序。在java 中,集合分为Collection 集合和Map ,集合两大类.所有集合都直接或者间接通过实现Collection 或者Map 来实现集合特征. Collection集合接口p...

2023-08-11 15:20:57 109 1

原创 JAVA 虚拟机----JVM

JVM Java虚拟机,是一种计算机规范,用于运行Java代码的,在物理机上模拟计算机功能的虚拟计算机。 Java 通过JVM 达到一次编译到处运行的目的。Java的开发人员并需要关注各个计算机硬件平台的硬件环境,而是直接遵行Java的编码规范即可开发出具有各种实际功能的Java程序。经过编译的Java程序可以在任意一台安装了JVM虚拟机的平台上运行。从而实...

2023-08-11 15:20:19 221 1

原创 Hash---- Hash 算法,一致性Hash 算法

HashHash 原意为:n. 剁碎的食物,肉丁,vt. 把...弄乱,切碎...在计算机应用中称为散列函数, 或者直接音译为哈希。就是把任意长度的输入通过散列算法变换成固定长度的输出,该输出就是散列值。特点:hash的主要原理就是将大范围的二进制文件通过hash算法映射到较小的杂乱的hash码中保存。在相同的算法下,相同的二进制文件的hash值相同,而不同的二进制文件(即便是只...

2023-08-11 15:19:35 211 1

原创 Java 多线程

Java 多线程线程:在系统上运行的一组指令的集合,或者程序的特殊段,可以独立执行。它负责在单个程序中执行多个任务。进程:正在运行的程序的实例。并行: 在计算机语言环境中,并行是指多个线程同时执行。如果计算机系统要并行执行多个任务,在现行的计算机系统下,必须要求计算机有多个中央处理器核心,也就是多核CPU。并发:并发是指通过计算机处理器核心通过相应的算法,将有限的计算资源以时间为单位分割,...

2023-08-11 15:18:49 45 1

原创 天哪,从没体验过利用AIGC写博客是这么轻松

不过后来吭哧吭哧写了几篇文章以后,总感觉不得劲,然后又给删除了。然后又后来我又写了几篇文章,不过都写文过程中都吭哧吭哧搞了很多次才行。最后我直接在该文章上进行针对性的修改,而后一篇博客就出来了。从业也这么多年了,我在18年的时候,正式注册csdn账号,想着要在csdn中留下我所学习的所有知识,毕竟好记性不如烂笔头嘛。然后我选择了设计模式,准备开始以单例模式作为话题,生成技术文章,然后就要求它生成大纲。) 我把这篇文章首发到公众号,然后将19年写的文章修改到当前文章上就成了。于是,一篇文章就这么出来了。

2023-08-11 11:03:25 38 1

原创 原型模式:通过复制创建对象的灵活方式

原型模式是一种创建型设计模式,其核心思想是通过复制一个现有对象来创建新的对象,而无需从头开始构建。这种模式可以在某些情况下提供更高效的对象创建方式,同时避免了繁琐的构建过程。提高对象创建效率,避免了繁琐的构建过程。支持动态创建对象,无需预先知道对象的具体实现细节。可以根据需要克隆不同类型的对象。当对象的构建过程较为复杂,包括多个步骤或需要大量资源时。当需要创建多个相似但有差异的对象时。当对象的构建过程无法通过构造函数完成时。

2023-08-11 09:45:50 93 1

原创 谁敢信,我发现了一个BUG后,结果居然就参与了一次Guava贡献

我心想,这个代理服务器会不会出问题了,然后又去代理服务器排查,然后就看到一大堆的异常堆栈问题,详细检查发现,传递参数的时候, 那个 'boundary‘ 和 '=--‘ 之间有一个空格。好吧,那原本是一个月黑风高的夜晚,啊, 呸~~~, 是一个日常摸鱼的一天,我用上班的时间开发我的个人开源框架。),然后的然后就是用我那稍显蹩脚的英语和guava官方的开发胡扯,最后没想到,居然他们还吧这个问题处理了。(该框架被我用在公司的一个代理服务器项目上), 结果测试跟我提交了一个BUG, 说是接口未响应。

2023-08-10 11:36:01 255 1

原创 建造者模式:创建复杂对象的灵活构建方式

在软件开发中,我们经常会遇到一些复杂对象,它们的构建可能涉及多个步骤和组件。如果直接在客户端代码中进行对象的构建,会导致代码的复杂性增加,可维护性降低。建造者模式应运而生,它将对象的构建过程从客户端代码中分离出来,通过一系列的步骤来创建对象,从而提供更好的灵活性和可维护性。建造者模式是一种非常有用的设计模式,它可以帮助我们将复杂对象的构建过程与其表示分离,提供更好的灵活性和可维护性。通过深入的介绍和实际示例,我们更好地理解了建造者模式的概念、实现方式和优势。

2023-08-10 09:49:38 64 2

原创 设计模式记实-工厂模式:灵活而强大的对象创建方式

工厂模式是一种创建型设计模式,它通过将对象的创建抽象化,使客户端代码不直接依赖于具体的类实例化过程。通过工厂模式,我们可以实现对象的解耦和复用,提高代码的可维护性和扩展性。工厂模式是一种非常有用的设计模式,它可以帮助我们更灵活地管理对象的创建过程。通过深入的介绍和实际示例,我们更好地理解了工厂模式的概念、应用和好处。通过学习工厂模式,我们可以提高代码的可维护性、可扩展性和复用性。在实际项目中,选择合适的工厂模式可以极大地简化代码,提高开发效率。希望通过这篇文章,您能够对工厂模式有更深刻的认识。

2023-08-10 09:02:59 26 1

原创 初探Spring 源码记实——Bean实例化流程推测验证之:BeanDefinition接口 / BeanDefinitionReader 接口

前文 推测,Spring 提供一个标准(接口),其允许将不同形式的配置信息(不同格式的文件甚至可能时流等)解析为一个个的 Bean 定义信息(BeanDefinition) ,以供后续实例化使用。 结合Spring源码,本文将对BeanDefinitionReader接口与BeanDefinition接口进行验证。 准备代码:public class SimpleXmlSpringStarter { public static void m...

2021-09-12 17:22:41 193

原创 初探Spring 源码记实——Bean实例化流程推测

Spring Bean 实例化流程推测:1. spring 的简单使用1.1 Spring Xml 方式简单使用public class SimpleXmlSpringStarter { public static void main(String[] args) { ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("application-context.xml");.

2021-09-12 15:13:20 113

转载 设计模式实记——单例模式

一、使用场景 单例模式,顾名思义在程序运行期间最多只存在一个实例。多用于需要频繁使用,但是在整个程序运行生命周期内,其状态不怎么产生变化的对象。比如:程序运行所需的配置,工具类等。二、实现方式1. 简单单例模式(饿汉式): 即类加载的时候就会进行实例化public class SimpleSingleton { // 静态初始化一个实例 private static final SimpleSingleton INSTANCE = new ...

2021-09-12 11:15:48 307

空空如也

空空如也

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

TA关注的人

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