自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 HttpRunner功能梳理

一、HttpRunner的功能1、JSON格式检测作用:检测JSON格式的正确性关键字:validate格式:hrun --validate test.json说明:其中test.json为json格式的文件名,并且可一次性指定多个文件2、JSON格式美化作用:美化JSON的格式,使得测试脚本便于维护和阅读关键字:prettify格式:hrun --prettify...

2018-04-02 12:06:46 3958 1

原创 python实现杨辉三角

一、什么是杨辉三角 如上图所示,一目了然 二、用python实现杨辉三角 说明:这里只打印10行哦 测试用例: 正在学习廖雪峰老师的python教程,大家有疑问可以访问教程链接生成器...

2018-03-21 20:01:12 722

原创 初识HttpRunner

一、简介1、什么是HttpRunner 一款面向http/https的通用自动化测试框架 2、HttpRunner的功能 自动化测试 性能测试 线上监控 持续集成二、安装既然HttpRunner这么多好处,当然要迫不及待地试试啦~ 1、安装环境 centOS 6.5 python 3.6 说明:如何安装centOS 6.5,请老铁们参见VMware虚拟机下安装c...

2018-03-10 18:18:22 12791 5

原创 让一个类只在堆/栈上创建对象

1、类创建对象的两种方式类创建对象有两种方式,一种是静态创建对象:A a;还有一种方式是动态建立A* pa=new A; 这两种方式是不同的,第一种方式是为对象在栈上开辟空间,另一种方式是为对象在堆上开辟空间。2、如何让一个类只在堆上创建对象?想法一:如果只能在堆上创建对象的话也就意味着不能在栈上创建对象,而我们知道要创建对象必须调用类的构造函数,在这里有很多人就会想到将构造函数设置为私有的,这样

2017-08-02 10:55:58 622

原创 链表相交问题

1、判断两个链表是否有交点,假设不带环问题描述:如果两个链表相交,则返回交点,如果不相交,则返回NULL 解题思路一:(1)先求出两个链表的长度l1,l2 (2)求出长度的差值k (3)让较长的链表先走k步,然后两个链表一起向后移动,如果有相等的节点,则说明链表相交 当然还要考虑链表为...

2017-07-17 21:14:10 407

原创 链表带环问题

