自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

weixin_41754309的博客

python 自动化测试技术文章分享

  • 博客(175)
  • 收藏
  • 关注

原创 WebUI 自动化测试的经典设计模式:PO

一、PO 设计模式是什么 PO 的全称是 PageObject,是 Selenium 自动化测试项目开发实践的最佳设计模式之一,通过对界面元素和功能模块的封装减少冗余代码,有利于后期项目的维护。 对页面对象进行抽象处理(页面对象包含:页面元素、button 点击、文本框输入、选项框选择等等)。使代码能在页面元素发生改变后,尽量减少测试脚本的改动量,最大程度支持代码的可重复性使用,同时使得测试框架结构合理、层次清晰、代码更加模块化,避免冗余、藕合性过高。 二、PO 设计模式的优势.

2021-04-02 10:56:59 22

原创 双指针—滑动窗口算法解析

题目描述题解滑动窗口的思想:用i,j表示滑动窗口的左边界和右边界,通过改变i,j来扩展和收缩滑动窗口,可以想象成一个窗口在字符串上游走,当这个窗口包含的元素满足条件,即包含字符串T的所有元素,记录下这个滑动窗口的长度j-i+1,这些长度中的最小值就是要求的结果。步骤一不断增加j使滑动窗口增大,直到窗口包含了T的所有元素步骤二不断增加i使滑动窗口缩小,因为是要求最小字串,所以将不必要的元素排除在外,使长度减小,直到碰到一个必须包含的元素,这个时候不能再扔了,再...

2021-04-01 17:28:12 13

原创 Python 设计模式—观察者模式

分享主题:Python 设计模式之观察者模式定义观察者模式也叫发布订阅模式,定义了对象之间一对多依赖,当一个对象改变状态时,这个对象的所有依赖者都会收到通知并按照自己的方式进行更新。观察者设计模式是最简单的行为模式之一。在观察者设计模式中,对象(主题)维护了一个依赖(观察者)列表,以便主题可以使用观察者定义的任何方法通知所有观察者它所发生的变化。举个生活中的小例子:职员们趁老板不在,都在搞着自己与工作无关的事情,同时观察着前台小姐姐,前台小姐姐在老板回来的时候,发布通知让各同事回到工作状态。

2021-03-29 16:56:28 17

原创 多线程之读写锁原理

今天主要通过多读单写的例子来说下读写锁的原理概念多读单写,简单说,就是对资源的访问分为两种状态,一种是读操作,另一种是写操作。由应用程序提示锁应该做哪种操作。当为读模式时,所有的写动作被悬挂,而读请求被允许通过,而写动作时,所有操作被悬挂。并且,读写切换时,有足够的状态等待,直到真正安全时,才会切换动作。如下图所示:业务场景举例比如现在有 A、B、C、D、E、F、G 6个线程,其中A、B、C、G 4个线程之行读请求,E、F 2个线程之行写请求,如何保证读写安全?分析:..

2021-03-29 16:53:12 10

原创 Python 进行 Oracle 与 Mysql 不同数据库类型之间的数据 diff

分享主题:如何利用Python 进行 Oracle 与 Mysql 不同数据库类型之间的数据 diff一、适用场景项目工作中,可能会有 A 类型数据库数据需要迁移到 B 类型的数据库中的需求。例如:假设现有一个数据库的迁移需求,是将 Oracle 数据库里的数据迁移至 Mysql 数据库中。常规的测试方法是人工去抽样检测数据进行 diff,因为数据量太大,人工不可能实现全量数据的肉眼 diff。因此,为提高数据 diff 的正确性以及测试效率,编写测试脚本进行全量迁移数据的 diff 是十分必要

2021-03-29 16:48:05 7

原创 浅谈多线程

多线程今天主要想讲的是线程安全问题,为什么多线程情况下会出现线程不安全问题?什么是多线程?可以简单的理解为:即就是一个程序中有多个线程在同时执行。举例:我们使用QQ音乐同时下载多首音乐时,QQ音乐程序会创建多个线程来下载音乐。并行我们先说下串行。关于串行这个很好理解。假设在单线程情况下,我们使用QQ音乐来串行的下载5首音乐的话,那下载顺序和进度就是A下载完成了然后下载B,顺序就是A-B-C-D-E。那么我们来谈下并行,在多条线程的情况下,QQ音乐程序是怎么完成音乐的下..

