自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(104)
  • 资源 (1)
  • 收藏
  • 关注

原创 GO设计模式——26、访问者模式(行为型)

访问者模式(Visitor Pattern)将算法从对象结构中分离出来,从而使算法可以独立于对象而变化。允许在不修改现有代码的情况下向现有对象结构添加新的行为。该模式建立在两个核心组件上:访问者和元素。访问者是一个能够访问所有元素的对象,而元素则是需要接受访问者的对象。在这种模式下,访问者可以在不改变元素本身的情况下对其进行操作。访问者模式的核心思想是,通过让访问者持有某个具体元素的引用,让元素的接受访问者方法中执行具体访问者的操作。

2023-12-21 16:25:04 488

原创 GO设计模式——25、模板模式(行为型)

模板模式(Template Pattern)定义了一个算法的骨架,并允许子类为其中的一些步骤提供具体实现。在模板模式中,模板定义了算法的框架,具体步骤则由子类实现。这种模式通过把不变的行为放在超类中,去除子类中的重复代码,提高代码复用性。

2023-12-21 16:20:00 914

原创 GO设计模式——24、策略模式(行为型)

策略模式(Strategy Pattern)允许在运行时动态地改变算法或策略的选择,从而使算法的变化独立于使用它的客户端。这种模式通过将算法封装在单独的类中,使得它们可以相互替换,并使得它们易于理解、扩展和维护。

2023-12-21 16:13:55 832 2

原创 GO设计模式——23、空对象模式(行为型)

空对象模式(Null Object Pattern)中,一个空对象取代 NULL 对象实例的检查。Null 对象不是检查空值,而是反应一个不做任何动作的关系。这样的 Null 对象也可以在数据不可用的时候提供默认的行为。在空对象模式中,创建一个指定各种要执行的操作的抽象类和扩展该类的实体类,还创建一个未对该类做任何实现的空对象类,该空对象类将无缝地使用在需要检查空值的地方。

2023-12-21 16:09:18 552

原创 GO设计模式——22、状态模式(行为型)

状态模式(State Pattern)类的行为是基于它的状态改变的。该模式将对象的状态封装在一个独立的类中,并将对象的行为委托给当前状态对象。通过这种方式,对象可以在运行时更改状态,并在不同的状态下执行不同的操作。在 Go 语言中,可以使用接口来定义状态和状态对象的行为,并使用结构体来实现不同的状态。

2023-12-21 16:07:11 893

原创 GO设计模式——21、观察者模式(行为型)

观察者模式(Observer Pattern)定义了对象间的一种一对多的依赖关系,使得当一个对象状态发生改变时,所有依赖于它的对象都可以自动得到通知并且被更新。观察者模式是一种一对多的关系,可以有任意个(1个或多个)观察者对象同时监听(观察)某一个对象。

2023-12-21 16:04:31 587

原创 GO设计模式——20、备忘录模式(行为型)

备忘录模式(Memento Pattern)又叫快照模式。通过在不破坏封装性的前提下,捕获一个对象的内部状态,并在对象之外保存这个状态,从而在需要时能够将对象恢复到之前的状态。

2023-12-21 15:58:27 641

原创 GO设计模式——19、中介者模式(行为型)

中介者模式(Mediator Pattern)引入一个中介者对象,将一组对象的交互行为封装到一个中介者对象中,从而使这些对象不需要显式地相互引用并直接交互。通过中介者对象,这些对象可以间接地交互,从而降低对象之间的耦合性,使得对象之间的通信更加简单和灵活。

2023-12-21 15:56:19 442

原创 GO设计模式——18、迭代器模式(行为型)

迭代器模式(Iterator Pattern)提供了一种统一的方式来访问一个容器对象中的各个元素,而无需暴露其内部结构。

2023-12-21 15:50:59 724

原创 GO设计模式——17、解释器模式(行为型)

解释器模式(Interpreter Pattern)提供了评估语言的语法或表达式的方式,它属于行为型模式。这种模式实现了一个表达式接口,该接口解释一个特定的上下文。这种模式被用在 SQL 解析、符号处理引擎等。

2023-12-21 15:46:51 538

原创 GO设计模式——16、命令模式(行为型)

命令模式(Command Pattern)将一个请求封装为一个对象(命令本身),使发出请求的责任(命令发送方)和执行请求的责任(命令接收方)分割开。将请求的发送者和接收者解耦,并提供一种灵活的方式来处理请求。命令模式可以用于实现撤销重做队列请求等功能。

2023-12-21 15:44:38 535

