C++
chong232
我也不知道我是谁
展开
-
理解编译预处理
预处理语句格式: #command name(...) token(s)1,command预处理命令的名称, 它之前以#开头, #之后紧随预处理命令, 标准C允许#两边可以有空白符, 但比较老的编译器可能不允许这样.若某行中只包含#(以及空白符), 那么在标准C中该行被理解为空白. 整个预处理语句之后只能有空白符或者注释, 不能有其它内容.2, name代表宏名称转载 2009-07-28 08:52:00 · 751 阅读 · 0 评论 -
利用劝告锁实现程序只运行一次
<br />1. 由于需要,一个业务程序一天之中可能要被多次使用,但同一时间只能有一个人使用,于是我们得想个办法保证互斥。<br /> 进程间通信有很多种方式,信号量就不错。但学习使用下文件锁,更简洁一点。<br /> <br />2. 文件系统级别的锁有四种,最基本的两种是劝告锁和强制锁,剩下的两种是强制锁的变种。<br /> 应用级别上对锁的操作有两种,加读锁,或者加写锁(又叫共享锁与独占锁)。<br /> 那么,平时所说的加锁,实际上应该是在劝告锁或者强制锁上加读或者写锁。<原创 2010-09-13 16:31:00 · 1551 阅读 · 0 评论 -
ubuntu下使用glibtop监测多核cpu之利用率
多核CPU使用率 linux glibtop原创 2010-06-21 19:11:00 · 4980 阅读 · 2 评论 -
关于BM算法的一些思考
1. 什么是BM算法? 见 A Fast String Searching Algorithm, with R.S. Boyer. Communications of the Association for Computing Machinery, 是Boyer于1977年发表的一个算法,用于字符串匹配。2. 与KMP算法相比? 与经典的KMP算法相比,BM算法在很多情况下效率更高,它有两个特点: 一是它在遍历正文时的平均比较次数与pattern的长度反比,这一点很历害。 二是它在处理大字母原创 2010-08-12 14:54:00 · 6988 阅读 · 7 评论 -
libevent主要的数据结构(一)
(草草看了下,记录下来,作为以后的参考)libevent实现了网络IO,timer,signal的事件触发机制. 可以很方便的应用于event-driven服务器中,作为其底层事件处理模块. 比较成功的案例有 memcache(分布式缓存), PLB(负载均衡器)等.1. 用户需要完成的回调函数的定义void (*ev_callback)(int, short, void *arg);这个回调函数的参数的意思为:参数1: 表示触发事件的文件句柄,比如一个socket对象.参数2: 表示事件发生的结果,可能是原创 2010-06-17 15:34:00 · 1855 阅读 · 0 评论 -
libevent是如何与具体事件引擎进行结合的--以select为例
<br /> <br />先总体说下select引擎与libevent结合的过程(其它引擎是同样的道理)<br /> <br /> /*我们使用libevent的一般调用流程如下:(base->evsel是全局的事件引擎,其数据结构见下面2.相关的数据结构)<br /> 0. 全局初始化event_init()--决定使用哪个引擎;<br />event_init()引用event_base_new(),后者关键片断在于:<br />for (i = 0; eventops[i] && !base->evb原创 2010-06-17 14:57:00 · 2773 阅读 · 1 评论 -
memcached源代码分析
ppt已打包上传到:http://download.csdn.net/source/2588817感触最大的是1。对libevent库的多线程使用2。各种池的概念,内存池,线程池,反正为了效率,一切操作都是"一次申请,重复利用"原创 2010-08-01 12:00:00 · 651 阅读 · 0 评论 -
Lighttpd导入Eclipse, 进行编译,调试等开发工作
Eclipse IDE for C/C++ Developers, Build id: 20090619-0625 A. 解压源代码tar.gz包 B. 进入解压后主目录,运行./configure(如果出错,参照附录1解决),生成Makefile文件 C. 打开Eclipse,File->New->C Project->Makefile Project->Empty原创 2009-08-26 10:14:00 · 1268 阅读 · 0 评论 -
C/C++的变量存储问题
一.首先, 在c中分为这几个存储区 1.栈 - 由编译器自动分配释放 2.堆 - 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收 3.全局区(静态区),全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。- 程序结束释放 4.专门放字符串常量的地方。- 程序结束释放转载 2009-08-25 19:52:00 · 2457 阅读 · 1 评论 -
使用linux curses开发控制台的打字游戏
linux curses原创 2010-09-18 19:22:00 · 3446 阅读 · 1 评论