自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 通信数据转发程序:代理、网关、隧道

jmeter性能测试目录新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入目录你好! 这是你第一次使用 Mar...

2020-09-04 09:49:54 516

原创 排序算法

排序算法#pragma oncevoid InsertSort(int* array, int size);//直接插入排序void InsertSort_op(int* array, int size);//直接插入排序(嵌套二分查找)void ShellSort(int* array, int size);//希尔排序void Swap(int* pLeft, int* pRigh...

2018-10-26 18:57:17 256

原创 嗨聊

基于UDP的聊天室功能的描述:客户端启动,提示你输入昵称(等其他信息);按下回车之后,就连接到服务器上;每个客户端能够看到当前聊天室的成员;通过客户端发送一条消息,聊天室中所有的成员都能看到。聊天室中任何成员发送的消息,你也能看到。服务器模块接受客户端的消息,并且广播给所有在线用户。服务器需要能够:能够存储在线好友列表(包含好友的昵称信息,IP地址)能够...

2018-08-30 12:23:26 996

原创 友元

友元友元的内容:引入友元友元的分类 友元函数友元类友元的优缺点友元的注意事项一、引入友元 一个常规的成员函数(不是static、const修饰的,不是友元的)声明描述了三件在逻辑上相互不同的事情: 该函数能访问类声明的私有部分。 该函数位于类的作用域之中。 该函数必须经由一个隐藏的this指针去调用。 通过该函数声明为s...

2018-08-29 11:15:20 1915

原创 枚举和联合体

枚举和联合体枚举枚举顾名思义就是一一列举。把可能的取值一一列举出来。 比如,现实生活中:一周的星期一到星期日是有限的7天,可以一一列举。性别有:男、女、保密,也可以一一列举。月份有12个月,也可以一一列举。颜色也可以一一列举。……枚举的定义enum Day //星期{ Mon, Tues, Wed, Thur, Fr...

2018-08-19 15:13:13 1133

原创 位段

