【NOI】C++数据结构入门之一维数组(一)数组基础

文章目录

  • 前言
  • 一、概念
    • 1.导入
    • 2.数组
      • 2.1 数组的创建
      • 2.2 数组的使用
  • 二、例题讲解
    • 问题:1423 - 考试成绩的简单统计
    • 问题:1153 - 查找“支撑数”
    • 问题:1156 - 排除异形基因
    • 问题:1155 - 找找谁的身高超过全家的平均身高
    • 问题:1231 - 考试成绩的分布情况
  • 三、总结
  • 四、感谢


前言

在计算机科学的学习旅程中,数据结构是构建高效算法和解决复杂问题的基石。本篇文章是针对全国青少年信息学奥林匹克竞赛(NOI)初学者设计的数组入门指南,旨在帮助同学们掌握数组这一基本而又强大的数据结构。数组作为线性数据结构的典型代表,以其简单直观的特点成为解决问题的首选工具之一。我们将从理论概念出发,结合实例练习,逐步深入,确保每位读者都能牢固掌握数组的使用方法,为后续深入学习更复杂的数据结构打下坚实的基础。

学习路线:C++从入门到NOI学习路线

学习大纲:C++全国青少年信息学奥林匹克竞赛(NOI)入门级-大纲


一、概念

1.导入

C++中数组是一种用于存储多个相同类型的元素的数据结构

请添加图片描述

(⊙﹏⊙),好像直接这样讲确实比较难懂,没关系,一步一步来。

首先,我们先来说一下相同类型这件事。

什么是相同类型,这个类型又是什么?

这个类型其实指的是我们前面学习的数据类型,比如整型、浮点型、字符型等。而相同类型的意思就是必须一样的才行,要么都是整型,要么都是浮点型。

在这里插入图片描述

接下来,我们来说数据结构

这个其实也很好理解,说到数据结构,就不得不提我们的老朋友——“变量”。

变量的作用大家还记得吗?我们曾经用“盒子”来形容它。就像是你把物品放入一个实际的盒子中一样。每个盒子都有一个标签,这个标签就是变量的名字。

在这里插入图片描述

数据类型用来告诉我们盒子里应该存放什么类型的“物品”(比如整数、小数、字符等)。而且,正如你可以在任何时候更换盒子里的物品,我们也可以给变量重新赋值,即改变盒子里存储的数据。

数据结构你可以看成是有很多个盒子放在一起。

在这里插入图片描述
如数组、链表、树、图等,则是由一个或多个变量(以及它们之间的关系)组成的更为复杂的实体。

简而言之,数据类型是描述数据的属性,而数据结构是描述数据之间的关系和组织方式

在这里插入图片描述

数据结构可以分为两类:线性数据结构和非线性数据结构。而我们今天学习的数组属于线性数据结构。

线性数据结构是一种按照顺序排列的数据结构,其中数据元素之间存在一对一的关系。

我们再来看这句话,C++中数组是一种用于存储多个相同类型的元素的数据结构。

我们可以理解成有一排的盒子,每个盒子都用来存储相同类型的数据。

在这里插入图片描述

这些盒子(数组元素)按照顺序排列,所以每个盒子都有一个编号,即索引,从0开始计数。通过索引,我们可以迅速访问到对应位置的盒子,获取或修改里面的内容。

在这里插入图片描述

2.数组

2.1 数组的创建

静态数组:静态数组是在编译时期确定大小的数组,其大小在声明时就已经确定,并且不能改变。

C++中创建静态数组的方法如下:

  1. 声明数组类型和数组名:
dataType arrayName[arraySize];

其中,dataType表示数组中元素的数据类型,arrayName是数组的名称,arraySize是数组的大小

例如:

int arr[5];

这将创建一个包含5个整数的静态数组。

  1. 初始化数组元素:
int arr[5] = {1, 2, 3, 4, 5};

这将创建一个包含5个整数的静态数组,并将其初始化为给定的值。

