自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 云原生基础概述

慢慢地使用公司应用的用户越来越多,遍布全国各地乃至全世界,然而由于距离太远,网络延迟很大,公司就想在各地都放一个服务器来部署应用平台,但因为不同服务器的「系统环境」存在差异,在原来的环境运行的好好的,但放到另外一台服务器的环境就问题百出。云,指的就是云服务器。一开始全国各地的公司老板都买来咱公司的云服务器,但是好景不长,由于公司的云服务器卖的很贵,隔壁的尼古拉斯赵四不买账,于是自己也斥巨资买了大量服务器搭建了一个云,并对外声明,他这是「私有云」,只能他们公司「自己用」,跟咱公司的公有云划清了界限。

2023-11-24 20:29:58 391

原创 1、Docker概述与安装

Docker对我来说是一种全新技术,既然是全新的技术那么我就不禁要问了,Docker它到底是什么东西?它是基于什么场景下出现的,解决了什么问题呢?Docker 可以安装在 Windows、Linux、Mac 等系统中,我们经常说的安装Docker其实主要就是安装Docker引擎,只是为了简单直接说安装Docker而已;在安装 Docker 之前需要先了解 Docker 官方对其版本的分类。Docker 的版本分为大版本 与小版本。

2023-11-24 20:27:15 1583

原创 设计模式之状态模式详解

【例】通过按钮来控制一个电梯的状态,一个电梯有开门状态,关门状态,停止状态,运行状态。每一种状态改变,都有可能要根据其他状态来更新处理。例如,如果电梯门现在处于运行时状态,就不能进行开门操作,而如果电梯门是停止状态,就可以执行开门操作。...

2022-06-10 17:29:48 3226 2

原创 设计模式之中介者模式详解

一般来说,类之间的关系是比较复杂的,多个类之间互相关联时,他们之间的关系会呈现为复杂的网状结构,这是一种过度耦合的架构,即不利于类的复用,也不稳定。例如在下左图中,有六个类对象,假如对象1发生变化,那么将会有4个对象受到影响。如果对象2发生变化,那么将会有5个对象受到影响。也就是说,类之间直接关联的设计是不好的。...

2022-06-10 17:22:37 6143

原创 设计模式之命令模式详解

在软件开发中,我们经常需要向某些对象发送请求(调用其中的某个或某些方法),**但是并不知道请求的接收者是谁,也不知道被请求的操作是哪个,此时,我们特别希望能够以一种松耦合的方式来设计软件,使得请求发送者与请求接收者能够消除彼此之间的耦合,让对象之间的调用关系更加灵活,可以灵活地指定请求接收者以及被请求的操作。**...

2022-06-10 17:14:54 3730

原创 设计模式之访问者模式详解

访问者模式是一种较为复杂的行为型设计模式,它包含访问者和被访问元素两个主要组成部分,这些被访问的元素通常具有不同的类型,且不同的访问者可以对它们进行不同的访问操作。例如处方单中的各种药品信息就是被访问的元素,而划价人员和药房工作人员就是访问者。访问者模式使得用户可以在不修改现有系统的情况下扩展系统的功能,为这 些不同类型的元素增加新的操作。在使用访问者模式时,被访问元素通常不是单独存在的,它们存储在一个集合中,这个集合被称为“对象结构”,访问者通过遍历对象结构实现对其中存储的元素的逐个操作。....

2022-06-10 16:50:59 1828

原创 设计模式之迭代器模式详解

在软件开发中,我们经常需要使用聚合对象来存储一系列数据。聚合对象拥有两个职责:一是存储数据;二是遍历数据。从依赖性来看,前者是聚合对象的基本职责;而后者既是可变化的,又是可分离的。因此,**可以将遍历数据的行为从聚合对象中分离出来,封装在一个被称之为“迭代器”的对象中,由迭代器来提供遍历聚合对象内部数据的行为**,这将简化聚合对象的设计,更符合“单一职责原则”的要求。 .........

2022-06-10 16:19:37 303

原创 Spring 注解开发 2 IOC容器(AOP)

AOP是指在程序的运行期间动态地将某段代码切入到指定方法、指定位置进行运行的编程方式。AOP的底层是使用动态代理实现的。

2022-05-31 11:23:22 164

原创 设计模式之策略模式详解

​ 该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户(算法的具体实现不同?)。策略模式属于对象行为模式,它通过对算法进行封装,把使用算法的责任和算法的实现分割开来,并委派给不同的对象对这些算法进行管理。.........

2022-05-16 21:18:28 6222

