2025年yml文件(yml文件怎么读)

yml文件(yml文件怎么读)p class f center img src http dingyue ws 126 net 2021 0604 473b48f7g00q gif br br p p lt p

大家好,我是讯享网,很高兴认识大家。




讯享网

 <p class="f_center">  <img src="http://dingyue.ws.126.net/2021/0604/473b48f7g00qu6dfh006ld200a5004ug00i9008p.gif"/><br/><br/></p><p><blockquote>原创:小姐姐味道(微信公众号ID:xjjdog),欢迎分享,转载请保留出处。</blockquote></p><p>  我非常羞耻的发现,配置文件界,已经被下面三种所统治:,和,这让一直使用properties文件的javaer深深的埋下了头。</p><p>  不要担心,当你读到文章最后,你也会羞愧的埋下头。也可能会有一丝愤怒。</p><p>  像各种人工智能调参数,k8s调参师,都已经成功升级为yml配置大师。作为一个常年使用yml文件的SpringBoot框架使用者,有时候对yml的表现形式竟然显露出了困惑,这不由得让人羞愧又加了一层。</p><p>  YAML,竟然是XML的一个子集,所以它的复杂是有源头的,最早诞生于2009年。</p><p>  使用yml文件,首先遇到的问题,就是它的缩进问题。就如同python语言一样,yml文件的表现层次,是靠嵌套的缩进来完成的。它并不使用TAB,而是使用空格表示缩进。</p><p>  要命的是,空格的多少,并不重要,只要相同级别元素左侧能够对齐就行。这对于CV党来说,不得不说是一个噩梦哈哈。</p><p>  那一个配置文件,要解决哪些问题呢?Redis已经做出了回答。就像你学习一门新的语言一样,解决了它的字符串和集合的表示方法,基本上写代码就没问题了。那我们就挨个来看一下。</p><p>  以下方法以SpringBoot的yml文件格式为准,其他场景的解析器会有些许差异。为了能够debug这些值,我们简单的写了一个测试类,然后再设值完成之后打印一下就可以了。</p><p>  1. 字符串</p><p>  字符串是最简单的配置,也是最常见的配置。再spring中,字符串可以带引号,也可以不带引号。所以下面三行的配置效果,是一样的。</p><p>  </p><p>  那么,如何支持多行文本呢?毕竟有些需求,就是这么作死。写法如下:</p><p>  </p><p>  注意,后面不需要有其他的画蛇添足的结束表示,一切都是靠缩进来证明的。当然,你也可以把换成,效果是一样的。</p><p>  </p><p>  要命的是,它还有第三种写法。</p><p>  2. 数字</p><p>  当我们的接收者,是一个数字的时候,比如下面这个。</p><p>  </p><p>  那么,你即使把配置文件写成了字符串,它也会强制转成数字。</p><p>  </p><p>  此时,a的数值,就会被设置成整数14。</p><p>  神奇的是,如果你把引号去掉,也就是下面这样。</p><p>  </p><p>  此时,a的数值,竟然变成了12!</p><p>  我就曾碰到过这样的极品bug,浪费了不少脑细胞,wtf。因为以0开头,代表的是八进制,解析器中间做了一层转换。所以,按照这个逻辑,0x14就是20,使用时一定要注意这一点。机灵的同学可以拿来埋坑哦。</p><p>  这里也有一些特殊的写法。</p><p>  </p><p>  </p><p>  3. 字典</p><p>  再来看一下常见的字典。其实,把所有的配置罗列开来,本身就是一个字典,也就是kv配置。</p><p>  它是以进行分割的,所以左半部分要求不能有特殊字符,否则就晕菜了。不不不,它没有晕菜,因为它把乱七八糟的字符,正确的识别了出来。比如下面的yml配置。</p><p>  </p><p>  这样的代码接收。</p><p>  </p><p>  嗯,容易被打死的写法。所以,你懂的。</p><p>  还是我太幼稚了,yml文件根本就没规定key不允许有特殊字符,它允许你这么做。</p><p>  4. 对象</p><p>  由字典,很容易可以扩展到对象。因为对象,也是一堆属性的集合。json已经证明,这些属性,就是一堆KV,我们的yaml也是如此。</p><p>  假设有如下的代码,我们需要构造dog中的数据。</p><p>  </p><p>  </p><p>  第一种yml的写法,是这样。</p><p>  </p><p>  而另一种方式,是把json数据直接给写到文件里。</p><p>  </p><p>  当然,多个层次,可以在一行之中平铺开。比如prefix是super.dog,那么yml文件就可以这么写。</p><p>  5. 列表支持</p><p>  列表,就是list,我们可以使用数组接收,也可以使用List等。</p><p>  它也有两种写法。这是最常见的一种。</p><p>  </p><p>  当然,也可以放在一行。</p><p>  </p><p>  这没什么问题,关键是yml文件支持嵌套。比如List里嵌套Map,或者Map里嵌套List。当嵌套层次比较深的时候,或者缩进没什么规律的时候,就显得非常的乱。</p><p>  比如下面这个k8s的pod配置。</p><p>  </p><p>  比较复杂的是spec,里面有、等配置。其中containers是一个列表,列表之间是一个map,map中其中的ports属性,又是一个列表...如此嵌套,如果配置文件比较长的化,不熟悉业务属性的同学就会容易晕菜。</p><p>  6. 特殊数据</p><p>  即使是这样,yaml也比xml简单的多。它也有很多特殊的写法。</p><p>  比如这个。</p><p>  </p><p>  它的意思是,把2021-06-04,强制转化成字符串。这样的强制转化有很多,但大多数时候你不会用。但如果你想要把你的yaml文件变得复杂,让别人不敢动,那就可以这么做。</p><p>  </p><p>  既然yml文件有这么多复杂的写法,那么我们就可以去玩一把。比如下面的写法。</p><p>  </p><p>  这个配置,和上面的配置,效果是一样的,的意思是标记,我们给它起了个名字,叫做;的意思是引用,我们在需要它的地方引用一把就可以了。</p><p>  yml中的key,竟然也可以用对象或者复杂的结构作为key。为了标识是一个特殊的key,我们还要做一点处理。</p><p>  </p><p>  上面这个配置的,就是说,我下面要进行一个比较复杂的配置了,你准备好了么?</p><p>  7. End</p><p>  学会了这些招数的你,是不是跃跃欲试了?想要在你的SpringBoot项目里搞一点有意思的东西?为了让你的基础架构部门无法扫描出你的配置,为什么不呢?</p><p>  这是我改造的一个普通datasource的配置文件。</p><p>  </p><p>  你觉得美么?我反正腿挺疼的。</p><p><blockquote>作者简介:小姐姐味道 (xjjdog),一个不允许程序员走弯路的公众号。聚焦基础架构和Linux。十年架构,日百亿流量,与你探讨高并发世界,给你不一样的味道。我的个人微信xjjdog0,欢迎添加好友,进一步交流。</blockquote></p><p>  3.<br/>4.<br/>5. 寻常</p> 

讯享网
小讯
上一篇 2025-05-07 07:31
下一篇 2025-05-13 15:17

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/190881.html