• 
    

    
    

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

      ?

      空管綜合數(shù)據(jù)交互平臺的研究與設(shè)計

      2023-05-15 07:27:46毅,陳
      現(xiàn)代計算機 2023年5期
      關(guān)鍵詞:空管緩沖區(qū)數(shù)據(jù)源

      石 毅,陳 愷

      (中國民用航空中南地區(qū)空中交通管理局廣西分局,南寧 530100)

      0 引言

      廣西空管分局現(xiàn)階段管理運行的本地相關(guān)空管數(shù)據(jù)類型包括監(jiān)視數(shù)據(jù),報文數(shù)據(jù)等。而監(jiān)視數(shù)據(jù)包括萊斯自動化系統(tǒng)綜合航跡、華泰自動化系統(tǒng)綜合航跡、雷達數(shù)據(jù)、ADSB 數(shù)據(jù)等。以萊斯自動化系統(tǒng)綜合航跡數(shù)據(jù)的引接應(yīng)用為例,一共包括氣象融合系統(tǒng)、自動化主備同步監(jiān)控系統(tǒng)、空中交通流量預(yù)測系統(tǒng)等七套系統(tǒng)引接該路數(shù)據(jù)。若均直接通過萊斯自動化系統(tǒng)DOP(綜合數(shù)據(jù)輸出)服務(wù)器引接,將極大增加服務(wù)器的工作負荷。因此,為加強分局本地數(shù)據(jù)管理,規(guī)范數(shù)據(jù)信號輸出,合理規(guī)劃數(shù)據(jù)信號資源,并有效監(jiān)控各路本地數(shù)據(jù)鏈路狀態(tài),擬研制空管綜合數(shù)據(jù)交互平臺。

      1 系統(tǒng)的總體結(jié)構(gòu)及信號流程

      空管綜合數(shù)據(jù)交互平臺采用基于Java 語言的C/S 架構(gòu)進行系統(tǒng)的構(gòu)建[1],系統(tǒng)主要包含一臺數(shù)據(jù)處理服務(wù)器及防火墻,其結(jié)構(gòu)如圖1 所示。

      圖1 空管綜合數(shù)據(jù)交互平臺結(jié)構(gòu)框圖

      系統(tǒng)主要功能模塊包括數(shù)據(jù)接收處理模塊、數(shù)據(jù)輸出模塊及終端顯示模塊。系統(tǒng)通過接收處理各路監(jiān)視數(shù)據(jù)、報文數(shù)據(jù)及其他本地空管數(shù)據(jù),并根據(jù)終端用戶應(yīng)用需求,將相應(yīng)數(shù)據(jù)定制輸出到對應(yīng)系統(tǒng),實現(xiàn)數(shù)據(jù)資源的規(guī)劃應(yīng)用。此外,系統(tǒng)提供收發(fā)鏈路的開關(guān)操作,斷線告警,延遲監(jiān)測及歷史數(shù)據(jù)的查詢和調(diào)用輸出等功能。系統(tǒng)的信號處理流程如圖2所示。

      圖2 系統(tǒng)信號處理流程

      2 系統(tǒng)關(guān)鍵模塊及算法研究

      2.1 NIO技術(shù)實現(xiàn)數(shù)據(jù)接收處理

      數(shù)據(jù)接收處理效率,是衡量數(shù)據(jù)接收處理模塊的重要技術(shù)指標之一。由于在輸入鏈路上,各監(jiān)視數(shù)據(jù)、報文數(shù)據(jù)及其他相關(guān)空管數(shù)據(jù)存在輸入上的流量差異(各數(shù)據(jù)類型流量統(tǒng)計為:監(jiān)視數(shù)據(jù)>報文數(shù)據(jù)>其他空管數(shù)據(jù)),以氣象報文、自動化系統(tǒng)報文數(shù)據(jù)接收為例,氣象報文數(shù)據(jù)鏈路僅在每個整點發(fā)送一份報文數(shù)據(jù),其余均為空閑時段,而自動化系統(tǒng)當處于主用狀態(tài)時,系統(tǒng)報文數(shù)據(jù)鏈路將對外發(fā)送數(shù)據(jù)。若對上述鏈路的數(shù)據(jù)接收處理均采用傳統(tǒng)的多線程技術(shù),將占用系統(tǒng)大量進程資源,極大增加系統(tǒng)服務(wù)器的工作壓力。因此,提出采用基于Java的NIO技術(shù),該方法將有效提高數(shù)據(jù)接收效率,節(jié)約系統(tǒng)資源。

      Java NIO 即同步非阻塞I/O 模型,它包含Channel、Buffer、Selector三大核心組件[2]。Channel 為通道,它表示一個打開的連接,這個連接可以連接到I/O 設(shè)備或者一個支持I/O 訪問的應(yīng)用程序;Buffer 為緩沖區(qū),在NIO 庫中,所有數(shù)據(jù)都是通過緩沖區(qū)進行處理;Selector 為選擇器,其提供了選擇已經(jīng)就緒的任務(wù)的能力。在Java NIO中,通過使用緩沖區(qū)和通道來進行數(shù)據(jù)傳輸。而選擇器將會不斷地輪詢注冊在上面的所有通道,如果某個通道為讀寫等事件做好準備,那么就處于就緒狀態(tài),即可進行后續(xù)的IO操作。這樣,一個單獨的線程可以管理多個通道,從而管理多個網(wǎng)絡(luò)連接,提高效率。Java NIO連接模型如圖3所示。

      圖3 Java NIO連接模型

      目前,空管綜合數(shù)據(jù)交互平臺共引接萊斯自動化系統(tǒng)綜合航跡、萊斯自動化系統(tǒng)計劃、S模式雷達、ADS-B 數(shù)據(jù)、氣象報文等共九路數(shù)據(jù)源。Java NIO技術(shù)實現(xiàn)各路數(shù)據(jù)接收處理的主要步驟如下:

      (1)根據(jù)低流量數(shù)據(jù)源的數(shù)據(jù)類型,設(shè)置不同類型的緩沖區(qū)。如QNH 數(shù)據(jù)設(shè)置為ByteBuffer類型;

      (2)為每個緩沖區(qū)建立通道,如QNH 數(shù)據(jù)緩沖區(qū)的通道類型為ServerSocketChannel,該通道類型可以監(jiān)聽新進來的TCP 連接,對每一個新進來的連接都會創(chuàng)建一個SocketChannel,通過TCP 讀寫網(wǎng)絡(luò)中的數(shù)據(jù);

      (3)創(chuàng)建選擇器,并向選擇器注冊通道;

      (4)設(shè)置選擇器對通道的監(jiān)聽事件類型,如對于QNH數(shù)據(jù)緩沖區(qū)的通道監(jiān)聽事件類型為SelectionKey.OP_WRITE,即有數(shù)據(jù)寫入緩沖區(qū)時,再讀取緩沖區(qū)寫入通道的數(shù)據(jù);

      (5)調(diào)用Buffer clear()方法,清空緩沖區(qū),等待下次數(shù)據(jù)的寫入。

      通過Java NIO 技術(shù),統(tǒng)計系統(tǒng)滿負荷情況下,共減少非必要線程開支數(shù)量四個,釋放了約500 M 的內(nèi)存資源。數(shù)據(jù)接收處理模塊部分代碼如圖4所示。

      圖4 數(shù)據(jù)接收處理模塊部分代碼

      2.2 改進型Hash算法實現(xiàn)數(shù)據(jù)存儲及調(diào)用

      空管綜合數(shù)據(jù)交互平臺提供歷史數(shù)據(jù)查詢及調(diào)用功能。其歷史數(shù)據(jù)儲存主要為監(jiān)視數(shù)據(jù)的存儲,儲存方式通過數(shù)據(jù)文件(.DAT)方式,按天為單位以時間戳YYYYMMDD 命名進行存儲,文件存放到服務(wù)器指定目錄下。若各路數(shù)據(jù)源存儲過程或進行歷史數(shù)據(jù)調(diào)用輸出操作時,均采用實時文本讀寫的方式,將極大影響數(shù)據(jù)存儲模塊的讀寫速度,增加服務(wù)器的工作壓力。因此,提出一種改進型Hash 算法,實現(xiàn)數(shù)據(jù)存儲模塊的數(shù)據(jù)高性能存儲及調(diào)用功能,增強系統(tǒng)可塑性及可靠性。

      Hash 定義為基于特定鍵將一個值轉(zhuǎn)換為另一個值的過程,是一種將輸入值轉(zhuǎn)換為通常更短的輸出值的函數(shù),并且被設(shè)計為對于每個輸入值都是唯一的。Hash 函數(shù)的主要優(yōu)點是可以用于在相對較小的空間中存儲任何大小的數(shù)據(jù),其在計算機編程中用于各種目的,例如將數(shù)據(jù)存儲在數(shù)據(jù)庫中或驗證數(shù)據(jù)完整性。而選擇對應(yīng)的Hash 算法主要考慮三點:①安全性,算法具有一定加密性;②算法的速度,算法具備高性能處理能力;③輸入的大小,算法可以滿足處理數(shù)據(jù)源的數(shù)據(jù)大小。由于空管綜合數(shù)據(jù)交互平臺運行環(huán)境為內(nèi)網(wǎng)環(huán)境,數(shù)據(jù)存取較為安全,而數(shù)據(jù)處理速度相對要求較高,且監(jiān)視數(shù)據(jù)源的數(shù)據(jù)流量較大,因此,選擇SHA-256算法。在密碼學(xué)中,SHA 是加密哈希函數(shù),SHA-256是最常用的使用32 位字計算的哈希函數(shù)。對于任意長度的消息,SHA-256 都會產(chǎn)生一個256位的哈希值,稱作消息摘要。這個摘要相當于是個長度為32 個字節(jié)的數(shù)組,通常由一個長度為64 的十六進制字符串來表示。本質(zhì)上,它是一個通過將消息區(qū)塊為密鑰對中間哈希值進行加密的256位加密算法。該算法具備安全、快速的特點,并且可以處理大量數(shù)據(jù)。最后,通過調(diào)用Java HashMap方法實現(xiàn)Hash[3]。

      HashMap 類使用Hash 算法來存儲和檢索數(shù)據(jù),它存儲表示為鍵值對的數(shù)據(jù),其中鍵是非空且唯一的。Hash 算法實現(xiàn)數(shù)據(jù)存儲的主要步驟為:①為各路接入監(jiān)視數(shù)據(jù)源創(chuàng)建HashMap,HashMap 以接收時間戳為鍵值,算法通過調(diào)用getInstance(“SHA-256”)的靜態(tài)方法進行初始化;②當監(jiān)視數(shù)據(jù)源有數(shù)據(jù)接收時,為數(shù)據(jù)標記當前接收時間戳,并調(diào)用add()方法,存入對應(yīng)HashMap;③設(shè)置監(jiān)聽HashMap 的大小,當?shù)竭_一定值后,調(diào)用ge(tkey)方法,按接收時間順序查找時間戳鍵值,獲取其對應(yīng)的數(shù)據(jù)值;④調(diào)用spli(t)方法,按時間戳對數(shù)據(jù)值進行拆分,并打印輸出;⑤調(diào)用BufferedWriter()方法,將打印內(nèi)容寫入數(shù)據(jù)文件;⑥調(diào)用remove()方法,刪除HashMap 中已完成查找的時間戳鍵值及其對應(yīng)的數(shù)據(jù)數(shù)值。實現(xiàn)數(shù)據(jù)存儲的部分代碼如圖5所示。

      圖5 數(shù)據(jù)存儲模塊部分代碼

      而當執(zhí)行歷史數(shù)據(jù)調(diào)用功能時,實現(xiàn)該功能的關(guān)鍵步驟為:①調(diào)用Java的Date()方法,設(shè)置數(shù)據(jù)回放的開始時間;②調(diào)用Java 的Timer()方法,設(shè)置數(shù)據(jù)回放的時間軸為1秒步進;③調(diào)用Java 的InputStreamReader()和BufferedReader()方法,讀取該回放時間的數(shù)據(jù)文件中滿足當前回放時刻的數(shù)據(jù)段,并暫存數(shù)據(jù)回放Hashmap;④將Hashmap 內(nèi)容輸出至數(shù)據(jù)輸出模塊,進行封裝,并最終發(fā)送至指定地址及端口;⑤調(diào)用Java 的Runnable()方法線程,對數(shù)據(jù)回放過程進行實時監(jiān)聽,當?shù)竭_回放結(jié)束時間后,停止數(shù)據(jù)回放。實現(xiàn)歷史數(shù)據(jù)調(diào)用功能的部分代碼如圖6所示。

      圖6 Runnable()方法實現(xiàn)數(shù)據(jù)回放過程監(jiān)聽

      上述步驟中需要調(diào)用到的Java Buffered-Writer()及BufferedReader()方法均帶有緩沖區(qū),可以實現(xiàn)文本數(shù)據(jù)的多次、高效讀寫。并通過Hash 算法,數(shù)據(jù)存儲過程更加安全、快速,從而實現(xiàn)了數(shù)據(jù)存儲模塊的高效性及可靠性。

      2.3 DatagramSocket 類實現(xiàn)發(fā)送端數(shù)據(jù)封裝及發(fā)送

      以配置數(shù)據(jù)輸出至流量預(yù)測系統(tǒng)為例,該系統(tǒng)需要通過UDP 協(xié)議接收自動化系統(tǒng)綜合航跡及自動化系統(tǒng)報文數(shù)據(jù)。由于空管綜合數(shù)據(jù)交互平臺至流量預(yù)測系統(tǒng)間為單機通訊,因此采用單播進行傳輸通訊。

      Java 提供了DatagramSocket 類作為基于UDP協(xié)議的Socket[4],該方法可以實現(xiàn)UDP 發(fā)送數(shù)據(jù),主要步驟為:①調(diào)用DatagramSocket()方法,創(chuàng)建發(fā)送端Socket 對象,構(gòu)造數(shù)據(jù)報套接字并將其綁定到本地主機上的任何可用端口;②分別創(chuàng)建綜合航跡及報文數(shù)據(jù)包對象,該數(shù)據(jù)包寫入待發(fā)送數(shù)據(jù),并調(diào)用DatagramPacke(t)方法,進行目的地址及端口號的數(shù)據(jù)封裝;③調(diào)用Send()方法,通過udp 的socket 服務(wù)將數(shù)據(jù)包發(fā)送。通過上述方法,實現(xiàn)了發(fā)送端的自動化系統(tǒng)綜合航跡及報文數(shù)據(jù)的數(shù)據(jù)封裝和發(fā)送。

      2.4 多線程技術(shù)實現(xiàn)數(shù)據(jù)的多路輸出

      線程是進程中的實際運作單位,是進程的一條流水線,是程序的實際執(zhí)行者,是最小的執(zhí)行單位。通常在一個進程中可以包含若干個線程,且一個進程中至少有一個線程。而進程指正在運行的程序,是系統(tǒng)進行資源分配和調(diào)用的獨立單位,每一個進程都有它自己的內(nèi)存空間和系統(tǒng)資源。因此,進程的創(chuàng)建和銷毀耗費大量的系統(tǒng)資源,從而衍生出線程的概念。即允許在一個進程中創(chuàng)建多個線程,這些線程共享進程的資源,并且每個線程擁有自己獨立的程序計數(shù)器、線程局部變量等資源,叫多線程技術(shù)[5]。多線程技術(shù)具有提高進程使用率、CPU利用率及數(shù)據(jù)吞吐量等優(yōu)點。

      目前,空管綜合數(shù)據(jù)交互平臺共配置三路數(shù)據(jù),分別輸出至流量預(yù)測系統(tǒng)、空管復(fù)盤分析系統(tǒng)和QNH 不一致告警系統(tǒng)。Java 內(nèi)置了對多線程的支持,可以很方便地開發(fā)出具備多線程功能,同時處理多個任務(wù)的應(yīng)用。多線程技術(shù)實現(xiàn)數(shù)據(jù)的多路輸出的主要步驟為:①為各路數(shù)據(jù)輸出創(chuàng)建MyThread 類的對象;②重寫run()方法,即定義該線程輸出數(shù)據(jù)類型及輸出目的地址和端口號;③調(diào)用線程對象的start()方法啟動線程。

      由于空管綜合數(shù)據(jù)交互平臺可對各路數(shù)據(jù)輸出進行開關(guān)操作,當配置了多條輸出鏈路時,進程的創(chuàng)建和銷毀將占用較大資源,影響系統(tǒng)性能。使用Java 的線程池接口,因為線程池具有多重優(yōu)點:可減少創(chuàng)建新線程的時間,提高響應(yīng)速度;重復(fù)利用線程池中線程,不需要每次都創(chuàng)建,降低資源消耗;便于線程管理等。調(diào)用Java newCacheThreadPol(l)方法,創(chuàng)建一個可緩存的線程池,并提前創(chuàng)建好多個線程,放入線程池中,使用時直接獲取,使用完放回池中??梢员苊忸l繁創(chuàng)建銷毀、實現(xiàn)重復(fù)利用。

      上述多線程技術(shù),最終實現(xiàn)了數(shù)據(jù)輸出模塊的多路輸出,并具有穩(wěn)定性及可靠性。

      3 實驗結(jié)果與分析

      空管綜合數(shù)據(jù)交互平臺的人機界面采用分頁式界面設(shè)計[6],總共劃分成數(shù)據(jù)輸入流監(jiān)控、數(shù)據(jù)輸出流監(jiān)控、歷史數(shù)據(jù)查詢(調(diào)用)、日志記錄及配置管理共五大功能頁。各功能頁面顯示簡潔、友好,其中通過數(shù)據(jù)輸入、輸出流監(jiān)控頁面可直觀查看到各條鏈路狀態(tài),并可在數(shù)據(jù)輸入、輸出流配置界面對鏈路進行開關(guān)或者數(shù)據(jù)源選擇等操作。數(shù)據(jù)輸入流監(jiān)控界面及數(shù)據(jù)輸出流配置界面分別如圖7、圖8所示。

      圖7 數(shù)據(jù)輸入流監(jiān)控界面

      圖8 數(shù)據(jù)輸出流配置界面

      系統(tǒng)的歷史數(shù)據(jù)查詢功能頁面,可以查詢到各輸入監(jiān)視源的歷史數(shù)據(jù),并可進行歷史數(shù)據(jù)導(dǎo)出或調(diào)用輸出操作。而系統(tǒng)的日志記錄功能頁面可以查詢到歷史告警信息,系統(tǒng)操作日志等內(nèi)容。最后一項管理配置功能頁面則提供常用告警參數(shù)設(shè)置,歷史數(shù)據(jù)輸出目的地址及端口號等參數(shù)設(shè)置。

      4 結(jié)語

      空管綜合數(shù)據(jù)交互平臺通過NIO、多線程技術(shù)實現(xiàn)多路數(shù)據(jù)的輸入及輸出。通過改進型Hash 算法實現(xiàn)信息的共享性和數(shù)據(jù)封裝性。在系統(tǒng)的實際應(yīng)用中,技術(shù)維護人員通過系統(tǒng)可進行本地數(shù)據(jù)的統(tǒng)一管理,數(shù)據(jù)資源的合理規(guī)劃,數(shù)據(jù)應(yīng)用的規(guī)范輸出,提高了技術(shù)維護部門的工作效率,降低在用系統(tǒng)服務(wù)器的工作壓力。同時,系統(tǒng)采用模塊化設(shè)計,提高了系統(tǒng)的可擴展性和可維護性,為后期本地三級數(shù)據(jù)中心建設(shè)提供了借鑒經(jīng)驗;此外,系統(tǒng)還可與分局的自研項目,如:空管復(fù)盤分析系統(tǒng)、雷達質(zhì)量分析系統(tǒng)進行互聯(lián),實現(xiàn)數(shù)據(jù)回放及數(shù)據(jù)質(zhì)量分析等功能,該系統(tǒng)將在空管單位和地方機場具有廣泛的應(yīng)用前景。

      猜你喜歡
      空管緩沖區(qū)數(shù)據(jù)源
      嵌入式系統(tǒng)環(huán)形緩沖區(qū)快速讀寫方法的設(shè)計與實現(xiàn)
      民航空管2018年運行統(tǒng)計公報
      民航管理(2019年2期)2019-06-04 03:50:22
      乙醇蒸氣放空管設(shè)置室內(nèi)引發(fā)爆炸
      勞動保護(2019年3期)2019-05-16 02:38:00
      Web 大數(shù)據(jù)系統(tǒng)數(shù)據(jù)源選擇*
      基于不同網(wǎng)絡(luò)數(shù)據(jù)源的期刊評價研究
      基于真值發(fā)現(xiàn)的沖突數(shù)據(jù)源質(zhì)量評價算法
      關(guān)鍵鏈技術(shù)緩沖區(qū)的確定方法研究
      如何做好空管質(zhì)量安全管理體系(QSMS)內(nèi)部審核的幾點思考
      河南科技(2014年22期)2014-02-27 14:18:31
      空管自動化系統(tǒng)GPS時鐘同步方式
      河南科技(2014年10期)2014-02-27 14:09:23
      分布式異構(gòu)數(shù)據(jù)源標準化查詢設(shè)計與實現(xiàn)
      沐川县| 彰化县| 宝清县| 于都县| 房产| 南雄市| 逊克县| 金堂县| 崇礼县| 恩施市| 红桥区| 桦川县| 苍山县| 思茅市| 两当县| 陈巴尔虎旗| 岑溪市| 迭部县| 囊谦县| 仁布县| 孝义市| 富锦市| 城步| 磐石市| 牡丹江市| 罗江县| 会东县| 张家界市| 罗山县| 濮阳市| 荥阳市| 福州市| 磐石市| 瑞丽市| 鹤山市| 咸丰县| 昌都县| 安阳市| 沁源县| 建水县| 正安县|