精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

寫yml,寫的腿疼

開發(fā) 前端
我非常羞恥的發(fā)現(xiàn),配置文件界,已經(jīng)被下面三種所統(tǒng)治:yaml,toml和json,這讓一直使用properties文件的javaer深深的埋下了頭。

本文轉(zhuǎn)載自小姐姐味道(微信公眾號ID:xjjdog)。

我非常羞恥的發(fā)現(xiàn),配置文件界,已經(jīng)被下面三種所統(tǒng)治:yaml,toml和json,這讓一直使用properties文件的javaer深深的埋下了頭。

不要擔(dān)心,當(dāng)你讀到文章最后,你也會羞愧的埋下頭。也可能會有一絲憤怒。

[[404113]]

像各種人工智能調(diào)參數(shù),k8s調(diào)參師,都已經(jīng)成功升級為yml配置大師。作為一個常年使用yml文件的SpringBoot框架使用者,有時候?qū)ml的表現(xiàn)形式竟然顯露出了困惑,這不由得讓人羞愧又加了一層。

YAML,竟然是XML的一個子集,所以它的復(fù)雜是有源頭的,最早誕生于2009年。

使用yml文件,首先遇到的問題,就是它的縮進問題。就如同python語言一樣,yml文件的表現(xiàn)層次,是靠嵌套的縮進來完成的。它并不使用TAB,而是使用空格表示縮進。

要命的是,空格的多少,并不重要,只要相同級別元素左側(cè)能夠?qū)R就行。這對于CV黨來說,不得不說是一個噩夢哈哈。

那一個配置文件,要解決哪些問題呢?Redis已經(jīng)做出了回答。就像你學(xué)習(xí)一門新的語言一樣,解決了它的字符串和集合的表示方法,基本上寫代碼就沒問題了。那我們就挨個來看一下。

