自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(94)
  • 资源 (1)
  • 收藏
  • 关注

原创 fiddler工具的使用场景:

fiddler工具的使用场景:(1)辅助定位bug(2)构建模拟测试场景(3)APP弱网模拟测试(4)前端性能分析及优化1.辅助定位bug通过fiddler可以抓取request和response,通过对参数进行分析,可以定位是前端问题还是后端问题。eg:在APP界面输入数据,点击下一步时,提示错误,这时候不能判断出问题的根本原因在哪里,是前端页面做限制导致,还是前端request的...

2019-01-09 16:22:40 583

原创 总结的用户登录的测试用例

用户登录的测试用例

2019-01-05 16:57:39 564

原创 python数据类型之Number

数据类型之Numberpython number数据类型用于存储数值,数据类型是不容许改变的,意味着如果改变number数据类型的值,将重新分配内存空间。python支持四种不同数据类型整型(int):通常称为整型或整数,不带小数点长整型(long intergers):无限大小的整数,整数后面是一个大写或小写的L浮点型(float)——浮点型由整数部分和小数部分复数:...

2019-01-05 14:50:20 311 3

原创 智能指针(auto_ptr的实现)

旧版的auto_ptr既然要控制资源的转移,我们可以多定义一个成员对象_owner来标识该成员对象的资源管理权,在调用构造函数创建对象时赋予其资源管理权,即_owner置为true,在调用拷贝构造函数、赋值运算符的时候将其管理权释放,即_owner置为false,就起到了资源管理权的转移#include<iostream>using namespace std;template...

2019-01-04 15:54:10 234 1

原创 智能指针(scoped_ptr的实现)

1.实现原理:它的实现原理是为了防止对象拷贝和赋值,它与auto_ptr的共同之处是scoped_ptr和auto_ptr都是利用一个栈上的对象去管理一个堆上的对象,从而使得堆上的对象随着栈上对象的销毁自动删除。但是,其不可以将指针所有权转让,只能在作用域内使用。这也就意味着他不能作为函数的返回值,不能共享所有权同时它也不能管理数组对象,它是通过delete来删除对象的。2.为什么要将拷贝构...

2019-01-04 15:50:34 438

原创 智能指针(shared_ptr的实现)

1.实现原理:shared_ptr是利用一个计数器,无论我们使用拷贝构造函数、赋值运算符重载、作为函数返回值、或作为参数传给一个参数时计数器+1,当shared_ptr被赋予一个新值或者需要销毁时,计数器–,直到计数器为0时,调用析构函数,释放对象,并销毁其内存。shaerd_ptr不直接支持管理动态数组,如果希望使用shared_ptr管理一个动态数组,必须定制自己的删除器。class Sh...

2019-01-04 15:48:03 9725 2

原创 传输层整理

传输层是整个网络体系结构中的关键层次之一,传输层的作用:点到点之间的数据传输,不考虑传输的中间过程。识别一个通信:源IP地址、目标IP地址、协议号、源端口号、目的端口号 1.传输层协议概述: 1.1进程之间的通信: 从通信和信息处理的角度看,传输层向它的上面的应用层提供通信服务,它属于面向通信部分的最高层,同时又是用户功能中的最低层。当网络的边缘部分中的两个主机使用网络的...

2018-09-01 19:17:25 273

原创 网络基础(网络背景,协议,封装,分用)

网络背景: 1.网络发展: 独立模式:计算机之间相互独立。 网络互联:多台计算机连接在一起,完成数据共享; 局域网LAN:计算机数量多了,通过交换机和路由器连接在一起。 局域网(Local Area Network)是在一个局部的地理范围内(如一个学校、工厂和机关内),将各种计算机、外部设备和数据库等互相联接起来组成的计算机通信网,简称LAN。它可以通过数据通信网或专用数据电路,与远方的...

2018-08-26 21:28:19 541

原创 应用层(二)

一、文件传送协议 1.FTP概述: 文件传送协议FT是因特网上使用得最广泛的文件传送协议。FTP提供交互式的访问,允许客户指明文件的类型与格式,并允许文件具有存取权限(如访问文件的用户必须经过授权,并输入有效的口令)。 基于TCP和FTP和基于UDP的TFTP,它们都是文件共享协议中的一大类,即复制整个文件,其特点是:若要存取一个文件,就必须先获得一个本地的文件副本。如果要修改文件,只能对文...

