摘要: 1.const 修饰指针char greeting[] = "hello";char *p = greeting; //non-const pointer,non-const dataconst char *p = greeting; //non-const pointer,const datachar* const p = greeting; //const pointer,non-const dataconst char* const p = greeting; //const pointer,const data 2.STL迭代器vector<int> v 阅读全文
posted @ 2012-07-18 16:58 bizhu 阅读(270) 评论(0) 推荐(0)
摘要: 1.#define定义的变量预处理时没有加入记号表中,若出现错误时很难找到出错之处2.使用#define定义的变量尽量使用const代替,#define A 3可以使用const int A=3代替3.在类里使用static定义const常量,确保至多只有一个const常量4.设计一个类class Test{private:static const int num = 5;int str[num];} 如果编译器不支持num这样声明的时候初始化,则可以使用enum {num = 5}; 如果不支持num那样初始化,则可以在实现文件中,const int Test::num = 5;这样就OK. 阅读全文
posted @ 2012-07-16 23:25 bizhu 阅读(241) 评论(1) 推荐(0)
摘要: 1基本解释:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。此外extern也可用来进行链接指定。 也就是说extern有两个作用,第一个,当它与"C"一起连用时,如: extern "C" void fun(int a, int b);则告诉编译器在编译fun这个函数名时按着C的规则去翻译相应的函数名而不是C++的,C++的规则在翻译这个函数名时会把fun这个名字变得面目全非,可能是fun@aBc_int_int#%$也可能是别的,这要看编译器的"脾气"了 阅读全文
posted @ 2012-06-23 10:47 bizhu 阅读(218) 评论(0) 推荐(0)
摘要: 我学习C语言的时候,遇到的一个问题就是EOF。它是end of file的缩写,表示"文字流"(stream)的结尾。这里的"文字流",可以是文件(file),也可以是标准输入(stdin)。比如,下面这段代码就表示,如果不是文件结尾,就把文件的内容复制到屏幕上。 int c; while ((c = fgetc(fp)) != EOF) { putchar (c); }很自然地,我就以为,每个文件的结尾处,有一个叫做EOF的特殊字符,读取到这个字符,操作系统就认为文件结束了。但是,后来我发现,EOF不是特殊字符,而是一个定义在头文件stdio.h的常量 阅读全文
posted @ 2012-06-03 11:14 bizhu 阅读(927) 评论(0) 推荐(0)
摘要: 我们每天使用互联网,你是否想过,它是如何实现的? 全世界几十亿台电脑,连接在一起,两两通信。上海的某一块网卡送出信号,洛杉矶的另一块网卡居然就收到了,两者实际上根本不知道对方的物理位置,你不觉得这是很神奇的事情吗? 互联网的核心是一系列协议,总称为"互联网协议"(Internet Protocol Suite)。它们对电脑如何连接和组网,做出了详尽的规定。理解了这些协议,就理解了互联网的原理。 下面就是我的学习笔记。因为这些协议实在太复杂、太庞大,我想整理一个简洁的框架,帮助自己从总体上把握它们。为了保证简单易懂,我做了大量的简化,有些地方并不全面和精确,但是应该能够说清楚 阅读全文
posted @ 2012-06-03 10:59 bizhu 阅读(254) 评论(0) 推荐(0)
摘要: “为什么SP2800+比CD330快”,网上也有很多网友问“为什么AMD的CPU的主频比INTEL的低,但是游戏性能却比INTEL的强?”,“为什么INTEL的多媒体比AMD强?”,“为什么INTEL的多任务会比AMD的好?” 这些有很大一部分归功与CPU的流水线... 我们先说说流水线,我们用生产汽车的流水线来作比喻,比如说生产一辆汽车需要1小时的时间,如果只有一道工序,那么就要1小时的时间才能生产出一辆汽车。如果分成两道工序,每个工序就要30分钟,那么30分钟就能生产一辆汽车。如果分成四道工序,每个工序就要15分钟,那么每15分钟就能下线一辆汽车,但是生产一辆汽车的时间却没有变化。因... 阅读全文
posted @ 2012-05-28 22:13 bizhu 阅读(1333) 评论(0) 推荐(0)
摘要: 第1章 Windows系统的消息机制对诸如PowerBuilder(后文简写为PB)、Visual Basic和Delphi等大多数可视化程序设计语言来讲,程序设计的核心是对象的事件、属性和方法,但对Windows系统本身而言,却是以消息处理为其控制机制。Windows把系统中的对象都作为窗口来对待,每个窗口都有一个用来标识其身份的句柄。Windows通过向窗口发送消息,在开发语言中转化为对象的事件,然后驱动对象,响应用户的动作。在许多面向对象的可视化程序设计语言中,Windows的众多消息已经演变成了对象的属性或方法。本章内容包括Windows系统的消息机制、消息的发送、消息的应用实例等。1 阅读全文
posted @ 2012-05-21 23:10 bizhu 阅读(2052) 评论(0) 推荐(0)
摘要: C++的虚函数(Virtual Function)是通过一张虚函数表(Virtual Table)来实现的。简称为V-Table。 在这个表中,主是要一个类的虚函数的地址表,这张表解决了继承、覆盖的问题,保证其容真实反应实际的函数。这样,在有虚函数的类的实例中这个表被分配在了 这个实例的内存中,所以,当我们用父类的指针来操作一个子类的时候,这张虚函数表就显得由为重要了,它就像一个地图一样,指明了实际所应该调用的函数。1.无继承的情况#include<iostream>usingnamespacestd;classBase{public:virtualvoidf(){cout< 阅读全文
posted @ 2012-05-21 22:42 bizhu 阅读(2309) 评论(0) 推荐(1)
摘要: ICMPICMP是(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。 ICMP协议是一种面向无连接的协议,用于传输出错报告控制信息。它是一个非常重要的协议,它对于网络安全具有极其重要的意义。 它是TCP/IP协议族的一个子协议,属于网络层协议,主要用于在主机与路由器之间传递控制信息,包括报告错误、交换受限控制和状态信息等。当遇到IP 阅读全文
posted @ 2012-05-20 10:21 bizhu 阅读(4122) 评论(1) 推荐(0)
摘要: 原文:http://blog.jobbole.com/19753/在开发C++程序时,一般在吞吐量、并发、实时性上有较高的要求。设计C++程序时,总结起来可以从如下几点提高效率:● l 并发● l 异步● l 缓存下面将我平常工作中遇到一些问题例举一二,其设计思想无非以上三点。1任务队列1.1 以生产者-消费者模型设计任务队列生产者-消费者模型是人们非常熟悉的模型,比如在某个服务器程序中,当User数据被逻辑模块修改后,就产生一个更新数据库的任务(produce),投递给IO模块任务队列,IO模块从任务队列中取出任务执行sql操作(consume)。设计通用的任务队列,示例代码如下:详细实现可 阅读全文
posted @ 2012-05-18 23:55 bizhu 阅读(430) 评论(0) 推荐(0)
摘要: 共享内存是系统出于多个进程之间通讯的考虑,而预留的的一块内存区。在/proc/sys/kernel/目录下,记录着共享内存的一些限制,如一个共享内存区的最大字节数shmmax,系统范围内最大共享内存区标识符数shmmni等,可以手工对其调整,但不推荐这样做。一、应用共享内存的使用,主要有以下几个API:ftok()、shmget()、shmat()、shmdt()及shmctl()。1)用ftok()函数获得一个ID号.应用说明:在IPC中,我们经常用用key_t的值来创建或者打开信号量,共享内存和消息队列。函数原型:key_t ftok(const char *pathname, int p 阅读全文
posted @ 2012-05-18 00:51 bizhu 阅读(6790) 评论(0) 推荐(1)
摘要: 学习PV操作之前,我们首先来了解两个很基础的概念:同步、互斥:同步:其实说同步还不如说”协作“,就是我们的目标只有一个,我们奔着同一个目标去的,都是在大家的努力下共同完成这么一件事情。还是比较容易理解的吧。不见得太难。互斥:借用别人的一句话“千军万马过独木桥”,很通俗的一句话,就把咱们这个概念表达的淋漓尽致,就好比有一个大部队来到独木桥这,但是必须排好队,一个一个来;其实现实生活中,还有一个很好的例子可以说明这个互斥的概念,比如打印机,打印机这个工具就非常好的体现了互斥的概念,打印机一旦被别人占用了,那无乱你有多着急,都只能等着,对吧。其实借用别人的话或者资料或者工具来让咱们的学习更加轻松,为 阅读全文
posted @ 2012-05-17 15:15 bizhu 阅读(24799) 评论(8) 推荐(2)
摘要: 众所周知,在服务器系统的开发上,对性能要求是很高的,特别在大批量并发中,服务器系统的性能就体现的尤为重要,常常会有人问:为啥我的CPU消耗那么大,为啥我的事务处理那么慢,执行效率无法提高等等此类的问题。那怎么提高系统的性能呢,联系目前的工作,对此谈谈看法。1、服务器系统架构的不合理。服务器在设计时,必须考虑整个系统架构的高效、稳定,高的可靠性和可用性。这点我深有体会,在最近的一个项目中,由于服务器需要接受大批量小数据的多客户端并发请求,对服务器的业务处理提出了挑战。原先的设计采用的了串行业务处理流程,结果导致服务器大量业务堆积,造成丢包现象异常严重。经过讨论后,为了提高服务器的业务处理能力,采 阅读全文
posted @ 2012-05-17 14:54 bizhu 阅读(843) 评论(0) 推荐(0)
摘要: 什么是生产者消费者模式在工作中,大家可能会碰到这样一种情况:某个模块负责产生数据,这些数据由另一个模块来负责处理(此处的模块是广义的,可以是类、函数、线程、进程等)。产生数据的模块,就形象地称为生产者;而处理数据的模块,就称为消费者。在生产者与消费者之间在加个缓冲区,我们形象的称之为仓库,生产者负责往仓库了进商品,而消费者负责从仓库里拿商品,这就构成了生产者消费者模式。结构图如下:生产者消费者模式的优点1、解耦假设生产者和消费者分别是两个类。如果让生产者直接调用消费者的某个方法,那 么生产者对于消费者就会产生依赖(也就是耦合)。将来如果消费者的代码发生变化, 可能会影响到生产者。而如果两者都依 阅读全文
posted @ 2012-05-17 14:46 bizhu 阅读(7088) 评论(3) 推荐(2)
摘要: 在网络编程中,我们经常会遇到阻塞、非阻塞、同步、异步这两组概念,许多人很容易混淆,现在就给大伙儿说说我对着两组概念的理解。先说说阻塞与非阻塞,这主要和程序等待消息时的状态有关1、阻塞程序会阻塞在某一个函数,而不往下执行,就如挂在那里一样,所有的其他业务也都不执行,为一直等到消息到来才往下执行。2、非阻塞程序不会阻塞在某一个函数,不等待消息到来,立即返回,往下执行。举个例子,TCP协议中的send,系统会为其分配一块发送缓存区,假设现在总的缓存 区的大小为1000.,而缓存区里已经有了500个数据,这时调用send,发送1000个字节数据,这时如果在阻塞模式下,send的会先最多的数据放入缓存, 阅读全文
posted @ 2012-05-17 14:45 bizhu 阅读(3520) 评论(1) 推荐(0)
摘要: TCP协议与UDP协议的区别 首先咱们弄清楚,TCP协议和UCP协议与TCP/IP协议的联系,很多人犯糊涂了,一直都是说TCP/IP协议与UDP协议的区别,我觉得这是没有从本质上弄清楚网络通信!TCP/IP协议是一个协议簇。里面包括很多协议的。UDP只是其中的一个。之所以命名为TCP/IP协议,因为TCP,IP协议是两个很重要的协议,就用他两命名了。TCP/IP协议集包括应用层,传输层,网络层,网络访问层。其中应用层包括:超文本传输协议(HTTP):万维网的基本协议. 文件传输(TFTP简单文件传输协议): 远程登录(Telnet),提供远程访问其它主机功能,它允许用户登录 internet主 阅读全文
posted @ 2012-05-12 20:53 bizhu 阅读(309574) 评论(9) 推荐(31)
摘要: 一、进程间通信概述进程通信有如下一些目的:A、数据传输:一个进程需要将它的数据发送给另一个进程,发送的数据量在一个字节到几M字节之间B、共享数据:多个进程想要操作共享数据,一个进程对共享数据的修改,别的进程应该立刻看到。C、通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时要通知父进程)。D、资源共享:多个进程之间共享同样的资源。为了作到这一点,需要内核提供锁和同步机制。E、进程控制:有些进程希望完全控制另一个进程的执行(如Debug进程),此时控制进程希望能够拦截另一个进程的所有陷入和异常,并能够及时知道它的状态改变。Linux 进程间通信(IPC) 阅读全文
posted @ 2012-05-08 22:51 bizhu 阅读(1152) 评论(0) 推荐(0)
摘要: Linux exec函数族版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://tuhao.blogbus.com/logs/22833492.htmlextern char **environ;int execl(const char*fullpath, const char*arg, ...);int execlp(const char*file, const char*arg, ...);int execle(const char*fullpath, const char*arg, ..., char* constenvp[]);int execv(const c 阅读全文
posted @ 2012-05-05 10:11 bizhu 阅读(282) 评论(0) 推荐(0)
摘要: 虽然是被刷了,但学到的很多。面试官很nice,不会让你感觉很紧张,我的第一次笔试面试都给了腾讯,人生还有多少次第一次呀,唉..... 面试官问了很多问题,都是基础的,不过被BS。。。 这只是部分的总结。。。。。。。一、TCP/IP 1、三次握手 客户端与服务器要建立连接需要三次握手的过程,保证连接的可靠性 (有6种标示:SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(push传送) FIN(finish结束) RST(reset重置) URG(urgent紧急)) 1)第一次握手:客户端向服务端发送SYN标志的数据包,表示需... 阅读全文
posted @ 2012-04-29 20:55 bizhu 阅读(738) 评论(0) 推荐(0)