999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

結(jié)構(gòu)化的配置文件設(shè)計(jì)與實(shí)現(xiàn)

2018-02-28 11:19:18張名明許坤凌旺
電子技術(shù)與軟件工程 2018年21期

張名明 許坤 凌旺

摘要

軟件中的數(shù)據(jù)結(jié)構(gòu)常常需要保存到配置文件中,通常的配置文件格式如INI,XML在讀取和保存時(shí)存在對結(jié)構(gòu)化數(shù)據(jù)支持薄弱,易讀性差等種種問題,為了解決如上問題,通過設(shè)計(jì)一套支持結(jié)構(gòu)化數(shù)據(jù)的配置文件格式,并提供相關(guān)配置文件存取庫實(shí)現(xiàn)原理。新的配置文件格式和相應(yīng)實(shí)現(xiàn)原理提供了對結(jié)構(gòu)化數(shù)據(jù)針對性的設(shè)計(jì),減少了不同系統(tǒng)對配置文件功能的重復(fù)開發(fā),提高了軟件開發(fā)的效率并減小了缺陷率。

【關(guān)鍵詞】結(jié)構(gòu)化 配置文件 INIXML

軟件是由數(shù)據(jù)結(jié)構(gòu)與算法組成,數(shù)據(jù)結(jié)構(gòu)在軟件中是一個(gè)重要的組成部分,它是業(yè)務(wù)邏輯中數(shù)據(jù)的抽象,一個(gè)軟件往往由很多數(shù)據(jù)結(jié)構(gòu)組成,這些數(shù)據(jù)結(jié)構(gòu)承載了軟件業(yè)務(wù)邏輯中方方面面的數(shù)據(jù),包括初始化數(shù)據(jù),運(yùn)行時(shí)數(shù)據(jù),結(jié)果數(shù)據(jù)等。其中初始化數(shù)據(jù)往往存在于配置文件中,通過修改其中的數(shù)據(jù)達(dá)到修改程序行為的目的。通常的實(shí)現(xiàn)思路是軟件利用INI或者XML格式的配置文件,實(shí)現(xiàn)一套解析的方法,并將解析后的數(shù)據(jù)填入初始化數(shù)據(jù)結(jié)構(gòu)中;寫入配置文件也一樣,先將數(shù)據(jù)從初始化數(shù)據(jù)結(jié)構(gòu)中取出,再依照INI或者XML的格式,將數(shù)據(jù)填入配置文件中。目前常用的處理方式存在大量重復(fù)的工作,需要有一種抽象層次更高的配置文件格式,以解決上述問題。

1 傳統(tǒng)配置文件分析

傳統(tǒng)的配置文件格式簡單直觀,技術(shù)較成熟,但也有一些不能避免的缺點(diǎn):INI格式結(jié)構(gòu)單一,只能存儲(chǔ)簡單的鍵值對類型,缺乏靈活性,技術(shù)陳舊。XML格式結(jié)構(gòu)比較復(fù)雜,沒有結(jié)構(gòu)化的描述,不易于讀寫,額外字符較多,文件體積較大。一般的配置文件讀取流程分為:

(1)準(zhǔn)備配置文件;

(2)解析配置文件;

(3)保存配置項(xiàng)到初始化數(shù)據(jù)結(jié)構(gòu);

(4)使用配置項(xiàng)內(nèi)容,其中解析配置文件功能需要在已有INI或者XML讀寫庫上做二次開發(fā),從前到后將解析到的配置項(xiàng)內(nèi)容保存到內(nèi)部初始化數(shù)據(jù)結(jié)構(gòu)中,供后續(xù)的初始化流程使用。

通常這部分解析讀取流程需要大量重復(fù)的工作量,也容易引入錯(cuò)誤。故考慮設(shè)計(jì)一套抽象層次更高的配置文件格式,提供規(guī)定的語法,能夠滿足結(jié)構(gòu)化數(shù)據(jù)格式的需求,并且具有簡單直接,易讀寫以及占用體積小等優(yōu)點(diǎn)。

2 設(shè)計(jì)與實(shí)現(xiàn)

2.1 配置文件格式分析

考慮到在高級(jí)程序設(shè)計(jì)語言中,結(jié)構(gòu)化的數(shù)據(jù)結(jié)構(gòu)通常是用類或者結(jié)構(gòu)體實(shí)現(xiàn),將一份配置文件設(shè)計(jì)為由一組配置項(xiàng)組成,每個(gè)配置項(xiàng)由配置項(xiàng)名稱與配置項(xiàng)內(nèi)容組成,每個(gè)配置項(xiàng)內(nèi)容可以由下面的任意一項(xiàng)構(gòu)成:

