原创 thrift數據類型

1 前言   Thrift是facebook技術核心框架之一,不同開發語言開發的服務可以通過該框架實現通信。Thrift通過接口定義語言 (interface definition language,IDL) 來定義數據類型和服務,Th

原创 【學習筆記】log4cxx安裝和使用

一、簡介 log4cxx是Java社區著名的log4j的c++移植版,用於爲C++程序提供日誌功能,以便開發者對目標程序進行調試和審計,log4cxx是apache軟件基金會的開源項目,基於APR實現跨平臺支持。一個良好的日誌系統不管是開

原创 【學習筆記】thrift下載與安裝

一、簡介 thrift來自於facebook,是一個軟件框架,用來進行可擴展且跨語言的服務的開發。允許你定義一個簡單的定義文件中的數據類型和服務接口。以作爲輸入文件,編譯器生成代碼用來方便地生成RPC客戶端和服務器通信的無縫跨編程語言。它

原创 jrtplib使用筆記

一、簡述 RTP 是目前解決流媒體實時傳輸問題的最好辦法,而JRTPLIB 是一個用C++語言實現的RTP庫,包括UDP通訊。剛使用JRTPLIB,對JRTPLIB的理解還不夠深,當做使用時,積累的一些經驗寫個筆記吧。 二、RTP協議 實

原创 Ice Session的使用

IceGrid提供了一種資源分配的方案,用於協調訪問IceGrid應用的對象和服務。客戶端創建session首先要通過IceGrid註冊服務或者Glacier2路由器的驗證,才能獲得資源服務的使用權。如果客戶端在一段時間內(默認60秒)沒

原创 使用boost::circular_buffer_space_optimized實現OTL數據庫連接池

引言 數據庫連接是一種關鍵的有限的昂貴的資源,因此對數據庫連接的管理能顯著影響到整個應用程序的伸縮性和健壯性,影響到程序的性能指標。數據庫連接池負責分配、管理和釋放數據庫連接,它允許應用程序重複使用一個現有的數據庫連接,而再不是重新建立一

原创 boost asio 異步實現tcp通訊

一、前言 boost asio可算是一個簡單易用,功能又強大可跨平臺的C++通訊庫,效率也表現的不錯,linux環境是epoll實現的,而windows環境是iocp實現的。而tcp通訊是項目當中經常用到通訊方式之一,實現的方法有各式各樣

原创 boost::interprocess 內存映射文件的用法

一、閒聊   今天項目中要讀寫一個將近40M的文件,發現使用fstream讀文件時,預先分配一個40M的緩衝區buffer時,隨機性的會申請內存失敗,因此查了下相關資料,發現使用內存映射文件可以解決此類讀

原创 Ice 配置部署

ICE提供了靈活的配置部署方案,但爲了減輕運維人員的工作量,開發的時候統一約定了一種規則,以便能夠簡易安裝部署,所以總結了一套配置的規則。 1.1      目錄結構 1.2      Icegridregistry配置與運行 根據

原创 編寫的windows程序,崩潰時產生crash dump文件的辦法

一、引言 dump文件是C++程序發生異常時,保存當時程序運行狀態的文件,是調試異常程序重要的方法,所以程序崩潰時,除了日誌文件,dump文件便成了我們查找錯誤的最後一根救命的稻草。windows程序產生dump文件和linux程序產生d

原创 ICE的連接機制

1、當使用ICE的proxy進行方法調用時,ICE運行環境會建立一個到服務器的連接。當proxy提供了多個endpoint時    默認的ICE運行環境選擇endpoint的行爲爲random,可以通過ice_endpointSelec

原创 Ice 安裝說明

環境: centos 6.4 gcc 4.8.2 make 3.81 ice 3.5.1 安裝步驟: 1) 安裝依賴庫Mcpp 從www.zeroc.com 下載ThirdParty-Sources-3.5.1.tar.gz $ tar

原创 mysql connector/c++ for vs2005

今天由於項目中需要c++連接mysql數據庫,查了下相關資料,找到了mysql connector/c++,既然是mysql官方給的開源庫,那就相信這個吧,因此決定使用了。 我的環境: 操作系統:windows xp mysql:5.5.

原创 libjson的使用問題

原先項目中一直使用boost的property_tree構造json,如果json格式比較簡單而且數據量不大時,沒感覺到什麼問題,但結構內嵌有3層對象以上,並且有數組結構時,性能問題就突顯出來了,實在慢的難以忍受。所以決定捨去尋求另一個更

原创 Ice插件開發

ICE插件開發都要從Ice::Plugin繼承,實現initialize()和destroy()兩個接口,如ICEloggerPlugin的實現: Class  ICE_API  LoggerPlugin : public Ice::Pl