其他-yaml入门(代码片段)

xy14 xy14     2023-04-18     424

关键词:

  1. 概述
    1. 简单介绍 YAML 语言
  2. 背景
    1. 很多地方, 都在使用 YAML
      1. k8s
      2. spring
      3. 其他
  3. 准备
    1. 验证工具
      1. YAML、YML在线格式化校验工具
        1. 一个 YAML 转换 JSON 的工具
          1. 通常来说, YAML 是可以转化为 JSON 的
          2. 有一个能告诉你对错的验证工具, 对学习很有帮助
        2. 这里如果使用 广告屏蔽插件的化, 背景会变得不太好看
          1. 处理办法, 是把 body 元素里的 style 属性去掉即可
    2. JSON 的基础
      1. 起码知道 map, list 的表示

1. YAML

  1. 概述
    1. 简述 YAML 相关
  2. 什么是 YAML
    1. YAML ain‘t markup language
      1. YAML 不是标记语言
      2. 这个玩法, 和 gnu 有点类似...
  3. 目的
    1. 一门 可读性好 的语言
    2. 一门可以作为 数据序列化标准 的语言
    3. 一门 跨平台 的语言
  4. 和 JSON 的关系
    1. JSON 更加注重 跨平台, YAML 更重视可读
    2. YAML 可以视为 JSON 的超集
      1. JSON 的格式, 在 YAML 中合法
  5. 后缀名到底是 .YAML 还是 .yml
    1. 都行
    2. 推荐使用 .YAML

2. 语法

  1. 概述
    1. 简单介绍 YAML 语法

1. 普通文本

  1. 概述
    1. 尝试输入普通文本
  2. 例子

    # 输入
    1
    2
    3
    
    4
    # 转换
    '1 2 3
    4'
  3. 我的想法
    1. 虽然转换成功, 但是不建议使用
      1. 为啥非要用 YAML 来存放普通文本呢

2. 注释

  1. 概述
    1. YAML 的注释
  2. 注释格式
    1. 开始
      1. 以 # 开头
    2. 位置
      1. 行首
        1. 整行都被视为注释
      2. 行中
        1. 符号 # 右侧的字符, 被视为注释
    3. 格式
      1. 符号 # 和注释内容之间, 需要 空格 隔开
  3. 约定
    1. 我在后面整理中, 不会在 YAML 里添加任何注释
    2. 下文中的 # 只是用来分隔的 解释说明文字

3. 简单 map

  1. 概述
    1. 简单 map

例子1: kv 分隔符

  1. 示例

    # 输入
    1:1
    # 输出
    61
  2. 结果
    1. 卧槽怎么是这个东西?
  3. 原因
    1. : 格式有问题
    2. 可用的格式, 有这两种

      # 官网推荐这一种, : 紧跟key, 但是在 value 前面, 有一个空格
      1: 1
      2 : 2
    3. 后面一定注意, YAML 其实 很吃 格式
      1. 格式很重要
  4. 修正
    # 输入 1: 1 # 输出, 这就对了嘛 ‘1‘: 1

例子2: 简单的 map

  1. 示例

    # 输入
    1: 10
    abandon: 狂热    
    # 输出
     '1': 10, abandon: '狂热' 
  2. 结果
    1. 数字 和 字母都能作为 key
      1. 而且比起 JSON, YAML 的格式好像更为简单
        1. 起码 ‘‘ 的使用, 没有那么复杂

其他注意的问题

  1. 概述
    1. 一些其他的注意事项
    2. 本来想 举例子 来说, 但还是太懒了
  2. 字符集
    1. YAML 支持 unicode 的所有可见字符集
  3. 特殊字符
    1. 如果需要 #, :, 则可以用 ‘‘ 或者 "" 引用, 保证使用正常
      1. 那个转化器, 无法识别 "", 这个暂时没法验证
  4. key 不能重复
    1. 重复的 key, 会导致 解析失败
  5. key 不能为空
    1. 否则会导致 解析失败
      1. 单纯的 空格 和 tab 也不行
      2. 空字符串, 倒是没问题
  6. value 可以为空
    1. 转换出来的 JSON, 会识别为 null
    2. 如果是文字 null, 则加上 ‘‘
  7. 数字值域
    1. 使用 11111111111111111111 做 键 时
      1. 转化后的 键 为 11111111111111110000
      2. 不知道是因为解析器使用 js 的原因, 还是其他原因
    2. 在使用数字的时候, 要有意识的去注意 值域
  8. bool
    1. YAML 支持 bool 类型
      1. true, True
      2. false, False

4. 简单 list

  1. 概述
    1. 简单 list

