自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(46)
  • 收藏
  • 关注

原创 mysql忘记root密码后怎么重置

windows下忘记mysql的root密码,可以使用这个方法来重置

2024-01-09 16:31:16 439

原创 http-server安装使用

前段时间给电脑重装了系统,很多东西都没了,今天想在浏览器打开一个本地的html文件,发现电脑上没有http-server,于是装了一个,并且记录下安装过程在cmd中输入 node -v 像我这样显示版本号,就说明是有的,直接去第二步就好如果提示node不是命令,就去官网下载安装,建议安装LTS(长期稳定)版本下载安装完成后,重新打开cmd,输入node -v,如上图提示即为成功cmd中输入: npm install http-server -g如下图所示。

2023-11-13 10:35:18 376

原创 chatai简单使用

然后拿着这个第一种方式去试了下,果然可以断言,一个用例就写好了,不得不说还挺方便的。接下来犯难了,因为不知道要怎么去判断返回值是否是当前这个对象的value值。刚好最近公司在推荐使用chatai,就用它试了一下如下是结果。测试的时候我先调用了这个接口,然后获取到了返回值。最近在补测试用例,有一个方法的接口文档是这样的。

2023-06-05 11:49:05 1054

原创 生日快乐网页

简单的生日快乐祝福网页

2022-09-08 18:19:35 3391 5

原创 shadow-root中的元素定位方法

shadow-root中的元素定位方法背景观察一下元素的DOM结构我理解的shadow-root定位步骤实现元素定位的语句还有一种更简单的方法背景最近接手了一个新项目的测试工作,前几天领导让做自动化,本来以为平平无奇的自动化,结果开始写的时候就给我难住了,明明白白的看见元素就在页面上,用了css、xpath等各种定位方法,却怎么都定位不到,搞得我差点怀疑自己之前学的定位方法都是假的。直到我师父给我点拨,说shadow-root里面的元素不能用普通的定位方法,才指引我走上正确的道路。观察一下元素的DO

2022-01-26 12:01:26 14758 8

原创 用JavaScript实现一个简单的网页版计算器

背景实现效果最终展现的页面如下图用到的技术实现思路具体实现代码

2021-08-05 20:59:34 9180 9

原创 C# 创建一个简单的单元测试实例(MSTest框架)

目录背景单元测试简介所用环境一个实例1. 创建一个被测项目2. 创建一个测试项目3. 引用4. 执行测试5. 通过代码直接生成测试用例类6. 测试用例的写法7. 参数化8. 设置超时9. 调试背景最近在看单元测试,因为公司要求使用语言为C#,所以探索了一下微软自带的一个单元测试框架MSTest,研究了半天终于跑通了,决定记下来,供自己日后参考单元测试简介所谓单元测试(unit testing),就是开发者编写的一小段代码,用于对软件中的最小单元进行检查和验证,其一般验证对象是一个函数或者一个类。通常

2021-05-11 10:49:06 6210 16

原创 Node.js安装(windows版)

1、官网下载链接http://nodejs.org/官网选择自己需要的版本2、安装node.js运行下载的msi文件,进入安装页面,根据提示安装,安装路径可以更改,但路径中尽量不要含中文这里我选择了npm选项,以用于后续依赖包的安装接着一路next下去,提示安装完成3、查看是否安装成功(1)可以在cmd中输入path,查看path是否已经有我们刚刚安装的那...

2019-06-03 17:08:48 405

原创 Java安装

安装java1、官网下载链接https://www.oracle.com/technetwork/java/javase/downloads/jdk12-downloads-5295953.html2、安装JDK运行下载好的exe文件,跟着提示安装,可以更改安装路径,但路径最好不要包含中文和特殊符号提示安装完成,关闭安装对话框3、配置环境变量我的电脑-&gt...

2019-06-03 16:29:54 1737

转载 解决ubuntu虚拟机连不上网和ifconfig没有IP

一 、设置NAT网络ubuntu版本:ubuntu-16.04-desktop-amd64.iso设置虚拟机不能联网是很痛苦的,这里我就ubuntu的NAT上网问题就个人经验讲一下,其他的桥连接等没有使用就没有经验了。1.查看/设置下NAT的网络打开VMware Workstation,点击编辑——虚拟网络编辑器,查看NAT模式的网络。如下图示,如果你对自动分配的子网I...

