国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種并發(fā)數(shù)據(jù)的緩存結(jié)構(gòu)及方法

      文檔序號(hào):10512111閱讀:210來源:國知局
      一種并發(fā)數(shù)據(jù)的緩存結(jié)構(gòu)及方法
      【專利摘要】一種并發(fā)數(shù)據(jù)的緩存結(jié)構(gòu),包括多組數(shù)據(jù)寫入線程與數(shù)據(jù)讀取線程、多組數(shù)據(jù)緩存、多個(gè)寫、讀管道;每組數(shù)據(jù)緩存包括多組數(shù)據(jù)緩存模塊,每組數(shù)據(jù)緩存模塊分別包括若干組緩存分區(qū)以及與一分區(qū)控制單元,分區(qū)控制單元與每一緩存分區(qū)分別通信連接的以控制多個(gè)緩存分區(qū)的工作狀態(tài)以及被訪問順序;每組數(shù)據(jù)寫入線程經(jīng)由一組寫管道與數(shù)據(jù)緩存通信連接,每組數(shù)據(jù)讀取線程經(jīng)由一組讀管道與數(shù)據(jù)緩存通信連接,多組數(shù)據(jù)寫入、讀取線程分別覆蓋全部數(shù)據(jù)緩存模塊設(shè)置,寫、讀管道分別確定數(shù)據(jù)寫入、地球線程在相應(yīng)數(shù)據(jù)緩存中訪問數(shù)據(jù)緩存模塊的順序,不同的寫、讀管道所映射的數(shù)據(jù)緩存模塊不相交,可用于支持多個(gè)網(wǎng)絡(luò)端口接收或多線程并行處理的業(yè)務(wù)需求。
      【專利說明】
      一種并發(fā)數(shù)據(jù)的緩存結(jié)構(gòu)及方法
      技術(shù)領(lǐng)域
      [0001]本發(fā)明涉及輻射檢測領(lǐng)域的數(shù)據(jù)采集技術(shù),具體涉及一種高速數(shù)據(jù)采集的緩存方法和設(shè)備。
      【背景技術(shù)】
      [0002]現(xiàn)有技術(shù)中的高速數(shù)據(jù)采集系統(tǒng),其每個(gè)數(shù)據(jù)通道一般都對應(yīng)設(shè)有一個(gè)獨(dú)立的用于緩存通道數(shù)據(jù)的FIF0(First Input First Ouput,先入先出隊(duì)列),然而在實(shí)際的數(shù)據(jù)采集中,經(jīng)常遇到數(shù)據(jù)采集率高、速度快,而數(shù)據(jù)處理時(shí)間長,速度較慢的矛盾,當(dāng)緩存容量大時(shí),這種原始數(shù)據(jù)的速率較高,對網(wǎng)絡(luò)接收和數(shù)據(jù)處理提出了較高的要求。
      [0003]以全數(shù)字PET為例,圖1為全數(shù)字PET設(shè)備中數(shù)據(jù)采集與處理流程示意圖,探測器各通道對接收到信號(hào)進(jìn)行采樣和編碼,以特定格式的數(shù)據(jù)包發(fā)送到網(wǎng)絡(luò)。PET成像所需的有效事件分布于不同的探測器通道,兩者之間的匹配關(guān)系可通過事件采樣時(shí)間來標(biāo)定。來自各探測器通道的有效事件以及噪聲數(shù)據(jù)混合在一起,串行分布于網(wǎng)絡(luò)傳輸鏈路中,當(dāng)采集服務(wù)器接收到這些數(shù)據(jù)后,基于符合算法從中篩選出有效事件,并進(jìn)行時(shí)間、能量校正,然后根據(jù)重建算法將篩選結(jié)果轉(zhuǎn)換為PET圖像。理想情況下數(shù)據(jù)采集應(yīng)與符合處理并發(fā)執(zhí)行,實(shí)時(shí)完成數(shù)據(jù)篩選、時(shí)間校正、能量校正,從而降低重建前數(shù)據(jù)存儲(chǔ)所需的資源要求。但是由于通道數(shù)量多,且每個(gè)通道中數(shù)據(jù)量十分巨大,每秒需要同時(shí)處理1.5GB至3GB的數(shù)據(jù),若無法及時(shí)進(jìn)行處理,會(huì)導(dǎo)致有效事件的丟包,進(jìn)而導(dǎo)致數(shù)據(jù)篩選、時(shí)間校正、能量校正的有效性降低,圖像重建無法實(shí)現(xiàn)或者雖然能實(shí)現(xiàn)但是嚴(yán)重影響精準(zhǔn)性。

      【發(fā)明內(nèi)容】

      [0004]本發(fā)明的目的在于提供一種并發(fā)數(shù)據(jù)的緩存方法及緩存結(jié)構(gòu),能夠有效解決數(shù)據(jù)采集率高、速度塊,而數(shù)據(jù)處理時(shí)間長、速度慢的問題,尤其應(yīng)用于全數(shù)字PET中的數(shù)據(jù)采集。
      [0005]為達(dá)到上述目的,本發(fā)明的解決方案是:
      [0006]本發(fā)明公開了一種并發(fā)數(shù)據(jù)的緩存結(jié)構(gòu),其同時(shí)進(jìn)行數(shù)據(jù)的寫入與讀取,包括多組數(shù)據(jù)寫入線程、多組數(shù)據(jù)讀取線程、多組數(shù)據(jù)緩存、多個(gè)寫管道以及多個(gè)讀管道;
      [0007]所述每組數(shù)據(jù)緩存包括多組數(shù)據(jù)緩存模塊,每組數(shù)據(jù)緩存模塊分別包括若干組緩存分區(qū)以及與一分區(qū)控制單元,所述分區(qū)控制單元與所述每一緩存分區(qū)分別通信連接的以控制所述多個(gè)緩存分區(qū)的工作狀態(tài)以及被訪問順序,所述分區(qū)控制單元用于將所述相應(yīng)緩存分區(qū)的工作狀態(tài)設(shè)置為空閑狀態(tài)、寫鎖定狀態(tài)、寫滿狀態(tài)以及讀鎖定狀態(tài)中的任意一種,僅當(dāng)所述緩存分區(qū)為空閑狀態(tài)時(shí)支持寫鎖定,且所述緩存分區(qū)處于寫鎖定狀態(tài)時(shí)支持?jǐn)?shù)據(jù)寫入,僅當(dāng)所述緩存分區(qū)為寫滿狀態(tài)時(shí)支持讀鎖定,且所述緩存分區(qū)處于讀鎖定狀態(tài)時(shí)支持?jǐn)?shù)據(jù)讀出;
      [0008]每組數(shù)據(jù)寫入線程經(jīng)由一組寫管道與數(shù)據(jù)緩存通信連接,多組數(shù)據(jù)寫入線程覆蓋全部數(shù)據(jù)緩存模塊設(shè)置,所述寫管道用于確定數(shù)據(jù)寫入線程在相應(yīng)數(shù)據(jù)緩存中訪問數(shù)據(jù)緩存模塊的順序,不同的寫管道所映射的數(shù)據(jù)緩存模塊不相交;
      [0009]每組數(shù)據(jù)讀取線程經(jīng)由一組讀管道與數(shù)據(jù)緩存通信連接,多組數(shù)據(jù)讀取線程覆蓋全部的數(shù)據(jù)緩存模塊設(shè)置,所述讀管道用于確定數(shù)據(jù)讀取線程在相應(yīng)數(shù)據(jù)緩存中訪問數(shù)據(jù)緩存模塊的順序,不同讀管道所映射的數(shù)據(jù)緩存模塊不相交。
      [0010]所述讀管道數(shù)量不少于所述寫管道數(shù)量設(shè)置。
      [0011]所述數(shù)據(jù)緩存的數(shù)量為數(shù)據(jù)寫入線程與數(shù)據(jù)讀取線程數(shù)量的最小公倍數(shù)的整數(shù)倍。
      [0012]所述數(shù)據(jù)緩存模塊為生產(chǎn)者與消費(fèi)者模型。
      [0013]所述每組緩存分區(qū)包括一控制單元以及多組緩存扇區(qū),所述緩存扇區(qū)一一編碼設(shè)置,所述控制單元與所述每組緩存扇區(qū)通信連接,以控制每組緩存分區(qū)中,數(shù)據(jù)寫入緩存扇區(qū)的順序;
      [0014]進(jìn)一步優(yōu)選的,所述每組緩存扇區(qū)包括一控制組件以及多個(gè)緩存頁面,所述緩存頁面一一編碼且每組寫入數(shù)據(jù)的大小與緩存頁面相同設(shè)置,所述控制組件與所述緩存頁面分別通向連接,以控制每組緩存扇區(qū)中,數(shù)據(jù)寫入緩存頁碼的順序。
      [0015]所述分區(qū)控制單元包括一寫鎖定判斷單元以及一讀鎖定判斷單元;
      [0016]所述寫鎖定判斷單元與相應(yīng)的寫管道以及緩存分區(qū)通信連接,以控制數(shù)據(jù)緩存模塊中緩存分區(qū)的訪問順序、寫鎖定與去寫鎖定,所述數(shù)據(jù)寫入線程經(jīng)由所述寫管道以及寫鎖定判斷單元與指定數(shù)據(jù)緩存模塊中的緩存分區(qū)通信連續(xù)劇,以根據(jù)所述寫鎖定判斷單元確定的訪問順序訪問的緩存分區(qū),并根據(jù)當(dāng)前訪問緩存分區(qū)的工作狀態(tài)進(jìn)行數(shù)據(jù)的寫入操作;
      [0017]所述讀鎖定判斷單元與相應(yīng)的讀管道以及緩存分區(qū)通信連接,以控制數(shù)據(jù)緩存模塊中緩存分區(qū)的訪問順序、讀鎖定與去讀鎖定,所述數(shù)據(jù)讀取線程經(jīng)由所述讀管道以及讀鎖定判斷單元與與指定數(shù)據(jù)緩存模塊中的緩存分區(qū)通信連接,以根據(jù)所訪問的緩存分區(qū)的當(dāng)前狀態(tài)判斷是否讀取緩存數(shù)據(jù)。
      [0018]本發(fā)明還公開了一種并發(fā)數(shù)據(jù)的緩存方法,包括以下步驟:緩存分區(qū)的工作狀態(tài)設(shè)置為空閑狀態(tài)、寫鎖定狀態(tài)、寫滿狀態(tài)以及讀鎖定狀態(tài)中的任意一種,
      [0019](A)所述多個(gè)數(shù)據(jù)緩存同時(shí)進(jìn)行數(shù)據(jù)寫入,一組數(shù)據(jù)寫入至相應(yīng)數(shù)據(jù)緩存時(shí),(Al)確定數(shù)據(jù)緩存中各數(shù)據(jù)緩存模塊的寫入順序,按照既定順序?qū)⒃摻M數(shù)據(jù)寫入至指定數(shù)據(jù)緩存模塊中:(A21)實(shí)時(shí)監(jiān)測指定數(shù)據(jù)緩存模塊是否存在寫鎖定狀態(tài)緩存分區(qū):若有寫鎖定狀態(tài)緩存分區(qū)直接轉(zhuǎn)入步驟(A22-2)進(jìn)行該組數(shù)據(jù)寫入;若沒有寫鎖定狀態(tài)緩存分區(qū),(A22)實(shí)時(shí)監(jiān)測是否存在空閑狀態(tài)的緩存分區(qū):若沒有處于空閑狀態(tài)的緩存分區(qū),則轉(zhuǎn)入步驟(Al);若有處于空閑狀態(tài)的緩存分區(qū),(A22-1)選定一組空閑狀態(tài)的緩存分區(qū)置為寫鎖定狀態(tài);(A22-2)向所述寫鎖定狀態(tài)的緩存分區(qū)寫入該組數(shù)據(jù);(A22-3)判斷所述數(shù)據(jù)是否寫入成功:若寫入成功,則該組數(shù)據(jù)寫入完成,結(jié)束該組數(shù)據(jù)寫入,若寫入失敗,則將當(dāng)前緩存分區(qū)置為寫滿狀態(tài),并轉(zhuǎn)入步驟(A3),判斷指定數(shù)據(jù)緩存模塊是否寫滿,若指定數(shù)據(jù)緩存模塊寫滿,轉(zhuǎn)入步驟(Al ),將下一組數(shù)據(jù)按照既定順序?qū)懭肓硪粩?shù)據(jù)緩存模塊中;若指定數(shù)據(jù)緩存模塊未寫滿,則轉(zhuǎn)入步驟(A21),將下一組數(shù)據(jù)繼續(xù)寫入至指定數(shù)據(jù)緩存模塊中;
      [0020]步驟(B),所述多個(gè)數(shù)據(jù)緩存同時(shí)進(jìn)數(shù)據(jù)讀取,每組數(shù)據(jù)緩存的數(shù)據(jù)讀取包括:(BI)確定各數(shù)據(jù)緩存中數(shù)據(jù)緩存模塊數(shù)據(jù)讀取的順序,并依照確定的順序選擇指定數(shù)據(jù)緩存模塊進(jìn)行數(shù)據(jù)讀取,(B2)實(shí)時(shí)監(jiān)測指定數(shù)據(jù)緩存模塊是否存在寫滿狀態(tài)下的緩存分區(qū):若沒有寫滿狀態(tài)的緩存分區(qū),轉(zhuǎn)入步驟(BI),繼續(xù)下一數(shù)據(jù)緩存模塊的數(shù)據(jù)讀取;若有處于寫滿狀態(tài)下的緩存分區(qū),(B21)選定該組寫滿狀態(tài)的緩存分區(qū)置為讀鎖定狀態(tài);(B22)讀取該讀鎖定狀態(tài)緩存分區(qū)內(nèi)的緩存數(shù)據(jù),當(dāng)判斷所述讀鎖定狀態(tài)緩存分區(qū)讀取完畢時(shí),將所述緩存設(shè)置為空閑狀態(tài),同時(shí)轉(zhuǎn)入步驟(B3),判斷指定數(shù)據(jù)緩據(jù)緩存模塊內(nèi)的數(shù)據(jù)是否讀完,若該指定數(shù)據(jù)緩存模塊數(shù)據(jù)讀取完畢,則轉(zhuǎn)入步驟(BI ),繼續(xù)所述數(shù)據(jù)緩存中下一數(shù)據(jù)緩存模塊的數(shù)據(jù)讀取;若該指定數(shù)據(jù)緩存模塊未讀完,轉(zhuǎn)入步驟(B2),繼續(xù)指定數(shù)據(jù)緩存模塊中下一組緩存分區(qū)的數(shù)據(jù)讀取。
      [0021]優(yōu)選的,所述每組數(shù)據(jù)緩存模塊中,同時(shí)只存在一組寫鎖定緩存分區(qū)和/或一組讀鎖定緩存分區(qū),僅當(dāng)所述緩存分區(qū)為空閑狀態(tài)時(shí)支持寫鎖定,僅當(dāng)所述緩存分區(qū)為寫滿狀態(tài)時(shí)支持讀鎖定;
      [0022]優(yōu)選的,全部數(shù)據(jù)寫入進(jìn)程結(jié)束時(shí),若存在一組未寫滿的緩存分區(qū),則所述未寫滿緩存分區(qū)被置為寫滿狀態(tài)以進(jìn)行數(shù)據(jù)的讀?。?br>[0023]優(yōu)選的,所述步驟(A21)中,采取遍歷的方式訪問各緩存分區(qū)以判斷是否存在空閑狀態(tài)的緩存分區(qū);
      [0024]優(yōu)選的,所述步驟(A22)中,當(dāng)沒有處于空閑狀態(tài)的緩存分區(qū)后,還包括判斷該緩存分區(qū)所在的指定數(shù)據(jù)緩存模塊是否為本組數(shù)據(jù)緩存中的最后一組數(shù)據(jù)緩存模塊,若不是,則轉(zhuǎn)入步驟A( I),繼續(xù)數(shù)據(jù)寫入,若是,則結(jié)束數(shù)據(jù)寫入。
      [0025]所述步驟(A22-3)中,所述數(shù)據(jù)寫入成功判斷包括以下步驟:向所述寫鎖定狀態(tài)的緩存分區(qū)寫入數(shù)據(jù)組:當(dāng)判斷所述寫鎖定狀態(tài)緩存分區(qū)未寫滿時(shí),寫入成功,繼續(xù)該組緩存分區(qū)的數(shù)據(jù)寫入;當(dāng)判斷所述寫鎖定狀態(tài)緩存分區(qū)寫滿時(shí),將該組緩存分區(qū)置為寫滿狀態(tài),并轉(zhuǎn)入步驟(A3),繼續(xù)下一組外部數(shù)據(jù)的寫入;
      [0026]優(yōu)選的,所述步驟(B2)之前,還包括實(shí)時(shí)監(jiān)測是否存在讀鎖定狀態(tài)緩存分區(qū)的步驟,若有,直接轉(zhuǎn)入步驟(B22)讀取所述讀鎖定狀態(tài)緩存分區(qū)內(nèi)的緩存數(shù)據(jù);若無,則轉(zhuǎn)入步驟(B2);
      [0027]優(yōu)選的,所述步驟(B2)中,采取遍歷、與數(shù)據(jù)寫入訪問相同的順序、緩存分區(qū)寫滿主動(dòng)上報(bào)中的任一方式判斷是否存在寫滿狀態(tài)下的未鎖定的緩存分區(qū)。
      [0028]進(jìn)一步的,所述寫鎖定狀態(tài)的緩存分區(qū)寫滿判斷包括以下步驟:向所述寫鎖定狀態(tài)的緩存分區(qū)寫入數(shù)據(jù)時(shí),比較該組數(shù)據(jù)與所述寫鎖定狀態(tài)的緩存分區(qū)剩余空間大小,若該組數(shù)據(jù)大于所述寫鎖定狀態(tài)的緩存分區(qū)剩余空間,判斷所述寫鎖定狀態(tài)的緩存分區(qū)寫滿;或,向所述寫鎖定狀態(tài)的緩存分區(qū)寫入該組數(shù)據(jù)時(shí),系統(tǒng)報(bào)錯(cuò),則判斷所述寫鎖定狀態(tài)的緩存分區(qū)寫滿。
      [0029]所述緩存分區(qū)內(nèi)部采用分級(jí)管理的方式進(jìn)行數(shù)據(jù)寫入操作,所述緩存分區(qū)中包括多個(gè)大小相同的緩存扇區(qū),且所述緩存扇區(qū)一一編碼,且包括多個(gè)大小相同的緩存頁面,所述每組寫入數(shù)據(jù)的大小與所述緩存頁面大小相同設(shè)置,所述步驟(A22-3)中,判斷所述數(shù)據(jù)是否寫入成功包括以下步驟:每組數(shù)據(jù)寫入緩存分區(qū)的每一緩存扇區(qū)后,緩存扇區(qū)內(nèi)部計(jì)數(shù),確定當(dāng)前緩存扇區(qū)編碼,比較所述緩存扇區(qū)編碼與所述緩存扇區(qū)的最大編碼數(shù)大小:若該緩存扇區(qū)編碼小于所述緩存分區(qū)的最大編碼數(shù),判斷下一組數(shù)據(jù)能夠在本緩存分區(qū)中寫入成功,若緩存扇區(qū)編碼等于所述緩存分區(qū)的最大編碼數(shù),則判斷所述緩存分區(qū)已寫滿,轉(zhuǎn)入步驟(A3);
      [0030]優(yōu)選的,所述數(shù)據(jù)按照編碼順序?qū)懭胫了鼍彺嫔葏^(qū)中,且所述緩存頁面一一編碼,所述數(shù)據(jù)寫入至緩存扇區(qū)時(shí),按照緩存頁面的編碼順序依次寫入。
      [0031]所述多個(gè)數(shù)據(jù)寫管道與多個(gè)數(shù)據(jù)讀管道分別覆蓋全部的數(shù)據(jù)緩存模塊,且所述多個(gè)數(shù)據(jù)寫管道所映射的數(shù)據(jù)緩存模塊不相交設(shè)置,多個(gè)數(shù)據(jù)讀管道所映射的數(shù)據(jù)緩存模塊不相交設(shè)置;
      [0032]優(yōu)選的,所述數(shù)據(jù)緩存模塊的數(shù)量為數(shù)據(jù)寫入線程與數(shù)據(jù)讀取線程數(shù)量的最小公倍數(shù)的整數(shù)倍;
      [0033]優(yōu)選的,所述數(shù)據(jù)讀取速度大于數(shù)據(jù)寫入速度;
      [0034]優(yōu)選的,所述數(shù)據(jù)緩存模塊為生產(chǎn)者與消費(fèi)者模型。
      [0035]由于采用上述方案,本發(fā)明的有益效果是:本發(fā)明所示的并發(fā)數(shù)據(jù)的緩存結(jié)構(gòu)及方法,將多個(gè)數(shù)據(jù)緩存組合起來,并針對數(shù)據(jù)寫入線程和數(shù)據(jù)讀取線程的數(shù)量分別配置不同規(guī)格的訪問管道,數(shù)據(jù)寫入線程通過與之綁定的寫管道來訪問數(shù)據(jù)緩存,數(shù)據(jù)讀取線程通過與之綁定的讀管道來訪問數(shù)據(jù)緩存。不同的讀管道所映射的數(shù)據(jù)緩存模塊集合不存在相交,不同的寫管道所映射的數(shù)據(jù)緩存模塊集合也不存在相交,且讀管道、寫管道可以結(jié)合有關(guān)設(shè)定來定制遍歷策略以調(diào)節(jié)內(nèi)部緩存單元的數(shù)據(jù)飽和程度,可用于支持多個(gè)網(wǎng)絡(luò)端口接收或多線程并行處理的業(yè)務(wù)需求,減少或避免生產(chǎn)者之間或消費(fèi)者之間的鎖沖突,以期實(shí)現(xiàn)更好的讀寫效率。
      【附圖說明】
      [0036]圖1為全數(shù)字PET的數(shù)據(jù)采集與處理流程示意圖;
      [0037]圖2為本發(fā)明所示的并發(fā)數(shù)據(jù)的緩存結(jié)構(gòu)一實(shí)施例的結(jié)構(gòu)示意圖;
      [0038]圖3為圖2所示實(shí)施例中數(shù)據(jù)緩存模塊的結(jié)構(gòu)示意圖;
      [0039]圖4為圖3所示實(shí)施例中緩存分區(qū)的結(jié)構(gòu)示意圖;
      [0040]圖5為本發(fā)明所示的并發(fā)數(shù)據(jù)緩存方法中數(shù)據(jù)寫入的流程示意圖;
      [0041 ]圖6為并發(fā)數(shù)據(jù)緩存方法中數(shù)據(jù)讀取的流程示意圖;
      [0042]其中,數(shù)據(jù)寫入線程100、數(shù)據(jù)讀取線程200、數(shù)據(jù)緩存300、數(shù)據(jù)緩存模塊310、緩存分區(qū)311、控制單元311-1、緩存扇區(qū)311-2、控制組件a、緩存頁面b、分區(qū)控制單元312、寫鎖定判斷單元312-1、讀鎖定判斷單元312-2寫管道400、讀管道500。
      【具體實(shí)施方式】
      [0043]以下結(jié)合附圖所示實(shí)施例對本發(fā)明作進(jìn)一步的說明。
      [0044]如圖2所示,本發(fā)明公開了一種并發(fā)數(shù)據(jù)的緩存結(jié)構(gòu),同時(shí)進(jìn)行數(shù)據(jù)的寫入與讀取,包括多組數(shù)據(jù)寫入線程100、多組數(shù)據(jù)讀取線程200、多組數(shù)據(jù)緩存300、多個(gè)寫管道400以及多個(gè)讀管道500。其中如圖3所示,每組數(shù)據(jù)緩存300包括多組數(shù)據(jù)緩存模塊310,數(shù)據(jù)緩存模塊310又分別包括若干組緩存分區(qū)311以及與一分區(qū)控制單元312,分區(qū)控制單元312與每一緩存分區(qū)311分別通信連接以控制多個(gè)緩存分區(qū)311的工作狀態(tài)以及被訪問順序。每組數(shù)據(jù)寫入線程100經(jīng)由一組寫管道400與數(shù)據(jù)緩存300通信連接,多組數(shù)據(jù)寫入線程100覆蓋全部數(shù)據(jù)緩存模塊310設(shè)置,寫管道400用于確定數(shù)據(jù)寫入線程100在相應(yīng)數(shù)據(jù)緩存300中訪問數(shù)據(jù)緩存模塊310的順序,不同的寫管道400所映射的數(shù)據(jù)緩存模塊310不相交;數(shù)據(jù)寫入線程100通過與之綁定的寫管道400來訪問數(shù)據(jù)緩存300。不同的寫管道400所映射的數(shù)據(jù)緩存模塊310不存在相交。寫管道400可以定制遍歷策略來調(diào)節(jié)數(shù)據(jù)在內(nèi)部緩存單元的分布。例如,當(dāng)針對單條數(shù)據(jù)記錄采取順序遍歷寫入策略時(shí),可使得各數(shù)據(jù)緩存模塊310的數(shù)據(jù)輸入相對均衡。
      [0045]每組數(shù)據(jù)讀取線程200由一組讀管道500與數(shù)據(jù)緩存300通信連接,多組數(shù)據(jù)讀取線程200覆蓋全部數(shù)據(jù)緩存模塊310設(shè)置,讀管道500用于確定數(shù)據(jù)讀取線程200在相應(yīng)數(shù)據(jù)緩存300中訪問數(shù)據(jù)緩存模塊310的順序,不同讀管道500所映射的數(shù)據(jù)緩存模塊310不相交。數(shù)據(jù)讀取線程200通過與之綁定的讀管道500來訪問數(shù)據(jù)緩存300。不同的讀管道500所映射的數(shù)據(jù)緩存模塊310不存在相交。讀管道500可以結(jié)合寫管道400有關(guān)設(shè)定來定制遍歷策略以調(diào)節(jié)內(nèi)部數(shù)據(jù)緩存模塊310的數(shù)據(jù)飽和程度。
      [0046]本發(fā)明所示的并發(fā)數(shù)據(jù)的緩存結(jié)構(gòu)將多個(gè)數(shù)據(jù)緩存模塊310組合起來,并針對數(shù)據(jù)寫入與讀取線程的數(shù)量分別配置不同規(guī)格的訪問管道,即如圖3所示,每組數(shù)據(jù)寫入線程經(jīng)由一寫管道與一數(shù)據(jù)緩存通信連接,用于控制相應(yīng)數(shù)據(jù)緩存中全部數(shù)據(jù)緩存模塊的數(shù)據(jù)寫入,每組數(shù)據(jù)讀取線程經(jīng)由一讀管道與某一個(gè)或多個(gè)數(shù)據(jù)緩存通信連接,用于控制相應(yīng)數(shù)據(jù)緩存中部分?jǐn)?shù)據(jù)緩存模塊的數(shù)據(jù)讀取,這樣設(shè)置保證所有的讀管道500或?qū)懝艿?00所映射的數(shù)據(jù)緩存模塊310相對均衡,可支持多個(gè)網(wǎng)絡(luò)端口接收或多線程并行處理的業(yè)務(wù)需求,同時(shí)減少或避免數(shù)據(jù)寫入線程100之間或數(shù)據(jù)讀取線程200之間的鎖沖突,實(shí)現(xiàn)更好的讀寫效率。
      [0047]具體而言,每個(gè)數(shù)據(jù)緩存300內(nèi)包括多個(gè)數(shù)據(jù)緩存模塊310,為使得數(shù)據(jù)寫入有序進(jìn)行,寫管道400用于確定相應(yīng)數(shù)據(jù)寫入線程100訪問數(shù)據(jù)緩存300順序,數(shù)據(jù)寫入線程100按照對應(yīng)寫管道400確定的順序訪問其中一數(shù)據(jù)緩存模塊310時(shí),各數(shù)據(jù)緩存模塊310的分區(qū)控制模塊312對數(shù)據(jù)寫入進(jìn)行進(jìn)一步的控制。分區(qū)控制模塊312將每個(gè)緩存分區(qū)311的工作狀態(tài)設(shè)置為空閑狀態(tài)、寫鎖定狀態(tài)、寫滿狀態(tài)以及讀鎖定狀態(tài)中的任意一種。僅當(dāng)緩存分區(qū)311為空閑狀態(tài)時(shí)支持寫鎖定,且當(dāng)緩存分區(qū)311的工作狀態(tài)為寫鎖定時(shí)支持?jǐn)?shù)據(jù)的寫入;僅當(dāng)緩存分區(qū)311為寫滿狀態(tài)時(shí)支持讀鎖定,且當(dāng)緩存分區(qū)311的工作狀態(tài)為讀鎖定狀態(tài)時(shí)支持?jǐn)?shù)據(jù)的讀出,同時(shí)分區(qū)控制單元312還用于控制各個(gè)緩存分區(qū)311的被訪問順序,數(shù)據(jù)寫入線程100與數(shù)據(jù)讀取線程200分別經(jīng)由寫管道400以及分區(qū)控制單元312的配合與各緩存分區(qū)311通信連接,數(shù)據(jù)寫入線程100與數(shù)據(jù)讀取線程200按照分區(qū)控制單元312確定的訪問順序分別訪問數(shù)據(jù)緩存模塊310中的多組緩存分區(qū)311,然后根據(jù)其所訪問緩存分區(qū)311的狀態(tài)來進(jìn)行數(shù)據(jù)的寫入或者讀取操作。
      [0048]在其中一實(shí)施例中,為了便于數(shù)據(jù)的寫入與讀取,分區(qū)控制單元312將讀寫操作分開進(jìn)行,其包括一寫鎖定判斷單元312-1以及一讀鎖定判斷單元312-2,且在所有的緩存分區(qū)311中,同時(shí)只設(shè)置一組寫鎖定狀態(tài)緩存分區(qū)311與一組讀鎖定狀態(tài)緩存分區(qū)311。
      [0049]寫鎖定判斷單元312-1與相應(yīng)的寫管道400以及數(shù)據(jù)緩存模塊310分別通信連接,用于控制數(shù)據(jù)緩存模塊310中緩存分區(qū)311的訪問順序、寫鎖定(將空閑狀態(tài)的緩存分區(qū)311置為寫鎖定狀態(tài))與去寫鎖定(將寫滿的寫鎖定狀態(tài)緩存分區(qū)311置為寫滿狀態(tài))。數(shù)據(jù)寫入線程100經(jīng)由寫管道400與寫鎖定判斷單元312-1通信連接,在將數(shù)據(jù)寫入至指定的數(shù)據(jù)緩存模式時(shí),其根據(jù)寫鎖定判斷單元312-1確定的訪問順序來訪問各緩存分區(qū)311,并根據(jù)當(dāng)前所訪問緩存分區(qū)311的工作狀態(tài)進(jìn)行數(shù)據(jù)的寫入操作。
      [0050]為了使得數(shù)據(jù)緩存模塊310中各緩存分區(qū)311的數(shù)據(jù)輸入相對均衡,寫鎖定判斷單元312-1采用定制遍歷策略來調(diào)節(jié)數(shù)據(jù)在緩存模塊中的分布,即順序遍歷,可任意選取其中一組緩存分區(qū)311作為起始點(diǎn)并按照編碼順序?qū)彺娣謪^(qū)311進(jìn)行控制。緩存構(gòu)建完成后,一般情況下,各緩存分區(qū)311均為空閑狀態(tài),寫鎖定判斷單元312-1將處于起始點(diǎn)的空閑狀態(tài)的緩存分區(qū)311置為寫鎖定狀態(tài),數(shù)據(jù)寫入線程100按照寫鎖定判斷單元312-1確定的訪問順序訪問起始點(diǎn)的緩存分區(qū)311,由于其為寫鎖定狀態(tài),則可開始進(jìn)行數(shù)據(jù)寫入,待該緩存分區(qū)311寫滿以后,寫鎖定判斷單元312-1將起始點(diǎn)的緩存分區(qū)311置為寫滿狀態(tài),并將起始點(diǎn)下一編碼處的空閑狀態(tài)緩存分區(qū)311置為寫鎖定狀態(tài),數(shù)據(jù)寫入線程100按照寫鎖定判斷單元312-1確定的繼續(xù)訪問下一編碼緩存分區(qū)311,然后進(jìn)行數(shù)據(jù)寫入操作。
      [0051]讀鎖定判斷單元312-2與相應(yīng)的讀管道500以及數(shù)據(jù)緩存模塊310也分別通信連接,用于控制數(shù)據(jù)緩存模塊310中緩存分區(qū)311的訪問順序、讀鎖定(將寫滿狀態(tài)的緩存分區(qū)311置為讀鎖定狀態(tài))與去讀鎖定(將讀取完畢的緩存分區(qū)311置為空閑狀態(tài)),數(shù)據(jù)讀取線程200經(jīng)由寫管道400以及讀鎖定判斷單元312-2與緩存分區(qū)311通信連接,以根據(jù)所訪問的緩存分區(qū)311的當(dāng)前狀態(tài)判斷是否讀取緩存數(shù)據(jù)。
      [0052]在數(shù)據(jù)寫入的同時(shí),數(shù)據(jù)讀取線程200也在進(jìn)行數(shù)據(jù)的讀取操作,數(shù)據(jù)讀取的訪問順序可采用與數(shù)據(jù)寫入訪問相同的順序的進(jìn)行數(shù)據(jù)的讀出,即數(shù)據(jù)讀取寫入線程訪問指定數(shù)據(jù)緩存模塊310時(shí),該數(shù)據(jù)緩存模塊310的讀鎖定判斷單元312-2控制數(shù)據(jù)讀取線程200按照寫鎖定判斷單元312-1所確定的訪問順序,來訪問各緩存分區(qū)311,這樣設(shè)置,當(dāng)緩存分區(qū)311寫滿并置為寫滿狀態(tài)后,數(shù)據(jù)讀取線程200能在第一時(shí)間內(nèi)訪問該緩存分區(qū)311,進(jìn)而該緩存分區(qū)311被置為讀鎖定狀態(tài)并進(jìn)行數(shù)據(jù)的讀取,能夠更進(jìn)一步的提高數(shù)據(jù)的讀出效率。此外,讀鎖定判斷單元312-2也可采取遍歷順序,或者由各緩存分區(qū)311寫滿主動(dòng)上報(bào),讀鎖定判斷單元312-2以及緩存分區(qū)311上報(bào)的順序確定數(shù)據(jù)讀取線程200的訪問順序。
      [0053]由于數(shù)據(jù)寫入的過程是人為無法控制的過程,可能出現(xiàn)在上述設(shè)置的基礎(chǔ)上,為了有效的進(jìn)行數(shù)據(jù)的寫入管理,減少數(shù)據(jù)丟包事件的發(fā)生,同時(shí)提高緩存的利用率,如圖3所示,每組緩存分區(qū)311內(nèi)部分層級(jí)管理設(shè)置,其包括一控制單元311-1以及多組緩存扇區(qū)311-2,緩存扇區(qū)311-2—一編碼設(shè)置,控制單元311-1與該組緩存分區(qū)311-2中的所有緩存扇區(qū)311-2通信連接,用于控制每組緩存分區(qū)311中,外部數(shù)據(jù)寫入緩存扇區(qū)311-2的順序。進(jìn)一步的,如圖4所示,每組緩存扇區(qū)311-2包括一控制組件a以及多個(gè)緩存頁面bb,緩存頁面b—一編碼且每組寫入數(shù)據(jù)的大小與緩存頁面b相同設(shè)置,控制組件a與緩存頁面b分別通向連接,以控制每組緩存扇區(qū)311-2中,數(shù)據(jù)寫入緩存頁碼的順序。
      [0054]當(dāng)該組緩存分區(qū)311設(shè)置為寫鎖定狀態(tài)且與數(shù)據(jù)寫入線程100通信成功進(jìn)行數(shù)據(jù)寫入操作時(shí),緩存分區(qū)311內(nèi)部對數(shù)據(jù)寫入的過程二次導(dǎo)向。在其中一實(shí)施例中,控制單元311-1311控制緩存分區(qū)311內(nèi)部也采用順序?qū)懭氲姆绞竭M(jìn)行,一組數(shù)據(jù)寫入時(shí),將本組數(shù)據(jù)按照順序?qū)懭敫骶彺嫔葏^(qū)311-2的緩存頁面b中,即首先將該組數(shù)據(jù)寫入第一組緩存扇區(qū)311-2的第一個(gè)緩存頁面b中,下一組數(shù)據(jù)寫入第一組緩存扇區(qū)311-2的第二個(gè)緩存頁面b中,依次進(jìn)行,直至該組緩存扇區(qū)311-2寫滿,則緩存扇區(qū)311-2內(nèi)部自己計(jì)數(shù),確定當(dāng)前緩存扇區(qū)311-2編碼,并自動(dòng)將未寫完的數(shù)據(jù)或者下一組數(shù)據(jù)寫入至第二組緩存扇區(qū)311-2(下一緩存扇區(qū)311-2)的第一個(gè)緩存頁面b中,直至該緩存分區(qū)311中所有的緩存頁面b均被寫滿。相應(yīng)的數(shù)據(jù)寫入時(shí)緩存分區(qū)311寫滿判斷的步驟如下:每組緩存分區(qū)311中,控制單元311-1比較緩存扇區(qū)311-2編碼與緩存扇區(qū)311-2的最大編碼數(shù)大小:若該緩存扇區(qū)311-2編碼小于緩存分區(qū)311的最大編碼數(shù),判斷下一組數(shù)據(jù)能夠在本緩存分區(qū)311中寫入成功,若緩存扇區(qū)311-2編碼等于緩存分區(qū)311的最大編碼數(shù),則判斷緩存分區(qū)311已滿,將下一組數(shù)據(jù)寫入下一個(gè)緩存分區(qū)311中。
      [0055]理論上各數(shù)據(jù)緩存300的容量越大越好,這樣可以保證數(shù)據(jù)丟失少,但數(shù)據(jù)緩存300容量越大對物理內(nèi)存的要求也就越高。為了盡量避免數(shù)據(jù)丟失的情形,本實(shí)施例中,讀管道500數(shù)量不少于寫管道400數(shù)量設(shè)置。
      [0056]作為一個(gè)優(yōu)選方案,數(shù)據(jù)緩存模塊310可為生產(chǎn)者與消費(fèi)者模型。此外,本發(fā)明所示的并發(fā)數(shù)據(jù)的緩存結(jié)構(gòu)中,數(shù)據(jù)緩存模塊310的數(shù)量可通過生產(chǎn)者和消費(fèi)者數(shù)量的最小公倍數(shù)來確定,即保證每個(gè)讀管道500和寫管道400負(fù)責(zé)的緩存分區(qū)311數(shù)量相同,從而保證所有的讀管道500或?qū)懝艿?00所映射的基本緩存數(shù)量相對均衡。
      [0057]本發(fā)明還公開了一種并發(fā)數(shù)據(jù)的緩存方法,如圖包括以下步驟:緩存分區(qū)311的工作狀態(tài)被設(shè)置為空閑狀態(tài)、寫鎖定狀態(tài)、寫滿狀態(tài)以及讀鎖定狀態(tài)中的任意一種:
      [0058]如圖5所示,(A)多個(gè)數(shù)據(jù)緩存300同時(shí)進(jìn)行數(shù)據(jù)寫入,一組數(shù)據(jù)寫入至相應(yīng)數(shù)據(jù)緩存300時(shí),(Al)確定數(shù)據(jù)緩存300中各數(shù)據(jù)緩存模塊310的寫入順序,按照既定順序?qū)⒃摻M數(shù)據(jù)寫入至指定數(shù)據(jù)緩存模塊310中:(A21)實(shí)時(shí)監(jiān)測指定數(shù)據(jù)緩存模塊310是否存在寫鎖定狀態(tài)緩存分區(qū)311:若有寫鎖定狀態(tài)緩存分區(qū)311直接轉(zhuǎn)入步驟(A22-2)進(jìn)行該組數(shù)據(jù)寫入;若沒有寫鎖定狀態(tài)緩存分區(qū)311,(A22)實(shí)時(shí)監(jiān)測是否存在空閑狀態(tài)的緩存分區(qū)311:若沒有處于空閑狀態(tài)的緩存分區(qū)311,則轉(zhuǎn)入步驟(Al);若有處于空閑狀態(tài)的緩存分區(qū)311,(A22-
      1)選定一組空閑狀態(tài)的緩存分區(qū)311置為寫鎖定狀態(tài);(A22-2)向?qū)戞i定狀態(tài)的緩存分區(qū)311寫入該組數(shù)據(jù);(A22-3)判斷數(shù)據(jù)是否寫入成功:若寫入成功,則該組數(shù)據(jù)寫入完成,結(jié)束該組數(shù)據(jù)寫入,若寫入失敗,則將當(dāng)前緩存分區(qū)311置為寫滿狀態(tài),并轉(zhuǎn)入步驟(A3),判斷指定數(shù)據(jù)緩存模塊310是否寫滿,若指定數(shù)據(jù)緩存模塊310寫滿,轉(zhuǎn)入步驟(Al),將下一組數(shù)據(jù)按照既定順序?qū)懭肓硪粩?shù)據(jù)緩存模塊310中;若指定數(shù)據(jù)緩存模塊310未寫滿,則轉(zhuǎn)入步驟(A21),將下一組數(shù)據(jù)繼續(xù)寫入至指定數(shù)據(jù)緩存模塊310中;
      [0059]其中,步驟(A22)中,當(dāng)沒有處于空閑狀態(tài)的緩存分區(qū)后,還包括判斷該緩存分區(qū)所在的指定數(shù)據(jù)緩存模塊是否為本組數(shù)據(jù)緩存中的最后一組數(shù)據(jù)緩存模塊,若不是,說明該組數(shù)據(jù)緩存中仍有空間進(jìn)行數(shù)據(jù)存儲(chǔ),則則轉(zhuǎn)入步驟A( I),繼續(xù)數(shù)據(jù)寫入,若該組數(shù)據(jù)緩存模塊按照寫入順序已經(jīng)是最后一組數(shù)據(jù)緩存模塊,為防止出現(xiàn)無法有效處理后續(xù)數(shù)據(jù)寫入,導(dǎo)致數(shù)據(jù)丟失的情況,則結(jié)束該組數(shù)據(jù)緩存的數(shù)據(jù)寫入進(jìn)程。
      [0060]上述步驟(A22-3)中,可通過判斷選定的寫鎖定狀態(tài)緩存分區(qū)311是否寫滿的步驟來確定數(shù)據(jù)是否寫入成功。在向?qū)戞i定狀態(tài)的緩存分區(qū)311寫入外部發(fā)送的數(shù)據(jù)組時(shí),若判斷寫鎖定狀態(tài)緩存分區(qū)311還未寫滿時(shí),則說明有足夠的空間寫入當(dāng)前數(shù)據(jù),則當(dāng)該組數(shù)據(jù)寫入時(shí)可判斷其寫入成功;當(dāng)判斷選定的寫鎖定狀態(tài)緩存分區(qū)311已寫滿時(shí),沒有足夠的空間繼續(xù)寫入新的數(shù)據(jù),則說明無法將該組數(shù)據(jù)寫入至上述寫鎖定狀態(tài)緩存分區(qū)311,判斷其寫入失敗,此時(shí),需將該組緩存分區(qū)311置為寫滿狀態(tài),并轉(zhuǎn)入步驟(A3),以將本組數(shù)據(jù)寫入至其他合適的緩存分區(qū)311中。
      [0061]進(jìn)一步的,上述寫鎖定狀態(tài)的緩存分區(qū)311寫滿判斷具體又包括以下步驟:向?qū)戞i定狀態(tài)的緩存分區(qū)311寫入外部發(fā)送的數(shù)據(jù)時(shí),首先比較該組數(shù)據(jù)與寫鎖定狀態(tài)的緩存分區(qū)311剩余空間大小,若外部數(shù)據(jù)大于寫鎖定狀態(tài)的緩存分區(qū)311剩余空間,則判斷寫鎖定狀態(tài)的緩存分區(qū)311寫滿;若外部數(shù)據(jù)不大于寫鎖定狀態(tài)的緩存分區(qū)311剩余空間,則判斷寫鎖定狀態(tài)的緩存分區(qū)311未寫滿,本組數(shù)據(jù)可繼續(xù)寫入;也可采取主動(dòng)上報(bào)的方式判斷寫鎖定狀態(tài)的緩存分區(qū)311是否寫滿,即當(dāng)向?qū)戞i定狀態(tài)的緩存分區(qū)311寫入外部發(fā)送的數(shù)據(jù)時(shí),若系統(tǒng)主動(dòng)報(bào)錯(cuò),則判斷寫鎖定狀態(tài)的緩存分區(qū)311寫滿。
      [0062]此外,全部數(shù)據(jù)寫入進(jìn)程結(jié)束時(shí),若存在一組未寫滿的緩存分區(qū)311,則未寫滿緩存分區(qū)311被置為寫滿狀態(tài)以進(jìn)行數(shù)據(jù)的讀取;考慮到外部數(shù)據(jù)的大小無法確定,某一時(shí)間段內(nèi)數(shù)據(jù)寫入進(jìn)程結(jié)束時(shí),所接收的外部數(shù)據(jù)可能無法寫滿一組數(shù)據(jù)緩存300,或者最后一段數(shù)據(jù)無法寫滿一組數(shù)據(jù)緩存300,此時(shí)為了讀取該部分?jǐn)?shù)據(jù),防止數(shù)據(jù)丟失,故將寫入該部分?jǐn)?shù)據(jù)的緩存分區(qū)311也置為寫滿狀態(tài)。
      [0063]如圖6所示,步驟(B),多個(gè)數(shù)據(jù)緩存300同時(shí)進(jìn)數(shù)據(jù)讀取,每組數(shù)據(jù)緩存300的數(shù)據(jù)讀取包括:(BI)確定各數(shù)據(jù)緩存300中數(shù)據(jù)緩存模塊310數(shù)據(jù)讀取的順序,并依照確定的順序選擇指定數(shù)據(jù)緩存模塊310進(jìn)行數(shù)據(jù)讀取,(B2)實(shí)時(shí)監(jiān)測指定數(shù)據(jù)緩存模塊310是否存在寫滿狀態(tài)下的緩存分區(qū)311:若沒有寫滿狀態(tài)的緩存分區(qū)311,轉(zhuǎn)入步驟(BI),繼續(xù)下一數(shù)據(jù)緩存模塊310的數(shù)據(jù)讀取;若有處于寫滿狀態(tài)下的緩存分區(qū)311,(B21)選定該組寫滿狀態(tài)的緩存分區(qū)311置為讀鎖定狀態(tài);(B22)讀取該讀鎖定狀態(tài)緩存分區(qū)311內(nèi)的緩存數(shù)據(jù),當(dāng)判斷讀鎖定狀態(tài)緩存分區(qū)311讀取完畢時(shí),將緩存設(shè)置為空閑狀態(tài),同時(shí)轉(zhuǎn)入步驟(B3),判斷指定數(shù)據(jù)緩據(jù)緩存模塊內(nèi)的數(shù)據(jù)是否讀完,若該指定數(shù)據(jù)緩存模塊310數(shù)據(jù)讀取完畢,則轉(zhuǎn)入步驟(BI),繼續(xù)數(shù)據(jù)緩存300中下一數(shù)據(jù)緩存模塊310的數(shù)據(jù)讀取;若該指定數(shù)據(jù)緩存模塊310未讀完,轉(zhuǎn)入步驟(B2),繼續(xù)指定數(shù)據(jù)緩存模塊310中下一組緩存分區(qū)311的數(shù)據(jù)讀取。
      [0064]所述步驟(B2)之前,還包括實(shí)時(shí)監(jiān)測是否存在讀鎖定狀態(tài)緩存分區(qū)311的步驟,若有,直接轉(zhuǎn)入步驟(B22)讀取選定讀鎖定狀態(tài)緩存分區(qū)311內(nèi)的緩存數(shù)據(jù);若無,則轉(zhuǎn)入步驟(B2),判斷是否存在寫滿狀態(tài)下的緩存分區(qū)311以繼續(xù)數(shù)據(jù)的讀取。
      [0065]為了便于數(shù)據(jù)寫入與讀取的管理,每個(gè)數(shù)據(jù)緩存模塊310的所有的緩存分區(qū)311中,同時(shí)只設(shè)置一組寫鎖定狀態(tài)緩存分區(qū)311與一組讀鎖定狀態(tài)緩存分區(qū)311,即緩存中同時(shí)只進(jìn)行一組緩存分區(qū)311的數(shù)據(jù)寫入和/或一組緩存分區(qū)311的數(shù)據(jù)讀取,這樣設(shè)置,一方面可使得數(shù)據(jù)的寫入與讀取更為有序,只有一組緩存分區(qū)311寫完或讀完之后,才能對下一分區(qū)進(jìn)行讀寫操作,另一方面,也可充分利用緩存分區(qū)311的空間,保證每組緩存分區(qū)311都得到有效利用,而不會(huì)出現(xiàn)多組緩存分區(qū)311只有一部分空間被利用的情形。
      [0066]在上述基礎(chǔ)上,本發(fā)明所示的緩存方法,步驟(A21)中,每個(gè)數(shù)據(jù)緩存模塊310內(nèi)部采取遍歷的方式訪問各緩存分區(qū)311以判斷是否存在空閑狀態(tài)的緩存分區(qū)311;以更好的實(shí)現(xiàn)數(shù)據(jù)寫入與讀取的合理管理。
      [0067]當(dāng)一組數(shù)據(jù)按照寫管道400確定的順序?qū)懭胫林付ǖ臄?shù)據(jù)緩存模塊310中時(shí),指定緩存模塊內(nèi)部,該組數(shù)據(jù)根據(jù)寫鎖定判斷單元312-1的指令依次順序訪問各緩存分區(qū)311以監(jiān)測是否存在寫鎖定或空閑狀態(tài)的緩存分區(qū)311,即數(shù)據(jù)寫入線程100在尋找寫鎖定或空閑狀態(tài)的緩存分區(qū)311時(shí),寫鎖定判斷單元312-1任意設(shè)置一緩存分區(qū)311作為起點(diǎn),然后控制相應(yīng)的數(shù)據(jù)寫入線程100按照順序循環(huán)依次訪問各緩存分區(qū)311,具體而言,各緩存分區(qū)311構(gòu)建和初始化完成后一般即為空閑狀態(tài),由于同時(shí)只存在一組寫鎖定狀態(tài)的緩存分區(qū)311,在進(jìn)行數(shù)據(jù)寫入時(shí),數(shù)據(jù)寫入線程100按照從起始點(diǎn)開始的順序依次訪問各緩存分區(qū)311,首先起始點(diǎn)的空閑狀態(tài)緩存分別被置為寫鎖定狀態(tài)以進(jìn)行數(shù)據(jù)寫入,當(dāng)起始點(diǎn)的緩存分區(qū)311寫滿后,起始點(diǎn)的下一緩存分區(qū)311被置為寫鎖定狀態(tài),寫入線程直接轉(zhuǎn)入下一緩存分區(qū)311繼續(xù)數(shù)據(jù)的寫入,直至該緩存分區(qū)311寫滿,依次循環(huán)實(shí)現(xiàn)數(shù)據(jù)的寫入。
      [0068]由于數(shù)據(jù)寫入的時(shí)間以及寫入量是人為無法控制的,為了更好的應(yīng)對各種突發(fā)的數(shù)據(jù)寫入情況,更進(jìn)一步的,緩存分區(qū)311中包括多個(gè)大小相同的緩存扇區(qū)311-2,緩存扇區(qū)311-2一一編碼且包括多個(gè)大小相同的緩存頁面b,將每組寫入數(shù)據(jù)的大小與緩存頁面b大小相同設(shè)置。當(dāng)確定一組寫鎖定狀態(tài)下的緩存分區(qū)311進(jìn)行數(shù)據(jù)寫入時(shí),將本組數(shù)據(jù)按照順序?qū)懭敫骶彺嫔葏^(qū)311-2的緩存頁面b中,即首先本組數(shù)據(jù)寫入第一組緩存扇區(qū)311-2的第一個(gè)緩存頁面b中,下一組數(shù)據(jù)寫入第一組緩存扇區(qū)311-2的第二個(gè)緩存頁面b中,依次進(jìn)行,直至該組緩存扇區(qū)311-2寫滿,則緩存扇區(qū)311-2內(nèi)部自己計(jì)數(shù),確定當(dāng)前緩存扇區(qū)311-2編碼,并自動(dòng)將未寫完的數(shù)據(jù)或者下一組數(shù)據(jù)寫入至第二組緩存分區(qū)311(下一緩存扇區(qū)311-2)的第一個(gè)緩存頁面b中,直至該緩存分區(qū)311中所有的緩存頁面b均被寫滿。步驟(A22-3)中,相應(yīng)的數(shù)據(jù)寫入時(shí)緩存分區(qū)311寫滿判斷的步驟如下:比較緩存扇區(qū)311-2編碼與緩存扇區(qū)311-2的最大編碼數(shù)大小:若該緩存扇區(qū)311-2編碼小于緩存分區(qū)311的最大編碼數(shù),判斷下一組數(shù)據(jù)能夠在本緩存分區(qū)311中寫入成功,若緩存扇區(qū)311-2編碼等于緩存分區(qū)311的最大編碼數(shù),則判斷緩存分區(qū)311已滿,轉(zhuǎn)入步驟(A3),進(jìn)行下一組數(shù)據(jù)的寫入。
      [0069]在進(jìn)行數(shù)據(jù)讀取時(shí),若數(shù)據(jù)寫入線程100已經(jīng)訪問過該數(shù)據(jù)緩存模塊310,則讀鎖定判斷單元312-2可控制數(shù)據(jù)寫入線程100按照與數(shù)據(jù)寫入訪問相同的順序的進(jìn)行數(shù)據(jù)的讀出,從而當(dāng)緩存分區(qū)311寫滿并置為寫滿狀態(tài)后,數(shù)據(jù)讀出線程能在第一時(shí)間內(nèi)訪問該緩存分區(qū)311,進(jìn)而該緩存分區(qū)311被置為讀鎖定狀態(tài)并進(jìn)行數(shù)據(jù)的讀取,這樣設(shè)置,可盡量節(jié)約時(shí)間,提高數(shù)據(jù)的讀出效率。同時(shí),也可采取遍歷、緩存分區(qū)311寫滿主動(dòng)上報(bào)等方式實(shí)時(shí)監(jiān)測是否存在寫滿狀態(tài)的緩存分區(qū)311,從進(jìn)行數(shù)據(jù)的讀出。
      [0070]此外,考慮到若出現(xiàn)外部數(shù)據(jù)量較大,緩存空間存儲(chǔ)能力有限的,可能導(dǎo)致數(shù)據(jù)丟失的情形,故本發(fā)明所示的緩存方法中,數(shù)據(jù)讀取速度大于數(shù)據(jù)寫入速度設(shè)置。
      [0071]為實(shí)現(xiàn)支持多個(gè)網(wǎng)絡(luò)端口接收或多線程并行處理的業(yè)務(wù)需求,同時(shí)減少或避免數(shù)據(jù)寫入線程100之間或數(shù)據(jù)讀取線程200之間的鎖沖突,多個(gè)數(shù)據(jù)寫管道400與多個(gè)數(shù)據(jù)讀管道500分別覆蓋全部的數(shù)據(jù)緩存模塊310,且多個(gè)數(shù)據(jù)寫管道400所映射的數(shù)據(jù)緩存模塊310不相交設(shè)置,多個(gè)數(shù)據(jù)讀管道500所映射的數(shù)據(jù)緩存模塊310不相交設(shè)置;數(shù)據(jù)寫入線程100通過與之綁定的寫管道400來訪問數(shù)據(jù)緩存300。不同的寫管道400所映射的數(shù)據(jù)緩存模塊310不存在相交。寫管道400可以定制遍歷策略來調(diào)節(jié)數(shù)據(jù)在內(nèi)部緩存單元的分布。例如,當(dāng)針對單條數(shù)據(jù)記錄采取順序遍歷寫入策略時(shí),可使得各數(shù)據(jù)緩存模塊310的數(shù)據(jù)輸入相對均衡。數(shù)據(jù)讀取線程200通過與之綁定的讀管道500來訪問數(shù)據(jù)緩存300。不同的讀管道500所映射的數(shù)據(jù)緩存模塊310不存在相交。讀管道500可以結(jié)合寫管道400有關(guān)設(shè)定來定制遍歷策略以調(diào)節(jié)內(nèi)部數(shù)據(jù)緩存模塊310的數(shù)據(jù)飽和程度。在其中一實(shí)施例中,數(shù)據(jù)緩存模塊310的數(shù)量為數(shù)據(jù)寫入線程100與數(shù)據(jù)讀取線程200數(shù)量的最小公倍數(shù)的整數(shù)倍;
      [0072]優(yōu)選的,數(shù)據(jù)緩存模塊310為生產(chǎn)者與消費(fèi)者模型。
      [0073]上述的對實(shí)施例的描述是為便于該技術(shù)領(lǐng)域的普通技術(shù)人員能理解和使用本發(fā)明。熟悉本領(lǐng)域技術(shù)的人員顯然可以容易地對這些實(shí)施例做出各種修改,并把在此說明的一般原理應(yīng)用到其他實(shí)施例中而不必經(jīng)過創(chuàng)造性的勞動(dòng)。因此,本發(fā)明不限于上述實(shí)施例,本領(lǐng)域技術(shù)人員根據(jù)本發(fā)明的揭示,不脫離本發(fā)明范疇所做出的改進(jìn)和修改都應(yīng)該在本發(fā)明的保護(hù)范圍之內(nèi)。
      【主權(quán)項(xiàng)】
      1.一種并發(fā)數(shù)據(jù)的緩存結(jié)構(gòu),其特征在于:其同時(shí)進(jìn)行數(shù)據(jù)的寫入與讀取,包括多組數(shù)據(jù)寫入線程、多組數(shù)據(jù)讀取線程、多組數(shù)據(jù)緩存、多個(gè)寫管道以及多個(gè)讀管道; 所述每組數(shù)據(jù)緩存包括多組數(shù)據(jù)緩存模塊,每組數(shù)據(jù)緩存模塊分別包括若干組緩存分區(qū)以及與一分區(qū)控制單元,所述分區(qū)控制單元與所述每一緩存分區(qū)分別通信連接以控制所述多個(gè)緩存分區(qū)的工作狀態(tài)以及被訪問順序,所述分區(qū)控制單元用于將所述相應(yīng)緩存分區(qū)的工作狀態(tài)設(shè)置為空閑狀態(tài)、寫鎖定狀態(tài)、寫滿狀態(tài)以及讀鎖定狀態(tài)中的任意一種,僅當(dāng)所述緩存分區(qū)為空閑狀態(tài)時(shí)支持寫鎖定,且所述緩存分區(qū)處于寫鎖定狀態(tài)時(shí)支持?jǐn)?shù)據(jù)寫入,僅當(dāng)所述緩存分區(qū)為寫滿狀態(tài)時(shí)支持讀鎖定,且所述緩存分區(qū)處于讀鎖定狀態(tài)時(shí)支持?jǐn)?shù)據(jù)讀出; 每組數(shù)據(jù)寫入線程經(jīng)由一組寫管道與數(shù)據(jù)緩存通信連接,多組數(shù)據(jù)寫入線程覆蓋全部數(shù)據(jù)緩存模塊設(shè)置,所述寫管道用于確定數(shù)據(jù)寫入線程在相應(yīng)數(shù)據(jù)緩存中訪問數(shù)據(jù)緩存模塊的順序,不同的寫管道所映射的數(shù)據(jù)緩存模塊不相交; 每組數(shù)據(jù)讀取線程經(jīng)由一組讀管道與數(shù)據(jù)緩存通信連接,多組數(shù)據(jù)讀取線程覆蓋全部的數(shù)據(jù)緩存模塊設(shè)置,所述讀管道用于確定數(shù)據(jù)讀取線程在相應(yīng)數(shù)據(jù)緩存中訪問數(shù)據(jù)緩存模塊的順序,不同讀管道所映射的數(shù)據(jù)緩存模塊不相交。2.根據(jù)權(quán)利要求1所述的并發(fā)數(shù)據(jù)的緩存結(jié)構(gòu),其特征在于:所述讀管道數(shù)量不少于所述寫管道數(shù)量設(shè)置。3.根據(jù)權(quán)利要求1所述的并發(fā)數(shù)據(jù)的緩存結(jié)構(gòu),其特征在于:所述數(shù)據(jù)緩存的數(shù)量為數(shù)據(jù)寫入線程與數(shù)據(jù)讀取線程數(shù)量的最小公倍數(shù)的整數(shù)倍。4.根據(jù)權(quán)利要求1所述的并發(fā)數(shù)據(jù)的緩存結(jié)構(gòu),其特征在于:所述數(shù)據(jù)緩存模塊為生產(chǎn)者與消費(fèi)者t吳型。5.根據(jù)權(quán)利要求1所述的并發(fā)數(shù)據(jù)的緩存結(jié)構(gòu),其特征在于:所述每組緩存分區(qū)包括一控制單元以及多組緩存扇區(qū),所述緩存扇區(qū)一一編碼設(shè)置,所述控制單元與所述每組緩存扇區(qū)通信連接,以控制每組緩存分區(qū)中,數(shù)據(jù)寫入緩存扇區(qū)的順序; 進(jìn)一步優(yōu)選的,所述每組緩存扇區(qū)包括一控制組件以及多個(gè)緩存頁面,所述緩存頁面一一編碼且每組寫入數(shù)據(jù)的大小與緩存頁面相同設(shè)置,所述控制組件與所述緩存頁面分別通向連接,以控制每組緩存扇區(qū)中,數(shù)據(jù)寫入緩存頁碼的順序。6.根據(jù)權(quán)利要求1所述的緩存結(jié)構(gòu),其特征在于:所述分區(qū)控制單元包括一寫鎖定判斷單元以及一讀鎖定判斷單元; 所述寫鎖定判斷單元與相應(yīng)的寫管道以及緩存分區(qū)通信連接,以控制數(shù)據(jù)緩存模塊中緩存分區(qū)的訪問順序、寫鎖定與去寫鎖定,所述數(shù)據(jù)寫入線程經(jīng)由所述寫管道以及寫鎖定判斷單元與指定數(shù)據(jù)緩存模塊中的緩存分區(qū)通信連續(xù)劇,以根據(jù)所述寫鎖定判斷單元確定的訪問順序訪問的緩存分區(qū),并根據(jù)當(dāng)前訪問緩存分區(qū)的工作狀態(tài)進(jìn)行數(shù)據(jù)的寫入操作; 所述讀鎖定判斷單元與相應(yīng)的讀管道以及緩存分區(qū)通信連接,以控制數(shù)據(jù)緩存模塊中緩存分區(qū)的訪問順序、讀鎖定與去讀鎖定,所述數(shù)據(jù)讀取線程經(jīng)由所述讀管道以及讀鎖定判斷單元與與指定數(shù)據(jù)緩存模塊中的緩存分區(qū)通信連接,以根據(jù)所訪問的緩存分區(qū)的當(dāng)前狀態(tài)判斷是否讀取緩存數(shù)據(jù)。7.—種并發(fā)數(shù)據(jù)的緩存方法,其特征在于:包括以下步驟:緩存分區(qū)的工作狀態(tài)設(shè)置為空閑狀態(tài)、寫鎖定狀態(tài)、寫滿狀態(tài)以及讀鎖定狀態(tài)中的任意一種, (A)所述多個(gè)數(shù)據(jù)緩存同時(shí)進(jìn)行數(shù)據(jù)寫入,一組數(shù)據(jù)寫入至相應(yīng)數(shù)據(jù)緩存時(shí),(Al)確定數(shù)據(jù)緩存中各數(shù)據(jù)緩存模塊的寫入順序,按照既定順序?qū)⒃摻M數(shù)據(jù)寫入至指定數(shù)據(jù)緩存模塊中:(A21)實(shí)時(shí)監(jiān)測指定數(shù)據(jù)緩存模塊是否存在寫鎖定狀態(tài)緩存分區(qū):若有寫鎖定狀態(tài)緩存分區(qū)直接轉(zhuǎn)入步驟(A22-2)進(jìn)行該組數(shù)據(jù)寫入;若沒有寫鎖定狀態(tài)緩存分區(qū),(A22)實(shí)時(shí)監(jiān)測是否存在空閑狀態(tài)的緩存分區(qū):若沒有處于空閑狀態(tài)的緩存分區(qū),則轉(zhuǎn)入步驟(Al);若有處于空閑狀態(tài)的緩存分區(qū),(A22-1)選定一組空閑狀態(tài)的緩存分區(qū)置為寫鎖定狀態(tài);(A22-2)向所述寫鎖定狀態(tài)的緩存分區(qū)寫入該組數(shù)據(jù);(A22-3)判斷所述數(shù)據(jù)是否寫入成功:若寫入成功,則該組數(shù)據(jù)寫入完成,結(jié)束該組數(shù)據(jù)寫入,若寫入失敗,則將當(dāng)前緩存分區(qū)置為寫滿狀態(tài),并轉(zhuǎn)入步驟(A3),判斷指定數(shù)據(jù)緩存模塊是否寫滿,若指定數(shù)據(jù)緩存模塊寫滿,轉(zhuǎn)入步驟(Al),將下一組數(shù)據(jù)按照既定順序?qū)懭肓硪粩?shù)據(jù)緩存模塊中;若指定數(shù)據(jù)緩存模塊未寫滿,則轉(zhuǎn)入步驟(A21),將下一組數(shù)據(jù)繼續(xù)寫入至指定數(shù)據(jù)緩存模塊中; 步驟(B),所述多個(gè)數(shù)據(jù)緩存同時(shí)進(jìn)數(shù)據(jù)讀取,每組數(shù)據(jù)緩存的數(shù)據(jù)讀取包括:(BI)確定各數(shù)據(jù)緩存中數(shù)據(jù)緩存模塊數(shù)據(jù)讀取的順序,并依照確定的順序選擇指定數(shù)據(jù)緩存模塊進(jìn)行數(shù)據(jù)讀取,(B2)實(shí)時(shí)監(jiān)測指定數(shù)據(jù)緩存模塊是否存在寫滿狀態(tài)下的緩存分區(qū):若沒有寫滿狀態(tài)的緩存分區(qū),轉(zhuǎn)入步驟(BI ),繼續(xù)下一數(shù)據(jù)緩存模塊的數(shù)據(jù)讀取;若有處于寫滿狀態(tài)下的緩存分區(qū),(B21)選定該組寫滿狀態(tài)的緩存分區(qū)置為讀鎖定狀態(tài);(B22)讀取該讀鎖定狀態(tài)緩存分區(qū)內(nèi)的緩存數(shù)據(jù),當(dāng)判斷所述讀鎖定狀態(tài)緩存分區(qū)讀取完畢時(shí),將所述緩存設(shè)置為空閑狀態(tài),同時(shí)轉(zhuǎn)入步驟(B3),判斷指定數(shù)據(jù)緩據(jù)緩存模塊內(nèi)的數(shù)據(jù)是否讀完,若該指定數(shù)據(jù)緩存模塊數(shù)據(jù)讀取完畢,則轉(zhuǎn)入步驟(BI),繼續(xù)所述數(shù)據(jù)緩存中下一數(shù)據(jù)緩存模塊的數(shù)據(jù)讀取;若該指定數(shù)據(jù)緩存模塊未讀完,轉(zhuǎn)入步驟(B2),繼續(xù)指定數(shù)據(jù)緩存模塊中下一組緩存分區(qū)的數(shù)據(jù)讀取。8.根據(jù)權(quán)利要求7所述的并發(fā)數(shù)據(jù)的緩存方法,其特征在于:所述每組數(shù)據(jù)緩存模塊中,同時(shí)只存在一組寫鎖定緩存分區(qū)和/或一組讀鎖定緩存分區(qū),僅當(dāng)所述緩存分區(qū)為空閑狀態(tài)時(shí)支持寫鎖定,僅當(dāng)所述緩存分區(qū)為寫滿狀態(tài)時(shí)支持讀鎖定; 優(yōu)選的,全部數(shù)據(jù)寫入進(jìn)程結(jié)束時(shí),若存在一組未寫滿的緩存分區(qū),則所述未寫滿緩存分區(qū)被置為寫滿狀態(tài)以進(jìn)行數(shù)據(jù)的讀??; 優(yōu)選的,所述步驟(A21)中,采取遍歷的方式訪問各緩存分區(qū)以判斷是否存在空閑狀態(tài)的緩存分區(qū); 優(yōu)選的,所述步驟(A22)中,當(dāng)沒有處于空閑狀態(tài)的緩存分區(qū)后,還包括判斷該緩存分區(qū)所在的指定數(shù)據(jù)緩存模塊是否為本組數(shù)據(jù)緩存中的最后一組數(shù)據(jù)緩存模塊,若不是,則轉(zhuǎn)入步驟A( I),繼續(xù)數(shù)據(jù)寫入,若是,則結(jié)束數(shù)據(jù)寫入; 優(yōu)選的,所述步驟(B2)之前,還包括實(shí)時(shí)監(jiān)測是否存在讀鎖定狀態(tài)緩存分區(qū)的步驟,若有,直接轉(zhuǎn)入步驟(B22)讀取所述讀鎖定狀態(tài)緩存分區(qū)內(nèi)的緩存數(shù)據(jù);若無,則轉(zhuǎn)入步驟(B2); 優(yōu)選的,所述步驟(B2)中,采取遍歷、與數(shù)據(jù)寫入訪問相同的順序、緩存分區(qū)寫滿主動(dòng)上報(bào)中的任一方式判斷是否存在寫滿狀態(tài)下的未鎖定的緩存分區(qū)。9.根據(jù)權(quán)利要求7所述的并發(fā)數(shù)據(jù)的緩存方法,其特征在于:所述步驟(A22-3)中,所述數(shù)據(jù)寫入成功判斷包括以下步驟:向所述寫鎖定狀態(tài)的緩存分區(qū)寫入數(shù)據(jù)組:當(dāng)判斷所述寫鎖定狀態(tài)緩存分區(qū)未寫滿時(shí),寫入成功,繼續(xù)該組緩存分區(qū)的數(shù)據(jù)寫入;當(dāng)判斷所述寫鎖定狀態(tài)緩存分區(qū)寫滿時(shí),將該組緩存分區(qū)置為寫滿狀態(tài),并轉(zhuǎn)入步驟(A3),繼續(xù)下一組外部數(shù)據(jù)的寫入; 進(jìn)一步的,所述寫鎖定狀態(tài)的緩存分區(qū)寫滿判斷包括以下步驟:向所述寫鎖定狀態(tài)的緩存分區(qū)寫入數(shù)據(jù)時(shí),比較該組數(shù)據(jù)與所述寫鎖定狀態(tài)的緩存分區(qū)剩余空間大小,若該組數(shù)據(jù)大于所述寫鎖定狀態(tài)的緩存分區(qū)剩余空間,判斷所述寫鎖定狀態(tài)的緩存分區(qū)寫滿;或,向所述寫鎖定狀態(tài)的緩存分區(qū)寫入該組數(shù)據(jù)時(shí),系統(tǒng)報(bào)錯(cuò),則判斷所述寫鎖定狀態(tài)的緩存分區(qū)寫滿。10.根據(jù)權(quán)利要求7至9任一項(xiàng)所述的并發(fā)數(shù)據(jù)的緩存方法,其特征在于:所述緩存分區(qū)內(nèi)部采用分級(jí)管理的方式進(jìn)行數(shù)據(jù)寫入操作,所述緩存分區(qū)中包括多個(gè)大小相同的緩存扇區(qū),且所述緩存扇區(qū)一一編碼,且包括多個(gè)大小相同的緩存頁面,所述每組寫入數(shù)據(jù)的大小與所述緩存頁面大小相同設(shè)置,所述步驟(A22-3)中,判斷所述數(shù)據(jù)是否寫入成功包括以下步驟:每組數(shù)據(jù)寫入緩存分區(qū)的每一緩存扇區(qū)后,緩存扇區(qū)內(nèi)部計(jì)數(shù),確定當(dāng)前緩存扇區(qū)編碼,比較所述緩存扇區(qū)編碼與所述緩存扇區(qū)的最大編碼數(shù)大小:若該緩存扇區(qū)編碼小于所述緩存分區(qū)的最大編碼數(shù),判斷下一組數(shù)據(jù)能夠在本緩存分區(qū)中寫入成功,若緩存扇區(qū)編碼等于所述緩存分區(qū)的最大編碼數(shù),則判斷所述緩存分區(qū)已寫滿,轉(zhuǎn)入步驟(A3); 優(yōu)選的,所述數(shù)據(jù)按照編碼順序?qū)懭胫了鼍彺嫔葏^(qū)中,且所述緩存頁面一一編碼,所述數(shù)據(jù)寫入至緩存扇區(qū)時(shí),按照緩存頁面的編碼順序依次寫入。11.根據(jù)權(quán)利要求7所述的并發(fā)數(shù)據(jù)的緩存方法,其特征在于:所述多個(gè)數(shù)據(jù)寫管道與多個(gè)數(shù)據(jù)讀管道分別覆蓋全部的數(shù)據(jù)緩存模塊,且所述多個(gè)數(shù)據(jù)寫管道所映射的數(shù)據(jù)緩存模塊不相交設(shè)置,多個(gè)數(shù)據(jù)讀管道所映射的數(shù)據(jù)緩存模塊不相交設(shè)置; 優(yōu)選的,所述數(shù)據(jù)緩存模塊的數(shù)量為數(shù)據(jù)寫入線程與數(shù)據(jù)讀取線程數(shù)量的最小公倍數(shù)的整數(shù)倍; 優(yōu)選的,所述數(shù)據(jù)讀取速度大于數(shù)據(jù)寫入速度; 優(yōu)選的,所述數(shù)據(jù)緩存模塊為生產(chǎn)者與消費(fèi)者模型。
      【文檔編號(hào)】G06F12/06GK105868123SQ201610210213
      【公開日】2016年8月17日
      【申請日】2016年4月7日
      【發(fā)明人】徐馳
      【申請人】武漢數(shù)字派特科技有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
      1