提示:静态数组的声明和初始化可以在同一行完成,也可以分开进行。

2.2 数组的使用

要想学会如何使用数组,那么就要知道什么是数组下标?

C++数组下标是指通过索引值来访问数组中的元素。在C++中,数组的索引从0开始,依次递增。通过使用数组名和索引值,可以访问和修改数组中的特定元素。

在这里插入图片描述

  1. 访问数组元素:
int x = arr[2];

这将访问数组中索引为2的元素,并将其赋值给变量x。

在这里插入图片描述

  1. 修改数组元素:
arr[3] = 10;

这将修改数组中索引为3的元素的值为10。
在这里插入图片描述

  1. 遍历数组:
length=7;
for (int i = 0; i < length; i++) {cout << arr[i] << " ";
}

这将遍历数组并打印每个元素。
在这里插入图片描述

注意:长度为 n 的数组,下标从 0~n-1,不能超过这个范围访问数组元素,如果超过就是错的,语法上叫“越界”了!

二、例题讲解

问题:1423 - 考试成绩的简单统计

类型:数组基础


题目描述:

期末考试结束,王老师想知道这次考试中成绩优秀的同学有多少人(考试成绩大于或等于
90 表示成绩优秀),请你编程帮助王老师来计算出成绩优秀的人数。

输入:

第一行,一个整数 n 代表有 n 个人的成绩( n≤100);

第二行,n个人的成绩,用空格隔开。

输出:

成绩优秀的同学的总人数。

样例:

输入:

5
98 88 85 99 90

输出:

3

在这里插入图片描述


1.分析问题

  1. 已知:n个人的成绩。
  2. 未知:成绩优秀的同学有多少人。
  3. 关系:大于或等于 90 表示成绩优秀。

2.定义变量

根据分析的已知,未知按需要定义变量。

  • n:n个人的成绩。
  • a[100]:数组,存储具体成绩数值。
  • count:成绩优秀的同学人数。
	//二、数据定义 int n,a[100],count=0; 

3.输入数据

  • 通过遍历的方式,循环录入学生成绩。
//三、数据输入cin>>n;for(int i=0;i<n;i++){cin>>a[i];}

4.数据计算

  • 大于或等于 90 表示成绩优秀,统计个数即可。
//四、数据计算
if(a[i]>=90){count++;
}

5.输出结果

  • 输出成绩优秀的人数。
//五、输出结果 
cout<<count<<endl;

完整代码如下:

#include<iostream> // 引入iostream库,以便使用输入输出流对象如cin和cout
using namespace std; // 使用std命名空间,这样可以直接调用其中的函数和对象,而无需每次都加std::int main(){ // 定义主函数main,程序执行的入口点// 一、分析问题// 已知:n个人的成绩// 未知:成绩优秀的同学有多少人// 二、数据定义int n, a[100], count = 0; // 定义变量n为学生总数,数组a用于存储n个学生的成绩,count用来计数成绩优秀的学生// 三、数据输入cin >> n; // 从标准输入读取学生总人数nfor(int i = 0; i < n; i++){ // 使用for循环遍历每一个学生cin >> a[i]; // 输入第i个学生的成绩并存入数组a[i]// 四、数据计算if(a[i] >= 90){ // 判断当前学生的成绩是否大于等于90分,视为成绩优秀count++; // 如果成绩优秀,则计数器count加1}}// 五、输出结果cout << count << endl; // 输出成绩优秀的学生人数到标准输出return 0; // 主函数结束,返回0表示程序正常退出
}

问题:1153 - 查找“支撑数”

类型:数组基础


题目描述:

在已知一组整数中,有这样一种数非常怪,它们不在第一个,也不在最后一个,而且刚好都比左边和右边相邻的数大,你能找到它们吗?

输入:

第一行为整数 m,表示输入的整数个数。( 3≤m≤100 )

第二行为 m 个整数。

输出:

若干个支撑数,每行一个。

样例:

输入:

14
1 3 2 4 1 5 3 9 7 10 8 23 85 43

输出:

3
4
5
9
10
85

在这里插入图片描述


1.分析问题

  1. 已知:一组整数
  2. 未知:支撑数
  3. 关系:比左边和右边相邻的数大的数

2.定义变量

  • 根据分析的已知,未知按需要定义变量。
  • n:n个整数
  • a[100]:用来存储n个整数数值。
	//二、数据定义 int n,a[100]; 

3.输入数据

  • 从键盘读入。
	//三、数据输入 cin>>n;for(int i=0;i<n;i++){cin>>a[i];}

4.数据计算

  • 同时满足比左边和右边相邻的数大,注意第一个数(索引为0)左边没有数,所以应该从第二个数开始判断(索引为1)。
	//四、数据计算 for(int i=1;i<n-1;i++){if(a[i-1]<a[i]&&a[i]>a[i+1]){}}

5.输出结果

  • 如果满足条件,输出该元素
	// 五、输出结果cout << a[i] << endl; 

完整代码如下:

#include<iostream> // 引入iostream头文件,提供输入输出功能
using namespace std; // 使用标准命名空间stdint main() { // 定义主函数// 一、分析问题// 已知:一组整数// 未知:刚好都比左边和右边相邻的数大的数// 二、数据定义int n, a[100]; // 定义变量n为数组元素个数,数组a用于存储这组整数// 三、数据输入cin >> n; // 读取整数n,表示数组中有n个元素for (int i = 0; i < n; i++) {cin >> a[i]; // 依次输入n个整数到数组a中}// 四、数据计算for (int i = 1; i < n - 1; i++) { // 遍历数组,但不检查第一个和最后一个元素,因为它们没有两个相邻的数if (a[i - 1] < a[i] && a[i] > a[i + 1]) { // 检查当前元素是否大于它左右两边的元素// 五、输出结果cout << a[i] << endl; // 如果满足条件,输出该元素}}return 0; // 程序正常结束
}

问题:1156 - 排除异形基因

类型:数组基础


题目描述:

神舟号飞船在完成宇宙探险任务回到地球后,宇航员张三感觉身体不太舒服,去了医院检查,医生诊断结果:张三体内基因已被改变,原有人体基因序列中已经被渗入外星球不明异形生物基因,但可喜的是,这些异形基因都有一个共同的特征,就是该基因序号的平方除以 7 的余数都是 1,要赶快清除掉,否则会危害整个人类。赶快行动吧。

输入:

第一行是一个整数 n (基因个数 3≤n≤200);

第二行是 n 个整数(张三的基因序列)。

输出:

去除异形基因后的正常序列,空格隔开。

样例:

输入:

4
6 2 8 12

输出:

2 12

在这里插入图片描述


1.分析问题

  1. 已知:人体基因序列。
  2. 未知:异形基因。
  3. 关系:基因序号的平方除以 7 的余数是否等于 1。

2.定义变量

  • 根据分析的已知,未知按需要定义变量。
//二、数据定义 
int n,a[200];

3.输入数据

  • 从键盘读入。
//三、数据输入 cin>>n;for(int i=0;i<n;i++){cin>>a[i];}

4.数据计算

  • 基因序号的平方除以 7 的余数等于 1是异形基因。
//四、数据计算
if(a[i]*a[i]%7!=1){}

5.输出结果

  • 如果余数不等于1,则输出该整数。
// 五、输出结果cout << a[i] << " "; 

完整代码如下:

#include<iostream>
using namespace std;int main() {// 一、分析问题// 已知:人体基因序列(这里以整数序列简化表示)// 未知:对于给定序列中的每个整数,其平方除以7的余数是否不等于1// 二、数据定义int n, a[200]; // 定义n为基因序列的长度,a数组用于存储基因序列中的整数// 三、数据输入cin >> n; // 输入基因序列的长度nfor (int i = 0; i < n; i++) {cin >> a[i]; // 输入基因序列中的每个整数// 四、数据计算if (a[i] * a[i] % 7 != 1) { // 计算当前整数的平方除以7的余数,检查是否不等于1// 五、输出结果cout << a[i] << " "; // 如果余数不等于1,则输出该整数}}// 六、程序结束,无额外操作return 0; // 表示程序成功执行完毕
}

