C/CPP Dev
O_OCalmHawk
这个作者很懒,什么都没留下…
展开
-
拷贝构造函数的相互调用?
G++ error: Error: declaration of xxx shadows parameter Explanation: http://www.parashift.com/c++-faq-lite/ctors.html#faq-10.3 [10.3] Can one constructor of a class call another constructor of ...原创 2011-05-18 18:01:24 · 185 阅读 · 0 评论 -
Redis string的小笔记
数据结构定义: struct sdshdr { long len; long free; char buf[]; }; 1) buf是一个变长数组,指向真正的字符串,非指针*; 2) len存储字符串总长度,保证o(1)的长度获取操作; 3) free存储空闲字符长度. 简短精悍. 新建一个字符串: sds sdsnewlen(const vo...2011-08-17 17:17:21 · 121 阅读 · 0 评论 -
Redis 存储结构分析,及哈希相关
Redis 是支持多 key-value 数据库 ( 表 ) 的 , 并用 RedisDb 来表示一个 key-value 数据库 ( 表 ). redisServer 中有一个 redisDb *db; 成员变量 , RedisServer 在初始化时 , 会根据配置文件的 db 数量来创建一个 redisDb 数组 . 客户端在连...2011-08-18 15:29:53 · 133 阅读 · 0 评论 -
redis 事件处理机制及其它
关于redis的事件处理机制,网上有很详细的源码解析了,基于2.0.4的,URL如下:redis源代码分析8–事件处理(上) redis源代码分析8–事件处理(中) redis源代码分析8–事件处理(下) 小总结: 初始化:在redis.c中initServer调用aeCreateEventLoop,并建立了现有唯一的一个time event:serverCron. ...2011-08-19 17:28:01 · 145 阅读 · 0 评论 -
macro __stringify & __attribute__
这两天听一个老外讲师讲Linux Compile和Debug的Training,看到一些有意思的东西,找了点资料,写出来.算是第一篇有点意义的文章. 这两个宏以前都没见过,据说都是内核里常用的东东,厄,确实接触得少. 首先是__stringify宏: g了一下,找到一篇文章,以下内容都是转载,仅经过验证和整理,粘出内容: 宏定义: 在 linux/stringify.h中 [code=...原创 2010-12-09 17:29:35 · 177 阅读 · 0 评论 -
总结总结~
总结: 1. 重构:类中某个方法,纠结于多个出口与do{}while()+ret_code+break的方式,多个出口 - 行数稍少,但是return太多太刺眼,do{}while - 行数太多.纠结良久,拆分原函数变为5行,另两个函数一个变为8行,一个变为20行;还是易读性最重要,当纠结的时候,拆分逻辑吧.槑. 2. autoconfigure,automake:纠结于link: too f...2011-11-28 19:39:16 · 133 阅读 · 0 评论 -
关于std map的插入和删除
关于代码里map的删除,有一点困惑: 在删除前用iterator保存位置,对map进行插入或删除后,iterator是否有效. 看完标准后释然,直接上标准:23.1.2.8:The insert members shall not affect the validity of iterators and references to the container, and the erase ...原创 2013-01-17 11:41:44 · 248 阅读 · 0 评论 -
从dmesg里分析core原因
服务器上由于怕软件bug以及磁盘的限制,一般会将core文件关掉. ulimit -a查看当前core file size设置. 这样程序有bug崩溃以后,只能通过dmesg查看有限信息.典型信息如下: collector[1847]: segfault at 000000000000000c rip 000000000040308a rsp 0000007fbffff820 error ...2013-01-21 12:41:20 · 419 阅读 · 0 评论 -
AspectC++的应用
最近需要研究一个开源软件中协议的流程与实现,由于协议比较复杂,程序层次架构设计耦合严重,用wireshark抓包分析+log或者gdb跟踪代码效率都不高.想到之前java项目用过一种切面编程,可以在函数开始或结束等地方自动添加代码,而且有比较灵活的控制方式.当时注意到CPP也有这种编程的实现,于是琢磨着用到此项目中来. 项目主页:http://www.aspectc.org/ 直接下编译链接...2013-01-31 11:06:47 · 482 阅读 · 0 评论