自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

JoeTwan 的博客

Keep Silence

  • 博客(46)
  • 收藏
  • 关注

原创 Centos 安装Redis 脚本

环境:centos 8Redis 版本:5.0.3不多说,直接shell脚本,过程都在注释里#!/bin/bash# redis 是C语言开发的,需要配置gcc环境yum install -y gccyum install -y makeyum install -y tcl# 查看gcc安装版本# gcc -v# 为redis新建安装文件夹,并配置访问权限,生产环境严格配置权限mkdir /opt/redischmod 777 /opt/rediscd /opt/redis

2021-05-30 00:12:35 211

原创 Java 多线程底层原理与实现

这里写目录标题一、各种锁的概念1.乐观锁与悲观锁2.共享锁/独占锁3.可重入锁4.公平锁和非公平锁5.无锁、偏向锁、轻量级锁、重量级锁6.自旋锁7.互斥锁和读写锁二、线程的实现方式1. 继承Thread 类2. 实现Runnable 接口3. 实现Callable 接口,配合FutureTask4. 使用线程池三、线程池详解1. 为什么使用线程池2. 线程池核心参数与工作原理核心参数阻塞队列拒绝策略添加线程流程3. Java 中实现的线程池newCachedThreadPoolnewFixedThreadP

2021-03-19 02:25:39 728 1

原创 设计模式速记-职责链模式

模式定义职责链模式又称责任链模式,定义如下:为了避免请求发送者与多个请求处理者耦合在一起,将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链;当有请求发生时,可将请求沿着这条链传递,直到有对象处理它为止。职责链模式的例子:Struct 拦截器JSP、Servlet的FilterJavascript中的事件冒泡优缺点优点:降低了对象之间的耦合度。该模式使得一个对象无须知道到底是哪一个对象处理其请求以及链的结构,发送者和接收者也无须拥有对方的明确信息。增强了系统的可扩

2020-08-21 19:32:55 188

原创 Chrome 夜间模式插件(Dark Reader)

插件下载地址https://chrome.zzzmh.cn/info?token=eimadpbcbfnmbkopoojfekhnkhdbieeh插件安装将zip包解压,将其中的CRX文件保存打开Chrome - 更多工具 - 扩展程序页面,右上角开发者模式开关开启将(1)中CRX文件拖到Chrome中,完成插件安装在右上角可调整插件设置...

2020-08-21 19:02:49 3166

原创 CCS-CSP 2015-03 批次 题目3 节日

题目描述描述题目问题描述有一类节日的日期并不是固定的,而是以“a月的第b个星期c”的形式定下来的,比如说母亲节就定为每年的五月的第二个星期日。  现在,给你a,b,c和y1, y2(1850 ≤ y1, y2 ≤ 2050),希望你输出从公元y1年到公元y2年间的每年的a月的第b个星期c的日期。  提示:关于闰年的规则:年份是400的整数倍时是闰年,否则年份是4的倍数并且不是100的倍数时是闰年,其他年份都不是闰年。例如1900年就不是闰年,而2000年是闰年。  为了方便你推算,已

2020-08-20 08:31:09 252

原创 CCS-CSP 2015-03 批次 题目2 数字排序

题目描述描述题目问题描述给定n个整数,请统计出每个整数出现的次数,按出现次数从多到少的顺序输出。输入格式输入的第一行包含一个整数n,表示给定数字的个数。第二行包含n个整数,相邻的整数之间用一个空格分隔,表示所给定的整数。输出格式输出多行,每行包含两个整数,分别表示一个给定的整数和它出现的次数。按出现次数递减的顺序输出。如果两个整数出现的次数一样多,则先输出值较小的,然后输出值较大的。样例输入125 2 3 3 1 3 4 2 5 2 3 5样例输出3

2020-08-20 07:10:50 199

原创 CCS-CSP 2015-03 批次 题目1 图像旋转

题目描述描述题目问题描述旋转是图像处理的基本操作,在这个问题中,你需要将一个图像逆时针旋转90度。计算机中的图像表示可以用一个矩阵来表示,为了旋转一个图像,只需要将对应的矩阵旋转即可。输入格式输入的第一行包含两个整数n, m,分别表示图像矩阵的行数和列数。接下来n行每行包含m个整数,表示输入的图像。输出格式输出m行,每行包含n个整数,表示原始矩阵逆时针旋转90度后的矩阵。样例输入2 31 5 33 2 4样例输出3 45 21 3评测用例规模与约

