自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 软件设计原则及设计模式

一. 软件六大设计原则(SOLID) Single Responsibility Principle:单一职责原则 Open Closed Principle:开闭原则 Liskov Substitution Principle:里氏替换原则 Law of Demeter:迪米特法则 Inter...

2020-06-26 21:28:32 81 0

原创 python设计模式21-策略模式

1. 策略模式(Strategy)介绍 UML类图 角色介绍 封装类:也叫上下文,对策略进行二次封装,目的是避免高层模块对策略的直接调用。 抽象策略:通常情况下为一个接口,当各个实现类中存在着重复的逻辑时,则使用抽象类来封装这部分公共的代码,此时,策略模式看上去更像是模版方法模式。 具体策略:...

2020-06-26 18:14:38 63 0

原创 python设计模式19-观察者模式

1. 观察者模式(Observer)介绍 UML类图 角色介绍 被观察者:从类图中可以看到,类中有一个用来存放观察者对象的Vector容器(之所以使用Vector而不使用List,是因为多线程操作时,Vector在是安全的,而List则是不安全的),这个Vector容器是被观察者类的核心,另外...

2020-06-26 18:09:11 62 0

原创 python设计模式22-模板模式

1. 模板模式(Template)介绍 UML类图 角色介绍 抽象方法:父类中只声明但不加以实现,而是定义好规范,然后由它的子类去实现。 模版方法:由抽象类声明并加以实现。一般来说,模版方法调用抽象方法来完成主要的逻辑功能,并且,模版方法大多会定义为final类型,指明主要的逻辑功能在子类中不...

2020-06-26 16:57:13 64 0

原创 python设计模式20-状态模式

1. 状态模式(State)介绍 UML类图 应用场景 行为状态改变的场景。这点在各种控制器中非常常见,同时,逻辑结构为状态转移图的场景中都非常适用。 优点 状态模式的优点是结构清晰,相比于if…else…简约了不少; 封装性好,外部调用不必知道内部实现细节。 缺点 在状态比较多时,子类也...

2020-06-26 15:00:15 59 0

原创 python设计模式18-备忘录模式

1. 备忘录模式(Memento)介绍 UML类图 角色介绍 发起人:记录当前时刻的内部状态,负责定义哪些属于备份范围的状态,负责创建和恢复备忘录数据。 备忘录:负责存储发起人对象的内部状态,在需要的时候提供发起人需要的内部状态。 管理角色:对备忘录进行管理,保存和提供备忘录。 用途 在不破...

2020-06-26 12:06:50 45 0

原创 python设计模式17-中介者模式

1. 中介者模式(Mediator)介绍 UML类图 角色介绍 抽象中介者:定义好同事类对象到中介者对象的接口,用于各个同事类之间的通信。一般包括一个或几个抽象的事件方法,并由子类去实现。 中介者实现类:从抽象中介者继承而来,实现抽象中介者中定义的事件方法。从一个同事类接收消息,然后通过消息影...

2020-06-26 11:48:14 45 0

原创 python设计模式16-迭代器模式

1. 迭代器模式(Iterator)介绍 UML类图 角色介绍 抽象容器:一般是一个接口,提供一个iterator()方法。 具体容器:就是抽象容器的具体实现类,比如List接口的有序列表实现ArrayList,List接口的链表实现LinkList,Set接口的哈希列表的实现HashSet等...

2020-06-25 22:03:04 51 0

原创 python设计模式15-解释器模式

1. 解释器模式(Interpreter)介绍 UML类图 角色介绍 Context:上下文环境,包含解释器之外的全局信息 Client:客户端,解析表达式,构建语法树,执行具体的解释操作等 AbstractExpression:抽象表达式,声明一个抽象的解释操作弗雷,并定义一个抽象的解释方案...

2020-06-25 21:31:23 88 0

原创 python设计模式12-代理模式

1. 代理模式(Proxy)介绍 UML类图 角色介绍 Subject类,通过接口或抽象类声明真实角色实现的业务方法。 Proxy类,实现抽象角色,是真实角色的代理,通过真实角色的业务逻辑方法来实现抽象方法,并可以附加自己的操作 RealSubject,实现抽象角色,定义真实角色所要实现的业务...

2020-06-25 20:59:51 44 0

原创 python设计模式11-享元模式

1. 享元模式(Flyweight)介绍 UML类图 角色介绍 Flyweight:抽象享元类。 ConcreteFlyweight:具体享元类,实现了Flyweight。指定内部状态。 UnsharedConcreteFlyweight:非享元类。 FlyweightFactory:享元创建...

2020-06-25 16:16:42 53 0

翻译 vSwitch报文转发分析

一、 vSwitch虚拟交换机简介 虚拟交换机(vSwitch)是负责主机上的虚拟机之间以及虚拟机与外部之间流量交换的重要部件。vSwitch主要用于实现本台主机上虚拟机的网络接入,转发效果与传统二层交换机类似。 在虚拟化和云计算环境中,虚拟机在虚拟化平台内部流量的转发无法直观进行监控。维护人...

