• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      Socket數(shù)據(jù)緩沖隊(duì)列設(shè)計(jì)

      2012-04-13 04:58:02蘇翠玲
      科技傳播 2012年9期
      關(guān)鍵詞:入隊(duì)斷線隊(duì)列

      蘇翠玲

      石家莊計(jì)算機(jī)職業(yè)學(xué)院,河北 石家莊 050061

      1 開發(fā)環(huán)境介紹

      C#是微軟公司發(fā)布的一種新的面向?qū)ο缶幊陶Z言。它是微軟公司研究員Anders Hejlsberg的最新成果。作為.NET開發(fā)平臺(tái)中最重要的一門語言,越來越受到廣大程序員的青睞。由C和C++衍生出來的,繼承了C和C++強(qiáng)大功能,同時(shí)去掉了一些復(fù)雜特性。C#綜合了VB簡單的可視化操作和C++的高運(yùn)行效率,以其強(qiáng)大的操作能力、創(chuàng)新的語言特性和便捷的面向組件編程的支持成為.NET開發(fā)的首選語言。

      Visual Studio是微軟公司推出的目前最流行的Windows平臺(tái)應(yīng)用程序開發(fā)環(huán)境,可以用來創(chuàng)建 Windows平臺(tái)下的應(yīng)用程序和網(wǎng)絡(luò)應(yīng)用程序,也可以用來創(chuàng)建網(wǎng)絡(luò)服務(wù)、智能設(shè)備應(yīng)用程序和 Office插件。

      2 應(yīng)用場景∶數(shù)據(jù)轉(zhuǎn)發(fā)

      在很多消息發(fā)送服務(wù)中都涉及到數(shù)據(jù)轉(zhuǎn)發(fā),常見的IM工具,比如QQ、MSN等等,企業(yè)用的特定數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù),比如GPS實(shí)時(shí)定位等。在數(shù)據(jù)量小的情況下一般不會(huì)有什么問題,但如果數(shù)據(jù)大,又對(duì)實(shí)時(shí)性要求比較高,如果處理不好則會(huì)出現(xiàn)性能問題。

      對(duì)轉(zhuǎn)發(fā)服務(wù)一般性要求:

      1)同時(shí)接收多個(gè)來源的數(shù)據(jù)連接;

      2)同時(shí)連接多個(gè)目標(biāo)的數(shù)據(jù)連接;

      3)實(shí)時(shí)轉(zhuǎn)發(fā);

      4)保證數(shù)據(jù)轉(zhuǎn)發(fā)順序與接收順序一致;

      5)本地保留數(shù)據(jù)副本

      首先,對(duì)于實(shí)時(shí)轉(zhuǎn)發(fā),就要求在收到數(shù)據(jù)后立刻寫入目標(biāo)客戶端連接,然后保存副本到本地?cái)?shù)據(jù)庫。在客戶端連接正常的情況下,一般不會(huì)有什么問題,但internet網(wǎng)絡(luò)的暢通性一般情況下是無法保證的,如果一旦在收到源數(shù)據(jù)后,而對(duì)應(yīng)客戶端又暫時(shí)連接不上,就會(huì)出現(xiàn)需要暫存數(shù)據(jù)的要求。

      對(duì)于暫存數(shù)據(jù),一般情況下是保存到本地?cái)?shù)據(jù)庫中,等客戶端連接后再一條一條查詢出對(duì)應(yīng)數(shù)據(jù)后發(fā)送,這樣可以實(shí)現(xiàn)此要求,但如果某個(gè)客戶端斷線很長時(shí)間,在本地暫存數(shù)據(jù)達(dá)到上千上萬記錄,如果這樣處理,勢必會(huì)影響發(fā)送速度,甚至可能會(huì)出現(xiàn)發(fā)送速度比接收速度還慢,那就會(huì)數(shù)據(jù)越積累越多,永遠(yuǎn)發(fā)送不完。

      除了上述問題,還有另一種情況,就是在客戶端頻繁短時(shí)間斷線,這種情況會(huì)出現(xiàn)對(duì)暫存數(shù)據(jù)庫的頻繁更新,對(duì)性能影響也很大。

      對(duì)于前面的問題,我們現(xiàn)在可設(shè)計(jì)一個(gè)內(nèi)存隊(duì)列池,每個(gè)客戶端如果需要暫存數(shù)據(jù),則先在此內(nèi)存隊(duì)列池中創(chuàng)建一個(gè)內(nèi)存隊(duì)列,將暫存數(shù)據(jù)保存到對(duì)應(yīng)隊(duì)列中,如果暫存數(shù)據(jù)量大于指定的某個(gè)值(根據(jù)內(nèi)存大小及實(shí)際需要指定),則將后續(xù)暫存數(shù)據(jù)持久到暫存數(shù)據(jù)庫,這樣,對(duì)于長時(shí)間斷線的客戶端產(chǎn)生的大量暫存數(shù)據(jù)的性能有一定緩解,對(duì)于頻繁短時(shí)間斷線的客戶端所產(chǎn)生的頻繁更新暫存數(shù)據(jù)庫的情況則可以完全避免。

      3 設(shè)計(jì)思想

      隊(duì)列池設(shè)計(jì),分為隊(duì)列 和 池。對(duì)于池的設(shè)計(jì)比較簡單,主要實(shí)現(xiàn)包括:

      1)內(nèi)部隊(duì)列緩存集合;

      2)初始化(指定隊(duì)列數(shù)據(jù)最大大小、加載上次隊(duì)列關(guān)閉時(shí)持久的隊(duì)列);

      3)數(shù)據(jù)入隊(duì)(調(diào)用客戶端對(duì)應(yīng)隊(duì)列的入隊(duì));

      4)數(shù)據(jù)出隊(duì)(調(diào)用客戶端對(duì)應(yīng)隊(duì)列的出隊(duì));

      5)關(guān)閉(持久化隊(duì)列)

      隊(duì)列的設(shè)計(jì),主要包括:

      1)初始化(實(shí)例化一個(gè)簡單的先進(jìn)現(xiàn)出隊(duì)列、加載上次隊(duì)列關(guān)閉時(shí)持久的數(shù)據(jù))

      2)數(shù)據(jù)入隊(duì)

      先同步隊(duì)列鎖,防止入隊(duì)和出隊(duì)的線程并發(fā)操作,然后判斷暫存數(shù)據(jù)是否超過隊(duì)列大小限制,如果超過則持久化到數(shù)據(jù)庫中(附加功能,發(fā)送電子郵件到指定郵箱,提醒數(shù)據(jù)出現(xiàn)問題),否則添加到隊(duì)列。

      3)數(shù)據(jù)出隊(duì)

      先同步隊(duì)列鎖,防止入隊(duì)和出隊(duì)的線程并發(fā)操作,然后判斷當(dāng)前隊(duì)列容量是否等于隊(duì)列最大容量,如果是,則有可能暫存數(shù)據(jù)庫中有暫存數(shù)據(jù),刪除之并對(duì)數(shù)據(jù)出隊(duì),否則直接對(duì)數(shù)據(jù)出隊(duì)。

      4)關(guān)閉(持久化隊(duì)列中數(shù)據(jù))。

      4 實(shí)現(xiàn)代碼

      5 結(jié)論

      該Socket數(shù)據(jù)緩沖隊(duì)列設(shè)計(jì)具有一定的實(shí)用性,通過優(yōu)化設(shè)計(jì),此方案應(yīng)對(duì)大多數(shù)數(shù)據(jù)轉(zhuǎn)發(fā)場景已經(jīng)基本夠用,達(dá)到了預(yù)期的效果。

      [1]李敏波編.C#高級(jí)編程[M].清華大學(xué)出版社.

      [2]邱郁惠編.visual studio 2010和UML黃金法則[M].機(jī)械工業(yè)出版社.

      猜你喜歡
      入隊(duì)斷線隊(duì)列
      今天我入隊(duì)——入隊(duì)儀式
      斷線的珍珠
      1+1我們這樣學(xué)隊(duì)章:我們的入隊(duì)誓詞
      隊(duì)列里的小秘密
      基于多隊(duì)列切換的SDN擁塞控制*
      軟件(2020年3期)2020-04-20 00:58:44
      在隊(duì)列里
      今天我入隊(duì)了
      一起10kV開關(guān)控制回路斷線故障分析及回路完善
      豐田加速駛?cè)胱詣?dòng)駕駛隊(duì)列
      入隊(duì)風(fēng)波
      岳西县| 双辽市| 西吉县| 东安县| 保定市| 栖霞市| 西和县| 谢通门县| 革吉县| 手游| 涪陵区| 乐昌市| 兴隆县| 象山县| 古丈县| 郎溪县| 江安县| 嘉祥县| 文成县| 文昌市| 鸡东县| 漳浦县| 吉水县| 西充县| 峨眉山市| 高邮市| 开阳县| 麻栗坡县| 左云县| 顺平县| 云霄县| 垦利县| 长治市| 阿坝县| 巴塘县| 姚安县| 翼城县| 阳泉市| 延安市| 微博| 湄潭县|