学习笔记:yaml语言教程
1、YAML基本概念
1.1 简介
设计目标:方便读写
用处:专门用来写配置文件的语言,一种通用的数据串行化格式
1.2 基本语法
大小写敏感
使用缩进表示层级关系
缩进时不允许使用Tab键,只允许使用空格。
缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
“#” 表示注释,从这个字符一直到行尾,都会被解析器忽略
1.3 支持的数据结构:
字典:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 对象
数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)
纯量(scalars):单个的、不可再分的值,即基本数据类型
1.4 注意点
重复定义时,后定义的会覆盖前面定义的值
如果值为 int, float, bool等类型,解析后会转换为对应的类型
2、数据结构
2.1 字典
键值对,使用冒号结构表示。
# {k1: v1}
hash:
k1: v1
k2: true
k3: 1
k4: 1.0001
# or
# { k1:v1, k2:v2 }, k: v 间的空格不能省略
hash: { k1: v1, k2: true, k3: 1, k4: 1.0001 }
2.2 数组
一组连词线开头的行,构成一个数组。
# ['Cat', 'Dog', 'Goldfish']
listname
- Cat
- Dog
- Goldfish
如果数据结构的子成员是一个数组,则可以在该项下面缩进一个空格。
# [# ['Cat', 'Dog', 'Goldfish'], ]
listname
-
- Cat
- Dog
- Goldfish
行内表示法
# { animal: [ 'Cat', 'Dog' ] }
animal: [Cat, Dog]
2.3 纯量
纯量是最基本的、不可再分的值。
- 字符串
- 布尔值
- 整数
- 浮点数
- Null
- 时间
- 日期
表现形式:
数值类,直接以字面量的形式表示
# num: 12.30
num: 12.30
布尔,true 和 false 表示
# {flag: true}
flag: true
null 用~表示
# {parent: null}
parent: ~
时间,采用ISO8601格式
# { iso8601: new Date('2001-12-14t21:59:43.10-05:00') }
iso8601: 2001-12-14t21:59:43.10-05:00
日期
# { date: new Date('1976-07-31') }
date: 1976-07-31
2.4 强制类型转换,双!
# { e: '123', f: 'true' }
e: !!str 123
f: !!str true
2.5 字符串
# { str: '这是一行字符串' }
str: 这是一行字符串
# 字符串之中包含空格或特殊字符,需要放在引号之中
# { str: '内容: 字符串' }
str: '内容: 字符串'
# 单引号和双引号都可以使用,双引号不会对特殊字符转义
# { s1: '内容\\n字符串', s2: '内容\n字符串' }
s1: '内容\n字符串'
s2: "内容\n字符串"
# 单引号之中如果还有单引号,必须连续使用两个单引号转义
# { str: 'labor\'s day' }
str: 'labor''s day'
# 字符串可以写成多行,从第二行开始,必须有一个单空格缩进。换行符会被转为空格
# { str: '这是一段 多行 字符串' }
str: 这是一段
多行
字符串
# 多行字符串可以使用|保留换行符,也可以使用>折叠换行
# { this: 'Foo\nBar\n', that: 'Foo Bar\n' }
this: |
Foo
Bar
that: >
Foo
Bar
# +表示保留文字块末尾的换行,-表示删除字符串末尾的换行。
# { s1: 'Foo\n', s2: 'Foo\n\n\n', s3: 'Foo' }
s1: |
Foo
s2: |+
Foo
s3: |-
Foo
3、引用
锚点&和别名*,可以用来引用。
- &用来建立锚点,类似于声明变量
- *用来引用锚点,类似于引用变量
- <<表示合并到当前数据(如果变量名重复也会覆盖)
# example, 文件名为test2.yml
var: &var 111
tag1: &tag1
- *var
- m2
# 等价于
#tag1: &tag1
# - 111
# - m2
tag2:
- *tag1
- *var
- m3
- m4
# 等价于
#tag2:
# - [111, m2]
# - 111
# - m3
# - m4
redis: &redis
r_host: redis_host
r_port: redis_port
mysql: &mysql
m_host: mysql_host
m_port: mysql_port
dev1:
<<: *redis
<<: *mysql
# 等价于
#dev1:
# r_host: redis_host
# r_port: redis_port
# m_host: mysql_host
# m_port: mysql_port
dev2:
redis: *redis
mysql: *mysql
# 等价于
#dev2:
# redis: { r_host: redis_host, r_port: redis_port }
# mysql: { m_host: mysql_host, m_port: mysql_port }
4、学习链接
阮一峰YAML 语言教程
YAML 在线damo
YAML、YML在线编辑器(格式化校验)
学习笔记:yaml语言教程的更多相关文章
- IOS学习笔记07---C语言函数-printf函数
IOS学习笔记07---C语言函数-printf函数 0 7.C语言5-printf函数 ------------------------- ----------------------------- ...
- IOS学习笔记06---C语言函数
IOS学习笔记06---C语言函数 -------------------------------------------- qq交流群:创梦技术交流群:251572072 ...
- 转: YAML 语言教程 from(阮一峰)
YAML 语言教程 from: http://www.ruanyifeng.com/blog/2016/07/yaml.html
- [java学习笔记]java语言核心----面向对象之this关键字
一.this关键字 体现:当成员变量和函数的局部变量重名时,可以使用this关键字来区别:在构造函数中调用其它构造函数 原理: 代表的是当前对象. this就是所在函数 ...
- [java学习笔记]java语言核心----面向对象之构造函数
1.构造函数概念 特点: 函数名与类名相同 不用定义返回值类型 没有具体的返回值 作用: 给对象进行初始化 注意: 默认构造函数 多个构造函数是以重载出现的 一个类中如果 ...
- Java学习笔记:语言基础
Java学习笔记:语言基础 2014-1-31 最近开始学习Java,目的倒不在于想深入的掌握Java开发,而是想了解Java的基本语法,可以阅读Java源代码,从而拓展一些知识面.同时为学习An ...
- 转:spring boot log4j2配置(使用log4j2.yml文件)---YAML 语言教程
转:spring boot log4j2配置(使用log4j2.yml文件) - CSDN博客http://blog.csdn.net/ClementAD/article/details/514988 ...
- YAML 语言教程(转载)
用YAML语言读取配置是最快的,之前的suricata中用yaml读取了配置,并且在代码运行期间,对配置进行了维护,所以抽点时间,来了解一下YAML语言编程,下文虽然对YAML语言和JAVAScrip ...
- YAML 语言教程与使用案例
YAML语言教程与使用案例,如何编与读懂写YAML文件. YAML概要 YAML 是 “YAML Ain’t a Markup Language”(YAML 不是一种标记语言)的递归缩写.在开发的这种 ...
随机推荐
- Ubuntu18.04开机动画(bootsplash)安装
一.搜索喜欢的主题 1.通过软件源搜索,这个比较简单但是没有太喜欢的.-----------------------------------------------------------pipci@ ...
- Linux - /bin/sh^M: bad interpreter: No such file or directory
问题 在Windows环境下用Notepad++写了个shell脚本,上传到Linux平台后运行报错如下: /bin/sh^M: bad interpreter: No such file or di ...
- Mysql之数据库设计规范
1. 三大范式首先要明白”范式(NF)”是什么意思.按照教材中的定义,范式是“符合某一种级别的关系模式的集合,表示一个关系内部各属性之间的联系的合理化程度”.数据库范式也分为1NF,2NF,3NF,B ...
- 【解决方案】IP代理池设计与解决方案
一.背景 爬虫服务请求量大,为了应对反爬措施,增加爬虫的爬取效率和代理IP使用率,需要设计一个IP代理池,满足以下需求: 定时任务获取第三方代理 及时剔除IP代理池中失效的IP 业务隔离IP 若IP未 ...
- EXCEL技巧-多级目录设置
现有如下图所示的数据,要求:以方法.厚度.品种进行分类汇总,并对数量.面积.金额求和. 在进行分类汇总前需要先对数据进行排序,操作如下图所示. 在排序对话框中,点击“添加条件” 两次,这样可以对三个字 ...
- M有SQL删除数据库提示Error dropping database (can't rmdir './db_test', errno: 39)
1.执行ps aux | grep mysql,查看mysql的data目录,比如结果是--datadir=/var/lib/mysql.2.进入data目录,删除以该数据库为名字的文件夹.cd /v ...
- boost 线程库
http://www.boost.org/ Boost的安装 step1.从www.boost.org下载boost库 step2 在 tools\build\jam_src目录下 运行build.b ...
- Flutter移动电商实战 --(47)详细页_Flutter_html插件的使用
详情里面是hemlt和图片组成的,但是flutter是不支持html的所以需要其他插件 flutter webview plugin:这个不太好用 flutter_html:用这个插件 先解决之前一个 ...
- golang 不足
滴滴出行技术总监:关于技术选型的那些事儿 原创: 杜欢 InfoQ 2017-02-26 https://mp.weixin.qq.com/s/6EtLzMhdtQijRA7Xrn_pTg ...
- VSCode 代码格式化 快捷键
Visual Studio Code可以通过以下快捷键 格式化代码: On Windows Shift + Alt + F On Mac Shift + Option + F On Ubuntu ...