自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 软件测试:概念篇

软件测试:概念篇本节内容软件测试的目的和原则什么是需求什么是bug什么是测试用例开发模型和测试流程配置管理软件测试的目的和原则目的:验证软件有或没有问题。 原则:以客户为中心,遵循软件测试的规范、流程、标准和要求。测试并不仅仅是为了找出错误。通过分析产生错误的原因、阶段及错误发生的趋势。一、帮助项目管理者了解当前软件开发过程中的缺陷,以便及时纠错、改进。二、帮...

2018-07-27 10:57:51 524

原创 高级IO

高级IO:第一讲本节重点理解五种IO模型的基本概念IO多路复用五种IO模型五种IO模型分别为:阻塞IO、非阻塞IO、信号驱动IO、IO多路复用(转接)、异步IO1. 阻塞IO在内核将数据准备好之前,系统调用会一直等待,所有的套接字,默认都是阻塞方式。阻塞IO是最常见的IO模型。举例:UDP中的 recvfrom 、sendto 都是阻塞式IO2. 非阻塞IO...

2018-07-24 17:36:47 156

原创 多态

多态一、概念 同一事物在不同的场景下具有不同的形态二、分类静态多态(函数重载、泛型编程):编译器在编译期间完成,编译器根据函数实参的类型(可能会进行隐式类型转换), 可推断出要调用哪个函数,如果有对应的函数就调用该函数,否则编译出错。动态多态(虚函数):在运行期间进行三、动态多态的条件基类中必须包含虚函数,并且派生类一定要对基类中的虚函数进行重写。通过基类对象的指针...

2018-07-24 17:18:18 136

原创 C动态内存开辟

C动态内存开辟动态内存开辟:malloc calloc realloc 都是在堆上申请空间一、malloc和freevoid* malloc(size_t size);//动态开辟内存malloc向内存申请一块连续可用的空间,并返回指向这块空间的指针。如果开辟成功,则返回一个指向开辟好空间的指针;如果开辟失败,则返回NULL。因此malloc的返回值一定要检查返回...

2018-07-24 15:19:51 214

原创 动态内存分配

动态内存分配常见的程序崩溃的原因:由assert()触发的;操作内存时,越界了;内存没有被初始化就拿去用了;栈溢出了;使用了野指针。总之,非法操作内存会对引起程序崩溃。C中动态内存管理方式:使用malloc/calloc/realloc/free进行动态内存管理。malloc、calloc、realloc的相同点与不同点:相同点:都是在堆上开辟空间...

2018-07-24 15:05:35 1020

原创 分析:如果类中没有显式给出构造函数、拷贝构造、赋值运算符重载、析构函数,编译器会自动合成吗?

分析:如果类中没有显式给出构造函数、拷贝构造、赋值运算符重载、析构函数,编译器会自动合成吗?一、 看构造函数,系统会自动合成构造函数吗?class Test{public: /*Test() {}*/public: int _data;};int main(){ Test t; return 0;}分析: 1. 在此例中,通过在...

2018-07-24 14:28:30 1483

原创 内联函数以及它和宏的区别

内联函数以及它和宏的区别一、 概念以 inline 修饰的函数叫做内联函数。 内联函数在调用时不是像一般函数那样要转去执行被调用函数的函数体,执行完成后在转回调用函数中,执行其后的语句;而是在调用处用内联函数体的代码来替换,这样没有函数压栈,将会节省调用的开销,提高运行效率。//内联函数inline int Max(int a, int b){ if (a < b)...

2018-07-24 13:17:34 6353

原创 构造函数、拷贝构造函数、析构函数

构造函数、拷贝构造函数、析构函数构造函数一、概念 构造函数是一个特殊的成员函数,名字与类名相同,创建类类型对象时,由编译器自动调用,在对象的生命周期内只调用一次且是在创建对象时被调用的,它保证了每个成员都有一个合适的初始值。 //代码//构造函数class Date{public: Date(int year, int month, int day) {...

2018-07-24 08:42:39 328

原创 C++的类和This指针

C++的类和This指针类一. 类的定义//类的定义class className{ //类体:由函数和变量组成};//一定要注意后面的分号class为定义类的关键字,className为类名,{}中为类的主体,注意类定义结束时后面的分号。类中的元素为类的成员;类中的数据为类的成员变量;类中的函数为类的成员函数。类的定义通常有两种方式: a.类的声明和定义...

2018-07-24 07:57:15 544

原创 结构体

结构体结构体的概念结构体是一系列数据的集合,这些数据可能描述了一个物体,也可能是对一个问题的抽象。结构体的定义//结构体的定义struct Student{ char _name[20];//20 char _gender[3];//3 int _age;//4};sizeof(struct Student)=28结构体的内存对齐结构...

2018-07-23 15:04:08 205

原创 C/C++从以下几个方面的比较

