当前位置: 首页 > news >正文

C/C++ xml库

文章目录

  • 一、介绍
    • 1.1 xml 介绍
    • 1.2 xml 标准
    • 1.3 xml 教程
    • 1.4 xml 构成
  • 二、C/C++ xml 库选型
    • 2.1 选型范围
    • 2.2 RapidXML
    • 2.3 tinyxml2
    • 2.4 pugixml
    • 2.5 libxml++
  • 五、性能比较
    • 5.1 C++ xml 相关的操作有哪些
    • 5.2 rapidxml、Pugixml、TinyXML2 文件读取性能比较
  • 六、其他问题
    • 6.1 version和 encoding的取值范围

一、介绍

1.1 xml 介绍

XML(eXtensible Markup Language,可扩展标记语言)是一种标记语言,主要用于存储和传输数据。它定义了数据的结构和语义,但不定义数据的呈现方式。XML 是一种自描述的语言,易于理解和使用。以下是 XML 的一些关键特点:

  1. 可扩展性:用户可以定义自己的标签,使其适应不同的需求。
  2. 自描述性:标签本身描述了数据的内容和结构。
  3. 简洁性:与HTML相比,XML标签更简洁,减少了冗余。
  4. 可读性:标签清晰,易于人类阅读和理解。
  5. 跨平台:可以在任何操作系统上使用,与平台无关。
  6. 数据交换:广泛用于不同系统之间的数据交换。

1.2 xml 标准

  • XML 1.0:1998年2月首次发布,是XML的基础版本。
  • XML 1.0 第二版:2000年10月发布,包含了一些修正和澄清。
  • XML 1.1:2001年2月发布,旨在解决XML 1.0中的一些问题,特别是字符编码和特殊字符的处理。
  • XML 1.1 第二版:2006年4月发布,包含了对XML 1.1的一些小的修正和改进。(改进了字符编码处理,支持更多的 Unicode 字符)

要查看 XML 的历史规范和标准,可以访问以下资源:

  1. W3C 官方网站

    • https://www.w3.org/TR/
    • 这是查看 XML 规范和其他 Web 标准的主要资源。
  2. XML 1.0 规范

    • https://www.w3.org/TR/REC-xml/
    • https://www.w3.org/TR/xml11/
    • https://www.w3.org/TR/2008/REC-xml-20081126/
  3. XML 1.1 规范

    • https://www.w3.org/TR/xml11/
    • https://www.w3.org/TR/2006/REC-xml11-20060816/
  4. W3C XML 活动页面

    • https://www.w3.org/XML/
    • 提供了关于 XML 技术的最新信息和资源。
  5. 互联网档案馆

    • https://archive.org/
    • 有时可以找到早期的规范文档和历史版本。

通过这些资源,你可以获取 XML 的详细规范、历史版本和相关的技术文档。这有助于了解 XML 的发展历史和当前标准。

1.3 xml 教程

  • XML 简介
  • https://www.runoob.com/
  • https://www.w3school.com.cn/xml/index.asp
  • https://www.cnblogs.com/antLaddie/p/14823874.html
  • DOM 和 SAX

在这里插入图片描述

1.4 xml 构成