2021-03-29 16:44:58 4

原创 Python 之测试环境db自动同步

分享主题多套测试环境,如何做基线的数据库级别的同步更新?应用场景工作中测试环境有多套时,为保证基础环境配置的一致性,就需要所有测试环境的数据库结构保持一致。例如:A需求在 beta1 环境进行测试,且A需求提测单中有新增表的 sql,B需求在 beta2 环境进行测试,由于A需求比B需求先发布上线,此时在B需求测试过程中发布时需要将主干的代码合并到当前需求分支(集成测试的需要,可以提前检测出已上线的需求是否对当前在测的需求有影响),代码合并后对应的相关配置也得跟上,否则程序运行时会报错.

2021-03-29 16:41:24 6

原创 如何使用Python 操作 Mysql 进行数据库的 diff

一、适用场景项目工作中,我们会遇到测试环境特别多的情况,例如:n套beta环境,多套预生产环境,多套uat环境等各种测试环境。为保证所有测试环境表结构上的一致性,如果只是单纯地靠人工来检查并更新,未免显得太过吃力且效率低下,还容易在实施的过程中出现遗漏的问题。因此使用自动化脚本来完成这项工作就显得格外重要了,今天分享的主要内容就是通过自动化脚本协助你找到不同测试环境之间差异化的内容,进而可以避免同步过程中出现的遗漏问题。二、代码实现1、前置处理与基础配置 1importpymy..

2021-03-29 16:37:21 11

原创 关于动态规划(Dynamic Programming)

Dynamic Programmingis a method for solving a complex problem by breaking it down into a collection of simpler subproblems, solving each of those subproblems just once, and storing their solutions. 将复杂的原问题拆解成若干个简单的子问题 每个子问题仅仅解决1次,并保存它们的解 最后...

2021-03-29 16:30:57 19

原创 Python 设计模式—原型模式

前期分享过几篇关于设计模式的文章,今天继续分享设计模式——原型模式 我们将会使用原型实例指定创建对象的种类,并且通过深拷贝这些原型创建新的对象。 原型模式本质就是克隆对象,所以在对象初始化操作比较复杂的情况下,很实用,能大大降低耗时,提高性能。 在原型模式下我们不用重新初始化对象,而是动态地获得对象运行时的状态。 深浅拷贝的含义浅拷贝(Shallow Copy):指对象的字段被拷贝,而字段引用的对象不会被拷贝,拷贝的对象和源对象只是名称相同,但是他们共用一个实体。浅.

2021-03-29 15:45:52 6

原创 网络层—简单的面试问题

TCP在面试的时候,如果问大家,TCP 的三次握手,大家一般准备下,都会很容易的回答上这个问题。但是如果这样问:TCP 为什么要三次握手,二次行不行?你还会吗?其次,大家都知道TCP 有个特点:是可靠传输,那问题来了:TCP 是怎么保证可靠传输的?难道就因为三次握手了。问题1: TCP 为什么要三次握手,二次行不行?如果是2次握手,就会出现下面的情况:1.客户端发送syn同步报文给server端时,如果因为网络环境不好,此时网络发生了超时。2.等待一段时间后,发现没有接受到服务端.

2021-02-20 17:17:45 45 3

原创 Web Service接口如何自动化测试

引言 什么是 Web Services Web Services 构成及调用原理 Web Services 接口和 API(应用程序接口)的区别 Web Services 接口实战 1.suds - SOAP 客户端 2.Zeep - SOAP 客户端 3.Zeep 和 suds 的比较 总结 引言之前分享过很多篇基于 HTTP 请求的 API 和 UI 自动化测试的文章。实际上,接口有很...

2021-02-20 17:13:38 60

原创 测试框架—如何做好数据持久化?

数据持久化的定义百度百科给出的定义如下:数据持久化就是将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中的数据模型的统称。数据模型可以是任何数据结构或对象模型,存储模型可以是关系模型、XML、二进制流等。cmp和Hibernate只是对象模型到关系模型之间转换的不同实现。从软件测试角度,通俗地说,数据持久化就是将测试数据有组织的永久存储的过程;狭义地说,一般是指把数据存储在数据库;广义地说,数据也可以是文件数据、报表等其他形式。前期推文提到过,测试数据包括测试请求数据和测试结果.