2019-04-19 23:05:46 2736

原创 Xshell 设置常用的快捷键

Xshell设置常用的快捷键,例如:Crtl+C、Crtl+V、Crtl+F等等,会让我们的工作变得更加方便,接下来看看要怎么设置吧1、打开Xshell,选择“工具”->“选项”2、“键盘和鼠标”->“编辑”3、在设置快捷键之前,需要先查看一下是否已经存在了点击 查找 直接在键盘上Ctrl+C 看到不存在以后,直接点击是,进行添加4、选择 “...

2019-03-15 11:18:27 11518 2

转载 解决ubuntu16.04终端打不开

Ubuntu16.04LTS安装了自带的Python3软件包,结果发现版本是3.5心血来潮升级了Python到3.6,并且也成功地将默认Python版本换成了Python3.6.3然后发现终端打不开了,点击图标显示正在打开但并不能打开,使用Ctrl+alt+T也打不开于是开始查找解决办法,最终在以下贴中找到方法:https://blog.csdn.net/u010395144/ar...

2019-03-06 15:08:44 20557 9

原创 合并两个有序的单链表

题目:合并两个递增的单链表,使合并后的新链表中的节点依然是按照递增排序的。链表结点定义如下:struct ListNode{ int val; ListNode next;};分析:我们从链表头结点开始分析,如果链表1头结点的值小于链表2头结点的值,那么链表1的头结点就是合并后新链表的头结点。    我们继续合并两个链表中剩余的结点,依旧是比较两个链表头结点的值,找

2017-08-22 23:29:09 506

原创 判断一棵二叉树是不是完全二叉树

