自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 字符集GBK和UTF8的区别

GBK就是在保存你的帖子的时候,一个汉字占用两个字节。外国人看会出现乱码,此为我中华为自己汉字编码而形成之解决方案。UTF8就是在保存你的帖子的时候,一个汉字占用3个字节。但是外国人看的话不会乱码,此为西人为了解决多字节字符而形成之解决方案。ASCII(ISO-8859-1)是鼻祖,最简单的方式,字节高位为0。GB2312、GBK、GB18030,这几个是中文编码方式,并向下兼容。GB23

2017-07-03 20:49:04 364

原创 malloc与calloc的区别

区别就是是否对申请的区域进行初始化。     calloc虽然对内存进行了初始化(全部初始化为0),但是同样也要降低效率的calloc相当于:     p = malloc();     memset(p, 0,size);多了对内存的写零操作,而写零这个操作我们有时候需要,而大部分时间不需要所以就有两个函数并存的关系了。

2016-05-09 17:29:48 235

转载 CGI环境变量

环境变量  意义SERVER_NAME  CGI脚本运行时的主机名和IP地址.SERVER_SOFTWARE  你的服务器的类型如: CERN/3.0 或 NCSA/1.3.GATEWAY_INTERFACE  运行的CGI版本. 对于UNIX服务器, 这是CGI/1.1.SERVER_PROTOCOL  服务器运行的HTTP协议. 这里当是HT

2016-04-24 11:35:12 219

转载 阻塞/非阻塞 & 同步/异步

老张爱喝茶,废话不说,煮开水。出场人物:老张,水壶两把(普通水壶,简称水壶;会响的水壶,简称响水壶)。1 老张把水壶放到火上,立等水开。(同步阻塞)老张觉得自己有点傻2 老张把水壶放到火上,去客厅看电视,时不时去厨房看看水开没有。(同步非阻塞)老张还是觉得自己有点傻,于是变高端了,买了把会响笛的那种水壶。水开之后,能大声发出嘀~~~~的噪音。3 老张把响水壶放到火上,立等水

2016-04-13 16:16:37 245

原创 类模板与模板类

什么是类模板     一个类模板(也称为类属类或类生成类)允许用户为类定义一种模式,使得类中的某些数据成员、默写成员函数的参数、某些成员函数的返回值,能够取任意类型(包括系统预定义的和用户自定义的)。如果一个类中数据成员的数据类型不能确定,或者是某个成员函数的参数或返回值的类型不能确定,就必须将此类声明为模板,它的存在不是代表一个具体的、实际的类,而是代表着一类类。    什么是模板类

2016-03-16 10:46:11 310

原创 map::erase的使用