XML(Extensible Markup Language,可扩展标记语言)文档由以下基本构成要素组成:

  1. XML声明 (<?xml version="1.0" encoding="UTF-8"?>): 可选的,位于文档最开始,用来指定XML版本和字符编码等信息。

  2. 元素 (Elements): XML文档的基本构建块,有开始标签(如 <item>)和结束标签(如 </item>),元素可以包含文本、其他元素或者属性。

  3. 属性 (Attributes): 元素可以有属性,用来提供额外信息。属性在元素的开始标签内定义(如 <item id="123">),属性值必须加引号。

  4. 文本 (Text): 元素内部的字符数据,可以是文本或者实体引用。

  5. 注释 (Comments): 以 <!-- 开始,--> 结束,用于添加文档的注释信息,它们在XML文档中会被忽略。

  6. 处理指令 (Processing Instructions): 以 <? 开始,?> 结束,用于提供处理器指令(如XML声明),通常用于指定文档相关的配置信息。

  7. 文档类型声明 (Document Type Declaration, DTD): 以 <!DOCTYPE 开始,用来定义文档的结构和元素的合法性规则,可以包含元素和属性的声明。

  8. CDATA区 (Character Data): 以 <![CDATA[ 开始,]]> 结束,用来包含不应被XML解析器解析的文本。

  9. 实体 (Entities): 可以是字符引用(如 &lt; 表示 <)或实体引用(如 &copy; 表示版权符号),用于表示特殊或不可见的字符。

  10. 命名空间 (Namespaces): 用于区分相同名称的不同元素和属性,避免命名冲突。

  11. 属性列表 (Attribute List): 某些元素可以有一系列的属性,这些属性提供了关于元素的附加信息。

一个简单的XML文档示例如下:

<?xml version="1.0" encoding="UTF-8"?>
<catalog><book id="bk101"><author>Gambardella, Matthew</author><title>XML Developer's Guide</title><genre>Computer</genre><price>44.95</price><publish_date>2000-10-01</publish_date><description>An in-depth look at creating applications with XML.</description></book><!-- More book elements can go here -->
</catalog>

在这个示例中,catalog 是根元素,book 是子元素,每个 book 元素有多个子元素如 authortitle 等,以及一个 id 属性。

二、C/C++ xml 库选型

2.1 选型范围

  • 资料
    • https://rapidxml.sourceforge.net/manual.html
    • C/C++ xml库比较
    • xml解析库对比总结(解析方式,第三方库,TinyXml)
    • 深入对比XML处理库:Mini-XML、TinyXML-2与libxml2
    • C++类库Pugixml与rapidxml性能评测
  • 开源库
    1. RapidXML、cereal-RapidXML:仅DOM方式、速度快、v1.3 2009
    2. pugixml:仅DOM方式、速度快、支持XPath1.0查询、C++、好集成、v10.0.0 2023-10-31
    3. libxml
      • libxml2:C
      • libxml++:C++
    4. tinyxml2:C++、好集成、API简单
  • 结论
    • 性能:RapidXML 和 PugiXML 在解析大型XML文件时表现优异。 (时间和空间)
    • 易用性:TinyXML2 和 PugiXML 的API设计简洁直观,易于学习和使用。
    • 功能全面性:libxml2 和 libxml++ 提供了最全面的功能,包括XML验证、XPath查询和XSLT转换-
    • 选择哪个库取决于你的具体需求,例如是否需要XPath支持、是否需要处理大型文件、是否需要C++绑定等。根据这些因素,你可以决定最适合你项目的XML库。

在这里插入图片描述

2.2 RapidXML

  • 注意:cereal 序列化库选用RapidXML和RapidJSON,可见其性能强劲。
  • 官网: https://rapidxml.sourceforge.net/
    • 最新版本和更新时间:v1.3 2009/05/13 01:46:17
  • 官网手册: https://rapidxml.sourceforge.net/manual.html
  • 第三方源码:https://github.com/Fe-Bell/RapidXML
  • c++开源库rapidxml介绍与示例
  • rapidxml 文件读写,增加删除节点

2.3 tinyxml2

  • https://github.com/leethomason/tinyxml2
  • 最新版本和更新时间:v10.0.0 2023-10-31
  • C++那些事之优雅的解析XML
  • TinyXML2使用教程
  • tinyxml2使用方法
  • C++ XML 库 TinyXML2 的基本使用

使用方式:

  1. 源码集成:仅 tinyxml2.h 和 tinyxml2.cpp 两个文件
  2. 库集成:tinyxml2.h 和 静/动态库

在这里插入图片描述

2.4 pugixml

  • Pugixml一种快速解析XML文件的开源解析库
  • 官网:https://pugixml.org/
  • 源码:https://github.com/zeux/pugixml
    • 当前最新版本和更新时间:v1.14_2023-10-02
  • C/C++编程:pugixml
  • https://www.cnblogs.com/Gale-Tech/p/16089326.html
  • https://blog.csdn.net/FL1768317420/article/details/136385775
    在这里插入图片描述

