2021年1月30日
摘要: 这篇文章非常生动的解释了一个原则:SRP单一自责原则。SRP是SOLID五大设计原则中最容易被误解的一个。也许是名字的原因,很多程序员根据SRP这个名字想当然地认为这个原则就是指:每个模块都应该只做一件事。我们在将大型函数重构成小函数时经常会用到这个原则,但这只是一个面向底层实现细节的设计原则,并不 阅读全文
posted @ 2021-01-30 18:34 Wu_Candy 阅读(87) 评论(0) 推荐(0) 编辑
摘要: 装饰器是什么 Python 装饰器(fuctional decorators)是用于拓展原来函数功能的一种函数,目的是在不改变原函数名(或类名)的情况下,给函数增加新的功能。 这个函数的特殊之处在于它的返回值也是一个函数,这个函数是内嵌"原"函数的函数。 装饰器其实就是一个闭包函数,它是有两层的函数 阅读全文
posted @ 2021-01-30 18:32 Wu_Candy 阅读(113) 评论(0) 推荐(0) 编辑
摘要: 引言 前面已经和大家介绍过 Unittest 测试框架的数据驱动框架 DDT,以及其实现原理。今天和大家分享的是 Pytest 测试框架的数据驱动,Pytest 测试框架的数据驱动是由 pytest 自带的pytest.mark.parametrize()来实现的。 pytest.mark.para 阅读全文
posted @ 2021-01-30 18:30 Wu_Candy 阅读(3062) 评论(0) 推荐(0) 编辑
摘要: 今天给大家分享的是字符串相关的算法面试题。现在进大厂,都会有算法面试题,不过因为算法和数据结构是有一定门槛的,所以想迈过这个门槛,慢慢积累然后反复看是一个可行的策略。 这个问题是Leetcode上的第151 道题:翻转字符串里的单词 这道题目的解题思路: 清除字符串中无用的空格, 【将 " are 阅读全文
posted @ 2021-01-30 18:19 Wu_Candy 阅读(225) 评论(0) 推荐(0) 编辑
摘要: 引言 前面的文章介绍了如何在 Python 的 Unittest 框架中来使用 ddt 实现数据驱动的自动化测试。 在了解了 ddt 的使用后,你是否有过如下疑问: ddt 是如何把你的测试数据转换传给你的测试用例? 当你的一组数据有多个参数时,ddt 是如何 unpack 的? 当你有多组数据时, 阅读全文
posted @ 2021-01-30 18:14 Wu_Candy 阅读(892) 评论(1) 推荐(0) 编辑
摘要: 上一节主要介绍了 Quick Find 的思想和代码实现,本节要介绍的是 Quick Union的实现和代码实现。 Quick Union - Union Quick Union的union(v1, v2):让 v1 的根节点指向 v2 的根节点 public void union(int v1, 阅读全文
posted @ 2021-01-30 18:08 Wu_Candy 阅读(68) 评论(0) 推荐(0) 编辑
摘要: 引言 打个还算比较形象的比喻吧,我们把门面比作建筑工地上的建筑物的表面,可以是贴有横幅,如:XXXX铁路工程局,这种比较醒目的一面,能更吸引人注意力,当人们从建筑物旁边经过时,可以看到其外部的面貌,此时并不了解其本身结构的复杂性。 在程序里门面在隐藏内部复杂性的同时,也为外部客户端提供了一个可以轻松 阅读全文
posted @ 2021-01-30 17:58 Wu_Candy 阅读(77) 评论(0) 推荐(0) 编辑
摘要: 引言 你是否有过这种感受,在做自动化测试过程中,不论是API 自动化测试还是UI 自动化测试,我们写测试脚本有很大一部分时间都是在准备数据(setUp)、清理数据(tearDown)。因为数据是做自动化测试的至关重要的一个环节。如此看来数据驱动真的十分重要。接下来分享的内容是:Unittest测试框 阅读全文
posted @ 2021-01-30 17:54 Wu_Candy 阅读(907) 评论(0) 推荐(0) 编辑
摘要: 今天主要介绍的是并查集这种数据结构。其本质上是解决某一些特定问题的而设计出的数据结构。大家可以了解下这种数据结构,作为自己知识的储备。 通过一个实际的问题引出并查集 假设有 n 个村庄,有些村庄之间有连接的路,有些村庄之间并没有连接的路 设计一个数据结构,能够快速执行 2 个操作: 查询 2 个村庄 阅读全文
posted @ 2021-01-30 17:43 Wu_Candy 阅读(48) 评论(0) 推荐(0) 编辑
摘要: PageObject 是什么? 对页面对象进行抽象处理,(页面对象包含:页面元素、button点击、文本框输入、选项框选择等等)。使代码能在页面元素发生改变后,尽量减少测试脚本的改动量,最大程度支持代码的可重复性使用,同时使得测试框架结构合理、清晰、代码更加模块化,避免冗余、藕合性过高。 PageO 阅读全文
posted @ 2021-01-30 17:37 Wu_Candy 阅读(676) 评论(0) 推荐(0) 编辑
摘要: 从一个题目说起 题目:读入一个文本文件,确定所有单词的使用频率并从高到低排序,打印出所有单词及其频率的排序列表。 传统的解决方案 函数式解决方案 命令式和函数式区别 命令式编程风格常常迫使我们出于性能考虑,把不同的任务交织起来,以便能够用一次循环来完成多个任务。在面向对象的命令式编程语⾔里面,重用的 阅读全文
posted @ 2021-01-30 17:33 Wu_Candy 阅读(89) 评论(0) 推荐(0) 编辑
摘要: 工厂,大家一般能想到的是生产产品的地方,在设计模式中,工厂可分为:简单工厂模式、工厂方法模式。在前期推文 Python 简单工厂模式 中有关于简单工厂模式的解读。 根据工厂的抽象程度可分为:工厂方法模式、抽象工厂模式。该模式用于封装和管理对象的创建,是一种创建型模式。 背景 在简单工厂模式中,只提供 阅读全文
posted @ 2021-01-30 17:28 Wu_Candy 阅读(275) 评论(0) 推荐(0) 编辑
摘要: 镜像:是一个只读的Docker 容器模板,包含启动容器所需要的所有文件系统结构和内容。 简单来讲,镜像是一个特殊的文件系统,它提供了与容器运行时所需的程序,软件库、资源、配置等静态数据,镜像不包含任何动态数据,镜像内容在构建后不会被改变。 常用的镜像操作如图所示: 拉取镜像 命令格式:docker 阅读全文
posted @ 2021-01-30 17:25 Wu_Candy 阅读(723) 评论(0) 推荐(0) 编辑
摘要: 什么是命令模式?:行为参数化的模式 作用?:降低代码重合度 1.命令模式介绍 命令模式:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志。以及支持可撤销的操作。 讲一个模式时,从定义上是不能体会其中的技巧,所以接着我会通过举例子来说明命令模式。 1.1.举例 阅读全文
posted @ 2021-01-30 17:16 Wu_Candy 阅读(97) 评论(0) 推荐(0) 编辑
摘要: 简单工厂模式,说起这个概念,你可能比较陌生,但是在日常码代码中你一定不经意间用到过。 1、类别 简单工厂模式又称之为静态工厂方法,属于创建型模式。 2、概念 在简单工厂模式中,可以根据传递的参数不同,返回不同类的实例。简单工厂模式定义了一个类,这个类专门用于创建其他类的实例,这些被创建的类都有一个共 阅读全文
posted @ 2021-01-30 16:45 Wu_Candy 阅读(155) 评论(0) 推荐(0) 编辑
摘要: Docker 核心概念 镜像 镜像是什么呢?通俗地讲,它是一个只读的文件和文件夹组合。它包含了容器运行时所需要的所有基础文件和配置信息,是容器启动的基础。因此你想启动一个容器,那首先必须要有一个镜像。 镜像是 Docker 容器启动的先决条件。 如果你想要使用一个镜像,你可以用这两种方式: 1、自己 阅读全文
posted @ 2021-01-30 16:41 Wu_Candy 阅读(810) 评论(0) 推荐(0) 编辑
摘要: 学习过Java 编程语言的小伙伴,应该都知道在Java 语言学习过程中会学到类属性的getter & setter 方法。那么在Python 中是否也有类似的方法呢?答案是,有的。 今天的分享内容是:如何使用@property 装饰器去实现Python 中的getter & setter 方法。 在 阅读全文
posted @ 2021-01-30 16:34 Wu_Candy 阅读(85) 评论(0) 推荐(0) 编辑
摘要: 1. 内存的物理机制 这篇文章主要讲的是内存的物理机制的原理是什么?以及我们在开发中定义的变量是怎样存储的。认真看完才会觉得很简单,如果只是粗略的看,那就啥都学不到。 首先让我们来看一下内存的物理机制。内存实际上是一种名为内存IC的电子元件。虽然内存IC包括DRAM、SRAM、ROM等多种形式,但从 阅读全文
posted @ 2021-01-30 16:31 Wu_Candy 阅读(157) 评论(0) 推荐(0) 编辑
摘要: chroot 容器技术从1979年chroot的首次问世便已崭露头角。 维基百科对chroot的定义如下: 是在 Unix 和 Linux 系统的一个操作,针对正在运行的软件进程和它的子进程,改变它外显的根目录。一个运行在这个环境下,经由 chroot 设置根目录的程序,它不能够对这个指定根目录之外 阅读全文
posted @ 2021-01-30 16:25 Wu_Candy 阅读(1879) 评论(0) 推荐(0) 编辑
摘要: 面向对象编程的核心概念:封装,抽象,多态、继承、组合 封装: 第一个概念:在面向对象编程中,对象将变量和方法集中在一个地方,即对象本身。 第二个概念:指的是隐藏类的内部数据,避免客户端代码直接进行访问。 1 class Data: 2 def __init__(self): 3 self.list1 阅读全文
posted @ 2021-01-30 16:20 Wu_Candy 阅读(215) 评论(0) 推荐(0) 编辑