Leveldb原始碼分析 2

2021-06-12 14:35:31 字數 414 閱讀 7021

輕鬆一刻,前面約定中講過leveldb使用了很多varint型編碼,典型的如後面將涉及到的各種key。其中的編碼、解碼函式分為varint和fixedint兩種。int32和int64操作都是類似的。

首先是fixedint編碼,直接上**,很簡單明瞭。

void encodefixed32(char* buf, uint32_t value)

if (port::klittleendian) else else if (v < (1<<14)) else if (v < (1<<21)) else if (v < (1<<28)) else else else {

result |= (byte <*value = result;

returnreinterpret_cast(p);

return null;

leveldb原始碼分析1

leveldb是乙個key value型的儲存引擎,由google開發,並宣布在bsd許可下開放源 plain git clone plain cd leveldb make all 此時生成libleveldb.a庫檔案。拷貝leveldb的標頭檔案到 usr include下 plain cp ...

levelDB原始碼分析 SSTable

sstable是bigtable中至關重要的一塊,對於leveldb來說也是如此,對leveldb的sstable實現細節的了解也有助於了解bigtable中一些實現細節。本節內容主要講述sstable的靜態布局結構,sstable檔案形成了不同level的層級結構,至於這個層級結構是如何形成的我們...

Leveldb原始碼分析 1

前言 看了一點oceanbase,沒有意志力繼續堅持下去了,暫時就此中斷,基本上算把master看完了,比較重要的update server和merge server 卻沒有細看。中間又陸續研究了hadoop的原始碼,主要是name node和寫入pipeline。主要的目的是想看看name nod...