自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 前端-Mac下brew安装node和npm,npm构建vue

通过brew安装node和npm brew install node//此命令默认安装最新版本的node brew search node//查询可用的node版本 brew install node@10 //安装指定版本的node 若要进行node版本降级: 之前使用brew inst...

2019-12-13 20:35:34

阅读数 19

评论数 0

原创 java中@Data注解以及插件lombok的下载

@Data注解: 在java类上添加注解@Data 该注解,提供了类的get、set、equals、hashCode、canEqual、toString方法 这里需要下载lombok插件 关于idea中Lombok插件的下载:、 点击preferences 点击plugins,并且搜索Lomb...

2019-11-12 19:14:32

阅读数 64

评论数 0

原创 java中读取json配置文件

在自动化接口测试中,我们会将参数放在一个配置文件了,这样在我们每次跑case时,就不需要改动代码,只需要改动配置文件,就可以实现不用的参数传入case了 那么在java中,怎样读取json的配置文件呢? 首先我们需要了解到的是InputStream 和 OutputStream,它们分别为各种输入...

2019-09-02 10:23:30

阅读数 375

评论数 0

原创 TestNg学习

TestNG是一个测试框架,可以简化广泛的测试需求。 建立工程 首先我们在idea中应该新建一个project,并选择“maven”,点击下一步(如下图) 填写groupId(一般为包名)和ArtifactId(一般为工程名) 2. 添加依赖 创建成功后:我们需要在pom中添加testng依...

2019-07-25 17:32:54

阅读数 35

评论数 1

原创 pom中遇到:inspects a maven model for resolution problems问题解决

右击pom文件,选择 下载完成后选择: 就可以解决问题

2019-03-09 14:30:54

阅读数 357

评论数 0

原创 python+adb实现自动化获取手机信息(系统版本号,设备号,设备名称等等)

首先我们先看一下使用adb查看Android手机信息的指令 #获取手机名称 NAME = 'adb shell getprop ro.product.model' #获取手机版本 VERSION = 'adb shell getprop ro.build.versi...

2018-05-06 12:53:21

阅读数 4149

评论数 0

原创 解决The APK filetestcase-debug-androidTest.apk does not exist on disk.问题

The APK file 路径/testcase-debug-androidTest.apk does not exist on disk. Error while Installing APK 不知道大家在使用时,有没有遇到该问题 我的代码在我没有任何改动时突然出现该情况 也在网上百度...

2018-04-25 14:14:18

阅读数 535

评论数 0

原创 git的使用

本文介绍一下git的一些使用以及基本命令 首先我们要安装git,在这里我使用的是ubuntu sudo apt-get install git //安装 git 然后我们要安装ssh,该工具用来生成密钥 sudo apt-git install ssh //安装 ssh...

2018-04-24 17:52:25

阅读数 127

评论数 0

原创 appium实现一个软件的用户模拟登录——python版

在Android测试中最经常使用到的就是appium和selenium了 那么它们之间有什么区别呢? 1. selenium是web端的自动化 2. appium是app端的自动化 3. appium继承了webdriver,(也就是selenium) 今天我们使用的是appium 那...

2018-04-24 15:07:25

阅读数 1005

评论数 0

原创 端口分类调研

在一台主机上运行了多个服务,主机为了区分这些服务,所以给每个服务都分配一个端口号,端口号唯一的标识这台主机上的某个服务。 IP地址唯一标识网络上的一台主机,服务器用通过端口号来区分不同的网络服务。所以IP地址+端口号就表示网络中唯一的一个服务。 客户端通常对它所使用的端口号并不关心,只要保证该端口...

2018-03-06 09:34:40

阅读数 92

评论数 0

原创 基于huffman树实现文件压缩

在上一篇博客中我们介绍了哈夫曼(huffman)树 本文将介绍一下如何用huffman树实现文件压缩。 首先,我们将文件压缩这个项目分为五个步骤: 1. 统计字符出现的次数。 2. 构建哈夫曼树 3. 生成哈夫曼编码 4. 压缩文件 5. 解压缩文件 以上就是文件压缩的基本思...

2018-01-24 18:24:00

阅读数 217

评论数 0

