自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 python协程 & asyncio & 异步编程(一) 协程

一、引入协程不是计算机提供,程序员人为创造协程,也可以被称为微线程,是一种用户态的上下文切换技术,简而言之,其实就是通过一个线程实现代码块相互切换执行实现协程有几种方法:1、greenlet,早期模块(了解即可)2、yield 关键字 (了解即可)3、asyncio 标准库 装饰器 (python3.4+引入)4、async、await关键字 (python3.5+推荐)1.1 asyncio在python3.4及之后的版本import asyncio@asyncio.cor

2021-08-27 15:18:14 177

原创 设计模式(十五)模板方法模式

一、定义定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤二、角色1.抽象类:定义抽象的原子操作(钩子操作);实现一个模板方法作为算法的骨架2.具体类:实现原子操作三、适用场景1.一次性实现一个算法的不变的部分2.各个子类中的公共行为应该被 提取出来并集中到一个公共父类中以避免代码重复3.控制子类扩展四、示例from abc import ABCMeta, abstractmethodimport time

2021-08-20 15:53:21 73

原创 设计模式(十四)策略模式

一、定义定义一系列的算法,把它们一个个封闭起来,并且使它们可相互替换。本模式使得算法可以独立于使用它的客户而变化二、角色1.抽象策略2.具体策略3.上下文三、优缺点1.定义了一系列可用重用的算法和行为2.消除了一些条件语句3.可以提供相同行为的不同实现4.客户端必须了解不同的策略四、示例from abc import ABCMeta, abstractmethod# 抽象策略class Strategy(metaclass=ABCMeta): @abstractmeth

2021-08-20 15:41:36 83

原创 设计模式(十三)观察者模式

一、定义定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。观察者模式又称发布-订阅模式二、角色1.抽象主题(Subject)2.具体主题(ConcreteSubject) – 发布者3.抽象观察者(Observer)4.具体观察者(ConcreteObserver) – 订阅者三、适用场景1.当一个抽象模型有两方面,其中一个方面依赖于另一个方面。将这两者封装在独立对象中以使它们可以各自独立地改变和复用2.当对一个对象的改变需要同时

2021-08-19 09:37:42 63

原创 设计模式(十二)责任链模式

一、定义使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合将这些对象连成一条链,并沿着这条链传递这个请求,直到有一个对象处理它为止。二、角色1.抽象处理者(Handler)2.具体处理者(ConcreteHandler)3.客户端(Client)三、优点1.降低耦合度:一个对象无需知道是其他哪一个对象处理其请求四、场景1.有多个对象可以处理一个请求,哪个对象处理由运行时决定2.在不明确接收者的情况下,向多个对象中的一个提交一个请求五、示例from abc import

2021-08-19 09:05:42 60

原创 设计模式(十一)代理模式

一、定义为其他对象提供一种代理以控制对这个对象的访问二、角色1.抽象实体(Subject)2.实体(RealSubject)3.代理(Proxy)三、优点1.远程代理:可以隐藏对象位于远程地址空间的事实2.虚代理:可以进行优化,例如根据要求创建对象3.保护代理:允许在访问一个对象时有一些附加的内务处理四、示例from abc import ABCMeta, abstractmethodclass Subject(metaclass=ABCMeta): @abstractm

2021-08-19 08:44:06 57

原创 设计模式(十)外观模式

一、定义为子系统中的一组接口摘借 一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用二、角色1.外观(facade)2.子系统类(subsystem classes)三、优点1.减少系统相互依赖2.提高了灵活性3.提高了安全性四、示例class CPU: def run(self): print("cpu start") def stop(self): print("cpu 停止运行")class Di

2021-08-19 08:01:58 50

原创 设计模式(九)组合模式

一、定义将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性二、角色1.抽象组件 (Component)2.叶子组件 (Leaf)3.复合组件 (Composite)4.客户端 (Client)三、适用场景1.表示对象的"部分-整体"层次结构(特别是结构是递归的)2.希望用户忽略组合对象与单个对象的不同,用户统一地使用组合结构中的所有对象四、优点1.定义了包含基本对象和组合对象的类层次结构2.简化客户端代码,即客户端可以一致地使用组