2018-08-26 11:58:16 268

原创 自动化测试

什么是自动化测试 概念:自动化测试指软件的自动化,在预设状态下运行应用程序或者系统,预设条件包括正常和异常,最后评估运行结果。将人为驱动的测试行为转换为机器执行的过程。常见的自动化测试工具: QTP:功能自动化测试工具,测C/S,B/S的软件。 selenium:Web自动化测试工具(B/S) Rational Rebot:功能自动化测试(B/S,C/S...

2018-08-25 00:48:04 178

原创 C++函数模板的分离编译

1.分离编译模式: 一个程序由若干个源文件共同实现,而每个源文件单独编译生成目标文件,最后将所有的目标文件链接起来形成但一个可执行文件的过程称为分离编译模式。 但是这种分离编译在C++中是不支持的。 2.使用模板在链接时会出错。如下: 下面的程序由三个文件组成:func.h用来对函数模板进行声明,func.cpp用来定义函数模板,main.cpp包含func.h头文件并...

2018-08-21 16:39:18 600

原创 TopK问题

问题描述:100W个数中找出最大的前K个数。 问题解决方式: 找最大的数要建立小堆,原因是:若建大堆的话,其他更大的数没办法进入堆内。//TopK问题://100W个数中找出最大的前K个数。//建小堆#include<iostream>#include<vector>#include<assert.h>using nam...

2018-08-20 11:17:44 164

原创 优先级队列

1.概念: 优先级队列允许用户以任何次序将任何元素堆入容器内,但取出时一定是从优先权最高的(也就是数值最高)的元素开始取,binary max heap正是具有这样的性质,适合作为优先级队列的底层结构。所谓binary heap就是一种完全二叉树,正操二叉树除了最底层的叶节点之外,是填满的,而最底层的叶节点由左至右又不得有空隙。那么堆算法在STL中的是:push_heap...

2018-08-20 11:05:59 919 1

原创 浅谈指针与引用

指针:故名思义为指向一块空间的地址。它里面存储的数值被解释成为内存里的一个地址。所以,指针也叫地址。 1.指针的类型:只要将指针声明语句中的指针名字去掉,剩下的即为指针的类型。 下面来进行依次查看。(1)、int *p; //指针类型为int*(2)、char*p;.//指针类型为char*(3)、int**p;//指针类型为int**(4)、int (*p)[5]; 指针类型...

2018-08-19 15:45:41 102

原创 二叉树的相关概念

一、概念: 二叉树:二叉树是结点的一个有限集合,该集合或者为空,或者是由一个根节点加上两颗分别称为左子树和右子树的二叉树组成。 二叉树的特点: 1.每个结点最多有两颗子树,即二叉树不存在度大于2的结点。 2.二叉树的子树有左右之分,其子树的次序不能颠倒。满二叉树:在一棵二叉树中,如果所有分支节点都存在左子树和右子树,并且所有叶子节点都在同一层上。 ...

2018-08-16 21:08:27 208

原创 栈和队列面试题

1.实现一个栈,要求实现Push(出栈)、pop(入栈)、min(返回最小值的操作)的时间复杂度为O(1)。 //方法:如果两个栈s1,s2作为辅助栈,每次压入s2都是s1的最小值,元素x入栈时,将x和s2栈顶元素进行比较,如果小于等于s2的栈顶,将x分别push到s1,s2,若x大于s2的栈顶,则将x push到s1中,如果s1.top()==s2.top(),s1和s2都执行pop操作,否则...

2018-08-16 19:59:47 156

原创 柔性数组

1.零长度数组概念:struct list{ int s; int t; char data[0];};对0长度数组即柔性数组的解释:用途:长度为0的数组的主要用途是为了满足需要变长度的结构体。用法: 在一个结构体的最后, 申明一个长度为0的数组, 就可以使得这个结构体是可变长的. 对于编译器来说, 此时长度为0的数组并不占用空间, 因为数组名本身不占空...

2018-08-15 11:43:15 594

原创 双向循环链表(c++)

#include<iostream>using namespace std;struct ListNode{ ListNode() :_data(0) ,_prev(0) , _next(0) {} ListNode( const int data) :_data(data) , _prev(0) , _ne...

2018-08-06 10:42:13 451

原创 普通版本的顺序表

什么是Vector? vector是STL中最常见的容器,它是一种顺序容器,支持随机访问。vector是一块连续分配的内存,从数据安排的角度来讲,和数组极其相似,不同的地方就是:数组是静态分配空间,一旦分配了空间的大小,就不可再改变了;而vector是动态分配空间,随着元素的不断插入,它会按照自身的一套机制不断扩充自身的容量。vector的扩充机制:按照容器现在容量的一倍进行增长。vecto...

2018-08-04 12:03:18 182

原创 宏与内联函数的区别

宏与内联函数的区别: 1. 宏定义不是函数,但是使用起来像函数。预处理器用复制宏代码的方式代替函数的调用,省去了函数压栈退栈过程,提高了效率。 内联函数本质上是一个函数,内联函数一般用于函数体的代码比较简单的函数,不能包含复杂的控制语句,while、 switch,并且内联函数本身不能直接调用自身。如果内联函数的函数体过大,编译器会自动的把这个内联函数变成普通函数。宏定义是在预...

2018-08-03 19:15:12 160

原创 智能指针auto_ptr的实现

auto_ptr实现原理是资源管理权的转移,即是说构造函数创建对象时获得资源管理权,析构对象时撤销管理权,这样的管理权的转移,带来的最重要的缺点就是安全性问题,下面具体阐述一下新旧版本的auto_ptr方便理解。 模拟实现旧版本的auto_ptr: 旧版本的auto_ptr是多定义了一个成员对象_symbol来标识该成员对象的资源管理权,在调用构造函数创建对象时获得资源管理权,即_symbol...

2018-08-03 18:43:27 169

原创 动态内存与智能指针

在c++中使用new、delete或new[]、delete[]来申请、释放内存,但是有时候会忘记释放,为了更容易、安全地使用动态内存,新的标准库提出了智能指针:智能指针也是模板,auto_ptr、shared_ptr、scoped_ptr、weak_ptr、unique_ptr(c++11提出的) .默认初始化的智能指针中保存一个空指针。解引用一个智能指针返回它指向的对象。如果在一个条件判断中...

2018-08-01 17:04:09 110

原创 什么是内存泄漏,如何进行检测内存泄漏

内存泄漏:由于疏忽或者错误造成程序未能释放已经不再使用的情况,内存泄漏并不是指内存在物理上的错误消失,而是程序分配某段内存后,由于设计错误,丢失了对这段内存的控制,因而造成了内存浪费。如何进行内存泄漏的检测 检测内存泄漏的方法: 1.使用调试器和C运行库(CRT)调试堆函数。 具体函数:_CrtSetDbgFlag()可以在作用于结束位置,自动调用_CrtDumpMe...

2018-07-22 11:24:38 3692

原创 动态内存管理。

C++中通过new和delete运算符进行动态内存管理。 int *p1=new int; int *p2=new int(3);//3将其初始化为3 int *p3=new int[3]//3表示对象个数。 delete p1; delete p2; delete [] p3;malloc/free与new/delete的区别: ·malloc/free是C/C++标准库的函...

2018-07-22 11:16:22 128

原创 static关键字

1.作为静态全局变量: a.静态变量(包括静态全局变量和静态局部变量)在全局数据区分配内存。 b.静态变量只被初始化一次。 c.未经初始化的静态全局变量会被自动初始化为0或空格 d.静态全局变量在声明它的整个文件中是可见的,而在文件之外不可见,即其他文件可以定义相同名称的变量。 2.作为静态局部变量 a.该变量在全局数据区分配内存。 b.静态局部变量在执行到该对象的声明处时被首次初始...

2018-07-22 11:13:29 119

原创 (重要)静态成员:

(重要)静态成员: 类的静态成员:声明为static的类成员(成员数据或成员函数)称为类的静态成员。 类静态成员(成员函数)可用类名::静态成员(成员函数)或者对象.静态成员(成员函数)来访问。表示其为类方法。 类静态成员变量必须在类外定义,定义时不加static. 类的静态成员函数没有默认的this指针,因此它里面不能使用任何非静态成员。 ...

2018-07-18 16:35:47 302

原创 网络整理一(应用层)

一、应用层的作用: 应用层是体系中最高的一层,直接为用户的应用进程(正在运行的程序)提供服务。 二、应用层的相关协议: 应用层的许多协议是基于客户服务器方式的。客户是服务请求方,服务器是服务提供方。 1.域名系统DNS:一整套从域名映射到IP的系统。最初,通过互联网信息中心来管理hosts文件,使用hosts文件与IP地址的关系。 ...

2018-07-08 18:59:20 1048

原创 grep命令的用法与正则表达式

1. 什么是grep grep它能使用特定模式匹配(包括正则表达式)搜索文本,并默认输出匹配行。 grep命令的常用格式为:grep [选项] ”模式“ [文件] grep家族总共有三个:grep,egrep,fgrep。2.常用选项-v:反过来(invert),只打印没有匹配的,而匹配的反而不打印。-i:忽略大小写-q:不向标准输出写任何东西。如果找到任何匹配的...

2018-07-05 17:45:36 2562

原创 死锁的相关知识

1. 什么是死锁: 死锁是指两个或两个以上的进程在执行的过程中,因为争夺资源而造成的一种相互等待的现象,若无外力作用,他们将无法推进下去,此时成系统处于死锁状态或系统产生了死锁。 2.死锁的原理: 指的是一组线程被阻塞了,等待一个永远不会为真的条件,是一组相互竞争资源或进行通信的进程间的永久阻塞 3.死锁产生的四个必要条件互斥条件:一次只有一个进程(线...

2018-05-30 18:15:23 175

原创 守护进程

本节重点: 1.认识守护进程 2.守护进程的相关函数 3.创建守护进程 ———————————————————————————————————————————————— 1.认识守护进程守护进程:其也称为精灵进程,是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理发生的事件。 守护进程不受用户登陆与注销的影响,它一直在运行着。Linux下的大多数服务器...

2018-05-30 01:05:28 9497

原创 生产者消费者模型

生产者消费者模型简单来说就是“321原则(只是为了理解生产者消费者模型所取的)” ‘3’代表的是三种关系 生产者与消费者的互斥与同步关系生产者与生产者的互斥(或竞争)关系消费者与消费者的互斥(或竞争)关系 ‘2’代表两种角色 生产者:往交易场所放东西(在计算机中一般都是数据)的人消费者:从交易场所取东西的人‘1’代表一个交易场所(类似于一个仓库) 所谓交易场所就是内存...

2018-05-28 19:15:21 221

原创 线程同步与互斥。(互斥量与条件变量、Posix信号量)

线程互斥: 所谓互斥:即是间接制约关系,指系统中的某些共享资源,一次只允许一个线程访问,当一个线程正在访问该临界资源时,其它线程必须等待。mutex(互斥量):互斥量本身也是一把锁,提供对资源的独占访问。大部分情况下,线程使用的数据都是局部变量,变量的地址空间在线程栈空间内,变量归属于某个单个线程,其它线程无法获得这种变量。共享变量:很多变量需要在线程间共享,可以通过数据的共享,完...

2018-05-28 17:19:53 311

原创 线程的相关概念及线程控制

本节重点: 1.线程的基本概念,线程与进程的区别与联系。 2.线程id与进程id。 3.线程控制(线程创建、线程等待、线程终止)。 4.线程分离。———————————————————————————————————————————————— 1、线程的基本概念,线程与进程的区别与联系。线程的概念: <1>.线程是调度的基本单位、线程是一个进程内部的控制序列。 ...

2018-05-14 21:28:46 187

原创 SIGCHLD信号与父进程异步等待子进程

阻塞式等待:wait函数,当然waitpid函数当其第三个参数不为WNOHANG时也是阻塞式等待。 非阻塞式等待:(轮询的方式):当waitpid函数当其第三个参数为WNOHANG是非阻塞式等待。父进程可以阻塞等待子进程结束,也可以非阻塞地查询是否有子进程结束等待清理(也就是轮询的方式)。 若采用阻塞等待方式,父进程就不能处理自己的工作了;采用非阻塞方式,父进程在处理自己工作的同时还要时不...

2018-05-11 17:37:09 670

原创 信号的捕捉及认识竞态条件

本节重点: 1.信号的捕捉(内核如何实现信号的捕捉) 2.信号捕捉的相关函数 3.实现mysleep函数(1)、(2改良版) 4.可重入函数的简单介绍 5.竞态条件与sigsuspend函数 ———————————————————————————————————————————————————— 1.信号的捕捉(内核如何实现信号的捕捉): 之前我们说过信号被递达之后并不是立即对其进...

2018-05-09 22:17:17 260

原创 信号的三种状态及信号集函数

关于信号的基本概念,请看博客:信号的基本概念及产生信号 本节重点: 1.信号的三种状态 2.信号在内核中的表示(三张表)信号在进程pcb中的表示方法 3.信号集操作函数 —————————————————————————————————————————————————————下面来进行一一介绍: 上篇我说到的信号的三种处理方式: 1.忽略此信号。 2.执⾏行该信号的默认处理动...

2018-05-08 21:48:29 6241

原创 信号的基本概念及产生信号

本节讲述重点: 1.信号的基本概念: 2.一些常用的特殊信号的深入了解(用代码呈现) 3.了解核心转储Core Dump 4.信号的产生方式:(4种)(mykill代码)1.信号的基本概念: 首先使用kill -l命令查看系统定义的信号列表: 由于没有32、33信号,所以信号共有62个。其中编号34以上为实时信号,我们先来讨论34以下的信号。 我们来看看signal(7),可...

2018-05-08 12:24:07 1855

原创 进程间通信(信号量)

信号量:是一种计数器,代表空闲的可用资源的数目。信号量本身也是临界资源,对临界资源进行保护。 由于是用于同步与互斥的,下面来看看同步与互斥的概念。 同步:直接制约关系,指多个进程(或线程)为了合作完成任务,必须按照规定的次序来运行。互斥:间接制约关系,指系统中的某些共享资源,一次只能允许一个线程访问,当一个线程正在访问该临界资源时,其他的线程必须等待。临界资源:系统中的某些资源一次只...

2018-05-05 22:01:43 317

原创 进程间通信(共享内存)

共享内存的概念:<没有同步与互斥机制,生命周期随内核> 共享内存就是两个或多个进程占有一段内存空间,同一块物理内存空间被映射到两个进程,两个进程都可以访问这段共享空间,从而实现了进程间通信,但其只有数据交换的功能,并没有提供同步与互斥机制。 共享内存是最快的ipc形式。一旦这样的内存映射到共享它的进程的地址空间,这些进程间数据传递不涉及到内核。 共享内存区进程间的数据传递: (...

2018-05-04 20:17:18 186

原创 进程间通信(消息队列)

消息队列:提供了一个从一个进程向另外一个进程发送一块有类型数据块的方法。 消息队列的不足: 每个消息的最大长度是有限的(MSGMAX),每个消息队列的总的字节点是有上限的(MSGMNB),系统上消息队列的总数也有一个上限(MSGMNI)。 IPC对象数据结构 内核为每个IPC对象维护一个数据结构:(System V进程间通信的结构体)struct ipc_perm{...

2018-04-15 23:19:49 185

一份数据结构课程设计

21世纪是个信息化的时代,现代计算机技术的发展,为各行各业的发展创造了一个全新的时代背景——人们的生活、工作等已经越来越离不开计算机科学的运用,而Internet的应用加速了这种趋势。随着全球经济一体化步伐的加快,在信息时代的今天,各企业商家所关心的不再局限于自身的产品质量、生产设备、员工的素质,更多的是关心自己的销售群体(客户群),关心他们的想法、需求、购买目的。网上书店系统的存在给予广大用户能不出门也能买到书,搜索到自己想要的书籍。随着网站的大规模化,它的存在就成为互联网生活中不可缺少的一部分。

2018-01-10

空空如也

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

TA关注的人

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