Hawkingrei

一生想做浪漫极客

LevelDB代码阅读:Arena

Arena源代码分析 首先我们来看定义 class Arena { public: Arena(); ~Arena(); // Return a pointer to a newly allocated memory block of "bytes" bytes. char* Allocate(size_t bytes); // Allocate memor...

LevelDB代码阅读:Varint

C++一直是我想要学习的编程语言之一,但是拖延症,使我始终都没有学个明白。所以借LevelDb代码阅读之际,复习一下,随带学习一下KV数据库 Varint介绍 Varint是Leveldb中的一种表示数字的方法,他用一个或多个字节表示一个数字,值越少的数字,所占用的字节数越少。比如对于int32类型的数字,一般需要4个byte来表示。但是采用Varint,对于很小的int32类型的数字,则...

优雅の使用sync.WaitGroup

Gracefully Use sync.WaitGroup

“keep it simple, stupid” Background 自从上次参加2017 GopherChina被安利了NSQ后,阅读了NSQ的源代码,从中学到了不少代码技巧。于是乎,我就把这些代码技巧运用到了veda上,提高了代码质量。 WaitGroup介绍 WaitGroup用来等待一群goroutine结束,主Goroutine调用Add来设置有多少gorouti...

Linux系统编程笔记:Linux中的fork

Fork On The Linux

“fork是一种创建自身进程副本的操作。 ” Background 最近正在阅读Twemproxy的源代码,从中发现涉及到大量《操作系统原理》和Linux系统编程的知识,由此我这些知识记录下来,做一个系列的笔记。 概论 在多任务操作系统中,运行中的程序需要一种方法来创建新进程,例如运行其他程序。Fork及其变种在类Unix系统中通常是这样做的唯一方式。如果进程需要启动另一个程...

start.sh

"Hello World, Hello Blog"

“Yeah It’s on. ” 终于在一次次的尝试后,终于令我满意的方案,去开启我的blog之旅。 我最早的blog是高中的时候挂在blogbus上的,不过那都是我从csdn上摘抄来的东西,虽然行为有些幼稚,不过可以看出当时的我对计算机还是无比热爱的。不过最后我并没有读上自己喜欢的计算机专业,反而读了药学,浪费了四年提升计算机水平的机会,还不慎在计算机的道路上走偏。 大四的时...