2021-02-10 14:46:01 57

原创 学 Python 怎能不知 yield ?

引言你可能听说过,带有 yield 的函数在 Python 中被称之为 generator(生成器),又或者都没关注过,Python 中还有个 yield 的存在。如果你了解过 Python 中的 yield,那你知道何谓 generator 吗?yield 的概念理解yield 的 generator 概念,首先以一个常见的编程题目来展示 yield 的概念。如何生成斐波那契數列斐波那契(Fibonacci)數列是一个非常简单的递归数列,除第一个和第二个数外,任意一个数都可由前两.

2021-02-08 16:32:17 32

原创 测试框架数据持久化——测试数据

测试数据简述灵魂拷问之什么是测试数据呢?也许你会毫不犹豫地说,测试数据不就是我们每天用于做测试的数据吗?这种说法过于笼统。其实,测试数据指的是跟测试有关的数据,它可以分为以下几类。1. 测试请求数据测试请求数据,就是我们常常理解的测试数据。这部分数据是测试用例执行的必要输入(这里的测试用例是指自动化测试用例,通常以测试脚本的形式存在)。它可以是直接耦合在测试用例里的,也可以是放在外部文件。放在外部文件的情况,即我们前几期推文里提到的,测试数据可以存储在 JSON、YAML、TXT、Ex.

2021-02-05 16:40:41 38

原创 关于图片,我有话说

1.分辨率和像素的关系 分辨率:分辨率是指单位长度内像素点的数量,它的单位通常为【像素/英寸(ppi)】, 例如:72ppi表示1英寸包含72个像素点,300ppi表示每英寸含300个像素点。分辨率决定了位图细节的精细程度,通常情况下,分辨率越高包含的像素就越高,图像就越清晰。 像素:是指在由一个数字序列表示的图像中的一个最小单位,称为像素。像素仅仅只是分辨率的尺寸单位,而不是画质。 例子:像素和分辨率组合方式决定了图像数据量。例如1x1英寸的两个图像,分辨率为72ppi的.

2021-02-05 16:23:25 21

原创 Pandas、Excel实现 Pytest 数据驱动

引言前面分享的推文自动化测试必会—数据驱动DDT 介绍过 unittest 框架中操作 JSON 和 YAML 文件实现数据驱动。那么在 pytest 中,又该如何实现呢?Pytest 操作 JSON/YAML 文件实现数据驱动首先按照使用 pytest 进行数据驱动的基本思路创建一个读取 JSON 文件和 YAML 文件的方法:def test_read_data_from_json_yaml(data_file): return_value = [] da...

2021-02-04 19:28:19 72

原创 苹果有了CALayer,为什么还要UIView?

这篇文章非常生动的解释了一个原则:SRP单一自责原则。SRP是SOLID五大设计原则中最容易被误解的一个。也许是名字的原因,很多程序员根据SRP这个名字想当然地认为这个原则就是指:每个模块都应该只做一件事。我们在将大型函数重构成小函数时经常会用到这个原则,但这只是一个面向底层实现细节的设计原则,并不是SRP的全部。正文:你给我解释清楚,都有了CALayer了,为什么还要UIView? UIView继承自UIResponder,主要特点是可以响应触摸事件。而CALayer实际是图层内容管理...

2021-01-30 15:03:15 41 2

原创 Python 无固定参数装饰器

装饰器是什么Python 装饰器(fuctional decorators)是用于拓展原来函数功能的一种函数,目的是在不改变原函数名(或类名)的情况下,给函数增加新的功能。这个函数的特殊之处在于它的返回值也是一个函数,这个函数是内嵌"原"函数的函数。装饰器其实就是一个闭包函数,它是有两层的函数,它具有函数传参功能。装饰器使用场景当在多个地方出现雷同的代码块,且这些代码与核心业务没有直接关联的都可以用装饰器来代替,装饰器不仅能减少代码量,还使得代码逻辑更清晰、可读性更强,你只需专注于..

2021-01-30 15:00:08 19

原创 Pytest 测试框架——数据驱动

