原创 訪問淘寶Tair的基礎類型

下面是一個訪問淘寶Tair分佈式存儲的基礎類型, 當前僅實現了Put,Get和Remove三個方法。主要用於存入數據,得到數據,刪除數據。 頭文件tair_handler.h   #include

原创 Socket connect error 99(Cannot assign requested address)

轉載請註明轉自: 存儲系統研究, 本文固定鏈接:socket connect error 99(Cannot assign request address)  這是最近使用libcurl寫http服務的壓力測試的時候遇到的一個問題,其

原创 C++ STL map中的Key使用自定義類型

C++ STL 中的map容器中的元素是按照Key的升序進行排列的,所以map的Key需要使用自定義類型時,該自定義類型必須重載operator<操作符,否則會出現下面的編譯錯誤:   In fil

原创 std::nth_element bug引起的crash問題

(1)     源碼: auto less_compare = [] (const MirroringGroup& mg1, const MirroringGroup& mg2) -> bool { return (

原创 單生產者-多消費者模型中遇到的問題

(1)      原始代碼 最近使用單生產者-多消費者模型是遇到一個問題,以前既然都沒有想到過。生產者線程的代碼如下,基本功能就是接收到一個連接之後創建一個Socket對象並放到list中等待處理。 void DataManager

原创 使用python調用zxing庫生成二維碼圖片

(1)     安裝Jpype  用python調用jar包需要安裝jpype擴展,在Ubuntu上可以直接使用apt-get安裝jpype擴展 $ sudo apt-get install python-jpype 關於使用Jpype

原创 C語言可變長參數實現原理

微博:http://weibo.com/u/2203007022                (1)      C語言可變參數 我們可以從C語言的printf得出可變參數的作用,printf函數的原型如下: int printf (

原创 Linux內核學習系列---排隊自旋鎖

      傳統的自旋鎖實際上就是一個整數,值爲1時表示沒有被佔用,值爲0或負數時表示鎖已經被佔用,此時spin_lock循環等待,直到spin_unlock將自旋鎖的值置爲1,在這個過程中沒有保存線程申請自旋鎖的順序信息,後進入等待的線

原创 Thrift服務端實現原理淺析

  一. server端服務啓動流程   創建一個Processor(rpc_handler)實例,用於處理特定的輸入; TBufferedTransportFactory用於數據傳輸

原创 淺析淘寶網絡通信庫tbnet的實現

最近開始看Tair的源碼實現,Tair的通信使用的是淘寶的開源的網絡庫tbnet實現。具體來說是依靠tbnet::Transport類型實現,其源代碼路徑如下:http://code.taobao.org/svn/tb-common-ut

原创 使用Tair時遇到pthread_join段錯誤問題解決

最經使用程序訪問Tair時,程序經常Crash,通過跟蹤和分析發現原因如下      在tair_client_impl::retrieve_server_addr中調用瞭如下函數:             thread.start(th

原创 Centos上安裝nginx

最近由於項目原因需要使用nginx,所以看了一下,先從安裝和配置開始。 (1)      安裝依賴 依賴庫直接使用yum安裝a)         安裝基本依賴工具 [root@localhost ~]#

原创 淘寶Tair分佈式存儲安裝部署

最近開發圖片存儲系統,其中縮略圖選用Tair進行緩存,以下是Tair如何安裝部署:      1.     如何安裝tair: (1)    確保安裝了automake autoconfig和 libto