2.5 libxml++

  • https://libxmlplusplus.sourceforge.net/

  • https://libxmlplusplus.github.io/libxmlplusplus/

  • https://github.com/libxmlplusplus/libxmlplusplus

  • libxml2:

    • 官网地址:http://xmlsoft.org/
    • 源码地址:http://xmlsoft.org/sources/

在这里插入图片描述

五、性能比较

5.1 C++ xml 相关的操作有哪些

在 C++ 中,XML 相关的操作可以通过多种库来实现,这些操作包括但不限于:

  1. 解析(Parsing)

    • 将 XML 字符串或文件解析为一个可操作的内部结构,通常是 DOM(Document Object Model)。
  2. 序列化(Serialization)

    • 将 DOM 或其他内存中的结构转换回 XML 格式的字符串或写入文件。
  3. 查询(Querying)

    • 使用 XPath 表达式在 XML 文档中查找特定的元素或属性。
  4. 修改(Modifying)

    • 编辑 XML 文档的内容,包括添加、删除或更改元素和属性。
  5. 创建(Creating)

    • 从头开始构建 XML 文档,添加元素和属性。
  6. 验证(Validating)

    • 检查 XML 文档是否符合某个模式(如 DTD 或 XML Schema)。
  7. 遍历(Traversal)

    • 通过 DOM 遍历 XML 文档的节点。
  8. 操作属性(Manipulating Attributes)

    • 获取和设置 XML 元素的属性。
  9. 处理命名空间(Handling Namespaces)

    • 管理 XML 文档中的命名空间。
  10. 事件驱动解析(Event-driven Parsing)

    • 使用 SAX(Simple API for XML)风格的接口进行事件驱动的解析。
  11. 转换(Transformation)

    • 使用 XSLT(eXtensible Stylesheet Language Transformations)转换 XML 文档。
  12. 生成(Generation)

    • 动态生成 XML 数据,例如作为 API 响应。

在 C++ 中,一些流行的 XML 处理库包括:

  • TinyXML and TinyXML-2:轻量级的 XML 解析库,提供基本的解析和序列化功能,但不直接支持 XPath。
  • RapidXML:一个快速的、不使用异常的 DOM 解析器,同样不提供 XPath 支持。
  • libxml2:一个功能全面的 XML 库,支持 DOM、SAX、XPath 和 XSLT。
  • PugiXML:一个轻量级的、简单易用的 XML 解析库,支持 XPath 查询。
  • Xerces-C++:一个基于 Apache Xerces 的 XML 解析库,支持 DOM、SAX 和 XPath。

使用这些库,开发者可以执行上述的 XML 操作,以满足不同的开发需求。选择哪个库取决于项目的具体需求、性能考虑以及个人偏好。

5.2 rapidxml、Pugixml、TinyXML2 文件读取性能比较

  • 测试: 读文件
  • 结论:
    • 小文件:rapidxml 速度 >> Pugixml ≈ TinyXML2
    • 大文件:Pugixml > rapidxml > TinyXML2