2020-06-24 10:00:16 88 0

原创 python设计模式10-外观模式

1. 外观模式(Facade)介绍 UML类图 用途 为子系统中的一组接口提供一个一致界面,此模式定义一个高层接口,使得子系统更加容易使用。 优点 实现了子系统与客户端之间的松耦合关系。 客户端屏蔽了子系统组件,减少了客户端所需处理的对象数目,并使得子系统使用起来更加容易。 2. 示例 #!...

2020-06-22 11:53:50 70 0

原创 python设计模式9-装饰器模式

1. 装饰器模式(Decorator)介绍 UML类图 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。 这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提...

2020-06-21 23:13:38 84 0

原创 python设计模式7-桥接模式

1. 桥接模式(Bridge)介绍 UML类图 桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。 这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类。这两种类型的类可...

2020-06-21 17:36:58 76 0

原创 python设计模式6-适配器模式

1. 适配器模式(Adapter)介绍 UML类图 适配器模式(Adapter Pattern):将一个类的接口转换成为客户希望的另外一个接口,Adapter Pattern使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 应用场景 系统数据和行为都正确,但接口不符合时,目的是使控制范...

2020-06-21 16:42:04 75 0

原创 python设计模式1-单例模式

1. 单例模式(Singleton)介绍 UML类图 单例模式的优点 在内存中只有一个对象,节省内存空间。 避免频繁的创建销毁对象,可以提高性能。 避免对共享资源的多重占用。 可以全局访问。 适用场景 由于单例模式的以上优点,所以是编程中用的比较多的一种设计模式。我总结了一下我所知道的适合使...

2020-06-21 15:12:39 70 0

原创 python设计模式5-原型模式

1. 原型模式(Prototype)介绍 UML类图 原型模式主要用于对象的复制,它的核心是就是类图中的原型类Prototype。Prototype类需主要实现clone方法。 原型模式是一种比较简单的模式,也非常容易理解。在实际应用中,原型模式很少单独出现,经常与其他模式混用。 原型模式的优点...

2020-06-21 12:27:57 90 0

原创 python设计模式4-建造者模式

1. 建造者模式(Builder)介绍 UML类图 四个要素 产品类:一般是一个较为复杂的对象,也就是说创建对象的过程比较复杂,一般会有比较多的代码量。在本类图中,产品类是一个具体的类,而非抽象类。实际编程中,产品类可以是由一个抽象类与它的不同实现组成,也可以是由多个抽象类与他们的实现组成。 ...

2020-06-20 22:08:20 96 0

原创 python设计模式2-工厂方法模式

1. 工厂方法模式(FactoryMethod)介绍 UML类图 工厂模式 工厂模式根据抽象程度的不同分为三种:简单工厂模式(也叫静态工厂模式)、本文所讲述的工厂方法模式、以及抽象工厂模式。工厂模式是编程中经常用到的一种模式。它的主要优点有: 可以使代码结构清晰,有效地封装变化。在编程中,产品...

2020-06-20 21:45:49 67 0

原创 python设计模式3-抽象工厂模式

1. 抽象工厂模式(AbstractFactory)介绍 UML类图 抽象工厂模式是工厂方法模式的升级版本,他用来创建一组相关或者相互依赖的对象。他与工厂方法模式的区别就在于,工厂方法模式针对的是一个产品等级结构;而抽象工厂模式则是针对的多个产品等级结构。在编程中,通常一个产品结构,表现为一个接...

2020-06-20 21:23:48 77 0

原创 python设计模式8-组合模式

1. 组合模式(Composite)介绍 UML类图 角色介绍 Component:为组合模式中的对象声明接口,在适当的情况下,实现所有类共有接口的默认行为,声明一个接口用于访问和管理其子组件;在递归结构中定义一个接口,用于访问一个父组件,并在合适的情况下实现。 Leaf:在组合模式中表示叶节...

2020-06-20 18:14:19 75 0

原创 python设计模式13-责任链模式

1. 责任链模式(Chain of Responsibility)介绍 UML类图 定义 使多个对象都有机会处理请求,从而避免了请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。 责任连模式的结构 责任连模式的类图非常简单,它由一个抽象地处理...

2020-06-20 14:32:06 56 0

原创 python设计模式14-命令模式

1. 命令模式(Command)介绍 UML类图 角色介绍 Command类:是一个抽象类,类中对需要执行的命令进行声明,一般来说要对外公布一个execute方法用来执行命令。 ConcreteCommand类:Command类的实现类,对抽象类中声明的方法进行实现。 Client类:最终的客...

2020-06-19 15:48:44 62 0

原创 Markdown绘制UML图