原创 设计模式之模板方法模式详解

在模板方法模式中,由于面向对象的多态性,子类对象在运行时将覆盖父类对象,子类中定义的方法也将覆盖父类中定义的方法,因此程序在运行时,具体子类的基本方法将覆盖父类中定义的基本方法,子类的钩子方法也将覆盖父类的钩子方法,从而可以通过在子类中实现的钩子方法对父类方法的执行进行约束,**实现子类对父类行为的反向控制**。

2022-05-15 20:25:13 2577

原创 设计模式之享元模式详解

​ 运用共享技术来有效地支持大量细粒度对象的复用。它通过共享已经存在的对象来大幅度**减少需要创建的对象数量、避免大量相似对象的开销,从而提高系统资源的利用率。

2022-05-15 20:04:09 981

原创 设计模式之组合模式详解

树形结构在软件中随处可见,例如操作系统中的目录结构、应用软件中的菜单、办公系统中的公司组织结构等等,但是由于容器对象和叶子对象在功能上面的区别,**使得我们在使用的过程中必须要区分容器对象和叶子对象**,==但是这样就会给客户带来不必要的麻烦,作为客户而已,它始终**希望能够一致的对待容器对象和叶子对象**==。 如何运用面向对象的方式来处理这种树形结构是组合模式需要解决的问题,组合模式通过一种巧妙的设计方案使得用户可以一致性地处理整个树形结构或者树形结构的一部分,也可以一致性地处理树形结构中的叶子节点

2022-05-15 19:46:02 603

原创 设计模式之桥接模式详解

设计模式之桥接模式详解概述现在有一个需求,需要创建不同的图形,并且每个图形都有可能会有不同的颜色。我们可以利用继承的方式来设计类的关系:我们可以发现有很多的类,假如我们再增加一个形状或再增加一种颜色,就需要创建更多的类。试想,在一个有多种可能会变化的维度的系统中,用继承方式会造成类爆炸,扩展起来不灵活。每次在一个维度上新增一个具体实现都要增加多个子类。为了更加灵活的设计系统,我们此时可以考虑使用桥接模式。桥接模式定义:​ 将抽象与实现分离,使它们可以独立变化。它是用组合关系代替继承关系来实现,

2022-05-15 19:34:41 1373

原创 设计模式之外观模式详解

设计模式之外观模式详解概述有些人可能炒过股票,但其实大部分人都不太懂,这种没有足够了解证券知识的情况下做股票是很容易亏钱的,刚开始炒股肯定都会想,如果有个懂行的帮帮手就好,其实基金就是个好帮手,支付宝里就有许多的基金,它将投资者分散的资金集中起来,交由专业的经理人进行管理,投资于股票、债券、外汇等领域,而基金投资的收益归持有者所有,管理机构收取一定比例的托管管理费用。外观模式定义:​ 又名门面模式,是一种通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。该模式对外有一个统

2022-05-15 19:34:18 322

原创 设计模式之装饰者模式详解

设计模式之装饰者模式详解​概述先来看一个快餐店的例子。快餐店有炒面、炒饭这些快餐主食,可以额外附加鸡蛋、火腿、培根这些配菜,当然加配菜需要额外加钱,每个配菜的价钱通常不太一样。可以使用继承的方式实现,FriedRice表示炒米饭,EggFriedRice表示计算炒米饭加鸡蛋的钱的类,其他同理,类图如下所示使用继承的方式虽然实现起来简单,但也存在如下的问题:扩展性不好如果要再加一种配料(火腿肠),我们就会发现需要给FriedRice和FriedNoodles分别定义一个子类。如果要新增一

2022-05-15 19:33:57 189

原创 创建者模式对比工厂模式

创建者模式对比工厂模式工厂方法模式VS建造者模式工厂方法模式注重的是整体对象的创建方式;而建造者模式注重的是部件构建的过程,意在通过一步一步地精确构造创建出一个复杂的对象。我们举个简单例子来说明两者的差异,如要制造一个超人,如果使用工厂方法模式,直接产生出来的就是一个力大无穷、能够飞翔、内裤外穿的超人;而如果使用建造者模式,则需要组装手、头、脚、躯干等部分,然后再把内裤外穿,于是一个超人就诞生了。抽象工厂模式VS建造者模式抽象工厂模式实现对产品家族的创建,一个产品家族是这样的一系列产品:具有不同分

2022-05-15 19:33:39 125

原创 类适配器、对象适配器模式详解