C/C++从以下几个方面的比较:关键字的个数: C语言:C99版本,32个关键字 C++:C98版本,63个关键字源文件: C源文件后缀.c,C++源文件后缀.cpp,如果在创建源文件时什么都不给,则默认是.cpp变量定义或声明位置: C语言必须在第一行定义;C++不做要求函数: (1)返回值 C语言中,如果一个函数没有指定返回值类型,默认返回int型; C++中,对于函...

2018-07-23 14:51:56 219

原创 栈和队列常见的面试题

1. 使用两个栈实现一个队列分析:队列是先进先出的,而栈是先进后出的,所以需要用两个栈去实现一个队列;一个栈专门进行入队列操作,另一个栈负责出队列操作。头文件:StackAndQueueInterview.h:// 用两个栈来封装成一个队列typedef struct QueueByStack{ Stack s1;//负责入队列 Stack s2;//负责出...

2018-07-23 13:58:09 335

原创 关于栈常见的面试题

* 实现一个栈,要求实现push(入栈)、Pop(出栈)、Min(返回最小值)的时间复杂度为O(1)*法1:分析:将元素与最小值封装成一个结构体头文件:StackAndQueueInterview.h:// 将元素与最小值封装成一个结构体typedef struct Elem{ ElemType _data; ElemType _minData;}Elem;...

2018-07-23 13:53:41 661

原创 C++中的动态内存分配

常见的程序崩溃的原因:由assert()触发的;操作内存时,越界了;内存没有被初始化就拿去用了;栈溢出了;使用了野指针。 总之,非法操作内存会对引起程序崩溃。C中动态内存管理方式:使用malloc/calloc/realloc/free进行动态内存管理。 malloc、calloc、realloc的相同点与不同点: 相同点:都是在堆上开辟空间的。都是通过fre...

2018-07-23 00:45:51 350

原创 软件测试:进阶2

软件测试:进阶2本节内容:code review代码静态分析CI/CDcode review为什么执行 review 1. 代码评审可以及时发现一些容易发现的BUG,而不必将发现的BUG的时间推迟到测试阶段。 2. 代码评审可以保证至少有两个人都理解任何一份代码。当出现员工休假,离职等情况的时候,至少保证团队的代码不会陷入无人理解或者无人处理的状况。代码评审流程有两...

2018-07-23 00:20:55 382

原创 软件测试:测试管理篇

软件测试:测试管理篇本节内容测试需求分析和测试策略制定测试方案的设计测试执行流程的设计测试报告的输出(在系统测试阶段)测试策略制定需求,是软件设计与测试的来源。需求除了终端用户的功能需求外,还有设计性需求、可靠性需求、可测试性需求、性能需求、安全性需求等。需求也是要进行测试的。需求,设计,编码,开发,测试一系列阶段中,需求成本最低,测试成本最高。对于测试工作而言,所...

2018-07-23 00:17:35 1132

原创 IO多路复用之epoll

IO多路复用之 epollepoll初识select和poll会随着文件描述符数量的增多,而使其性能下降;但epoll不会。 所以为了解决select和poll的问题,引入了epoll。epoll的相关系统调用epoll有3个相关的系统调用。epoll_createint epoll_create(int size); 创建一个epoll的句柄,此处的句柄实际...

2018-07-21 10:27:53 145

原创 IO多路复用之poll

IO多路复用之pollpoll函数接口:#include <poll.h>int poll(struct pollfd *fds, nfds_t nfds, int timeout);// pollfd结构struct pollfd{ int fd; /* file descriptor */ short events; ...

2018-07-19 10:22:49 228

原创 Linux中的一些重要命令

Linux中的一些重要命令本节内容:dudftopfreepstacksusudoaddruserpassword , df, top, free, pstack, su, sudo(sudo -, sudo -s), adduser, password 1)du指令 语法:du [选项] [文件] 功能:显示每个文件和目录的磁盘使用空间 命令参数: -a...

2018-07-19 08:43:44 252

原创 select使用案例

select使用案例本节内容:使用fd_set的接口,来实现检测标准输入输出。使用select编写网络服务器。检测标准输入输出: stdin.c 代码: 1 #include <stdio.h> ...

2018-07-19 08:16:02 1015

原创 IO多路转接之select

IO多路转接之select初识select系统提供select 函数来实现多路复用输入/输出模型 - select系统调用是用来让程序监视多个文件描述符的状态变化; - 程序会停在select这里等待,直到被监视的文件描述符有一个或多个发生了状态改变。select 函数函数原型:#include <sys/select.h>int select(in...

2018-07-19 07:54:28 226

原创 Linux下的重要目录

