herb

我要靠谱→hello world!
随笔 - 14, 文章 - 0, 评论 - 0, 引用 - 0
数据加载中……

C/C++

从Makefile向源代码传递宏定义
     摘要: 在编译程序过程中,往往需要动态传递一些现象,比如要区别程序DEBUG版本和release版本;比如svn中代码版本太多,为方便管理,在编译时加上被编译程序的版本号等。  阅读全文

posted @ 2012-06-26 20:28 herb 阅读(6139) | 评论 (0)  编辑

跳表使用
     摘要: 目前经常使用的平衡数据结构有:B树,红黑树,AVL树,Splay Tree, Treep等。

想象一下,给你一张草稿纸,一只笔,一个编辑器,你能立即实现一颗红黑树,或者AVL树

出来吗? 很难吧,这需要时间,要考虑很多细节,要参考一堆算法与数据结构之类的树,

还要参考网上的代码,相当麻烦。

用跳表吧,跳表是一种随机化的数据结构,目前开源软件 Redis 和 LevelDB 都有用到它,

它的效率和红黑树以及 AVL 树不相上下,但跳表的原理相当简单,只要你能熟练操作链表,

就能轻松实现一个 SkipList。  阅读全文

posted @ 2012-04-08 17:58 herb 阅读(1427) | 评论 (0)  编辑

Linux select()详解
     摘要: select系统调用是用来让我们的程序监视多个文件句柄(file descriptor)的状态变化的。程序会停在select这里等待,直到被监视的文件句柄有某一个或多个发生了状态改变。

文件在句柄在Linux里很多,如果你man某个函数,在函数返回值部分说到成功后有一个文件句柄被创建的都是的,如man socket可以看到“On success, a file descriptor for the new socket is returned.”而man 2 open可以看到“open() and creat() return the new file descriptor”,其实文件句柄就是一个整数,看socket函数的声明就明白了:
  阅读全文

posted @ 2011-02-16 18:39 herb 阅读(746) | 评论 (0)  编辑

使用extern常见问题
     摘要: 基本解释
  extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。
  另外,extern也可用来进行链接指定。
  阅读全文

posted @ 2011-02-15 15:29 herb 阅读(412) | 评论 (0)  编辑

c语言全局变量和局部变量问题汇总

posted @ 2010-09-29 22:41 herb 阅读(310) | 评论 (0)  编辑

C++中string和string.h的作用和区别【转帖】

posted @ 2010-09-09 09:57 herb 阅读(294) | 评论 (0)  编辑