亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇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)單一,只能存儲簡單的鍵值對類型,缺乏靈活性,技術(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 配置文件格式分析

        考慮到在高級程序設(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è)可選的符號字符以及n個(gè)數(shù)字組成。

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

        (8)字符串型配置項(xiàng),由雙引號分隔的任意文本組成。文字雙引號可以通過在它們前面加上反斜杠來轉(zhuǎn)義:\“'。轉(zhuǎn)義序列\\','\f','\n','\r'和'\t'也可被識別,并具有同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è)步驟。

        在特定的編程語言平臺,利用通用的詞法分析和語法分析工具如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)一套特定編程語言平臺的通用配置文件存取庫。

        3 結(jié)語

        經(jīng)過對配置文件結(jié)構(gòu)化需求的分析,改進(jìn)后的配置文件格式具備較完善的結(jié)構(gòu)化特性,更接近程序語言,方便機(jī)器和人讀寫,彌補(bǔ)了舊式配置文件在存儲結(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).

        激情综合色综合啪啪开心| Jizz国产一区二区| 日本一区二三区在线中文| 中文字幕亚洲熟女av| 极品av麻豆国产在线观看| 中文字幕在线码一区| 精品蜜桃视频在线观看| 啪啪网站免费观看| 国产又湿又爽又猛的视频 | 中文字幕亚洲综合久久综合| 久久天堂综合亚洲伊人hd妓女| 久久久精品人妻一区亚美研究所| 久久久久久久久久91精品日韩午夜福利| 自拍偷拍韩国三级视频| 婷婷久久国产综合精品| 成人毛片一区二区| 免费人成在线观看播放国产| 欧美亚洲另类 丝袜综合网| 顶级高清嫩模一区二区| 久久综合亚洲色hezyo国产| 欧美日韩电影一区| 国内精品国产三级国产avx| 人妻少妇偷人精品免费看| 午夜精品久久久久成人| 欧美日韩国产另类在线观看| 亚洲一区二区三区美女av| 精品国产av一区二区三区四区| 久久九九国产精品怡红院| 99久久久国产精品免费蜜臀| 91青青草在线观看视频| 亚洲乱码中文字幕在线| 熟妇高潮一区二区三区| 丰满少妇又紧又爽视频| 亚洲女同系列在线观看| 国产精品免费一区二区三区四区 | 18禁美女裸身无遮挡免费网站| 亚洲va欧美va人人爽夜夜嗨| 久久精品中文字幕有码| 国产白袜脚足j棉袜在线观看| 午夜tv视频免费国产区4| 日韩亚洲国产中文字幕|