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

3D点云数据处理中的聚类算法总结

1.欧式聚类:

基于点的空间距离(欧几里得距离)来分割点云,将距离较近的点归为同一簇。
欧式聚类需要的参数:邻域半径R,簇的最小点阈值minPts,最大点数阈值maxPts。
实现效率:
O(n * log n)
实现步骤:
(1)从未访问点开始探索:对于点云中的每一个未访问的点,进行以下步骤:
(2)区域查询:使用空间索引(如KD树)查找在以当前点为中心、半径为R的邻域内的所有点。如果邻域内的点数量大于或等于最小点阈值minPts,则将该点标记为一个新的聚类中心。
(3)扩展聚类:从这个聚类中心出发,继续探索邻域内的点,如果发现这些邻域内的点也是聚类的一部分,继续进行区域查询,将这些点也加入到聚类中,并对新发现的点进行同样的操作。如果邻域内的点不够,意味着这个聚类已经识别完毕。如果聚类簇的点数大于最大点阈值maxPts,进行丢弃。
(4)标记与输出:将识别到的聚类标记为不同的ID,直到点云中的所有点都被访问。输出结果为每个点对应的聚类标签。

2.条件欧式聚类:

条件欧式聚类在传统欧式聚类(仅依赖距离阈值)的基础上,增加了条件函数,用于判断两个邻近点是否属于同一簇。条件函数可以由用户自定义,结合点的空间距离和其他属性(如法向量角度、颜色差异等),从而实现更灵活和精确的分割。
实现效率:
O(n * log n)
实现步骤:
略(在欧式聚类的基础上增加额外条件限制)

3.区域生长聚类:

区域生长聚类是一种基于种子点的点云聚类方法,尤其是在需要利用点云几何信息(如表面连续性)的场景中。
区域生长聚类需要的参数:k个近邻或邻域半径r,角度阈值θth,曲率阈值Cth。
实现效率:
O(n * log n)
实现步骤:
(1)初始化,从点云中选择一个种子点,PCL默认按照曲率大小排序,选择曲率最小的作为第一个种子点(曲率小的点通常位于平滑区域);并创建空的簇集合以及种子队列。
(2)生长过程,
·邻域搜索,找到当前种子点的k近邻,或指定半径内的邻近点。
·条件检查,计算当前种子点法向量Ns与邻近点Ni的夹角,若arccos(Ns·Ni)<θth(角度阈值)且邻近点的曲率<Cth,则认为邻近点与种子点属于同一个簇。
·簇扩展,将满足角度条件的邻近点加入当前簇,并将其添加到种子队列。
·种子更新,从队列中移除当前种子点,处理下一个种子点,直到队列为空。
(3)新簇生成,当前簇生长完成后,从剩余未分配的点中选择新的种子点(仍选择曲率小的点),重复生长过程。
(4)终止条件,当所有点都被分配到簇或标记为不可生长(孤立点)时,算法结束。输出多个簇的集合。

4.Min-Cut聚类:

Min-Cut聚类是一种基于图割(Graph Cut)的点云分割方法,主要用于二值分割,即将点云分为前景和背景两个部分。这种方法适用于从点云中提取特定目标(如物体)的情况。
将点云分割为两类:
·前景点: 属于目标物体的点。
·背景点: 不属于目标物体的点。
实现效率:
O(n²) 或更高
实现步骤:
(1)构建图结构,将点云中每个点视为图的一个顶点。额外添加两个虚拟顶点:源点和汇点。源点代表前景点,汇点代表背景。
边的连接方式:每个顶点与源点和汇点相连(分别表示前景和背景的归属可能性);每个顶点与它的k近邻点相连。
(2)分配权重,图中的每条边都被赋予权重,表示割段这条边的代价,权重分为三类:
前景权重:点与源点之间的边权重,由用户指定一个常数,反映点属于前景的先验倾向。
背景权重:点与汇点之间的边权重,根据点到目标中心的距离计算,公式为:
在这里插入图片描述

其中d为点到目标中心的水平距离,σ是用户设置的高斯核函数,控制距离衰减速度。当点超过用户定义的半径时,权重趋近于0,表示更可能是背景。
平滑权重:点与近邻点之间的边权重,基于两点的欧式距离dij:
在这里插入图片描述

距离越远,权重越小,割断的可能性越大。
(3)最小割计算,使用最大流-最小割算法计算图的最小割,最小割是将图分为两个子集(源点侧和汇点侧)的边集合,其总权重之和最小。源点侧的点被标记为前景,汇点侧的点被标记为背景。
(4)输出结果,索引为0的为背景点,索引为1的为前景点。

上述四种算法在点云的PCL处理库(c++或python)中有比较成熟的实现,可直接调用。下面的几种算法在Python中也有成熟的实现。

5.DBSCAN:

DBSCAN 是一种经典的密度聚类算法,它的核心思想是通过点的密度连通性来识别簇,能够发现任意形状的簇并有效处理噪声。
DBSCAN 需要两个参数:邻域半径ε和形成密集区域所需的最小点数minPts。
点类型定义:
核心点:某个点的ε邻域内包含至少minPts个点(包括自身)。
边界点:非核心点,但落在某个核心点的邻域内。
噪声点:既不是核心点,也不是边界点的点。
密度传播关系定义:
直接密度可达:若点q在核心点p的ε邻域内,则q从p直接密度可达。
密度可达:若存在点序列 p1,p2,...,pn,其中p1=p,pn=q,且pi+1从pi直接密度可达,则q从p密度可达。
密度连通:若存在核心点o,使得点p和q都从o密度可达,则p和q密度连通。密度连通的点形成一个簇。
实现效率:
时间复杂度O(nlogn)

DBSCAN 的实现是一个迭代过程,通过标记点并扩展簇来完成聚类。
实现步骤
(1)输入数据集,包含n个点,设置邻域半径ε和定义最小点数minPts;
(2)初始化,将所以点标记为“未访问”,创建空的簇集合和噪声集合;
(3)主循环,随机选择一个“未访问”点p,将p标记为“已访问”,计算点p的ε邻域内的点数Nε§,包括p点自身。
|Nε(p)| < minPts
将p标记为“噪声”,暂不分配簇;
继续下一轮循环。
|Nε(p)| ≥ minPts
p是核心点,创建新簇C;
将p加入C。
(4)簇扩展,
种子集合:将Nε§中的所有未访问点加入种子集合S。
迭代扩展:
从S中取出一个点q。
若q未访问:
标记q为“已访问”;
查询q的邻域Nε(q);
|Nε(q)| ≥ minPts(q是核心点):
将Nε(q)中的未访问点加入S。
将q加入当前簇C。
重复直到S为空。
(5)重复,返回步骤(3),选择下一个未访问点,直到所有点都被访问。
(6)输出,簇集合:每个簇包含密度连通的核心点和边界点;噪声集合:未分配到任何簇的点。
在这里插入图片描述

如图所示,设置minPts = 4。点 A 和其他红点是核心点,因为在ε邻域内,这些点周围的区域至少包含 4 个点 (包括点本身)。因为它们彼此之间都可以访问,形成了一个单独的集群。点 B 和点 C 不是核心点,但是可以从 A (通过其他核心点) 到达,因此也属于集群。点 N 是一个噪声点,它既不是核心点,也不是直接可达的。

6.层次聚类:

层次聚类分为两种:
凝聚聚类:从每个数据点开始,每个点是一个簇,逐步合并最近的簇,直到所有点在一个簇中。
分裂聚类:从所有点在一个簇开始,逐步分割,直到每个点为单独簇。分裂聚类较少用,但适合特定场景。
链接准则:
合并时使用链接准则决定簇间距离,使用不同准则可能导致不同的聚类结果:
单链接:两个簇间的最小点间距离。
完全链接:两个簇间的最大点间距离。
平均链接:两个簇所有点对距离的平均值。
中心链接:两个簇中心间的距离。
实现效率:
层次聚类的计算复杂度通常为 O(n3),适合中小型数据集(数百到千个点)。对于大型数据集效率较低,可能需优化。
实现步骤(以凝聚聚类为例):
(1)初始化:每个数据点视为一个单独的簇。若有n个点,初始有n个簇。
(2)距离计算:计算每对簇间的距离,常用欧式距离。距离定义依赖链接准则。
(3)合并簇:找到距离最近的两簇,合并为一个新簇,簇数减 1。
(4)更新距离:合并后,更新距离矩阵,计算新簇与其他簇的距离。
(5)迭代:重复上述步骤,直到所有点在一个簇中,或达到预定簇数。
实现示例:
假设数据集 S={A(0,0),B(1,1),C(5,5),D(6,6)},使用单链接,欧式距离:
初始簇:{A},{B},{C},{D}
距离矩阵:
在这里插入图片描述
第一次合并:
最近对:A-B 距离1.4,合并为{A,B};
更新矩阵:
在这里插入图片描述
第二次合并:
最近对:C-D距离1.4,合并为{C,D}:
更新矩阵:
在这里插入图片描述
第三次合并:
合并{A,B}和{C,D}簇为{A,B,C,D},结束。

7.k-means聚类:

K-Means 聚类的目标是将n个数据点划分为k个簇,使得每个点属于距离其最近的簇中心,并最小化簇内点的总方差。其核心思想基于以下假设:
①数据点围绕若干中心(质心)分布,簇是球形或紧凑的。
②通过迭代优化簇中心的位置,逐步收敛到局部最优解。
K-Means 是一种硬聚类方法,每个点严格属于一个簇,不支持模糊分配。
实现效率:
O(nkdt),n个点,k个中心,d维,t次迭代。
实现步骤:
(1)输入:
数据集D={x1,x2,...,xn}包含n个点,每个点是d维向量。簇数k,需要预先指定。距离度量,通常使用欧式距离。
(2)初始化:随机选择k个点作为初始簇中心{μ1,μ2,...,μk}
(K-Means++中对初始簇中心的选择方法进行了改进,先随机选择一个中心,后续中心选择概率与已有中心 的最小距离平方成正比,重复直到选出k个中心。)
(3)分配阶段:
对每个数据点xi:计算其与所有簇中心μi的距离。将xi分配到距离最近的簇中心所属的簇Cj。
(4)更新阶段:
对每个簇Cj:计算簇内所有点的均值,更新簇中心μj:
在这里插入图片描述

其中∣Cj∣是簇Cj的点数。
(5)迭代:
重复上述步骤(3)、(4),直到满足终止条件:
①簇中心不再变化(收敛);②达到最大迭代次数;③目标函数变化小于阈值。
(6)输出:
k个簇{C1,C2,...,Ck},及其中心{μ1,μ2,...,μk}

8.体素聚类:

通过将点云划分到三维体素网格(Voxel Grid)中,利用体素之间的连通性或特征进行聚类。
体素聚类需要的参数:体素大小vs。
实现效率:
体素化O(n);聚类O(mlogm),(其中m为体素个数,通常远小于n)
实现步骤:
(1)体素化,计算点云的边界,根据设置的体素大小,将空间划分为Nx *Ny *Nz的网格。
在这里插入图片描述
如对于点p=(x,y,z),体素索引为:
在这里插入图片描述
将点分配到对应体素。

(2)计算体素特征(可选,若仅连通性聚类,则不需要计算):
统计点数:遍历每个非空体素V(i,j,k),记录其包含的点数Nijk;
计算质心:对体素V(i,j,k)中的点{p1,p2,...,pn},计算中心坐标,用于体素的代表点,用于后续聚类;
标记空体素:若Nijk=0,标记V(i,j,k)为空,也可设置最小点数阈值,过滤噪声体素。
(3)连通性聚类:
①定义邻接规则:
6-邻域:仅考虑上下左右前后6个方向的邻居;
26-邻域:考虑3*3*3立方体内的所有26个邻居。
②初始化:
创建一个空的簇集合{C1,C2,...}和访问标记数组(标记体素是否已经处理过),选择未访问的非空体素V(i,j,k)作为种子。
③连通性遍历:
将种子体素加入C以及队列,弹出队列头部元素,检测其邻居,若邻居非空且未访问,加入C和队列,重复直到队列为空。
重复:
从剩余未访问的非空体素中选择新种子,重复步骤③,直到所有体素被处理。
(4)点簇提取:
将体素簇映射为原点云,生成最终的点云簇。

9.OPTICS:

OPTICS(Ordering Points To Identify the Clustering Structure) 是一种基于密度的聚类算法,克服DBSCAN对单一密度阈值ε依赖的局限性。OPTICS 通过对点云数据进行有序排序,生成一个层次化的聚类结构,支持提取任意密度的聚类结果。
需要的参数:邻域半径ε,最小点数minPts,陡度阈值ξ用于簇提取(0~1之间)。
概念定义:
核心距离:对于点x和参数minPts,核心距离dcore(x)是x到其第minPts个最近邻的距离。若x的邻居数|Nε(x)|<minPts,则dcore(x)=∞。核心距离表示点x是否为核心点,核心点能生成簇。
可达距离:对于点x和其邻近点o,可达距离为:

其中d(x,o)是点x和点o的欧式距离。可达距离表示从核心点x到点o的密度连接成本。
处理顺序:OPTICS按照可达距离从小到大的顺序处理点,优先扩展密度较高的区域。
输出结构:生成一个点序列,每个点带有其核心距离和可达距离,可视化为“可达性图”。
实现效率:
O(nlogn)
实现步骤:
(1)初始化,输入点云P={p1,p2,...,pn},设置邻域半径阈值ε、最小邻居数minPts。创建两个集合,分别存储已处理点(初始为空)和未处理点(初始为所有点)。创建一个优先队列用于排序可达距离。创建输出序列Order和对应的dcore,dreach列表,初始为空。
(2)选择种子点,从未处理的点中随机选择一个点x作为初始起点(或按特点策略选择),将x标记为已处理,加入输出序列Order。
(3)计算核心距离,找到x的ε-邻域内的点集Nε(x),若Nε(x)的个数≥minPts,则按距离排序,取第minPts个点的距离作为dcore(x);若Nε(x)的个数<minPts,则dcore(x)=∞(非核心点)。
(4)扩展簇,若dcore(x)≠∞,则x是核心点,对于Nε(x)中的每个未处理点o,计算dreach(o,x)=max{dcore(x),d(x,o)},将(o,dreach(o,x))加入优先队列(若o不在队列中,进行添加;若o已在队列中,且可达距离比之前存储的值更小,则进行更新;若可达距离不比之前更小,则不更新)。从优先队列中取出可达距离最小的点o’,将其标记为已处理,并加入Order,记录dreach(o’)、dcore(o’),若o’是核心点,重复扩展过程。
(5)重复,若优先队列为空,从未处理点中选择新种子点,重复步骤(2)-步骤(4),直到所有点被处理。
(6)输出,返回点序列Order和每个点的dreach,dcore。
(7)簇提取,
需要用到的数据:
点序列Order = [p1,p2,...,pn]
可达距离L_dreach=[r1,r2,...,rn];
参数ξ,ξ越大,提取的簇越粗,ξ越小,提取更多细小的簇。
提取步骤:
①初始化,创建簇集合与噪声集合,初始都为空。创建临时簇Ctemp,用于收集潜在簇点。
②检测簇开始,逐点分析可达距离,检查前一点和当前点,若dreach(i)值大(为∞或大于dreach(i+1)),且dreach(i+1)<(1-ξ)·dreach(i),表示pi为簇的起点,则清空Ctemp,添加pi点。
③扩展簇,继续遍历后续点pj(j>i),若dreach(j)满足dreach(j)≤(1+ξ)·dreach(j-1),则添加pj到Ctemp。
④簇结束,若dreach(k)>(1+ξ)·dreach(k-1),表示pk-1是簇的终点。检查Ctemp,若Ctemp的个数≥minPts,则保存到簇集合,否则保存为噪声集合。
⑤处理剩余点,若dreach(i)=∞未形成有效簇,则为噪声,重复直到序列结束。

10.HDBSCAN:

HDBSCAN结合层次聚类和密度估计,是对DBSCAN的改进版本,且不需要指定邻域半径ε。能够自动识别不同密度和形状的簇,并显式区分噪声点。
实现步骤:
(1)计算核心距离,对输入点云P={p1,p2,...,pn},计算点pi的k个最近邻,dcore(pi)=第k个邻居距离。输出核心距离集合[dcore(p1),dcore(p2),...,dcore(pn)]
(2)构建互达距离图,对每对点(pi,pj),计算互达距离:
dmreach(pi,pj)=max{dcore(pi),dcore(pj),d(pi,pj)}
(同OPTICS算法的可达距离有区别,需注意)
根据互达距离,形成加权图。
(3)构建最小生成树MST,使用kruskal算法从互达距离图中提取最小联通结构,按dmreach从小到大加边,避免环,MST示意图如下图所示:
在这里插入图片描述
加粗部分为最小生成树(顶点为点云坐标,数字为权值-即互达距离)
(4)层次聚类,从单一簇MST开始,通过逐步移除(剪枝)较长的边(即互达距离较大的边),将数据分裂成多个子图。随着边被移除,子图的数量逐渐增加,形成一个层次结构,这个过程会持续进行,直到所有的边都被移除。
(5)簇提取,
变量含义:λbirth指一个簇诞生时的密度阈值,λdeath指一个簇结束时的密度阈值,其中λ的计算方式:
λ = 1/dmreach(pi,pj)
每次剪枝时,记录新形成的子图(簇)的λbirth,当这个子图进一步分裂或消失时,记录它的λdeath
稳定性计算:

簇提取的目标,从所有可能的簇中,选择一组互不重叠的簇,使得稳定性最大化,通过EOM(Excess of Mass)策略实现。

相关文章:

3D点云数据处理中的聚类算法总结

1.欧式聚类&#xff1a; 基于点的空间距离&#xff08;欧几里得距离&#xff09;来分割点云&#xff0c;将距离较近的点归为同一簇。 欧式聚类需要的参数&#xff1a;邻域半径R,簇的最小点阈值minPts&#xff0c;最大点数阈值maxPts。 实现效率&#xff1a; O(n * log n) 实现…...

配置本机监控

配置本机监控 1、安装zabbix-agent 2、编辑zabbix-agent配置文件 zabbix-agent工作模式&#xff1a; 主动模式 被动模式 这两行配置都是指定监控服务器的地址 被动模式下&#xff0c;zabbix server的地址 主动模式下&#xff0c;zabbix server的地址 指定被监控端的名称&…...

基于python的Flask模块化设计与蓝图的妙用——打造轻量化Web应用

基于python的Flask模块化设计与蓝图的妙用——打造轻量化Web应用 前言 如果你刚开始学习Flask&#xff0c;可能会遇到这样的困惑&#xff1a;当项目功能越来越多&#xff0c;代码都堆在一个.py文件里&#xff0c;不仅难维护&#xff0c;还容易冲突。别担心&#xff01;本文将用…...