原创 huffmantree——哈夫曼树

哈夫曼树(Huffman tree): 又名最优树,指给定n个权值作为n的叶子结点,构造一棵二叉树,若带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。若将树中结点赋给一个有着某种含义的数值,则这...

2018-01-24 14:32:38

阅读数 183

评论数 0

原创 mem系列函数(memcpy,memmove,memset)

在上篇文章中我们介绍的是str系列的函数,但是str系列的函数只能用于字符串,而不能用于任意类型,那么在这篇文章中我们介绍以mem开头的函数,这些函数适用于任意类型。 memcpy:拷贝函数 函数原型: void * memcpy ( void * destination, cons...

2018-01-21 08:25:49

阅读数 264

评论数 0

原创 电脑大小端问题以及如何判断当前机器是大端还是小端

大端模式(大端字节序):指的是低字节内容存在高地址,高字节内容存在低地址。 小端模式(小端字节序):指的是低字节内容存在低地址,高字节内容存在高地址。 我们运行该程序 看一下a的地址,我们可以看到变量a在内存中为 0a 00 00 00 我们可以发现我们的机器是小端模式,由于a=1...

2018-01-19 13:39:44

阅读数 1333

评论数 0

原创 [C语言]字符串函数的分析以及模拟实现

我们先来总结一下字符串函数有哪些? 我们把字符串函数分为两大类,一种是不安全的,一种是优化版本 strlen strcat,strcmp,strcpy,strstr strncat,strncmp,strncpy 我们为什么会有strncat,strncmp,strncpy 这些函数呢...

2018-01-14 16:22:59

阅读数 169

评论数 1

原创 IPC进程间通信——共享内存

共享内存 本文将研究一下进程通信的另一种方式:共享内存 共享内存:其实就是两个不相关的进程访问同一个逻辑内存,共享内存是在两个正在运行的进程之间共享和传递数据的一种有效方式。不同的近进程之间共享的内存通常安排为同一段物理内存。进程可以将同一段共享内存连接到它们自己的地址空间中,所有的进程都可以...

2018-01-13 16:59:23

阅读数 123

评论数 0

原创 IPC进程间通信——消息队列

消息队列:提供了一种从一个进程向另外一个进程发送数据块的方法。每个数据块都被认为含有一个类型,接收进程可以独立的接收含有不同的类型的数据结构,我们可以通过发送信息来避免命名管道的同步和阻塞问题,但是消息队列和命名管道一样,每个数据块都有一个最大的长度限制。 消息队列与管道的区别: 消息队列基...

2018-01-12 21:42:29

阅读数 139

评论数 0

原创 Linux浅谈进程2

此篇博客作为上一篇博客的补充 Linux浅谈进程1进程的创建进程创建的方式: fork() vfork() 关于fork()函数头文件为#include<unistd.h> pid_t fork(void) 返回值: 子进程返回0,父进程返回子进程id,出错返回-1进程创建的一般过程...

2017-12-14 11:48:22

阅读数 1004

评论数 0

原创 僵尸进程与孤儿进程

孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作。我们先来模拟实现一个孤儿进程#include<stdio.h> #include<unistd.h>...

2017-12-12 11:27:31

阅读数 253

评论数 0

原创 选择排序——选择排序和堆排序

常见的比较排序算法有插入排序(直接插入排序和希尔排序),选择排序(选择排序和堆排序),交换排序(冒泡排序和快速排序),归并排序。还有非比较排序:基数排序和计数排序。本文讲讲选择排序中的选择排序和堆排序选择排序 以上是选择排序的算法思想,它的时间复杂度为O(N的平方)。代码实现:void Sele...

2017-11-28 21:33:17

阅读数 164

评论数 0

原创 插入排序——直接插入排序和希尔排序

常见的比较排序算法有插入排序(直接插入排序和希尔排序),选择排序(选择排序和堆排序),交换排序(冒泡排序和快速排序),归并排序。还有非比较排序:基数排序和计数排序。本文讲讲插入排序中的直接插入排序和希尔排序。直接插入排序如图所示是我们直接插入排序的算法思想,我们可以看到它的时间复杂度为O(N的平方...

2017-11-28 19:57:27

阅读数 227

评论数 0

原创 STL中map和set底层的红黑树实现

我们都知道map和set的实现是依赖红黑树的 怎样写红黑树可以让map和set都可以使用呢? 在这里我们定义了一个模版参数,如果它是key那么它就是set,如果它是map,那么它就是map;我们分析一下,红黑树迭代器的前置++ 到当前结点,就说明了它的左子树和自己都已经访问过了 1,当前位...

2017-11-10 13:57:02

阅读数 1700

评论数 0

原创 RBTree——红黑树

红黑树:红黑树是一棵二叉搜索树,它在每个节点上增加了一个存储位来表示结点的颜色,红色或黑色(Red或Black) 通过对任何一条从根到叶子简单路径上的颜色来约束,红黑树保证最长路径不超过最短路径的两倍,从而达到近似平衡。红黑树必须满足的性质: 1,每个节点不是红色就是黑色。 2,根节点必须为...

2017-11-07 12:02:38

阅读数 126

评论数 0

原创 AVL树的基本实现

AVL树(高度平衡的二叉搜索树),它可以保持二叉树的高度平衡,尽量降低二叉树的高度,减少树的平均搜索长度AVL树的性质 1,左子树和右子树的高度之差的绝对值不超过1 2,树中的每个左子树和右子树都是AVL树 3,每个结点都有一个平衡因子,任意一个结点的平衡因子是-1,0,1(每个结点的平衡因...

2017-11-02 09:20:36

阅读数 157

评论数 0

原创 容器set和map的使用

set和map都是关联式容器 先介绍两个值: 键值:key 实值:valueset特性:所有的元素都会根据元素的键值(key)自动的被排序。对于set元素来说键值就是实值,实值就是键值,set不允许两个元素有相同的键值(我们不能通过set的迭代器去修改set的元素,原因后面会...

2017-10-30 15:21:00

阅读数 253

评论数 0

原创 二叉搜索树的增删查(递归与非递归)实现

二叉搜索树(BinarySearchTree): 二叉搜索树性质: 1. 每个节点都有一个作为搜索依据的关键码(key),所有节点的关键码互不相同。 2. 左子树上所有节点的关键码(key)都小于根节点的关键码(key)。 3. 右子树上所有节点的关键码(key)都大于根节点的关键码(ke...

2017-10-23 21:57:18

阅读数 188

评论数 0

转载 内存分配——静态存储区 栈 堆

一、内存基本构成 可编程内存在基本上分为这样的几大部分:静态存储区、堆区和栈区。他们的功能不同,对他们使用方式也就不同。 静态存储区:内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。它主要存放静态数据、全局数据和常量。 栈区:在执行函数时,函数内...

2017-10-17 13:14:33

阅读数 211

评论数 0

原创 模拟实现堆+堆的应用

堆数据结构是一种数组对象,它可以被看作一颗完全二叉树的结构(数组是完全二叉树),堆是一种静态结构。 堆分为最大堆和最小堆。 最大堆:每个父结点都大于孩子结点。 最小堆:每个父结点都小于孩子结点。堆的优势:效率高,可以找最大数最小数,增删的时间复杂度为lgN,快 怎么找最后一个叶子结点? ...

2017-10-16 21:07:43

阅读数 242

评论数 0

原创 二叉树的基本操作实现(递归和非递归)

二叉树:二叉树是一棵特殊的树,二叉树每个节点最多有两个孩子结点,分别称为左孩子和右孩子。 满二叉树:高度为N的满二叉树有2^N- 1个节点的二叉树。完全二叉树: 若设二叉树的深度为h,除第h 层外,其它各层(1~h-1) 的结点数都达到最大个数,第h 层所有的结点都连续集中在最左边,这就是完全二叉...

2017-10-12 15:01:03

阅读数 245

评论数 0

原创 迷宫求解

问题:给指定的入口与出口,求该迷宫的通路。 思想: 1,我们要考虑越界问题。 2,我们要试探下一个位置是否可以通过,若这个位置上下左右都不能通过,则返回上一个位置。再去下一个位置。 代码的实现://建立一个存放坐标的结构体 struct Pos { size_t _row; ...

2017-10-10 14:03:14

阅读数 174

评论数 0

原创 栈和队列,以及模拟实现

栈栈只允许在末端进行插入和删除的线性表。 栈具有后进先出的特性。 所以栈的插入删除都是在栈顶进行操作的,可以取栈顶元素(Top)实现:用顺序表实现,由于他只能在栈顶进行操作,所以优选顺序表实现应用:递归图解: 栈模拟实现代码:#include<iostream> #include...

2017-09-28 09:06:48

阅读数 147

评论数 0

原创 面试题(实现一个栈,要求实现Push、Pop、Min的时间复杂度为O(1))

面试题(判断元素出栈入栈顺序的合法性。) 面试题(两个栈实现一个队列和两个队列实现一个栈) 实现一个栈,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1) 解题思路: 我们定义两个栈分别为s1,s2。我们用s2保存最小值,s1保存原来的值 Pus...

2017-09-26 15:23:25

阅读数 649

评论数 0

原创 面试题(判断元素出栈入栈顺序的合法性。)

面试题(实现一个栈,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)) 面试题(两个栈实现一个队列和两个队列实现一个栈) 判断元素出栈,入栈顺序的合法性 如:入栈的序列(1,2,3,4,5),出栈序列为(4,5,3,2,1)是合法序列 入栈的序列...

2017-09-26 13:56:12

阅读数 417

评论数 0

原创 面试题(两个栈实现一个队列和两个队列实现一个栈)

面试题(判断元素出栈入栈顺序的合法性。) 面试题(实现一个栈,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1))1,两个栈实现一个队列我们知道栈是后进先出的,而队列是先进先出的 我们创建两个栈input(输入栈),output(输出栈) 我们用inp...

2017-09-26 09:25:16

阅读数 1932

评论数 0

原创 STL中vector的使用以及模拟实现

vector:vector是一个动态增长的一个数组,它和数组是非常相似的。 vector与数组的区别在于空间运用的灵活性。 数组是静态空间,一旦配置了就不能改变,如果要增大空间,就需要重新开辟一个更大的空间,把原来数组的元素拷贝进去,然后在把原来的空间释放还给操作系统。 而vector是动态...

2017-09-23 09:58:23

阅读数 173

评论数 0

原创 STL中list的使用及模拟实现

list:带头结点的双向循环链表 我们先来看看在STL中list的各个接口的使用#include<windows.h> #include<iostream> #include <algorithm> #include<list> using na...

2017-09-19 14:27:43

阅读数 257

评论数 0

原创 C++中 引用 和 const

在C++中,引用是给已经存在的变量取一个别名,引用既可以传值也可以达到指针的效果,它和它的引用的变量共用同一块内存空间。1.引用定义的格式为: 类型 &对比指针和引用 1. ⼀个变量可取多个别名 2. 引 对比

2017-08-17 11:08:58

阅读数 109

评论数 0

原创 Windows下Python安装教程

Windows下安装Python 本人电脑为Win10 64位 打开Python官方网站 https://www.python.org/ 如图,电脑32位的话点击Python3.6.2进行下载 如果是64位,点击Downloads目录下的All releases 选择你要下载的版本,...

2017-08-14 19:43:51

阅读数 283

评论数 1

原创 C++模板及用模板实现双向循环链表,顺序表

模板是泛型编程的基础。 所谓泛型编程就是编写与类型⽆关的逻辑代码,是⼀种复⽤的⽅式。 模板分为模板函数和模板类。函数模板格式: template <class 形参名1, class 形参名2, class 形参名n> 返回类型 函数名(参数列表) { ... } 模板形参...

2017-08-04 20:22:08

阅读数 292

评论数 3

原创 区分重载,重写(覆盖),重定义(隐藏)

重载: 1,在同一作用域中 2,函数名相同,参数不同 3,返回值可以不同重写(覆盖): 1,不在同一作用域中(分别在子类和父类中) 2,函数名,参数,返回值相同(协变除外,协变的返回值不同)。 3,基类函数必须有virtual(最好都写)。 4,访问修饰符可以不同。重定义(隐藏): ...

2017-08-02 18:27:34

阅读数 131

评论数 0

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