项目引入yaml语言来写配置文件,最近发现利用其锚点&和引用*的功能,可以极大减少配置文件中的重复内容,将相同配置内容收敛到锚点处,修改时,只需要修改锚点处的内容,即可在所有引用处生效。

yaml基础参考自阮老师的blog: http://www.ruanyifeng.com/blog/2016/07/yaml.html?f=tt

具体练习也是使用阮老师推荐的http://nodeca.github.io/js-yaml/

举例,在server对redis的访问配置中,针对不同的db可能会写成如下配置:

user:
host: 127.0.0.1
db: 8 book:
host: 127.0.0.1
db: 9 comment:
host: 127.0.0.1
db: 10

此处host其实配置都是一样的,只有db不一样,通过锚点和引用的功能,可以写成如下:

localhost: &localhost1
host: 127.0.0.1
user:
<<: *localhost1
db: book:
<<: *localhost1
db: comment:
<<: *localhost1
db:

其中&表示将localhost1作为localhost的别名,*标识取别名localhost1对应的value,<<表示将*localhost1代表的map合并入当前map数据。

针对远端服务多台机器的访问配置,针对不同情况可能存在不同的优先级访问顺序,可以写成如下形式:

server_order_0:
-
- 127.0.0.1
-
-
- 10.0.1.1
-
-
- 10.0.2.1
- server_order_1:
-
- 10.0.1.1
-
-
- 127.0.0.1
-
-
- 10.0.2.1
- server_order_2:
-
- 10.0.2.1
-
-
- 10.0.1.1
-
-
- 127.0.0.1
-

利用锚点和引用,可以写为下面的配置:

server0: &server0
- 127.0.0.1
- server1: &server1
- 10.0.1.1
- server2: &server2
- 10.0.2.1
- server_order_0:
-
*server0
-
*server1
-
*server2 server_order_1:
-
*server1
-
*server0
-
*server2 server_order_2:
-
*server2
-
*server1
-
*server0

yaml中的锚点和引用的更多相关文章

  1. angularjs中使用锚点,angular路由导致锚点失效的两种解决方案

     壹 ❀ 引 公司新项目开发中,首页要做个楼层导航效果(如下图),要求能点击图标对应跳到楼层即可,因为不需要跳转过度动画,也要求最好别用JQ,想着原生js操作dom计算top的兼容性,想着用锚点实现算 ...

  2. 讨论SEO中是锚文本有效,还是纯文本有效呢?

    现在很多SEO好友不断在讨论,在SEO优化中,到底是锚文本有效,还是纯文本有效呢? 在这里给大家举一下列子:如“张家口人才网”这样的就叫做锚文本,意思是在原有的文本中加上超级链接,指向到优化的网页上面 ...

  3. javascript中值传递与值引用的研究

    今天重新看了一下<javascript高级程序设计>,其中讲到了javascript中的值传递和值引用,所以就自己研读了一下,但是刚开始没有明白函数中的参数只有值传递,有的场景好像参数是以 ...

  4. java中的传值与传引用

    java函数中的传值和传引用问题一直是个比较“邪门”的问题,其实java函数中的参数都是传递值的,所不同的是对于基本数据类型传递的是参数的一份拷贝,对于类类型传递的是该类参数的引用的拷贝,当在函数体中 ...

  5. 在 ServiceModel 客户端配置部分中,找不到引用协定“WebServiceTest.WebServiceSoap”的默认终结点元素。这可能是因为未找到应用程序的配置文件,或者是因为客户端元素

    原文  http://blog.csdn.net/bugdemo/article/details/9083497 主题 技术 在引用WebService后,程序运行到实例化WebService时报错, ...

  6. html中设置锚点定位的几种常见方法(#号定位)

    在html中设置锚点定位我知道的有几种方法,在此和大家分享一下: 1.使用id定位: <a href="#1F">锚点1</a> <div id=&q ...

  7. 在masterpage中添加对usercontrol的引用

    在masterpage中添加对usercontrol的引用的方式: <%@ Register Src="/_controltemplates/15/Excellent Employee ...

  8. 在 ServiceModel 客户端配置部分中,找不到引用协定“PmWs.PmWebServiceSoap”的默认终结点元素

    System.Exception: ConfigManager.LoadConfigurationFromDb ServiceFactory.GetPmWebService 在 ServiceMode ...

  9. java中强,软,弱,虚引用 以及WeakHahMap

    java中强,软,弱,虚引用  以及WeakHahMap   一:强软引用: 参考:http://zhangjunhd.blog.51cto.com/113473/53092/进行分析   packa ...

随机推荐

  1. Docker扩展.md

    逻辑卷 Volume 数据卷是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,可以提供很多有用的特性: 数据卷可以在容器之间共享和重用 对数据卷的修改会立马生效 对数据卷的更新,不会影响镜像 数 ...

  2. the longest distance of a binary tree

    版权声明:欢迎查看本博客.希望对你有有所帮助 https://blog.csdn.net/cqs_2012/article/details/24880735 the longest distance ...

  3. [CQOI2017]小Q的表格

    题目 神仙题,神仙题 这是一道很适合盯着发呆的题目 看到这个规律 \[ f(a,b)=f(b,a) \] \[ b\times f(a,a+b)=(a+b)\times f(a,b) \] 这也没什么 ...

  4. MacBook搭建go语言开发环境

    mac下要安装 go 最简单的方式是通过 homebrew 直接执行: brew update && brew upgrade brew install go 安装完成后需要指定 GO ...

  5. WEB安全 ACCESS 注入、盲注脚本

    http://www.xxx.cn/cp.asp?classid=3http://www.xxx.cn/cp.asp?classid=3 and //有拦截关键字http://www.xxx.cn/c ...

  6. 页面QQ在线咨询、在线交谈代码

    页面QQ在线咨询.在线交谈代码 样式一: <a target="blank" rel="nofollow" href="tencent://me ...

  7. idea 注册码(2019)

    MTW881U3Z5-eyJsaWNlbnNlSWQiOiJNVFc4ODFVM1o1IiwibGljZW5zZWVOYW1lIjoiTnNzIEltIiwiYXNzaWduZWVOYW1lIjoiI ...

  8. ovs加dpdk出现EAL No free hugepages reported in hugepages-1048576kB

    问题 打开ovs的日志: cat /etc/local/var/log/openvswitch/ovs-vswichd.log 其中一条显示: 2018-07-30T02:12:05.443Z|000 ...

  9. xcode10不兼容问题解决方法,framework编译脚本

    XCode10报错:Build/Intermediates.noindex/XCBuildData/build.db": disk I/O error 更改-scheme 为-target ...

  10. Microsoft Visio / Project professional 2013 官方版本(下载)

    Microsoft Visio微软开发的一款软件, 它有助于 IT 和商务专业人员轻松地可视化.分析和交流复杂信息. 它能够将难以理解的复杂文本和表格转换为一目了然的 Visio 图表. 该软件通过创 ...