2020-08-20 06:56:28 391

原创 CCS-CSP 2014-12 批次 题目3 集合竞价

题目描述描述题目问题描述某股票交易所请你编写一个程序,根据开盘前客户提交的订单来确定某特定股票的开盘价和开盘成交量。  该程序的输入由很多行构成,每一行为一条记录,记录可能有以下几种:  1. buy p s 表示一个购买股票的买单,每手出价为p,购买股数为s。  2. sell p s 表示一个出售股票的卖单,每手出价为p,出售股数为s。  3. cancel i表示撤销第i行的记录。  如果开盘价为p0,则系统可以将所有出价至少为p0的买单和所有出价至多为p0的卖单进行匹配。因此

2020-08-20 06:27:02 254

原创 CCS-CSP 2014-12 批次 题目2 Z字形扫描

题目描述描述题目问题描述在图像编码的算法中,需要将一个给定的方形矩阵进行Z字形扫描(Zigzag Scan)。给定一个n×n的矩阵,Z字形扫描的过程如下图所示:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传   对于下面的4×4的矩阵,  1 5 3 9  3 7 5 6  9 4 6 4  7 3 1 3  对其进行Z字形扫描后得到长度为16的序列:  1 5 3 9 7 3 9 5 4 7 3 6 6 4 1 3  请实现一个Z字形扫描的程序,给定一个n×n

2020-08-20 06:26:25 222

原创 CCS-CSP 2014-12 批次 题目1 门禁系统

题目描述描述题目问题描述涛涛最近要负责图书馆的管理工作,需要记录下每天读者的到访情况。每位读者有一个编号,每条记录用读者的编号来表示。给出读者的来访记录,请问每一条记录中的读者是第几次出现。输入格式输入的第一行包含一个整数n,表示涛涛的记录条数。第二行包含n个整数,依次表示涛涛的记录中每位读者的编号。输出格式输出一行,包含n个整数,由空格分隔,依次表示每条记录中的读者编号是第几次出现。样例输入51 2 1 1 3样例输出1 1 2 3 1评测用例

2020-08-20 06:24:49 232

原创 CCS-CSP 2014-03 批次 题目2 窗口