问题:1155 - 找找谁的身高超过全家的平均身高

类型:数组基础


题目描述:

找找谁的身高超过全家的平均身高。
全家 n 口人,输入输出数据如下: (平均身高保留一位小数)。

输入:

第一行有一个整数 n ( 1<n<11 );

第二行是 n 个整数,用空格隔开。

输出:

第一行为全家的平均身高(保留一位小数);

第二行有若干个数,为超过平均身高的人的身高厘米数。

样例:

输入:

7
175 160 172 158 178 162 142

输出:

AVE=163.9
1:175 3:172 5:178

在这里插入图片描述


1.分析问题

  1. 已知:全家的身高。
  2. 未知:谁的身高超过全家的平均身高。
  3. 关系:平均身高=全家的身高/人数。

2.定义变量

  • 根据分析的已知,未知按需要定义变量。
  • ave:平均身高。
	//二、数据定义 int n,a[100];double ave=0;

3.输入数据

  • 从键盘读入。
  • 先将全家的身高进行累加。
//三、数据输入 cin>>n;for(int i=0;i<n;i++){cin>>a[i];ave+=a[i];}

4.数据计算

  • 第一行为全家的平均身高(保留一位小数);
  • 并判断谁的身高超过全家的平均身高。
//四、数据计算 ave/=n;printf("AVE=%.1f\n",+ave);for(int i=0;i<n;i++){if(a[i]*1.0 > ave){}}

5.输出结果

  • 检查当前成员身高是否超过平均身高。
  • 打印超过平均身高的成员序号和身高。
 // 五、输出结果for (int i = 0; i < n; i++) {if (a[i] * 1.0 > ave) { cout << i + 1 << ":" << a[i] << " "; }}

完整代码如下:

#include<iostream>
using namespace std;int main() {// 一、分析问题// 已知:全家的身高// 未知:谁的身高超过全家的平均身高// 二、数据定义int n, a[100]; // n为家庭成员数量,a数组用于存储每个成员的身高double ave = 0; // ave用于存储家庭成员身高的平均值// 三、数据输入cin >> n; // 输入家庭成员的数量for (int i = 0; i < n; i++) {cin >> a[i]; // 输入每个家庭成员的身高,并累加到ave中ave += a[i];}// 四、数据计算ave /= n; // 计算平均身高printf("AVE=%.1f\n", +ave); // 打印平均身高,保留一位小数// 五、输出结果for (int i = 0; i < n; i++) {if (a[i] * 1.0 > ave) { // 检查当前成员身高是否超过平均身高cout << i + 1 << ":" << a[i] << " "; // 打印超过平均身高的成员序号和身高}}return 0; // 程序结束
}

问题:1231 - 考试成绩的分布情况

类型:数组基础


题目描述:

期末考试结束,小明的语文老师想知道,这次考试的成绩分布情况,主要计算如下几个数据:平均分、≥ 平均分的总人数、 < 平均分的总人数,请你写程序帮助小明的语文老师来计算一下!

输入:

第一行,一个整数 n 代表有 n 个人的成绩( n≤100 );

第二行, n 个人的语文成绩。

输出:

3 个值,分别代表平均分、≥ 平均分的总人数、< 平均分的总人数,请注意,平均分保留
1 位小数!

样例:

输入:

5
100 98 97 99 90

输出:

96.8 4 1

在这里插入图片描述


1.分析问题

  1. 已知:考试的成绩分布情况。
  2. 未知:平均分、≥平均分的总人数exceedP、 < 平均分的总人数n-exceedP。

