自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 设计模式go语言实现----职责链模式ChainOfResponsibility

1 定义职责链模式(Chain Of Responsibility):使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。现实生活中有很多类似职责链模式的例子,比如我们在公司请假需要填写电子流给各个领导审批,如果请假时长比较短的时候,你的直属领导就有权力决定是否同意你请假,但是如果时间比较长的话,那...

2018-12-06 21:54:09 1333

原创 设计模式go语言实现----组合模式Composite

1 定义组合模式(Composite):将对象组合成树形结构以以表示‘部分-整体’的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。UML类图:组合模式包含三个角色:Component:是组合中的对象声明接口,在适当的情况下,实现所有类共有接口的默认行为。声明一个接口用于访问和管理ComponentLeaf:在组合中表示叶子节点对象,叶子节点没有子节点Compo...

2018-12-02 18:00:54 778

原创 设计模式go语言实现----备忘录模式Memento

1 定义备忘录(Memento):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原先保存的状态UML类图:备忘录模式包含三个角色:Originator(发起人):负责创建一个备忘录Memento,用以记录当前时刻它的内部状态,并可以使用备忘录恢复内部状态。Originator可根据需要决定Memento存储Originato...

2018-11-25 22:31:32 375

原创 设计模式go语言实现----模板方法模式TemplateMethod