问题描述在某图形操作系统中,有 N 个窗口,每个窗口都是一个两边与坐标轴分别平行的矩形区域。窗口的边界上的点也属于该窗口。窗口之间有层次的区别,在多于一个窗口重叠的区域里,只会显示位于顶层的窗口里的内容。  当你点击屏幕上一个点的时候,你就选择了处于被点击位置的最顶层窗口,并且这个窗口就会被移到所有窗口的最顶层,而剩余的窗口的层次顺序不变。如果你点击的位置不属于任何窗口,则系统会忽略你这次点击。  现在我们希望你写一个程序模拟点击窗口的过程。输入格式输入的第一行有两个正整数,即 N 和 M。(1

2020-08-19 16:01:06 323

原创 CCS-CSP 2014-09 批次 题目1 相邻数对

题目描述描述题目问题描述给定n个不同的整数,问这些数中有多少对整数,它们的值正好相差1。输入格式输入的第一行包含一个整数n,表示给定整数的个数。第二行包含所给定的n个整数。输出格式输出一个整数,表示值正好相差1的数对的个数。样例输入610 2 6 3 7 8样例输出3样例说明值正好相差1的数对包括(2, 3), (6, 7), (7, 8)。评测用例规模与约定1<=n<=1000,给定的整数为不超过10000的非负整数。

2020-08-19 15:47:37 124

原创 CCS-CSP 2014-09 批次 题目2 画图

题目描述描述题目问题描述在一个定义了直角坐标系的纸上,画一个(x1,y1)到(x2,y2)的矩形指将横坐标范围从x1到x2,纵坐标范围从y1到y2之间的区域涂上颜色。  下图给出了一个画了两个矩形的例子。第一个矩形是(1,1) 到(4, 4),用绿色和紫色表示。第二个矩形是(2, 3)到(6, 5),用蓝色和紫色表示。图中,一共有15个单位的面积被涂上颜色,其中紫色部分被涂了两次,但在计算面积时只计算一次。在实际的涂色过程中,所有的矩形都涂成统一的颜色,图中显示不同颜色仅为说明方便。

2020-08-19 15:47:01 309

原创 CCS-CSP 2014-09 批次 题目3 字符串匹配

题目描述描述题目问题描述给出一个字符串和多行文字,在这些文字中找到字符串出现的那些行。你的程序还需支持大小写敏感选项:当选项打开时,表示同一个字母的大写和小写看作不同的字符;当选项关闭时,表示同一个字母的大写和小写看作相同的字符。输入格式输入的第一行包含一个字符串S,由大小写英文字母组成。第二行包含一个数字,表示大小写敏感的选项,当数字为0时表示大小写不敏感,当数字为1时表示大小写敏感。第三行包含一个整数n,表示给出的文字的行数。接下来n行,每行包含一个字符串,字符串由大小写

2020-08-19 15:43:26 286

原创 CCS-CSP 2014-03 批次 题目3 命令行选项

问题描述请你写一个命令行分析程序,用以分析给定的命令行里包含哪些选项。每个命令行由若干个字符串组成,它们之间恰好由一个空格分隔。这些字符串中的第一个为该命令行工具的名字,由小写字母组成,你的程序不用对它进行处理。在工具名字之后可能会包含若干选项,然后可能会包含一 些不是选项的参数。  选项有两类:带参数的选项和不带参数的选项。一个合法的无参数选项的形式是一个减号后面跟单个小写字母,如"-a" 或"-b"。而带参数选项则由两个由空格分隔的字符串构成,前者的格式要求与无参数选项相同,后者则是该选项的参数,是

2020-08-18 14:19:59 311

原创 国内镜像地址及 Centos 各版本包差异

国内镜像地址:网易开源镜像: http://mirrors.163.com/阿里云开源镜像: https://developer.aliyun.com/mirror/搜狐开源镜像: http://mirrors.sohu.com/公云开源镜像: http://mirrors.pubyun.com/首都在线开源镜像: http://mirrors.yun-idc.com/北理工开源镜像: http://mirror.bit.edu.cn/web/北京交通大学开源镜像: https

2020-08-16 11:25:26 528

原创 CCS-CSP 2014-03 批次 题目1 相反数

问题描述有 N 个非零且各不相同的整数。请你编一个程序求出它们中有多少对相反数(a 和 -a 为一对相反数)。输入格式第一行包含一个正整数 N。(1 ≤ N ≤ 500)。  第二行为 N 个用单个空格隔开的非零整数,每个数的绝对值不超过1000,保证这些整数各不相同。输出格式只输出一个整数,即这 N 个数中包含多少对相反数。样例输入51 2 3 -1 -2样例输出2解题方案1.解题思路**方案一:**设置一个2001大小的数组A,设输入数据为data,将data+100

2020-08-13 07:40:38 265

原创 CCS-CSP 2013-12 批次 题目5 I’m stuck!

题目描述问题描述给定一个R行C列的地图,地图的每一个方格可能是’#’, ‘+’, ‘-’, ‘|’, ‘.’, ‘S’, ‘T’七个字符中的一个,分别表示如下意思:  ‘#’: 任何时候玩家都不能移动到此方格;  ‘+’: 当玩家到达这一方格后,下一步可以向上下左右四个方向相邻的任意一个非’#‘方格移动一格;  ‘-’: 当玩家到达这一方格后,下一步可以向左右两个方向相邻的一个非’#‘方格移动一格;  ‘|’: 当玩家到达这一方格后,下一步可以向上下两个方向相邻的一个非’#‘方格移动一格;  

2020-08-11 10:17:50 263

原创 CCS-CSP 2013-12 批次 题目4 有趣的数

问题描述我们把一个数称为有趣的,当且仅当:1. 它的数字只包含0, 1, 2, 3,且这四个数字都出现过至少一次。  2. 所有的0都出现在所有的1之前,而所有的2都出现在所有的3之前。  3. 最高位数字不为0。因此,符合我们定义的最小的有趣的数是2013。除此以外,4位的有趣的数还有两个:2031和2301。  请计算恰好有n位的有趣的数的个数。由于答案可能非常大,只需要输出答案除以1000000007的余数。输入格式输入只有一行,包括恰好一个正整数n (4 ≤ n ≤ 1000)。输

2020-08-08 01:35:55 354

原创 CCS-CSP 2013-12 批次 题目3 最大的矩形

问题描述在横轴上放了n个相邻的矩形,每个矩形的宽度是1,而第i(1 ≤ i ≤ n)个矩形的高度是hi。这n个矩形构成了一个直方图。例如,下图中六个矩形的高度就分别是3, 1, 6, 5, 2, 3。  请找出能放在给定直方图里面积最大的矩形,它的边要与坐标轴平行。对于上面给出的例子,最大矩形如下图所示的阴影部分,面积是10。输入格式第一行包含一个整数n,即矩形的数量(1 ≤ n ≤ 1000)。  第二行包含n 个整数h1, h2, … , hn,相邻的数之间由空格分隔。(1 ≤ hi ≤

2020-08-07 11:07:53 250

原创 设计模式速记-原型模式

原型模式原型模式定义:用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。原型模式的例子:java 中 clone()方法打印机通过PDF文件打印出多份纸质书籍原型模式就是通过已有对象创建出相同或者相似的多个对象;原型模式的角色抽象原型类:规定了具体原型对象必须实现的接口。具体原型类:实现抽象原型类的 clone() 方法,它是可被复制的对象。访问类:使用具体原型类中的 clone() 方法来复制新的对象。使用场景资源优化类初始化需要消

2020-08-07 09:42:31 121

原创 CCS-CSP 2013-12 批次 题目2 ISBN号码

ISBN号码Description​ 每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字、1位识别码和3位分隔符,其规定格式如“x-xxx-xxxxx-x”,其中符号“-”是分隔符(键盘上的减号),最后一位是识别码,例如0-670-82162-4就是一个标准的ISBN码。ISBN码的首位数字表示书籍的出版语言,例如0代表英语;第一个分隔符“-”之后的三位数字代表出版社,例如670代表维京出版社;第二个分隔之后的五位数字代表该书在出版社的编号;最后一位为识别码。  

2020-08-05 23:38:02 249

原创 CCS-CSP 2013-12 批次 题目1 出现次数最多的数

出现次数最多的数Description给定n个正整数,找出它们中出现次数最多的数。如果这样的数有多个,请输出其中最小的一个。Input Format给定n个正整数,找出它们中出现次数最多的数。如果这样的数有多个,请输出其中最小的一个。Output Format输入的第一行只有一个正整数n(1 ≤ n ≤ 1000),表示数字的个数。输入的第二行有n个整数s1, s2, …, sn (1 ≤ si ≤ 10000, 1 ≤ i ≤ n)。相邻的数用空格分隔。Sample Input

2020-08-05 21:18:45 156

原创 设计模式速记-享元模式

享元模式享元模式享元模式的定义:运用共享技术来有效地支持大量细粒度对象的复用。它通过共享已经存在的对象来大幅度减少需要创建的对象数量、避免大量相似类的开销,从而提高系统资源的利用率。享元模式的例子有很多,比如:Java 中 String ,如果系统中存在该String 则返回,没有则创建后存储在常量池中。五子棋的黑白子,本质上没有什么区别,可以用一个对象更改属性代替GPS坐标,经度和纬度等等、、通过上述例子可以发现,享元模式针对的对象一般是具有高度重合,并且系统中可能会生成大量类似对

2020-08-02 06:51:19 109

原创 设计模式速记-外观模式

设计模式速记-外观模式外观模式外观模式定义:外观模式是一种通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。该模式对外有一个统一接口,外部应用程序不用关心内部子系统的具体的细节,这样会大大降低应用程序的复杂度,提高了程序的可维护性。外观模式的主要应用在于当一个服务系统中有很多接口,而不同的需求需要有不同的调用流程,这时候在这些数量庞大的接口中寻找就不是一件容易的事,所以使用外观模式将这些接口整合,为某个特定的需求服务,这样用户看到的就是这些整合过的接口,目的也更单纯一

2020-08-02 02:50:12 117

原创 设计模式速记-适配器模式

适配器模式适配器模式适配器模式定义:将一个类的接口转换成客户希望的另外一个接口。适配器 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。适配器模式的一些例子:电脑显示器接口一般有VGA、HDMI、DVI几种,笔记本接口一般为HDMI接口,连接线即为适配器。音乐播放器可播放格式有MP3、MP4等,需要对音乐文件格式进行适配后才能使用。代码编辑器代码高亮功能,需要适配代码语言,如Java、Python,适配后方能关键字高亮显示。Excel 可以查看xls、xlsx、csv文件

2020-08-02 02:49:48 165

原创 设计模式速记-桥接模式

桥接模式桥接模式桥接模式定义:桥接模式是将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(Interfce)模式。在生活中有很多桥接模式的例子,比如:在纸上画图,可以选择红色的彩笔,也可以选择绿色的彩笔;自制饮料,可以选择西瓜做原材料,也可以选择草莓做原材料;泡茶,可以选择毛尖茶,也可以选择花茶;这些例子的共同特点都是做一件事,可以选择不同的方法去做,并且做得结果是不同的;所以桥接模式的含义就是,将

2020-08-01 07:11:11 155

原创 Windows 常用快捷键整理

Windows 常用快捷键整理快捷键功能Ctrl + A选择全部Ctrl + B所选文本字体加粗Ctrl + C复制Ctrl + E选择搜索框Ctrl + F查找Ctrl + H查找和替换Ctrl + I所选文本变为斜体Ctrl + L左对齐Ctrl + N打开一个新窗口Ctrl + R右对齐Ctrl + S保存Ctrl + V粘贴Ctrl + X剪切Ctrl + Z撤销Ct

2020-08-01 06:22:23 144

原创 Pycharm 常用快捷键整理

PyCharm 常用快捷键整理常用快捷键快捷键功能Ctrl + Q快速查看文档Ctrl + F1显示错误描述或警告信息Ctrl + /行注释(可选中多行)Ctrl + Alt + L代码格式化Ctrl + Alt + O自动导入Ctrl + Alt + I自动缩进Tab / Shift + Tab缩进、不缩进当前行(可选中多行)Ctrl+C/Ctrl+Insert复制当前行或选定的代码块到剪贴板Ctrl + D复制选定

2020-08-01 06:21:55 422

原创 Intellij Idea 常用快捷键整理

Intellij Idea 常用快捷键整理快捷键功能Alt + EnterIntelliJ IDEA 根据光标所在问题,提供快速修复选择,光标放在的位置不同提示的结果也不同 (必备)Alt + F1显示当前文件选择目标弹出层,弹出层中有很多目标可以进行选择 (必备)Alt + Insert代码自动生成,如生成对象的 set / get 方法,构造函数,toString() 等 (必备)Alt + Shift + N选择 / 添加 task (必备)Alt

2020-08-01 06:21:03 93

原创 设计模式速记-模板方法模式

设计模式速记-模板方法模式模板方法模式模板方法模式的定义:定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。它是一种类行为型模式。简而言之,模板方法模式就是已知并且确定整个算法的流程,但是算法流程中某些过程需要特定情况特定处理。例如要获取音乐最受欢迎排行榜前100名,那么算法的流程分成三步(使用排序方法):将入选音乐汇总将入选音乐排序选择排序榜前100名确定了骨架之后,三个步骤中的任何一部分都可以随着需求更换,

2020-08-01 06:20:33 118

原创 设计模式速记-命令模式

设计模式速记-命令模式命令模式命令模式定义:将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通,这样方便将命令对象进行储存、传递、调用、增加与管理。程序中经常需要把处理逻辑封装为一个处理方法,使用该逻辑时只需要调用方调用此方法即可,所以方法的调用者和方法的实现者有紧密的耦合关系,如果在“调用方-实现方”之间使用命令模式,耦合关系就会减弱比如餐馆点餐系统,服务员将客户提交的菜品订单交给厨师,那么订单就相当于命令,服务员等价于调用者,厨师相当于执行者

2020-08-01 06:20:08 86

原创 Typora 常用快捷键整理

Typora 常用快捷键整理快捷键功能Ctrl+1一阶标题Ctrl+B字体加粗Ctrl+2二阶标题Ctrl+I字体倾斜Ctrl+3三阶标题Ctrl+U下划线Ctrl+4四阶标题Ctrl+Home返回Typora顶部Ctrl+5五阶标题Ctrl+End返回Typora底部Ctrl+6六阶标题Ctrl+T创建表格Ctrl+L选中某句话Ctrl+K创建超链接Ctrl+D选中某个单

2020-08-01 06:19:46 247

原创 Linux 运维常用指令整理

Linux 运维常用指令整理线上查询/帮助命令命令含义man查看命令帮助,命令的词典,更复杂的还有info,但不常用。help查看Linux内置命令的帮助,比如cd命令。文件和目录操作命令命令含义basename显示文件名或目录名。cd全拼change directory,功能是从当前工作目录切换到指定的工作目录。chattr改变文件的扩展属性。cp全拼copy,其功能为复制文件或目录。dirname显示文件或目

2020-08-01 06:18:31 131

原创 Vim 常用指令整理

Vim 常用指令整理一般模式命令含义$或功能键[End]移动到这一行的最后面字符处(常用).不要怀疑!这就是小数点!意思是重复前一个动作的意思。 如果你想要重复删除、重复贴上等等动作,按下小数点『.』就好了! (常用)/word向光标之下寻找一个名称为 word 的字符串。例如要在档案内搜寻 vbird 这个字符串,就输入 /vbird 即可! (常用)0或功能键[Home]这是数字『 0 』:移动到这一行的最前面字符处 (常用):%s/word1/w

2020-08-01 06:17:39 106

原创 设计模式速记-设计模式概述

设计模式速记-设计模式概述一、概述1. 什么是设计模式设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。它描述了在软件设计过程中的一些不断重复发生的问题,以及该问题的解决方案。也就是说,它是解决特定问题的一系列套路,是前辈们的代码设计经验的总结,具有一定的普遍性,可以反复使用。其目的是为了提高代码的可重用性、代码的可读性和代码的可靠性。2. 学习设计模式的意义设计模式的本质是面向对象设计原则的实际运用,是对类的封装性、继承性和多态性以及类的关联关系和组合关系的充分理解。正

2020-08-01 06:16:08 170

原创 设计模式速记-解释器模式

设计模式速记-解释器模式解释器模式解释器模式的定义如下:给分析对象定义一个语言,并定义该语言的文法表示,再设计一个解析器来解释语言中的句子。解释器模式顾名思义即为处理一种具有特定文法语言的方法,比如“北京的小孩”、“天津的老人”、“河北的中年人”,这一组表达式都是同一种文法类型的,都是主语(地名)+ 谓语(的)+ 宾语(小孩or老人or中年人)发现这组语言的特点后,可以发现每句话分为三个部分,分别是地名、的、人群,所以如果假设场景为做公交车,小孩和老人免费只有中年人需要交费的话,就需要对

2020-07-31 22:49:43 126

原创 设计模式速记-建造者模式

设计模式速记-建造者模式建造者模式建造者模式的定义指将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式。它是将一个复杂的对象分解为多个简单的对象,然后一步一步构建而成。它将变与不变相分离,即产品的组成部分是不变的,但每一部分是可以灵活选择的。假如一个对象是有很多部分组成的,那么每个部分都可以抽象出独立的一个方法单独建造,这时候就可以使用建造者模式。例如装修的时候需要装修客厅、阳台、卧室等,那么每个部分都可以抽出来单独进行,比如客厅需要放置沙发,

2020-07-31 22:49:09 58

原创 设计模式速记-观察者模式

设计模式速记-观察者模式观察者模式观察者模式定义指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种模式有时又称作发布-订阅模式、模型-视图模式,它是对象行为型模式。简而言之,就是在某个对象A行为属性等发生改变时,与其相关联的对象集D可能也会随之改变,但是对象集D是怎么知道对象A发生改变的呢?这就可以使用观察者模式观察者模式优缺点优点降低了目标与观察者之间的耦合关系,两者之间是抽象耦合关系。目标与观察者之间建立了一套触发机制

2020-07-31 22:48:32 68

原创 设计模式速记-工厂模式与抽象工厂模式

设计模式速记-工厂模式与抽象工厂模式一、工厂模式概述1. 什么是工厂模式工厂模式定义:定义一个创建产品对象的工厂接口,将产品对象的实际创建工作推迟到具体子工厂类当中。这满足创建型模式中所要求的“创建与使用相分离”的特点。工厂模式是一种创建型模式,根据创建的产品是具体产品还是工厂可以将工厂模式分为简单工厂模式和工厂方法模式;因为简单工厂模式创建产品时会违反开闭原则,所以简单工厂模式不属于GoF的23种设计模式。(开闭原则:如若创建新产品不可改变现有代码)2. 工厂模式的使用场景工厂模式的使

2020-07-31 22:47:48 148

空空如也

空空如也

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

TA关注的人

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