2.定义变量

  • 声明整型变量n(学生人数)、整型数组a(存放学生成绩)和exceedP(超过平均分的学生人数),以及双精度浮点数ave(平均分)。
	//二、数据定义 int n,a[1000],exceedP=0;double ave=0;

3.输入数据

  • 先输入学生人数n,然后通过循环输入每个学生的成绩到数组a中,同时累加成绩到ave变量中以准备计算平均分。
//三、数据输入 cin>>n;for(int i=0;i<n;i++){cin>>a[i];ave+=a[i];}

4.数据计算

  • 计算平均分,将成绩总和ave除以学生人数n。
  • 统计超过平均分的学生人数:遍历成绩数组,如果当前成绩大于平均分,则exceedP加1。
//四、数据计算 ave/=n;//算出平均分for(int i=0;i<n;i++){if(a[i]*1.0>ave){exceedP++;}} 

5.输出结果

  • 输出平均分,超过平均分的学生人数(exceedP)和低于等于平均分的学生人数(总人数n减去超过平均分的人数exceedP)。
//五、输出结果printf("%.1f\t",ave);cout<<exceedP<<" "<<n-exceedP;

完整代码如下:

#include <iostream> // 引入iostream库,以便使用输入输出流对象cin和cout
using namespace std; // 使用标准命名空间std,简化代码中的命名空间限定符int main() { // 定义主函数// 一、分析问题// 已知:一组学生的考试成绩// 未知:这些学生的平均成绩、高于平均分的学生人数、低于等于平均分的学生人数// 二、数据定义int n, a[1000]; // n为学生人数,a数组用于存储每个学生的成绩int exceedP = 0; // 初始化超过平均分的学生人数为0double ave = 0; // 初始化平均分为0// 三、数据输入cin >> n; // 输入学生人数for (int i = 0; i < n; i++) {cin >> a[i]; // 输入每个学生的成绩ave += a[i]; // 累加成绩以计算平均分}// 四、数据计算ave /= n; // 计算平均分,即成绩总和除以学生人数// 统计高于平均分的学生人数for (int i = 0; i < n; i++) {if (a[i] > ave) { // 如果成绩大于平均分exceedP++; // 超过平均分的学生人数加1}} // 五、输出结果// 使用printf函数输出平均分,保留一位小数printf("%.1f\t", ave);// 使用cout输出超过平均分的学生人数和低于等于平均分的学生人数cout << exceedP << " " << (n - exceedP);return 0; // 程序执行完毕,返回0表示成功
}

三、总结

通过本篇的学习,我们系统地回顾了数组的概念、创建、使用方法以及在实际问题中的应用。数组作为一种存储同类型数据元素的线性结构,其灵活性和效率在处理批量数据时尤为显著。我们通过解析不同类型的例题,如“考试成绩的简单统计”、“找出谁的身高超过全家的平均身高”以及“考试成绩的分布情况”,不仅加深了对数组操作的理解,还学会了如何利用数组解决实际问题,包括数据的输入、处理、以及最终的输出展示。

数组的学习是NOI竞赛乃至整个编程领域的基础,掌握好数组,意味着拥有了处理大量数据的钥匙。希望读者通过本次学习,不仅能够熟练运用数组解决各种问题,还能培养良好的逻辑思维能力和问题分析技巧,为后续深入学习链表、树、图等更高级数据结构打下坚实的基础。

四、感谢

如若本文对您的学习或工作有所启发和帮助,恳请您给予宝贵的支持——轻轻一点,为文章点赞;若觉得内容值得分享给更多朋友,欢迎转发扩散;若认为此篇内容具有长期参考价值,敬请收藏以便随时查阅。

每一次您的点赞、分享与收藏,都是对我持续创作和分享的热情鼓励,也是推动我不断提供更多高质量内容的动力源泉。期待我们在下一篇文章中再次相遇,共同攀登知识的高峰!

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/46425.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络生成树协议介绍与实践