历年云南大学计算机复试上机真题

历年云南大学计算机复试机试真题 在线评测&#xff1a;传送门&#xff1a;pgcode.cn 喝饮料 题目描述 商店里有 n 中饮料&#xff0c;第 i 种饮料有 mi 毫升&#xff0c;价格为 wi。 小明现在手里有 x 元&#xff0c;他想吃尽量多的饮料&#xff0c;于是向你寻求帮助&#x…...

Python 线程池

Python 线程池 flyfish 线程池的概念 线程池是一种多线程处理形式&#xff0c;它预先创建了一定数量的线程&#xff0c;这些线程会被保存在一个线程池中。当有新的任务提交时&#xff0c;线程池会从池中取出一个空闲的线程来执行该任务&#xff1b;若池中没有空闲线程&#…...

【Linux】Bash是什么?怎么使用?

李升伟 整理 什么是 Bash&#xff1f; Bash&#xff08;Bourne Again Shell&#xff09;是一种 命令行解释器&#xff08;Shell&#xff09;&#xff0c;广泛用于 Unix 和 Linux 操作系统。它是 Bourne Shell&#xff08;sh&#xff09; 的增强版&#xff0c;提供了更多的功能…...

蓝桥杯day2:解码异或 后的数组

一、题意 未知 整数数组 arr 由 n 个非负整数组成。 经编码后变为长度为 n - 1 的另一个整数数组 encoded &#xff0c;其中 encoded[i] arr[i] XOR arr[i 1] 。例如&#xff0c;arr [1,0,2,1] 经编码后得到 encoded [1,2,3] 。 给你编码后的数组 encoded 和原数组 arr …...

R语言软件配置(自用)

①输入R: The R Project for Statistical Computing ②点击进入Cran镜像网页&#xff0c;选择清华大学镜像&#xff0c;选择自己合适的版本下载即可(以我电脑windows为例)。 ③点击base或者install R for the first time&#xff0c;然后选择Download R-4.4.3 for windows&…...

基于deepseek的智能语音客服【第二讲】后端异步接口调用封装

本篇内容主要讲前端请求&#xff08;不包含&#xff09;访问后端服务接口&#xff0c;接口通过检索知识库&#xff0c;封装提示词&#xff0c;调用deepseek的&#xff0c;并返回给前端的全过程&#xff0c;非完整代码&#xff0c;不可直接运行。 1.基于servlet封装异步请求 为…...

LEDNet总结

LEDNet&#xff1a;联合低光增强和暗光去模糊 1、暗光增强和去模糊可以单独处理&#xff0c;但是合并效果不理想。 研究问题的背景&#xff1a;光线不足 可见度颜色失真 最小快门速度有限 长时间曝光引起运动模糊 低光运动模糊同时存在 存在问题&#xff1a;暗光增强后运动模…...

线性规划的标准形式

标准形式的定义 目标函数&#xff1a;最大化线性目标函数 其中&#xff0c;x 是决策变量向量&#xff0c;c 是目标系数向量。 约束条件&#xff1a;等式形式约束 A x b, 其中&#xff0c;A 是约束系数矩阵&#xff0c;b 是常数项向量。 变量非负约束&#xff1a; 。 因此…...

xxl-job 执行器端服务器的简单搭建

xxl-job 执行器端服务器的简单搭建 先讲一下我们平时怎么使用 xxl-job 的&#xff0c;再引出背后是如何实现的。 我觉得对于一款成功的框架来说&#xff0c;好用&#xff0c;是非常重要的一个特性。 框架要便于接入&#xff0c;便于使用。对于用户来说&#xff0c;不要有太多…...

数字化企业可能会用到的系统有哪些?

你是否也曾像我一样&#xff0c;对这些问题充满疑问&#xff1a; 在企业数字化转型的浪潮中&#xff0c;究竟会涉及哪些系统&#xff1f; 这些系统又分别在何种情境下被投入使用&#xff1f; 如果你也有这样的疑问&#xff0c;那么这篇文章或许能为你答疑解惑。 为了给你一…...

【Linux】:守护进程化

朋友们、伙计们&#xff0c;我们又见面了&#xff0c;本期来给大家带来守护进程相关的知识点&#xff0c;如果看完之后对你有一定的启发&#xff0c;那么请留下你的三连&#xff0c;祝大家心想事成&#xff01; C 语 言 专 栏&#xff1a;C语言&#xff1a;从入门到精通 数据结…...

在 web 部署 YOLOv8目标检测(Django+html)

本文介绍如何将自己训练好的模型在网页上进行应用&#xff0c;使用 Django html 进行部署&#xff0c;能够对视频和图像进行识别&#xff0c;并显示到页面上&#xff0c;下面是一个效果&#xff1a; 上 传 和另外 7 个页面 - 个人 - Microsoft Edge 2025-03-13 21-52-06 下面进…...

