数据结构第6章 图(竟成)
第 6 章 图
【考纲内容】
1.图的基本概念
2.图的存储及基本操作:(1) 邻接矩阵法;(2) 邻接表法;(3) 邻接多重表、十字链表
3.图的遍历:(1) 深度优先搜索;(2) 广度优先搜索
4.图的基本应用:(1) 最小 (代价) 生成树;(2) 最短路径;(3) 拓扑排序;(4) 关键路径
【考情统计】
年份
题数及分值 考点
单选题
综合题
总分值
2009
1
1
12
无向连通图的特性、最短路径(新的算法)
2010
2
0
4
连通图的特性、拓扑排序
2011
1
1
10
图的基本概念、邻接矩阵、拓扑序列、关键路径
2012
4
0
8
图的存储表示法、广度优先遍历、最小生成树(性质、Prim 和 Kruskal 算法)、拓扑排序、最短路径(Dijkstra)
2013
3
0
6
邻接矩阵、广度优先遍历、关键路径
2014
1
1
12
图的基本概念、图的存储、拓扑排序、最短路径(Dijkstra)
2015
2
1
12
广度优先遍历、最小生成树(Prim 和 Kruskal)、邻接矩阵
2016
3
0
12
邻接表、深度优先遍历、拓扑排序、最短路径(Dijkstra)
2017
1
1
10
无向图边数和顶点数的关系、最小生成树(Prim)
2018
1
1
14
拓扑排序、最小生成树(Prim 或 Kruskal)
2019
2
0
4
有向无环图描述表达式、关键路径
2020
3
0
6
深度优先遍历、拓扑排序、最小生成树(Kruskal)、关键路径
2021
2
1
19
拓扑排序、最短路径(Dijkstra)、邻接矩阵分析与应用
2022
2
0
4
图的基本概念、关键路径
2023
1
1
15
最短路径、图的基本概念
2024
1
1
15
邻接多重表、拓扑排序算法题
【考点解读】
本章内容是数据结构考试重点之一,每年必考,出题形式有选择题与综合应用题。①图的基本应用是本章的重点内容,408 真题中每年都会有相关考查。考生应该熟练掌握图的基本应用小节里的相关算法(算法思想及算法代码都要掌握)。②真题也常考各种图相关算法的实现细节,例如:广度优先遍历和深度优先遍历的过程、Prim 算法和 Kruskal 算法实现过程的对比、Dijkstra 算法实现过程等。③本章第一小节 “图的基本概念” 常在图的各类计算题中考查,考生应熟练的掌握本章第一小节中的所有概念名词。
另外,需要引起 408 考生高度重视的是:图的算法题自 2021 年 408 首次考察以来,最近几年(2021 年、2023 年和 2024 年)的 408 考试中均在考察图的算法题。但在 2021 年之前连续十几年 408 考试都没考过图的算法题。尤其是 2024 年 408 考试突然考察拓扑排序的算法题,令很多考生猝不及防,几乎是得 0 分。所以,图的算法题考生务必高度重视,不再是可以忽视的部分。考生不要只停留在只掌握算法思想,不仅要会手动模拟(选择题常考),还应该熟练掌握图相关的算法代码(应对算法题),会灵活运用图的相关的算法。
【复习建议】
本章要注意理解并掌握图的基础概念和各种图的应用。复习建议如下:
1.各种图的定义和图相关的概念是本章的基础。重要知识点为出入度和度的概念以及这三者之间的关系、图的连通性、生成树概念、图的相关计算。
2.图的存储结构,考生除了掌握四种常用图的存储结构之外,还需分辨出这四种存储方式的优缺点。其中,邻接矩阵和邻接表是考查的重点,后两者只需理解思想即可。
3.需要掌握图的两种遍历方式,加深理解为什么图的遍历需要访问数组,这也是区分树与图的遍历很重要的一点。
4.图的四种应用,分别为:最小生成树(涉及 Prim 算法和 Kruskal 算法)、最短路径(Dijkstra 算法和 Floyd 算法)、拓扑排序、关键路径。考生需要掌握这些应用的思想,并要求能根据具体题目进行手动推导答案,出题较为灵活,经常结合本章节其他小节的内容进行综合考查。
6.1 图的基本概念
6.1.1 图的定义
图 G 由两个集合 V(vertex) 和 E(edge) 组成,记为 G=(V,E)。其中,V 是 G 的顶点集合,记为 V(G);E 是连接 V 中两个不同顶点(顶点对)的边的有限集合,记为 E(G) ¹。若用顶点表示对象,则边表示对象间关系。
【提示】图 G 的边集 E(G) 可以是空集,但顶点集 V(G) 不能为空集。
通常,用符号 <v,w> 表示从顶点 v 到顶点 w 的一条边。
若表示边的顶点对是有序的,则称该图为有向图 ¹。在有向图中,<v,w> 和 <w,v> 分别表示两条不同的边。
有向图的边 <v,w> 也称为弧:顶点 v 是边的起点,也称为弧尾;顶点 w 是边的终点,也称为弧头(有箭头的一方)。
【提示】弧头和弧尾的概念跟通常理解的不一样,弧头是箭头 (→) 指向的一方,不要弄混了。
例如:在图 6.1-(a) 中的弧 <V2,V1>,顶点 V1 是弧头,顶点 V2 是弧尾。
例如,图 6.1-(a) 所示的有向图 G 可表示为:
G=(V(G),E(G))
V(G)={V1,V2,V3,V4}
E(G)={<V2,V1>,<V1,V3>,<V1,V4>,<V3,V4>,<V4,V2>}若表示边的顶点对是无序的,<v,w> 和 <w,v> 表示同一条边,则称该图为无向图。为了跟有向图区分,通常用符号 (v,w) 表示无向图中从顶点 v 到顶点 w 的一条边。
例如,图 6.1-(b) 所示的无向图 G 可表示为:
G=(V(G),E(G))
V(G)={V1,V2,V3,V4}
E(G)={(V1,V2),(V3,V1),(V4,V1),(V3,V4),(V4,V2)}6.1.2 图的基本术语
1.顶点的度、出度和入度
在无向图中,某个顶点的度(Degree)指与该顶点相连的边的条数。
例如,在图 6.1-(b) 所示无向图中,顶点 V₁、V₂、V₃、V₄的度分别为:3,2,2,3。
在有向图中,以顶点 v 为终点(即:指向顶点 v,以顶点 v 为弧头)的边数目,称为顶点 v 的入度 ¹。以顶点 v 为起点(即:以顶点 v 为弧尾)的边数目,称为顶点 v 的出度 ¹。在有向图中,某个顶点的度等于该顶点的入度与出度的和。
例如,在图 6.1-(a) 所示有向图中,顶点 V₁的度为 3,顶点 V₁入度为 1,顶点 V₁出度为 2。
关于顶点的度,有如下结论:
①在有向图或无向图中,因为每条边都要连接两个顶点,所以,边总条数的两倍等于所有顶点的度之和。但全部顶点数目之和不一定等于边数的两倍 (例如,图中只有一个顶点,没有边)。
②在有向图中,所有顶点的出度的和等于所有顶点的入度的和。
③在无向或有向图中,奇数度的顶点的个数是偶数。由①知,所有顶点的度之和是偶数,又因偶数度顶点的度之和为偶,故奇度顶点的度之和亦偶,所以奇度顶点的个数必偶。2.完全图
无向完全图:图中任意两个顶点都有边相连。n 个顶点的无向完全图共有 n (n - 1)/2 条边。
有向完全图:图中任意两个顶点都有两条方向相反的边相连。n 个顶点的有向完全图共有 n (n - 1) 条边。3.稠密图和稀疏图
稠密图和稀疏图是一个主观的概念。边数较少(如边的条数 E 远小于 V² )的图称为稀疏图,反之称为稠密图 ²。
4.路径和路径长度
路径:指从一个顶点开始经过一系列的边到达另一个顶点形成的顶点序列。
路径长度:指路径上的边的条数。例如,图 6.1-(a) 中顶点 V₁到顶点 V₂之间的路径有 2 条:{V₁、V₄、V₂} 和 {V₁、V₃、V₄、V₂},路径长度分别为 2 和 3。5.回路或环
回路(环):指起点和终点是同一个顶点的路径。回路也称为环。例如,在图 6.1-(a) 中,路径 {V₁、V₃、V₄、V₂、V₁} 是一条回路。
6.子图
子图:若图 G′的顶点集和边集分别为图 G 顶点集和边集的子集,则图 G′称为图 G 的子图。
【注意】子图首先得是个图,图 G 的顶点集 V 的任意子集 V′与边集 E 的任意子集 E′,不一定能构成图 G 的子图,因为 (V′, E′) 不一定能构成一个图。例如:顶点集 V′ = {V₂,V₃} 是图 6.1-(a) 顶点集的子集,E′ = {<V₁,V₃>,<V₃,V₄>} 是图 6.1-(a) 边集的子集,但 (V′, E′) 不是图 6.1-(a) 的子图,因为 (V′, E′) 不能构成一幅图。7.连通,连通图,极大连通子图,连通分量
连通:指两个顶点间存在路径。
连通图:若图 G 中任意两个顶点都是连通的,则称 G 为连通图,否则称为非连通图 ³。若一个图 G 有 n 个顶点,边的条数小于 n - 1,则 G 必为非连通图。
连通子图:同时满足连通图和子图的定义。
极大连通子图:极大连通子图是不被另外任何一个连通子图所包含的子图。无向图 G 的极大连通子图称为 G 的连通分量 ³。连通图 G 存在唯一的连通分量,即图 G 本身。非连通图的连通分量不唯一。
例如,在图 6.2 中:①图 (a)、(b) 均为连通图,且图 (a) 是自身的极大连通子图,图 (b) 是自身的极大连通子图;②图 (a) 和图 (b) 共同组成一张图 (c),顶点 B 到顶点 H 之间不存在路径,所以图 (c) 是非连通图。在图 (c) 中有两个连通分量 (即有两个极大连通子图),分别为图 (a) 和图 (b)。
8.极小连通子图,生成树,生成森林
极小连通子图:指图的某一个顶点子集所确定的连通子图中,包含边数最少的连通子图。
生成树:连通图的生成树是含有图中全部的 n 个顶点和 n - 1 条边的极小连通子图。若随机去掉生成树的一条边,则该生成树会变成非连通图。若随机添一条边,则该生成树会形成一个环。
生成森林:对于非连通图 G 而言,连通分量的生成树构成了图 G 的生成森林。9.强连通图,强连通分量
强连通图:任意两个顶点间都存在路径的有向图。
【提示】一个图是强连通并不一定说明图中任意两个顶点之间都存在双向边,是允许有其他顶点作为中间顶点的。
强连通分量:有向图的极大强连通子图 ²。10.边的权,网(带权图)
边的权:在无向图或有向图的每一条边上都可以标上一个代表某种含义的数值,该数值称为边的权 ²。例如:用边来表示活动,那么边的权值可以表示完成该活动的时间开销,完成该活动的费用等。
网:指边上带有权值的图,也称为带权图 ³。6.1.3 习题精编
1.无向图 G = (V,E),若图 G 的顶点数和边数相等,则图 G 一定是( )。
A. 连通图
B. 非连通图
C. 无环的图
D. 有环的图
2.以下关于图的叙述中,正确的是( )。
A. 图与树的区别在于图的边数大于等于顶点数
B. 假设图 G = (V,E),顶点集 V′⊆V,E′⊆E,则 V′和 E′构成 G 的子图
C. 无向图的连通分量是指向无图中的极大连通子图
D. 图的遍历就是从图中某一顶点出发并访问图中其余顶点2.【参考答案】 C
【解析】 A 错误,因为图和树的区别是逻辑上的区别,二者的定义不同,而不能只依靠边数和顶点数的多少来判断谁是树谁是图。B 错误,该选项具有很强的迷惑性,看似是和子图的定义相差无几,不过仔细看可以发现,若集合 E′中的边对应的顶点不是 V′的元素,则 V′和 E′依然构不成子图。C 正确。D 错误,迷惑性很强。图的遍历是每个顶点最多只会被访问一次,若图非连通,只从某一顶点出发不一定能够访遍所有顶点。3.以下关于图的叙述中,正确的是( )。
A. 强连通有向图的任何顶点到其他所有顶点都有弧
B. 图的任意顶点的入度等于出度
C. 有向完全图一定是强连通有向图
D. 有向图的边集的任意子集和顶点集的任意子集均可构成原有向图的子图3.【参考答案】 C
【解析】 A 错误,强连通有向图是任何顶点到其他所有顶点都有路径,而不一定都有弧。B 错误,图包含有向图和无向图,有向图的任意顶点的入度不一定等于出度,无向图才满足。C 正确。D 错误,若边集的子集中边的顶点元素不在顶点集的子集里,则有向图的边集的子集和顶点集的子集仍然构不成原有向图的子图。4.若图 G 为非连通无向图,含有 15 条边,则图 G 至少有( )个顶点。
A. 6
B. 7
C. 8
D. 94.【参考答案】 B
【解析】 关键词 “至少”,“非连通”。假设满足题意的无向图至少有 n + 1 个顶点。首先考虑含有 n 个顶点且一定为连通图的情况,满足条件的图为完全图,含有 15 条边,然后再加上一个顶点,则可得到此时的非连通图至少含有的顶点个数。所以,15 = (n - 1) n/2,解得 n 等于 6,因此 15 条边的非连通无向图至少有 6 + 1 = 7 个顶点,选择 B。5.强连通有向图 G₁和连通无向图 G₂都含有 n 个顶点,则 G₁和 G₂最少边条数分别为( )。
A. n,n - 1
B. n (n - 1),n - 1
C. n,n
D. n (n - 1),n5.【参考答案】 A
【解析】 若图构成连通无向图,则边数最少的情况是构成一棵树,则至少有 n - 1 条边;若是强连通有向图,则边数最少的情况是构成一个有向环,即有 n 条边。选择 A。6.无向图 G 有 100 条边,度为 9 和度为 11 的顶点均各有 10 个,其余都是度为 3 的顶点,则图 G 共有( )个顶点。
A. 20
B. 23
C. 26
D. 296.【参考答案】 A
【解析】 在 n 个顶点,e 条边的无向图中,每个顶点的度之和等于边数的两倍。因此,可得 (9 * 10) + (11 * 10) + (n - 10 - 10) * 3 = 100 * 2,解得 n = 20,选择 A。7.若有向图 G = (V,E) 的顶点数为 n。则 G 每个顶点的入度和出度之和最大值可是( )。
A. n
B. n - 1
C. 2n
D. 2n - 27.【参考答案】 D
【解析】 每个顶点可以和其他 n - 1 个顶点都有边相连(对应每一个出度),且每条边都可以有两个方向相反的边(对应每一个入度),因此最多可以有 2 (n - 1) 条边(每条边对应一个度)。8.具有 6 个顶点的无向图,当有( )条边时能确保是一个连通图。
A. 8
B. 9
C. 10
D. 118.【参考答案】 D
【解析】 当 5 个顶点的无向图为完全图时,再加上一条边连接另外的第 6 个顶点,此时能用最少的边确保该图是连通图。共需 11 条边,选择 D。9.设有无向图 G = (V,E) 和 G′=(V′,E′),若 G′是 G 的生成树,则下列不正确的是( )。
I. G′一定是 G 的子图
II. G′为 G 的连通分量
III. G′为 G 的无环子图
IV. G′为 G 的极小连通子图且 V′ = V
A. 只有 IV
B. II、III
C. III、IV
D. 只有 II9.【参考答案】 D
【解析】 II 错误,无向图的极大连通子图称为连通分量,而一个连通图的生成树是极小连通子图。又因此,极小连通子图是无环的。所以 I、III、IV 正确。选择 D。10.如果一个环具有 n 个顶点,则该环含有( )棵生成树。
A. n²
B. n
C. n - 1
D. 110.【参考答案】 B
【解析】 生成树是不含有环的,即本题情境下,删去环中的任意一条边即可变成一棵生成树。且环中有 n 个顶点故有 n 条边可选择,因此可以生成 n 种生成树。11.无向图 G = (V,E),|V| = n,|E| = e,且图 G 是森林。那么该图 G 中必有( )棵树。
A. n
B. e
C. n - e
D. 111.【参考答案】 C
【解析】 (核心:将森林转化成一棵树的思想) 假设该森林中有 x 棵树。具有 n 个顶点的树有 n - 1 条边。将每一棵树连接到一个新增的结点,则变成了另一棵树,此时森林中的所有树变成了一棵新树,且顶点数是 n + 1,边数是 e + x,由树的顶点和边的关系可知,树的顶点数等于边数加一,所以有 n + 1 = e + x + 1,可解得 x = n - e。选择 C。12.设无向图的顶点个数为 n,则该图最多有( )条边。
A. n - 1
B. n (n - 1)/2
C. n (n + 1)/2
D. 012.【参考答案】 B
【解析】 完全图为该图含有最多条边的情况。即每个顶点都和其余 n - 1 个顶点都有边相连。13.含有 n 个顶点的完全有向图的边数为( )。
A. n²
B. n (n + 1)
C. n/2
D. n (n - 1)13.【参考答案】 D
【解析】 有向图的完全图是任意两个顶点之间都有两条方向相反的边相连。因此可得答案 D。相比较而言,无向完全图的边数则是比有向完全图的边数少一半。14.一个有 n 个结点的无向图,最少有( )个连通分量;最多有( )。
A. 0
B. 1
C. n - 1
D. n14.【参考答案】 B,D
【解析】 图的极大连通子图称为图的连通分量。当 n 个顶点两两之间都是连通的(即有路径),则此时只具有 1 个连通分量,属于最少的情况。当 n 个顶点各自独立,不存在边,则此时有 n 个连通分量,属于最多的情况。综上,选择 B,D。15.在一个无向图中,所有顶点的度数之和等于所有边数的( )倍;在一个有向图中,所有顶点的入度之和等于所有顶点出度之和的( )倍。
A. 1/2
B. 2
C. 1
D. 415.【参考答案】 B,C
【解析】 在无向图中,每一条边两端各有一个顶点,且这两个顶点的度均算了一次。因此,所有顶点的度数之和等于所有边数的两倍。在有向图中,一条边的两端仍然各有一个顶点,该边为两端顶点贡献了一单位的入度和一单位的出度 ,且总是成对出现。因此,有向图所有顶点的入度必然等于所有顶点的出度。综上,选择 B,C。16.若一有向图有 6 个顶点,11 条边,问该图是稠密图还是稀疏图?( )
A. 稠密图
B. 稀疏图
C. 都是
D. 都不是16.【参考答案】 B
【解析】 根据稠密图和稀疏图判断公式,|E|=11 小于 |V|log₂|V| = 6×log₂6 ≈ 15.51,所以该图为稀疏图。
17.下列有关图的定义,错误的是( )。
A. 无向图的所有顶点数之和可能不是边数的两倍
B. 若存在一个含有 n 个顶点,且边数最小值大于 n - 2 的图,那么该图一定含有环
C. 有向图所有顶点的入度与出度之和相等,并且等于边数
D. 如果从 u 到 v 根本不存在路径,则可记该距离为无穷17.【参考答案】 B
【解析】 A 正确,只有一个顶点,没有边的无向图为此特例。B 错误,首先没有说明是无向图还是有向图。其次,对于无向图有大于 n - 1 条的边数,才能保证该无向图有环。C、D 正确。对于 D 选项,可能有点误导性,考生需要根据具体题目所给含义进行判断,不一定每一次都是用无穷表示不存在路径。18.无向图 G 是一个包含 n(n≥2 且 n 为偶数)个顶点的图,此图中有且仅有两个连通分量,且每个连通分量也可看作一个完全图,则图 G 中最少包含几条边?
18.【参考答案】 (n2−2n)/4。设两个连通分量的顶点数分别为a、b,有a+b=n。因每个连通分量都是完全图,所以两个连通分量共有a(a−1)/2+b(b−1)/2条边。a(a−1)/2+b(b−1)/2=[(a+b)2−(a+b)−2ab]/2=(n2−n)/2−ab。由基本不等式可知,最少有(n2−n)/2−(n2/4)=(n2−2n)/4条边。
19.(1) 若 G₁是一个具有 n 个顶点的连通无向图,则 G₁最多有多少条边?G₁最少有多少条边?
(2) 若 G₂是一个具有 n 个顶点的强连通有向图,则 G₂最多有多少条边?G₂最少有多少条边?
(3) 若 G₃是一个具有 n 个顶点的弱连通有向图,则 G₃最多有多少条边?G₃最少有多少条边?
(说明:弱连通有向图指把有向图看作无向图时,仍是连通的)19.【参考答案】
(1) 答案:最多n(n−1)/2,最少n−1。当该连通无向图同时又是完全图时,具有最多的边,共n(n−1)/2条边。当该连通无向图正好是一棵树时(即不存在回路),此时具有最少的边,共n−1条边。注意:连通无向图最少边数的情况不是刚好成环的情况,因为是无向图,所以不需要成环就可以是连通图了。
(2) 答案:最多n(n−1),最少n。当图G2又刚好是完全图时,此时具有最多的边,共n(n−1)条边。当图G2刚好成环时,此时具有最少的边,共n条边。
(3) 答案:最多n(n−1),最少n−1。当图G3刚好是完全图时,具有最多的边,共n(n−1)条边。当图G3正好是一棵 “有向树” 时,此时具有最少的边,且刚好满足弱连通图的定义,共有n−1条边。6.1.4 真题演练
20.【2009】下列关于无向连通图特性的叙述中,正确的是( )。
I. 所有顶点的度之和为偶数
II. 边数大于顶点个数减 1
III. 至少有一个顶点的度为 1
A. 只有 I
B. 只有 II
C. I 和 II
D. I 和 III20.【参考答案】 A
【解析】 Ⅰ 对,无向图中所有顶点的度之和恰好为边数的 2 倍。Ⅱ 错,当无向连通图为生成树的时候,边数刚好等于顶点数 - 1。Ⅲ 错,若无向连通图为一个环,此时所有顶点的度均不为 1。21.【2010】若无向图 G = (V, E) 中含有 7 个顶点,要保证图 G 在任何情况下都是连通的,则需要的边数最少是( )。
A. 6
B. 15
C. 16
D. 2121.【参考答案】 C
【解析】 关键词 “任何情况下”、“连通”。若没有边数最少的限制,对于 “任何情况下都要连通” 的要求,很容易会联想到完全图。但本题是有 “边数最少” 的限制,可以在 6 个顶点是完全图的条件下再加一条边即可满足题意。即6(6−1)/2=15,答案为15+1=16,选 C。
说明:可能有考生会认为只要满足图是 “生成树” 即可,因此要选择 A。生成树确实是连通的,不过该图不一定在任何情况下都是一棵生成树。22.【2017】已知无向图 G 含有 16 条边,其中度为 4 的顶点个数为 3,度为 3 的顶点个数为 4,其他顶点的度均小于 3。图 G 所含的顶点个数至少是( )。
A. 10
B. 11
C. 13
D. 1522.【参考答案】 B
【解析】 本题的关键是:“无向图边数的 2 倍等于所有顶点的度之和。”,且题目要求 “顶点个数至少是”。因此令度小于 3 的顶点有x个,即度为 2 的顶点有x个,由题意得16×2=4×3+3×4+2x,解得x=4。因此G的顶点个数至少为3+4+4=11个。
提示:若本题假设其余顶点的度均为 2 不可以解得整数的话,那么可以考虑假设其余顶点的度均为 1。一般而言这两者是可以解出正确答案的,若出现有度为 1,也有度为 2 的顶点,则题目需要增加额外信息。
相关文章:

