原创 Redis 跳躍表

跳躍表 跳躍表基礎知識 跳躍表 網易公開課->跳躍表 總結 效率堪比各種平衡樹結構,如紅黑樹,B樹,B+樹 實現起來簡單,僅用到鏈表的知識。 基於概率論,有個隨機過程,但表現不錯。

原创 雙棧=>隊列

隊列 先進先出(FIFO) 棧 後進先出(LIFO) 雙棧實現隊列 如何用兩個棧,僅使用棧的基本操作實現隊列。 思路: 1. 進隊列操作使用stack2, 當enqueue數據時,直接把數據push到stack2. 2. 出隊列

原创 Redis 字典

Redis Dict 字典,哈希表,HashMap僅僅是說法不同而已。本質上就是一種key,value存儲,可以高效的存儲和訪問。 定義 typedef struct dictEntry { void *key; voi

原创 雙循環鏈表

線性存儲 數組和鏈表都是一維結構,以線性結構存儲數據。 數組 數組和計算機內存結構保持一致,現有的編程語言提供了語言層面對數組的支持,數組支持隨機訪問,可以按照索引高效讀取和存儲。 一般來說,數組在初始化時,已固定大小。當數組存儲已滿,需

原创 Redis SDS簡單動態字符串

結構體定義 本質上說就是用C語言來實現基本的面向對象,來對底層的字符串進行表示,方便上層使用,爲調用者減少負擔。 typedef char *sds; struct sdshdr { int len; int free;

原创 雙隊列=>棧

隊列 先進先出(FIFO) 棧 後進先出(LIFO) 雙隊列實現棧 如何用兩個隊列,僅使用隊列的基本操作實現棧。 思路: 1. 進棧操作作使用queue2, 當push數據時,直接把數據enqueue到queue2. 2. 出

原创 Go的類型與變量

變量 變量是所有編程語言支持的基本要素,從計算機底層來說只有內存地址以及內部存儲的二進制數據。計算機科學是分層結構,我們使用不同的語言站在不同的層次來思考問題,當使用類似C++,Java,Python,Go等語言時候的變量,相當於我們給某

原创 Go語言包管理(一)

Go語言中的包 我們在使用其他語言,比如Java,Python,都有類似包的概念,Go也不例外,其核心思想即爲分組和模塊化。人的大腦對龐大和複雜的事情很難掌控,可以對其採用分而治之的策略,使其模塊化,從而更容易管理。 如下是標準庫中net

原创 密碼學之二(自簽名證書解析)

KeyTool生成keystore文件 keytool -genkey -alias A1.keystore -keyalg RSA -validity 40000 -keystore A1.keystore keystore導出證

原创 密碼學之一(Hash函數)

定義 單向性 數據完整性 Hash衝突 常用的Hash算法 程序 Hash環問題 Hash應用場景 定義 Hash函數H將可變長度的數據M作爲輸入,產生固定長度的Hash值h。 Hash函數,哈希函數,散列函數,雜湊函數