自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 web自动化测试-绕过验证码登录

手动绕过登录界面,使用工具:python+Fidder1.以百度登录界面为例登录前先进行抓包,记录下cookie的值2.再进行手动登录,输入用户名和密码,点击登录,登录后,点击记住密码再次进行抓包,查看cookie的值3.对比登录前和登录后的cookie值,我们可以看到新增了BDUSS的值4.代码如下:cookie值用BIDUPSID和BDUSS# -*- coding=utf-8 -*-from selenium import webdriver # 引入包

2021-05-20 17:09:09 1706

原创 Jmeter接口测试

Jmeter接口测试(简单http接口测试及结果分析)       接口测试主要分为两类:代码层接口测试和Web HTTP接口测试,代码层接口测试更接近单元测试一些,而web接口主要表现为两类: 1、浏览器和服务器之间的接口 2、外部接口(第三方提供的接口)1、打开Jmeter      开源版本和可执行版本均可在Apache官方网站上下载到,解压后打开bin目录下的jmeter.ba...

2018-11-12 15:47:48 579

原创 Jmeter下载及环境配置

Jmeter下载及环境配置1.下载地址:https://jmeter.apache.org/download_jmeter.cgi   下载下来是一个压缩包,进行解压即可。2.Jmeter无需安装,但需要JDK环境。 一般jmeter3.0的对应jdk1.7,jmeter4.0对应jdk1.8以上   JDK下载地址:https://www.oracle.com/technet...

2018-11-07 14:47:18 498

原创 Webbench-1.5的安装与使用

我们架构一个网站,当想把它上线工作时,我们进行一些网站的压力测试非常有必要,看看它能承受多大的访问量,在大量访问情况下,我们的网站数据性能指标如何,这将直接影响到用户的浏览体验,对于一个网站,用户的良好体验永远都是第一位的,面对出现的问题,我们尽量修正,所以,压力测试取得的数据非常总要,这对于我们维护自己的平台就有了第一手资料。        Webbench是Linux下的一个网站压力测试工

2017-09-20 22:20:11 922

原创 二叉树叶子结点个数和第K层结点的个数

求二叉树叶子结点的个数       1.如果根节点为NULL时,则是空树,返回0;       2.根节点不为空时,如果根节点的左右子树均为空,则该二叉树中只有一个节点,即返回1;       3.叶子节点的个数=左子树叶子节点数+右子树叶子节点数;代码如下:int _GetNodeyezi(Node* root) //叶子节点的个数 {

2017-09-08 22:19:26 1528

原创 二叉树的递归和非递归的遍历算法

一、二叉树的概念二叉树:二叉树就是每个结点最多有两个子树的树形存储结构。满二叉树和完全二叉树:满二叉树一定是完全二叉树,但是反过来就不一定。满二叉树的定义是除了叶子结点,其它结点都有左右了两个孩子,深度为k的满二叉树,结点数就是2的k次方减1。完全二叉树是每个结点都与深度为k的满二叉树中编号从1到n一一对应,只有最下面的两层结点度能够小于2,并且最下面一层的结点都集中在该层最左边的若干位置

2017-09-08 22:07:08 645

原创 生产者消费者模型

一、概念1. 生产者消费者模型可以被称为“三二一原则”。     “三”指的是三个原则,这三个原则指的是:           (1)生产者和消费者之间是互斥关系;           (2)生产者和消费者之间是同步和互斥关系;            ( 3)消费者和消费者是互斥关系。                “二”指的是两种角色:生产者和消费者。

2017-08-10 23:46:25 579

原创 C++实现双链表

双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。可以向前遍历,也可以向后遍历,双链表中还有一个尾指针。             双链表的操作比单链表要稍微复杂一些,因为删除和插入都要操控一个额外的指针,特别是在双链表的插入中指针的指向顺序是不可修改的。当然双链表可以反向查找结点优于单链表。在操作发生时必须要更新尾指针。#include#i

2017-08-05 23:00:03 375

原创 TCP握手与挥手

