原创 Libra協議:關鍵概念

Libra區塊鏈是一個加密認證的分佈式賬本,它主要基於Libra協議。Libra區塊鏈由分佈式網絡中的驗證者節點維護。驗證者通過共識協議來維護區塊鏈上的交易達成一致。Libra測試網就是Libra core的原型的示例。 交易和狀

原创 leveldb學習筆記之十一——include/leveldb/options.h

本節分析options.h文件。 壓縮類型 //數據庫內容存儲在一組塊中,每個塊包含一個鍵、值對序列。 //在存儲到文件中之前,可以壓縮每個塊。 //下面的枚舉描述用於壓縮塊的壓縮方法(如果有)。 enum CompressionTy

原创 leveldb學習筆記之十——leveldb/util/cache.cc

cache.cc中的代碼是Cache的實現代碼,其中主要涉及到LRUHandle、HandleTable、LRUCache以及ShardedLRUCache。 它們與Cache的關係如下: ShardedLRUCache是抽象類Ca

原创 leveldb學習筆記之九——include/leveldb/cache.h

cache創建了一個給定尺寸的緩存,該緩存使用最近最少使用的逐出原則。 源碼如下: class LEVELDB_EXPORT Cache { public: Cache() = default; //設置默認構造函數

原创 leveldb學習筆記之八——include/leveldb/comparator.h

comparator是一個抽象類,它提供slice的比較,它必須是線程安全的,因爲leveldb會從多個線程調用其中的方法。 代碼如下: class LEVELDB_EXPORT Comparator { public: vir

原创 leveldb學習筆記之七——util/coding.h

coding.h中主要是與編碼相關的內容,主要選取以下幾個函數進行分析: EncodeFixed32 void EncodeFixed32(char* buf, uint32_t value) { if (port::kLit

原创 leveldb學習筆記之六——db/memtable.h

db數據在內存中的存儲格式,寫操作的數據都會先寫到memtable中 類 class MemTable { public: //構造函數,不允許隱式轉換,參數爲內部key比較器 explicit MemTable(con

原创 leveldb學習筆記之五——include/leveldb/write_batch.h

WriteBatch主要是用來對多個數據進行批量寫入。 依賴關係 writeBatch類主要依賴於以下幾個類,如圖: 其中,Handler爲抽象類,定義了put和delete接口。WriteBatchInternal類爲writeb

原创 leveldb學習筆記之四——include/leveldb/slice.h

在真正開始研究leveldb的存儲過程之前,先來研究一下相關的結構,首先是slice。 爲了操作方便,leveldb將數據和長度包裝成了slice使用,至於爲什麼要這麼做,估計是兩位大神是爲了效率的提升,避免一些不必要的操作吧。 cl

原创 leveldb學習筆記之三——include/leveldb/db.h

此文件爲leveldb的c++接口文件,用c++的方式調用leveldb只需要包含此文件即可。 在此文件中定義了leveldb對外的接口DB,其具體的實現由db/db_impl.h中的DBImpl類實現。 DB的定義如下: class

原创 leveldb學習筆記之二——源碼目錄結構

說明 從今天開始,將正式進入leveldb源碼的學習。leveldb主要採用c++實現,整體代碼比較規範,除了學習存儲相關的原理,還可以學習c++相關的知識,提升c++的技巧。 目錄 leveldb的目錄結構如下: cmake:cm

原创 leveldb學習筆記之一——clion調用leveldb使用示例

前言 2018年殺入區塊鏈,算是接觸了分佈式、數據存儲這一系列的知識,前段時間接觸某手機廠商的技術人員,才發現自己在存儲方面知識的不足,因此這段時間準備沉下心來學習學習。接下來就從leveldb開始,來研究研究其相關機制,不求看的人多

原创 c標準庫總結

c標準庫 前言 學習c語言十幾年了,卻從來沒有完整的將c標準庫看一看,我想在這一點上我是欠缺的。作爲一個技術人員,無論什麼時候都不能忘記自己最擅長的技能,這次借一個偶然的契機,翻一翻c標準庫,希望以後自己在技術上越來越牛。 說明 c+

原创 哈希函數是什麼,在區塊鏈中有什麼用

哈希函數是什麼,在區塊鏈中有什麼用 哈希函數是什麼? 哈希函數,又叫散列函數、散列算法,是一種從任何一種數據中創建小的數字“指紋”(也叫做摘要)的方法。什麼意思呢?就是說,你輸入任何長度、任何內容的數據,哈希函數輸出固定長度、固定格式的結