在之前,我分享过unittest系列,后来有很多人问我,能不能出pytest的教程,正好最近在整理pytest相关的资料,那么,就趁着这个机会,去和大家分享一下pytest系列。 pytest是一个非常成熟的全功能的Python测试框架。那么他有什么优点呢。pytest优点入门简单,文档丰富支持单元测试,功能测试支持参数化,重复执行,部分执行,测试跳过兼容其他测试框架(nose,unittest等)支持生成html报告可集成CI环境(Jenkins等)第三方插件丰富,良好的自定义扩展性 那么我们对比下它与unittest。(1)unittest测试文件必须先importunittest测试
在之前,我分享过unittest系列,后来有很多人问我,能不能出pytest的教程,正好最近在整理pytest相关的资料,那么,就趁着这个机会,去和大家分享一下pytest系列。 pytest是一个非常成熟的全功能的Python测试框架。那么他有什么优点呢。pytest优点入门简单,文档丰富支持单元测试,功能测试支持参数化,重复执行,部分执行,测试跳过兼容其他测试框架(nose,unittest等)支持生成html报告可集成CI环境(Jenkins等)第三方插件丰富,良好的自定义扩展性 那么我们对比下它与unittest。(1)unittest测试文件必须先importunittest测试
初识MapReduce一、什么是MapReduceMapReduce是一种编程范式,它借助Map将一个大任务分解成多个小任务,再借助Reduce归并Map的结果。MapReduce虽然原理很简单,但是使用MapReduce设计出一个解决问题的应用却不是一件简单的事情。下面通过一个简单的小例子来介绍MapReduce。二、使用MapReduce寻找销售人员业绩最大值《Hadoop权威指南》的例子是寻找天气最大值,需要去下载数据。但是我们并不需要完全复刻他的场景,所以这里用了另外一个例子。假设有一批销售日志数据文件,它的一部分是这样的。66$2021-01-01$555567$2021-01-01
初识MapReduce一、什么是MapReduceMapReduce是一种编程范式,它借助Map将一个大任务分解成多个小任务,再借助Reduce归并Map的结果。MapReduce虽然原理很简单,但是使用MapReduce设计出一个解决问题的应用却不是一件简单的事情。下面通过一个简单的小例子来介绍MapReduce。二、使用MapReduce寻找销售人员业绩最大值《Hadoop权威指南》的例子是寻找天气最大值,需要去下载数据。但是我们并不需要完全复刻他的场景,所以这里用了另外一个例子。假设有一批销售日志数据文件,它的一部分是这样的。66$2021-01-01$555567$2021-01-01
简介中介设计模式(MediatorDesignPattern)定义了一个单独的(中介)对象,来封装一组对象之间的交互。如果对象之间存在大量的相互关联和调用,若有一个对象发生变化,则需要跟踪和该对象的其他所有对象,并进行适当处理。而中介模式将这些对象之间的交互委派给中介对象交互,来避免对象之间直接交互,使其耦合松散。典型实现首先,定义一个抽象中介者接口,该接口用于与各对象之间进行通信。其代码示例如下:publicabstractclassMediator{//维持所有同事对象的引用protectedArrayListcolleagues;//注册方法,用于增加同事对象publicvoidregi
简介备忘录设计模式(MementoDesignPattern)也叫作快照(Snapshot)模式,主要用于实现防丢失、撤销、恢复等功能。其定义是,在不违背封装原则的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便之后恢复对象先前的状态。典型实现首先,定义一个备忘录Memento类存储状态,其代码示例如下:publicclassMemento{privateStringstate;publicMemento(Originatoro){this.state=o.getState();}publicvoidsetState(StringState){this.state=state;
简介在模板方法设计模式(TemplateMethodDesignPattern)中比较重要的两个概念是基本方法和模板方法。实现具体逻辑步骤的方法可以称之为基本方法,而把基本方法汇总起来形成一个总算法或总行为的方法称之为模板方法。基本方法包括以下几种类型:具体方法:在抽象类中声明,由具体子类实现抽象方法:在抽象类中已经实现,在具体子类中可以继承或重写钩子方法:在抽象类中已经实现,包括用于判断的逻辑方法和需要子类重写的空方法两种典型实现在模板方法模式中,最重要的就是定义好一个抽象类,并在其中归纳总结出一个模板方法。一般而言,其代码结构示例如下:publicabstractclassAbstract
简介迭代器设计模式(IteratorDesignPattern),也叫作游标设计模式(CursorDesignPattern)。迭代器模式将集合对象的遍历操作从集合类中拆分出来,放到迭代器类中,让两者的职责更加单一。其定义是,提供一种方法来访问聚合对象,而不暴露这个对象的内部实现。典型实现首先,定义一个用于遍历聚合对象中所存储元素的抽象迭代器接口,其代码示例如下:publicinterfaceIterator{//将游标指向第一个元素publicvoidfirst();//将游标指向下一个元素publicvoidnext();//判断是否存在下一个元素publicbooleanhasNext(
简介古代的活字印刷术就有点像享元模式,活字印刷就是将每个字模做出来,再印刷时再选取需要的字模到印刷板上,这样就构成了一页书的印刷板。这样的活字印刷大大提升了效率,减少了印刷板的空间。在享元模式中,存储共享实例对象的地方称为享元池(FlyweightPool)。类比到上述的活字印刷术中,放置字模的地方就是享元池。享元模式能做到共享的关键是区分了内部状态和外部状态,它们的简单释义是:内部状态:存储在享元对象内部且不跟随环境变化而改变的状态,内部状态可以在对象之间共享外部状态:通常由客户端保存,当需要时再传入享元对象中的状态,会跟随环境变化而改变,不可以在对象之间共享。典型示例一个典型的享元工厂类的
简介中介设计模式(MediatorDesignPattern)定义了一个单独的(中介)对象,来封装一组对象之间的交互。如果对象之间存在大量的相互关联和调用,若有一个对象发生变化,则需要跟踪和该对象的其他所有对象,并进行适当处理。而中介模式将这些对象之间的交互委派给中介对象交互,来避免对象之间直接交互,使其耦合松散。典型实现首先,定义一个抽象中介者接口,该接口用于与各对象之间进行通信。其代码示例如下:publicabstractclassMediator{//维持所有同事对象的引用protectedArrayListcolleagues;//注册方法,用于增加同事对象publicvoidregi