引言前面已经和大家介绍过 Unittest 测试框架的数据驱动框架 DDT,以及其实现原理。今天和大家分享的是 Pytest 测试框架的数据驱动,Pytest 测试框架的数据驱动是由 pytest 自带的pytest.mark.parametrize()来实现的。pytest.mark.parametrize 实现数据驱动pytest.mark.parametrize 是 pytest 的内置装饰器,它允许你在 function 或者 class 上定义多组参数和 fixture 来实现数.

2021-01-26 18:03:10 338

原创 百度、阿里、腾讯、京东等面试算法题

今天给大家分享的是字符串相关的算法面试题。现在进大厂,都会有算法面试题,不过因为算法和数据结构是有一定门槛的,所以想迈过这个门槛,慢慢积累然后反复看是一个可行的策略。这个问题是Leetcode上的第151 道题:翻转字符串里的单词这道题目的解题思路: 清除字符串中无用的空格, 【将 "are you ok" 整理成 “are you ok”】 然后将处理好的字符串进行翻转,【将 " are you ok " 整理成 “ko uoy era”】 分别将每个单词...

2021-01-24 17:28:20 45

原创 Unittest 之 DDT 的原理解析

引言  前面的文章介绍了如何在 Python 的 Unittest 框架中来使用 ddt 实现数据驱动的自动化测试。在了解了 ddt 的使用后,你是否有过如下疑问: ddt 是如何把你的测试数据转换传给你的测试用例? 当你的一组数据有多个参数时,ddt 是如何 unpack 的? 当你有多组数据时,ddt 拆分测试用例是如何命名的? 主题:今天分享的内容是--探索 ddt 实现数据驱动的秘密。  通过阅读ddt 源码,我们不难发现其实 ddt 的实现核心就是.

2021-01-24 17:25:44 184 2

原创 数据结构—并查集《下》

