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