判断是否是完全二叉树:找到第一个度不为2的节点标记起来,如果后面的节点还有孩子则不是完全二叉树bool _IsCompleteBinaryTree(Node* _pRoot) { if (_pRoot == NULL) return true; Node* pCur = _pRoot; if ((pCur->_pLeft == NULL) && (pCur->_pRigh

2017-07-27 14:37:31 427

原创 二叉树的镜像(递归和非递归)

二叉树的镜像原理很简单,就是左子树变成右子树,每个节点都遵循这个原则就是镜像,直接来看代码 //二叉树镜像(递归) void _GetBinaryMirror(Node* _pRoot) { if (_pRoot == NULL) return; Node* pCur = _pRoot; if (pCur->_pLeft == NULL && pCur->_pR

2017-07-27 14:35:30 730

原创 二叉树的几种遍历方式

二叉树遍历可以分为深度优先遍历和广度优先遍历;其中深度优先又可根据访问根节点的次序不同分为:先序遍历(前序遍历)、中序遍历和后序遍历;前序遍历:根----->左子树---->右子树中序遍历:左子树---->根----->右子树后序遍历:左子树---->右子树----->根以下是递归的代码://前序遍历(递归)void _PreOrder(Node* _pRoot)

2017-07-27 14:31:39 323

原创 用两个栈实现一个队列

栈的顺序是先进后出,队列则是先进先出。假设两个栈分别为stack1和stack2,入队列相当于在stack1中入栈,出队列时将stack1中的元素全部搬到stack2中,然后在stack2中出栈,如果stack2中没有元素了,就去stack1中搬元素。template class CQueue{public: CQueue(); ~CQueue(); void push_queu

2017-07-21 15:22:51 225

原创 面试题---从尾到头打印链表

看到这道题,我们肯定会想到要遍历链表。遍历链表的顺序是从头到尾,输出却要从尾到头,相当于说第一个遍历的节点最后一个输出,最后遍历的节点第一个输出。这样我们会想到先进后出----栈,先让所有元素都入栈,出栈的时候顺便打印输出就可以了。而递归本质上也是一个栈结构,所以递归也可以解决问题。void PrintListTailToFront_Stack(Node* pHead) //从尾到头打印

2017-07-20 14:57:01 251

原创 删除无头单链表的非尾节点

删除无头单链表的非尾节点:可以转化为删除该节点的下一个节点,删除之前把之传给该节点即可。可以不要返回值,此处我加上返回值信息是为了判断是否删除成功。 int DelNotTail(Node* pos) //删除非尾节点{ if(pos == NULL || pos->_next == NULL) return -1; else //让pos保存po...

2017-07-20 14:52:38 281

原创 面试题----判断两个链表是否相交(可能带环)

判断两个链表是否相交(可能带环):这个问题我们可以根据是否带环来分三种情况,情况一:两个链表都不带环;   情况二:其中有一个链表带环;   情况三:两个链表都带环。下面我用一张图片来进行更详细的分类,之后写代码也是按照这种划分思想。

2017-07-17 14:48:18 466

原创 面试题----单链表带环问题

关于单链表带环问题:1、怎样判断一个单链表是否带环;        2、如果带环,环的长度怎么计算;3、如果带环,怎么求环的入口;1、怎样判断一个单链表是否带环:我们知道,单链表如果带环,那么从链表头开始遍历就会进入死循环。其实我们可以用上篇博客中提到的两个指针移动的思想来求解,在这里可以让两个指针移动速度不同,首先令两个指针fast和slow同时指向链表头部,然后每次使fast走两步

2017-07-17 01:18:18 339

原创 查找单链表中倒数第k个节点

查找单链表中倒数第k个节点,拿到这道题,我们首先肯定能想到先遍历链表得到节点总数n,然后再去从头往后走n-k+1步就能得到想要的节点。这种方法当然是可行的,也是比较容易想到的方法,但是有的宝宝就会想这样做要遍历两次链表,有没有什么方法只遍历一次链表就能找到节点办法当然还是有的,我们可以利用两个指针遍历链表。刚开始把两个指针pAhead和pBhead都放在链表的头指针处,让pAhead向后走k步

2017-07-15 19:23:21 2000 1

原创 单链表的逆置(翻转)

给定一个单链表,我们怎么让它逆置呢?我的思想是利用指针的移动来做。当然首先我们必须考虑到一种特殊情况:这个链表中没有元素或者只有一个元素,那么这个链表逆置之后的结果仍然是原链表,所以如果遇到这种情况,我们就可以直接返回这个链表的头指针。除去这种特殊情况,我们来到了至少有两个元素的链表的处理,首先我们需要有两个指针pRev和pCur,令pCur指向头结点,pRev指向pCur(头结点)之

2017-07-15 10:45:44 3795 2

原创 合并两个有序链表

给出两个有序链表,合并成一个链表之后依然有序,这里给了两种方法,分别是非递归和递归,代码如下:Node* MergeList_Nor(Node* pHead1, Node* pHead2) //合并单链表(非递归){ if(pHead1 == NULL) return pHead2; if(pHead2 == NULL) return pHead1; Node* pHead =

2017-07-14 16:28:13 308

原创 shell脚本中的eval、‘‘和$()

eval会对后面的命令行进行两遍扫描,如果第一遍扫描后命令行是个普通命令,则执行此命令;如果命令行是个复杂命令将会进行所有的置换,然后再执行该命令。该命令适用于那些一次扫描无法实现其功能的变量,使用该命令对变量进行两次扫描。

2017-07-04 17:10:16 1394

原创 select服务器

select函数只负责等   其中第一个参数是所有文件描述符数值最大值加一,剩下的4个参数,既是输入性参数,又是输出型参数,输入时和输出时含义完全不同    select 调用时所有参数必须重新设置 ,以下是select服务器只有读功能下的代码:

2017-06-30 15:38:56 191

转载 NAT技术和代理服务器

NAT技术-网络地址转换来源:在Internet网上广泛使用的IPV4技术由于NAT技术,中文翻译为网络地址转换。该技术产生的原因:IPv4地址危机,在Internet上应用广泛的IPv4技术,由于其先天性不足,在九十年代初期时,已经预计到了IPv4地址不足,从而开始开发IPv6技术。但开发IPv6需要足够的时间,为了延长IPv4技术的使用时间,产生了NAT技术。 NAT技

2017-06-26 17:30:36 360

原创 URG和PSH

TCP首部的字段URG和PSHURG:Urget pointer is valid (紧急指针字段值有效)PSH: 表示有 DATA数据传输    urg=1,紧急指针指向包内数据段的某个字节(数据从第一字节到指针所指字节就是紧急数据,不进入接收缓冲就直接交给上层进程,余下的数据要进入接收缓冲)    psh=1就是把接收缓冲中排好序的那一段数据交给上层

2017-06-26 17:22:06 241

原创 常见的TCP定时器

TCP 是提供可靠的传输层,它使用的方法之一就是确认从另一端收到的数据。但是数据和确认都可能会丢失,TCP 通过在发送时设置一个定时器来解决这个问题。如果当定时器溢出时还没收到确认,它就会重传该数据。常见的四种TCP定时器(Timer):重传计时器:Retransmission Timer坚持计时器:Persistent Timer保活计时器:Keeplive Timer

2017-06-26 15:30:20 261

原创 端口号及分类

端口号:    在网络技术中,端口(Port)包括逻辑端口和物理端口两种类型。物理端口指的是物理存在的端口,如集线器、交换机、路由器上用于连接其他网络设备的接口,如RJ-45端口、SC端口等等。 逻辑端口是指逻辑意义上用于区分服务的端口,如TCP/IP协议中的服务端口,端口号的范围从0到65535,比如用于浏览网页服务的80端口等。由于物理端口和逻辑端口数量较多,为了对端口进行区分,将每个端口

2017-06-26 15:07:33 1215

原创 ARP脚本

1、什么是ARPARP(Address Resolution Protocol)即地址解析协议,是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。2、ARP的功能在通过

2017-06-20 17:53:01 240

原创 CRC校验

CRC校验:CRC即循环冗余校验码(Cyclic Redundancy Check),是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余校验码(CRC)的基本原理:在K位信息码后再拼接R位的校验码,整个编码长度为N位,因此,这种编码也叫(N,K)码。对于一个给定的(N,K)码,可以证明存在一个最高次幂为N-K=R的多项式G(x)。根据G(x)可以生成

2017-06-12 15:37:27 225

原创 关于crond和crontab

crontab是一个指令,常见于Linux和Unix操作系统之中,用于设定周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于"crontab"文件中,以供之后读取和执行。

2017-06-08 21:41:21 247

原创 AVL树旋转总结

2017-06-07 01:20:38 210

原创 守护进程(精灵进程)

守护进程(daemon): 守护进程也叫精灵进程,是运行在后台的一种进程。它独立于控制终端,本身是一种孤儿进程,并且一般的守护进程都已d结尾,例如sshd。后台进程一般具有的性质是无输入输出,持久的运行着。如何创建守护进程?创建守护进程主要分六个步骤:1、调用umask将文件模式创建屏蔽字设置为0(即新文件权限为6 6 6);2、调用fork函数创建一个子进程,然后让父

2017-06-06 22:50:33 458

原创 造成死锁的四个必要条件

死锁:是指系统中两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。造成死锁的三个原因:1、系统资源不足;2、进程运行推进的顺序不合适;3、资源分配不当;产生死锁的四个必要条件:1、资源独占(互斥性):一个资源每次只能有一个进程占用。2、占有且等待(请求和保持):一个进程因请求资源而阻塞时,对已获得

2017-03-31 16:25:03 961

原创 大数运算之加法

大数运算就是很大的数字在进行运算,这个很大的数是int,long int和long long int都无法表示的(超出范围)。所以我们可以把这个大数存放在一个字符数组中,一个一个元素进行操作。大数加法可以定义两个字符数组num1,num2存放大数,之后将数组翻转,使num1[0]和num2[0]存放两个大数的最低位,从最低位开始一位一位相加,将结果保存到num1中,打印出num1就是大数相

2017-03-30 20:32:27 414

原创 atexit函数和进程终止方式

atexit函数:按照ISO C的规定,一个进程可以登记多达32个函数,通常这32个函数被称为终止处理程序,并调用atexit函数来登记这些函数。用  法: int atexit( void ( __cdecl *func )( void ) );头文件: #include功  能: 注册终止函数(即main函数执行结束后调用的函数)返回值: 成功返回0,失败返回非0值此处

2017-03-02 19:10:17 482

转载 CentOs vim配置

1.在工作目录~/下用ls -a查看是否有.vimrc文件,如果没有就建立touch.vimrc新建该文件,在目录下新建目录 .vim,并进入.vim目录,建立plugin、doc、syntax三个目录             命令: $ mkdir .vim                 $ cd .vim         $ mkdir plugin do

2017-02-28 20:48:32 340

原创 日期类

class Date //日期类{public: Date(int year = 2017, int month = 1, int day = 1) //构造函数 :_year(year) ,_month(month) ,_day(day) { if( !(_year>0 && (_month>0 && month0 && _day<= GetDaysInMonth(_

2017-02-22 00:12:27 207

空空如也

空空如也

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

TA关注的人

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