原创 FUSE協議解析 原

由於以前有項目是用到FUSE,將S3等對象存儲映射爲文件存儲的,但我不是負責那一塊,所以一直只是知道FUSE是個什麼東西,而沒有用過。剛好趁着沒工作的這段時間,學習Golang,順便把FUSE也瞭解下,實現了一個簡易版的libfuse: h

原创 Redis源碼閱讀筆記-服務器啓動和初始化 原

服務器的啓動 Redis服務器的main函數是在server.c中。 // server.c int main(int argc, char **argv) { struct timeval tv; int j;

原创 Redis源碼閱讀筆記-快速列表 原

快速列表 快速列表(quicklist)是由壓縮列表(ziplist)組成的一個雙向鏈表,鏈表中,每一個節點都是以壓縮列表(ziplist)的結構保存。 在 Redis3.2 後加入的新數據結構,在列表鍵中取代了雙向鏈表的作用。 特點 雙

原创 Redis源碼閱讀筆記-字典結構 原

字典 字典在Redis中主要用在數據庫和哈希鍵功能上,其他也有。 當一個哈希鍵包含的鍵值對比較多,又或者鍵值對中的元素都是比較長的字符串時,Redis就會使用字典作爲哈希鍵的底層實現。(《Redis設計與實現》) 特點 來之《Redis設計

原创 Flask的請求上下文管理 原

一直想看一下Flask是怎麼做請求上下文管理的,直接使用 from flask import request 就是當前的請求了。 簡單看一個各個模塊的代碼: # flask/__init__.py ...... from .global

原创 用Kubeadm安裝K8s後,kube-flannel-ds一直CrashLoopBackOff 原

如果使用Kubeadm安裝K8s集羣,在安裝flannel網絡插件後,發現pod: kube-flannel-ds 一直是CrashLoopBackOff 而且使用命令sudo kubectl --namespace kube-syste

原创 Flask-SocketIO單元測試中創建連接時添加HTTP Header 原

在使用flask-socketio中,有時候需要在創建連接時檢查HTTP Header中是否有相關的信息。但在flask-socketio的單元測試工具中,並沒有方法添加HTTP Header,但可以對框架進行簡單的修改,就可以了。 改動的

原创 阿里雲短信平臺Python3 SDK:SDK.InvalidRegionId Can not find endpoint to access 問題 原

阿里雲官網上的aliyunsdkcore是不支持Python3的,但是在官方的Github上,有一個aliyunsdkcore-v3版本,該版本支持Python3。 但是在調用短信接口的時候,出現了aliyunsdkcore.acs_exc

原创 Flask部分源碼閱讀 原

Flask主要依賴於Werkzeug和Jinja這兩個庫,是很簡潔的Python Web框架。 Werkzeug 是一個WSGI的工具包,是Flask的核心庫。 Jinja 則是一個模板渲染的庫,主要負責渲染返回給客戶端的html文件。

原创 Flask-SocketIO傳輸二進制單元測試的Bug和修改 原

最近用了Flask-SocketIO,因爲要和一些性能比較差的機器通信,所以數據格式並沒有採用傳統的json,而是採用Google的跨平臺序列化工具FlatBuffers,它的結構化數據都以二進制形式保存,所以需要用SocketIO傳輸二進

原创 Ngrok內網穿透原理 原

Ngrok穿透原理 流程圖 Client與Server建立一個scoket連接,然後發送一個Auth請求,Server驗證後,返回AuthResp 接着Client發送ReqTunnel像服務器註冊通道,比如,HTTP,HTTPS,TC

原创 Redis源碼閱讀筆記-跳躍表結構 原

跳躍表 跳躍表 是一種有序的數據結構,通過在每個節點中維持多個指向其他節點的指針,從而達到快速訪問節點的目的。它是基於有序鏈表,在鏈表的基礎上,每個節點不止包含一個指針,還可能包含多個指向後繼節點的指針,從而加快操作。 示例: 結合圖,比

原创 Redis源碼閱讀筆記-鏈表結構 原

鏈表 Redis中是自己實現的鏈表。鏈表被廣泛用於Redis的各種功能,比如列表鍵、發佈於訂閱、慢查詢、監視器等。 列表鍵的底層實現之一就是鏈表(Redis3.2 之前,在Redis3.2 後被換成了快速列表quicklist)。當一個列表

原创 Redis源碼閱讀筆記-對象及其類型和編碼 原

總結之《Redis設計與實現》 對象 Redis中是使用對象來便是數據庫中的鍵和值。 結構 // server.h ... #define LRU_BITS 24 ... typedef struct redisObject {

原创 Redis源碼閱讀筆記-整數集合結構 原

整數集合 《Redis設計與實現》 整數集合(intset)是Redis中集合鍵的底層實現之一,當一個集合只包含整數值元素,並且這個集合的元素不多時,Redis就會使用整數集合作爲集合鍵的底層實現。 在Redis中,它可以保存類型爲int1