Linux下的重要目录本节内容:/proc /sys/SElinux /bin/user/proc/proc 是linux内核中提供的文件系统,在运行访问内核数据结构,改变内核设置的机制;proc是一个伪文件系统,它只存在内存当中,而不占用外存空间;它以文件系统的方式为访问系统内核数据的操作提供接口。用户和应用程序可以通过proc得到系统的信息,并可以改变内核...

2018-07-18 13:09:43 117

原创 Linux中的权限

Linux权限的概念Linux下有两种用户:超级用户(root) 普通用户超级用户:在Linux下可以不受限制的做任何事,其命令提示符是”#”; 普通用户:只能做有限的事,其命令提示符是”$”。命令:su [命令名] 功能:切换用户 注意:要从root用户切换到普通用户user,则使用su user.要从普通用户user切换到root用户,只使用su (root可...

2018-07-18 11:57:23 168

原创 Linux中基本指令

Linux中的基本指令ls指令 语法:ls [选项] [目录或文件] 功能: 对于目录,该命令列出该目录下的所有子目录与文件; 对于文件,将列出文件名以及其他信息。常用选项: -a 列出目录下的所有文件 -l 列出文件的详细信息 -d 将目录像文件一样显示pwd指令 语法:pwd 功能:显示用户当前所在的目录 常用选项:...

2018-07-18 11:28:26 182

原创 Linux 中进程的相关概念

Linux 中进程的相关概念本节内容: - 进程的调度算法 - 理解task_struct结构体中的各个字段的含义 - 僵尸进程和孤儿进程的概念以及使用代码模拟实现进程的调度算法调度的实质是一种资源分配。调度算法是指:根据系统资源分配策略所规定的资源分配算法。对于不同的系统或系统目标,通常采用不同的调度算法。1.先来先服务(FCFS)FCFS算法是最简单的非抢占式...

2018-07-17 17:58:09 162

原创 软件测试:用例篇

软件测试:用例篇本节主要内容 - 测试用例的基本要素 - 测试用例的设计方法 - 测试用例的有效性 - 测试用例的粒度和评价测试用例的基本要素测试用例(Test Case)是为了实施测试而向被测试的系统提供的一组集合,这组集合包括:测试环境、操作步骤、测试数据、预期结果等要素。评价测试用例好坏的标准: - 用例表达性清楚,无二义性。 - 用例可操作性强 - 用例...

2018-07-17 11:48:54 3120

原创 软件测试:基础篇

软件测试:基础篇本节主要内容 - 软件测试的生命周期 - 如何描述一个bug - 如何定义bug的级别 - bug的生命周期 - 如何开始第一次测试 - 测试的执行和bug的发现 - 产生争执怎么办软件测试的生命周期软件测试的生命周期生命周期 需求阶段 —> 测试计划 —> 测试设计、测试开发 —> 测试执行 —> 测试评估每个测试阶段的...

2018-07-16 10:29:57 402

原创 简易版本的 HTTP 服务器框架的实现

项目:HTTP协议步骤: 一. 背景调研(当前不涉及) 二. 需求分析(最核心的一步) (有产品经理作出完整的文档)实现一个服务器程序支持HTTP协议的服务器从请求角度上,支持GET方法和POST方法从响应的角度上,支持静态页面和动态页面 静态页面:返回一个服务器上的本地文件 动态页面:根据用户的输入实时计算生成一个响应结果页面能够使用浏览器访问三. 概要设计...

2018-07-15 10:53:31 1264 1

原创 C++中的静态成员

静态成员和const修饰成员的剖析静态成员static既可以修饰变量,也可以修饰函数。在C语言中: 1. 修饰变量:- 修饰全局变量:改变的是链接属性- 修饰局部变量:改变存储类型和生命周期2. 修饰函数:改变的是链接属性。在C++中: 静态成员的提出是为了解决数据共享问题的。 全局变量也可以实现数据共享,但是不安全。int a = 10;//全局变量vo...

2018-07-15 02:09:27 134

原创 传输层

传输层内容概括: - 理解传输层的作用 - 深入理解TCP的各项特性和机制传输层负责数据能够从发送端传输到接收端。即点对点的传输。再谈端口号端口号(port):标识一个主机上进行通信的不同的应用程序;在TCP/IP协议中,用“源IP”,“源端口号”,“目的IP”,“目的端口号”,“协议号”这样一个五元组来标识一个通信(用 netstat -n 查看);范围...

2018-07-09 00:22:24 1878

原创 应用层

网络基础内容概括:理解应用层的作用,认识HTTP协议理解传输层的作用,深入理解TCP理解网络层的作用,深入理解IP协议的基本原理理解数据链路层作用,了解ARP协议应用层协议:通信双方之间的一种自我约定例如, 我们需要实现⼀个服务器版的加法器. 我们需要客户端把要计算的两个加数发过去, 然后由服务器进⾏计算, 最后再把结果返回给客户端。// proto.h...

2018-07-08 07:46:56 594

空空如也

空空如也

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

TA关注的人

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