// g++ -o test-xml main.cpp pugixml-1.14/pugixml.cpp tinyxml2-10.0.0/tinyxml2.cpp
#include <iostream>
#include "pugixml-1.14/pugixml.hpp"
#include "pugixml-1.14/pugiconfig.hpp"
#include <sys/time.h>#include "rapidxml-1.13/rapidxml.hpp"
#include "rapidxml-1.13/rapidxml_print.hpp"
#include "rapidxml-1.13/rapidxml_utils.hpp"#include "tinyxml2-10.0.0/tinyxml2.h"using namespace std;#define TEST_TIMES 10int pugixmltestmain( void )
{pugi::xml_document doc;timeval starttime, endtime;double timeuse = 0.;double timeAverage = 0.;for( int i = 0; i < TEST_TIMES; ++i ){gettimeofday( &starttime, 0 );if( !doc.load_file( "xml/login.xml" ) ){cout << "failed in load xml file! _ " << i << endl;continue;}gettimeofday( &endtime, 0 );timeuse = 1000000. * (endtime.tv_sec - starttime.tv_sec) + endtime.tv_usec - starttime.tv_usec;timeuse *= 0.001 ;cout << " reading files costs : " << timeuse << "ms" << endl;timeAverage += timeuse;}timeAverage /= TEST_TIMES;cout << " \n** The end *******************\n  pugixmltest  the average costs = " << timeAverage << "ms\r\n\r\n" << endl;return 0;
}using namespace rapidxml;
using std::cout;
using std::endl;int rapidxmltestmain()
{timeval starttime, endtime;double timeuse = 0.;double timeAverage = 0.;//< parse xmlfor( int i = 0 ; i < TEST_TIMES; ++i ){rapidxml::file<> filename( "xml/login.xml" );xml_document<> doc;gettimeofday( &starttime, 0 );doc.parse<0>( filename.data() );gettimeofday( &endtime, 0 );timeuse = 1000000. * (endtime.tv_sec - starttime.tv_sec) + endtime.tv_usec - starttime.tv_usec;timeuse *= 0.001 ;cout << " reading files costs : " << timeuse << "ms" << endl;doc.clear();timeAverage += timeuse;}timeAverage /= TEST_TIMES;cout << " \n** The end *******************\n  rapidxmltest  the average costs = " << timeAverage << "ms\r\n\r\n" << endl;return 0;
}using namespace tinyxml2;
int tinyxml2testmain( void )
{XMLDocument doc;// doc.LoadFile( "resources/dream.xml" );// doc.ErrorID();timeval starttime, endtime;double timeuse = 0.;double timeAverage = 0.;for( int i = 0; i < TEST_TIMES; ++i ){gettimeofday( &starttime, 0 );if( XML_SUCCESS != doc.LoadFile( "xml/login.xml" ) ){cout << "failed in load xml file! _ " << i << endl;continue;}gettimeofday( &endtime, 0 );timeuse = 1000000. * (endtime.tv_sec - starttime.tv_sec) + endtime.tv_usec - starttime.tv_usec;timeuse *= 0.001 ;cout << " reading files costs : " << timeuse << "ms" << endl;timeAverage += timeuse;}timeAverage /= TEST_TIMES;cout << " \n** The end *******************\n  tinyxml2test  the average costs = " << timeAverage << "ms\r\n\r\n" << endl;return 0;
}
int main()
{pugixmltestmain();rapidxmltestmain();tinyxml2testmain();
}

如果没有xml文件 就在测试目录增加一个xml目录,里面创建login.xml
Xml内容如下

<?xml version="1.0"?>
<Request><PK_Type><Name>LOGIN</Name></PK_Type><Info><UserName>admin</UserName><PassWord>21232f297a57a5a743894a0e4a801fc3</PassWord><FSUID>26201907030003</FSUID><FSUIP>172.16.88.192</FSUIP><FSUMAC>00-0c-29-de-4c-58</FSUMAC><FSUVER>1.0.01</FSUVER></Info>
</Request>
  • 测试大文件:197KB
    在这里插入图片描述
  • 测试小文件:1KB
    在这里插入图片描述

六、其他问题

6.1 version和 encoding的取值范围

<?xml version="1.0" encoding="ISO-8859-1"?>其中version和 encoding的取值范围在哪可以查