例子1: 简单 list

  1. 示例

    # 输入
    - 
    - ' '
    - ' '
    - 1
    - abandon
    # 输出
    [ null, ' ', '	', 1, 'abandon' ]
  2. 结果
    1. 值可以为空
    2. 空格 和 tab 必须用 ‘‘ 或者 ""
      1. 否则视为 null
      • 和 值 之间, 必须要有 空格
    3. 友情提示: 注意对齐, 后面的缩进, 会有大麻烦

5. 嵌套

  1. 概述
    1. 尝试一些相对复杂的嵌套

例子1: map 嵌套

  1. 示例

    # 输入
    key1: 
      key11: value11
      key12: value12
    key2:
      key11: value11
      key12: value12
    # 输出
     key1:  key11: 'value11', key12: 'value12' ,
      key2:  key21: 'value21', key22: 'value22'  
  2. 结果
    1. map 可以作为 value
  3. 注意
    1. 缩进
      1. YAML 中, 层次是靠 缩进 体现的
      2. 缩进使用的, 是 两个空格
      3. 一定不能用 tab 去缩进
      4. 缩进不正确, 会导致报错
    2. 当然, 可以多层嵌套
      1. 但具体能嵌套多少层, 我也是不清楚

例子2: list 嵌套

  1. 示例

    # 输入
    - super1
    - 
      - sub1
      - sub2
    - super3
    # 输出
    [ 'super1', [ 'sub1', 'sub2' ], 'super3' ]
  2. 结果
    1. list 可以作为 list 元素存在
      1. 那个空行 - 需要注意
  3. 注意
    1. 还是缩进
    2. 层数
      1. 可以多层嵌套
      2. 但是能套多少层, 我还是不清楚

例子3: list 做 map 的 key

  1. 示例

    # 输入
    ?
      - var1
      - var2
    :
      key
    # 输出
     'var1,var2': 'key' 
  2. 结果
    1. list 作为 map 的 key, 成功转化
  3. 注意
    1. 注意格式
      1. ?
      2. :
    2. map 不能作为 map 的 key

例子4: list 作为 map 的 value

  1. 示例

    # 输入
    key: 
      - value1
      - value2
    # 输出
     key: [ 'value1', 'value2' ]  
  2. 结果
    1. 成功

例子5: map 作为 list 的元素

  1. 示例

    # 输入
    - key10: value10
      key11: value11
    - key20: value20
      key21: value21
    # 输出
    [  key10: 'value10', key11: 'value11' ,
      key20: 'value20', key21: 'value21'  ]
  2. 结果
    1. 成功嵌套

6. 其他

  1. 感觉了解了这些, 基本就够用了吧
    1. 感觉日常使用, 基本是 够了
  2. 当然有一些疑问
    1. 层数上限
    2. 容量上限
    3. int 和 float 的上限
    4. 特殊转义
    5. " 和 ‘ 的区别
  3. 这些问题, 如果在使用中遇到, 再去处理吧

  4. 感觉 YAML 其实是一种 写起来更简单的 JSON
    1. 如果有想法的话, 其实是可以写一个东西, 来将 YAML 转化为 JSON 的

ps

  1. ref
    1. YAML
    2. What is the difference between .yaml and .yml extension?
    3. YAML、YML在线格式化校验工具

springboot入门springboot的配置(代码片段)

...#xff0c;boot3里面实现用的更多的是流(Stream),其他没怎么变)。但是如果想使用自己的配置替换默认配置或添加其他配置的话,可以使用application.properties或者application.yml(application.yaml)进行配置。遵循框架的规... 查看详情

yaml配置注入(代码片段)

...:2.yaml文件内容:3.出现提示:4.测试加载指定配置文件读取其他文件(yaml)1.新建配置文件2.加载配置文件(student类)读取其他文件(properties)1.新建配置文件2.加载配置文件(student类)读取其他文 查看详情

springboot2从入门到入坟|配置文件篇:yaml语法详解(代码片段)

...测试SpringBoot在生产环境下的指标监控功能SpringBoot的一些其他原理解析这里,我们不妨先来说一下配置文件,因为后面的几点都是比较大块的内容,配置文件了解清楚之后,我们再来学习下面的内容。文件类型properties我们之前在... 查看详情

最全!即学即会serverlessdevs基础入门(下)(代码片段)

在上篇《最全!即学即会ServerlessDevs基础入门》中,我们阐述了工具链的重要性,并对安装方式&密钥配置进行了讲解。但是在ServerlessDevs的规定中,一个Yaml可以被认为是一个Serverless应用,因此本文将继续带... 查看详情

01-yaml基本使用(代码片段)

...ff08;YAML不是一种标记语言)的递归缩写。YAML的语法和其他高级语言类似,并且可以简单表达清单、散列表,标量等数据形态。它使用空白符号缩进和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种... 查看详情

