原创 非專業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