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 的一些关键特点:
- 可扩展性:用户可以定义自己的标签,使其适应不同的需求。
- 自描述性:标签本身描述了数据的内容和结构。
- 简洁性:与HTML相比,XML标签更简洁,减少了冗余。
- 可读性:标签清晰,易于人类阅读和理解。
- 跨平台:可以在任何操作系统上使用,与平台无关。
- 数据交换:广泛用于不同系统之间的数据交换。
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 的历史规范和标准,可以访问以下资源:
-
W3C 官方网站:
- https://www.w3.org/TR/
- 这是查看 XML 规范和其他 Web 标准的主要资源。
-
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/
-
XML 1.1 规范:
- https://www.w3.org/TR/xml11/
- https://www.w3.org/TR/2006/REC-xml11-20060816/
-
W3C XML 活动页面:
- https://www.w3.org/XML/
- 提供了关于 XML 技术的最新信息和资源。
-
互联网档案馆:
- 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,可扩展标记语言)文档由以下基本构成要素组成:
-
XML声明 (
<?xml version="1.0" encoding="UTF-8"?>
): 可选的,位于文档最开始,用来指定XML版本和字符编码等信息。 -
元素 (Elements): XML文档的基本构建块,有开始标签(如
<item>
)和结束标签(如</item>
),元素可以包含文本、其他元素或者属性。 -
属性 (Attributes): 元素可以有属性,用来提供额外信息。属性在元素的开始标签内定义(如
<item id="123">
),属性值必须加引号。 -
文本 (Text): 元素内部的字符数据,可以是文本或者实体引用。
-
注释 (Comments): 以
<!--
开始,-->
结束,用于添加文档的注释信息,它们在XML文档中会被忽略。 -
处理指令 (Processing Instructions): 以
<?
开始,?>
结束,用于提供处理器指令(如XML声明),通常用于指定文档相关的配置信息。 -
文档类型声明 (Document Type Declaration, DTD): 以
<!DOCTYPE
开始,用来定义文档的结构和元素的合法性规则,可以包含元素和属性的声明。 -
CDATA区 (Character Data): 以
<![CDATA[
开始,]]>
结束,用来包含不应被XML解析器解析的文本。 -
实体 (Entities): 可以是字符引用(如
<
表示<
)或实体引用(如©
表示版权符号),用于表示特殊或不可见的字符。 -
命名空间 (Namespaces): 用于区分相同名称的不同元素和属性,避免命名冲突。
-
属性列表 (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
元素有多个子元素如 author
、title
等,以及一个 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性能评测
- 开源库
- RapidXML、cereal-RapidXML:仅DOM方式、速度快、v1.3 2009
- pugixml:仅DOM方式、速度快、支持XPath1.0查询、C++、好集成、v10.0.0 2023-10-31
- libxml:
- libxml2:C
- libxml++:C++
- 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 的基本使用
使用方式:
- 源码集成:仅 tinyxml2.h 和 tinyxml2.cpp 两个文件
- 库集成: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 相关的操作可以通过多种库来实现,这些操作包括但不限于:
-
解析(Parsing):
- 将 XML 字符串或文件解析为一个可操作的内部结构,通常是 DOM(Document Object Model)。
-
序列化(Serialization):
- 将 DOM 或其他内存中的结构转换回 XML 格式的字符串或写入文件。
-
查询(Querying):
- 使用 XPath 表达式在 XML 文档中查找特定的元素或属性。
-
修改(Modifying):
- 编辑 XML 文档的内容,包括添加、删除或更改元素和属性。
-
创建(Creating):
- 从头开始构建 XML 文档,添加元素和属性。
-
验证(Validating):
- 检查 XML 文档是否符合某个模式(如 DTD 或 XML Schema)。
-
遍历(Traversal):
- 通过 DOM 遍历 XML 文档的节点。
-
操作属性(Manipulating Attributes):
- 获取和设置 XML 元素的属性。
-
处理命名空间(Handling Namespaces):
- 管理 XML 文档中的命名空间。
-
事件驱动解析(Event-driven Parsing):
- 使用 SAX(Simple API for XML)风格的接口进行事件驱动的解析。
-
转换(Transformation):
- 使用 XSLT(eXtensible Stylesheet Language Transformations)转换 XML 文档。
-
生成(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)- 等等
要查找 version
和 encoding
的取值范围,可以查阅以下资源:
-
XML 1.0 标准:定义了 XML 的基本语法和行为,包括版本信息。可以在 W3C 的官方网站上找到:XML 1.0 Specification。
-
XML 1.1 标准:在 XML 1.0 的基础上做了一些扩展,包括对更多字符编码的支持。可以在 W3C 的官方网站上找到:XML 1.1 Specification。
-
字符编码标准:如 IANA(Internet Assigned Numbers Authority)Character Sets 列出了多种字符编码。
-
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以后的版本,这个版本之后,更新的速度将会放缓。 希望这个框架能够切实的帮助大家更好的开发游戏,做出一款好游戏!本开源项目采用的开源协议为MIT协议,完全开源化,以后也…...
在 Windows 上开发.NET MAUI 应用_2.生成你的第一个应用
先决条件 Visual Studio 2022 17.8 或更高版本,并安装了 .NET Multi-platform App UI 工作负载。 可参考上一篇文章:http://t.csdnimg.cn/n38Yy 创建应用 1.启动 Visual Studio 2022。 在开始窗口中,单击“创建新项目”以创建新项目&#…...
配置SMTP服务器的要点是什么?有哪些限制?
配置SMTP服务器安全性如何保障?如何高效配置服务器? SMTP作为电子邮件发送的核心协议,其配置对于确保邮件的成功传递和安全至关重要。AokSend将详细介绍配置SMTP服务器的关键要点,帮助读者建立一个高效、安全的邮件发送系统。 配…...
图形渲染基础-Unity渲染管线介绍
Unity中的渲染管线渲染场景主要分为三个阶段 剔除(Culling) 剔除摄像机不可见对象(视锥体剔除Frustum Culling)和被遮挡对象(遮挡剔除Occlusion Culling)。 渲染(Rendering) 将可见…...
junit mockito service
service类单元测试可以有两种方式 1、使用Autowired启用上下文的Bean走业务逻辑,适用于debug调试 2、使用InjectMocks不启用上下文依懒的Bean采用打桩的形式 打桩注意:service通常业务逻辑复杂,Bean的依懒层次可能很深,初用者常…...
k8s学习——升级后的k8s使用私有harbor仓库
升级后的k8s使用了第三方的容器管理器,安装了nerdctl工具来替代docker进行镜像管理。但是使用docker build打包并上传至harbor仓库的镜像,在部署过程中始终拉不下来,报错证书错误。通过journalctl -xe |grep kubelet 或 journalctl -xe |grep…...
Blender4.2版本正式上线,新版本的5个主要功能!
Blender刚刚推出了备受瞩目的 Blender 4.2 版本,这款软件专为那些在视觉特效、动画制作、游戏开发和可视化设计领域工作的艺术家们量身打造。作为最新的长期稳定更新,Blender 4.2 不仅稳定可靠,还引入了备受期待的“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. 整数 无长度限制࿱…...
应用层——HTTP
像我们电脑和手机使用的应用软件就是在应用层写的,当我们的数据需要传输的时候换将数据传递到传输层。 应用层专门给用户提供应用功能,比如HTTP,FTP… 我们程序员写的一个个解决我们实际的问题都在应用层,我们今天来聊一聊HTTP。 协议 协议…...
剧本杀小程序搭建,为商家带来新的收益方向
近几年,剧本杀游戏成为了游戏市场的一匹黑马,受到了不少年轻玩家的欢迎。随着信息技术的快速发展,传统的剧本杀门店已经无法满足游戏玩家日益增长的需求,因此,剧本杀市场开始向线上模式发展,实现行业数字化…...
十六、【机器学习】【监督学习】- 支持向量回归 (SVR)
系列文章目录 第一章 【机器学习】初识机器学习 第二章 【机器学习】【监督学习】- 逻辑回归算法 (Logistic Regression) 第三章 【机器学习】【监督学习】- 支持向量机 (SVM) 第四章【机器学习】【监督学习】- K-近邻算法 (K-NN) 第五章【机器学习】【监督学习】- 决策树…...
基于FPGA的多路选择器
目录 一、组合逻辑 二、多路选择器简介: 三、实战演练 摘要:本实验设计并实现了一个简单的多路选择器,文章后附工程代码 一、组合逻辑 组合逻辑是VerilogHDL设计中的一个重要组成部分。从电路本质上讲,组合逻辑电路的特点是输…...
面经学习(杭州实在智能实习)
个人评价 秃狼觉得本次的面试是有史以来难度最大的,问了很多陌生的八股文,项目问的比较少,估计是项目本来就没有什么亮点,也是第一次被面试官说菜的面试。不过在后续的学习上还是收获颇丰的。 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 注:orcl为数据库SIDDB2com.ib…...
redis缓存击穿和缓存穿透的封装、缓存更新的CacheAside方案、数据预热
redis缓存击穿和缓存穿透的封装 一、首先是互斥锁二、封装为工具类三、调用四、数据预热五、缓存更新的CacheAside方案 (来源黑马redis) 一、首先是互斥锁 //拿到锁private boolean tryLock(String key) {Boolean flag stringRedisTemplate.opsForValue…...
ArcGIS Pro SDK (九)几何 5 多边形
ArcGIS Pro SDK (九)几何 5 多边形 文章目录 ArcGIS Pro SDK (九)几何 5 多边形1 构造多边形 - 从映射点的枚举2 构造多边形 - 从包络3 获取多边形的点4 获取多边形的各个部分5 枚举多边形的各个部分6 获取多边形的线段7 构建圆环…...
Docker 镜像使用和安装
1、简介 Docker是一个开源的应用容器引擎;是一个轻量级容器技术; Docker支持将软件编译成一个镜像;然后在镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接使用这个镜像; 运行中的这个镜像…...
JAVA:Filer过滤器+案例:请求IP访问限制和请求返回值修改
JAVA:Filer过滤器 介绍 Java中的Filter也被称为过滤器,它是Servlet技术的一部分,用于在web服务器上拦截请求和响应,以检查或转换其内容。 Filter的urlPatterns可以过滤特定地址http的请求,也可以利用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)网络安全体系
前言 网络安全体系是一个综合性的系统,旨在保护网络系统中的硬件、软件和数据免受未经授权的访问、泄露、破坏或篡改。这个体系涉及多个方面,包括网络安全策略、安全技术和安全管理等。 一、网络安全体系概述 网络安全体系通常包括以下几个关键组成部分…...
UCOSIII 中断管理接口剖析
引言 在实时操作系统中,中断处理是一个非常重要的环节。理解和掌握中断处理流程对提高系统实时性和稳定性至关重要。本文将详细解析uCOS-III内核中的中断管理接口,包括 OSIntEnter() 和 OSIntExit() 函数的流程,并结合流程图对各个步骤进行说…...
windows 11 PC查询连接过的wlan密码
1:管理员打开cmd 2:输入netsh wlan show profiles 3:netsh wlan show profiles Shw2024-5G keyclear 密码关键内容:12345678...
npm install 出现canvas错误
npm install canvas2.8.0 --ignore-scripts只要是:npm ERR! Failed at the XXXX.X.X install script 这种错误 都可以:npm install XXXX.X.X --ignore-scripts进行更改 https://blog.csdn.net/YXWik/article/details/119039561...
Python爬虫入门篇学习记录
免责声明 本文的爬虫知识仅用于合法和合理的数据收集,使用者需遵守相关法律法规及目标网站的爬取规则,尊重数据隐私,合理设置访问频率,不得用于非法目的或侵犯他人权益。因使用网络爬虫产生的任何法律纠纷或损失,由使用…...
怎样对 PostgreSQL 中的慢查询进行分析和优化?
🍅关注博主🎗️ 带你畅游技术世界,不错过每一次成长机会!📚领书:PostgreSQL 入门到精通.pdf 文章目录 怎样对 PostgreSQL 中的慢查询进行分析和优化?一、理解慢查询的危害二、找出慢查询&#x…...
Springboot项目远程部署gitee仓库(docker+Jenkins+maven+git)
创建一个Springboot项目,勾选web将该项目创建git本地仓库,再创建远程仓库推送上去 创建TestController RestController RequestMapping("/test") public class TestController { GetMapping("/hello") public String sayHelloJe…...
Chromium CI/CD 之Jenkins实用指南2024- Windows节点开启SSH服务(七)
1.引言 在现代软件开发和持续集成的过程中,自动化部署和远程管理是不可或缺的关键环节。SSH(Secure Shell)协议以其强大的安全性和灵活性,成为连接和管理远程服务器的首选工具。对于使用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,其中2.7.18是最后一版支持java8的spring <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.18</…...
如何做ps4游戏视频网站/百度小说排行榜风云榜
题目描述 洛谷 P1381 单词背诵 灵梦有 n个单词想要背,但她想通过一篇文章中的一段来记住这些单词。 文章由 个单词构成,她想在文章中找出连续的一段,其中包含最多的她想要背的单词(重复的只算一个)。并且在背诵的单词…...
开源程序网站/珠海百度搜索排名优化
目录 0 参考列表 1 概念 1.1 特点 2 系统架构 2.1 架构组成 2.2 分块存储及副本机制 3 执行原理 3.1 写数据 3.2 读数据 4 使用 4.1 访问 4.2 HDFS Shell 0 参考列表 CSDN:HDFS特点,底层结构,重要组成部分、安全模式,重要进程&a…...
重庆网站开发建设/新媒体培训
问题描述 使用Popup控件作为弹出框,使用相对位置弹出即Placement“Relative”,在不同的设备中弹出的位置不一致。比如下面的例子。 使用如下代码: <Window x:Class"WpfApp1.MainWindow"xmlns"http://schemas.microsoft.c…...
做网站要学那些东西/ios aso优化工具
开头 这里是一些个人开发者接私活和自己做软件加广告的一些科普知识。可是做软件,需要服务器,需要后台,对于一些小的开发者,想赚点广告费而又不想做后台使用服务器的人来说,网上提供了一些免费的接口,可以…...
专门做国外家具书籍的网站/百度网站排名优化
育软件、程序设计软件、网络软件、工具软件。(三)Word文字处理【教学目的与要求】1、通过本部分的学习,了解Word窗口的组成部分;了解在Word中插入与编辑公式的方法;2、理解Word文字排版中的常见概念;理解word中表格的行、列、单元…...
淘宝手机网站模板下载安装/株洲seo优化报价
在工作学习中总能听到设计模式的概念,虽然之前也系统的了解过一些,但是长时间不用难免会忘记。如下是收集整理的相关模式概念,每当忘记的时候可以根据这样的概念线索勾起记忆,自行脑补代码实现即可。 一、设计模式分类 总体来说…...