原创 力扣(LeetCode)-1. 两数之和

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例 1:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。示例 2:输入:nums = [3,2,4], t

2023-12-08 11:00:06 472

原创 GO设计模式——15、责任链模式(行为型)

责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链将请求的发送者和接收者解耦,并允许多个对象都有机会处理请求。通过为多个对象构成一个链,并将请求沿着这条链传递,直到有一个对象处理请求为止。在责任链模式中,客户只需要将请求发送到责任链上即可,无须关心请求的处理细节和请求的传递过程,请求会自动进行传递。所以责任链将请求的发送者和请求的处理者解耦了。

2023-12-08 10:58:26 590

原创 GO设计模式——14、代理模式(结构型)

代理模式(Proxy Pattern)通过引入代理对象来控制对真实对象的访问。

2023-12-07 14:52:31 379

原创 GO设计模式——13、享元模式(结构型)

享元模式(Flyweight Pattern)它通过共享对象来减少内存使用和提高性能。享元模式的核心思想是共享,当需要创建一个新对象时,首先检查是否已经有与其相同的对象存在,如果存在,则直接返回该对象的引用;如果不存在,则创建一个新对象并将其加入对象池中以供下次使用。通过这种方式,可以避免重复创建相同的对象,从而减少内存占用和提高性能。使用享元模式需要有两个前提:(1)享元对象不可变:当享元模式创建出来后,它的变量和属性不会被修改;

2023-12-07 14:50:04 568

原创 GO设计模式——12、外观模式(结构型)

外观模式(Facade Pattern)又叫作门面模式,是一种通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。该模式对外有一个统一接口用于访问子系统中的一组接口,外部应用程序不用关心内部子系统的具体细节,这样会大大降低应用程序的复杂度,提高了程序的可维护性。

2023-12-07 14:44:01 597

原创 GO设计模式——11、装饰器模式(结构型)

同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。装饰器模式通过将对象包装在装饰器类中,以便动态地修改其行为。这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。装饰器模式(Decorator Pattern)允许向一个。(2)缺点:多层装饰比较复杂。现有的对象添加新的功能。

2023-12-07 14:40:16 380

原创 GO设计模式——10、组合模式(结构型)

而叶子节点与树枝节点在语义上不属于用一种类型。但是在组合模式中,会把树枝节点和叶子节点看作属于同一种数据类型(用统一接口定义),让它们具备一致行为。这样,在组合模式中,整个树形结构中的对象都属于同一种类型,带来的好处就是用户不需要辨别是树枝节点还是叶子节点,可以直接进行操作,给用户的使用带来极大的便利。组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。(2)缺点:在使用组合模式时,其叶子和树枝的声明都是实现类,而不是接口,违反了依赖倒置原则。

2023-12-07 14:38:09 302

原创 GO设计模式——9、过滤器模式(结构型)

过滤器模式(Filter Pattern)或标准模式(Criteria Pattern)是一种设计模式,这种模式允许开发人员使用不同的标准来过滤一组对象,通过逻辑运算以解耦的方式把它们连接起来。这种类型的设计模式属于结构型模式,它结合多个标准来获得单一标准。可以自由组合不同的过滤条件。

2023-12-07 14:34:51 342

原创 GO设计模式——8、桥接模式(结构型)

桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类,这两种类型的类可被结构化改变而互不影响。桥接模式的目的是将抽象与实现分离,使它们可以独立地变化,该模式通过将一个对象的抽象部分与它的实现部分分离,使它们可以独立地改变。它通过组合的方式,而不是继承的方式,将抽象和实现的部分连接起来。核心角色定义抽象类的接口。

2023-12-07 14:28:16 505

原创 GO设计模式——7、适配器模式(结构型)

适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。将一个类的接口转化为客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。(2)缺点:过多地使用适配器,会让系统非常零乱,不易整体进行把握。比如,明明看到调用的是 A 接口,其实内部被适配成了 B 接口的实现,一个系统如果太多出现这种情况,无异于一场灾难。因此如果不是很有必要,可以不使用适配器,而是直接对系统进行重构。

2023-12-07 14:25:03 528 1

原创 GO设计模式——6、原型模式(创建型)

原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式之一。这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。例如,一个对象需要在一个高代价的数据库操作之后被创建。我们可以缓存该对象,在下一个请求时返回它的克隆,在需要的时候更新数据库,以此来减少数据库调用。(1)优点:性能提高,当创建对象需要一系列繁琐操作的时候,使用原型模式可以提高一定的性能。

2023-12-07 14:23:09 474 1

原创 GO设计模式——5、建造者模式(创建型)

