- 博客(19)
- 收藏
- 关注
原创 Python实现设计模式--10.责任链模式(Chain of Responsibility Pattern)
责任链模式比较好理解,这里以域名解析为例说明一下。我们知道域名解析(也即DNS解析)是由近到远逐级进行的,它一般会经过如下几个步骤:查找本地hosts文件,若有,则返回,没有,则下一步 查找本地DNS服务器(路由器),若有,则返回,没有,则下一步 查找区域内的DNS服务器(如深圳),若有,则返回,没有,则下一步 ……就这样一级一级,直到能解析出ip为止。按照这个思路我们去实现它,先...
2018-12-30 23:38:22
410
原创 Python实现设计模式--09.命令模式(Command Pattern)
命令模式是将一次完整的业务处理拆成了提出业务和处理业务两部分,这个模式把提出业务称为发起命令,处理业务称为执行命令。同时,提出业务与处理业务的解耦,暗含着一种异步的思想。“命令”一词,听起来很拽的感觉,调用方(Invoker)只管发起命令(Command),不参与命令如何被执行(Receiver)。既然这么拽,我们就拿皇帝的圣旨来做例子好了。首先,我们看下UML图:等等,这是不是与书上和...
2018-08-13 22:29:06
468
1
原创 Python实现设计模式--08.中介者模式(Mediator Pattern)
中介者模式就像代理模式的高级版,代理模式只代理一方,而中介者代理两方或者更多的角色。场景案例:公司的3个部门:销售、采购、库存相互协作,他们之间有如下约定:销售部门的成绩决定是否要采购库存不足的情况下,销售部门停止销售,采购部门尽快采购库存挤压,通知采购部门停止采购,销售部门打折出售这里看到3者之间都是相互联系的,如果用通常的做法定义3个类,会发现他们之间耦合非常大。读者有
2018-07-13 00:12:52
566
原创 Python实现设计模式--07.原型模式(Prototype Pattern)
原型模式实质上就是复制对象,省去了创建对象、复制属性的过程,从性能方面考虑,复制对象也比创建对象高效。
2017-08-31 00:57:43
664
原创 Python实现设计模式--05.建造者模式(Builder Pattern)
建造者模式是一种创建类的模式,它尽可能的保证代码的复用性,而且可读性也非常好(最终产生的对象对用户是透明的)。
2017-08-03 23:14:15
834
原创 Python实现设计模式--03.抽象工厂模式(Abstract Factory Pattern)
抽象工厂模式和工厂方法模式的区别是,后者一个工厂只生产一种产品,而前者是一个工厂可以生产多个产品。当然,这些产品之间是要有联系的,它们通常是一个整体产品的一部分,由工厂造出后再组装成一个完整的产品。网上经常用造汽车来做例子:车间A生产车身、车间B生产车门、车间C生产轮子,工厂造出它们后,就得到一部完整的汽车了。抽象工厂模式的好处是将产品类拆分为不同的子类,尽量去满足单一职责原则,同时,又将它们
2017-07-31 23:06:10
875
原创 Python实现设计模式--02.工厂模式(Factory Pattern)
《设计模式》涉及到创建类的几种模式,共同的也是最根本的原则就是:不要new 对象!!!既然如此,告诉我你最先想到的是如何得到对象呢?没错,“你不让我new,那你给我个get对象的工具吧,别的我不管”。这就是工厂模式,工厂模式是一种简单又实用的模式,在各大框架到处可见,比如Java世界大名鼎鼎的spring,其本身就是一个大工厂。工厂模式中,工厂的作用是解耦调用者和被调用者的关系,工厂模式又分为工厂方法模式和简单工厂模式。
2017-07-26 00:36:34
6234
1
原创 Python实现设计模式--01.单例模式(Singleton Pattern)
1、基于模块引用(饱汉模式)建立文件Emperor_Singleton.py,内容如下:# 皇帝类class Emperor(object): def say(self): print('我是唯一的皇帝!')emperor = Emperor()测试内容如下:from singleton.Emperor_Singleton import emper
2017-07-19 08:10:26
846
原创 Python实现设计模式之写在前面
岁月无痕,年近中年,时常感到迷茫。生于89年,做it开发已经七八年,却总困惑未来,关于人生、关于羁绊……每每有杂乱思绪,又不曾记录下,哀叹时光流逝,总要留下些什么。
2017-07-18 23:21:41
276
原创 CentOS 安装nexus并设置为系统服务
CentOS 6.x:1、从官网下载最新开源版的压缩包,比如我这里是nexus-2.11.4-01-bundle.tar.gz,保存在 /usr/local/ 目录下2、解压,并且制作软链接:tar zxvf nexus-2.11.4-01-bundle.tar.gzln -s /usr/local/nexus-2.11.4-01 /usr/local/nexus3、
2016-03-15 13:56:53
523
原创 CentOS 设置tomcat为服务
CentOS 6.x:其实tomcat本身提供了通过jsvc(jsvc是啥,我不清楚)调用来作为后台进程的方式,具体如下:1、进入%CATALINA_HOME%/bin目录下,发现有个commons-daemon-native.tar.gz文件,之后执行如下动作:tar zxvf commons-daemon-native.tar.gzcd commons-daemon-1.0.15-nativ...
2016-03-12 15:41:37
949
原创 CentOS 设置redis为服务
首先,如果是yum安装的最省事,已经是服务了。下面说的是自己用源码安装后的:CentOS 6.x:假设编译安装之后的几个执行文件在/usr/local/bin/目录下,redis.conf在/etc/目录下cd /etc/init.d/vi redis输入如下内容:#!/bin/sh# chkconfig: 2345 90 15# description: R
2016-03-12 14:51:08
438
原创 Mac OS X 10.10 配置 nginx + php
我的Mac OS X版本为10.10.3,其他版本未做试验1、安装nginx:brew install nginx2、测试nginx:sudo nginx 然后在浏览器地址栏输入:http://localhost:8080/3、启用php和php-fpmcd /etc/sudo cp p
2016-03-07 16:46:55
423
原创 CentOS 设置防火墙开启端口
CentOS7 默认使用firewalld,我用不习惯,这里要先安装iptables:1、先关闭并禁用firewalldsystemctl stop firewalldsystemctl disable firewalld2、安装iptablesyum -y install iptables比如这里要打开80和9000端口,9000端
2016-02-25 13:47:06
717
原创 CentOS 修改系统时区及同步时间
1、修改时区# 删除当前默认时区rm -rf /etc/localtime# 复制替换默认时区为上海ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime2、时间自动同步和校正# 安装时间同步服务(组件)yum install -y ntp# 设置同步服务器ntpdate us
2016-02-25 10:22:31
420
原创 CentOS 启动服务、开机启动等
chkconfig xxx on--设置开机自启动chkconfig xxx off--取消开机自启动service xxx start --启动服务service xxx stop --关闭服务service xxx restart --重启服务
2016-02-24 16:37:21
293
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人