ansible的高级用法playbook(代码片段)

Ansible的高级用法playbookAnsible入门playbook工作过程YAML特性  YAML的可读性好  YAML和脚本语言的交互性好  YAML使用实现语言的数据类型  YAML有一个一致的信息模型  YAML易于实现  YAML可以基... 查看详情

ansible自动化运维之yaml介绍(代码片段)

YAML是一种用来表达资料序列的格式,由于参考了其他多种语言,所以具有很高的可读性。YAML是YAMLAin‘tMarkupLanguage的缩写。特性如下:1.具有很好的可读性,易于实现;2.表达能力强,扩展性号;3.和脚本语言的交互性好;4.有一... 查看详情

ansible自动化运维之yaml基础元素(代码片段)

...信息模型;5.可以基于流来处理;YAML语法:*YAML的语法和其他语言类似,也可以表达散列表、标量等数据结构。*YAML结构通过空格来展示;序列里的 查看详情

剑客ansible拔剑--yaml语言与inventory主机清单(代码片段)

YAML介绍YAML是一种用来表达资源序列的格式,由于参考了其他多语种,所以具有很高的可读性。YAML是YAMLAin‘taMarkupLanguage的缩写,即YAML不是XML。不过在研发这种语言是,YAML的意思其实是YAMLAnotherMarkupLanguage(仍是一种标记语言)... 查看详情

springboot对于yaml的详细学习和三种属性赋值的实战详解(代码片段)

...YAML有不同的看法。有些人会说YAML代表另一种标记语言。其他人认为“YAML不是标记语言”(“YAML并非标记语言”)。“YAML”只是这句话的递归缩写,强调YAML用于数据而不是文档。1.2新建yaml文件到resource文件夹下,新建application.... 查看详情

ansible自动化运维之yaml基础元素(代码片段)

...ML是一个可读性高的用来表达资料序列的格式。YAML参考了其他多种语言,包括:XML、C语言、Python、Perl等。YAML不是XML,不过,在开发的这种语言时,YAML的意思其实是:“YetAnotherMakupLanguage”(仍是一种标记语言)特点:1:具有很好... 查看详情

自动化运维工具ansible——yaml基础元素(代码片段)

...ML是一个可读性高的用来表达资料序列的格式。YAML参考了其他多种语言,包括:XML、C语言、Python、Perl等。YAML不是XML,不过,在开发的这种语言时,YAML的意思其实是:“YetAnotherMakupLanguage”(仍是一种标记语言) YAML的特点1:具有... 查看详情

springboot(代码片段)

文章目录学习目标一、SpringBoot简介1.入门案例问题导入1.1入门案例开发步骤1.2基于SpringBoot官网创建项目1.3SpringBoot项目快速启动2.SpringBoot概述问题导入2.1起步依赖2.2辅助功能二、基础配置1.配置文件格式问题导入1.0初始环境1.1修... 查看详情

springboot-基础篇复习(全)(代码片段)

...配置比较繁琐,故引入了springboot。目录一、springboot入门案例1.1、入门案例之IDEA联网版1.2、入门案例解析-parent 1.3、入门案例解析-starter 1.4、引导类1.5、内嵌Tomcat 二、REST风格补充2.1、REST风格简介 2.2、Restful风格入门案例2.... 查看详情

webdriver技巧:使用yaml将元素层分离(代码片段)

...都可以闲庭信步了。 首先介绍一下YAML文件YAML参考了其他多种语言,包括:XML、C语言、Python、Perl以及电子邮件格式RFC2822。数据结构可以用类似大纲的缩排方式呈现,结构通过 查看详情

如何不编写yaml管理kubernetes应用?(代码片段)

...是以Deployment、StatefulSet为代表的workload工作负载控制器,其他各类资源都围绕这些主要的资源工作。这些资源合并起来,可以为IT技术工作者展现出一个以workload为中心的模型。Kubernetes中所有的资源,都通过声明式配置文件来编... 查看详情

typora入门(代码片段)

...轻便简洁的Markdown编辑器,支持即时渲染技术,这也是与其他Markdown编辑器最显著的区别。即时渲染使得你写Markdown就想是写Word文档一样流畅自如,不像其他编辑器的有编辑栏和显示栏。Typora删除了预览窗口,以及所有其他不必... 查看详情

springboot基础入门(代码片段)

SpringBoot基础入门SpringBoot项目创建方式Idea创建SpringBoot官网创建基于阿里云创建项目手工搭建SpringBoot启动parentstarter引导类内嵌tomcat基础配置属性配置配置文件分类yaml文件yaml数据读取整合第三方技术整合JUnit整合MyBatis整合Mybatis-Pl... 查看详情