建造者模式在创建复杂对象时非常有用,特别是当对象的构建过程涉及多个步骤或参数时。3、指挥者(Director):是构建一个实用Builder接口的对象。建造者模式是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以构建它们,用户不需要知道内部的具体构建细节。(ConcreteBuilder):实现Builder接口,构造和装配各个部件。(Builder):是为创建一个Product对象的各个部件指定的抽象接口。与工厂模式的区别是:建造者模式更加关注与零件装配的顺序。

2023-12-07 14:18:51 667

原创 GO设计模式——4、单例模式(创建型)

是:通过将类的构造函数私有化,防止外部代码直接实例化该类,然后提供一个静态方法或全局变量来获取类的唯一实例。具体而言,单例模式包含以下几个关键要素:(1)私有的构造函数(Private Constructor):用于限制类的实例化,使其只能在类的内部进行。当第一次获取实例时,单例模式会创建一个实例,并将其保存起来,以供后续调用使用。在这种模式下,实例在整个程序的生命周期中始终存在,无论是否被使用。例如,某些资源消耗较大的对象,或者需要根据运行时的条件来确定具体实例的情况下,可以使用懒汉式单例模式。

2023-12-07 14:13:35 598

原创 GO设计模式——3、抽象工厂模式(创建型)

抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。抽象工厂模式提供了一种创建一系列相关或相互依赖对象的接口,而无需指定具体实现类。通过使用抽象工厂模式,可以将客户端与具体产品的创建过程解耦,使得客户端可以通过工厂接口来创建一族产品。

2023-12-07 11:58:32 442

原创 GO设计模式——2、工厂方法模式(创建型)

工厂方法模式(Factory Method Pattern)又叫作多态性工厂模式,指的是定义一个创建对象的接口,但由实现这个接口的工厂类来决定实例化哪个产品类,工厂方法把类的实例化推迟到子类中进行。在工厂方法模式中,不再由单一的工厂类生产产品,而是由工厂类的子类实现具体产品的创建。因此,当增加一个产品时,只需增加一个相应的工厂类的子类, 以解决简单工厂生产太多产品时导致其内部代码臃肿(switch … case分支过多)的问题。工厂方法模式在Go语言中有着广泛的应用,例如在数据库访问消息队列。

2023-12-07 11:56:09 484 1

原创 GO设计模式——1、简单工厂模式(创建型)

简单工厂模式又称为静态工厂方法(Static Factory Method)模式。在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。核心角色1、抽象产品(Abstract Product):是简单工厂创建的所有对象的抽象父类/接口,负责描述所有实例的行为。2、具体产品(Concrete Product):是简单工厂模式的创建目标。3、简单工厂:是简单工厂模式的核心,负责实现创建所有实例的内部逻辑。

2023-12-07 11:49:00 219

原创 GO -- 设计模式

设计模式,即Design Patterns,是指在软件设计中,被反复使用的一种代码设计经验。使用设计模式的目的是为了可重用代码,提高代码的可扩展性和可维护性。

2023-12-07 11:31:48 1720

原创 Go 下载安装教程

由于Go安装的时候会自动为其bin目录配置环境变量,在path中找到这个并进行修改,将其修改为:%GOROOT%\bin。打开环境变量配置,在系统变量中,需要配置GOROOT、path、GOPATH三个环境变量。(1)GOROOT: 设置GOROOT的路径为Go的安装路径。(3)GOPATH:这个是我们一般用来存放源码的工作路径。(2)path:在环境变量中找到path,点击编辑。--bin:存放编译后的exe文件。(3)修改安装路径,如果不修改,直接下一步。(5)安装完成,进行环境变量配置。

2023-07-29 14:53:32 1381

原创 MySQL练习50题

MySQL练习题

2023-07-25 10:55:05 100

原创 如何保证Redis和数据库数据的一致性

如何保证Redis和数据库数据的一致性

2022-10-26 21:45:55 770 1

原创 力扣(LeetCode)-1512. 好数对的数目