位段知识点概要:什么是位段位段的内存分配位段的跨平台问题总结什么是位段位段的声明和结构是类似的,有两个不同:位段的成员必须是 int 、unsigned int、signed int 。位段的成员名后面有一个冒号和数字。(这个数字用来限定这个成员所占内存的bit位)例1:struct S1{ int _a : 2; int _b :...

2018-08-19 11:18:49 297

原创 结构体内存对齐

结构体内存对齐先来看几个例题:例1:struct S1{ char C1; int i; char C2;};printf("%d\n", sizeof(struct S1));解析: char 为1个字节, int 为4个字节; char c1 从0偏移开始,占用一个字节;现在可用偏移为1偏移,接下来存放 int i ,1不是对齐数4 的...

2018-08-19 00:49:41 6548 2

原创 C语言中的变量的存储位置

变量的存储位置普通内存运行时堆栈硬件寄存器变量的缺省存储类型取决于它的申明位置。凡是在任何代码块之外声明的变量总是存储在静态内存中。不属于堆栈内存,这类变量称为静态变量。静态变量在函数运行之前创建。在代码块内部声明的变量的缺省存储类型是自动的,存储在堆栈中。对于在代码块内部声明的变量,如果给它加上 static 关键字,可以使它的存储类型由自动转变为静态。具有静态存储类型...

2018-08-18 15:51:01 9816

原创 C/C++ 程序内存的分配

C/C++ 程序内存的分配一个由C/C++编译的程序占用的内存大体分为以下几个部分:栈区(stack):由编译器自动分配释放,存放为运行函数而分配的局部变量、函数参数、返回数据、返回地址等。其操作方式类似于数据结构中的栈。堆区(heap):一般由程序员分配释放,若程序员不释放,程序结束时可能由OS(操作系统)回收。分配方式类似于链表。全局区(静态区)(static):存放全局变量、静...

2018-08-18 13:33:15 421

原创 大小端的介绍

大小端的介绍什么是大端小端大端(存储)模式,是指数据的低位保存在内存的高地址中,而数据的高位保存在内存的低地址中。地址由低到高,数据由高到低。 小端(存储)模式,是指数据的低位保存在内存的低地址中,而数据额高位保存在内存的高地址中。地址由低到高,数据也是由低到高。为什么有大端和小端因为在计算机系统中,我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为 8bit 。但是...

2018-08-18 09:49:10 662

原创 预处理详解

预处理详解预处理符号 __FILE__ // 进行编译的源文件 __LINE__ // 文件当前的行号 __DATE__ // 文件被编译的日期 __TIME__ // 文件被编译的时间 __SIDC__ // 如果编译器遵循ANSI C,其值为1,否则未定义这写预定义符号都...

2018-08-18 07:55:02 328

原创 线程池

线程池一、初衷避免线程多次的申请和释放。避免去申请大量的线程。 二、内容线程池有若干个线程。用于执行大量相对短暂的任务。 计算密集型任务:由于要利用CPU占用大量时间进行计算。所以,为避免出现环境不断切换的性能瓶颈。线程池中的线程个数=CPU的个数 IO密集型任务:由于大量的时间阻塞在等待输入、输出。所以,线程池中线程的个数 > CPU的个...

2018-08-16 18:33:00 142

原创 软件测试之性能测试

软件测试之性能测试性能测试是与时间相关的。主要内容性能测试基础概念和术语介绍性能测试模型性能测试分类介绍性能测试实施与管理性能测试基础为什么要进行性能测试(WHY)(最重要)应用程序是否能够很快的响应用户的要求?应用程序是否能处理预期的用户负载并有盈余能力?应用程序是否能处理业务所需要的事务数量?在预期和非预期的用户负载下,应用程序是否稳定?是否能够确...

2018-08-16 18:12:53 11814

原创 地址转换函数:inet_ntoa() 和 inet_addr()

地址转换函数:inet_ntoa() 和 inet_addr()inet_ntoa():函数原型:char *inet_ntoa(struct in_addr);参数:in_addr是一个结构体,用来表示一个32位的IPV4地址。 struct in_addr{ in_addr_t s_addr; }返回值:返回点分十...

2018-08-16 17:45:15 12428

原创 restrict 和 volatile 的区别

编译器优化常用的方法是:将内存变量缓存到寄存器。restrict 和 volatile 都是C语言中关于编译器优化常用关键字restrict用来做优化的。只能用于约束和限定指针,并表明指针是访问一个数据对象的唯一且初始方式。即它告诉编译器,所有修改该指针所指向内存中内容的操作都必须通过该指针进行修改,而不能通过其他途径。这样的好处是:能帮助编译器进行更好的优化代码,生成更有效率的...

2018-08-12 15:32:42 1532

原创 MySQL中的数据类型

MySQL中的数据类型本节内容数值类型 tinyint类型bit类型小数类型 floatdecimal字符串类型 charvarcharchar和varchar存储空间比较日期和时间类型enumn和set 数值类型一、tinyint类型在mysql 中,整型可以指定是有符号的和无符号的,默认是有符号的。带符号的范围是:-128 ~ +127无...

2018-08-06 18:26:42 917

原创 软件测试:自动化测试(一)

软件测试:自动化测试(一)本节内容: - 什么时自动化测试 - 如何实施自动化测试 - 发展方向什么是自动化测试自动化测试 自动化测试指软件测试的自动化,在预设状态下运行应用程序或者系统,预设条件包括正常和异常,最后评估运行结果。将人为驱动的测试行为转化为机器执行的过程。常用的自动化测试工具 QTP、selenium、Rational Robot 、jmeter、ap...

2018-08-06 17:42:49 2428

原创 Mysql数据库基础及操作数据库

Mysql数据库基础及操作数据库本节内容什么是数据库Mysql的基本使用 连接到mysqlmysql服务关闭与启动数据库服务器、数据库和表的关系使用案例SQL分类创建数据库字符集和校验规则 查看系统默认字符集和校验规则查看数据库支持的字符集查看数据库支持的字符集校验规则校验规则对数据库的影响操纵数据库 查看数据库显示数据库创建语句修改数据库数据库删除...

2018-08-01 08:20:51 169

原创 python项目:随时免费阅读好看的小说

python项目:用爬虫爬取想看的小说该项目操作的前提是:在Centos上要求python至少是2.7版本的;在linux上安装pip:yum install python-pip安装BeautifulSoup4 爬虫库:pip install BeautifulSoup4预备知识:urllib2 python 标准库:提供一系列的针对URL的操作方法。urllib p...

2018-08-01 00:31:41 1506

原创 软件测试:概念篇

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

2018-07-27 10:57:51 505

原创 高级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 141

原创 多态

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

2018-07-24 17:18:18 126

原创 C动态内存开辟

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

2018-07-24 15:19:51 203

原创 动态内存分配

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

2018-07-24 15:05:35 1006

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

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

2018-07-24 14:28:30 1435

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

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

2018-07-24 13:17:34 6331

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

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

2018-07-24 08:42:39 306

原创 C++的类和This指针

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

2018-07-24 07:57:15 508

原创 结构体

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

2018-07-23 15:04:08 194

原创 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 183

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

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

2018-07-23 13:58:09 316

原创 关于栈常见的面试题

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

2018-07-23 13:53:41 642

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

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

2018-07-23 00:45:51 330

原创 软件测试:进阶2

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

2018-07-23 00:20:55 369

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

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

2018-07-23 00:17:35 1113

原创 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 132

原创 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 208

原创 Linux中的一些重要命令

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

2018-07-19 08:43:44 235

原创 select使用案例

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

2018-07-19 08:16:02 997

原创 IO多路转接之select

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

2018-07-19 07:54:28 197

空空如也

空空如也

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

TA关注的人

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