TCP协议工作原理包括TCP连接建立,报文传输和TCP连接释放等三个阶段。1、TCP建立连接协议-“三次握手”       ACK : TCP协议规定,只有ACK=1时有效,也规定连接建立后所有发送的报文的ACK必须为1       SYN(SYNchronization) : 在连接建立时用来同步序号。当SYN=1而ACK=0时,表明这是一个连接请求报文。对方若同意建立连接,

2017-07-31 23:33:13 382

原创 单链表的逆置

对于单链表的逆置一般有两种方法:第一种用非递归法,利用辅助指针,其时间复杂度为O(n)Node* Reverse() //单链表的逆置 { *Node* pre = _head; Node* cur = pre->_next; Node* next = NULL; if(_head

2017-07-28 23:35:31 1880

原创 C++模板实现单链表

链表:是一种线性表,但是并不是顺序存储,而是每个节点里面存储着下一个节点的指针,把存储数据元素的数据串链起来。               链表可分为带头结点的和不带头结点的。接下来用代码来展示单链表的各个功能:#includeusing namespace std;templatestruct LinkNode{ LinkNode* _next; T _data;

2017-07-28 21:49:05 541

原创 C++实现顺序表

顺序表:用一段地址连续的存储单元一次存储数据元素的线性结构。目的:比较数组下来用代码来实现顺序表的各个功能:#includeusing namespace std;typedef int DataType;class Seqlist{public: Seqlist()//构造函数:_a(NULL),_size(0),_capacity(0){}Seqlist

2017-07-27 23:36:58 327

原创 C++继承与多态(二)

多态       虚函数:类成员函数前面加virtual关键字       虚函数重写:当在子类的定义了一个与父类完全相同的虚函数时,则称子类的这个函数重写了这个父类的这个虚函数       满足条件:       1.虚函数的重写       2.父类的指针/引用调用虚函数       多态跟类型无关,与对象有关       多态:当使用基类的指针或引

2017-07-21 22:18:34 381

原创 C++继承与多态(一)

一、继承相关概念    1.继承:继承是面向对象复用的重要手段。通过继承定义一个类,继承是类型之间的关系建模,共享共有的东西,实现各自本质不同的东西。    2.成员访问限定符与继承的关系             继承是一种复用手段,在继承关系里基类继承派生类的成员,由此打到复用目的。       三种继承关系下基类成员在派生类的访问关系变化

2017-07-21 21:46:30 966

原创 TCP协议中URG和PSH

1.URG推送位紧急数据的起始点=序号;紧急数据的终止点=序号+紧急指针;(综上,紧急指针就是记录紧急数据的字节数,紧急指针永远为正数)1)在紧急数据后面的数据为普通数据,需要按序缓存2)窗口为0也可以发送紧急数据3)紧急数据都处理完成后,tcp就告诉进程恢复到正常操作例如,已经发送了很长的一个程序要在远地的主机上运行。但后来发现了一些问题,需要取消程序的运行。因此用户

2017-07-19 15:08:36 542

原创 引用与指针

