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

聊聊我寫Yml的親身感受

開發 后端
我非常羞恥的發現,配置文件界,已經被下面三種所統治:yaml,toml和json,這讓一直使用properties文件的javaer深深的埋下了頭。

 [[403804]]

本文轉載自微信公眾號「小姐姐味道」,作者小姐姐養的狗。轉載本文請聯系小姐姐味道公眾號。

我非常羞恥的發現,配置文件界,已經被下面三種所統治:yaml,toml和json,這讓一直使用properties文件的javaer深深的埋下了頭。

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

像各種人工智能調參數,k8s調參師,都已經成功升級為yml配置大師。作為一個常年使用yml文件的SpringBoot框架使用者,有時候對yml的表現形式竟然顯露出了困惑,這不由得讓人羞愧又加了一層。

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

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

要命的是,空格的多少,并不重要,只要相同級別元素左側能夠對齊就行。這對于CV黨來說,不得不說是一個噩夢哈哈。

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

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

  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 

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

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

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

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

2. 數字

當我們的接收者,是一個數字的時候,比如下面這個。

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

那么,你即使把配置文件寫成了字符串,它也會強制轉成數字。

  1. a: "014" 

此時,a的數值,就會被設置成整數14。

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

  1. a: 014 

此時,a的數值,竟然變成了12!

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

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

  1. float: 1.23e+3     # 浮點數 
  2. fixed: 13.67       # 固定小數 
  3. minmin: -.inf      # 表示負無窮 
  4. notNumber: .NaN    # 無效數字 
  5.  
  6. boolean: [truefalse] # 布爾值 
  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文件根本就沒規定key不允許有特殊字符,它允許你這么做。

4. 對象

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

假設有如下的代碼,我們需要構造dog中的數據。

  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數據直接給寫到文件里。

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

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

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

5. 列表支持

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

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

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

當然,也可以放在一行。

  1. animal: [dog,cat,monkey] 

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

比如下面這個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.   ... 

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

6. 特殊數據

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

比如這個。

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

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

  1. !!int               # 整數類型 
  2. !!float             # 浮點類型 
  3. !!bool              # 布爾類型 
  4. !!str               # 字符串類型 
  5. !!binary            # 也是字符串類型 
  6. !!timestamp         # 日期時間類型 
  7. !!null              # 空值 
  8. !!set               # 集合 
  9. !!omap, !!pairs     # 鍵值列表或對象列表 
  10. !!seq               # 序列,也是列表 
  11. !!map               # 鍵值表 

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

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

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

yml中的key,竟然也可以用對象或者復雜的結構作為key。為了標識是一個特殊的key,我們還要做一點處理。

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

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

7. End

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

這是我改造的一個普通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 

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

作者簡介:小姐姐味道 (xjjdog),一個不允許程序員走彎路的公眾號。聚焦基礎架構和Linux。十年架構,日百億流量,與你探討高并發世界,給你不一樣的味道。我的個人微信xjjdog0,歡迎添加好友,進一步交流。

 

責任編輯:武曉燕 來源: 小姐姐味道
相關推薦

2011-04-26 17:37:29

打印機用戶體驗

2021-06-07 10:00:56

yml文件開發

2014-06-27 18:22:19

2025-09-17 18:10:51

2021-02-22 09:30:09

go開發環境桌面系統

2016-05-03 17:33:02

面試離職

2023-02-07 09:37:08

流計算

2021-03-28 20:58:25

Go語言線程

2021-07-02 07:06:20

調試代碼crash

2024-01-22 10:18:32

平臺工程開發人員技術

2020-03-13 09:38:45

離職創業感受

2014-05-26 15:20:13

產品細節工匠情懷

2023-03-29 08:31:28

寫代碼微服務遠程

2020-03-20 09:49:59

需求編程常態

2023-04-11 08:02:26

單測技術JUnit框架

2021-06-16 07:56:48

C++新特性類型

2022-09-22 09:54:56

技術選型

2011-04-27 13:25:56

佳能傳真機用戶體驗

2020-10-10 09:09:21

CTOCRUD設計

2021-03-26 06:27:08

操作系統應用軟件瀏覽器
點贊
收藏

51CTO技術棧公眾號