以下方法以SpringBoot的yml文件格式為準(zhǔn),其他場景的解析器會有些許差異。為了能夠debug這些值,我們簡單的寫了一個測試類,然后再設(shè)值完成之后打印以下就可以了。

  1. @EnableAutoConfiguration 
  2. @Configuration 
  3. public class TestConfig implements InitializingBean { 
  4.     @Value("${str1}") 
  5.     String str1; 
  6.     @Override 
  7.     public void afterPropertiesSet() throws Exception { 
  8.         System.out.println(this); 
  9.     } 

1. 字符串

字符串是最簡單的配置,也是最常見的配置。再spring中,字符串可以代引號,也可以不帶引號。所以下面三行的配置效果,是一樣的。

  1. str1: ksdfjsdlkfjdsf skdfljs 
  2. str1: 'ksdfjsdlkfjdsf skdfljs' 
  3. str1: "ksdfjsdlkfjdsf skdfljs" 

那么,如何支持多行文本呢?畢竟有些需求,就是這么作死。寫法如下:

  1. str1: | 
  2.   ksdfjsdlkfjdsf skdfljs 
  3.   ksdfjsdlkfjdsf skdfljs 
  4.   ksdfjsdlkfjdsf skdfljs 

注意,后面不需要有其他的畫蛇添足的結(jié)束表示,一切都是靠縮進來證明的。當(dāng)然,你也可以把 |換成>,效果是一樣的。

  1. str1: > 
  2.   ksdfjsdlkfjdsf skdfljs 
  3.   ksdfjsdlkfjdsf skdfljs 
  4.   ksdfjsdlkfjdsf skdfljs 

要命的是,它還有第三種寫法。

  1. str1: "ksdfjsdlkfjdsf skdfljs 
  2.   ksdfjsdlkfjdsf skdfljs 
  3.   ksdfjsdlkfjdsf skdfljs" 

2. 數(shù)字

當(dāng)我們的接收者,是一個數(shù)字的時候,比如下面這個。

  1. @Value("${a}") 
  2. int a ; 

那么,你即使把配置文件寫成了字符串,它也會強制轉(zhuǎn)成數(shù)字。

  1. a: "014" 

此時,a的數(shù)值,就會被設(shè)置成整數(shù)14。

神奇的是,如果你把引號去掉,也就是下面這樣。

  1. a: 014 

此時,a的數(shù)值,竟然變成了12!

我就曾碰到過這樣的極品bug,浪費了不少腦細胞,wtf。因為以0開頭,代表的是八進制,解析器中間做了一層轉(zhuǎn)換。所以,按照這個邏輯,0x14就是20,使用時一定要注意這一點。機靈的同學(xué)可以拿來埋坑哦。

這里也有一些特殊的寫法。

  1. float: 1.23e+3     # 浮點數(shù) 
  2. fixed: 13.67       # 固定小數(shù) 
  3. minmin: -.inf      # 表示負無窮 
  4. notNumber: .NaN    # 無效數(shù)字 
  5.  
  6. boolean: [true, false] # 布爾值 
  7. string: '12345'    # 字符串 
  8.  
  9. date: 2021-06-03   # 日期 

3. 字典

再來看一下常見的字典。其實,把所有的配置羅列開來,本身就是一個字典,也就是kv配置。

它是以:進行分割的,所以左半部分要求不能有特殊字符,否則就暈菜了。不不不,它沒有暈菜,因為它把亂七八糟的字符,正確的識別了出來。比如下面的yml配置。

  1. a&& xk@71: 0x14 

這樣的代碼接收。

  1. @Value("${a&& xk@71}") 
  2. int a ; 

嗯,容易被打死的寫法。所以,你懂的。

還是我太幼稚了,yml文件根本就沒規(guī)定key不允許有特殊字符,它允許你這么做。

4. 對象

由字典,很容易可以擴展到對象。因為對象,也是一堆屬性的集合。json已經(jīng)證明,這些屬性,就是一堆KV,我們的yaml也是如此。

假設(shè)有如下的代碼,我們需要構(gòu)造dog中的數(shù)據(jù)。

  1. @Data 
  2. public static class Dog{ 
  3.     private String xjjdog1; 
  4.     private String xjjdog2; 
  5.  
  6. @Bean 
  7. @ConfigurationProperties(prefix = "dog"
  8. public Dog getDog(){ 
  9.     return new Dog(); 

第一種yml的寫法,是這樣。

  1. dog: 
  2.   xjjdog1: i am xjjdog1 
  3.   xjjdog2: i am xjjdog1++ 

而另一種方式,是把json數(shù)據(jù)直接給寫到文件里。

  1. dog: {xjjdog1: 'i am xjjdog1',xjjdog2: 'i am xjjdog++'} 

當(dāng)然,多個層次,可以在一行之中平鋪開。比如prefix是super.dog,那么yml文件就可以這么寫。

  1. super.dog: {xjjdog1: 'i am xjjdog1',xjjdog2: 'i am xjjdog++'} 

5. 列表支持

列表,就是list,我們可以使用數(shù)組接收,也可以使用List等。

它也有兩種寫法。這是最常見的一種。

  1. animal: 
  2.   - dog 
  3.   - cat 
  4.   - monkey 

當(dāng)然,也可以放在一行。

  1. animal: [dog,cat,monkey] 

這沒什么問題,關(guān)鍵是yml文件支持嵌套。比如List里嵌套Map,或者Map里嵌套List。當(dāng)嵌套層次比較深的時候,或者縮進沒什么規(guī)律的時候,就顯得非常的亂。

比如下面這個k8s的pod配置。

  1. apiVersion: v1 
  2. kind: Pod 
  3. metadata: 
  4.   name: xjjdog-Pod 
  5.   labels: 
  6.     app: front-web 
  7. spec: 
  8.   containers: 
  9.     - name: front-web 
  10.       image: nginx 
  11.       ports: 
  12.         - containerPort: 80 
  13.     - name: front-app 
  14.       image: xjjdog/frontapp 
  15.       ports: 
  16.         - containerPort: 14000 
  17.   storages: 
  18.   ... 

比較復(fù)雜的是spec,里面有containers、storages等配置。其中containers是一個列表,列表之間是一個map,map中其中的ports屬性,又是一個列表...如此嵌套,如果配置文件比較長的化,不熟悉業(yè)務(wù)屬性的同學(xué)就會容易暈菜。

6. 特殊數(shù)據(jù)

即使是這樣,yaml也比xml簡單的多。它也有很多特殊的寫法。

比如這個。

  1. str1: !!str 2021-06-03 

它的意思是,把2021-06-04,強制轉(zhuǎn)化成字符串。這樣的強制轉(zhuǎn)化有很多,但大多數(shù)時候你不會用。但如果你想要把你的yaml文件變得復(fù)雜,讓別人不敢動,那就可以這么做。

  1. !!int               # 整數(shù)類型 
  2. !!float             # 浮點類型 
  3. !!bool              # 布爾類型 
  4. !!str               # 字符串類型 
  5. !!binary            # 也是字符串類型 
  6. !!timestamp         # 日期時間類型 
  7. !!null              # 空值 
  8. !!set               # 集合 
  9. !!omap, !!pairs     # 鍵值列表或?qū)ο罅斜?nbsp;
  10. !!seq               # 序列,也是列表 
  11. !!map               # 鍵值表 

既然yml文件有這么多復(fù)雜的寫法,那么我們就可以去玩一把。比如下面的寫法。

  1. from: &d !!str 2021-06-04 
  2. str1: *d 

這個配置,和上面的配置,效果是一樣的,&的意思是標(biāo)記,我們給它起了個名字,叫做d;*的意思是引用,我們在需要它的地方引用一把就可以了。

yml中的key,竟然也可以用對象或者復(fù)雜的結(jié)構(gòu)作為key。為了標(biāo)識是一個特殊的key,我們還要做一點處理。

  1. ?[blue, reg, green]: Color 

上面這個配置的?,就是說,我下面要進行一個比較復(fù)雜的配置了,你準(zhǔn)備好了么?

7. End

學(xué)會了這些招數(shù)的你,是不是躍躍欲試了?想要在你的SpringBoot項目里搞一點有意思的東西?為了讓你的基礎(chǔ)架構(gòu)部門無法掃描出你的配置,為什么不呢?

這是我改造的一個普通datasource的配置文件。

  1. h2: &sa !!str sa 
  2. driver: &driver !!str org.h2.Driver 
  3. defaults: &defaults 
  4.   ?username: *sa 
  5.   ?password: 
  6.   ?driverClassName: *driver 
  7. spring: 
  8.   datasource: 
  9.     <<: *defaults 
  10.     ?url: !!str > 
  11.       jdbc:h2:mem:h2test; 
  12.       DB_CLOSE_DELAY=-1; 
  13.       DB_CLOSE_ON_EXIT=FALSE 

你覺得美么?我反正腿挺疼的。

 

責(zé)任編輯:趙寧寧 來源: 小姐姐味道
相關(guān)推薦

2021-06-04 20:13:06

Ymljavaerk8s

2014-12-22 09:54:52

代碼

2012-07-03 09:59:03

程序員

2024-10-29 09:25:00

2023-05-23 13:59:41

RustPython程序

2015-07-21 11:52:34

Swift分享按鈕源碼

2011-05-25 17:17:54

前端開發(fā)

2015-07-28 16:35:27

Swift猜拳

2014-11-11 14:52:28

程序員工程師

2013-06-13 14:05:51

關(guān)機程序

2011-05-26 09:39:53

程序

2020-08-20 08:39:54

CTO代碼數(shù)據(jù)

2025-07-29 01:20:00

失效InnoDB存儲

2019-07-10 08:56:58

代碼互聯(lián)網(wǎng)網(wǎng)絡(luò)

2014-02-28 13:46:35

Angular代碼

2011-03-07 09:41:10

JavaScript

2011-05-12 11:01:26

HTML

2020-03-12 07:42:49

代碼程序員

2023-02-15 08:17:20

VSCodeTypeScrip

2013-01-22 13:50:11

程序員前端Web
點贊
收藏

51CTO技術(shù)棧公眾號

欧美欧美午夜aⅴ在线观看| 精品一区在线| 成人嫩草影院| 夜夜揉揉日日人人青青一国产精品| 国产精品一区二区欧美| 成人公开免费视频| 国产精品99久久精品| 欧美成人免费网站| 欧美视频免费播放| 午夜在线激情影院| 久久夜色精品一区| 亚洲在线免费看| 伊人手机在线视频| 91精品99| 国产亚洲欧美另类中文| 久久人妻少妇嫩草av蜜桃| 欧美成人性网| 亚洲中国最大av网站| 色一情一乱一伦一区二区三区丨| www久久久久久| 免费久久99精品国产| 97在线视频免费看| 天堂网中文在线观看| 在线日韩网站| 欧美成人三级电影在线| 亚洲18在线看污www麻豆 | 一级特黄aaa| 婷婷久久一区| 中文字幕精品久久| www.色天使| 极品束缚调教一区二区网站| 欧美伦理视频网站| 欧美亚洲日本在线观看| 午夜影院在线播放| 亚洲成av人片| www.激情网| 精品51国产黑色丝袜高跟鞋| 中文字幕欧美国产| 欧美国产一区二区在线| 无码国产色欲xxxx视频| 国产成人在线色| 亚洲一区二区三区sesese| 中文区中文字幕免费看| 久久久777| 日韩美女写真福利在线观看| 欧美精品亚洲精品日韩精品| 亚洲国产99| 久久久女女女女999久久| 五月天婷婷亚洲| 欧美交换国产一区内射| 日本a级不卡| 伊人久久久久久久久久久久久 | 在线视频精品一区| 国产系列电影在线播放网址| 成人av网站在线| 国产精品日韩二区| 欧美少妇bbw| www.欧美亚洲| 久久综合中文色婷婷| 偷拍自拍在线| 久久久不卡影院| 日本不卡高清视频一区| 国产一二在线观看| 中文字幕国产一区二区| 亚洲电影一二三区| 麻豆免费在线视频| 国产精品国产精品国产专区不片| 五月天久久综合网| 在线毛片网站| 亚洲欧美日韩在线| 日韩成人三级视频| 日韩在线伦理| 在线中文字幕一区二区| 国产91色在线观看| 成人激情久久| 亚洲国产精品福利| 四虎永久免费在线观看| 日韩在线高清| 欧美第一淫aaasss性| 国产无遮挡又黄又爽| 久久精品麻豆| 国产在线拍偷自揄拍精品| 国产99对白在线播放| 成人黄色在线看| 欧美一级日本a级v片| 免费观看久久久久| 姬川优奈aav一区二区| 国产精品亚洲二区在线观看| 电影一区二区| 91精品国产一区二区三区香蕉| 性感美女一区二区三区| 国产精品一国产精品| 久热精品视频在线观看| 欧美一级视频免费观看| 麻豆国产欧美一区二区三区| 高清国产一区| 97超碰国产一区二区三区| 亚洲综合激情网| 男人插女人下面免费视频| 涩爱av色老久久精品偷偷鲁 | 欧美三级日韩三级国产三级| 中文字幕无人区二| 精品国产乱码久久久| 欧美日本啪啪无遮挡网站| 国产婷婷色一区二区在线观看| 美国一区二区三区在线播放| 国产伦精品一区二区三区四区视频 | 超碰91人人草人人干| 久久久久久久黄色片| 极品少妇xxxx精品少妇偷拍| 久久波多野结衣| 尤物在线网址| 欧美日韩一区二区欧美激情| www.超碰97| 欧美一区高清| 国产精品视频精品视频| 日韩一区二区三区中文字幕| 亚洲激情男女视频| 美女网站色免费| 免费久久精品| 97在线视频国产| 亚洲精品97久久中文字幕| 中文字幕一区二区不卡| 狠狠热免费视频| 亚洲图区在线| 777午夜精品福利在线观看| 99久久久国产精品无码免费| 国产精品美女一区二区| 青青在线视频观看| 久久成人福利| 久久久影视精品| 午夜美女福利视频| 亚洲精品中文在线观看| 中文字幕久久av| 日韩啪啪电影网| 国产成人精品免高潮费视频| 四虎在线免费看| 午夜国产精品一区| 中文字幕第3页| 最新亚洲视频| 国产一区福利视频| 丰满大乳少妇在线观看网站 | 色播色播色播色播色播在线| 亚洲电影在线播放| 人妻av一区二区| 亚洲人成免费| 久久人人97超碰人人澡爱香蕉| f2c人成在线观看免费视频| 精品国产123| 四虎成人精品永久免费av| 丰满亚洲少妇av| 日韩精品综合在线| 欧美重口另类| 日韩av手机在线观看| а天堂8中文最新版在线官网| 日本高清视频一区二区| 手机看片国产日韩| 国内国产精品久久| 日韩免费在线观看av| 国内精品偷拍| 欧美在线亚洲一区| jizz在线免费观看| 91精品国产色综合久久| 免费在线视频一区二区| 暴力调教一区二区三区| 成熟了的熟妇毛茸茸| 精品高清久久| 成人av在线网址| 欧美人体视频xxxxx| 亚洲第一中文字幕在线观看| 天堂在线免费观看视频| 国产色产综合色产在线视频| 污版视频在线观看| 欧美88av| 欧美日韩视频在线一区二区观看视频| 51一区二区三区| 蜜臀久久99精品久久久无需会员| 亚洲乱色熟女一区二区三区| 欧美香蕉大胸在线视频观看| 五月婷婷婷婷婷| 国产成人a级片| 日本精品久久久久中文字幕| 综合精品一区| 欧美另类高清视频在线| 成人在线视频www| 668精品在线视频| 无遮挡的视频在线观看| 日韩欧美在线影院| 丰满人妻老熟妇伦人精品| 中文字幕一区二区在线播放| 亚洲欧美高清在线| 另类小说一区二区三区| www.射射射| 爽成人777777婷婷| 精品国产一区二区三区四区精华| 性欧美freehd18| 国模精品视频一区二区| 日韩在线免费电影| 日韩精品免费电影| 精品国产av鲁一鲁一区| 色一情一乱一乱一91av| 麻豆一区二区三区精品视频| 国产免费成人在线视频| 手机在线成人av| 国产裸体歌舞团一区二区| 超碰网在线观看| 影音先锋亚洲一区| 成年人三级视频| 欧洲杯半决赛直播| 精品国产一区二区三区四区vr| 高清一区二区| 国产精品香蕉国产| 午夜av不卡| 久久久久久有精品国产| 看女生喷水的网站在线观看| 日韩成人av在线| 丰满肉肉bbwwbbww| 日韩一区二区三区四区| 中国女人一级一次看片| 日韩欧美一区二区三区| 成人免费看片98| 一区二区三区中文字幕精品精品| 少妇视频在线播放| 久久青草国产手机看片福利盒子| 国产伦精品一区二区三区88av| 韩国毛片一区二区三区| 我要看一级黄色大片| 久久精品道一区二区三区| 中国丰满人妻videoshd| 18成人免费观看视频| www成人免费| 在线一区免费| 青青草影院在线观看| 日韩啪啪电影网| 一区二区三区精品国产| heyzo久久| 手机成人在线| 成人中文视频| 亚洲欧洲一区二区| 日韩久久电影| 亚洲天堂电影网| 色中色综合网| 日本成人性视频| 一级毛片免费高清中文字幕久久网| 一区二区三区偷拍| 99久久婷婷这里只有精品| 在线视频不卡国产| 国产精品久久久久9999赢消| 国产麻豆电影在线观看| 中文字幕一区二区三区乱码图片| 日本xxxxx18| 欧美日本一区二区高清播放视频| 小泽玛利亚av在线| 激情视频一区二区三区| 国产在线播放观看| 欧美亚洲网站| 牛夜精品久久久久久久| 久久精品国产成人一区二区三区| 久久久久久久久久久久久久久国产| 国产在线日韩欧美| 99免费观看视频| 99久久精品国产观看| 日韩乱码人妻无码中文字幕久久| 国产三级精品视频| 操她视频在线观看| 亚洲一区二区三区小说| 天天干天天干天天| 欧美日韩一区二区三区在线看| 国产三级午夜理伦三级| 亚洲国产成人久久| 国产午夜精品一区理论片| 中文字幕亚洲精品| 伊人影院蕉久影院在线播放| 7777kkkk成人观看| 高清亚洲高清| 成人羞羞视频免费| 曰本一区二区三区视频| 四虎永久免费网站| 国产亚洲激情| 亚洲xxx在线观看| 成人性色生活片免费看爆迷你毛片| 国产艳俗歌舞表演hd| 国产精品视频一二三区| 久久黄色免费视频| 欧美这里有精品| xxxx国产精品| 国产一区二区三区丝袜| 青青草原av在线| 国产精品国产三级国产专播精品人| av一级久久| 欧美日韩一区二区三| 女人天堂亚洲aⅴ在线观看| 一区二区传媒有限公司| 久久成人免费网| 美国黄色一级毛片| 一区二区三区波多野结衣在线观看| 51国产偷自视频区视频| 制服丝袜亚洲网站| 国产在线超碰| 97国产成人精品视频| 日韩一区中文| 欧美日韩在线播放一区二区| 女人色偷偷aa久久天堂| 777视频在线| 91玉足脚交白嫩脚丫在线播放| 26uuu成人网| 欧美在线看片a免费观看| 欧美一级特黄aaaaaa| 精品国产拍在线观看| 成人激情综合| 久久99精品久久久久久久久久| 亚洲国产日韩欧美在线| 欧美在线观看视频网站| 99久久综合狠狠综合久久| 人妻少妇精品一区二区三区| 欧美视频一区二| 久久手机免费观看| 777精品视频| 老牛精品亚洲成av人片| www.欧美黄色| 国产一区二区影院| 精品伦精品一区二区三区视频密桃 | 国产成a人亚洲精品| 亚洲一级二级片| 在线观看视频91| 国产专区在线播放| 91精品国产91久久久久久久久| 亚洲午夜精品| 国产日韩欧美大片| 狠狠v欧美v日韩v亚洲ⅴ| 精品一区二区6| 色狠狠桃花综合| 黄色片视频在线观看| 26uuu国产精品视频| 免费日韩一区二区三区| 国产精品12345| www.日韩大片| 免费观看成人毛片| 精品亚洲国产视频| 美女网站在线看| 久久伊人一区二区| 亚洲免费影院| 亚洲av综合一区二区| 欧美午夜片在线免费观看| 三区在线观看| 日韩美女视频在线观看| 精品视频亚洲| 一起操在线视频| 最新高清无码专区| 国产人妖一区二区| 久久成人在线视频| 一区中文字幕电影| 青青青免费在线| 91蜜桃免费观看视频| 中文字幕第15页| 亚洲天堂视频在线观看| www.一区| 日本黄网站色大片免费观看| 国产成人在线免费观看| 国产午夜视频在线| 精品视频在线观看日韩| 电影亚洲精品噜噜在线观看| 一区二区日本| 成人午夜激情在线| 久久久久久久久久久影院| 国产亚洲精品美女久久久久| 四虎在线精品| 蜜臀av色欲a片无码精品一区| 99r国产精品| 激情网站在线观看| 久久久国产成人精品| 亚洲网一区二区三区| 那种视频在线观看| 亚洲欧美影音先锋| 蜜臀av午夜精品| 国产精品一区二区久久国产| 欧美在线网站| 右手影院亚洲欧美| 欧美精品在线一区二区| av免费在线视| 香蕉久久免费影视| 成人短视频下载| 国语对白做受69按摩| 久久影院资源网| 色狼人综合干| 999在线精品视频| 欧美视频一区二区三区…| 免费在线观看av片| 国内一区二区三区在线视频| 蜜桃视频第一区免费观看| 国产一级中文字幕| 这里只有精品在线播放| 国产精品18hdxxxⅹ在线| 视色视频在线观看| 亚洲电影第三页| 黄网址在线观看| 欧美一卡2卡3卡4卡无卡免费观看水多多| 国产一区二区三区四| 69亚洲精品久久久蜜桃小说| 欧美国产日本在线|