引用1.引用:引用不是一个定义一个新的变量,而是给一个已经定义的变量重新起一个别名。2.定义的格式:类型 & 引用变量名 = 已定义过的变量名3.引用的特点a.一个变量可取多个别名b.引用必须初始化c.引用只能在初始化的时候引用一次,不能改变为再引用其他的变量。举例:1)void Test(){ int a=1; int &b=a;

2017-07-19 14:57:43 358

原创 网络端口

网络端口 TCP/IP协议中的端口1.端口号的范围 端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等等。 2.端口分类 按端口号可分为3大类: (1)公认端口(Well Known Ports):从0到1023,它们紧密绑定(binding)于一些服务。通常这些端口的通讯明确表明了某种服务的协议。例如:80端口实际上总是HTTP通讯。

2017-07-16 23:47:19 294

原创 shell字符串截取

今天学习了一些shell的语法,现在来编写一个shell脚本的字符串截取。    首先看一下shell脚本读取文件的方法:    (1)cat file | while read linedo echo "$line a"done    (2)    文件内容如下

2017-07-15 21:10:10 275

原创 Linux-用shell脚本写一个进度条

shell执行脚本:创建一个.sh文件,编辑文件即可执行脚本。Shell脚本中用#表示注释,相当于c语言的//注释。但如果#位于第一行开头,并且是则例外,它表示该脚本使用后面指定的解释器/bin/sh解释执行。代码:运行结果:shell中printf的色彩搭配颜色是通过添加专用序列来选择的 – 夹在 “/e[“和 “m”之间的数字。如果指定一个以上的数字,则用分号将

2017-07-14 22:06:04 3642

原创 TCP定时器

在TCP协议中有的时候需要定期或者按照某个算法对某个事件进行触发,那么这个时候,TCP协议是使用定时器进行实现的。TCP使用四种定时器(Timer,也称为“计时器”):    重传计时器:Retransmission Timer 坚持计时器:Persistent Timer    保活计时器:Keeplive Timer    时间等待计时器:Time_Wait Timer

2017-07-14 21:31:39 285

原创 NAT和代理服务器

一、概述NAT1.NAT的概念   NAT英文全称是“Network Address Translation”,中文意思是“网络地址转换”,它是一个IETF(Internet Engineering Task Force, Internet工程任务组)标准,允许一个整体机构以一个公用IP(Internet Protocol)地址出现在Internet上。顾名思义,它是一种把内部私有网络地址

2017-07-14 20:55:20 896

原创 cron和crontab

一、cron和crontab的概念 1)Cron是Unix系统的一个配置定期任务的工具,用于定期或者以一定的时间间隔执行一些命令或者脚本;可执行的任务范围可以是每天夜里自动备份用户的home文件夹,也可以每个小时记录CPU的信息日志。 crond位于/etc/rc.d/init.d/crond 或 /etc/init.d 或 /etc/rc.d /rc5.d/S90crond,最常用/var/l

2017-07-03 17:06:22 2623

原创 CRC校验码

一、CRC校验码的概念      CRC即循环冗余校验码,是数据通信领域中最常见的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。二、CRC校验码的算法      1、多项式和二进制的对应关系       X的最高幂

2017-07-03 15:42:04 2889

原创 守护进程

一、守护进程 守护进程也称精灵进程(Daemon),是运行在后台的一种特殊进程。它独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件。Linux的大多数服务器就是用守护进程实现的。比如,Internet服务器inetd,Web服务器httpd等。同时,守护进程完成许多系统任务。比如,作业规划进程crond等。 其他进程都是在用户登录或运行程序时创建,在运行结束或用户注销时

2017-06-28 17:49:32 279

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

线程安全基本定义线程安全:简单来说线程安全就是多个线程并发同一段代码时,不会出现不同的结果,我们就可以说该线程是安全的;线程不安全:说完了线程安全,线程不安全的问题就很好解释,如果多线程并发执行时会产生不同的结果,则该线程就是不安全的。线程安全产生的原因:大多是因为对全局变量和静态变量的操作常见的线程不安全的函数(1)不保护共享变量的函数(2)函数状态随着被调用,状态发

2017-06-15 22:31:40 214

原创 使用gdb调试多进程多线程调试

