Home

去了趟锦州

去锦州的原因,其实是没搞到去其他的地方的票。 十一这个季节,就是人啊人啊人啊人啊人啊人啊人啊人啊人啊人啊人啊…

Read more

狄仁杰之神都龙王

抽空去看了一下。去看的原因倒是很简单,有人把它上升到中国大片的崛起的高度。大片看多了,崛起这事情,倒是值得去看一下。 坦白说比其他的拍的好多了,至少没什么硬伤,或者明显的硬伤,这让我很欣慰了,对的起票钱(折扣之后)。 我不理解的是,这几年过去了,武侠怎么已经上升到法术的高度了,更让我不能理解的是,这么牛逼的一只蝠鲼(fú fèn,原谅我的猜测,那只怪物或许真是什么变异物种也说不定,比如随便从山海经里面拿一只出来就足够吓尿观众了),怎么就死在几只毒鱼下了呢,这是告诉我们食品安全刻不容缓么? 话说这么险恶的环境,狄大人能活下来真的是奇迹啊。为了救美女拿人头打赌的都是亡命徒啊,果然只有不怕死的才命大… 顺便逛了一下侨福芳草地,好象是芳草地一周年还是怎么的,里面布满了各种艺术雕塑。...

Read more

oceanbase的库依赖问题

今天遇到一个问题: 写测试用例的时候发现总是找不到符号undefined refrence, 第一反应是我去有个没编译的吧, 但是打印了所有的符号,发现其实编译生成库文件里面完全有对应的符号,命名空间也没有错误。这就是很诡异的问题了,刚好手头另一份代码可以编译链接成功,于是对比了一下午结果,发现最后一个函数在类里实现就能编译,类外实现就不能编译,这个问题就太毁三观了。 最后请教了 解伦师兄 , 发现其实是库依赖的问题, Libtool制定的链接库列表是有相互依赖关系的,比如: LDADD = libtest2.a \ libtest2.a 或者gcc命令 gcc –o test main.c libtest2.a libtest1.a 这里编译的时候会认为lib...

Read more

oceanbase源码分析-root_table_manager相关

记录一下root_table_manager相关类的阅读和心得。 ###ObTableNameIterator 一个Iterator, 用于获取所有的TableName init 初始化并调用scan_tables执行查询表名的sql语句 scan_tables 执行sql语句 “select table_name, table_id from __all_table” 来得到所有表的表名 get_next 获取下一个表名, 如果 table_idx_ < 3 获取的是内部表的信息, 否则从sql执行结果中迭代返回普通表名 table_idx_对应的表名分别是: …...

Read more

防止通过rm误删文件

相信大家都有通过rm误删文件的经历, 而且Linux下又貌似没有Final Data之类的工具. 相对于Windows或者Nautilus里的删除机制, rm虽然高效, 但是很危险. 为了防止误删文件, 我们可以把删除的文件先转移到/tmp下, /tmp下的文件会被系统定时清除, 也就起到了回收站的作用. 这里我们首先建立如下脚本: #!/bin/sh dirpath=/tmp/recycle_$USER # find a place for recycle now=`date +%Y%m%d_%H_%M_%S_` arg=$1 if [ "$arg" = "-rf" ] || [ "$arg" = "-fr" ] || [ "$arg" = "-r" ]; then # ...

Read more

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