1 定义模板方法模式,定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤特点:通过把不变行为搬移到超类,去除子类中的重复代码,提供了一个很好的代码复用平台UML类图:2 go语言实现2.1 实现超类Person以及一个IPerson接口type IPerson interface { SetName...

2018-11-25 11:46:03 989

原创 设计模式go语言实现----原型模式Prototype

1 定义原型模式(Prototype),用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象UML类图:原型模式包含以下三个角色:Prototype(抽象原型类):它是声明克隆方法的接口,是所有具体原型类的公共父类,可以是抽象类也可以是接口,甚至还可以是具体实现类。ConcretePrototype(具体原型类):它实现在抽象原型类中声明的克隆方法,在克隆方法中返回自己...

2018-11-11 21:54:51 646

原创 设计模式go语言实现----策略模式Strategy

1 定义策略模式(Strategy):它定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响道使用算法的客户。模式动机:为了解决在有多种算法相似的情况下,使用if…else所带来的复杂和难以维护性,这样定义一系列的算法,把它们一个个封装起来,并且使它们相互替换。策略模式包含以下几个角色:Context(环境类):负责使用算法策略,其中维持了一个抽象策略...

2018-11-10 12:02:01 370

原创 设计模式go语言实现----状态模式State

1 定义状态模式(State): 当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类模式动机:当控制一个对象状态转换的条件表达式过于复杂时,将状态的判断逻辑转移道表示不同状态的一系列类当中,可以把复杂的判断逻辑简化。UML类图:状态模式包含如下几个角色:Context(环境类):维护一个ConcreteState子类的实例,这个实例定义当前的状态State...

2018-11-04 08:31:23 1750

原创 设计模式go语言实现----观察者模式Observer

1 定义观察者模式(Observer):定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个柱体对象,这个柱体对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己UML类图:...

2018-11-03 16:28:01 697

原创 设计模式go语言实现----中介者模式mediator

1 定义中介者模式(Mediator): 用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间地交互模式动机:对于一个模块,可能由很多对象构成,而且这些对象之间可能存在相互的引用,为了减少对象两两之间复杂的引用关系,使之称为一个松耦合的系统,这就是中介者模式的模式动机UML类图:中介者模式包含以下四个角色:Med...

2018-11-03 13:55:40 787

原创 设计模式go语言实现----命令模式command

1 定义命令模式(Command),将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作模式动机:命令模式可以将发送者和接收者完全解耦,发送者与接收者之间没有直接引用关系,发送请求的对象只需要知道如何发送请求,而不必知道如何完成请求。UML类图:命令模式包含以下四个角色:Receiver(接收者): 接收者执行与请求相...

2018-11-03 11:31:42 851

原创 设计模式go语言实现----代理模式proxy

1 定义代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的访问UML类图:代理模式主要包含以下三个角色:Subject(抽象主题角色):定义了Proxy和RealSubject的共用接口,这样就在任何使用RealSubject的地方都可以使用ProxyRealSubject(真实主题角色):定义了Proxy所代表的真实实体Proxy(代理主题角色):保存一个Sub...

2018-11-01 23:05:48 661

原创 设计模式go语言实现----享元模式flyweight

1 定义享元模式(Flyweight),运用共享技术有效地支持大量细粒度对象。系统只使用少量对象,而这些对象都很相似,状态变化很小,可以实现对象地多次复用。由于享元模式要求能够共享地对象必须是细粒度对象,因此又称为轻量级模式,是一种结构型模式定义如果不是很好理解地话,读者可以对照下面围棋地例子细细品味:围棋棋盘中包含大量的黑子和白子,它们形状、大小都一模一样,只是出现的位置不同而已。U...

2018-11-01 22:24:45 434

原创 设计模式go语言实现----外观模式facade

1 概念外观模式(facade):为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。如果定义不是很理解的话,读者可以对照下面电脑的例子认真思考一下:电脑整机时CPU、内存、硬盘等的外观,有了这个外观之后,启动电脑和关闭电脑都简化了。UML类图:外观模式主要包含两个角色:Facade(外观角色): 在客户端可以调用这个角色的方法...

2018-11-01 20:44:28 489

原创 设计模式go语言实现----装饰模式decorator

我们每天早上起来都需要穿衣服,我们穿衣服的过程就是装饰自己的过程,而且我们可能每次穿衣服的顺序也不一样,比如有一天张三起床,他首先穿上红内裤,然后再穿上花裤衩,然后再穿上大码衬衫,然后穿上西装,然后就出门了;又有一天张三起床,首先穿上西裤,然后穿上红内裤,然后穿上花短袖,然后穿上棉服就出门了。在这个过程中,我们发现张三穿衣服的顺序以及衣服款式都是不固定的,非常灵活,想穿什么穿什么。既然穿衣可以这...

2018-10-31 08:08:07 1451

原创 设计模式go语言实现----桥接模式bridge

在现实生活中,我们画画的时候常常会用到两种或多种类型的笔,比如毛笔和蜡笔。假设我们需要大、中、小三种类型的画笔来绘制12种不同的颜色,如果我们使用蜡笔,那么我们需要准备3*12=36支蜡笔;但是如果我们使用毛笔的话,只需要3种型号的毛笔,外加12个颜料盒即可,涉及的对象个数仅为3+12=15。如果新增一种画笔,并且同样需要12种颜色,那么蜡笔需要增加12支,而毛笔却只需要新增1支。我们来分析一下...

2018-10-28 13:58:14 900

原创 设计模式go语言实现----适配器模式Adapter

在现实生活中,我们的笔记本电脑的工作电压大多数都是20V,而我国的家庭用电是220V,如何让20V的笔记本电脑能够工作在220V的电压下工作?答案:引入一个电源适配器,俗称变压器,有了这个电源适配器,生活用电和笔记本电脑即可兼容。软件开发的过程中,有时候也会存在这种不兼容的情况,我们也可以像引入一个称之为适配器的角色来协调这些存在不兼容的结构,即我们下面要讲的设配器模式。1 定义适配器(A...

2018-10-27 19:03:04 889

原创 设计模式go语言实现----构建者模式Builder

1 概念构建者模式定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示构建者模式包含如下角色:Product:具体产品ConcreteBuilder:具体建造者Builder:抽象建造者Director:指挥者读者可以对比以下构建者类图理解各种角色的作用2 go语言实现2.1 定义产品角色type BMWCar struct { Bran...

2018-10-27 12:21:07 448

原创 设计模式go语言实现----单例模式Singleton

1 单例模式定义保证一个类仅有一个实例,并提供一个访问它的全局访问点使用单例模式需要注意三个要点:某个类只能有一个实例这个类必须自行创建这个实例这个类必须自行向整个系统提供这个实例单例模式写法:饿汉式:类在*编译时*创建自己的实例懒汉式:类在*运行时*创建自己的实例依据以上,读者可以自行辨别下面的代码属于哪种写法2 单例模式的gol语言实现2.1 不考虑并发情况...

2018-10-25 21:00:47 408

原创 设计模式go语言实现----三类工厂模式Factory

本文主要讲解设计模式中的三类工厂模式:简单工厂模式(Simple Factory Pattern)工厂方法模式(Factory Method Pattern)抽象工厂模式(Abstract Factory Pattern)1 简单工厂模式图例分析:考虑一个简单的应用场景,这个应用场景可以提供很多形状(比如图中的Circle、Square、Rectangle),它们都源于一个Sha...

2018-10-22 21:59:07 641

原创 Kubernetes之scheduler调度

一、简介scheduler是kubernetes的调度器,主要任务是把定义的pod分配到集群的节点上,其在调度时需要考虑一下问题:公平:如何保证每个节点都能被分配资源资源高效利用:集群所有资源最大化被使用效率:调度的性能要好,能够尽快的对大批量的pod完成调度工作灵活:允许用户根据自己的需求控制调度的逻辑kubernetes调度流程如下图:二、调度策略scheduler调度分...

2018-10-10 23:19:46 942

原创 Kubernetes之集群网络

一、Docker网络基础在讨论Kubernetes网络之前,我们先看一下Docker网络。下图展示了Docker网络在整个Docker生态技术栈中的位置:docker容器网络模型CNM(Container Network Model):Network Sandbox:一个容器内部的网络栈(管理容器的网卡、路由表以及DNS设置等)。Endpoint:一个endpoint将San...

2018-10-08 21:54:19 496

原创 Kubernetes之存储卷Volume

目前有两个问题摆在大家面前:第一、由于容器本身是非持久化的,当容器崩溃后,kubelet将以镜像的初始状态重新启动容器,但是此时之前容器的数据已经丢失,我们该如何保护好容器的数据呢?第二、在同一Pod中的容器往往需要共享一些文件,此时我们又该如何实现呢?...

2018-10-05 15:21:12 2050

原创 Kubernetes之服务发现ingress & ingress controller

Service虽然解决了服务发现和负载均衡的问题,但它在使用上还是有一些限制:只支持4层负载均衡,没有7层功能对外访问时,NodePort类型需要在外部搭建额外的负载均衡,而LoadBalancer要求kubernetes必须跑在支持的cloud provider上一、ingress引入历程我们已经了解到Kubernetes暴露服务的方式目前只有三种:LoadBalancer Serv...

2018-10-04 21:21:36 13950 6

原创 Kubernetes之服务发现Service

一、service的概念在Kubernetes中,Pod是有生命周期的,当Pod的生命周期结束之后,Pod会被重新分配IP。这样就会导致一个问题:在Kubernetes集群中,如果一组Pod(称为backend)为其他Pod(称为frontend)提供服务,那么那些frontend该如何发现并连接到作为backend的Pod呢?Kubernetes中service是一组提供相同功能的Pods的...

2018-10-04 14:20:03 5584

原创 Kubernetes之Pod

Pod是Kubernetes对象模型中能够创建或部署的最小并且是最简单的基本单元。一个Pod代表在集群中正在运行的一个进程。Pod由一个或多个容器组成,它们共享容器存储、网络和容器运行配置项。Pod中的容器总是被同时调度,由共同的运行环境。一、通过yaml文件定义PodPod分类:自主式Pod:需要自己手动管理的Pod受控制器管理的PodPod资源清单格式:apiVersio...

2018-10-03 00:28:17 1078

原创 Kubernetes应用快速入门

一、创建pod1. kuberctl run命令[root@master manifests]# kubectl run --helpCreate and run a particular image, possibly replicated. Creates a deployment or job to manage the created container(s)...........

2018-10-01 23:29:25 1073

原创 kubernetes架构

Kubernetes最初源于谷歌内部的Borg,提供了面向应用的容器集群部署和管理系统。Kubernetes的目标旨在消除编排物理/虚拟计算,网络和存储基础设施的负担,并使应用程序运营商和开发人员完全将重点放在以容器为中心的原语上进行自助运营。Kubernetes 也提供稳定、兼容的基础(平台),用于构建定制化的workflows 和更高级的自动化任务。 Kubernetes 具备完善的集群管理...

2018-09-28 23:25:53 697

原创 centos7部署kubernetes集群之kubeadm

本文用kubeadm的方式部署kubernetes集群,架构图如下:此方式将kubernetes的主要组件kube-apiserver + kube-scheduler + kube-controller-manager + etcd + flannel + kube-proxy以pod形式运行,并且各个节点包括master节点上运行kubelet和docker守护进程,并且确保kubelet...

2018-09-20 00:06:00 4102

原创 Centos 7.0如何卸载docker

Centos 7.0如何卸载docker1.搜索已经安装的docker 安装包2.删除安装包3.删除docker目录1.搜索已经安装的docker 安装包[root@node2 ~]# yum list installed | grep docker2.删除安装包[root@node2 ~]# yum remove docker-ce.x86_643.删除docker目录[root...

2018-09-17 21:36:02 487

原创 如何修改linux的hostname

hostname是什么 故名思议,hostname就是linux的主机名无论在局域网还是公网上,每台主机都有一个IP地址,IP地址就是主机的门牌号。但是IP地址不方便记忆,所以有了域名。而域名只是在公网中存在,每个域名都对应一个IP地址,但一个IP地址可有对应多个域名。同样,在局域网中,每台机器都有一个主机名,用于相互之间互相访问。主机名就相当于公网上的域名如何修改h...

2018-09-08 00:30:18 3764

空空如也

空空如也

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

TA关注的人

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