数据结构第6章 图(竟成)
第 6 章 图 【考纲内容】 1.图的基本概念 2.图的存储及基本操作:(1) 邻接矩阵法;(2) 邻接表法;(3) 邻接多重表、十字链表 3.图的遍历:(1) 深度优先搜索;(2) 广度优先搜索 4.图的基本应用:(1) 最小 (代价) 生…...

机器人现可完全破解验证码:未来安全技术何去何从?
引言 随着计算机视觉技术的飞速发展,机器学习模型现已能够100%可靠地解决Google的视觉reCAPTCHAv2验证码。这标志着一个时代的结束——自2000年代初以来,CAPTCHA("全自动区分计算机与人类的图灵测试"的缩写)一直是区分…...

CppCon 2014 学习:(Costless)Software Abstractions for Parallel Architectures
硬件和科学计算的演变关系: 几十年来的硬件进步:计算机硬件不断快速发展,从提升单核速度,到多核并行。科学计算的驱动力:科学计算需求推动硬件创新,比如需要更多计算能力、更高性能。当前的解决方案是并行…...

网络爬虫 - App爬虫及代理的使用(十一)
App爬虫及代理的使用 一、App抓包1. App爬虫原理2. reqable的安装与配置1. reqable安装教程2. reqable的配置3. 模拟器的安装与配置1. 夜神模拟器的安装2. 夜神模拟器的配置4. 内联调试及注意事项1. 软件启动顺序2. 开启抓包功能3. reqable面板功能4. 夜神模拟器设置项5. 注意事…...
Kafka集群部署(docker容器方式)SASL认证(zookeeper)
一、服务器环境 序号 部署版本 版本 1 操作系统 CentOS Linux release 7.9.2009 (Core) 2 docker Docker version 20.10.6 3 docker-compose docker-compose version 1.28.2 二、服务规划 序号 服务 名称 端口 1 zookeeper zookeeper 2181,2888,3888 2 ka…...
【python爬虫】利用代理IP爬取filckr网站数据
亮数据官网链接:亮数据官网...

