• 
    

    
    

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

      ?

      某物資管理調(diào)度系統(tǒng)的數(shù)據(jù)序列化技術(shù)

      2020-06-10 07:40:56王玉龍寧蒙王衛(wèi)濤
      電子技術(shù)與軟件工程 2020年4期
      關(guān)鍵詞:序列化調(diào)用調(diào)度

      王玉龍 寧蒙 王衛(wèi)濤

      (中國船舶集團(tuán)公司第七一三研究所 河南省鄭州市 450015)

      1 引言

      在某型號物資管理調(diào)度系統(tǒng)中,既有基于國產(chǎn)平臺的中標(biāo)麒麟操作系統(tǒng)[1],也有基于安卓平臺的嵌入式系統(tǒng),在每個計(jì)算機(jī)節(jié)點(diǎn)中需將啟動信息、運(yùn)行信息等進(jìn)行本地化,并且部分節(jié)點(diǎn)之間通過網(wǎng)絡(luò)以XML形式傳輸給任務(wù)接收終端,任務(wù)接收后需要將數(shù)據(jù)本地化及存儲至人大金倉數(shù)據(jù)庫[2]。另外任務(wù)執(zhí)行情況和物資盤點(diǎn)信息也要通過網(wǎng)絡(luò)以XML形式發(fā)送到管理調(diào)度計(jì)算機(jī)節(jié)點(diǎn),最后這些信息存儲在人大金倉數(shù)據(jù)庫服務(wù)器中。不僅僅系統(tǒng)本身存在數(shù)據(jù)交換,與外系統(tǒng)之間也存在數(shù)據(jù)交換的需求,物資管理調(diào)度系統(tǒng)需要提供網(wǎng)絡(luò)接收外部系統(tǒng)的基礎(chǔ)數(shù)據(jù)信息,比如人員、單位、任務(wù)等數(shù)據(jù)信息。此外物資管理調(diào)度系統(tǒng)還需將一些數(shù)據(jù)信息發(fā)布出去,供其他系統(tǒng)使用,這些信息在各系統(tǒng)之間進(jìn)行交換時,都是以XML協(xié)議作為數(shù)據(jù)交換的載體。

      該物資管理調(diào)度系統(tǒng)所在的數(shù)字化平臺數(shù)據(jù)來源復(fù)雜,信息量巨大,包括外圍設(shè)備的實(shí)時采集數(shù)據(jù)、設(shè)備信息、調(diào)度過程數(shù)據(jù)、盤庫信息等,需要對其中的關(guān)鍵數(shù)據(jù)信息進(jìn)行持久保存和在進(jìn)程間進(jìn)行傳輸。借鑒前期項(xiàng)目采用基于.net的自帶序列化反序列庫[3]可以解決此類問題。XML序列化就是將對象狀態(tài)轉(zhuǎn)換為XML文件,反序列化則是將XML文件轉(zhuǎn)換為對象實(shí)例,這兩個過程可以輕松實(shí)現(xiàn)存儲和傳輸數(shù)據(jù)[4]。

      本文提出一種基于Qt跨平臺的XML序列化反序列化框架來解決國產(chǎn)操作系統(tǒng)平臺間的數(shù)據(jù)交換和共享問題,該框架擴(kuò)展性強(qiáng),成員變量可以為基礎(chǔ)數(shù)據(jù)類型(Int、QString、QBool、QDateTime等)、集合類型(QList、QMap等)以及自定義類型(指針)實(shí)現(xiàn)XML序列化反序列化功能,有效解決了信息存儲、傳輸和共享的問題。

      2 算法實(shí)現(xiàn)

      利用面向?qū)ο蟪绦蛟O(shè)計(jì)中的繼承以及虛函數(shù)概念[5],結(jié)合Qt中元對象機(jī)制,自研對業(yè)務(wù)軟件提供的XML序列化和反序列化功能。下面對XML序列化和反序列化算法設(shè)計(jì)分別進(jìn)行詳細(xì)說明。

      2.1 XML序列化算法

      XML序列化就是通過對外接口將類對象轉(zhuǎn)化為可以網(wǎng)絡(luò)傳輸或者本地保存的XML文件,核心思想是將類的名稱映射成XML文件的根節(jié)點(diǎn)元素;不同類型的各成員變量名稱映射為XML文件的屬性名稱;成員變量的值映射為xml文件內(nèi)的屬性值;對于成員變量為基礎(chǔ)數(shù)據(jù)類型的變量較容易映射,但是集合類型(QList、QMap等)以及自定義類型(指針)需要進(jìn)行復(fù)雜的嵌套循環(huán)和基類指針調(diào)用;下面對XML序列化功能設(shè)計(jì)相關(guān)的自研函數(shù)進(jìn)行詳細(xì)說明,見表1所示。

      圖1:序列化功能內(nèi)部函數(shù)之間調(diào)用圖

      其中函數(shù)InstanceToXml()為序列化功能的唯一對外接口,實(shí)現(xiàn)將類實(shí)例轉(zhuǎn)換為XML文件,函數(shù)與函數(shù)之間的調(diào)用關(guān)系見圖1所示。

      XML序列化功能內(nèi)部主要函數(shù)接口instanceToXml的實(shí)現(xiàn)流程主要分以下步驟,詳細(xì)流程如圖2所示。

      (1)首先獲取待序列化實(shí)例的元對象(MetaObj);

      (2)通過元對象(MetaObj)得到序列化類的N個公有成員變量;

      (3)依次遍歷N個公有成員變量,并且判斷當(dāng)前成員變量是什么類型;

      (4)若為list集合類型,調(diào)用listToXml函數(shù)進(jìn)行增加相應(yīng)節(jié)點(diǎn);

      (5)若為map集合類型,調(diào)用mapToXml函數(shù)進(jìn)行增加相應(yīng)節(jié)點(diǎn);

      (6)若為int、string、bool等基礎(chǔ)類型,直接增加相應(yīng)xml節(jié)點(diǎn)即可;

      (7)若為自定義類型,使用該函數(shù)迭代即可;

      (8)遍歷完所有成員變量,函數(shù)退出。

      2.2 XML反序列化算法

      表1:序列化相關(guān)函數(shù)及說明

      表2:反序列化相關(guān)函數(shù)及說明

      表3:某調(diào)度臺位配置信息(ConsoleConfig)結(jié)構(gòu)

      XML反序列化是XML序列化的反過程,通過對外接口將網(wǎng)絡(luò)傳輸中XML文件流或者本地保存的XML文件轉(zhuǎn)化類對象,核心思想是將XML文件的根節(jié)點(diǎn)元素映射成類的名稱;XML文件的屬性名稱映射為不同類型的各成員變量名稱;XML文件內(nèi)的屬性值映射為成員變量的值;對于XML文件或流存在嵌套或者重復(fù)結(jié)構(gòu)映射比較復(fù)雜,即映射為類中集合類型(QList、QMap等)以及自定義類型(指針)的成員變量;接下來對XML反序列化功能設(shè)計(jì)相關(guān)的自研函數(shù)進(jìn)行詳細(xì)說明,見表2所示。

      圖2:序列化---虛函數(shù)instanceToXml()流程圖

      圖3:反序列化功能內(nèi)部函數(shù)之間調(diào)用圖

      圖4:反序列化---虛函數(shù)xmlToInstanse()流程圖

      圖5:XML序列化上層調(diào)用代碼

      其中函數(shù)XmlToInstance()為反序列化功能的唯一對外接口,實(shí)現(xiàn)將XML文件轉(zhuǎn)換為類實(shí)例,函數(shù)與函數(shù)之間的調(diào)用關(guān)系見圖3所示。XML反序列化功能內(nèi)部主要函數(shù)接口xmlToInstance()的實(shí)現(xiàn)流程主要分以下步驟,詳細(xì)流程如圖4所示:

      (1)首先獲取待反序列化的XML文件的根節(jié)點(diǎn)或者自定義類型根節(jié)點(diǎn);

      圖6:生成“ConsoleConfig.xml”文件

      圖7:XML反序列化上層調(diào)用代碼

      圖8:反序列化程序運(yùn)行結(jié)果

      (2)獲取實(shí)例元對象,并通過元對象得到N個公有成員變量;

      (3)依次遍歷N個公有成員變量,通過當(dāng)前成員變量名,使用compareTagName()函數(shù)返回相對應(yīng)結(jié)點(diǎn),接下來判斷成員變量的類型,并且一一賦值;

      (4)若為list集合類型,調(diào)用xmlToList函數(shù)對相同成員變量賦值;

      (5)若為map集合類型,調(diào)用xmlToMap函數(shù)對相同成員變量賦值;

      (6)若為int、string、bool等基礎(chǔ)類型,對當(dāng)前成員變量賦值;

      (7)若為自定義類型,使用該函數(shù)迭代并對當(dāng)前指針變量字段進(jìn)行賦值;

      (8)遍歷完所有成員變量,函數(shù)退出。

      3 仿真

      在中標(biāo)麒麟操作系統(tǒng)桌面版V6.0上,以某調(diào)度臺位配置信息為例進(jìn)行仿真說明,該調(diào)度臺配置信息類(ConsoleConfig)包含了字符串、布爾、時間、集合及自定義類型等類型,具體類結(jié)構(gòu)如表3所示。

      3.1 XML序列化上層調(diào)用實(shí)例

      首先定義ConsoleConfig類并且對其進(jìn)行初始化,然后使用序列化功能接口,具體代碼如圖5所示,運(yùn)行程序后生成“ConsoleConfig. xml”文件,如圖6所示。

      3.2 XML反序列化上層調(diào)用實(shí)例

      接下來將序列化程序生成的“ConsoleConfig. xml”文件進(jìn)行反序列化,具體代碼如圖7所示,程序運(yùn)行結(jié)果如圖8所示。

      根據(jù)運(yùn)行結(jié)果看出使用該序列化反序列化方法可以完成相應(yīng)功能,滿足預(yù)期效果。

      4 結(jié)論

      本文利用面向?qū)ο蟪绦蛟O(shè)計(jì)中的繼承以及虛函數(shù)概念,結(jié)合Qt中元對象機(jī)制,在國產(chǎn)中標(biāo)麒麟操作系統(tǒng)上設(shè)計(jì)開發(fā)出一套XML序列化反序列化框架,該框架可擴(kuò)展性和維護(hù)性強(qiáng)并且支持的數(shù)據(jù)類型(基礎(chǔ)類型、集合類型以及自定義類型等)較豐富,可滿足大部分物資調(diào)度管理系統(tǒng)業(yè)務(wù)軟件的使用需求,提高了軟件開發(fā)效率和軟件產(chǎn)品質(zhì)量。

      猜你喜歡
      序列化調(diào)用調(diào)度
      如何建構(gòu)序列化閱讀教學(xué)
      甘肅教育(2020年14期)2020-09-11 07:58:36
      《調(diào)度集中系統(tǒng)(CTC)/列車調(diào)度指揮系統(tǒng)(TDCS)維護(hù)手冊》正式出版
      核電項(xiàng)目物項(xiàng)調(diào)用管理的應(yīng)用研究
      一種基于負(fù)載均衡的Kubernetes調(diào)度改進(jìn)算法
      虛擬機(jī)實(shí)時遷移調(diào)度算法
      LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
      基于系統(tǒng)調(diào)用的惡意軟件檢測技術(shù)研究
      Java 反序列化漏洞研究
      作文訓(xùn)練微格化、序列化初探
      語文知識(2015年12期)2015-02-28 22:02:15
      SVC的RTP封裝及其在NS2包調(diào)度中的應(yīng)用研究
      甘孜县| 信宜市| 荥经县| 丰城市| 隆林| 汝阳县| 花垣县| 铜鼓县| 南雄市| 成都市| 郴州市| 南宁市| 紫阳县| 新干县| 德江县| 姚安县| 临泽县| 河东区| 盐池县| 手机| 谢通门县| 平凉市| 扶绥县| 勐海县| 常州市| 连南| 绥德县| 开封市| 乐东| 永泰县| 永定县| 贡嘎县| 凭祥市| 盈江县| 略阳县| 绥宁县| 大同市| 西青区| 柳林县| 双城市| 平陆县|