(1)矢量值:整形值,浮點(diǎn)型值,Bool值,字符串。

(2)數(shù)組:由一系列矢量值組成,數(shù)組中的每一項(xiàng)類型必須相同。

(3)組合:一個(gè)配置項(xiàng)的集合。

(4)列表:一系列的配置內(nèi)容組成,包括矢量值,數(shù)組,組合以及列表。

2.2 配置文件格式設(shè)計(jì)

在具體實(shí)現(xiàn)過程中,參考類C語言和Python類腳本語言的編程范式,并考慮到工程實(shí)踐的需求,將以上配置項(xiàng)需求設(shè)計(jì)成以下的格式:

(1)配置項(xiàng)格式,形式如:namevalue;其中name由字符,數(shù)字及下劃線組成,并以字母或下劃線開頭,value必須是a、b、c、d四種配置項(xiàng)內(nèi)容中的一種,

(2)組合配置項(xiàng)格式,形式如:{settings…},組合配置項(xiàng)可以包含任意多個(gè)配置項(xiàng),但每個(gè)配置項(xiàng)名稱必須唯一。

(3)數(shù)組配置項(xiàng),形式如:[value,value…],小數(shù)組配置項(xiàng)可以包含0或n個(gè)元素,每個(gè)元素都必須是類型相同的矢量值。

(4)列表配置項(xiàng),形式如:(value,value一),數(shù)組配置項(xiàng)可以包含0或n個(gè)元素,每個(gè)元素可以a、b、c、d四中配置項(xiàng)內(nèi)容中的一種,且每個(gè)元素類型無需一致。

(5)整形配置項(xiàng),包含兩種類型:1.包含可選前導(dǎo)符(‘+、‘-)的n個(gè)0-9數(shù)字;2.十六進(jìn)制字符,以‘0x作為前綴,接著n個(gè)十六進(jìn)制字符(‘01-‘9,‘A-‘F,‘a(chǎn)-‘f)。

(6)浮點(diǎn)型配置項(xiàng),由n個(gè)數(shù)字和1個(gè)小數(shù)點(diǎn)組成,并包含一個(gè)可選前導(dǎo)符(‘+、‘-),以及一個(gè)可選的指數(shù),指數(shù)由一個(gè)字符(‘e、‘E),一個(gè)可選的符號(hào)字符以及n個(gè)數(shù)字組成。

(7)Bool型配置項(xiàng),由‘true或者‘false組成,或者其他大小寫混合的變種。

(8)字符串型配置項(xiàng),由雙引號(hào)分隔的任意文本組成。文字雙引號(hào)可以通過在它們前面加上反斜杠來轉(zhuǎn)義:\“'。轉(zhuǎn)義序列\\','\f','\n','\r'和'\t'也可被識(shí)別,并具有同C語言中的含義。

(9)注釋,包含三種類型:1.腳本風(fēng)格,以#開頭到行結(jié)尾的字符將作為注釋,2.C語言風(fēng)格,/*到*/之間的字符將作為是注釋,3.C++語言風(fēng)格,以‘//開頭到行結(jié)尾的字符將作為注釋。

通過以上a-i條語法規(guī)范定義的示例配置文件如下所示:

#Example application configuration file

version="1.01";

application=

{

Window{

title="My Application";

size={w=640;h=480;}:

pos={x=350;y=250;}:

};

list=(("abc",123,true),1.234,(/*anempty list*/));

misc={

pi=3.141592654;

int=1234;

columns=["Last Name","FirstName","Mi"];

bitmask=0x1FC3;//hex

};

};

2.3 配置文件存取庫實(shí)現(xiàn)原理

配置文件的語法接近編程語言,故參考一般代碼的編譯方法,簡化后的配置文件存取庫實(shí)現(xiàn)詞法分析和語法分析兩個(gè)步驟。

在特定的編程語言平臺(tái),利用通用的詞法分析和語法分析工具如Flex以及Bison等,通過導(dǎo)入對應(yīng)的詞法分析和語法分析規(guī)則,可以比較方便地將配置文件一步一步轉(zhuǎn)換成配置項(xiàng)集合,配置項(xiàng)集合一般可以考慮通過各種編程語言通常會(huì)提供的Map結(jié)構(gòu)來實(shí)現(xiàn),并額外增加配置項(xiàng)查詢,增加,修改和刪除方法,即可實(shí)現(xiàn)一套特定編程語言平臺(tái)的通用配置文件存取庫。