gdb常用命令表backtrace(或bt):查看各级函数调用及参数finish:连续运行到当前函数返回为止,然后停下来等待命令frame(或f):帧编号,选择栈帧info(或i):locals查看当前栈帧局部变量的值list(或l):列出源代码,接着上次的位置往下列,每次列10行list行号:列出从第几行开始的源代码list函数名:列出某个函数的源代码next(或

2017-06-14 22:22:14 362

原创 内存对齐

内存对齐内存地址对齐,是一种在计算机内存中排列数据(表现为变量的地址)、访问数据(表现为CPU读取数据)的一种方式,包含了两种相互独立又相互关联的部分:基本数据对齐和结构体数据对齐 。存在内存对齐原因:1、平台原因(移植原因):不是所有的硬件平台都能访问任意地址上的任意数据的;某些硬件平台只能在某些地址处取某些特定类型的数据,否则抛出硬件异常。2、性能原因:数据结构(尤

2017-05-05 15:33:54 398

原创 gcc编译

gcc编译a.预处理(进行宏替换)b.编译(生成汇编)c.汇编(生成机器可识别的代码)d.连接(生成可执行文件或库文件)gcc[选项]要编译的文件[选项][目标文件]1.预处理预处理(进行宏替换):包括宏定义,文件包含,条件编译三部分。分别对应宏定义命令,文件包含命令,条件编译命令三部分实现。预处理过程还会删除程序中的注释和多余的空白字符。预处理指令是以

2017-04-15 22:16:05 408

原创 递归算法

递归函数就是直接或间接的调用自身的函数。一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。注意:  (1) 递归就是在过程或函数里调用自身;  (2) 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。许多书里都用计算阶乘和菲波那切数列来说明递归,然而这样并不是很好。在计算阶乘里,并没有看到递归有任何的优越之

2017-04-14 18:11:17 545

原创 C语言编写注释转换问题

今天学习了用编程来实现将C语言注释转换成C++注释CommentConvert.h#ifndef _COMMENT_COVERT_H#define _COMMENT_COVERT_H#define INPUTFILENAME "input.c"#define OUTPUTFILENAME "output.c"#include#includeenum STATE{ NU

2017-04-12 22:33:06 463

原创 Centos下的vim的配置

vim编译环境有两种形式:第一种:在/etc/vimrc进行设置,这种设置会作用在与所有用户与登录到Linux环境下的用户,一般情况下不提倡该方式,因为Linux是多用户的,每个人都有自己的编程习惯与环境,因此我们推荐另一种方法。第二种:在用户目录下~目录下创建一个 .vimrc文件,在该文件中设置自己习惯的编程环境的设置,这样别的用户使用也互不影响。具体方法:cd~t

2017-04-09 22:36:21 815

原创 c语言的简单的三子棋游戏

用c语言学习编写了一个简单的三子棋游戏,觉得编写程序也是很有趣的!game.h #ifndef __GAME_H__#define __GAME_H__#define ROWS 3#define COLS 3void init_board(char board[ROWS][COLS],int rows,int cols);void display_board(char...

2017-04-09 21:57:16 399

原创 Linux的find指令

find 指令:在目录结构中搜索文件,并执行指定的操作。1.命令格式:find pathname -options [-print -exec -ok ...]2.命令功能:用于在文件树中查找文件,并作出相应的处理(可能访问磁盘)3.命令参数:pathname: find命令所查账的目录路径。-print:find命令将匹配的文件输出到标准输出。-exec:对匹配的

2017-04-08 19:44:49 331

转载 恐怖的C++语言

# 欢迎使用Markdown编辑器写博客本Markdown编辑器使用[StackEdit][6]修改而来,用它写博客,将会带来全新的体验哦:原文:http://coolshell.cn/?p=1724 (酷壳)   Linus曾经(2007年9月)在新闻组gmane.comp.version-control.git里和一个微软的工程师(Dmitry Kakurin)争执过用C还是用C++,当时

2017-03-20 23:09:57 570

原创 C++动态内存管理

C语言动态内存管理         malloc:申请一块动态空间(一个参数)         calloc:申请一块动态空间(两个参数)      realloc:调整已经申请好的动态空间的大小 free:释放已申请的动态空间C++动态内存管理         new/delete动态管理对象。        new[]/delete[]动态管理对象数组。void

2017-03-13 21:34:40 335

原创 预定义标识符

预定义符号有五种,分别是:__FILE__、__LINE__、__DATE__、__TIME__、__STDC__         其中我们比较常用的是以下四种:              __FILE__:表示进行编译的源文件;         __LINE__:表示当前文件的行号;         __DATE__:表示文件日期;         __TIME__:表示文件

2016-12-10 12:10:48 6400

空空如也

空空如也

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

TA关注的人

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