项目引入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. PHP版本解密openrtb中的价格

    Decrypt Price Confirmations 原文地址 https://developers.google.com/ad-exchange/rtb/response-guide/decryp ...

  2. SQL简单基础(2)

    查询功能是SQL语句最重要的功能,查询操作也是数据库系统最常用的操作.学习SQL查询语句,首先要弄清楚的是查询语句用到的关键字以及查询语句的执行顺序.SQL语言的一个特点在于,它是一种声明式语句,执行 ...

  3. 使用SN.exe对.Net生成的程序集进行签名

    CLR用数字签名的方式防止程序集发布后被人篡改,也可以确定发布人,这个方法就是使用公/私钥对,然后对程序集所有模块取一个哈希生成一个数字签名放在程序集的元数据中. 1.创建公/私钥对     创建公/ ...

  4. Java虚拟机13:Java类加载机制

    前言 我们知道我们写的程序经过编译后成为了.class文件,.class文件中描述了类的各种信息,最终都需要加载到虚拟机之后才能运行和使用.而虚拟机如何加载这些.class文件?.class文件的信息 ...

  5. BZOJ1334:[Baltic2008]Elect(背包DP)

    Description N个政党要组成一个联合内阁,每个党都有自己的席位数. 现在希望你找出一种方案,你选中的党的席位数要大于总数的一半,并且联合内阁的席位数越多越好. 对于一个联合内阁,如果某个政党 ...

  6. 【[CQOI2018]交错序列】

    这个题简直有毒,\(O((a+b)^3logn)\)的做法不卡常只比\(O(2^n*n)\)多\(10\)分 看到\(a\)和\(b\)简直小的可怜,于是可以往矩阵上联想 发现这个柿子有些特殊,好像可 ...

  7. nextjs-demo

    这个是根据nextjs服务端渲染做的一个小demo 关键性代码,主要是控制模态框显示隐藏 关于index页面 //index.js /* eslint-disable jsx-a11y/anchor- ...

  8. MAC下常用命令的中文帮助文档(man) 出现错误

    MacdeMacBook-Pro:Desktop mac$ tar -xf manpages-zh-1.5.2.tar.bz2 MacdeMacBook-Pro:~ root# cd /Users/m ...

  9. rabbitmq关于guest用户登录失败解决方法

    刚安装完rabbitmq,登录的时候出现了: login  failed问题: 查看rabbitmq的文档,发现在3.3.1以后的版中,处于安全的考虑,guest这个默认的用户只能通过localhos ...

  10. vim使用四个空格代替TAB键

    让VIM可以在你写程序的时候自动缩进,并用4个空格代替TAB键. 编辑 ~/.vimrc 保存这四行: “set smartindent”, “set tabstop=4”, “set shiftwi ...