int main(int argc, char* argv[]){ map mapData; mapData["a"] = "aaa"; mapData["b"] = "bbb"; mapData["c"] = "ccc"; for (map::iterator i=mapData.begin(); i!=mapData.end(); /*i++*/) { if (i->first == "b")

2016-03-09 13:46:14 315

转载 C++namespace

namespace中文意思是命名空间或者叫名字空间,传统的C++只有一个全局的namespace,但是由于现在的程序的规模越来越大,程序的分工越来越细,全局作用域变得越来越拥挤,每个人都可能使用相同的名字来实现不同的库,于是程序员在合并程序的时候就会可能出现名字的冲突。namespace引入了复杂性,解决了这个问题。namespace允许像类,对象,函数聚集在一个名字下。本质上讲namespace

2016-01-17 22:44:12 215

转载 C++前向声明

前向声明的定义:有些时候我们可以声明一些类但是并不去定义它,当然这个类的作用也很有限了。比如class foo;声明一个foo类,这个声明,有时候也叫做前向声明(forward declaration),在声明完这个foo类之后,定义完这个foo类之前的时期,foo类是一个不完全的类型(incomplete type),也就是说foo类是一个类型,但是这个类型的一些性质(比如包含哪

2016-01-15 11:10:25 354

转载 select,poll,epoll的区别

当需要读两个以上的I/O的时候,如果使用阻塞式的I/O,那么可能长时间的阻塞在一个描述符上面,另外的描述符虽然有数据但是不能读出来,这样实时性不能满足要求,大概的解决方案有以下几种:1.使用多进程或者多线程,但是这种方法会造成程序的复杂,而且对与进程与线程的创建维护也需要很多的开销。(Apache服务器是用的子进程的方式,优点可以隔离用户)2.用一个进程,但是使用非阻塞的I/O读取

2016-01-14 16:37:25 306

转载 可重入与不可重入

在多线程编程和信号处理过程中,经常会遇到可重入(reentrance)与线程安全(thread-safe)。很多人纠结于reentrance和thread-safe两个概念理解纠缠不清。我想救我对reentrance和thread-safe的理解作个总结 一、可重入(reentrance)首先来看下APUE中,列出的可重入函数: acce

2016-01-13 17:18:49 537

原创 Linux硬链接与软链接

硬链接是给文件一个副本,同时建立两者之间的关系。修改其中一个,与其连接的文件会被同时修改。如果删除其中任意一个则其他文件不会被影响。软链接也叫符号连接,它只要对源文件在新的位置建立一个”快捷方式“,所以,

2015-12-12 13:37:58 328

原创 经典排序算法复习总结

前置定义:In-place sort(不占用额外内存或占用常数的内存):插入排序、选择排序、冒泡排序、堆排序、快速排序。Out-place sort:归并排序、计数排序、基数排序、桶排序。stable sort:插入排序、冒泡排序、归并排序、计数排序、基数排序、桶排序。unstable sort:选择排序(5 8 5 2 9)、快速排序、堆排序。

2015-12-09 14:20:25 287

原创 C++内联函数一个重要的point

内联函数与其他普通函数的区别是,内联函数在生成可执行文件时,其代码块是直接嵌入到调用处的,以此减少函数调用的开销提高程序性能,它与宏很类似。但是,根据名著《C++ primer》:内联说明(inline specification)对于编译器来说只是一个建议,编译器可以选择忽略这个建议。也就是说,是否以嵌入式方式存在,是由编译器决定的,并不是一定嵌入到调用处。

2015-11-17 10:51:29 264

原创 C++重载,覆盖与隐藏

1.成员函数被重载的特征:(1)相同的范围(在同一个类中);(2)函数名字相同;(3)参数不同;(4)virtual 关键字可有可无。2.覆盖是指派生类函数覆盖基类函数,特征是:(1)不同的范围(分别位于派生类与基类);(2)函数名字相同;(3)参数相同;(4)基类函数必须有virtual 关键字。3.“隐藏”是指派生

2015-11-16 09:19:38 219

转载 C/C++如何让类对象只在栈(堆)上分配空间?

在C++中,类的对象建立分为两种,一种是静态建立,如A a;另一种是动态建立,如A* ptr=new A;这两种方式是有区别的。1、静态建立类对象:是由编译器为对象在栈空间中分配内存,是通过直接移动栈顶指针,挪出适当的空间,然后在这片内存空间上调用构造函数形成一个栈对象。使用这种方法,直接调用类的构造函数。2、动态建立类对象,是使用new运算符将对象建立在堆空间中。这个过程分为两步

2015-11-15 14:11:04 2211

转载 C/C++全局,静态变量小结

1.C++变量根据定义的位置的不同的生命周期,具有不同的作用域,作用域可分为6种:全局作用域,局部作用域,语句作用域,类作用域,命名空间作用域和文件作用域。从作用域看:1>全局变量具有全局作用域。全局变量只需在一个源文件中定义,就可以作用于所有的源文件。当然,其他不包含全局变量定义的源文件需要用extern 关键字再次声明这个全局变量。2>静态局部变量具有局部作用域

2015-11-14 23:15:10 281

转载 C/C++中的柔性数组

在标准C和C++中0长数组如charArray[0]是不允许使用的,因为这从语义逻辑上看,是完全没有意义的。但是,GUN中却允许使用,而且,很多时候,应用在了变长结构体中,如:StructPacket{Int state;Int len;Char cData[0]; //这里的0长结构体就为变长结构体提供了非常好的支持}; 首

2015-11-12 09:36:40 380

转载 c语言数据结构补齐原则

/*    原则1、数据成员对齐规则:结构(struct或联合union)的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员存储的起始位置要从该成员大小的整数倍开始(比如int在32位机为4字节,则要从4的整数倍地址开始存储)。    原则2、结构体作为成员:如果一个结构里有某些结构体成员,则结构体成员要从其内部最大元素大小的整数倍地址开始存储。(str

2015-11-10 15:22:58 359

转载 典型的指针笔试题

1、写出程序的输出(2012搜狗校招笔试)[cpp] view plaincopychar *c[] = { "ENTER", "NEW", "POINT", "FIRST" };   char **cp[] = { c+3, c+2, c+1, c };   char ***cpp = cp;       int main(vo

2015-11-07 23:13:51 264

转载 在vector的循环中调用erase

在使用vector的过程中,有时会遇到需要循环遍历vector,并删除符合指定条件的元素。当“指定条件”不复杂时,应该尽量使用erase(remove_if(begin, end, func), end)的形式来完成功能。但有时候“指定条件”过于复杂,不得不显式地写一个for循环来处理。我们必须小心在意erase所带来的side effect,一个一般性的for循环如下:

2015-11-05 20:38:27 465

空空如也

空空如也

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

TA关注的人

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