Home

oceanbase源码分析-Rowkey相关

这里分析一下ObRowkey相关的源码. 引用晓楚师兄的一段话: Rowkey是OceanBase诞生之初就引入的概念,最终被确立是在OceanBase 0.3。 为了便于理解,不妨把OceanBase想象成一个Key-Value系统,Rowkey就是Key,Value就是返回的行数据。 如果你对mysql数据库熟悉,那么不妨把Rowkey理解成primary key,它就是那几个主键列的组合,列的顺序与primary key中定义的顺序一致。 ###ObObjType 定义了OceanBase中支持的基本数据类型,我们可以在ob_obj_type.h中看到其定义 ###ObRowkeyColumn 定义了RowKey中的每个列Column ###O...

Read more

oceanbase源码分析-RootServer主要框架

这里记录一下RootServer主要框架的阅读和心得。 ###BaseMain BaseMain的逻辑从start开始,首先定义了日志格式(ob_easy_log_format),具体定义在ob_easy_log.cpp中 日志格式如何使用需要跟到Libeasy里去看了. 之后parse_cmd_line解析命令行参数.既然继承自同一个基类,那么这几个server的启动函数就非常相似 之后是一些启动琐事,建立pid文件,建立log文件,设置log级别等.有些地方引用到了TBsys和libeasy,如果需要了解的话可以跟进去看看. start的最后注册了signal ,并调用do_work开始逻辑.do_work需要子类重载实现. restart处理了重启的问题. ###...

Read more

普通英雄

只是想起一首老歌: </embed> 有时候 我必须 选择一个人过冬 习惯在 冰天雪地里 追梦 人从容 再出手 自然也就从容 只相信 地球间的 那一点红 看世上 所有英雄 哪一个 做得轻松 我也不 希望被歌颂 我只想 普普通通 自己的伤自己知道痛 哪道深哪一道最重 血肉之躯只会越战越勇 好男儿气贯长虹 倒下也要忍着痛苦 看这世上所有的英雄 竟没有一个人想通 淹没在残酷的波涛中 就像岸上的砂粒一样 普普通通 就像岸上的砂粒一样 来去匆匆 就像岸上的砂粒一样 感叹如风

Read more

Octopress的一些技巧

自从把wordpress换成Octopress, 腰不酸了背不疼了, 写博客也有劲了~ 以上只是吐个槽而已, Octopress是基于Jekyll的博客系统, Jekyll是从markdown生成静态网页的网页生成器. 这是背景. 详细的不表. 主要说下面几个小技巧: ###1. alias(别名) 话说每次写博客的时候要敲rake new_post/ rake generate/ rake preview/ rake deploy…等等, 中间再出一点什么git同步的错误, 严重影响写博客的心情.可以通过alias简化命令: alias rg='rake generate && rake preview' alias rd='rake deplo...

Read more

用vimdiff来显示gitdiff

git diff默认是调用linux的diff工具的, 一眼看上去毕竟还是不知所云, 不像其他两栏的diff工具那么直观. 我们可以考虑用vimdiff来显示gitdiff的结果. 具体说来有两种办法: 在~/.gitconfig中我们可以通过如下语句添加一个配置项, 指明使用的diff工具. git config --global diff.tool vimdiff git config --global difftool.prompt No 这里需要注意的是我们需要通过git difftool来调用vimdiff, 默认的gitdiff依然是调用Linux diff工具的. 第二行[difftool].prompt 的作用是免除gitdiff时的提示, 否则会有如下...

Read more

犀骆

中文名: 犀骆 英文名: Rhinoceros Camel 犀骆是骆驼科, 骆驼属的动物, 因体型高大威猛, 貌似犀牛, 故被称作犀骆. 主要生活在北非洲和西亚洲、印度等热带地域, 是重要的交通工具和牲畜. 犀骆是OceanBase 0.4.2版本的吉祥物.

Read more

C++ Primer 读书笔记

今天遇到一个c 的问题,上网查了查,发现答案的出处其实就是C Primer,想想这本经典的书其实没怎么细度过,很多细节其实模棱两可,所以决定每天读一点,务必求细致,不为速度,写点读书笔记权当是打卡了。 关于初始化变量和未初始化变量 这里有个很蛋疼的例子,VC我没试过,gcc下有匪夷所思的输出 int a; int b; int c; printf("a=%d b=%d c=%dn", a, b, c); 2.块注释不能嵌套 3.两种初始化方式 int ival(1024);//直接初始化 int ival=1024; //复制初始化 c 中初始化不是赋值,初始化指创建变量并赋值,赋值则是擦去对象当前值并用新值代替 初始化语句中前面定义的...

Read more

由”喵”代码想到的

# 网上看到这样一段代码 还是挺无聊的,于是想到一个问题,宏替换的时候假如有多个匹配,应该匹配哪一个的问题,于是实验如下: #include #define aaa "3a" #define a "1a" #define aa "2a" int main(int argc, const char *argv[]) { printf("%s ",aaa); } 这里最终输入结果是3a,也符合我们的思维方式,最长匹配嘛,值得一提的是这种情况 printf("%s ",aa a); 替换结果是”2a” “a”,通过空格间隔。C Primer中提到过这种书写方式,这也是字符串跨行的一种有效的写法,但是毕竟很少在实际情况中看到。 另外一种字符串跨行的方式是: ...

Read more