<?xml version="1.0" encoding="ISO-8859-1"?> 是 XML 文档的声明,位于文档的最前面。这个声明用于告诉解析器有关 XML 文档的版本和编码信息。

  • version 属性指定了 XML 文档使用的 XML 版本,目前最常见的是 “1.0”。W3C 定义的 XML 1.0 标准有两个版本:1.0 和 1.1。因此,version 属性的取值范围通常为 “1.0” 或 “1.1”。

  • encoding 属性指定了 XML 文档使用的字符编码。XML 允许使用多种字符编码,包括但不限于:

    • UTF-8
    • UTF-16
    • ISO-8859-1(Latin-1 Western European)
    • ISO-8859-2(Latin-2 Central European)
    • ISO-8859-3(Latin-3 South European)
    • ISO-8859-4(Latin-4 North European)
    • ISO-8859-5(Latin/Cyrillic)
    • ISO-8859-6(Latin/Arabic)
    • ISO-8859-7(Latin/Greek)
    • ISO-8859-8(Latin/Hebrew)
    • ISO-8859-9(Latin-5 Turkish)
    • 等等

要查找 versionencoding 的取值范围,可以查阅以下资源:

  1. XML 1.0 标准:定义了 XML 的基本语法和行为,包括版本信息。可以在 W3C 的官方网站上找到:XML 1.0 Specification。

  2. XML 1.1 标准:在 XML 1.0 的基础上做了一些扩展,包括对更多字符编码的支持。可以在 W3C 的官方网站上找到:XML 1.1 Specification。

  3. 字符编码标准:如 IANA(Internet Assigned Numbers Authority)Character Sets 列出了多种字符编码。

  4. W3C 的 Encoding 标准:提供了关于 Web 文档字符编码的详细信息,包括如何在 HTTP 头部和 HTML 中指定编码:Character Encoding for HTML & XML。

通过这些资源,您可以找到所有有效的 XML 版本和编码选项,以及它们的使用方式和限制。

相关文章:

C/C++ xml库

文章目录 一、介绍1.1 xml 介绍1.2 xml 标准1.3 xml 教程1.4 xml 构成 二、C/C xml 库选型2.1 选型范围2.2 RapidXML2.3 tinyxml22.4 pugixml2.5 libxml 五、性能比较5.1 C xml 相关的操作有哪些5.2 rapidxml、Pugixml、TinyXML2 文件读取性能比较 六、其他问题6.1 version和 e…...

UniVue@v1.5.0版本发布:里程碑版本

前言 以后使用UniVue都推荐使用1.5.0以后的版本&#xff0c;这个版本之后&#xff0c;更新的速度将会放缓。 希望这个框架能够切实的帮助大家更好的开发游戏&#xff0c;做出一款好游戏&#xff01;本开源项目采用的开源协议为MIT协议&#xff0c;完全开源化&#xff0c;以后也…...

在 Windows 上开发.NET MAUI 应用_2.生成你的第一个应用

先决条件 Visual Studio 2022 17.8 或更高版本&#xff0c;并安装了 .NET Multi-platform App UI 工作负载。 可参考上一篇文章&#xff1a;http://t.csdnimg.cn/n38Yy 创建应用 1.启动 Visual Studio 2022。 在开始窗口中&#xff0c;单击“创建新项目”以创建新项目&#…...

配置SMTP服务器的要点是什么?有哪些限制?

配置SMTP服务器安全性如何保障&#xff1f;如何高效配置服务器&#xff1f; SMTP作为电子邮件发送的核心协议&#xff0c;其配置对于确保邮件的成功传递和安全至关重要。AokSend将详细介绍配置SMTP服务器的关键要点&#xff0c;帮助读者建立一个高效、安全的邮件发送系统。 配…...

图形渲染基础-Unity渲染管线介绍

Unity中的渲染管线渲染场景主要分为三个阶段 剔除&#xff08;Culling&#xff09; 剔除摄像机不可见对象&#xff08;视锥体剔除Frustum Culling&#xff09;和被遮挡对象&#xff08;遮挡剔除Occlusion Culling&#xff09;。 渲染&#xff08;Rendering&#xff09; 将可见…...

junit mockito service

service类单元测试可以有两种方式 1、使用Autowired启用上下文的Bean走业务逻辑&#xff0c;适用于debug调试 2、使用InjectMocks不启用上下文依懒的Bean采用打桩的形式 打桩注意&#xff1a;service通常业务逻辑复杂&#xff0c;Bean的依懒层次可能很深&#xff0c;初用者常…...

