工厂方法(FactoryMethod)定义一个用于创建对象的接口,让子类决定实例哪一个类。工厂方法使一个类的实例化延迟到其子类。在工厂方法模式中,核心的工厂类不再负责所有产品的创建,而是将具体创建的工作交给子类去做。这个核心工厂则变为抽象工厂角色,仅负责给出工厂子类必须实现的接口,而不接触哪一产品创建的细节。工厂方法模式可以用来允许系统不修改具体工厂角色的情况下引进新产品在工厂方法模式中,一般都有一个平行的等级结构,抽象工厂对应抽象产品,具体工厂对应具体产
系统 2019-08-29 23:25:22 1725
前面两篇文章已经介绍了功能服务器FS与应用服务器AS拆开的原因和它们各自的职责。这篇文章我们主要来看看FS和AS的主体框架是怎样的。首先要说明,无论FS或AS,它们都是一个复杂的系统,特别是AS,它有许多的管理、记录功能,所以单凭这一篇文章是不可能将它们的每一个方面描述清楚的。相反,我在此文中仅仅给出它们的骨架结构,许多细节都将忽略,看过第一篇文章读者可以根据主题目录知道,这些细节会在后面的文章中逐渐补充进来。FS和AS的最大特点就是采用了“框架+插件”的
系统 2019-08-29 22:49:35 1725
当我们进行业务流程分析时,只空对空而不落到纸面上是不可以的。过去,在面向过程的时代,我们绘制DFD图、流程图,以及编写流程说明来描绘这一部分分析;而现在,在面向对象的时代,我们则是绘制行动图、状态图,以及编写用例说明来完成这部分工作。在这部分工作中,编写用例说明应当是最主要的工作,之后在一些关键部分辅之以行动图、状态图。现在我们来看看用例说明应当怎样编写。毫不疑问,做用例分析首先是要绘制出用例图(前面已经说过了)。图形的最大优势是能够形象生动地描述我们的分
系统 2019-08-29 21:59:15 1725
使用了telnetlib模块,首先登录到交换机,列出并获取配置文件的名称,然后通过tftp协议将配置文件传输到文件服务器上,为避免配置文件覆盖,将备份的配置文件名称统一加入日期以作区分。1.登录方式和口令有好几种,比较懒惰,通过不同列表以做区分,如果每个交换机口令都不相同的话,就需要额外处理了。2.交换机的配置文件也有多种类型,也是通过列表进行区分。3.有些交换机支持ftp和sftp,但测试发现有些虽然有相应的客户端命令,但传输总有问题。也不能将每个交换机
系统 2019-09-27 17:57:11 1724
对于普通的生成器,第一个next调用,相当于启动生成器,会从生成器函数的第一行代码开始执行,直到第一次执行完yield语句(第4行)后,跳出生成器函数。然后第二个next调用,进入生成器函数后,从yield语句的下一句语句(第5行)开始执行,然后重新运行到yield语句,执行后,跳出生成器函数,后面再次调用next,依次类推。下面是一个列子:defconsumer():r='here'foriinxrange(3):yieldrr='200OK'+str(
系统 2019-09-27 17:55:41 1724
Zabbix没有报表导出的功能,于是通过编写脚本导出zabbix数据并发邮件。效果如下:下面是脚本,可根据自己的具体情况修改:#!/usr/bin/python``#coding:utf-8``importMySQLdb``importtime,datetime``importxlsxwriter``importsmtplib``from``email.mime.textimportMIMEText``from``email.mime.multiparti
系统 2019-09-27 17:55:05 1724
概述Python3对函数参数的排序规则更加通用化了,即Python3keyword-only参数,该参数即为必须只按照关键字传递而不会有一个位置参数来填充的参数。该规则在处理人一多个参数是很有用的。keyword-onlykword_only(1,2,3,c=4)print('-'*20)kword_only(a=1,c=3)示例结果:1(2,3)4--------------------1()3在*args之后的参数都需要在调用中使用关键字的方式传递,否
系统 2019-09-27 17:54:57 1724
之前想爬取一些淘宝的数据,后来发现需要登录,找了很多的资料,有个使用request的sessions加上cookie来登录的,cookie的获取在登录后使用开发者工具可以找到。不过这个登录后获得的网页的代码是静态的,获取动态网页还得另寻他法,一般需要的数据可以在网页的源码中得到,但是你知道的,有些动态加载的就不是那么简单了,而且我发现这样获得的源码中,有些想要获取的数据的格式是经过改动的,比如我要某个商品的具体链接,发现并不能直接使用。总体而言,这是一次失
系统 2019-09-27 17:54:47 1724
作者:HelloGitHub-ProdesireHelloGitHub的《讲解开源项目》系列,项目地址:https://github.com/HelloGitHub-Team/Article一、nosenose是一个第三方单元测试框架,它完全兼容unittest,并且号称是一个更好用的测试框架。那么nose除了具备unittest的所有功能外,还具有哪些优势呢?1.1用例编写用例的编写方式除了编写继承于unittest.TestCase的测试类外,还可以编
系统 2019-09-27 17:54:38 1724
一、读取用户指令当你的程序要接收用户输入的指令时,可以用input函数:name=input("请输入你的名字:")print("Hi"+name)程序中只要有input函数就会等待用户输入完并按回车键之后才会继续往下执行代码注:input()函数接收得到的值只是字符串,即使你输入的是数字或者其他数据类型的值,它也会把数字按照字符串处理,即接收得到值只会字符串。二、格式化打印假设现在需要打印出以下格式的内容,该怎么实现呢?------------Infom
系统 2019-09-27 17:54:32 1724