配置文件類比

為什么要用配置文件

如果代碼中沒有任何的配置文件,而程序內(nèi)部本身就是黑盒,內(nèi)部細(xì)節(jié)無法探知。

一旦遇到需要修改某些參數(shù),不僅耗費(fèi)精力,而且還需要重新剖析代碼,重新編譯,容易引發(fā)
問題。

另外,如果發(fā)布了代碼,需要做適配,對應(yīng)多個測試環(huán)境或者線上環(huán)境。需要多種配置場景,
配置文件可以發(fā)揮巨大作用。

配置文件類型

目前本了解和使用過的配置文件主要有:

  • xml
  • json
  • yaml
  • ini
  • .properties

全文針對以上幾種配置文件做對比,詳細(xì)講述如何 讀取和操作 配置文件

四種配置文件比較

一、xml pk json

XML文檔可以附上DTD、Schema,還有一堆的諸如XPath之類規(guī)范,使用自定義XML元素或?qū)傩裕?br> 能很方便地給數(shù)據(jù)附加各種約束條件和關(guān)聯(lián)額外信息,從數(shù)據(jù)表達(dá)能力上看,XML強(qiáng)于Json,
但是很多場景并不需要這么復(fù)雜的重量級的東西,輕便靈活的Json就顯得很受歡迎了.

在許多場景中,json能解決80%的問題,殺雞焉用牛刀說的就是兩者的區(qū)別。

所有的配置文件都可以理解為鍵值對,而 xml 文件將單個的鍵值對都作為一個對象來處理,
并且以 <tag> </tag> 的形式出現(xiàn)。

二、JSON 與 YAML

大體上來說,YAML 可以理解為是 JSON 的超集

三、幾種配置文件相互比較

從解析的復(fù)雜度來講

ini 的是線性結(jié)構(gòu),分析起來簡單方便,但是不能表達(dá)復(fù)雜的層次結(jié)構(gòu)

xml/json/yaml 都是層次結(jié)構(gòu),分析比較復(fù)雜,表達(dá)能力強(qiáng)大

各配置文件的簡單示例

xml 文件

XML 被設(shè)計用來傳輸和存儲數(shù)據(jù)(詳情會在下文中介紹)

最簡單的形式

<car brand="Jeep" price="10w"/>

但是如果 對應(yīng)的值不是簡單的一個屬性,而是一整個對象,整個時候是另一中表象方式

<car brand = "Jeep" price = "10w" >
    <detail>
        <country>German</country>
        <buildDay>2017/10</buildDay>
        ...
    </detail>
</car>
json 文件
{
  "brand": "Jeep",
  "sale": "10w",
  "detail": [
    {"country": "German"},
    {"buildDay": "2017/10"}
  ]
}
yaml

在下面詳情中講述

.properties

一般在 java 語言中使用較多,不做詳細(xì)描述,本文主要基于 python 解析配置文件

YAML 教程

在實(shí)際項(xiàng)目中,許多數(shù)據(jù)表達(dá)通過 XML 組織

YAML 的優(yōu)勢就在于,它比 XML 和 JSON 都更為容易解讀

YAML(YAML Ain`t a Markup Language) 是遞歸命名的,即 YAML 不是一種標(biāo)記語言

基本語法規(guī)則

  1. 大小寫敏感
  2. 使用縮進(jìn)表示層級關(guān)系
  3. 不允許使用 TAB鍵 來縮進(jìn),只允許使用空格鍵來縮進(jìn)
  4. 縮進(jìn)的空格數(shù)量不重要(一般為2個空格,也可是是4個)
  5. 注釋使用 '#'

參考至 :

1.官方文檔

2.常用配置文件分析

3.知乎大神對xml和json的解析

4.YAML 文件解析

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,554評論 19 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,273評論 6 342
  • Spring Web MVC Spring Web MVC 是包含在 Spring 框架中的 Web 框架,建立于...
    Hsinwong閱讀 22,942評論 1 92
  • 關(guān)于AutoLayout autolayout剛出現(xiàn)的時候,我感覺自動布局及其難用,在Xib中拉線拉著拉著就暈頭轉(zhuǎn)...
    擋不住的獅子閱讀 440評論 0 0
  • 別愛太滿,別睡太晚。 這真的是一句很俗的話,但是卻有它的道理。 我的朋友,暫且喊他小汐吧,他的經(jīng)歷讓我完全懂得了這...
    洛枳gaga閱讀 355評論 0 1

友情鏈接更多精彩內(nèi)容