给你一个整数数组 nums 。如果一组数字 (i,j) 满足 nums[i] == nums[j] 且 i < j ,就可以认为这是一组 好数对 。返回好数对的数目。示例 1:输入:nums = [1,2,3,1,1,3]输出:4解释:有 4 组好数对,分别是 (0,3), (0,4), (3,4), (2,5) ,下标从 0 开始示例 2:输入:nums = [1,1,1,1]输出:6解释:数组中的每组数字都是好数对示例 3:输入:nums = [1

2022-03-19 21:06:09 684

原创 力扣(LeetCode)-961. 在长度 2N 的数组中找出重复 N 次的元素

给你一个整数数组 nums ,该数组具有以下属性:nums.length == 2 * n. nums 包含 n + 1 个 不同的 元素 nums 中恰有一个元素重复 n 次找出并返回重复了 n 次的那个元素。示例 1:输入:nums = [1,2,3,3]输出:3示例 2:输入:nums = [2,1,2,5,3,2]输出:2示例 3:输入:nums = [5,1,5,2,5,3,5,4]输出:5提示:2 <= n <= .

2022-03-18 16:33:36 281

原创 力扣(LeetCode)-1945. 字符串转化后的各位数字之和

给你一个由小写字母组成的字符串 s ,以及一个整数 k 。首先,用字母在字母表中的位置替换该字母,将 s 转化 为一个整数(也就是,'a' 用 1 替换,'b' 用 2 替换,... 'z' 用 26 替换)。接着,将整数 转换 为其 各位数字之和 。共重复 转换 操作 k 次 。例如,如果 s = "zbax" 且 k = 2 ,那么执行下述步骤后得到的结果是整数 8 :转化:"zbax" ➝ "(26)(2)(1)(24)" ➝ "262124" ➝ 262124转换 #1:262124

2022-03-18 11:08:43 167

原创 力扣(LeetCode)-2114. 句子中的最多单词数

(一)一个 句子由一些 单词以及它们之间的单个空格组成,句子的开头和结尾不会有多余空格。给你一个字符串数组sentences,其中sentences[i]表示单个 句子。请你返回单个句子里 单词的最多数目。示例 1:输入:sentences = ["alice and bob love leetcode", "i think so too", "this is great thanks very much"]输出:6解释:- 第一个句子 "alice and bob ...

2022-03-17 22:36:14 331

原创 尚硅谷-Java笔记-核心基础day01-Java语言概述

1. 基础知识图解图形化界面操作与命令行操作系统图形化界面(GraphicalUserInterface,GUI) 命令行方式(CommandLineInterface,CLI)机器语言(二进制代码)→汇编语言→高级语言(面向过程-面向对象) android系统架构Java语言特点面向对象:类和对象特性:封装、继承、多态健壮性:去掉指针、内存的申请和释放,提供相对安全的内存管理和访问机制 跨平台性:JVM,实现了Java程序的跨平台性Java的核心机制...

2022-03-09 21:07:18 218

原创 尚硅谷-Java笔记-核心基础day00-编程入门

冯·诺依曼体系结构正在上传…重新上传取消CPU(Central Processing Unit):(1)控制单元(Control Unit):用于控制和协调其他组件的协作(2)算数/逻辑单元(Arithmetic/Logic Unit):用于完成数值运算和逻辑运算计算机最小的存储单位是比特(bit),最基本的存储单位是字节(Byte)...

2022-03-09 20:53:14 175

原创 java 运算符

1.算术运算符 +:加 -:减 *:乘 /:除 %:求余 2.数学函数与常量数学函数: sqrt(): pow(): sin() cos() tan() atan() atan2() exp() log() log10() 数学常量: Math.PI Math.E 3.数值类型之间的转换double 》 float 》.

2021-12-22 10:38:22 317

原创 java 变量与常量

1.变量的声明:指定变量的类型,然后是变量名变量名必须以字母开头并由字母或数字构成的序列,大小写敏感,长度无限制,但有些字符不行注:判断Unicode字符属于java中的字母的方法:Character类的isJavaIdentifierStart和isJavaIdentifierPart方法检查2.变量的初始化使用未初始化的变量是错误的//从java10开始,对局部变量,可以从初始值判断变量的类型,不需声明类型。值需使用关键字var而无需指定类型var vacationDays

2021-12-14 22:24:07 217

原创 java 基本数据类型

java是强类型语言,即每个变量都要声明一种类型。八种基本数据类型:(1)整型 byte :1字节 short :2字节 int :4字节 long :8字节 注:①long有后缀L或l②进制数值表示,数字字面量加下划线,java编译器会去除这些下划线(0b111_100_010)二进制数值,前缀0B或0b,eg. 0b1001 --- 8八进制数值,前缀0,eg. 010 --- 8十六进制数值,前缀0X或0x,eg. 0xCAFE③

2021-12-14 21:47:26 105

GO-设计模式:使用GO语言实现23种设计模式

GO-设计模式

2023-12-07

数据库系统概论第三章课后题4

数据库系统概论第五版第三章课后题4

2018-11-06

空空如也

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

TA关注的人

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