摘要: 基于Lua 5.1實(shí)現(xiàn)的遠(yuǎn)程調(diào)試器,腳本運(yùn)行在服務(wù)端,客戶端登錄后可以遠(yuǎn)程管理腳本,可以調(diào)試腳本,單步跟進(jìn)、變量查看。
界面基于wxWidgets實(shí)現(xiàn),網(wǎng)絡(luò)通訊接口采用CORBA/TAO。
閱讀全文
posted @
2011-02-28 16:23 風(fēng)雷九州 閱讀(1963) |
評(píng)論 (2) |
編輯 收藏
摘要: 在C++中要進(jìn)行并發(fā)處理,不可避免要使用多線程,在傳統(tǒng)的教科書中,大家都是采用最原始的多線程技術(shù),應(yīng)用邏輯和線程并發(fā)策略緊密綁定。
在一個(gè)典型的服務(wù)器程序中,客戶端的請(qǐng)求往往包含了很多不同的邏輯命令,如在一個(gè)線程處理函數(shù)中,需要根據(jù)客戶端的命令代碼處理不同的業(yè)務(wù)邏輯:
int thrad_main(int cmd_id,char *data){
switch(cmd_id)
{
case 1:
...
break;
case 2:
...
break;
}
}
如此這般,業(yè)務(wù)處理邏輯和線程邏輯緊密耦合,這是一種很“丑陋”的代碼。
如何通過(guò)一種優(yōu)雅的方法,分離并發(fā)邏輯和業(yè)務(wù)邏輯,通過(guò)通用的并發(fā)框架,業(yè)務(wù)邏輯設(shè)計(jì)者只需要關(guān)心自己的邏輯代碼,交給“線程池”去處理即可,而不需要去關(guān)心如何創(chuàng)建線程,等待線程結(jié)果這些瑣碎的“小事”?
閱讀全文
posted @
2011-02-28 15:46 風(fēng)雷九州 閱讀(4273) |
評(píng)論 (3) |
編輯 收藏
摘要: 平臺(tái)服務(wù)和腳本服務(wù)接口對(duì)后端PostgreSQL數(shù)據(jù)庫(kù)的使用目前采用短暫連接方式,造成多次調(diào)用服務(wù)時(shí)頻繁連接和斷開數(shù)據(jù)庫(kù),效率很低。
如果共享數(shù)據(jù)庫(kù)連接,則會(huì)造成多線程訪問(wèn)數(shù)據(jù)庫(kù)時(shí)的事務(wù)沖突,故必須采用連接池來(lái)管理對(duì)數(shù)據(jù)庫(kù)的并發(fā)訪問(wèn),某一線程連接到數(shù)據(jù)庫(kù)使用完畢后,不斷開數(shù)據(jù)庫(kù)連接,而是把連接歸還給連接池。
另一線程訪問(wèn)數(shù)據(jù)庫(kù)時(shí)會(huì)首先向連接池申請(qǐng)已經(jīng)存在的連接,如果連接池中沒(méi)有空閑連接,或者申請(qǐng)到得連接已經(jīng)超時(shí)失效,再建立新的連接,使用完畢后同樣歸還到連接池。
這樣連接池中的連接數(shù)會(huì)隨著線程壓力的增加逐漸增長(zhǎng),直到所有的線程同時(shí)工作,達(dá)到最多連接數(shù)。
由于一個(gè)線程可能同時(shí)申請(qǐng)多個(gè)連接,故連接數(shù)可能會(huì)大于線程數(shù)。連接池在程序結(jié)束時(shí)銷毀全部連接,或者線程在申請(qǐng)到的某一連接失效時(shí)銷毀該連接。
閱讀全文
posted @
2011-02-28 13:57 風(fēng)雷九州 閱讀(5754) |
評(píng)論 (0) |
編輯 收藏
摘要: 在C/S結(jié)構(gòu)的C++網(wǎng)絡(luò)程序中,直接采用Socket API進(jìn)行開發(fā)效率是很低的,所以大家發(fā)明了各種各樣的網(wǎng)絡(luò)框架,如Boost.Aiso和ACE,簡(jiǎn)化了網(wǎng)絡(luò)通信開發(fā)的難度。
但是這種基于數(shù)據(jù)包收發(fā)的模式還是不太方便,于是又出現(xiàn)了RPC、DCOM、CORBA等遠(yuǎn)程接口調(diào)用的標(biāo)準(zhǔn)。客戶端只需要像調(diào)用本地函數(shù)一樣調(diào)用遠(yuǎn)程接口,框架會(huì)自動(dòng)處理數(shù)據(jù)包收發(fā),請(qǐng)求和應(yīng)答等底層細(xì)節(jié)。
雖然現(xiàn)在Web技術(shù)的發(fā)展如火如荼,大有取代C/S架構(gòu)應(yīng)用之勢(shì),但是,直接運(yùn)行于操作系統(tǒng)平臺(tái)上的C++原生應(yīng)用還是有它存在的意義,最主要的方面就是接近系統(tǒng)底層,對(duì)操作系統(tǒng)資源和底層設(shè)備的控制等,其他任何虛擬機(jī)上的中間語(yǔ)言是無(wú)法望其項(xiàng)背的。
CORBA是一個(gè)為簡(jiǎn)化跨平臺(tái)應(yīng)用而提出的規(guī)范,它獨(dú)立于網(wǎng)絡(luò)協(xié)議、編程語(yǔ)言和軟硬件平臺(tái),支持異構(gòu)的分布式計(jì)算環(huán)境和不同編程語(yǔ)言間的對(duì)象重用。
閱讀全文
posted @
2011-02-16 19:54 風(fēng)雷九州 閱讀(3914) |
評(píng)論 (0) |
編輯 收藏
摘要: 最近開發(fā)了一個(gè)基于ACE實(shí)現(xiàn)的C++ Service框架,每一個(gè)服務(wù)實(shí)現(xiàn)為一個(gè)插件,
客戶端通過(guò)遠(yuǎn)程調(diào)用接口即可訪問(wèn)服務(wù)對(duì)象提供的服務(wù),客戶端接口的包裝如下所示:
。。。
一個(gè)網(wǎng)絡(luò)應(yīng)用一般包括兩部分,位于服務(wù)端的“服務(wù)對(duì)象”和位于客戶端的“調(diào)用代理”,上面這個(gè)類屬于客戶端代理對(duì)象。
兩端之間遵從的協(xié)議就是請(qǐng)求“LoginRequest”和響應(yīng)“LoginResult ”。
閱讀全文
posted @
2009-07-22 13:16 風(fēng)雷九州 閱讀(2953) |
評(píng)論 (5) |
編輯 收藏
不知不覺,已經(jīng)工作了2年了,雖然只是一個(gè)普普通通的C++程序員,但這兩年也經(jīng)歷了許多喜怒哀樂(lè)愁。
IT圈的發(fā)展日新月異,新語(yǔ)言新技術(shù)層出不窮,當(dāng)大家都熱衷于.NET、Java、Web,追趕著開發(fā)潮流,我卻依然在擺弄著C++,很明顯C++不適合做應(yīng)用系統(tǒng)的開發(fā),尤其是報(bào)表和用戶界面上,做的非常累人,很不想做下去了。
所以我一直在研究C++在服務(wù)器系統(tǒng)的開發(fā),這方面應(yīng)該是比較有潛力的,最近研究了一些boost,這些c++中的新鮮血液讓我感覺很震撼,雖然一些技術(shù)在別的新型語(yǔ)言中并不算什么,但是對(duì)于c++來(lái)說(shuō)仍然是劃時(shí)代的進(jìn)步。
posted @
2009-07-22 10:29 風(fēng)雷九州 閱讀(382) |
評(píng)論 (1) |
編輯 收藏