2013年9月13日

同步 vs 异步

摘要: 操作系统中:在进行网络编程时,我们常常见到同步、异步、阻塞和非阻塞四种调用方式。这些方式彼此概念并不好理解。下面是我对这些术语的理解。 同步 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。按照这个定义,其实绝大多数函数都是同步调用(例如sin,isdigit等)。但是一般而言,我们在说同步、异步的时候,特指那些需要其他部件协作或者需要一定时间完成的任务。最常见的例子就是SendMessage。该函数发送一个消息给某个窗口,在对方处理完消息之前,这个函数不返回。当对方处理完毕以后,该函数才把消息处理函数所返回的LRESULT值返回给调用者。 异步 异步的概念和同... 阅读全文

posted @ 2013-09-13 16:44 CnZyy 阅读(871) 评论(0) 推荐(0) 编辑

2013年9月12日

C++ STL详解

摘要: 转载自:http://www.cnblogs.com/shiyangxt/archive/2008/09/11/1289493.html一、STL简介STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称。它是由Alexander Stepanov、Meng Lee和David R Musser在惠普实验室工作时所开发出来的。现在虽说它主要出现在C++中,但在被引入C++之前该技术就已经存在了很长的一段时间。STL的代码从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(迭代器),几乎所有的代码都采用 阅读全文

posted @ 2013-09-12 22:07 CnZyy 阅读(59742) 评论(3) 推荐(13) 编辑

C++中struct和class定义类区别

摘要: 有一种常见的误解认为用struct保留字定义的类与用class定义的类有很大的区别。唯一的不同只是默认的成员保护级别和默认的派生保护级别,没有其他的区别。1. 用class定义的类,默认的成员访问级别为private。struct定义的类成员默认访问级别是public。2. 使用class关键字定义的派生类默认具有private继承,而用struct关键字定义的类默认具有public继承: class Base {/*....*/}; struct D1 : Base {/*....*/}; //public inheritance by default class D2 : Ba... 阅读全文

posted @ 2013-09-12 21:12 CnZyy 阅读(756) 评论(0) 推荐(0) 编辑

二叉树知识点总结

摘要: 1. 在二叉树中,第i层上最多有2^i个结点。i从0开始。2. 深度为k的二叉树至多有2^(k+1) - 1个结点。k从0开始。 至少有2^k个结点(2^k -1 +1 个= 2^k)。3. 任何一颗二叉树,若终端结点数为n0(度数为0的结点数),度为2的结点数为n2,则n0=n2+1。 阅读全文

posted @ 2013-09-12 19:22 CnZyy 阅读(503) 评论(0) 推荐(0) 编辑

C/C++中的static用法总结

摘要: C中:1. static修饰函数中的变量(栈变量):改变变量的生存期,作用域不变仍为所在函数。 只被初始化一次。2. static修饰全局变量:限制全局变量只能被模块内访问,不可以在别的模块中用extern声明调用。3. static修饰函数:作用与修饰全局变量类似,也是限制该函数只能在模块内访问,不能再别的模块中用extern声明调用。例如:文件a.cstatic int i; //只在a文件中用int j; //在工程里用static void init() //只在a文件中用{}void callme() //在工程中用{ sta... 阅读全文

posted @ 2013-09-12 17:05 CnZyy 阅读(2405) 评论(0) 推荐(0) 编辑

C++哪些函数不能是虚函数

摘要: 1. inline是编译时展开,必须有实体;(不考虑不展开的假inline)2. static属于class自己的,也必须有实体;3. 构造函数、复制构造函数。virtual函数基于vtable(内存空间),constructor函数如果是virtual的,调用时也需要根据vtable寻找,但是constructor是virtual的情况下是找不到的,因为constructor自己本身都不存在了,创建不到class的实例,没有实例,class的成员(除了public static/protected static for friend class/functions,其余无论是否virtual 阅读全文

posted @ 2013-09-12 16:32 CnZyy 阅读(437) 评论(0) 推荐(0) 编辑

C++运算符重载

摘要: 所谓重载,就是重新赋予新的含义,函数重载就是对一个已有的函数赋予新的含义,使之实现新功能。运算符的重载主要存在两种形式,一种是作为类的成员函数进行使用,另一种则是作为类的友元函数进行使用。运算符的重载的形式为:返回类型 operator 运算符符号(参数说明) { //函数体的内部实现 }例如,能否用“+”号进行两个复数的相加,在C++中不能在程序中直接用运算符“+”对复数进行相加运算,用户必须自己设法实现复数相加。例如用户可以通过定义一个专门的函数来实现复数相加。 1 /* 2 实现复数类中的运算符重载 3 定义一个复数类重载运算符+、-、*、/,使之能用于复数的加减乘除。 4 方案一:使. 阅读全文

posted @ 2013-09-12 15:53 CnZyy 阅读(491) 评论(0) 推荐(0) 编辑

2013年9月11日

const指针与指向const的指针

摘要: 当使用带有const的指针时其实有两种意思。一种指的是你不能修改指针本身的内容,另一种指的是你不能修改指针指向的内容。听起来有点混淆一会放个例子上来就明白了。 先说指向const的指针,它的意思是指针指向的内容是不能被修改的。它有两种写法。 constint* p; (推荐)intconst* p; 第一种可以理解为,p是一个指针,它指向的内容是constint类型。p本身不用初始化它可以指向任何标示符,但它指向的内容是不能被改变的。 第二种很容易被理解成是p是一个指向int的const指针(指针本身不能被修改),但这样理解是错误的,它也是表示的是指向const的指针(指针指向的内容是不能被修 阅读全文

posted @ 2013-09-11 21:40 CnZyy 阅读(287) 评论(0) 推荐(0) 编辑

各种排序总结(总)

摘要: 排序法平均时间最差情形稳定度额外空间备注冒泡O(n2) O(n2)稳定O(1)n小时较好交换O(n2) O(n2)不稳定O(1)n小时较好选择O(n2)O(n2)不稳定O(1)n小时较好插入O(n2)O(n2)稳定O(1)大部分已排序时较好基数O(logRB)O(logRB)稳定O(n)B是真数(0-9),R是基数(个十百)ShellO(nlogn)O(ns) 1<s<2不稳定O(1)s是所选分组快速O(nlogn)O(n2)不稳定O(nlogn)n大时较好归并O(nlogn)O(nlogn)稳定O(n)n大时较好堆O(nlogn)O(nlogn)不稳定O(1)n大时较好若n较小: 阅读全文

posted @ 2013-09-11 15:44 CnZyy 阅读(277) 评论(0) 推荐(0) 编辑

各种排序总结(七)基数排序

摘要: 例如待排序数组[62,14,59,88,16]简单点五个数字分配10个桶,桶编号为0-9,以个位数数字为桶编号依次入桶,变成下边这样| 0 | 0 | 62 | 0 | 14 | 0 | 16 | 0 | 88 | 59 || 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |桶编号将桶里的数字顺序取出来,输出结果:[62,14,16,88,59]再次入桶,不过这次以十位数的数字为准,进入相应的桶,变成下边这样:由于前边做了个位数的排序,所以当十位数相等时,个位数字是由小到大的顺序入桶的,就是说,入完桶还是有序| 0 | 14,16 | 0 | 0 | 0 | 59 阅读全文

posted @ 2013-09-11 15:43 CnZyy 阅读(215) 评论(0) 推荐(0) 编辑

导航