程序员学商务英语之Making Business Calls

Dialogue-1 Reaching Somebody By Telephone电话找人 A: What do you think the secrect to success is? 你认为成功的秘诀是什么&#xff1f; B: Hold on to your dreams. 坚持你的梦想。 A: May I speak to your boss, Mr. Wong? 请你的老板&#xff0c;王先生接电话?…...

java项目之基于ssm的少儿编程在线培训系统(源码+文档)

项目简介 少儿编程在线培训系统实现了以下功能&#xff1a; 用户信息管理&#xff1a; 用户信息新增 用户信息修改 教师信息管理&#xff1a; 教师信息添加 教师信息删除 教师信息修改 课程信息管理&#xff1a; 课程信息添加 课程信息修改 课程信息删除 课程类型管理&…...

【初学者】Python语言中有没有指针类型?

李升伟 整理 在Python语言中&#xff0c;没有像C或C那样的显式指针类型。Python的设计哲学强调简洁和易读&#xff0c;因此它隐藏了许多底层的细节&#xff0c;包括指针。 不过&#xff0c;Python中的变量可以被视为对对象的引用。当你创建一个对象并将其赋值给一个变量时&am…...

RG-S3760应用协议配置

RG-S3760应用协议配置 1. dhcp 服务配置 提问&#xff1a;如何在设备上开启dhcp 服务&#xff0c;让不同VLAN 下的电脑获得相应的IP 地址&#xff1f; 回答&#xff1a; 步骤一&#xff1a;配置VLAN 网关IP 地址&#xff0c;及将相关端口划入相应的VLAN 中 S3760#con t S…...

C++基础 [八] - list的使用与模拟实现

目录 list的介绍 List的迭代器失效问题 List中sort的效率测试 list 容器的模拟实现思想 模块分析 作用分析 list_node类设计 list 的迭代器类设计 迭代器类--存在的意义 迭代器类--模拟实现 模板参数 和 成员变量 构造函数 * 运算符的重载 运算符的重载 -- 运…...

skywalking微服务链路追踪

是什么&#xff1f; skywalking是一个优秀的国产开源框架&#xff0c;2015年由个人吴晟&#xff08;华为开发者&#xff09;开源 &#xff0c; 分布式链路追踪就是将一次分布式请求还原成调用链路&#xff0c;将一次分布式请求的调用情况集中展示&#xff0c;比如各个服务节点…...

K8S学习之基础三十七:prometheus监控node资源

Prometheus v2.2.1 ​ 编写yaml文件&#xff0c;包含创建ns、configmap、deployment、service # 创建monitoring空间 vi prometheus-ns.yaml apiVersion: v1 kind: Namespace metadata:name: monitor-sa# 创建SA并绑定权限 kubectl create serviceaccount monitor -n monito…...

Web 小项目: 网页版图书管理系统

目录 最终效果展示 代码 Gitee 地址 1. 引言 2. 留言板 [热身小练习] 2.1 准备工作 - 配置相关 2.2 创建留言表 2.3 创建 Java 类 2.4 定义 Mapper 接口 2.5 controller 2.6 service 3. 图书管理系统 3.1 准备工作 - 配置相关 3.2 创建数据库表 3.2.1 创建用户表…...

1221. 四平方和 -蓝桥杯真题-哈希函数思想

原题链接&#xff1a;1221. 四平方和 - AcWing题库 四平方和定理&#xff0c;又称为拉格朗日定理&#xff1a; 每个正整数都可以表示为至多 44 个正整数的平方和。 如果把 00 包括进去&#xff0c;就正好可以表示为 44 个数的平方和。 比如&#xff1a; 对于一个给定的正整…...

为什么要学习人工智能(AI)?—— 未来已来,AI引领时代变革

未来已来&#xff0c;AI引领时代变革 在这个日新月异的时代&#xff0c;人工智能&#xff08;AI&#xff09;正以不可阻挡之势重塑着我们的世界。从教育的深耕细作到科研的突破创新&#xff0c;从行政的效率提升到管理的智慧化转型&#xff0c;AI技术如同一股强大的潮流&#x…...

Markdig:强大的 .NET Markdown 解析器详解

在现代开发中&#xff0c;Markdown 已经成为了一种广泛使用的轻量级标记语言&#xff0c;特别是在文档、博客和内容管理系统中&#xff0c;Markdown 为开发者提供了快速、简洁的格式化文本方式。而在 .NET 生态中&#xff0c;Markdig 是一款非常强大的 Markdown 解析器&#xf…...

云计算迁移革命:企业如何摆脱“单一云”锁定,构建自主云未来?