3 結(jié)語

經(jīng)過對配置文件結(jié)構(gòu)化需求的分析,改進(jìn)后的配置文件格式具備較完善的結(jié)構(gòu)化特性,更接近程序語言,方便機(jī)器和人讀寫,彌補(bǔ)了舊式配置文件在存儲(chǔ)結(jié)構(gòu)化數(shù)據(jù)時(shí)的不足,并且因?yàn)榕渲梦募袷街欢x了數(shù)值,不存在計(jì)算表達(dá)式,所以也不會(huì)有代碼注入等安全隱患。通過提供一份配置文件存取庫實(shí)現(xiàn)原理,使得軟件開發(fā)者只需要按照原理設(shè)計(jì)實(shí)現(xiàn)一套對應(yīng)語言的配置庫模塊,就可以獲得結(jié)構(gòu)化配置方面所有的功能,并且該配置庫可以重復(fù)使用,減少了配置功能方面重復(fù)的工作量,提高了軟件開發(fā)的效率,也減少了缺陷率。

參考文獻(xiàn)

[1]周霞,彭文惠.XML技術(shù)與應(yīng)用教程[M].北京:電子工業(yè)出版社,2015.

[2]劉艷春,洪曉慧.Struts2框架核心配置文件的研究與應(yīng)用[J].計(jì)算機(jī)技術(shù)與發(fā)展,2013(02).

[3]滕海坤,劉心聲,李倫彬.嵌入式Java編譯器的研究與設(shè)計(jì)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2018(04).

主站蜘蛛池模板: 国产资源免费观看| 国产91丝袜| 狠狠做深爱婷婷久久一区| 久久无码免费束人妻| 青青青草国产| 直接黄91麻豆网站| 日韩欧美国产综合| 国产午夜一级毛片| 亚洲精选无码久久久| 欧美精品v欧洲精品| 亚洲中文字幕久久精品无码一区| 55夜色66夜色国产精品视频| 一级毛片免费观看久| 人人91人人澡人人妻人人爽 | 91精品啪在线观看国产| 日韩AV手机在线观看蜜芽| 欧美激情视频一区二区三区免费| 国产黄网站在线观看| 亚洲成人一区二区| 福利姬国产精品一区在线| 国产成人久久综合777777麻豆| 亚洲女同一区二区| 国产精品久久久久久久久久98| 狠狠色狠狠色综合久久第一次 | 亚洲国产精品日韩av专区| 九色免费视频| 熟妇无码人妻| 国产精品19p| 在线视频亚洲色图| 亚洲福利片无码最新在线播放| 四虎永久免费在线| 色成人亚洲| 亚洲第一成年人网站| 亚洲全网成人资源在线观看| 日本a∨在线观看| 欧美日韩国产高清一区二区三区| A级毛片高清免费视频就| 久久国产精品77777| 国产精品人成在线播放| 8090午夜无码专区| 国产欧美精品一区aⅴ影院| 色综合五月| 国产视频大全| 毛片视频网| 日韩av无码DVD| 91福利一区二区三区| 色噜噜狠狠狠综合曰曰曰| 日韩毛片免费| 欧美午夜在线视频| 狠狠v日韩v欧美v| 久久久久久尹人网香蕉| 久久99国产精品成人欧美| 国产三区二区| 在线观看国产精品第一区免费| 亚洲中久无码永久在线观看软件 | 看看一级毛片| 91伊人国产| 久久中文字幕2021精品| 狠狠色婷婷丁香综合久久韩国 | 欧美一级高清视频在线播放| 久久综合国产乱子免费| 九九热视频精品在线| 五月激情婷婷综合| 精品超清无码视频在线观看| 九九这里只有精品视频| 91在线一9|永久视频在线| 精品国产一区二区三区在线观看 | 真人免费一级毛片一区二区| 亚洲欧美自拍一区| 久久久久久久蜜桃| 午夜福利在线观看成人| 国产国语一级毛片在线视频| 国产日韩欧美精品区性色| 国产成人高清在线精品| 欧美一级99在线观看国产| 国产成人高清在线精品| 国产精品熟女亚洲AV麻豆| 国产自在线播放| 91精品国产丝袜| 国产不卡国语在线| 毛片大全免费观看| 亚洲欧州色色免费AV|