群晖 NAS 如何帮助培训学校解决文件管理难题
在现代教育环境中,数据管理和协同办公的效率直接影响到教学质量和工作流畅性。某培训学校通过引入群晖 NAS,显著提升了部门的协同办公效率。借助群晖的在线协作、自动备份和快照功能,该校不仅解决了数据散乱和丢失的问题,还大幅节…...

NLP学习路线图(十八):Word2Vec (CBOW Skip-gram)
自然语言处理(NLP)的核心挑战在于让机器“理解”人类语言。传统方法依赖独热编码(One-hot Encoding) 表示单词,但它存在严重缺陷:每个单词被视为孤立的符号,无法捕捉词义关联(如“国…...
P1438 无聊的数列/P1253 扶苏的问题
因为这两天在写线性代数的作业,没怎么写题…… P1438 无聊的数列 题目背景 无聊的 YYB 总喜欢搞出一些正常人无法搞出的东西。有一天,无聊的 YYB 想出了一道无聊的题:无聊的数列。。。 题目描述 维护一个数列 ai,支持两种操…...

嵌入式学习笔记 - 新版Keil软件模拟时钟Xtal灰色不可更改的问题
在新版Keil软件中,模拟时钟无法修改XTAL频率,默认只能使用12MHz时钟。这是因为Keil MDK从5.36版本开始,参数配置界面不再支持修改系统XTAL频率,XTAL选项变为灰色,无法修改。这会导致在软件仿真时出现时间错误的问题&…...
k8s的出现解决了java并发编程胡问题了
Kubernetes(K8s)作为一种开源的容器编排平台,极大地简化了应用程序的部署、管理和扩展。这不仅解决了很多基础设施方面的问题,也间接解决了Java并发编程中的一些复杂问题。本文将详细探讨Kubernetes是如何帮助解决Java并发编程中的…...
如何利用大语言模型生成特定格式文风的报告类文章
在这个算法渗透万物的时代,我们不再仅仅满足于大语言模型(LLM)能“写”,更追求它能“写出精髓,写出风格”。尤其在专业且高度格式化的报告类文章领域,仅仅是内容正确已远远不够,文风的精准复刻才是决定报告是否“对味儿”、能否被目标受众有效接受的关键。这不再是简单的…...

黑马Java面试笔记之 集合篇(算法复杂度+ArrayList+)
一. 算法复杂度分析 1.1 时间复杂度 时间复杂度分析:来评估代码的执行耗时的 常见的复杂度表示形式 常见复杂度 1.2 空间复杂度 空间复杂度全称是渐进空间复杂度,表示算法占用的额外存储空间与数据规模之间的增长关系 二. 数组 数组(Array&a…...
【从0-1的HTML】第2篇:HTML标签
文章目录 1.标题标签2.段落标签3.文本标签brbstrongsubsup 4.超链接标签5.图片标签6.表格标签7.列表标签有序列表ol无序列表ul定义列表dl 8.表单标签9.音频标签10.视频标签11.HTML元素分类块级元素内联元素 12.HTML布局13.内联框架13.内联框架 1.标题标签 标题标签:…...
从“Bucharest”谈起:词语翻译的音译与意译之路
在翻译中,面对地名、人名或新兴术语时,我们常常会遇到一个抉择:到底是“音译”,保留其原发音风貌,还是“意译”,让它意义通达? 今天我们以“Bucharest”为例,展开一次语言与文化的微…...

Nginx+Tomcat负载均衡
目录 Tomcat简介 Tomcat 的核心功能 Tomcat架构 Tomcat 的特点 Tomact配置 关闭防火墙及系统内核 Tomcar 主要文件信息 配置文件说明 案例一:Java的Web站点 案例二:NginxTomcat负载均衡、动静分离 Tomcat简介 Tomcat 是由 Apache 软件基金会&am…...
JVM——JVM中的字节码:解码Java跨平台的核心引擎
引入 在Java的技术版图中,字节码(Bytecode)是连接源代码与机器世界的黄金桥梁。当开发者写下第一行public class HelloWorld时,编译器便开始了一场精密的翻译工程——将人类可读的Java代码转化为JVM能够理解的字节码指令。这些由…...

【论文解读】ReAct:从思考脱离行动, 到行动反馈思考
认识从实践开始,经过实践得到了理论的认识,还须再回到实践去。 ——《实践论》,毛泽东 1st author: About – Shunyu Yao – 姚顺雨 paper [2210.03629] ReAct: Synergizing Reasoning and Acting in Language ModelsReAct: Synergizing Reasoning and…...
数据解析:一文掌握Python库 lxml 的详细使用(处理XML和HTML的高性能库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、lxml 概述1.1 lxml 介绍1.2 安装和第一个案例1.3 性能优化技巧二、XML处理2.1 解析XML2.2 访问元素2.3 遍历XML树2.4 修改XML2.5 写入XML三、HTML处理3.1 解析HTML3.2 XPath查询3.3 CSS选择器四、高级功能4.1 使用命…...
react native webview加载本地HTML,解决iOS无法加载成功问题
在react native中使用 “react-native-webview”: “^13.13.5”,加载HTML文件 Android: 将HTML文件放置到android/src/main/assets目录,访问 {uri: file:///android_asset/markmap/index.html}ios: 在IOS中可以直接可以直接放在react native项目下,访问…...

简单配置RHEL9.X
切换默认运行级别 将系统默认启动模式从多用户的图形界面调整为多用户的文本界面,适用于优化系统资源占用或进行远程服务器管理的场景。 注意:安装选择“带GUI的服务器”部分常用命令默认安装;如果选择“最小安装”时,部分常用命…...
默认网关 -- 负责转发数据包到其他网络的设备(通常是路由器)
✅ 默认网关概括说明: 默认网关(Default Gateway)是网络中一台负责转发数据包到其他网络的设备(通常是路由器)。当一台主机要访问不在本地子网内的设备时,会将数据包发给默认网关,由它继续转发…...
python调用硅基流动的视觉语言模型
参考: https://docs.siliconflow.cn/cn/userguide/capabilities/vision import base64 import json from openai import OpenAI from PIL import Image import io# 初始化OpenAI客户端 client OpenAI(api_key"sk-**********", # 替换为实际API密钥b…...

下载并运行自制RAG框架
项目部署 https://github.com/huangjia2019/rag-project01-framework git clone https://github.com/huangjia2019/rag-project01-framework.git 一 、 前端分部分部署 在 Ubuntu 系统 上安装 Node.js 和 npm(Node Package Manager),并初始…...

Rust 学习笔记:Cargo 工作区
Rust 学习笔记:Cargo 工作区 Rust 学习笔记:Cargo 工作区创建工作区在工作区中创建第二个包依赖于工作区中的外部包向工作区添加测试将工作区中的 crate 发布到 crates.io添加 add_two crate 到工作区总结 Rust 学习笔记:Cargo 工作区 随着项…...

颈部的 “异常坚持”
生活中,有些人的颈部会突然变得 “异常坚持”—— 头部不受控制地偏向一侧,或是不自主地旋转、后仰,仿佛被无形的力量牵引着。这种情况不仅影响外观,还会带来强烈的不适感,颈部肌肉紧绷、酸痛,像被一根绳索…...

Ubuntu22.04安装MinkowskiEngine
MinkowskiEngine简介 Minkowski引擎是一个用于稀疏张量的自动微分库。它支持所有标准神经网络层,例如对稀疏张量的卷积、池化和广播操作。 MinkowskiEngine安装 官方源码链接:GitHub - NVIDIA/MinkowskiEngine: Minkowski Engine is an auto-diff neu…...

【计算机网络】第2章:应用层—应用层协议原理
目录 1. 网络应用的体系结构 2. 客户-服务器(C/S)体系结构 3. 对等体(P2P)体系结构 4. C/S 和 P2P 体系结构的混合体 Napster 即时通信 5. 进程通信 6. 分布式进程通信需要解决的问题 7. 问题1:对进程进行编址…...

【Zephyr 系列 6】使用 Zephyr + BLE 打造蓝牙广播与连接系统(STEVAL-IDB011V1 实战)
🧠关键词:Zephyr、BLE、广播、连接、GATT、低功耗蓝牙、STEVAL-IDB011V1 📌适合人群:希望基于 Zephyr 实现 BLE 通信的嵌入式工程师、蓝牙产品开发人员 🧭 前言:为什么选择 Zephyr 开发 BLE? 在传统 BLE 开发中,我们大多依赖于厂商 SDK(如 Nordic SDK、BlueNRG SD…...

利用 Scrapy 构建高效网页爬虫:框架解析与实战流程
目录 前言1 Scrapy 框架概述1.1 Scrapy 的核心优势1.2 Scrapy 的典型应用场景 2 Scrapy 工作原理解析2.1 框架结构图2.2 Spider:定义数据采集策略2.3 Scheduler:调度请求与去重2.4 Downloader:网页下载器2.5 Item:结构化数据容器2…...