2021-08-18 09:38:15 51

原创 设计模式(八)桥模式

一、定义将一个事物的两个维度分离,使其都可以独立的变化。二、角色1.抽象 (abstraction)2.细化抽象 (refined abstraction)3.实现者 (abstraction)4.具体实现者 (abstraction)三、应用场景当事物有两个维度上的表现,两个维度都可能扩展时四、优点1.抽象和实现相分离2.优秀的扩展能力五、示例"""时间:作者: Shang ping jian更改记录:重要说明:"""from abc import ABCMe

2021-08-18 08:59:49 63

原创 设计模式(七)适配器模式

一、定义将一个类的接口转换成客户希望的另一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。二、两种实现方式:1.类适配器:使用多继承示例:# A系统支付用pay方法class Alipay(object): def pay(self, money): print('alipay Payment: %d' % money)# B系统支付用cost方法class BankPay(object): def cost(self, mo

2021-08-18 08:27:52 76

原创 设计模式(六)单例模式

一、定义保证一个类只有一个实例,并提供一个访问它的全局访问点优点1.对唯一实例的受控访问2.单例相当于全局变量,但防止了命名空间被污染三、示例"""时间:作者: Shang ping jian更改记录:重要说明:"""class Singleton(object): def __new__(cls, *args, **kwargs): if not hasattr(cls, "_instance"): cls._instan

2021-08-18 08:04:35 54

原创 设计模式(五)建造者模式

一、定义将一个复杂对象的构建与它的表示分享,使得同样的构建过程可以创建不同的表示内容:建造者模式与抽象工厂模式相似,也用来创建复杂对象。主要区别是建造者模式着重一步步构造一个复杂对象,而抽象工厂模式着重于多个系列的产品对象二、优点1.隐藏了一个产品的内部结构和装配过程2.将构造代码与表示代码分开3.可以对构造过程进行更精细的控制三、角色1.抽象建造者(Builder)2.具体建造者(Concrete Builder)3.指挥者(Director)4.产品(Product)四、示例

2021-08-18 07:49:56 57

原创 设计模式(四)抽象工厂模式

一、定义:定义一个工厂类接口,让工厂子类来创建一系列相关或相互依赖的对象例:生产一部手机,需要手机壳、CPU、操作系统三类对象进行组装,其中每类对象都有不同的种类。对每个具体工厂,分别生产一部手机所需要的三个对象。相比工厂方法械,抽象工厂模式中的每个具体工厂都生产一套产品二、角色:1、抽象工厂角色2、具体工厂角色3、抽象产品角色4、具体产品角色5、客户端三、示例:...

2021-08-13 09:08:04 43

原创 设计模式(三)工厂方法模式

一、定义:定义一个用于创建对象的接口(工厂接口),让子类决定实例化哪个产品类二、角色:1、抽象工厂角色2、具体工厂角色3、抽象产品角色4、具体产品角色三、示例:from abc import ABCMeta, abstractmethodclass Payment(metaclass=ABCMeta): @abstractmethod def pay(self, money): passclass Alipay(Payment): de

2021-08-13 08:38:35 46

原创 设计模式(二) 简单工厂模式

一、定义:不直接向客户端暴露对象创建的实现细节,而是通过一个工厂类来负责创建产品类的实例二、角色:1、工厂角色2、抽象产品角色3、具体产品角色三、例:from abc import ABCMeta, abstractmethod# 抽象产品角色class Payment(metaclass=ABCMeta): @abstractmethod def pay(self, money): pass# 具体产品角色class Alipay(Payment

2021-08-13 08:23:39 48

原创 设计模式(一) 面向对象

一、抽象类(接口)抽象类的子类必须实现父类的所有抽象方法from abc import ABCMeta, abstractmethod# 抽象类、抽象方法、必须实现class Payment(metaclass=ABCMeta): @abstractmethod def pay(self, money): passclass Alipay(Payment): def pay(self, money): print('alipay Pa

2021-08-13 08:04:53 76

原创 Postgresql数据库整库备份和恢复

Postgresql数据库导出、导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:全新的界面设计 ,将会带来全新的写作体验;在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选

2021-08-12 17:51:26 233

空空如也

空空如也

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

TA关注的人

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