1、判断链表是否带环基本思路:定义两个指针,一个快指针,一个慢指针,快指针一次走两步,慢指针一次走一步,当两个指针重合的时候,说明该链表是带环的,当快指针为空或者快指针的下一个节点为空,说明是不带环的。 代码实现/** * Definition of ListNode * class ListNode { * public: * int val; * ListNode *

2017-07-16 10:26:28 427

原创 const的用法总结

const在C和C++中有很多的用法,先将const的用法做如下总结。1、const修饰变量const修饰变量,可以使变量具有常属性,也就是该变量在以后的使用中其值都不能进行改变。const a=10;a = 20;//错误,不能修改

2017-07-15 15:06:50 632

原创 函数调用时的开销

问题引入在学习C语言时,老师强调过调用函数时会有开销,但是函数调用的开销体现在哪几个方面并不十分清楚!!举例说明写一个两数求和的代码,此代码中不调用函数#include <stdio.h>int main(){ int a = 10, b = 20, c = 0; c = a + b; printf("%d\n", c); return 0;}该程序对应的反汇编

2017-07-13 16:07:24 1828

原创 求1~n的和

题目描述实现1+2+3…+n,要求不能使用乘除法、循环、条件判断、选择相关的关键字。思路使用递归来解决这个问题代码#include &lt;stdio.h&gt;int add(int n,int&amp; sum){ n &amp;&amp; add(n - 1,sum); return sum += n;}int main(){...

2017-07-13 13:40:16 1024

原创 合并两个有序链表

描述合并两个有序的单链表,使合并之后的结果仍然有序样例给出 1-&gt;3-&gt;8-&gt;11-&gt;15-&gt;null,2-&gt;null 返回 1-&gt;2-&gt;3-&gt;8-&gt;11-&gt;15-&gt;null代码/** * Definition of ListNode * class ListNode { * publi...

2017-07-13 08:46:54 156

原创 Linux下的git配置

前言:最近学习了网络编程,想将自己的代码提交到git上进行托管,但是发现自己的Linux上并没有git,于是就进行了git的配置之路。一点小插曲一、查看自己是否已经安装过git?输入 git –version 如果已经安装了,就会显示git的版本信息 如果没有安装就会输出 “bash:git:command not found” 如果没有安装就要进行下一步了。...

2017-07-08 18:49:11 560

原创 Linux下的五种I/O模型

一、五种I/O模型1、阻塞I/O模型 应用程序调用一个I/O函数,导致应用程序阻塞,等待数据,如果数据没有准备好,则一直阻塞,直到数据准备好,将数据从内核空间拷贝到用户空间,I/O函数成功返回。 2、非阻塞I/O模型 将套接口设置为非阻塞形式就是告诉内核,当所请求的I/O函数还没有准备好时,直接返回错误,而不让进程进入睡眠状态,此后,I/O函数不断地测试数据有没有准备好,如果数据没有准备好,则

2017-06-30 16:14:23 385

原创 TCP定时器

一、常见的四种TCP定时器 1、超时重传计时器 2、坚持计时器 3、保活计时器 4、时间等待计时器 二、四个定时器的特点和应用场景 1、超时重传计时器(Retransmission Timer) 超时重传计时器:为了控制丢失的报文段,设置的一种定时器。发送端在将TCP报文发送出去之后会等待目标端对该报文的确认,此时等待的结果有两种:当超过定时器设置的时间还没有收到确认的话,则认为刚才发

2017-06-25 12:38:49 485

原创 TCP报头中的URG和PSH

一、URG 紧急URG(URGent)当URG=1时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应该尽快传送,而不按照原来的排队序列来传送。 当URG=1时,发送应用进程告诉发送方的TCP有紧急数据要传送,于是发送方的TCP就将紧急数据插入到本报文数据段的最前面,而在紧急数据后面的数据仍是普通数据。 二、PSH 推送(PuSH),当两个应用进程进行交互式的通信时,有时一端的应用进

2017-06-24 21:42:05 673

原创 端口

一、端口的概念 端口是设备与外部通讯交流的接口,一般端口可以分为虚拟端口和物理端口,虚拟端口就是计算机或者交换机路由器内部的接口,一般不可见,而物理端口一般是可见的。 二、端口的类型 1、硬件端口 CPU通过接口寄存器与外部设备进行数据传送,这些硬件寄存器就称为端口或者接口。 2、软件端口 一般指网络中面向连接(TCP)和无连接(UDP)的通信协议端口,包括数据I/O和缓冲区。 (1)

2017-06-24 21:17:47 846 1

原创 路由算法

一、路由算法的基本概念 1、什么是路由算法 路由算法是提高路由协议功能,减少路由时开销的一种算法。它的目的是找到源路由器到目的路由器的最佳路径。 2、设计路由算法时应考虑的因素 (1)最优化 路由算法必须能够在源路由器和目的路由器之间找到最优路径。 (2)简洁性 由于计算机物理资源有限,因此路由算法必须保证简洁,以减少软件和应用的开销。 (3)坚固性 当出现任何非正常或者不可预料的

2017-06-24 16:19:13 1586

原创 NAT技术与代理服务器

一、背景知识之虚拟专用网VPN 1、VPN的基本概念 VPN(Virtual Private Network)是虚拟专用网,在介绍这个知识之前,先引入几个基础知识。 (1)全球地址 全球地址就是由因特网管理机构分配的全球唯一的IP地址。 (2)专用地址 基本概念:由于全球IP地址的短缺,再加上在同一机构内的主机很少需要和外部因特网上的主机进行通信,更多的是和同一机构内的主机进行通信,因此

2017-06-20 16:26:56 576

原创 ARP协议

一、理解ARP协议 1、ARP协议的基本概念 (1)ARP协议就是地址解析协议; (2)ARP协议是网络层的协议; (3)ARP协议的用途是从网络层的IP地址解析出在数据链路层的硬件地址; (4)每台主机都有一个ARP高速缓冲区,该缓冲区中存放了本局域网上各主机和路由器的IP地址到硬件地址的映射表。注意:该映射表经常动态更新。 2、ARP协议的格式 (1)格式如下图 说明: (

2017-06-19 17:17:51 473

原创 CRC循环冗余校验

一、背景知识 1、比特差错 现实的通信链路都不会是理想的,因为比特在传输过程中可能产生差错:1可能变成0,0可能变成1,这就叫做比特差错。 2、误码率 在一段时间内,传输错误的比特占所传输的比特总数的比率成为误码率。误码率和信噪比有很大的关系,如果设法提高信噪比,就可以使误码率减小。 3、为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用个中差错检测措施,目前使用最广泛的就是CRC

2017-06-19 16:19:39 1329

原创 子进程的异步等待方式

通过之前所学的知识,我们可以了解到,通过wait函数或者waitpid函数可以清理僵尸进程,父进程可以通过两种方式等待子进程,一种是阻塞方式,另一种是非阻塞方式,而不管是那种方式,父进程都做不到完全不理会子进程而去完成自己的动作,即子进程不能达到异步等待的目的。 一、SIGCHLD信号 1、关于SIGCHLD信号 子进程在终止时会给父进程发SIGCHLD信号,该信号的默认处理动作是忽略,父进程

2017-06-15 21:30:30 296

原创 线程安全和可重入函数

一、线程安全 1、什么是线程安全? 如果一个进程中有多个线程在同时运行,这些线程可能会同时运行同一段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就表示线程是安全的。 线程安全问题是由全局变量和静态变量引起的。 2、如何避免线程安全问题 (1)使用线程安全的类 (2)使用synchronized同步代码块,或者用Lock锁 (3)多线程并发

2017-06-15 19:15:22 342

原创 守护进程

一,守护进程的基本概念 守护进程又名精灵进程,该进程是一种运行在后台的特殊进程,它独立于控制终端并周期性的执行某种任务或等待处理某些发生的事件。 在理解守护进程之前,需要先了解一些基础知识,即进程组、作业、会话以及终端。 二、进程组、作业、会话 1、进程组(Proess Group) (1)进程组由一个或者多个进程组成; (2)每个进程组都有一个组长进程,而组长进程往往是该进程组中的第一

2017-06-15 16:10:40 330

原创 信号基本概念

一、信号的基本概念 通过一个普遍例子来引入信号这个基本概念 1、自己写一个前台进程,在client.c文件中写一个程序,然后运行该程序 2、用Ctrl+c组合键来使该进程中断 3、分析一下该中断的过程 (1)用户创建一个前台进程 (2)输入Ctrl+c组合键,产生硬件中断 (3)如果CPU正在执行该前台进程,则暂停执行用户空间代码,CPU从用户态切换到内核态去处理该硬件中断

2017-06-14 15:39:11 785

原创 atexit函数

一、什么是atexit函数? 1、头文件 stdlib.h 2、函数功能 登记进程中的函数 3、atexit函数的使用 代码如下: 改程序的运行结果如下: 由上图可知,程序每被登记一次就被调用一次并且调用这些函数的顺序和它们登记时候的顺序相反。

2017-05-11 19:13:46 347

原创 僵尸进程和孤儿进程

一、概念的引入 在Linux环境中,子进程是父进程通过fork函数创建的,子进程和父进程相互独立,子进程和父进程的运行是异步的,当一个进程因为某种原因终止时,它的父进程需要调用wait()或者waitpid()系统调用取得子进程的终止状态。 1、僵尸进程 一个终止了但是没有被父进程回收的进程成为僵尸进程。 2、孤儿进程 如果一个进程正在运行但是它的父进程终止了,此时该进程就是孤儿进程,系统

2017-05-11 17:59:16 519

原创 进程基本概念

一、题外话 说到进程这个概念,还是以前上机的时候,每当VS卡得运行不了的时候,老师就会让我们打开任务管理器,在进程那个窗口下,选中VS,然后结束掉这个进程,如下图所示: 那时还不懂什么是进程,但是能猜到大概的意思应该就是一个程序在运行时的状态。 最近的一段时间在学习Linux方面的东西,对进程做了进一步的了解,下面就来看一看进程的相关知识。 二、进程的基本概念 1、先来看一下不同的书籍

2017-04-16 21:26:43 549

原创 初识Linux下的进程

一、回顾Linux体系结构 通过之前对Linux系统的简单接触,我们对Linux有了简单的了解,请允许我盗图进行说明 简单的来说,Linux体系结构可以描述为 1、操作系统 (1)操作系统其实也是一组程序,这组程序的重点在于管理计算机的所有活动以及驱动系统中的所有硬件; (2)操作系统必须要能够驱动硬件,如此应用程序才能够使用硬件功能; 2、系统调用 为了保护内核,并且保

2017-04-14 12:31:24 460

原创 实现一个简单的进度条

提纲:本文主要说明了Linux系统和Windows系统下回车和换行的区别,以及Linux下缓冲区的问题,最后运用这两点知识实现一个简单的进度条。 一、关于回车和换行 不同操作系统下的回车和换行 1、Windows操作系统下 回车’\r’:就是将光标移到本行的开头,并将之前的内容覆盖掉; 换行’\n’:就是将光标移到下一行的开头;2、Unix/Linux系统下 回车’\r’:就是将光标移到

2017-04-13 12:19:04 963

原创 vim的简单配置和插件安装

提纲:本文简单阐述了一下CentOS6.5下vim的简单配置和插件的安装步骤。一、为什么要配置vim 作为一个初识Linux的菜鸟,第一次打开vim准备编写一个小程序来练练手,却被它的格式打败了,真是别扭至极,因此就自己尝试着简单配置一下vim,日后如果有需求会做进一步的完善。 二、什么是vim Vim是一款Linux下的文本编辑器,与我们使用的VS不同,它是通过键盘来进行文本编辑的,要想提高

2017-03-31 20:45:12 443

原创 Linux下的粘滞位

一、粘滞位产生的原因 没有粘滞位的时候,如果用户对目录有写权限,则可以删除其中的文件和子目录,即使该用户不是这些文件的所有者。为了防止这一现象的出现,就设置了粘滞位,粘滞位出现执行许可的位置上,用t表示,设置了该位后,其它用户就不可以删除不属于他的文件和目录。 总的来说,粘滞位的产生是为了保护文件或者目录的安全。 二、注意事项 粘滞位只针对目录有效,对文件无效。 三、粘滞位的作用 若一个

2017-03-28 22:35:22 422

原创 C语言的词法规则

提纲:本文主要介绍了C语言中的词法规则,包括字符、注释、接续符、标识符 一、字符 1、字符集都包括什么? 标准规定字符集包括英语所有的大写字母和小写字母、数字0~9、以及! ” # % ’ * + , - . / : ; = ? \ ^ _ | ~ <> {} () []等符号。 2、分类 (1)普通字符 由单引号括起来的一个字符; (2)

2017-03-28 20:25:22 6217

原创 Linux下命令与文件的查询

提纲:本文简单介绍了几个在Linux下查询命令与文件指令,包括which、whereis、locate、find四个指令。 一、为什么要有这些查找指令? 通过对Linux系统的简单了解,我们都知道Linux系统始终遵循的一个思想就是“Linux下一切皆文件”,那么既然Linux系统中有如此多的文件,当我们想对其中的一个文件进行查找或者维护时就必须得快速的找到它,因此Linux系统提供了这几个查询

2017-03-27 00:46:50 546

原创 STL一级空间配置器

提纲:本文主要分析STL一级空间配置器的源代码并模拟实现一级空间配置器 一、什么是STL STL(standard Template Library,标准模板库),是算法和一些组件的结合,STL有六大组件,彼此可以组合套用,六大组件分别是 1、容器(containers):各种数据结构,如vector,list,deque,set,map等,用来存放数据。 2、算法(algorithms)...

2017-03-25 22:49:37 527

原创 运行C程序的步骤

提纲:这篇文章介绍了一个编辑好的C程序是如何在集成开发环境中运行的,其中简介了编译、链接、执行等步骤一、背景知识 C语言编写的程序是源程序,计算机不能直接识别和执行高级语言所写的指令,必须用编译器把C源程序翻译成二进制形式的目标程序,然后再将目标程序与系统的函数库以及其他目标程序连接起来,形成可执行程序。 将一个C程序编写好之后,要在计算机上运行,必须经历以下几个阶段: 二、翻译 1、文件名

2017-03-24 13:09:18 5333

原创 Linux的文件与目录权限

一、背景知识 1、Linux是一个多用户、多任务系统,因此常常有个用户同时使用一台主机来进行工作,为了让各个用户具有较保密的文件数据,就需要有文件的权限管理。 2、Linux系统文件有三个身份 所有者(owner) 用户组(group) 其他人(others) 3、每种身份都有三种权限 可读(read) 可写(write) 可执行(execute) 二、文件属性 1、通过指令l

2017-03-24 11:30:07 386

原创 初识Linux

一、计算机体系结构 1、计算机的概念 计算机其实就是接收用户输入的指令和数据,经过中央处理器(cpu)处理后,以产生或存储成有用的信息。 2、计算机体系结构图 几点说明: (1)在Linux操作系统下,存储器就表示的是内存; (2)CPU只和内存打交道,不直接和输入输出设备进行数据交换。 3、计算机系统与操作系统的关系 计算机系统主要由硬件构成,操作系统主要用于管理和驱动硬件。

2017-03-21 18:39:25 370

原创 快速排序

一、快速排序简述 1、快速排序是对冒泡排序的一种改进; 2、快速排序是由C.A.RHoare于1962年提出的; 3、快速排序的基本思想 (1)先找到一个基准值; (2)将所有比基准值小的数放在基准值的左边区域,所有比基准值大的数放在基准值的右边区域,等于基准值的数可放在左右任一区域; (3)对左右区域按照上述方法分别进行排序,整个快速排序可以递归进行,直到数据有

2017-03-11 20:43:29 436

原创

一、堆的初始化 1、堆的概念 堆实际上是一种完全二叉树,堆可分为大堆和小堆。大堆就是左右孩子的值都小于其父节点的值,根节点的值最大;小堆就是左右孩子的值都小于其父节点的值,根节点的值最小。 2、建堆 第一步:先给出一个数组 第二步:根据该数组,将其构建成完全二叉树的结构 第三步:以这个完全二叉树为基础构造初始堆,从最后一个非叶子节点开始向上调整,这里以小堆为例 这里对以上调整过

2017-02-26 16:51:17 1116 1

原创

在这篇文章中,简单介绍一下栈和队列的原理及实现,后面会附上相应习题帮助进一步理解。一、简述栈1、概念栈是一种操作受限的线性表,它的限制在于只能在表尾进行插入或删除,其中表尾称为栈顶,表头称为栈底。2、特点栈的特点是“先进后出”3、实现(C++)在下述代码中简单实现了栈的“入栈、出栈、取栈顶元素、判栈空,求栈中有效元素的大小”等操作。具体实现代码如下:#include <iostre

2017-02-19 09:14:31 323

原创 set和map

一、在介绍set和map之前,我们首先来简单了解一下序列式容器和关联式容器 1、序列式容器 序列式容器包括:数组,Vector,list,stack,queue,heap,priority-queue。这些容器存放的内容为value,数据的排放是一种线性结构。 2、关联式容器 关联式容器包括:set,map,multiset,multimap,hashtable,hash_se

2017-02-16 12:08:31 343

空空如也

空空如也

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

TA关注的人

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