上一节主要介绍了 Quick Find 的思想和代码实现,本节要介绍的是 Quick Union的实现和代码实现。Quick Union - Union Quick Union的union(v1, v2):让 v1 的根节点指向 v2 的根节点 public void union(int v1, int v2) { int p1 = find(v1); int p2 = find(v2); if (p1 == p2) return;...

2021-01-24 17:22:31 19

原创 看Python 如何实现门面模式

引言  打个还算比较形象的比喻吧,我们把门面比作建筑工地上的建筑物的表面,可以是贴有横幅,如:XXXX铁路工程局,这种比较醒目的一面,能更吸引人注意力,当人们从建筑物旁边经过时,可以看到其外部的面貌,此时并不了解其本身结构的复杂性。  在程序里门面在隐藏内部复杂性的同时,也为外部客户端提供了一个可以轻松访问的接口。结构型设计模式门面模式与单例模式,工厂模式不同,它是一种结构型模式。 结构型模式描述如何将对象和类组合成更大的结构。 结构型模式是一种能够简化设计工作的模..

2021-01-24 17:19:35 29

原创 自动化测试必会—数据驱动DDT

引言  你是否有过这种感受,在做自动化测试过程中,不论是API 自动化测试还是UI 自动化测试,我们写测试脚本有很大一部分时间都是在准备数据(setUp)、清理数据(tearDown)。因为数据是做自动化测试的至关重要的一个环节。如此看来数据驱动真的十分重要。接下来分享的内容是:Unittest测试框架中常用的数据驱动框架:DDT 。数据驱动1、数据驱动是什么?  数据驱动,指在自动化测试中处理测试数据的方式。  通常测试数据与功能函数分离,存储在功能函数的外部位置。在自动化测试运.

2021-01-24 17:17:16 80

原创 数据结构—并查集《上》

今天主要介绍的是并查集这种数据结构。其本质上是解决某一些特定问题的而设计出的数据结构。大家可以了解下这种数据结构,作为自己知识的储备。通过一个实际的问题引出并查集  假设有 n 个村庄,有些村庄之间有连接的路,有些村庄之间并没有连接的路设计一个数据结构,能够快速执行 2 个操作: 查询 2 个村庄之间是否有连接的路 连接 2 个村庄   如果使用数组、链表、平衡二叉树、集合(Set)都可以完成需求,但是查询、连接的时间复杂度都是 O(n)。  并查集...

2021-01-24 17:10:42 18

原创 自动化测试必会—PageObject 设计模式

PageObject 是什么?对页面对象进行抽象处理,(页面对象包含:页面元素、button点击、文本框输入、选项框选择等等)。使代码能在页面元素发生改变后,尽量减少测试脚本的改动量,最大程度支持代码的可重复性使用,同时使得测试框架结构合理、清晰、代码更加模块化,避免冗余、藕合性过高。PageObject 有哪些特征? 页面封装成Page 类,页面元素为Page 类的成员元素,页面功能的实现放在Page 类的方法里。 将一个待测页面(或者待测试对象)封装成一个类(Class),.

2021-01-24 17:07:24 70

原创 编程范式--函数式编程

从一个题目说起题目:读入一个文本文件,确定所有单词的使用频率并从高到低排序,打印出所有单词及其频率的排序列表。传统的解决方案函数式解决方案命令式和函数式区别 命令式编程风格常常迫使我们出于性能考虑,把不同的任务交织起来,以便能够用一次循环来完成多个任务。在面向对象的命令式编程语⾔里面,重用的单元是类和类之间沟通⽤的消息,比如方法。 而函数式编程用 map()、filter() 这些高阶函数把我们解放出来,让我们站在更高的抽象层次上去考虑问题,...

2021-01-24 17:02:46 13

原创 Python 工厂方法模式

今日分享主题:Python 工厂方法模式工厂,大家一般能想到的是生产产品的地方,在设计模式中,工厂可分为:简单工厂模式、工厂方法模式。在前期推文Python 简单工厂模式中有关于简单工厂模式的解读。根据工厂的抽象程度可分为:工厂方法模式、抽象工厂模式。该模式用于封装和管理对象的创建,是一种创建型模式。背景在简单工厂模式中,只提供了一个工厂类,该工厂类处于对产品类进行实例化的中心位置,它知道每一个产品对象的创建细节,并决定何时实例化哪一个产品类。简单工厂模式最大的缺点是:当有新产...

2021-01-03 11:58:23 39

原创 Docker 镜像配置

镜像:是一个只读的Docker 容器模板,包含启动容器所需要的所有文件系统结构和内容。简单来讲,镜像是一个特殊的文件系统,它提供了与容器运行时所需的程序,软件库、资源、配置等静态数据,镜像不包含任何动态数据,镜像内容在构建后不会被改变。常用的镜像操作如图所示:拉取镜像命令格式:docker pull [Registry]/[Repository]/[Image]:[Tag]Registry:注册服务器,Docker 默认会从 docker.io 拉取镜像,如果你有自己的镜像仓库,可

2021-01-02 16:24:02 91

原创 设计模式---命令模式

什么是命令模式?:行为参数化的模式作用?:降低代码重合度1.命令模式介绍  命令模式:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志。以及支持可撤销的操作。  讲一个模式时,从定义上是不能体会其中的技巧,所以接着我会通过举例子来说明命令模式。1.1.举例: 假设某个公司需要设计一个多用功能的遥控器。基本的需求如下: 该遥控器有可以控制风扇,白炽灯,热水器等等的多对开关, 可能还有其他的电器,暂时不做其功能,但是希望可以保.

2021-01-02 16:13:08 17 1

原创 Python 简单工厂模式

今天分享的主题是:Python 简单工厂模式的具体实现简单工厂模式,说起这个概念,你可能比较陌生,但是在日常码代码中你一定不经意间用到过。1、类别简单工厂模式又称之为静态工厂方法,属于创建型模式。2、概念在简单工厂模式中,可以根据传递的参数不同,返回不同类的实例。简单工厂模式定义了一个类,这个类专门用于创建其他类的实例,这些被创建的类都有一个共同的父类。3、原理简单工厂模式:通过接口创建对象,且不会暴露对象创建逻辑在设计模式中主要用于抽象对象的创建过程,让用户可以..

2021-01-02 16:10:12 21

原创 Docker 三大核心概念

Docker 核心概念镜像镜像是什么呢?通俗地讲,它是一个只读的文件和文件夹组合。它包含了容器运行时所需要的所有基础文件和配置信息,是容器启动的基础。因此你想启动一个容器,那首先必须要有一个镜像。镜像是 Docker 容器启动的先决条件。如果你想要使用一个镜像,你可以用这两种方式:1、自己创建镜像。通常情况下,一个镜像是基于一个基础镜像构建的,你可以在基础镜像上添加一些用户自定义的内容。例如:你可以基于centos镜像制作你自己的业务镜像,首先安装nginx服务,然后部署你的应用

2021-01-02 16:06:52 56

原创 Python 中property & eval()的妙用

学习过Java 编程语言的小伙伴,应该都知道在Java 语言学习过程中会学到类属性的getter & setter 方法。那么在Python 中是否也有类似的方法呢?答案是,有的。今天的分享内容是:如何使用@property 装饰器去实现Python 中的getter & setter 方法。在代码实操之前,先来了解下@property 装饰器相关的小知识。有利于更好地理解以下实操代码。1、Python 内置有三大装饰器:@staticmethod(静态方法)@classme

2021-01-02 16:00:45 32

原创 计算机基础

1. 内存的物理机制  这篇文章主要讲的是内存的物理机制的原理是什么?以及我们在开发中定义的变量是怎样存储的。认真看完才会觉得很简单,如果只是粗略的看,那就啥都学不到。  首先让我们来看一下内存的物理机制。内存实际上是一种名为内存IC的电子元件。虽然内存IC包括DRAM、SRAM、ROM等多种形式,但从外部来看,其基本机制都是一样的。内存IC中有电源、地址信号、数据信号、控制信号等用于输入输出的大量引脚(IC的引脚),通过为其指定地址(address),来进行数据的读写。 上图是内存IC.

2021-01-02 15:58:37 36

原创 容器技术之Chroot&Docker

chroot容器技术从1979年chroot的首次问世便已崭露头角。维基百科对chroot的定义如下:是在 Unix 和 Linux 系统的一个操作,针对正在运行的软件进程和它的子进程,改变它外显的根目录。一个运行在这个环境下,经由 chroot 设置根目录的程序,它不能够对这个指定根目录之外的文件进行访问动作,不能读取,也不能更改它的内容。通俗地说 ,chroot 就是可以改变某进程的根目录,使这个程序不能访问目录之外的其他目录,这个跟我们在一个容器中是很相似的。下面我们通过一个实例来演示

2021-01-02 15:55:05 294

原创 Python 面向对象的核心概念汇总

面向对象编程的核心概念:封装,抽象,多态、继承、组合封装:第一个概念:在面向对象编程中,对象将变量和方法集中在一个地方,即对象本身。第二个概念:指的是隐藏类的内部数据,避免客户端代码直接进行访问。 1class Data: 2 def __init__(self): 3 self.list1=[22,33,44,55,66] 4 5 def chang_list(self,index,num): 6 self.list1[index]=nu

2021-01-02 15:52:17 18

原创 哈希表(Hash Tabel)

面试的时候,曾被问过:你知道字典的底层数据结构是什么吗?  那我们今天主要讲的就是哈希表这种数据结构到底是什么样子的;哈希碰撞是怎么造成的以及是如何解决哈希碰撞的。1.定义  哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做哈希表。  字典存值案例如下代码。为了能比较通俗的理解哈希表这种数据结构,我们先看下图:p

2021-01-02 15:47:58 48

原创 MacOS Docker 安装与基础使用

MacOS可以使用Homebrew 来安装DockerHomebrew 的 Cask 已经支持 Docker for Mac,因此可以很方便的使用 Homebrew Cask 来进行安装:输入命令:brew cask install docker安装过程如上图所示,最终出现docker was successfully installed!提示语时表示docker安装成功,最后在启动台里可以看到下载好的docker.app,如下图所示:找到上方的Docker图标并点击运行,提.

2021-01-02 15:44:27 111

原创 数据结构与算法 —— 归并排序

 今天讲的内容是归并排序,为了比较容易的理解归并排序,我们首先看一道leetcode的算法题,通过该题的解题思路,会让我们更加容易的理解归并排序的思想。开篇问题  这个题的解题思路其实就是归并排序的merge的过程。首先让我们先解这道题,便于后面更好的理解归并排序的思想。  首先我绘制了一张图,接下来我们通过上图来理解这道题的解题思路。  在开始之前,我先解释下上图的变量的含义:我们定义一个数组array = nums1 + nums2,然后定义指针T指向nums1的...

2020-11-27 14:51:19 37

空空如也

空空如也

空空如也

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

TA关注的人 TA的粉丝

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