自学内容网 自学内容网

yaml 学习笔记

一、yaml 介绍

1.1 yaml 介绍

YAML(YAML Ain’t Markup Language)是一种人类可读的数据序列化格式,通常用于配置文件和数据交换。它由Clark Evans在2001年创建,旨在成为一种简单、直观且易于理解的格式。以下是YAML的一些关键特点和优势:

  1. 简洁性

    • YAML的设计目标是尽可能简洁,易于阅读和编写。它使用缩进来表示层次结构,而不是像XML那样的标签。
  2. 易读性

    • YAML文件的可读性非常高,适合人类阅读和编辑,而不仅仅是机器解析。
  3. 灵活性

    • YAML支持多种数据类型,包括标量(如字符串、整数、浮点数)、序列(列表)、映射(键值对集合)等。
  4. 扩展性

    • 可以通过YAML标签和锚点实现数据的扩展和重用。
  5. 跨语言支持

    • YAML被广泛支持,有多种编程语言的库可以解析和生成YAML格式的数据。
  6. 数据表示

    • YAML提供了多种方式来表示数据,例如使用连字符(-)表示列表项,使用冒号(:)表示键值对。
  7. 缩进敏感

    • YAML使用缩进来表示数据的层次结构,不同的缩进级别表示不同的数据层级。
  8. 注释支持

    • YAML支持使用井号(#)添加注释,这使得配置文件更加易于理解和维护。
  9. 数据转换

    • YAML可以轻松地与其他格式(如JSON)进行转换,许多库都提供了这种转换功能。
  10. 安全性

    • YAML文件通常不包含执行代码,这使得它们在安全性方面比某些其他格式更优。

YAML的基本语法

  • 标量:基本的数据类型,如字符串、整数、浮点数。

    age: 25
    message: "Hello, YAML!"
    
  • 序列:有序的集合,使用连字符(-)表示。

    fruits:
      - apple
      - banana
      - orange
    
  • 映射:无序的键值对集合,使用冒号(:)表示。

    person:
      name: John Doe
      age: 30
    
  • 复合结构:可以组合使用序列和映射。

    employees:
      - name: John Doe
        age: 30
      - name: Jane Smith
        age: 28
    
  • 注释

    # This is a comment
    configuration: production
    

应用场景

  • 配置文件:用于应用程序的配置。
  • 数据交换:在不同的系统或应用程序之间交换数据。
  • 文档存储:存储结构化数据,如数据库模式或文档元数据。

YAML因其简洁和易读性,已经成为许多项目的首选配置文件格式。

1.2 yaml 教程

1.3 yaml 在线工具

1.4 yaml 出现背景

YAML(YAML Ain’t Markup Language)是一种用于数据序列化的语言,它被设计为易于人类阅读和编写,同时机器解析也相对简单。以下是 YAML 的历史和出现背景的详细介绍:

出现背景

  1. 可读性:传统的数据表示格式如 XML 和 JSON 虽然易于机器解析,但对人类来说阅读和编写较为繁琐。YAML 的设计初衷是提高数据表示的可读性。
  2. 简洁性:YAML 使用缩进来表示层级结构,避免了大量结束标签的使用,使得数据结构更加直观和简洁。
  3. 通用性:YAML 被设计为一种通用的数据交换格式,可以用于配置文件、数据存储、网络通信等多种场景。

发展历程

  1. 2001年:YAML 的概念首次被提出。当时,Bruce Potter 和 Clark Evans 在他们的项目中需要一种新的数据表示方法,他们开始探索一种更易于人类阅读和编写的格式。
  2. 2006年:Orson Peters 和 Kirill Simonov 重新设计了 YAML 的语法,发布了 YAML 1.1 版本。这个版本引入了许多新的特性,如标签、多文档支持等。
  3. 2009年:YAML 1.2 版本发布,进一步改进了语言的规范和解析器的实现。YAML 1.2 版本增加了对 Unicode 的支持,改进了解析器的错误处理机制。

语言特性

  1. 缩进:YAML 使用缩进来表示层级结构,每个层级的缩进通常是两个空格。
  2. 无括号:YAML 不使用括号来表示数据结构,而是使用缩进和冒号(:)来分隔键值对。
  3. 多文档:YAML 支持在一个文件中包含多个文档,每个文档之间用 --- 分隔。
  4. 数据类型:YAML 支持多种数据类型,包括标量(如字符串、整数、浮点数)、序列(如列表、数组)和映射(如字典、哈希表)。
  5. 标签:YAML 允许使用标签来指定数据的类型,提高数据的表达能力。

YAML 的设计哲学是“人类可读性优于机器可读性”,这使得它在需要人类参与和编辑的场景中非常受欢迎。随着技术的发展,YAML 也在不断地演进和改进,以满足更多的应用需求。

二、C/C++ yaml 库选型


在这里插入图片描述

在这里插入图片描述

2.2 libfyaml

在这里插入图片描述

2.3 yaml-cpp

在这里插入图片描述

mkdir build; cd build

# cmake [-G generator] [-DYAML_BUILD_SHARED_LIBS=on|OFF] ..

# 默认编译静态库
cmake -DCMAKE_INSTALL_PREFIX=$PWD/install ..

# 配置编译动态库
cmake -DCMAKE_INSTALL_PREFIX=$PWD/install -DYAML_BUILD_SHARED_LIBS=on ..

# 开启TEST
cmake -DCMAKE_INSTALL_PREFIX=$PWD/install -DYAML_CPP_BUILD_TESTS=ON ..

原文地址:https://blog.csdn.net/mayue_web/article/details/140492967

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!