首页 > 其他分享 >YAML文件介绍

YAML文件介绍

时间:2024-12-21 22:09:31浏览次数:5  
标签:文件 配置文件 映射 介绍 配置 别名 YAML 锚点

YAML是一种人类可读的数据序列化标准,广泛用于配置文件和数据交换。它的设计目标是使文件易于阅读和编写,同时保持足够的表达力以满足大多数应用的需求,YAML文件通常以.yaml或.yml为扩展名。

YAML的特点

简洁性:YAML 使用缩进来表示层次结构,避免了 XML 和 JSON 中常见的大量括号和引号。
易读性:语法简单直观,减少了冗余符号,使得文件更易于理解和编辑。
灵活性:支持多种数据类型,包括标量(如字符串、数字)、序列(列表)和映射(字典或哈希表)。
注释支持:允许使用 # 来添加注释,便于文档化配置。

基本语法

标量(Scalars)

标量是最简单的数据类型,可以是字符串、整数、浮点数、布尔值等。

序列(Sequences)

“序列”(Sequence)是指一个有序的元素列表,而不是指一个键有多个值。每个元素可以是标量(如字符串、数字)、映射(键值对集合),甚至是另一个序列。序列通常用 - 符号来表示。

 

映射(Mappings)

映射是由键值对组成的集合,每个键后面跟一个冒号和值。

多行字符串

多行字符串可以通过 |> 来定义。| 保留换行符,而 > 将内容折叠成一行。

高级特性

锚点与别名

可以使用锚点 (&) 和别名 (*) 来引用同一对象,减少重复。

锚点与别名的基本概念

  • 锚点 (&):用于标记一个节点,使得该节点可以在后续的地方被引用。
  • 别名 (*):用于引用之前定义过的锚点,表示使用相同的值或结构。

使用场景

当你有多个地方需要使用相同的数据结构时,锚点和别名可以帮助你避免重复定义这些数据。这不仅减少了代码量,还降低了出错的概率,因为只需要在一个地方修改数据即可。

在这个例子中:

  • &defaults 标记了 defaults 映射作为锚点。
  • <<: *defaults 是一种特殊的合并键(merge key),它将 defaults 的内容合并到当前映射中。
  • development 和 production 都引用了 defaults 的设置,但可以根据需要覆盖某些字段(如 environment 和 port)。

复杂结构的复用

如果你有一个更复杂的结构,比如一个数据库配置,也可以通过锚点和别名来简化:

在这个例子中:

  • &db_config 标记了一个通用的数据库配置。
  • development_dbtest_db 和 production_db 分别引用了这个通用配置,并根据需要添加或覆盖特定的字段(如 database 和 host)。

合并键 (<<)

合并键 << 是 YAML 提供的一种特殊语法,用来将两个映射合并在一起。它可以是一个锚点别名,也可以是一个映射列表。当使用锚点别名时,它会将锚点定义的内容合并到当前映射中。

  • 如果当前映射中已经存在同名键,则以当前映射中的值为准(即覆盖原有值)。
  • 如果当前映射中不存在同名键,则直接添加来自锚点的键值对。

嵌套结构中的应用

锚点和别名不仅可以用于顶层映射,还可以用于嵌套结构中。例如:

在这个例子中:

  • &service 定义了一个基础服务配置。
  • web1 和 web2 都引用了这个基础配置,并分别设置了自己独特的 container_name 和 environment

应用场景

YAML 因其简洁性和易读性,在许多领域得到了广泛应用:

  • 配置管理:例如 Docker Compose 文件、Kubernetes 配置文件等。
  • 持续集成/持续部署 (CI/CD):如 Jenkins、GitLab CI 等工具的配置。
  • 云服务配置:AWS CloudFormation 模板、Azure Resource Manager 模板等。
  • 应用程序配置:许多现代框架和库都支持 YAML 格式的配置文件。

例:Docker Compose 文件

以下是一个简单的 Docker Compose 文件示例,展示了如何使用 YAML 来定义多个容器的服务。

 YAML 是一种非常强大且灵活的数据序列化格式,特别适合用于配置文件和数据交换。它通过简洁的语法和丰富的功能,帮助开发者创建清晰、易于维护的配置文件。