类适配器、对象适配器模式详解概述如果去欧洲国家去旅游的话,他们的插座如下图最左边,是欧洲标准。而我们使用的插头如下图最右边的。因此我们的笔记本电脑,手机在当地不能直接充电。所以就需要一个插座转换器,转换器第1面插入当地的插座,第2面供我们充电,这样使得我们的插头在当地能使用。生活中这样的例子很多,手机充电器(将220v转换为5v的电压),读卡器等,其实就是使用到了适配器模式。定义:​ 将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。​ 简单

2022-05-15 19:33:09 2093

原创 工厂方法模式

工厂方法模式针对简单工厂模式中出现的缺点,即增加新产品的时候还是需要修改工厂类的代码,这就违背了“开闭原则”修改原有代码。而这个确定我们使用工厂方法模式就可以完美的解决,使之**完全遵循开闭原则。所谓的工厂方法模式,定义了一个用于创建对象的接口**(其实就是工厂,只是里面不具体创建对象的细节),让该工厂接口的工厂子类决定实例化哪个产品类对象。也就是说工厂方法使一个产品类的实例化延迟到其工厂接口的子类。结构工厂方法模式的主要角色:抽象工厂(Abstract Factory):提供了创建产品的接口

2022-05-15 19:32:22 181

原创 静态代理、JDK动态代理、CGLIB动态代理三种代理模式详解

静态代理、JDK动态代理、CGLIB动态代理三种代理模式详解概述代理模式是比较常见的结构型设计模式之一,当我们无法直接访问某个对象或访问某个对象存在困难时就可以通过一个代理对象来间接访问。或者说因为某些原因需要**给某对象提供一个代理以控制对该对象的访问。**这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。在代理模式中引入了一个新的代理对象,代理对象在客户端对象和目标对象之间起到中介的作用,它去掉客户不能看到的内容和服务或者增添客户需要的额外的新服务。Java

2022-05-15 19:32:05 192

原创 设计模式之构建者模式

设计模式之构建者模式构建者模式的定义是,将一个复杂对象的构建与表示分离(解耦?),使得同样的构建过程可以创建不同的表示。建造者模式是较为复杂的创建型模式,它将客户端与包含多个组成部分(或部件)的复杂对象的创建过程分离,客户端无须知道复杂对象的内部组成部分与装配方式,只需要知道所需建造者的类型即可。它关注如何一步一步创建一个的复杂对象,不同的具体建造者定义了不同的创建过程,且具体建造者相互独立,增加新的建造者非常方便,无须修改已有代码,系统具有较好的扩展性。结构建造者(Builder)模式包含如下角色

2022-05-13 00:06:26 3241

原创 设计模式之构建者模式扩展

