摘要: 代码风格是程序重要的组成部门,好的程序猿应该养成良好的代码风格,今天开始学习google C++的代码风格。1. 包含头文件和前向声明的选择尽量使用包含头文件的方法,前置声明可以使用在一般类的指针或引用、函数返回至或形参,静态变量。前置声明能够减少包含的头文件的数目,防止某个头文件被修改时,造成多个文件的重新编译尽量不要在头文件中包含头文件每个都头文件都要有#define保护,形式<PROJECT>_<PATH>_<FILE>_H_2. 内联函数内联函数一般非常小,处理的问题的逻辑比较简单,被多次调用,代码一般少于10行。析构函数和递归函数不要声明为内联函数 阅读全文
posted @ 2012-12-29 23:00 皮皮家的程序猿 阅读(208) 评论(0) 推荐(0) 编辑
摘要: 1、 随机读取的情况下,每次读8M的性能与顺序读的性能接近,一次多读数据能够降低seek所占的时间。2、fflush操作并不是真正的写磁盘,只是将I/O缓冲写入内核的缓冲区,并不是真正的写磁盘,fsync是将内核缓冲区的数据真正刷入到磁盘中。3、交互式shell和非交互式shell(interactive shell and non-interactive shell)交互式模式就是在终端上执行,shell等待你的输入,并且立即执行你提交的命令。这种模式被称作交互式是因为shell与用户进行交互。这种模式也是大多数用户非常熟悉的:登录、执行一些命令、退出。当你退出后,shell也终止了。she 阅读全文
posted @ 2012-12-06 11:48 皮皮家的程序猿 阅读(131) 评论(0) 推荐(0) 编辑
摘要: NameNode(NN代指)中存储的HDFS中文件的元信息,从大的方面可以分为3个部分整个文件系统的目录树、文件名与blockid的映射关系、blockid所在的DN信息。其中前两项是永久存在NN中的(image文件),第三项是DN启动时向NN汇报生成的,这样能够简化NN的存储逻辑,并且大大减小image文件的大小。单纯看NN的存储逻辑会比较无序,不容易理解,借助NN的启动过程来进行分析。NN的启动过程:首先执行NN中的main函数main函数的主要工作是创建一个NN对象,并通过join方法等待其他线程运行结束。createNameNode函数首先获取startOpt,就是启动dfs时指定的参 阅读全文
posted @ 2012-11-24 23:57 皮皮家的程序猿 阅读(4020) 评论(0) 推荐(1) 编辑
摘要: Hadoop的shuffle过程就是从map端输出到reduce端输入之间的过程,这一段应该是Hadoop中最核心的部分,因为涉及到Hadoop中最珍贵的网络资源,所以shuffle过程中会有很多可以调节的参数,也有很多策略可以研究。这里没有对shuffle做深入的分析,也没有读源代码,只是根据资料和使用的一些理解。map端map过程的输出是写入本地磁盘而不是HDFS,但是一开始数据并不是直接写入磁盘而是缓冲在内存中,缓存的好处就是减少磁盘I/O的开销,提高合并和排序的速度。默认的内存缓冲大小是100M(可以配置),所以在书写map函数的时候要尽量减少内存的使用,为shuffle过程预留更多的 阅读全文
posted @ 2012-11-23 15:02 皮皮家的程序猿 阅读(7397) 评论(0) 推荐(1) 编辑
摘要: 不时将自己的学习过程记录下来,防止遗忘,要是有人能够一起讨论,那必然真真的好。 阅读全文
posted @ 2012-11-22 23:07 皮皮家的程序猿 阅读(134) 评论(0) 推荐(0) 编辑