C++
huangwei1024
这个作者很懒,什么都没留下…
展开
-
重载全局new/delete实现内存计数
http://www.huang-wei.com/blog/?p=419有时为了统计内存使用,或检测内存泄漏,重载全局的 new/delete 是一种比较简易的实现方法。让我们先来回顾下 new/delete 重载的相关内容吧。技术篇[::] new [placement] new-type-name [new-initializer][::] new [placement] ( type-name ) [new-initializer][::] delete cast-expression[::] del原创 2010-07-22 23:04:00 · 991 阅读 · 0 评论 -
双数组字典树的内存占用测试
http://www.huang-wei.com/blog/?p=437上一篇文章介绍了双数组字典树 DATrie,现在让我们来简单的测试下内存占用情况。测试用例,我选了The Holy Bible,数据文件大小为4.2MB。只记录英文单词,全部转为小写。words : 822,529u-words : 12,591nodes : 34,266trie-mem : 1,247,308datrie-mem : 483,376Trie的实现我已经做了一些优化,初始每个节点的指针数组 size 为0,当有节点插入原创 2010-07-22 23:01:00 · 1003 阅读 · 0 评论 -
Double-Array Trie(双数组字典树)
http://www.huang-wei.com/blog/?p=386Trie在ACM中已经十分普及,也是一种非常有效的索引结构,好处就不多说了。它的本质就是一个确定的有限状态自动机(DFA),关于它的实现也是有好几种,ACM中用的最多也是最容易实现的就是多路查找树。但是Trie最大的缺点就是占用空间过大,很容易爆内存,当然在ACM里对Trie树也有相应的优化,如限定高度,对分支较少的节点使用非随机访问的结构(减少宽度),但这些都是牺牲部分查找效率换取的。这里介绍一种实现,Double-Array Tri原创 2010-07-22 22:45:00 · 1455 阅读 · 0 评论 -
C++中实现委托(Delegate)
<br />http://blog.huang-wei.com/2010/08/09/c%E4%B8%AD%E5%AE%9E%E7%8E%B0%E5%A7%94%E6%89%98%EF%BC%88delegate%EF%BC%89/<br /> C++中实现委托(Delegate)<br />公司的项目里有用到Don Clugston的FastDelegate,当时只知道是类似boost::function的东西,UI上当watcher用的比较多,所以也没去关注。今天想写个事件触发器时,突然想起这茬子,看来转载 2010-11-17 11:10:00 · 1597 阅读 · 0 评论 -
代码阅读辅助工具
<br /><br />http://blog.huang-wei.com/2011/04/27/read-source-tool/<br /><br /> <br />做程序员的,每天要对着显示器上的行行代码<br />尤其是一份你从未写过、未读过的代码放在你的面前时,尼会感到似那样滴心力憔悴<br />这些还都算了,尼玛连个注释都没!!!文档呢!有木有啊!!<br />哥幼小的心灵在一大堆代码中接受着无数次的摧残~<br />其实大家在阅读代码时,尤其是C/C++代码<br />类结构、继承、函数调用等原创 2011-04-27 15:25:00 · 1715 阅读 · 0 评论 -
Bloom Filter 原理与应用
<br />http://blog.huang-wei.com/2010/11/02/bloom-filter/<br /> Bloom Filter 原理与应用介绍<br />Bloom Filter是一种简单的节省空间的随机化的数据结构,支持用户查询的集合。一般我们使用STL的std::set, stdext::hash_set,std::set是用红黑树实现的,stdext::hash_set是用桶式哈希表。上述两种数据结构,都会需要保存原始数据信息,当数据量较大时,内存就会是个问题。如果应用场景中允原创 2010-11-17 11:13:00 · 765 阅读 · 0 评论 -
Windows Socket IO 模型
应用程序使用Winsock与传输协议驱动沟通时AFD.SYS负责缓冲区的管理。这就意味着当一个程序调用send或者WSASend发送数据时,数据将被复制到AFD.SYS它自己的内部缓冲区中(依赖SO_SNDBUF的设置)WSASend调用立即返回。然后AFD.SYS在程序后台将数据发送出去。当然,如果程序想要处理一个比SO_SNDBUF设置的缓冲区需求更大的发送请求,WSASend的调用就会阻塞直到所有的数据都被发送出去。原创 2010-11-21 12:07:00 · 947 阅读 · 0 评论