标签:文件,配置文件,映射,介绍,配置,别名,YAML,锚点
From: https://www.cnblogs.com/yansunda/p/18621421

相关文章

  • CHM助手 >> 工程文件(HHP)
      1CHM工程文件说明(HHP)  扩展名为.hhp的文件为CHM工程文件,该文件定义了chm文件的标题、目录文件、索引文件、字体、语言等,如下是一段CHM助手使用手册的hhp文档:[OPTIONS]Compatibility=1.1orlaterCompiledfile=CHM助手(CHMEE).chmContentsfile=html_to_chm.......
  • CHM助手 >> 目录文件(HHC)
      1CHM目录文件说明(HHC)1.1概述  hhc目录文件是chm帮助的核心,它定义了chm帮助文件的目录层次结构,以及关联目录和对应的html文件,如下是一个hhc文件的样例内容:<!DOCTYPEHTMLPUBLIC"-//IETF//DTDHTML//EN"><HTML><HEAD><metaname="GENERATOR"content="Powe......
  • CHM助手 >> 索引文件(HHK)
      1CHM索引文件说明(HHK)1.1概述  索引文件决定了CHM文件中“索引”标签页中显示的内容,索引文件脱胎于目录文件,但又区别于目录文件,目录文件可以显示帮助的章节层次结构,但索引文件不需要显示层次结构,且一个页面可以有多个关键字,且在索引标签中,多个关键字对应一个页面......
  • VC++ Windows Socket 传输文件
    服务端//服务端#include<cstdio>#include<cstdlib>#include<WinSock2.h>#include<Ws2tcpip.h>//inet_pton函数所在头文件#pragmacomment(lib,"ws2_32.lib")//加载ws2_32.dll#defineBUF_SIZE1024intmain(){ //检查文件是否存在 con......
  • 实验6 模板类、文件I/O和异常处理
    task1:1//Complex.hpp2#pragmaonce34#include<iostream>5#include<stdexcept>67//声明8////////////////////////////////////////////////////9//复数模板类声明10template<typenameT>11classComplex{12pub......
  • java微服务中使用redis做缓存技术的应用场景介绍和代码实现
    在Java微服务架构中,Redis作为一种高性能的内存数据结构存储系统,常被用作缓存技术。Redis支持多种数据结构(如字符串、哈希、列表、集合、有序集合等),并且提供了丰富的命令集和高效的读写性能,非常适合用于缓存场景。以下是Redis在Java微服务中的常见应用场景及其代码实现示例。1.......
  • Exif Pilot 是一款用于查看、编辑、创建和管理图像文件中 EXIF 数据的工具。EXIF(Excha
    ExifPilot是一款用于查看、编辑、创建和管理图像文件中EXIF数据的工具。EXIF(ExchangeableImageFileFormat)是照片、图像和其他多媒体文件中嵌入的元数据标准,通常包含图像拍摄时的相关信息,如拍摄日期、相机设置、GPS位置、分辨率、白平衡等。ExifPilot的功能查看EXIF......
  • CMake 语法简单整理 项目文件最后
    基本命令#HeadEnlargerWithCMake#CMake真是十分甚至九分的令人头大喵message("\n======================================================================")message("--基本命令喵")message("========================================================......
  • 实验6 模板类、文件I/O和异常处理
    任务一:Complex.hpp#pragmaonce#include<iostream>#include<stdexcept>//声明//////////////////////////////////////////////////////复数模板类声明template<typenameT>classComplex{public:Complex(Tr=0,Ti=0);Complex(const......
  • HarmonyOS Next开发工具DevEco Studio介绍:ASan与TSan检测根治你的C++恐惧症
    1、背景介绍很多开发者面对C++都很犯怵,其中主要的一块就是内存操作。不合理的内存操作,比如数组越界、内存泄露、释放已释放的地址,可能会引起程序性能问题:内存消耗大,卡顿,更严重的会导致程序出现崩溃。当应用运行发生错误使应用进程终止时,应用将会抛出错误日志以通知应用崩溃......