原创 非專業levelDB源碼解析1
最近在做NoSQL方面的項目。項目開始之前,先學習當今比較主流的NoSQL數據庫,從levelDB開始。 關於levelDB的架構分析,參考了網上的《LevelDb日知錄》,就不狗尾續貂了。 直接從源碼分析起。 首先從創建一個DB講起。
原创 python zeromq安裝
今天在機器上試安裝了ZeroMQ,因爲是公共環境,存在一些權限問題,於是研究了下下python版本的zeroMQ 如何安裝到指定的路徑下。 首先下載zeromq和pyzmq. 官方下載路徑爲: http://zeromq.org/in
原创 RabbitMQ 基於python的使用方法(二)
第三種應用場景是發佈/訂閱模式 這種場景的特點是,一個發佈者發佈消息,多個訂閱者根據自己的需求訂閱相同或不同的內容。 這時,就需要exchange出馬了。在之前的兩個例子中,因爲對binding沒有要求,所以使用默認的exchange
原创 如何使用 docker 及常用命令(一)
要使用docker,首先要下載一個image作爲container. docker存放所有的image在一個統一的repository裏面,類似於git。通過pull命令就可以下載指定image了。。 docker pull ubu
原创 docker 架構 (文件系統, 層, 容器)
按照docker官網上的說法,docker的文件系統分爲兩層:bootfs和rootfs bootfs包含了bootloader和linux內核。用戶是不能對這層作任何修改的。在內核啓動之後,bootfs實際上會unmount掉。 r
原创 RabbitMQ 使用的AMQP模型解析
RabbitMQ 是採用AMQP協議進行通信的。比起簡單的TCP/UDP之類的通信,該模型更爲複雜,功能也更爲強大。 最近項目中用到RabbitMQ比較多,就比較系統深入的過來看看它的具體方式。 內容基本上從官網文檔借鑑。 在這個
原创 docker 安裝和使用 注意
1 如何下載image: 在安裝好docker之後,通過docker pull ubuntu應該可以獲取image. 但是如果局域網有可能無法鏈接到docker的網站並下載. 配置http代理並重啓docker. >
原创 LLVM IR 語法簡介(一)
LLVM IR 被設計爲一種輕量級,底層的語言用來描述各種上層的語言,對於不同的語言,都可以歸納爲同一種IR的格式。 標示符: LLVM的標識符分爲全局標識符和局部標識符。 全局標識符以'@'開頭,局部標識符以'%'爲開頭。 1. 命名
原创 RabbitMQ 基於python的使用方法
RabbitMQ基於的原理之前已經講過,每個組成部分也都有說明, 現在就開始學習如何使用了。 從最基本的模型說起。 P發送一個hello的消息給C。在這個事例中,並不需要考慮太多rabbitMQ部件上的設置。 對於發送方P來說,需要做
原创 Erlang 的8個誤區
Erlang編程時如何選用寫法?何種寫法更消耗資源?在線文檔中《The Eight Myths of Erlang Performance》對其中一些用法做出澄清。 1 Myth: 函數調用方法fun()會比較慢: Truth:本地
原创 python 版本的讀寫鎖
最近要用到讀寫鎖的機制,但是python2.7的自帶庫里居然木有. 網上講讀寫鎖的例子衆多,但是原理簡單,代碼明晰的卻不多見, 索性自己寫個. 讀寫鎖一般用於多個讀者,1個或多個寫者同時訪問某種資源的時候。多個讀者之間是可以共享資源的,
原创 python mox使用方法(3)
現在來製造一些異常情況! 首先,聲明一個異常。 class ZooException(Exception): pass 然後修改我們的測試用例,並且來捕獲這個異常。 def test_feed(self):
原创 非專業levelDB源碼解析3:Env
從levelDB的文檔中可以看出,env實際上是針對操作系統的各種功能的一次封裝,每個操作系統可以編寫各自的env的實現方式。 這樣levelDB就不再依賴於指定的操作系統,盡力做到平臺無關性。 // An Env is an inte
原创 Erlang 常見注意事項
1 timer模塊: 使用erlang:send_after和erlang:start_timer 會比直接調用timer模塊要快。 調用timer時會起一個進程來管理,這個進程在多進程的環境下很容易被延誤。 但timer:tc