生成树协议 1.环路 二层环路&#xff1a;数据链路层&#xff0c;交换机&#xff08;二层设备&#xff09;通过线路连接环状。即物理成环并且没有开启防环协议。 危害&#xff1a;广播风暴&#xff1a;交换机将未知帧广播&#xff0c;收到后的交换机继续广播&#xff0c;不断…

全国地级市-产业升级、高级化、合理化数据集(1999-2022年)

数据年份&#xff1a;1999-2022年 数据范围&#xff1a;地级市以上城市 数据来源&#xff1a;中国城市统计NJ 数据整理&#xff1a;内含原始版本、线性插值版本、ARIMA填补版本 数据说明&#xff1a;参考干春晖&#xff08;2011&#xff09;《经济研究》的文章 &#xff0c…

数据结构(单链表(1))

前言 线性表中有着许多的结构&#xff0c;如顺序表和链表。而单链表则是链表的最基础的一种形式&#xff0c;下面就让我们对其做一个了解。 概念 概念&#xff1a;链表是⼀种物理存储结构上⾮连续、⾮顺序的存储结构&#xff0c;数据元素的逻辑顺序是通过链表中的指针链接次…

ENSP中VLAN的设置

VLAN的详细介绍 VLAN&#xff08;Virtual Local Area Network&#xff09;即虚拟局域网&#xff0c;是一种将一个物理的局域网在逻辑上划分成多个广播域的技术。 以下是关于 VLAN 的一些详细介绍&#xff1a; 一、基本概念 1. 作用&#xff1a; - 隔离广播域&#xff1a…

Notebook 在复现数据科学研究成果中的丝滑使用

对于数据科学和 AI 科研人员而言&#xff0c;研究成果的复现至关重要。成果复现既是一种研究算法的方式&#xff0c;也有助于科研人员找到研究的新途径。 IDP 中提供自研 notebook 交互式编程环境&#xff0c;它非常适合做数据分析与代码展示&#xff0c;主要功能包括&#xf…

java基础概念01-注释、关键字、字面量、变量

一、注释 注释内容不会参与编译和运行&#xff0c;仅仅是对代码的解释说明。 1-1、注释的三种类型 1、单行注释&#xff1a;//…… // 这是单行注释 2、多行注释&#xff1a;/*…….*/ /* 这是一个 多行注释 */ 3、文档注释 特殊的多行注释&#xff0c;以/**开头&#xf…

【初阶数据结构】理解堆的特性与应用:深入探索完全二叉树的独特魅力

初阶数据结构相关知识点可以通过点击以下链接进行学习一起加油&#xff01;时间与空间复杂度的深度剖析深入解析顺序表:探索底层逻辑深入解析单链表:探索底层逻辑深入解析带头双向循环链表:探索底层逻辑深入解析栈:探索底层逻辑深入解析队列:探索底层逻辑深入解析循环队列:探索…

Qt类 | QObject类详解

文章目录 一、QObject类介绍二、Properties&#xff08;属性&#xff09;三、Public Functions&#xff08;公共函数&#xff09;四、Public Slots&#xff08;公共槽函数&#xff09;五、Signals&#xff08;信号&#xff09;六、Static Public Members&#xff08;静态公共成…

react Ant Design 动态表头添加操作列

模拟后端返回的表头、列表数据 注意&#xff1a;我们要在表头数据中添加一个 render 函数&#xff0c;里面就是你操作列的内容&#xff0c;value是你数据列表每行的对象 &#xff0c;item 是你表头的对象 页面中去处理这个两个数组 dataList.forEach((item, index) > {item.…

昇思25天学习打卡营第24天 | RNN实现情感分类

概述 情感分类是自然语言处理中的经典任务&#xff0c;是典型的分类问题。本节使用MindSpore实现一个基于RNN网络的情感分类模型&#xff0c;实现如下的效果&#xff1a; 输入: This film is terrible 正确标签: Negative 预测标签: Negative输入: This film is great 正确标…