k8s学习——升级后的k8s使用私有harbor仓库

升级后的k8s使用了第三方的容器管理器&#xff0c;安装了nerdctl工具来替代docker进行镜像管理。但是使用docker build打包并上传至harbor仓库的镜像&#xff0c;在部署过程中始终拉不下来&#xff0c;报错证书错误。通过journalctl -xe |grep kubelet 或 journalctl -xe |grep…...

Blender4.2版本正式上线,新版本的5个主要功能!

​Blender刚刚推出了备受瞩目的 Blender 4.2 版本&#xff0c;这款软件专为那些在视觉特效、动画制作、游戏开发和可视化设计领域工作的艺术家们量身打造。作为最新的长期稳定更新&#xff0c;Blender 4.2 不仅稳定可靠&#xff0c;还引入了备受期待的“Eevee Next”实时渲染引…...

【python基础】基本数据类型

文章目录 一. Python基本数据类型1. 整数1.1. python的四种进制1.2. 数中的下划线 2. 浮点数3. 复数4. 布尔型5. 运算符5.1. 算术运算符5.2. 比较运算符5.3. 逻辑运算符5.4 运算符优先级 6. 常量 二. 注释三. Python之禅 一. Python基本数据类型 1. 整数 无长度限制&#xff1…...

应用层——HTTP

像我们电脑和手机使用的应用软件就是在应用层写的&#xff0c;当我们的数据需要传输的时候换将数据传递到传输层。 应用层专门给用户提供应用功能&#xff0c;比如HTTP,FTP… 我们程序员写的一个个解决我们实际的问题都在应用层&#xff0c;我们今天来聊一聊HTTP。 协议 协议…...

剧本杀小程序搭建,为商家带来新的收益方向

近几年&#xff0c;剧本杀游戏成为了游戏市场的一匹黑马&#xff0c;受到了不少年轻玩家的欢迎。随着信息技术的快速发展&#xff0c;传统的剧本杀门店已经无法满足游戏玩家日益增长的需求&#xff0c;因此&#xff0c;剧本杀市场开始向线上模式发展&#xff0c;实现行业数字化…...

十六、【机器学习】【监督学习】- 支持向量回归 (SVR)

系列文章目录 第一章 【机器学习】初识机器学习 第二章 【机器学习】【监督学习】- 逻辑回归算法 (Logistic Regression) 第三章 【机器学习】【监督学习】- 支持向量机 (SVM) 第四章【机器学习】【监督学习】- K-近邻算法 (K-NN) 第五章【机器学习】【监督学习】- 决策树…...

基于FPGA的多路选择器

目录 一、组合逻辑 二、多路选择器简介&#xff1a; 三、实战演练 摘要&#xff1a;本实验设计并实现了一个简单的多路选择器&#xff0c;文章后附工程代码 一、组合逻辑 组合逻辑是VerilogHDL设计中的一个重要组成部分。从电路本质上讲&#xff0c;组合逻辑电路的特点是输…...

面经学习(杭州实在智能实习)

个人评价 秃狼觉得本次的面试是有史以来难度最大的&#xff0c;问了很多陌生的八股文&#xff0c;项目问的比较少&#xff0c;估计是项目本来就没有什么亮点&#xff0c;也是第一次被面试官说菜的面试。不过在后续的学习上还是收获颇丰的。 1.说说你在实习中遇到的难点吧&…...

mysql、oracle、db2数据库连接参数

mysql、oracle、db2数据库连接参数 参数/数据库driverurlMysqlcom.mysql.jdbc.Driver 或 com.mysql.cj.jdbc.Driverjdbc:mysql://localhost:3306/数据库名Oracleoracle.jdbc.driver.OracleDriverjdbc:oracle:thin:localhost:1521:orcl 注&#xff1a;orcl为数据库SIDDB2com.ib…...

redis缓存击穿和缓存穿透的封装、缓存更新的CacheAside方案、数据预热