97在线视频免费看| 日韩欧美国产三级| 亚洲精品美女久久7777777| 在线观看黄色国产| 91综合网人人| 日韩精品一区二区三区在线| 玩弄中年熟妇正在播放| 高清日韩av电影| 国产综合色精品一区二区三区| 久久成人国产精品| 国产精品久久无码| 国产极品一区| 亚洲国产精品久久人人爱 | 亚洲视频一区在线播放| 国产真实久久| 中文字幕国产亚洲2019| 精品一区二区三区四区五区六区| 亚洲国产尤物| 亚洲成人一区二区| 一区二区三区我不卡| 136福利精品导航| 国产不卡一区视频| 日韩av快播网址| 无码人妻精品一区二区三区夜夜嗨 | 中文字幕第一区第二区| 91在线无精精品一区二区| www.日本精品| 中文在线日韩| 中文字幕日韩精品有码视频| 成人手机在线免费视频| 国产精久久一区二区| 色婷婷精品久久二区二区蜜臂av| 日韩一二区视频| 91免费在线| 久久精品视频在线免费观看| 国产一区二区高清不卡 | 欧美不卡在线视频| 手机版av在线| 粉嫩91精品久久久久久久99蜜桃| 精品国产乱码久久久久久天美 | 欧美一级片免费看| 亚洲天堂网一区| 亚洲综合在线电影| 色综合久久久久综合| 欧美成人高潮一二区在线看| 女人黄色免费在线观看| 亚洲免费视频成人| 日韩理论片在线观看| 男人的天堂在线| 久久这里只有精品首页| 久久精品丝袜高跟鞋| 日本成人动漫在线观看| 粉嫩绯色av一区二区在线观看| 51国偷自产一区二区三区| 99re只有精品| 国产成人av影院| 99精品国产高清一区二区| 国产又粗又黄视频| 国产剧情一区二区三区| 91偷拍精品一区二区三区| 精品国精品国产自在久不卡| 国产一区二区在线视频| 5566av亚洲| 成人免费视频国产免费麻豆| 成人激情小说网站| 精品久久久久久乱码天堂| 五月婷婷激情在线| 久久亚洲综合色一区二区三区| 欧美凹凸一区二区三区视频| 国产综合在线观看| 国产精品美女久久久久久久| 在线观看精品视频| 伊人福利在线| 黄网动漫久久久| 青青在线视频观看| 成人影院在线免费观看| 91 com成人网| 波多野结衣办公室双飞| 日韩在线黄色| 中文字幕av一区中文字幕天堂| 中文乱码字幕高清一区二区| 午夜精品久久| **欧美日韩vr在线| 中文字幕人妻一区二区三区视频| 久久成人免费网站| 99视频网站| 日韩av高清在线| 国产精品久久久久久久久免费丝袜| 中文字幕免费高| av免费不卡| 欧美在线影院一区二区| 97人人模人人爽人人澡| 欧美电影在线观看完整版| 国产亚洲精品久久久| 永久看片925tv| 免费中文字幕日韩欧美| 91亚洲精品一区| 天天操天天操天天操| 久久美女高清视频 | 99国产精品久久久久久久 | 青青草成人免费在线视频| 国产亚洲一区二区手机在线观看 | 国产精品v亚洲精品v日韩精品| 欧美一级成年大片在线观看 | 亚洲大胆人体在线| 久久久久久久久福利| 欧美午夜影院| 国产精品亚洲自拍| 五月婷婷六月丁香| 亚洲色欲色欲www| 国产精品人人妻人人爽人人牛| 免费观看亚洲天堂| 中文字幕日本欧美| aaa人片在线| 国产成人精品亚洲777人妖| 亚洲成人午夜在线| 美女网站在线看| 日韩精品一区二区三区视频播放 | 欧美残忍xxxx极端| 国产69久久精品成人| 99免费在线视频| 国产欧美一区二区三区在线看蜜臀 | 欧美国产日本| 成人网址在线观看| 超碰免费在线| 日本久久电影网| 久久国产精品无码一级毛片| 狠狠入ady亚洲精品经典电影| 国产精品丝袜白浆摸在线| 亚洲欧洲成人在线| 亚洲一区精品在线| 在线观看视频在线观看| 日韩欧美网址| 国产精品久久久久av| 日韩国产福利| 色综合久久久久综合| 中文人妻一区二区三区| 亚洲高清激情| 国产伦一区二区三区色一情| 性网站在线观看| 91精品国产91久久综合桃花| 国产三级aaa| 麻豆精品一区二区av白丝在线| 日韩国产一区久久| 无人区在线高清完整免费版 一区二 | 日本精品在线视频| 欧美日韩国产中文字幕在线| 福利一区福利二区微拍刺激| 亚洲精品女人久久久| 99精品国产在热久久婷婷| 国产伦精品一区二区三区四区视频 | 91精品国产九九九久久久亚洲| 亚洲成人一级片| 亚洲午夜电影在线观看| 精品久久久久一区二区| 亚洲激精日韩激精欧美精品| 极品校花啪啪激情久久| 小h片在线观看| 亚洲午夜av久久乱码| 中国女人一级一次看片| 中文字幕一区二区三| 成年人网站av| 影音先锋久久精品| 免费亚洲一区二区| 福利一区视频| 久久黄色av网站| 亚洲av无码乱码在线观看性色| 亚洲国产精品嫩草影院| 毛片网站免费观看| 日韩av午夜在线观看| 亚洲综合激情五月| 国产精品zjzjzj在线观看| 欧洲成人午夜免费大片| 成人亚洲综合天堂| 91精品欧美久久久久久动漫| 黄色小视频在线免费看| 久久久三级国产网站| 无尽裸体动漫2d在线观看| 欧美日韩一视频区二区| 久久爱av电影| 激情亚洲小说| 久久久欧美精品| 国产一区精品| 欧美一区二区在线看| 国产精品第九页| 国产欧美一二三区| 久久黄色一级视频| 久久xxxx精品视频| 国产一二三四区在线观看| 鲁大师精品99久久久| 国产精品一区二区久久国产| 五月婷婷视频在线观看| 亚洲精品小视频在线观看| 91亚洲视频在线观看| 激情亚洲一区二区三区四区| 开心激情五月网| 99精品一区二区| 免费网站在线观看黄| 国产一区二区精品| 99re99热| 国产传媒欧美日韩成人精品大片| 91精品综合视频| 成人午夜视屏| 久久久久久久999| 中国日本在线视频中文字幕| 亚洲国产成人av在线| 一级全黄裸体免费视频| 午夜在线成人av| 婷婷伊人五月天| 久久五月婷婷丁香社区| 国产伦精品一区二区三区妓女下载| 久久精品二区三区| 国产精品第157页| 999视频精品| 免费精品视频一区| av一级亚洲| 91视频国产高清| 亚洲成av在线| 欧美影院在线播放| 黑人极品ⅴideos精品欧美棵| 日韩在线免费高清视频| 黄网在线观看| 日韩成人在线观看| 成人午夜免费在线观看| 91.com视频| 国产又粗又黄又爽| 欧美午夜寂寞影院| 日韩在线 中文字幕| 亚洲成人中文在线| 激情综合五月网| 日韩毛片高清在线播放| 日本欧美一区二区三区不卡视频| 99re热这里只有精品免费视频 | 中文字幕av第一页| 欧美色xxxx| 丰满少妇乱子伦精品看片| 亚洲国产日韩在线一区模特| 538精品在线观看| 日韩毛片精品高清免费| 亚洲不卡在线播放| 一区在线观看免费| 久久成人小视频| 国产精品乱人伦中文| 精品熟妇无码av免费久久| 久久精品视频免费观看| 精品人妻一区二区三区视频| 久久在线免费观看| 实拍女处破www免费看| 久久一区二区三区四区| 精品久久久久久中文字幕人妻最新| 91丝袜呻吟高潮美腿白嫩在线观看| 午夜视频在线观看国产| 99精品1区2区| 亚洲人人夜夜澡人人爽| 久久久久青草大香线综合精品| 久操视频免费看| 中文字幕乱码亚洲精品一区| 蜜桃视频最新网址| 亚洲另类在线制服丝袜| 精品少妇久久久久久888优播| 亚洲国产精品麻豆| 老熟妇仑乱一区二区av| 91高清在线观看| 中文字幕精品无码亚| 这里只有精品免费| 欧美一区二不卡视频| 国产视频精品在线| av电影在线播放高清免费观看| 日韩午夜在线视频| 日本动漫同人动漫在线观看| 91国内揄拍国内精品对白| 亚洲黄色网址| 国产欧美日韩视频| 99香蕉久久| 欧美婷婷久久| 97视频热人人精品免费| 91大学生片黄在线观看| 日韩一区二区免费看| www.日本xxxx| 国产成人在线看| 中文字幕5566| 国产精品国产三级国产有无不卡| 午夜69成人做爰视频| 欧美视频在线观看免费| 国产又粗又猛又爽又黄的| 欧美videossexotv100| 日韩av成人| 久久精品男人天堂| 妞干网免费在线视频| 国产日产久久高清欧美一区| www国产精品| 亚洲欧洲一二三| 亚洲毛片在线| 777一区二区| 91欧美激情一区二区三区成人| 网爆门在线观看| 亚洲大片在线观看| 一卡二卡在线观看| 国产婷婷97碰碰久久人人蜜臀 | jizz大全欧美jizzcom| 成人综合激情网| 欧美性猛交xxxx乱大交少妇| 天天爽夜夜爽夜夜爽精品视频 | 日韩av网址在线| 国产写真视频在线观看| 欧美在线激情网| 亚洲国产精品免费视频| 日韩欧美视频一区二区| 亚洲免费观看| 小早川怜子一区二区三区| 久久久精品综合| 久久亚洲av午夜福利精品一区| 欧美色精品在线视频| 亚洲aⅴ乱码精品成人区| 久久久精品网站| 国产精品久久亚洲不卡| 另类小说综合网| 91久久黄色| 日韩精品xxx| 亚洲视频一区在线| 日本丰满少妇做爰爽爽| 亚洲免费成人av电影| 不卡的av影片| 97人人香蕉| 亚洲国产精品成人| 日日噜噜夜夜狠狠| 久久精品欧美日韩精品 | 欧美揉bbbbb揉bbbbb| 色鬼7777久久| 97福利一区二区| 成功精品影院| 日韩小视频网站| 国产精品一区专区| 极品久久久久久| 91精品国产麻豆国产自产在线 | 亚洲天堂福利av| 在线视频播放大全| 色午夜这里只有精品| 日本黄色一区| 亚洲欧洲精品一区二区| 蜜臀精品一区二区三区在线观看| 国产一二三四五区| 日韩欧美在线网址| 九色在线观看| 日韩美女在线看| 精品国产精品| 亚洲这里只有精品| 国产精品国产三级国产普通话蜜臀| 成年人视频免费| 一区二区三区动漫| 激情亚洲小说| 黄黄视频在线观看| 成人深夜视频在线观看| 国产午夜激情视频| 日韩av在线免费| 另类图片综合电影| 亚洲欧洲日夜超级视频| 国产美女精品一区二区三区| 欧美色图亚洲视频| 精品999在线播放| 在线天堂资源| 午夜一区二区三区| 激情欧美一区二区三区在线观看| 欧美一区二区三区爽爽爽| 精品91自产拍在线观看一区| 在线观看涩涩| 亚洲欧洲精品一区| 国产东北露脸精品视频| 中文字幕在线观看免费视频| 国产婷婷成人久久av免费高清| 日本少妇一区| ijzzijzzij亚洲大全| 波多野洁衣一区| 波多野结衣视频在线看| 久久久国产成人精品| 欧美日韩一本| 日本久久久久久久久久久久| 亚洲乱码日产精品bd| 亚洲欧洲国产综合| 国产美女扒开尿口久久久| 国内综合精品午夜久久资源| 中国毛片在线观看| 91精选在线观看| 亚洲一级少妇| 穿情趣内衣被c到高潮视频| 99re热这里只有精品免费视频| 在线播放一级片| 国内精品久久久| 久久一区二区三区喷水| 日本wwwwwww| 在线亚洲高清视频| 蜜臀av国内免费精品久久久夜夜| 欧美日本韩国在线| 国产一区二区三区国产| 久久久久久少妇| 久久中文字幕在线| 免费看日本一区二区| 国产精品欧美性爱| 欧美综合色免费| 黄视频网站在线观看|