下面介绍一种可以在Markdown中使用的绘制UML工具 —— PlantUML,以及渲染引擎 Gravizo 1. PlantUML简介 可以登陆 PlantUML官网 看一下,里面有支持的UML类型以及使用方法。 点击下载 使用 PlantUML 绘制 UML 语言参考指南 中文版[http:...

2020-06-18 18:25:38 129 0

原创 python设计模式23-访问者模式

访问者模式Visitor Visitor模式是在补修改已有程序结构前提下,通过添加额外的访问者完成对代码功能的拓展。为什么这样用?当你的类层次较多,在某层结构中增加新的方法,要是在基类上面添加或者变更,可能破坏原来的设计,有兼容问题,所以只在需要的类上面动态添加。 这里是个构建车的例子,每个部...

2020-06-16 18:18:56 83 0

原创 GPU直通、GPU共享及GPU虚拟化比较

GPU直通:将GPU设备直通给虚拟机。 PCI直通 硬件直通是指将物理主机的硬件资源直接挂载给虚拟机使用,不需要经过hypervisor的模拟和过滤,虚拟机发的命令直接送到物理设备。GPU直通模式是最早采用也最成熟的方案。三家(Nvidia Tesla,AMD FirePro,Intel Ge...

2020-06-15 10:15:14 1358 0

原创 virtio、vhost和vhost-user比较

1. virtio:针对Linux的I/O的虚拟化框架 在虚机中,可以通过qemu模拟e1000网卡,这样的经典网卡一般各种客户操作系统都会提供inbox驱动,所以从兼容性上来看,使用类似e1000的模拟网卡是非常一个不错的选择。 但是,e1000网卡上也包含了复杂的io端口,寄存器,缓存配置,虚...

2020-06-14 12:40:57 121 0

翻译 glusterfs简介

分布式存储已经研究很多年,但直到近年来,伴随着谷歌、亚马逊和阿里等互联网公司云计算和大数据应用的兴起,它才大规模应用到工程实践中。如谷歌的分布式文件系统GFS、分布式表格系统google Bigtable,亚马逊的对象存储AWS,阿里的TFS等都是很好的代表,同时也催生了一大批优秀的开源分布式存储...

2020-06-14 10:50:40 110 0

原创 centos8搭建glusterfs服务

环境:centos8虚拟机 使用一个虚拟机来模拟两个节点 1. 安装软件包 安装glusterfs源 # yum install centos-release-gluster7 得到/etc/yum.repos.d/CentOS-Gluster-7.repo 重新创建yum源cache ...

2020-06-13 19:41:07 277 0

原创 linux qemu-nbd介绍

1. NBD(Network Block Device)网络块设备介绍 可以将一个远程主机的磁盘空间,当作一个块设备来使用.就像一块硬盘一样使用它,你可以很方便的将另一台服务器的硬盘空间,增加到本地服务器上。NBD与NFS有所不同,NFS只是提供一个挂载点供客户端使用,客户端无法改变这个挂载点的分...

2020-06-13 16:10:19 351 0

翻译 qemu-img创建qcow2虚拟磁盘的预分配策略

1. 简介 本文介绍使用qemu-img创建qcow2格式磁盘文件的预分配(preallocation)策略,及对虚拟磁盘性能的影响。 2. qcow2磁盘及预分配策略介绍 查看qemu-img手册,可以看到关于qcow2格式磁盘文件和预分配策略的简要介绍: qcow2 Q...

2020-06-10 11:00:44 173 0

翻译 Golang中Goroutine与线程

我们在使用Go语言进行开发时,一般会使用goroutine来处理并发任务。那么大家有没有考虑过goroutine的实现机制是什么样的?很多同学会把goroutine与线程等同起来,但是实际上并不是这样的。在这边文章中,我们将介绍以下内容: 什么是goroutine? Goroutine与线程的区...

2020-06-09 11:19:29 67 0

原创 KVM虚拟机PCI设备直通

1. pci passthrough 1.1 概念 guest排他使用host上的某个PCI设备,就像将该设备物理连接到guest上一样 1.2 使用场景 提升性能(如直通网卡和显卡) 减少延迟(避免数据丢失或丢祯) 直接利用bare-metal上设备的驱动 1.3 配置方法 预先配置: a...

2020-06-06 16:27:41 782 0

翻译 QEMU-KVM磁盘在线备份

QEMU/KVM磁盘的在线完整及增量备份,是“打包”方案的一种具体实现,可实现基于时间点的备份,同时支持本地与远程2种备份方式,并可指定备份文件进行恢复。 1. 本文缘由 在虚拟化底层技术中,存储是重中之重,没有人愿意丢数据。因此备份就显得尤为重要 根据备份的实现方案可分为2类: ▷ 副本:可以单...

2020-06-05 14:07:16 176 0

原创 linux开启IOMMU方法

1. 修改/etc/default/grub, 调整GRUB_CMDLINE_LINUX内容 GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet amd_iommu=on iommu=pt" (amd_iommu/intel_...

2020-06-05 11:10:52 3240 0

翻译 qcow2磁盘格式分析

例:一个qcow2文件如下 00000000:5146 49fb0000 00030000 0000 0000 0118QFI............. 00000010:0000 00790000 00100000 0002 8000 0000...y............ ...

2020-06-03 14:56:36 135 0

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