精品欧美一区二区三区在线观看 _久久久久国色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ù)棧公眾號

国精产品一区二区三区有限公司| 99热这里只有精品在线| 亚洲女娇小黑人粗硬| 欧美在线你懂的| 99热这里只有精品免费| 毛片在线播放网址| 国产成人一区在线| 国产精品第3页| 国产一级做a爰片在线看免费| 国产欧美日韩精品高清二区综合区| 91精品国产综合久久精品| 国产97在线 | 亚洲| 日本在线视频网| 91免费在线视频观看| 成人免费网站在线看| av网站中文字幕| 亚洲一区色图| 伊人久久久久久久久久| 欧美xxxxx精品| 中文字幕综合| 91久久国产最好的精华液| 成人午夜免费在线视频| 最新97超碰在线| 91欧美一区二区| 成人精品水蜜桃| 伊人久久成人网| 亚洲男女自偷自拍| 欧美激情精品久久久久久免费印度 | 老女人性淫交视频| 日韩欧美一区二区三区免费看| 日韩精品免费在线视频观看| 亚洲av无码成人精品区| 亚洲欧洲专区| 欧美三级蜜桃2在线观看| 91免费视频网站在线观看| 麻豆av在线免费观看| 懂色av中文字幕| 激情久久中文字幕| 欧美另类暴力丝袜| 国产稀缺精品盗摄盗拍| 欧美一区二区三区激情视频| 精品一区二区三区四区在线| 亚洲 欧美 日韩在线| 91精品国产自产在线丝袜啪| 91精品国产91热久久久做人人| 欧美伦理片在线观看| 播放一区二区| 在线亚洲一区二区| 日韩欧美黄色大片| 秋霞国产精品| 欧美日韩一区国产| 特黄视频免费观看| 57pao成人永久免费| 欧美精品久久久久久久久老牛影院| 亚洲黄色a v| 日本h片久久| 欧美日本一区二区三区四区| 性生活免费在线观看| 欧美天堂一区| 91精品久久久久久久99蜜桃| 自拍一级黄色片| 亚洲精品一区二区三区中文字幕 | 国产精品久久久久久| 久久网福利资源网站| 四虎免费在线视频| 亚洲精华国产欧美| 日韩美女免费线视频| av手机天堂网| 国产一区在线观看麻豆| 国产精品久久久久久久久久直播 | 成人免费播放视频| 亚洲视频一起| 日韩精品欧美国产精品忘忧草| 久久美女免费视频| 久久久久久久久久久9不雅视频| 久久夜色精品国产亚洲aⅴ| 久久久久香蕉视频| 久久av在线| 成人女保姆的销魂服务| 亚洲奶汁xxxx哺乳期| 久久久99久久精品欧美| 一区二区三区我不卡| 日本三级在线观看网站| 色哟哟精品一区| 免费在线观看污网站| 超碰97久久国产精品牛牛| 亚洲毛片在线看| 中文字幕美女视频| 夜夜精品视频| 国产欧美亚洲精品| 日本波多野结衣在线| 欧美激情一区不卡| 欧美无砖专区免费| av成人亚洲| 亚洲成人久久网| а天堂中文在线资源| 亚洲高清电影| 91久久精品久久国产性色也91| 天堂国产一区二区三区| 中文字幕一区av| 亚洲午夜精品久久久久久人妖| 久久免费影院| 精品一区二区三区三区| 久久艹精品视频| 免费在线欧美视频| 久久爱av电影| 性xxxfreexxxx性欧美| 欧美午夜在线观看| 国产a级黄色片| 91精品一区二区三区综合在线爱| 欧美亚洲国产另类| 成人黄色免费视频| 国产精品毛片高清在线完整版| 黄色一级视频片| 粉嫩一区二区三区在线观看| 一区二区三区天堂av | 在线一区二区三区四区| 中文成人无字幕乱码精品区| 一区二区日韩欧美| 国产欧美一区二区白浆黑人| 你懂的视频在线免费| 婷婷久久综合九色国产成人 | 美女福利精品视频| 中文字幕一区二区三区人妻四季| 91麻豆蜜桃一区二区三区| 国产xxxx振车| 狂野欧美xxxx韩国少妇| 精品国产一区二区三区在线观看| 欧美日韩综合一区二区三区| 成人黄色av电影| 天堂8在线天堂资源bt| 精品一区91| 大量国产精品视频| 国产又粗又猛又爽又黄的视频一| 亚洲国产精品成人久久综合一区| 欧美色图色综合| 色婷婷久久久| 国产91成人video| 香蕉视频黄色片| 欧美日韩亚洲一区二区| 三级男人添奶爽爽爽视频| 伊人成年综合电影网| 97久久夜色精品国产九色| www在线视频| 日韩欧美在线网站| 91精品国产高清一区二区三蜜臀| 韩国欧美国产一区| 二级片在线观看| 免费精品一区| 欧美激情xxxx性bbbb| 好吊色视频一区二区| 亚洲电影激情视频网站| 中文乱码人妻一区二区三区视频| 中文亚洲免费| 欧美自拍资源在线| 欧美成人一二区| 久久精品国产成人| 性猛交xxxx乱大交孕妇印度| 亚洲国产cao| 中国美女乱淫免费看视频| 日韩中文字幕91| 亚洲欧洲国产日韩精品| 精品国产亚洲一区二区在线观看 | 日韩精品一区国产| 高清欧美一区二区三区| 四虎影视精品成人| 欧美在线观看18| 天天操天天操天天操天天操天天操| 国产精品18久久久久久vr| 男女私大尺度视频| 九九亚洲精品| 国产综合久久久久| 国产探花视频在线观看| 亚洲美女福利视频网站| 在线免费看毛片| 亚洲成a天堂v人片| 在线观看日本中文字幕| 国产乱码精品1区2区3区| 成年人网站免费视频| 成人羞羞网站| 翡翠波斯猫1977年美国| 四虎4545www精品视频| 精品中文字幕视频| 日韩精品视频在线观看一区二区三区| 欧美亚洲综合另类| 精品在线视频免费观看| 国产清纯白嫩初高生在线观看91 | 91在线porny国产在线看| 黄色av免费在线播放| 国产综合色产| 亚洲欧洲精品一区| 亚洲国产合集| 国产成人看片| 国产69精品久久| 91成人精品网站| 岛国中文字幕在线| 亚洲欧美在线磁力| 亚洲第一第二区| 欧美性猛交一区二区三区精品| 国产亚洲精品码| 国产精品久久久久久久久图文区 | 九九亚洲视频| 国产乱码精品一区二区三区中文| 欧美日韩国产网站| 992tv成人免费影院| av在线影院| 中文字幕日韩av电影| 日本在线视频1区| 日韩精品一区国产麻豆| 91av久久久| 91国模大尺度私拍在线视频| 国产精品a成v人在线播放| 国产精品私房写真福利视频| 免费在线观看成年人视频| 国产成人高清视频| 手机在线国产视频| 蜜臀久久久99精品久久久久久| 日日橹狠狠爱欧美超碰| 国产精品av一区二区| 在线免费观看成人网| 日韩片在线观看| 国产99一区视频免费| 日本久久久久久久久久久久| 羞羞答答国产精品www一本| 国产91在线亚洲| 2023国产精品久久久精品双| 亚洲欧美日产图| 精品久久中文| 免费亚洲一区二区| 久久影视三级福利片| 国产精品亚洲综合| 欧美国产中文高清| 亚洲伊人第一页| 亚洲国产伊人| 国产日韩在线免费| 色成人综合网| 成人乱色短篇合集| 亚洲精品伊人| 91精品啪在线观看麻豆免费| 欧洲亚洲精品久久久久| 国产女人18毛片水18精品| 91伊人久久| 国产精品亚洲视频在线观看| 激情中国色综合| 国产一区二中文字幕在线看| 青青青国产精品| 成人av色在线观看| 在线免费观看亚洲| aa成人免费视频| 精品国产影院| 欧美激情第六页| 国产一区二区三区四区五区传媒| 欧美亚洲另类在线一区二区三区| 久9久9色综合| 亚洲精品永久www嫩草| 国产韩日影视精品| 黄色片免费在线观看视频| 亚洲久久一区| 免费在线观看的毛片| 蜜桃av一区二区在线观看| 亚洲免费成人在线视频| 国产成人福利片| 国产精品第七页| 国产欧美一区二区精品仙草咪| 三年中国中文观看免费播放| 成人免费视频在线观看| 国产在线视频第一页| 欧美性生活大片免费观看网址| 国产美女www爽爽爽| 91麻豆精品国产自产在线| 黄色一级大片在线免费看国产一| 日韩精品免费在线视频| 免费a级毛片在线播放| 欧美夫妻性生活xx| 性欧美hd调教| 91|九色|视频| 亚洲人成精品久久久| 亚洲一区二区四区| 精品av久久久久电影| 91看片就是不一样| 国产精品一区三区| 久久久久无码精品国产sm果冻| 亚洲欧美日韩国产一区二区三区| 日韩少妇裸体做爰视频| 在线观看国产精品网站| 精品毛片在线观看| 亚洲一区二区精品| 美女精品导航| 国产精品一区二区三区免费视频 | 日韩国产精品一区二区| 亚洲精品97| 成人在线免费播放视频| 国产福利视频一区二区三区| 一级片视频免费看| 午夜日韩在线电影| av网站在线观看免费| 国产亚洲福利一区| 19禁羞羞电影院在线观看| 国产精品一二区| 偷拍精品福利视频导航| 黑人巨大国产9丨视频| 久久亚洲精选| 337p日本欧洲亚洲大胆张筱雨| 亚洲国产高清在线观看视频| 精品肉丝脚一区二区三区| 欧美日韩精品一区二区三区蜜桃| 少妇高潮一区二区三区99小说| 北条麻妃99精品青青久久| 丝袜老师在线| 成人片在线免费看| 亚洲激情中文在线| 乌克兰美女av| 久久精品日产第一区二区三区高清版 | 国产又大又黄又猛| 久久久亚洲高清| 国产 日韩 欧美 在线| 精品国产1区二区| 伊人影院蕉久影院在线播放| 国产人妖伪娘一区91| 国产精品一线天粉嫩av| 欧美v在线观看| av中文字幕亚洲| 国产一级中文字幕| 欧美不卡123| 日本aa在线| 99热在线播放| 欧美精选在线| 久草福利在线观看| 亚洲精品菠萝久久久久久久| 91久久精品国产91性色69| 中文字幕久热精品视频在线| 69堂精品视频在线播放| 欧洲精品久久| 日韩二区三区在线观看| 337人体粉嫩噜噜噜| 欧洲激情一区二区| 国产中文字幕在线观看| 国产成人亚洲精品| 国产精选一区| www.涩涩涩| 国产精品无人区| 亚洲中文字幕在线观看| xxav国产精品美女主播| 99久久99九九99九九九| 国产911在线观看| 国产精品亚洲午夜一区二区三区 | 在线免费观看成人短视频| 精品电影在线| 国产精品久久久久久av| 久久大综合网| 极品人妻一区二区| 91蜜桃在线观看| 亚洲欧美自拍另类日韩| 中文字幕成人网| 在线免费观看日韩视频| 久久精品国产久精国产一老狼| 伊人久久一区| 台湾无码一区二区| 成人午夜大片免费观看| av中文在线播放| 亚洲视频电影图片偷拍一区| 韩日精品一区| 中国 免费 av| 成人午夜视频在线观看| 日本中文字幕在线| 色诱女教师一区二区三区| 国产日韩一区二区三免费高清 | 欧美日韩中文| 熟妇高潮一区二区| 在线观看成人免费视频| www免费视频观看在线| 国产欧美综合精品一区二区| 水蜜桃久久夜色精品一区的特点| 91精品少妇一区二区三区蜜桃臀| 欧美大片一区二区| 户外露出一区二区三区| 少妇高潮大叫好爽喷水| 99精品视频在线播放观看| 日本三级一区二区三区| 欧美日本在线视频中文字字幕| 欧美黄色录像| 538任你躁在线精品免费| 亚洲资源中文字幕| 免费在线一级视频| 亚洲a级在线观看| 亚洲影院一区| 91精品国产闺蜜国产在线闺蜜| 日韩av综合中文字幕| 国产一区高清| 日本韩国欧美在线观看| 国产精品久久久久久久久久免费看 | 日韩视频在线播放| 成人丝袜18视频在线观看| 国产精品传媒在线观看| 久久久影视精品| 天天做天天爱天天综合网2021 | 国产亚洲欧美日韩在线观看一区二区 | 希岛爱理一区二区三区av高清| 成人毛片100部免费看| 国产欧美日韩中文久久|