一场价值690亿美元的行业地震 2023年&#xff0c;博通&#xff08;Broadcom&#xff09;以690亿美元完成对VMware的收购&#xff0c;这不仅是企业IT历史上的一次天价并购&#xff0c;更在全球云计算市场掀起了一场深远的地震。VMware长期以来是企业数据中心的核心支柱&#xf…...

蓝桥杯篇---按键长按与双击

文章目录 前言1. 新增全局变量和宏定义解释1.1宏定义KEY_EVENT_*DEBOUNCE_TIMEHOLD_TIMEDOUBLE_TIMEMULTI_TIME 1.2全局变量Key_ValKey_OldKey_DownKey_Upsys_tickkey_eventkey_pressedkey_press_startkey_last_releaseclick_cnt 2. 定时器初始化&#xff08;1ms中断&#xff0…...

created在vue3 script setup中的写法

在 Vue 2 里&#xff0c;created 是一个生命周期钩子函数&#xff0c;会在实例已经创建完成之后被调用&#xff0c;主要用于在实例初始化之后、数据观测和 event/watcher 事件配置之前执行代码。而在 Vue 3 的 <script setup> 语法糖里&#xff0c;不再有像 Vue 2 那样直…...

基于springboot的房屋租赁系统(008)

摘 要 社会的发展和科学技术的进步&#xff0c;互联网技术越来越受欢迎。网络计算机的生活方式逐渐受到广大人民群众的喜爱&#xff0c;也逐渐进入了每个用户的使用。互联网具有便利性&#xff0c;速度快&#xff0c;效率高&#xff0c;成本低等优点。 因此&#xff0c;构建符…...

Linux上的`i2c-tools`工具集的编译构建和安装

源码复制到Ubuntu系统中并解压 的i2c-tools工具集的源码百度网盘下载链接&#xff1a; https://pan.baidu.com/s/1XNuMuT1auT1dMzYo3LAFmw?pwdi6xe 终端进入源码目录 cd /home/book/mybuild/i2c-tools-4.2执行编译构建命令 运行下面的命令进行编译构建 make CC${CROSS_COM…...

java项目之基于ssm的社区流浪动物救助领养系统

项目简介 社区流浪动物救助领养系统实现了以下功能&#xff1a; 本社区流浪动物救助领养系统分为管理员还有用户两个权限&#xff0c;管理员可以管理用户的基本信息内容&#xff0c;可以管理回访信息以及回访的租赁信息&#xff0c;能够与用户进行相互交流等操作&#xff0c;…...

网络空间安全(34)安全防御体系

前言 安全防御体系是一个多层次、多维度的系统&#xff0c;旨在保护组织或个人的信息资产免受各种网络攻击和威胁。 一、技术层面 网络边界防御 防火墙&#xff1a;部署在网络边界&#xff0c;通过设定规则允许或阻止特定流量的进出&#xff0c;保护内部网络不受外部攻击。入侵…...

《Linux 网络架构:基于 TCP 协议的多人聊天系统搭建详解》

一、系统概述 本系统是一个基于 TCP 协议的多人聊天系统&#xff0c;由一个服务器和多个客户端组成。客户端可以连接到服务器&#xff0c;向服务器发送消息&#xff0c;服务器接收到消息后将其转发给其他客户端&#xff0c;实现多人之间的实时聊天。系统使用 C 语言编写&#x…...

知识蒸馏:让大模型“瘦身”的魔法

知识蒸馏&#xff1a;让大模型“瘦身”的魔法 什么是蒸馏模型&#xff1f;AI界的“知识浓缩术”核心定义传统训练 vs 知识蒸馏关键优势 DeepSeek的蒸馏“三步魔法”骨架提取——搭建“迷你版大脑”知识灌注——模仿教师的“思考过程”微调优化——针对场景“查漏补缺” DeepSee…...

MySQL数据库精研之旅第一期:开启数据管理新旅程

专栏&#xff1a;MySQL数据库成长记 个人主页&#xff1a;手握风云 目录 一、数据库简介 1.1. 数据库的概念 1.2. 数据库和数据结构的关系 1.3. 主流数据库 1.3.1. 关系型数据库 1.3.2. 非关系型数据库 1.4. 关系型数据库的概念 二、MySQL配置 2.1. mysqld服务端程序 …...

Linux复习——基础IO,认识文件描述符、软硬件链接

1.复习C文件接口 1.1 fopen FILE *fopen(const char *path, const char *mode); path&#xff1a;带路径的文件名称(待打开的文件) mode&#xff1a; r&#xff1a;以可读方式打开&#xff0c;不可写&#xff0c;文件不存在&#xff0c;则报错 r&…...

【Java集合夜话】第1篇:拨开迷雾,探寻集合框架的精妙设计

欢迎来到Java集合框架系列的第一篇文章&#xff01;&#x1f339; 本系列文章将以通俗易懂的语言&#xff0c;结合实际开发经验&#xff0c;带您深入理解Java集合框架的设计智慧。&#x1f339; 若文章中有任何不准确或需要改进的地方&#xff0c;欢迎大家指出&#xff0c;让我…...