设计模式之构建者模式扩展建造者模式除了上面的用途外,在开发中还有一个常用的使用方式,**就是当一个类构造器需要传入很多参数时,如果创建这个类的实例,**代码可读性会非常差,而且很容易引入错误,此时就可以利用建造者模式进行重构。重构前代码如下:public class Phone { private String cpu; private String screen; private String memory; private String mainboard;

2022-05-13 00:06:08 93

原创 设计模式之原型模式

#设计模式之原型模式概述用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型对象相同的新对象。结构原型模式包含如下角色:抽象原型类:规定了具体原型对象必须实现的的 clone() 方法。具体原型类:实现抽象原型类的 clone() 方法,它是可被复制的对象。访问类:使用具体原型类中的 clone() 方法来复制新的对象。接口类图如下:实现单例模式进行克隆是否得出同一个对象???若果得出的不是同一个对象还叫单例吗?原型模式的克隆分为浅克隆和深克隆(区别是存储地址是否相同

2022-05-13 00:05:52 332

原创 工厂模式的扩展

工厂模式的扩展用简单工厂+配置文件来达到完美解除耦合的目的 (Spring)可以通过工厂模式+配置文件的方式解除工厂对象和产品对象的耦合。在工厂类中加载配置文件中的全类名,并通过反射创建对象进行存储,客户端如果需要对象,直接进行获取即可。第一步:定义配置文件为了演示方便,我们使用properties文件作为配置文件,名称为bean.propertiesamerican=com.itheima.pattern.factory.config_factory.AmericanCoffeelatte=c

2022-05-13 00:05:37 101

原创 抽象工厂模式

本节要介绍的抽象工厂模式将考虑多等级产品的生产,**将同一个具体工厂所生产的位于不同等级的一组产品称为一个产品族**,下图所示横轴是产品等级,也就是同一类产品;纵轴是产品族,也就是同一品牌的产品,同一品牌的产品产自同一个工厂。

2022-05-13 00:05:08 126

原创 简单工厂模式

简单工厂模式简单工厂模式是工厂方法模式的“小弟”,它不属于GoF 23种设计模式,但在软件开发中应用也较为频繁,通常将它作为学习其他工厂模式的入门。结构简单工厂包含如下角色:抽象产品 :定义了产品的规范,描述了产品的主要特性和功能。在之前的案例中Coffee类就是抽象产品具体产品 :实现或者继承抽象产品的子类,如拿铁或者美式咖啡具体工厂 :提供了创建产品的方法,调用者通过该方法来获取产品。实现现在使用简单工厂对工厂模式概述中的案例进行改进,类图如下:可以看出来咖啡类、拿铁、美式咖啡都

2022-05-13 00:04:32 121

原创 工厂模式概述

工厂模式概述在我们正式讲解工厂模式之前,我们先来看一个需求,看看目前的解决方案都存在什么问题,然后一步一步引入我们的工厂模式,看看工厂模式的优缺点是什么。工厂模式的超链接跳转需求:设计一个咖啡店点餐系统。设计一个咖啡类(Coffee),并定义其两个子类(美式咖啡【AmericanCoffee】和拿铁咖啡【LatteCoffee】);再设计一个咖啡店类(CoffeeStore),咖啡店具有点咖啡的功能。先来看一个需求,设计一个咖啡店点餐系统。咖啡店点餐系统点的肯定是咖啡,所以我们需要设计咖啡类,

2022-05-13 00:03:48 154

原创 破坏单例模式的几种方式

破坏单例模式的几种方式所谓单例模式就是,某一个类只能有一个实例,实现的核心就是将类的[构造函数]私有化,只能由该类的静态方法在其内部创建对象,外面不能通过new 来调用构造函数来创建对象了。只有一个实例的类才遵循单例模式,要想研究如何去破坏单例模式,我们首先来看看创建实例的方式有哪些,也就是说, 对象的创建方式有哪几种?就本人目前想到的有四种:new 、克隆、序列化、反射。反射破坏虽然说在设计单例模式的时候将构造方法私有化了,但是,有一个非常厉害的哥们儿–反射,利用反射机制可以获取类的构造方法,再

2022-05-13 00:01:55 1067 1

原创 创建型模式之单例模式

创建型模式之单例模式​ 所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类 只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法(静态方法)。比如Hibernate的SessionFactory,它充当数据存储源的代理,并负责创建Session 对象。SessionFactory并不是轻量级的,一般情况下,一个项目通常只需要一个 SessionFactory就够,这是就会使用到单例模式。也就是说,为了节约系统资源,有时需要确保系统中某个类只有唯一一个实例,当这个唯一实

2022-05-13 00:01:38 187

原创 UML关联关系

Relation关系依赖Dependency:依赖,比如说A类使用B类。 只要是在类中用到了对方,那么他们之间就存在依赖关系。如果没有对方,连编 绎都通过不了。public class PersonServiceBean { //以成员变量的形式使用到了PersonDao类private PersonDao personDao;// //以方法参数的形式接收一个Personpublic void save(Person person){} //以返回值的形式用到了一个

2022-05-13 00:01:17 4178 1

原创 深入理解23种设计模式目录导学

深入理解23种设计模式目录导学设计模式的概述​1、 为什么会有设计模式?2、什么是设计模式?设计模式的七大原则设计模式的原则,其实就是程序员在设计 设计模式 时,应当遵守的原则,也是各种设计模式的基础(即:设计模式为什么这样设计的依据)设计模式原则之一:单一职责原则 设计模式原则之二:接口隔离原则设计模式原则之三:依赖倒转原则设计模式原则之四:里氏替换原则设计模式原则之五:开闭原则设计模式原则之六:迪米特法则设计模式原则之七:合成复用原则设计模式的三大类五种创建型模式工厂

2022-05-12 12:44:46 1199

原创 设计模式原则之合成复用原则

合成复用原则又称为组合/聚合复用原则,其定义是尽量使用对象组合,而不是继承来达到复用的目的。合成复用原则就是在一个新的对象里通过关联关系(包括组合关系和聚合关系)来使用一些已有的对象,使之成为新对象的一部分;新对象通过委派调用已有对象的方法达到复用功能的目的。简言之:复用时要尽量使用组合/聚合关系(关联关系),少用继承。......

2022-05-12 12:32:28 215

原创 设计模式原则之迪米特法则

设计模式原则之迪米特法则迪米特法则(Law of Demeter, LoD)的核心是一个软件实体应当尽可能少地与其他实体发生相互作用。如果一个系统符合迪米特法则,那么当其中某一个模块发生修改时,就会尽量少地影响其他模块,扩展会相对容易,这是对软件实体之间通信的限制,迪米特法则要求限制软件实体之间通信的宽度和深度。该法则能够降低系统的耦合度,使类与类之间保持松散的耦合关系。米特法则(Demeter Principle)又叫最少知道原则,即一个类对自己依赖的类知道的 越少越好。也就是说,对于被依赖的类不

2022-05-12 12:27:25 520 1

原创 设计模式原则之开闭原则

设计模式原则之开闭原则原则概述开闭原则(Open Closed Principle)是编程中最基础、最重要的设计原则 。一个软件实体如类,模块和函数应该对扩展开放(对提供方),对修改关闭(对使用 方)。用抽象构建框架,用实现扩展细节。 当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已 有的代码来实现变化。编程中遵循其它原则,以及使用设计模式的目的就是遵循开闭原则任何任何系统在开发过程都会面临需求会随时间的推移而发生变化的重要的问题。面对新的需求时,我们应该尽量保证系统的设计框

2022-05-12 12:21:41 299

原创 设计模式原则之里氏替换原则

里氏替换原则的核心是所有引用基类(父类)的地方必须能透明地使用其子类的对象。比如在软件中将一个父基类对象替换成它的子类对象,程序将不会产生任何错误和异常,**反过来则不成立,**如果一个软件实体使用的是一个子类对象的话,那么它不一定能够使用基类对象。...

2022-05-12 12:12:17 223

原创 什么是设计模式?

什么是设计模式?为什么会有设计模式?设计模式是什么?设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结,使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。Java语言是一门面向对象的语言,在我们实际开发的过程中用户需求变化总是让人抓狂,这是非常无奈的事情,倘若用户的需求一发生微小的变化我们的代码就得全部删除重写,这显然是非常不合理的,所以我们当然需要我们写的代码很高的可复用性,这样就算用户的需求发生细微变化我们也能够复

2022-05-12 11:13:48 86

原创 为什么会有设计模式?

为什么会有设计模式?设计模式的由来软件工程是最近几十年才逐渐兴起的一门学科,而建筑工程领域已经拥有几千年的沉淀历史,相对于软件工程来说,这个传承了几千年的大咖还是有太多值得软件工程去学习和借鉴的地方。 今天我们要介绍的主角设计模式,就是借鉴了建筑领域中模式的思想发展而来的。​ 美国的一个建筑大咖, 给出了关于建筑模式的定义: 即 **每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心,通过这种方式,我们可以无数次地重用那些已有的成功的解决方案,无须再重复相同的工作。

2022-05-12 11:11:20 101

原创 设计模式原则之依赖倒转(倒置)原则

设计模式原则之依赖倒转(倒置)原则原则概述依赖倒转原则(Dependence Inversion Principle)是指: 高层模块不应该依赖底层模块,二者都应该依赖其(或接口)抽象(不要依赖具体子类) 。也就是说 抽象不应该依赖于细节,细节应当依赖于抽象,要针对接口编程,而不是针对实现编程。具体来说,当我们在代码中传递参数或搭建关联关系时,尽量引用层次高的抽象层类,也就是尽量使用接口和抽象类代替具体类来进行变量类型声明、参数类型声明、方法返回类型声明,以及数据类型的转换等,尽量不要用具体类来做这些

2022-05-12 11:08:13 1288

原创 设计模式原则之接口隔离原则

接口隔离原则是指一个接口中不应该存在实现它的子类用不到的方法,否则实现它的子类就需要去实现子类不应该实现的方法。如果违反了这个规定,或者说当一个接口太大时,我们就要将该接口进行拆分,使得实现该接口的子类不需要实现子类用不到的方法。使用多个隔离的接口,比使用单个接口(多个接口方法集合到一个的接口)要好的多,更方便。...

2022-05-12 10:51:28 419

原创 设计模式原则之单一职责原则

单一职责的原则是实现高内聚、低耦合的重要原则,一般来说是对于类来说的,即一个类应该只负责一项职责,只做一件事。

2022-05-12 10:34:16 191

原创 JDK1.7HashMap源码级分析

任何不谈论JDK版本的源码分析都是在耍流氓,本篇文章针对的是1.7版本的HashMap分析

2022-05-10 21:26:02 297

空空如也

空空如也

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

TA关注的人

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