dmasmtool工具详细用法

DMASMTOOL 是 DMASM 文件系统管理工具&#xff0c;提供了一套类 Linux 文件操作命令&#xff0c;用于管理 ASM 文件&#xff0c;是管理、维护 DMASM 的好帮手。DMASMTOOL 工具使用 DMASMAPI 连接到 DMASMSVR&#xff0c;并调用相应的 DMASMAPI 函数&#xff0c;实现创建、拷贝、…

C1W2.LAB.Visualizing Naive Bayes

理论课&#xff1a;C1W2.Sentiment Analysis with Nave Bayes 文章目录 导入包Calculate the likelihoods for each tweetUsing Confidence Ellipses to interpret Nave Bayes 理论课&#xff1a; C1W2.Sentiment Analysis with Nave Bayes 导入包 在下面的练习中&#xff0…

everything搜索不到任何文件-设置

版本&#xff1a; V1.4.1.1024 (x64) 问题&#xff1a;搜索不到任何文件 click:[工具]->[选项]->下图所示 将本地磁盘都选中包含

Python爬虫速成之路(3):下载图片

hello hello~ &#xff0c;这里是绝命Coding——老白~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#x1f339;&#x1f339;&#x1f339; &#x1f4a5;个人主页&#xff1a;绝命Coding-CSDN博客 &a…

SpringMVC源码解析(一):web容器启动流程

SpringMVC源码系列文章 SpringMVC源码解析(一)&#xff1a;web容器启动流程 目录 一、SpringMVC全注解配置1、pom文件2、web容器初始化类(代替web.xml)3、SpringMVC配置类(代替springmvc.xml)4、测试Controller 二、SpringServletContainerInitializer1、web容器初始化入口2、…

从本地到全局:基于图的RAG方法进行查询聚焦原理摘要

摘要 使用检索增强生成&#xff08;RAG&#xff09;从外部知识源检索相关信息&#xff0c;使大型语言模型&#xff08;LLMs&#xff09;能够回答有关私有和/或以前未见过的文档集合的问题。然而&#xff0c;当针对整个文本文档库提出全局问题时&#xff0c;例如“数据集中的主…

音视频入门基础:H.264专题(13)——FFmpeg源码中通过SPS属性获取视频色彩格式的实现

一、引言 通过FFmpeg命令可以获取到H.264裸流文件的色彩格式&#xff08;又译作色度采样结构、像素格式&#xff09;&#xff1a; 在vlc中也可以获取到色彩格式&#xff08;vlc底层也使用了FFmpeg进行解码&#xff09;&#xff1a; 这个色彩格式就是之前的文章《音视频入门基础…

【精品资料】模块化数据中心解决方案(33页PPT)

引言&#xff1a;模块化数据中心解决方案是一种创新的数据中心设计和部署策略&#xff0c;旨在提高数据中心的灵活性、可扩展性和效率。这种方案通过将数据中心的基础设施、计算、存储和网络资源封装到标准化的模块中&#xff0c;实现了快速部署、易于管理和高效运维的目标 方案…

2024最新Cloudways主机使用教程(含最新Cloudways折扣码)

Cloudways是一家提供云托管服务的公司&#xff0c;可以帮助你轻松管理和运行你的网站。本教程是Cloudways主机注册和使用教程。Cloudways界面简洁&#xff0c;使用方便&#xff0c;不需要复杂的设置&#xff0c;就能快速搭建一个WordPress网站。它的主机功能包括高级缓存和Bree…

DepthAnything(2): 基于ONNXRuntime在ARM(aarch64)平台部署DepthAnything

DepthAnything(1): 先跑一跑Depth Anything_depth anything离线怎么跑-CSDN博客 目录 1. 写在前面 2. 安装推理组件 3. 生成ONNX 4. 准备ONNXRuntime库 5. API介绍 6. 例程 1. 写在前面 DepthAnything是一种能在任何情况下处理任何图像的简单却又强大的深度估计模型。 …