Prometheus使用

介绍&#xff1a;Prometheus 是一个开源的 监控与告警系统&#xff0c;主要用于采集和存储时间序列数据&#xff08;Time Series Data&#xff09; Prometheus的自定义查询语言PromQL Metric类型 为了能够帮助用户理解和区分这些不同监控指标之间的差异&#xff0c;Prometheu…...

Java学习打卡-Day19-Set、HashSet、LinkedHashSet

Set 接口 无序&#xff08;添加和取出顺序不一致&#xff09;&#xff08;但取出顺序固定&#xff09;。没有索引。不允许重复&#xff0c;所以最多一个null。遍历方式 迭代器增强for循环不能使用普通for循环索引方式。 HashSet 实现了Set接口&#xff0c;具有相应特征。底…...

冯・诺依曼架构深度解析

一、历史溯源&#xff1a;计算机科学的革命性突破 1.1 前冯・诺依曼时代 在 1940 年代之前&#xff0c;计算机领域呈现 "百家争鸣" 的格局&#xff1a; 哈佛 Mark I&#xff08;1944&#xff09;&#xff1a;采用分离的指令存储与数据存储ENIAC&#xff08;1946&a…...

单片机学完开发板,如何继续提升自己的技能?

很多人学完开发板后都会卡在一个尴尬的阶段&#xff1a;觉得自己会的东西不少&#xff0c;但又不知道下一步该干啥。会点C语言&#xff0c;能烧录程序&#xff0c;能点亮LED&#xff0c;玩转按键&#xff0c;搞定串口等等&#xff0c;能用开发板做点小玩意儿&#xff0c;但面对…...

Nginx 日志格式

默认日志格式配置 log_format main $remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" "$http_x_forwarded_for";该格式记录了客户端IP、用户、时间、请求、状态…...

Spring Boot 整合 Elasticsearch 实践:从入门到上手

引言 Elasticsearch 是一个开源的分布式搜索引擎&#xff0c;广泛用于日志分析、搜索引擎、数据分析等场景。本文将带你通过一步步的教程&#xff0c;在 Spring Boot 项目中整合 Elasticsearch&#xff0c;轻松实现数据存储与查询。 1. 创建 Spring Boot 项目 首先&#xff…...

STM32 —— 嵌入式系统、通用计算机系统、物联网三层架构

目录 一、嵌入式系统的概念 二、通用计算机系统与嵌入式系统的比较 用途 硬件 软件 性能与功耗 开发与维护 三、嵌入式系统与物联网的关系 四、物联网的三层架构 1. 感知层&#xff08;Perception Layer&#xff09; 2. 网络层&#xff08;Network Layer&#xff09; …...

SARAD 解读

出处&#xff1a;NIPS 2024 代码链接&#xff1a;https://github.com/daidahao/SARAD/ 一 文章动机 ① 时间建模&#xff08;Temporal Modeling&#xff09;的局限性&#xff1a; a. 时间维度上 感受野极小&#xff1b;b. 变量间时间戳错位 (时间建模、空间建模不统一) →…...

【愚公系列】《高效使用DeepSeek》017-知识点思维导图生成

🌟【技术大咖愚公搬代码:全栈专家的成长之路,你关注的宝藏博主在这里!】🌟 📣开发者圈持续输出高质量干货的"愚公精神"践行者——全网百万开发者都在追更的顶级技术博主! 👉 江湖人称"愚公搬代码",用七年如一日的精神深耕技术领域,以"…...

【linux】scp和rsync

scp 和 rsync 都是 Linux 系统中用于文件传输的命令行工具&#xff0c;它们都可以通过网络在本地和远程主机之间传输文件。 scp 命令 定义 scp 是 “secure copy” 的缩写&#xff0c;它是一个基于 SSH 协议的文件传输工具&#xff0c;用于在本地和远程主机之间安全地复制文…...

软件需求分类、需求获取(高软46)

系列文章目录 软件需求分类&#xff0c;需求获取 文章目录 系列文章目录前言一、软件需求二、获取需求三、真题总结 前言 本节讲明软件需求分类、需求获取的相关知识。 一、软件需求 二、获取需求 三、真题 总结 就是高软笔记&#xff0c;大佬请略过&#xff01;...

蓝桥杯单片机之AT24C02(基于自己对AT24C02的学习和理解)

一、先用抽象法说明原理&#xff0c;让原理变得简单易懂&#xff1a; 1、向AT24C02写入数据&#xff1a; 有个关系户&#xff0c;他想安排自己的儿子进某个大厦里某个楼层的公司&#xff0c;那么他就要先找到这个公司的地址&#xff0c;然后再找到该公司是第几楼&#xff0c;最…...