- 博客(80)
- 收藏
- 关注
转载 设计模式学习总结(二十三)--状态模式
定义在很多情况下,一个对象的行为取决于它的一个或多个变化的属性,这些属性我们称之为状态,这个对象称之为状态对象。对于状态对象而已,它的行为依赖于它的状态,比如你要预订房间,那么只有当该房间为空闲时你才能预订,你想入住该房间也只有当你预订了该房间或者该房间为空闲时。对于这样的一个对象,当它在于外部事件产生互动的时候,其内部状态就会发生改变,从而使得他的行为也随之发生改变。状态模式就是允...
2019-09-25 10:12:00 270
转载 设计模式学习总结(二十二)--访问者模式
定义访问者模式就是表示一个作用于某对象结构中的各元素的操作,它使我们可以在不改变各元素的类的前提下定义作用于这些元素的新操作。访问者模式适用于数据结构相对稳定的系统。角色Vistor: 抽象访问者。为该对象结构中的ConcreteElement的每一个类声明的一个操作。ConcreteVisitor: 具体访问者。实现Visitor申明的每一个操作,每一个操作实现算法的一部分。...
2019-09-25 10:11:00 229
转载 设计模式学习总结(二十一)--责任链模式
定义职责链模式就是避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。在职责链模式中我们可以随时随地的增加或者更改一个处理者,甚至可以更改处理者的顺序,增加了系统的灵活性。处理灵活性是增加了,但是有时候可能会导致一个请求无论如何也得不到处理,它会被放置在链末端,这个既是职责链的优点也是缺点。角色角色:...
2019-09-25 10:08:00 267
转载 设计模式学习总结(二十)--中介者模式
定义中介者模式就是用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。角色:Mediator: 抽象中介者。定义了同事对象到中介者对象之间的接口。ConcreteMediator: 具体中介者。实现抽象中介者的方法,它需要知道所有的具体同事类,同时需要从具体的同事类那里接收信息,并且向具体的同事类发送信息...
2019-09-25 10:06:00 209
转载 设计模式学习总结(十九)--命令模式
定义将请求封装成对象,以便使用不同的请求、日志、队列等来参数化其他对象。命令模式也支持撤销操作。角色Command:定义命令的统一接口ConcreteCommand:Command接口的实现者,用来执行具体的命令,某些情况下可以直接用来充当Receiver。Receiver:命令的实际执行者Invoker:命令的请求者,是命令模式中最重要的角色。这个角色用来对各个命令进行控...
2019-09-25 10:05:00 142
转载 设计模式学习总结(十八)--备忘录模式
定义备忘录模式就是在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。角色:Originator: 原发器。负责创建一个备忘录,用以记录当前对象的内部状态,通过也可以使用它来利用备忘录恢复内部状态。同时原发器还可以根据需要决定Memento存储Originator的那些内部状态。Memento: 备忘录。用于存储O...
2019-09-25 10:03:00 175
转载 设计模式学习总结(十七)--观察者模式
定义观察者模式又称为发布-订阅模式。定义了对象之间的一对多依赖关系,当一个对象改变状态时,它的所有依赖者都会收到通知并且自动更新。在这里,发生改变的对象称之为观察目标,而被通知的对象称之为观察者。一个观察目标可以对应多个观察者,而且这些观察者之间没有相互联系,所以么可以根据需要增加和删除观察者,使得系统更易于扩展。角色Subject:目标。他把所有对观察者对戏的引用保存在一个聚...
2019-09-25 10:02:00 151
转载 设计模式学习总结(十六)--解释器模式
定义解释器模式(Interpreter),给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。角色AbstractExpression: 抽象表达式。声明一个抽象的解释操作,该接口为抽象语法树中所有的节点共享。TerminalExpression: 终结符表达式。实现与文法中的终结符相关的解释操作。实现抽象表达式中所要求的方法。文法中...
2019-09-25 10:00:00 184
转载 设计模式学习总结(十五)--策略模式
定义策略模式就是定义了算法族,将其分别封装起来,让他们之前可以互相转换,策略模式让该算法的变化独立于使用算法的客户。在软件系统中有很多种方法可以实现同一个功能,比如排序算法它有冒泡排序、选择排序、快速排序、插入排序等等。这里我们有一种硬编码方法,就是将所有的排序算法全部写在一个类中,每一种算法的具体实现对应着一个方法,然后写一个总方法通过 if…else… 来判断选择具体的排序算法,...
2019-09-25 09:59:00 123
转载 设计模式学习总结(十四)--迭代器模式
定义所谓迭代器模式就是提供一种方法顺序访问一个聚合对象中的各个元素,而不是暴露其内部的表示。在实际的开发过程中,我们可能需要针对不同的需求,可能需要以不同的方式来遍历整个整合对象,但是我们不希望在聚合对象的抽象接口层中充斥着各种不同的便利操作。这个时候我们就需要这样一种东西,它应该具备如下三个功能:能够遍历一个聚合对象。不需要了解聚合对象的内部结构。能够提供多种不同的遍历方式。...
2019-09-25 09:57:00 196
转载 设计模式学习总结(十三)--模板方法模式
定义所谓模板方法模式就是在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。模板方法模式是基于继承的代码复用技术的。在模板方法模式中,我们可以将相同部分的代码放在父类中,而将不同的代码放入不同的子类中。也就是说我们需要声明一个抽象的父类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法让...
2019-09-25 09:55:00 183
转载 设计模式学习总结(十二)--代理模式
定义代理模式就是给一个对象提供一个代理,并由代理对象控制对原对象的引用。在代理模式中,“第三者”代理主要是起到一个中介的作用,它连接客户端和目标对象。角色Subject: 抽象角色。声明真实对象和代理对象的共同接口。Proxy: 代理角色。代理对象与真实对象实现相同的接口,所以它能够在任何时刻都能够代理真实对象。代理角色内部包含有对真实对象的引用,所以她可以操作真实对象,同时也...
2019-09-25 09:52:00 165
转载 设计模式学习总结(十一)--桥接模式
定义桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。桥接模式将继承关系转化成关联关系,它降低了类与类之间的耦合度,减少了系统中类的数量,也减少了代码量。包含角色:Abstraction:抽象类RefinedAbstraction:扩充抽象类Implementor...
2019-09-25 09:50:00 162
转载 设计模式学习总结(十)--组合模式
定义组合模式又叫部分-整体模式,组合多个对象形成树形结构以表示“整体-部分”的结构层次。组合模式对单个对象(叶子对象)和组合对象(组合对象)具有一致性,它将对象组织到树结构中,可以用来描述整体与部分的关系。同时它也模糊了简单元素(叶子对象)和复杂元素(容器对象)的概念,使得客户能够像处理简单元素一样来处理复杂元素,从而使客户程序能够与复杂元素的内部结构解耦。组合模式包含角色:C...
2019-09-25 09:48:00 118
转载 设计模式学习总结(九)--享元模式
定义享元模式就是运行共享技术有效地支持大量细粒度对象的复用。系统使用少量对象,而且这些都比较相似,状态变化小,可以实现对象的多次复用。享元的目的是为了减少不会要额内存消耗,将多个对同一对象的访问集中起来,不必为每个访问者创建一个单独的对象,以此来降低内存的消耗。享元模式有点类似于单例模式,都是只生成一个对象来被共享使用。这里有个问题,那就是对共享对象的修改,为了避免出现这种情况,我们...
2019-09-25 09:45:00 184
转载 设计模式学习总结(八)--适配者模式
定义将一个类的接口转换成客户希望的另一个接口。适配器模式让那些接口不兼容的类可以一起工作。比如笔记本的电源(也叫电源适配器)就使用了适配器模式。将220V的交流电转换为笔记本电脑所需要的12V适配器模式角色适配器模式包含以下三个角色:Target(目标抽象类):目标抽象类定义客户所需的接口,可以是一个抽象类或接口,也可以是具体类。Adapter(适配器类):它可以调用另一个...
2019-09-25 09:44:00 154
转载 设计模式学习总结(七)--装饰者模式
定义装饰者模式又叫包装(Wrapper)模式。装饰者模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。装饰者模式动态地将责任附加到对象身上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。在装饰模式中的角色:抽象构件(Component)角色:给出一个抽象接口,以规范准备接收附加责任的对象。具体构件(ConcreteComponent)角色:定义一个将要接...
2019-09-25 09:43:00 122
转载 MySQL之PXC集群搭建
一、PXC 介绍1.1 PXC 简介PXC 是一套 MySQL 高可用集群解决方案,与传统的基于主从复制模式的集群架构相比 PXC 最突出特点就是解决了诟病已久的数据复制延迟问题,基本上可以达到实时同步。而且节点与节点之间,他们相互的关系是对等的。PXC 最关注的是数据的一致性,对待事物的行为时,要么在所有节点上执行,要么都不执行,它的实现机制决定了它对待一致性的行为非常严格,这也能...
2019-09-05 09:51:00 325
转载 设计模式学习总结(六)--外观模式
定义外观模式(Facade)隐藏了系统的复杂性,只向客户端提供了一个可以访问系统的接口。这种类型的设计模式属于结构性模式。为子系统中的一组接口提供了一个统一的访问接口,这个接口使得子系统更容易被访问或者使用。简单来说,外观模式就是把一些复杂的流程封装成一个接口供给外部用户更简单的使用。这个模式中,设计到3个角色。客户角色:通过调用门面角色来完成要实现的功能。门面角色:外观模式的...
2019-09-04 17:28:00 141
转载 设计模式学习总结(五)--原型模式
定义原型模式也是一种创建模式。通过给出一个原型对象来指明所有创建的对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象。原型模式要求对象实现一个可以 “克隆” 自身的接口,这样就可以通过复制一个实例对象本身来创建一个新的实例。这样一来,通过原型实例创建新的对象,就不再需要关心这个实例本身的类型,只要实现了克隆自身的方法,就可以通过这个方法来获取新的对象,而无须再去通过 ne...
2019-09-03 15:08:00 161
转载 设计模式学习总结(四)--建造者模式
建造者模式定义建造者模式:是将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。工厂类模式提供的是创建单个类的模式,而建造者模式则是将各种产品集中起来进行管理,用来创建复合对象,所谓复合对象就是指某个类具有不同的属性,其实建造者模式就是前面抽象工厂模式和最后的 Test 结合起来得到的。建造者模式通常包括下面几个角色:Builder:给出一个抽象接口,...
2019-09-03 15:03:00 242
转载 设计模式学习总结(三)--工厂模式
工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。简单工厂模式定义简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。实例需求:以学习课程为例课程抽象类:public interfac...
2019-09-03 15:02:00 139
转载 Docker资源管理
一台宿主机可以放多个容器,默认的情况下,Docker 没有对容器进行硬件资源的限制,当容器负载过高时会尽可能的占用宿主机资源,所以有时候我们需要对容器的资源使用设置一个上限,今天我们就来看看如何管理 Docker 使用的资源。真正可以控制的只有内存和CPU查看宿主机资源使用情况Docker 使用 cgroups 归类运行在容器中的进程,这就使得我们可以管理一组进程使用的资源。运行...
2019-09-02 13:37:00 267
转载 设计模式学习总结(二)--单例模式
单例模式概念什么是单例模式整个程序中只允许有唯一的一个对象(这个类只能实例化一次),如打印机、单核处理器等优点单例模式提供了对唯一实例的受控访问。因为单例类封装了它的唯一实例,所以它可以严格控制客户怎样以及何时访问它。由于在系统内存中只存在一个对象,因此可以节约系统资源,对于一些需要频繁创建和销毁的对象单例模式无疑可以提高系统的性能。允许可变数目的实例。基于单例模式我们可以...
2019-08-31 12:52:00 103
转载 设计模式学习总结(一)--面向对象设计七大原则
面向对象设计七大原则开闭原则(Open Close Principle)java 面向扩展开放,面向修改关闭。里氏替换原则(Liskov Substitution Principle)java 超类存在的地方,子类是可以被替换的。依赖倒置原则(Dependence Inversion Principle)java 实现尽量依赖于抽象,而不是依赖于具体实现。单一...
2019-08-31 12:50:00 198
转载 Docker网络模式
一、Docker 网络模式Docker 容器的网络有五种模式: table th:first-of-type { width: 100px; } 模式名称功能是否支持多主机南北向通信机制东西向通信机制bridge默认设置,为容器创建独立的网络命名空间,容器具有独立的网卡等所有单独的网络栈。如果在容器运行时不加 --net 参数,就默认采用这种网络模式。否...
2019-08-30 15:10:00 160
转载 Docker之安装缺省指令
Docker 中有些指令不存在,需要额外的安装,这里做下安装记录。更新软件源中的所有软件列表apt-get update安装 ifconfigapt install net-tools 安装 pingapt install iputils-ping 转载于:https://www.cnblogs.com/markLogZhu/p/11430414.ht...
2019-08-29 16:29:00 137
转载 MySQL之主从同步
一、主从同步概念1.1 什么是主从同步?MySQL 主从同步是指将数据从一个 MySQL 数据库服务器主节点复制到一个或多个从节点。MySQL 默认采用异步复制方式,这样从节点不用一直访问主服务器来更新自己的数据,数据的更新可以在远程连接上进行,从节点可以复制主数据库中的所有数据库或者特定的数据库,或者特定的表。1.2 主从同步使用场景数据备份读写分离高可用1.3主从...
2019-08-29 16:18:00 245
转载 Docker学习总结(七)--Docker私有仓库
创建私有仓库1) 拉取私有仓库镜像docker pull registry2)启动私有仓库容器docker run -di --name-registry -p 5000:5000 registry3) 打开浏览器输入地址 http://宿主机IP地址:5000/v2/_catalog{ "repositories":[]}表示私有仓库搭建成功并且内容为空。4...
2019-08-28 17:19:00 171
转载 Docker学习总结(六)--Dockerfile
什么是 DockerfileDockerfile 是由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像。对于开发人员:可以为开发团队提供一个完全一致的开发环境;对于测试人员:可以直接拿开发时所构建的镜像或通过 Dockerfile 文件构建一个新的镜像进行测试;对于运维人员:在部署时,可以实现应用的无缝移植。常用命令命令作用FR...
2019-08-28 17:17:00 99
转载 Docker学习总结(五)--迁移与备份
将容器保存为镜像docker commit myNginx mynginx_i镜像备份docker save -o myNginx.tar myNginx_i镜像恢复docker load -i myNginx.tar转载于:https://www.cnblogs.com/markLogZhu/p/11425236.html...
2019-08-28 17:16:00 113
转载 Docker学习总结(四)--应用部署
MySQL部署1) 拉取 mysql 镜像docker pull centos/mysql:5.72) 创建容器docker run -di --name=mysql -p 33306:3306 -v /data/mysql/conf:/etc/mysql/conf.d -v /data...
2019-08-28 17:15:00 181
转载 Docker学习总结(三)--常用命令
镜像相关命令查看镜像docker images返回列表字段含义如下:字段名称字段含义REPOSITORY镜像名称TAG镜像标签IMAGE ID镜像 IDCREATED镜像创建日期ZISE镜像大小注:镜像文件都存储在宿主机的 /var/lib/docker 目录下搜索镜像从网络中搜索镜像:docker search ...
2019-08-28 17:13:00 102
转载 MySQL之binlog日志
一、什么是binlogbinlog 是一个二进制格式的文件,用于记录用户对数据库 更新的SQL语句 信息,例如更改数据库表和更改内容的SQL语句都会记录到binlog里,但是对库表等内容的查询不会记录。默认情况下,binlog 日志是二进制格式的,不能使用查看文本工具的命令(比如,cat,vi等)查看,而使用mysqlbinlog 解析查看。二、binlog 的作用用于数据库的主...
2019-08-28 17:09:00 157
转载 Redis学习总结(九)-- Redis常用技巧
这里会记录下Redis 常用的小技巧全局使用 redis-cli 等命令在之前我们都在做 Redis 命令目录下通过 ./redis-cli这种形式访问,如果使用 redis-cli 的话就会报命令不识别错误:-bash: redis-cli: command not found设置方法:1) 编辑 /etc/profile 文件[root@VM_0_15_centos ...
2019-08-28 08:51:00 121
转载 Redis学习总结(八)--Redis云平台
在实际生产环境中通过命令行的形式去进行集群的管理是一件很繁琐并且容易出现错误的事情,所以就引入了云平台的概念。什么是云平台Redis 云平台是指通过 BS 等架构实现对 Redis 的管理和监控。本文介绍的云平台是 -- CacheCloud。CacheCloud 简介CacheCloud 提供一个 Redis 云管理平台:实现多种类型 (Redis Standalone、R...
2019-08-27 16:09:00 255
转载 Redis学习总结(七)--Redis集群之客户端访问
我们来试试进行数据的存储127.0.0.1:7000> set name marklogzhuOK127.0.0.1:7000> get name "marklogzhu"127.0.0.1:7000> set name1 java(error) MOVED 12933 127.0.0.1:7002当我们设置 name1 java 竟然报错了,这是什么情况...
2019-08-27 16:07:00 273
转载 Redis学习总结(六)--Redis集群伸缩
我们在上一章讲了如何创建集群,今天我们来实现下集群的伸缩。添加节点操作流程1.启动节点2.将节点加入到集群中3.将数据槽从原来的节点迁移部分到新节点上实践1)准备两个新节点并启动[root@VM_0_15_centos config]# sed 's/7000/7006/g' redis-7000.conf > redis-7006.conf[root@VM_...
2019-08-27 16:06:00 264
转载 Redis学习总结(五)--Redis集群创建
在之前我们讲到了主从,但是对于大数据量的场景下我们就需要用到集群了,让我们来了解下集群吧。为什么需要集群单机内存太小redis最高可以达到10万/s 请求,如果超过该频率呢?数据分布方式数据分布方式有如下两种方式:顺序分布哈希分布分布方式特点顺序分布数据分散度易倾斜可顺序访问键值业务相关支持批量操作哈希分布数值分散度高无法顺序访...
2019-08-27 16:05:00 250
转载 Redis学习总结(四)--Redis主从配置
在分布式系统架构设计中高可用是必须考虑的因素之一。高可用通常是指,通过设计减少系统不能提供服务的时间。而单点是系统高可用的最大的败笔,如果单点出现问题的话,那么整个服务就不能使用了,所以应该尽量在系统设计的过程中避免单点。对于 redis 服务也是这样,今天我们就来实现 Redis 的高可用的基础 --> 主从配置。主从概念有多台 Redis 服务器(至少两台或以上),其中...
2019-08-27 16:01:00 693
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人