redis缓存击穿和缓存穿透的封装 一、首先是互斥锁二、封装为工具类三、调用四、数据预热五、缓存更新的CacheAside方案 &#xff08;来源黑马redis&#xff09; 一、首先是互斥锁 //拿到锁private boolean tryLock(String key) {Boolean flag stringRedisTemplate.opsForValue…...

ArcGIS Pro SDK (九)几何 5 多边形

ArcGIS Pro SDK &#xff08;九&#xff09;几何 5 多边形 文章目录 ArcGIS Pro SDK &#xff08;九&#xff09;几何 5 多边形1 构造多边形 - 从映射点的枚举2 构造多边形 - 从包络3 获取多边形的点4 获取多边形的各个部分5 枚举多边形的各个部分6 获取多边形的线段7 构建圆环…...

Docker 镜像使用和安装

​ 1、简介 Docker是一个开源的应用容器引擎&#xff1b;是一个轻量级容器技术&#xff1b; Docker支持将软件编译成一个镜像&#xff1b;然后在镜像中各种软件做好配置&#xff0c;将镜像发布出去&#xff0c;其他使用者可以直接使用这个镜像&#xff1b; 运行中的这个镜像…...

JAVA:Filer过滤器+案例:请求IP访问限制和请求返回值修改

JAVA&#xff1a;Filer过滤器 介绍 Java中的Filter也被称为过滤器&#xff0c;它是Servlet技术的一部分&#xff0c;用于在web服务器上拦截请求和响应&#xff0c;以检查或转换其内容。 Filter的urlPatterns可以过滤特定地址http的请求&#xff0c;也可以利用Filter对访问请求…...

FastAPI -- 第三弹(自定义响应、中间件、代理、WebSockets)

路径操作的高级配置 OpenAPI 的 operationId from fastapi import FastAPIapp FastAPI()# 通过 operation_id 参数设置 app.get("/items/", operation_id"some_specific_id_you_define") async def read_items():return [{"item_id": "F…...

网安小贴士(16)网络安全体系

前言 网络安全体系是一个综合性的系统&#xff0c;旨在保护网络系统中的硬件、软件和数据免受未经授权的访问、泄露、破坏或篡改。这个体系涉及多个方面&#xff0c;包括网络安全策略、安全技术和安全管理等。 一、网络安全体系概述 网络安全体系通常包括以下几个关键组成部分…...

UCOSIII 中断管理接口剖析

引言 在实时操作系统中&#xff0c;中断处理是一个非常重要的环节。理解和掌握中断处理流程对提高系统实时性和稳定性至关重要。本文将详细解析uCOS-III内核中的中断管理接口&#xff0c;包括 OSIntEnter() 和 OSIntExit() 函数的流程&#xff0c;并结合流程图对各个步骤进行说…...

windows 11 PC查询连接过的wlan密码

1:管理员打开cmd 2:输入netsh wlan show profiles 3:netsh wlan show profiles Shw2024-5G keyclear 密码关键内容&#xff1a;12345678...

npm install 出现canvas错误

npm install canvas2.8.0 --ignore-scripts只要是&#xff1a;npm ERR! Failed at the XXXX.X.X install script 这种错误 都可以&#xff1a;npm install XXXX.X.X --ignore-scripts进行更改 https://blog.csdn.net/YXWik/article/details/119039561...

Python爬虫入门篇学习记录

免责声明 本文的爬虫知识仅用于合法和合理的数据收集&#xff0c;使用者需遵守相关法律法规及目标网站的爬取规则&#xff0c;尊重数据隐私&#xff0c;合理设置访问频率&#xff0c;不得用于非法目的或侵犯他人权益。因使用网络爬虫产生的任何法律纠纷或损失&#xff0c;由使用…...

怎样对 PostgreSQL 中的慢查询进行分析和优化?

&#x1f345;关注博主&#x1f397;️ 带你畅游技术世界&#xff0c;不错过每一次成长机会&#xff01;&#x1f4da;领书&#xff1a;PostgreSQL 入门到精通.pdf 文章目录 怎样对 PostgreSQL 中的慢查询进行分析和优化&#xff1f;一、理解慢查询的危害二、找出慢查询&#x…...

