亚洲免费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).

        久久亚洲精品一区二区| 国产成人一区二区三区在线观看 | 亚洲av一二三区成人影片| 三级特黄60分钟在线观看| 亚洲国产欧美日韩一区二区| 亚洲国产精品一区亚洲国产| baoyu网址国产最新| 99伊人久久精品亚洲午夜| 国产极品女主播国产区| 男人边吻奶边挵进去视频| 国产精品日日摸夜夜添夜夜添| 国产av精选一区二区| 无码人妻一区二区三区在线| 日本亚洲国产一区二区三区| 国产福利小视频91| 日本一区二区三区四区啪啪啪| 猫咪av成人永久网站在线观看| 精品少妇一区二区三区视频| 国产一区二区内射最近人| 亚洲一区二区三区99| 天堂а√在线最新版中文在线| 亚洲中文字幕无线无码毛片| 狼人综合干伊人网在线观看| 成年美女黄网站色大免费视频| 玩弄少妇高潮ⅹxxxyw| 国产精品久久中文字幕第一页| 经典黄色一区二区三区| 精品国产麻豆免费人成网站| 国产不卡一区二区三区免费视| 男男互吃大丁视频网站| 人妻少妇哀求别拔出来| 男人扒开女人下面狂躁小视频 | 中文字幕一区二区人妻出轨| 久久久亚洲一区二区三区| 亚洲熟妇无码久久精品| 免费a级毛片无码a| 国产网友自拍亚洲av| 亚洲男人av天堂久久资源| 国产麻豆成人精品av| 日韩无码电影| 国产精品av网站在线|