Springboot项目远程部署gitee仓库(docker+Jenkins+maven+git)

创建一个Springboot项目&#xff0c;勾选web将该项目创建git本地仓库&#xff0c;再创建远程仓库推送上去 创建TestController RestController RequestMapping("/test") public class TestController { GetMapping("/hello") public String sayHelloJe…...

Chromium CI/CD 之Jenkins实用指南2024- Windows节点开启SSH服务(七)

1.引言 在现代软件开发和持续集成的过程中&#xff0c;自动化部署和远程管理是不可或缺的关键环节。SSH&#xff08;Secure Shell&#xff09;协议以其强大的安全性和灵活性&#xff0c;成为连接和管理远程服务器的首选工具。对于使用Windows虚拟机作为Jenkins从节点的开发者而…...

阿里大数据面试题集锦及参考答案(3万字长文:持续更新)

目录 MapReduce Shuffle为什么要将数据写入环形缓冲区 MapReduce Shuffle为什么容易发生数据倾斜 Hadoop HA当一个Namenode挂掉,会有数据丢失吗 数据倾斜发生的位置 Combiner了解吗? 什么情况下不能用Combiner? Sum、Count、Count(distinct)哪些能用、哪些不能用Comb…...

springboot 配置 spring data redis

1、在pom.xml引入父依赖spring-boot-starter-parent&#xff0c;其中2.7.18是最后一版支持java8的spring <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.18</…...

如何做ps4游戏视频网站/百度小说排行榜风云榜

题目描述 洛谷 P1381 单词背诵 灵梦有 n个单词想要背&#xff0c;但她想通过一篇文章中的一段来记住这些单词。 文章由 个单词构成&#xff0c;她想在文章中找出连续的一段&#xff0c;其中包含最多的她想要背的单词&#xff08;重复的只算一个&#xff09;。并且在背诵的单词…...

开源程序网站/珠海百度搜索排名优化

目录 0 参考列表 1 概念 1.1 特点 2 系统架构 2.1 架构组成 2.2 分块存储及副本机制 3 执行原理 3.1 写数据 3.2 读数据 4 使用 4.1 访问 4.2 HDFS Shell 0 参考列表 CSDN:HDFS特点&#xff0c;底层结构&#xff0c;重要组成部分、安全模式&#xff0c;重要进程&a…...

重庆网站开发建设/新媒体培训

问题描述 使用Popup控件作为弹出框&#xff0c;使用相对位置弹出即Placement“Relative”&#xff0c;在不同的设备中弹出的位置不一致。比如下面的例子。 使用如下代码&#xff1a; <Window x:Class"WpfApp1.MainWindow"xmlns"http://schemas.microsoft.c…...

做网站要学那些东西/ios aso优化工具

开头 这里是一些个人开发者接私活和自己做软件加广告的一些科普知识。可是做软件&#xff0c;需要服务器&#xff0c;需要后台&#xff0c;对于一些小的开发者&#xff0c;想赚点广告费而又不想做后台使用服务器的人来说&#xff0c;网上提供了一些免费的接口&#xff0c;可以…...

专门做国外家具书籍的网站/百度网站排名优化

育软件、程序设计软件、网络软件、工具软件。(三)Word文字处理【教学目的与要求】1、通过本部分的学习&#xff0c;了解Word窗口的组成部分&#xff1b;了解在Word中插入与编辑公式的方法&#xff1b;2、理解Word文字排版中的常见概念&#xff1b;理解word中表格的行、列、单元…...

淘宝手机网站模板下载安装/株洲seo优化报价

在工作学习中总能听到设计模式的概念&#xff0c;虽然之前也系统的了解过一些&#xff0c;但是长时间不用难免会忘记。如下是收集整理的相关模式概念&#xff0c;每当忘记的时候可以根据这样的概念线索勾起记忆&#xff0c;自行脑补代码实现即可。 一、设计模式分类 总体来说…...