SE-SSD论文阅读

news2024/11/14 4:07:50

摘要

本文提出了一种基于自集成单级目标检测器(SE-SSD)的室外点云三维目标检测方法。我们的重点是利用我们的公式约束开发软目标和硬目标来联合优化模型,而不引入额外的计算在推理中。具体来说,SE-SSD包含一对teacher 和student ssd,在其中我们设计了一个有效的基于iou的匹配策略,从teacher中过滤软目标,并制定一致性损失对齐student的预测与他们。此外,为了最大限度地利用提炼出来的知识来集成teacher,我们设计了一种新的增强方案来产生形状感知的增强样本来训练student,目的是鼓励student推断出完整的物体形状。最后,为了更好地利用硬目标,我们设计了一个ODIoU损失来监督student与预测盒中心和方向的约束。我们的SE-SSD达到顶级性能相比之前所有出版的作品。此外,它还以超高的推理速度在KITTI基准测试中获得了最高的汽车检测精度(在BEV和3D排行榜上分别排名第一和第二)。

简介

为了支持自动驾驶,通常采用激光雷达传感器的3D点云来检测车辆附近的目标。这是一个强大的方法,因为点云随时可用,不管天气(雾还是阳光)和白天的时间(白天还是晚上)。因此,各种基于点云的3D检测器最近被提出。

为了提高检测精度,提取特征的质量是一个重要的因素。这适用于单级和两级探测器。例如,一系列的工作[24,4,25,23]集中于改进区域提议对齐的特征,以更好地细化第二阶段网络。此外,许多方法[3,10,29,12,33,19]试图通过融合RGB图像和3D点云来提取更有分辨力的多模态特征。对于单级检测器,point - gnn[26]采用了一种图神经网络来获得更紧凑的点云表示,而TANet[17]设计了一个精致的三重关注模块来考虑特征智能关系。虽然这些方法提供了重要的见解,但精细的设计往往是复杂的,可能会减缓推理,特别是对于两级探测器。

为了满足实际需求,特别是自动驾驶领域的需要,三维目标检测要求在高精度的基础上提高效率。因此,另一个工作流,例如SASSD[8]和Associate-3Ddet[5],旨在利用辅助任务或进一步的约束来改进特征表示,而不引入额外的计算开销在推理过程中。根据这一工作流程,我们制定了自集成单级目标检测器(SE-SSD),以解决仅基于激光雷达点云的具有挑战性的三维检测任务。

为了提高检测精度,同时追求高效率,我们以[27]为灵感,设计了一对teacher SSD和student SSD的SE-SSD框架。teacher SSD是student的合奏。它产生相对更精确的边界框和信心,作为软性目标来监督student。与人工标注的硬目标(标签)相比,来自teacher的软目标往往具有更高的熵,从而为student提供了更多的信息[9]来学习。因此,我们利用软目标和硬目标与我们的公式约束共同优化模型,而不产生额外的推理时间。为了使student预测的边界框和置信度更好地与软目标对齐,我们设计了一种有效的基于借据的匹配策略来过滤软目标并将其与student预测配对,并进一步制定一致性损失以减少两者之间的不对齐。

另一方面,为了使student SSD能够有效地探索更大的数据空间,我们在传统增强策略的基础上设计了一种新的增强方案,以形状感知的方式生成增强对象样本。通过该方案,我们可以鼓励模型从不完全信息中推断出完整的物体形状。它也是一个即插即用的3D探测器通用模块。此外,在监督训练中,硬目标仍然是必不可少的,因为它们是模型收敛的最终目标。为了更好地利用它们,我们制定了一种新的方向感知距离- iou (ODIoU)损失来监督student在预测的边界盒的中心和方向上的约束。总的来说,我们的SE-SSD是在完全监督的方式下训练的,以最好地提高检测性能,其中所有设计的模块只在训练中需要,所以在推理期间没有额外的计算。

总之,我们的贡献包括:(i)自组装单级目标检测器(SE-SSD)框架,通过我们制定的一致性约束进行优化,以更好地将预测与软目标对齐;(ii)一种新的增强方案,以产生形状感知的增强地物;(iii)一个方向感知的距离- iou (ODIoU)损失来监督探测器使用硬目标。我们的SE-SSD在KITTI基准测试[6]中获得了最先进的3D和BEV汽车检测性能,并在普通CPU-GPU上展示了超高的推理速度(32 FPS),明显优于所有之前发表的作品,如图1所示。
在这里插入图片描述

相关工作

总的来说,3D探测器分为两种类型:(i)单级探测器直接从输入特征中学习边界框和置信度,以及(ii)两级探测器使用第二阶段的区域提议对齐特征来细化第一阶段预测。因此,两级探测器往往可以从额外的级中获得更高的精度,而单级探测器通常由于网络结构更简单而运行得更快。近期趋势(见图1和表1)显示,单级检波器[8,31]的精度逐渐接近两级检波器[23,25,32]。这促使我们致力于开发一种单级探测器,并以高精度和高速为目标。

两阶段物体检测 :在这些两阶段的检测器中,PointRCNN[24]使用PointNet[21]融合语义特征和来自区域提议的原始点进行第二阶段的细化。Part-A2[25]利用基于体素的网络提取区域提案特征,以避免歧义,并进一步改进特征表示。类似地,STD[32]通过体素化将区域提议的语义特征转化为紧凑的表示,并减少锚点的数量以提高性能。PV -RCNN[23]同时利用基于点和体素的网络从区域提案内的体素和原始点中提取特征。3D-CVF[33]从多视角图像中获取语义,并在这两个阶段中融合点特征,而CLOCs PVCas[19]则融合图像和点的语义特征来改进预测的可信度。

单阶段物体检测:VoxelNet[38]提出体素特征编码层从点云中提取特征。PointPillar[11]将点云划分为柱子,以实现高效的特征学习。SECOND[30]改进了稀疏卷积[7,15],有效地从稀疏体素中提取特征。TANet[17]提出了三重注意模块,在特征提取中考虑了特征之间的关联。point - gnn[26]利用一个图神经网络来学习点特征。3DSSD[31]结合了特征采样和基于点的采样来改进分类。Associate-3Ddet[5]从完整的点云中提取特征,监督从不完整的点云中学习到的特征,鼓励模型从不完整的点云中推断。SA-SSD[8]采用与主干并行的辅助网络,通过回归盒中心和语义类来丰富特征。CIA-SSD[8]采用轻量级BEV网络提取鲁棒的空间语义特征,结合欠条感知的置信度修正和DI-NMS更好的后处理。SESS[34]受到[27]的启发,采用半监督策略来解决室内场景中的检测问题,以减少对人工标注的依赖。

与之前的工作不同,我们的目标是利用软目标和硬目标,通过我们的新约束和增强方案,在完全监督的方式中细化功能。此外,与所有之前的单级和两级探测器相比,我们的SE-SSD在KITTI基准[6]中获得了3D和BEV汽车检测的最高平均精度,并且表现出非常高的效率。

自组装单级检测器

总体框架

在这里插入图片描述

图2显示了我们的自集成单级目标检测器(SE-SSD)的框架,它有一个teacherSSD(左)和一个studentSSD(右)。不同于以往的室外三维目标检测工作,我们同时使用并训练了两个相同架构的ssd,这样student可以通过增强的样本探索更大的数据空间,并更好地利用老师预测的相关软目标进行优化。为了训练整个SESSD,我们首先用预先训练好的SSD模型对teacher和student进行初始化。然后,从一个输入点云开始,我们的框架有两个处理路径:

1。在第一个路径中(图2中的蓝色箭头),teacher从原始的输入点云产生相对精确的预测。然后,我们对预测结果应用一组全局变换,并将其作为软目标来监督studentSSD。

2。在第一个路径中(图2中的蓝色箭头),teacher从原始的输入点云产生相对精确的预测。然后,我们对预测结果应用一组全局变换,并将其作为软目标来监督studentSSD。
在第二个路径中(图2中的绿色箭头),我们通过与第一个路径相同的全局变换加上我们的形状感知数据增强(第3.4节)来干扰相同的输入。然后,我们将增加的输入输入给student,并使用我们的一致性损失(第3.2节)来训练它,以使student的预测与软目标相一致;(ii)当我们增加输入时,我们带着它的硬目标(图2(右上角)),用我们的方向感知距离-欠条损失(第3.3节)来监督student。

在培训中,我们对两个SSD模型进行迭代更新:使用上述两个损失优化student,使用标准指数移动平均(EMA)仅使用student参数更新teacher。这样,teacher就可以从student身上获得提炼的知识,产生软目标来监督student。所以,我们把最后一个经过训练的student称为自集成单级目标检测器。

Teacher & Student SSD架构 :该模型具有与[35]相同的结构,以有效地编码点云,但我们去掉了信心函数和DI-NMS。它包括稀疏卷积网络(SPConvNet)、BEV卷积网络(BEVConvNet)和多任务头(mhead)。BEV的意思是鸟瞰。在点云体素化后,我们找到每个体素的平均三维坐标和点密度作为初始特征,然后使用SPConvNet提取特征,该特征有四个块({2,2,3,3}子流形稀疏卷积[7]层),最后是一个稀疏卷积[15]层。接下来,我们将沿z方向稀疏的三维特征拼接成二维密集的特征,利用BEVConvNet进行特征提取。最后,我们使用MTHead回归边界框并进行分类。

一致性损失

在三维目标检测中,由于距离和目标遮挡形式的不同,预定义锚点的点云模式可能会有很大的差异。因此,相同硬目标的样本可能有非常不同的点模式和特征。相比之下,每个训练样本的软目标可以提供更多的信息,有助于揭示同一类[9]数据样本之间的差异。这促使我们将相对较精确的teacher预测作为软目标,利用它们来共同优化student与硬目标。据此,我们制定了一个一致性损失来优化student网络的软目标。

在计算一致性损失之前,我们首先设计了一种有效的基于借据的匹配策略,目的是对非常稀疏的户外点云预测的非轴向的teacher盒和student盒进行配对。为了获得高质量的软目标,我们首先过滤掉那些置信度小于τc的预测边界框(teacher和student),从而减少一致性损失的计算。接下来,我们计算每一对剩余student和teacher边界框之间的欠条,并过滤掉欠条小于阈值τI的对,从而避免使用不相关的软目标误导student;我们将N和n0分别表示为盒对的初始数量和最终数量。因此,我们只保留高度重叠的student-teacher对。最后,对于每个student盒,我们将其与拥有最大欠条的teacher边框盒配对,以增加软目标的信心。与硬目标相比,过滤后的软目标通常更接近student的预测,因为它们是基于相似的特征进行预测的。因此,软目标可以更好地引导student对预测进行微调,减少梯度方差,从而获得更好的训练。

与IoU loss不同,Smooth-L1loss[16]在预测中可以均匀地对待所有维度,不偏向任何一个特定的维度,不同维度对应的特征也可以均匀地优化。因此,我们用它来表示我们的边界盒一致性损失(),以最小化每对teacher和student边界盒之间的错位误差:

{x, y, z}, {w、l、h}, r表示中心的位置,大小和方向的边界框,分别预测的teacher(下标 t)或student(下标s),表示的 loss和 表示第 i 个student边界框与所有teacher边界框的最大 IoU。接下来,为了最小化student和teacher预测置信度的差异,我们制定了分类分数的一致性损失(Lc cls):

其中$ \mathcal{L}{\delta{c}}^{c}\delta_{c}$的平滑- l1损失,σ(cs)和σ(ct)分别表示student和teacher的sigmoid分类分数。这里我们采用sigmoid函数对两个预测置信值进行归一化,使归一化值之间的偏差保持在一个小范围内。结合式(1)(2),可得整体一致性损失为:

我们为两个术语设置了相同的权重。

Orientation-Aware Distance-IoU Loss

在有监督的硬目标训练中,经常采用平滑l1损失[16]约束边界盒回归。然而,在室外场景中,由于距离较长和遮挡,很难从稀疏点获取足够的信息来精确预测边界盒的所有维度。为了更好地利用回归边界盒的硬目标,我们设计了方向感知的距离- iou损失(ODIoU),以更加关注预测的边界盒与ground-truth边界盒之间的盒子中心和方向的对齐;参见图3。

在这里插入图片描述

受[36]的启发,我们对预测的三维中心和ground-truth边界盒之间的距离施加一个约束,以最小化中心不对准。更重要的是,我们对预测的BEV角设计了一种新的方位约束,旨在进一步减小预测的BEV角与ground-truth box的方位差。在三维物体检测中,这种约束对于鸟瞰图中非轴向盒的精确对齐具有重要意义。同时,我们也发现这种约束是进一步提高检测精度的重要手段。与Smooth-L1损失相比,我们的ODIoU损失增强了盒子中心和方向的对齐,容易从分布在物体表面的点来推断,从而获得更好的性能。总的来说,我们的ODIoU损失是这样表述的:

其中、分别表示预测的和真实的边界盒,c表示两个边界盒三维中心之间的距离(见图3中的), d表示两个边界盒所包围的最小长方体的对角线长度;为bpv与的BEV取向差;是一个超参数重量。

在我们的ODIoU损失公式中,是一个重要的术语,我们专门设计它来鼓励预测的边界盒旋转到与ground-truth方向平行的最近方向。当4r等于或时,也就是说,两个盒子的方向是相互垂直的,因此这一项达到最大值。当4r等于0、π或−π时,这一项达到其最小值,即0。如图4所示,我们可以进一步观察的梯度。当训练过程最小化这一项时,它的梯度将使趋于0、π或−π,这是使损失最小化的最近位置。这是因为梯度幅度与角度差正相关,从而促进了不同训练阶段的快速收敛和平滑微调。
在这里插入图片描述
此外,我们还分别使用Focal loss[14]和cross-entropy loss进行边界盒分类()和方向分类()。因此,培养studentSSD的总体损失是:

其中,为回归盒的ODIoU损失,损失权值为ω1、ω2、µ皮重超参数。此外,我们的SSD可以预先训练与SE-SSD相同的设置,但没有一致性损失和teacherSSD。

形状感知数据增强

数据扩充对于提高模型的可泛化性非常重要。为了使studentSSD能够探索更大的数据空间,我们设计了一个新的形状感知数据增强方案来提高我们的检测器的性能。我们的见解来自于观察,ground-truth物体的点云模式可能会由于遮挡、距离的变化和在实践中物体形状的多样性而显著变化。因此,我们设计了形状感知的数据增强方案来模拟点云在增强数据样本时受这些因素的影响。

通过设计,我们的形状感知数据增强方案是一个即插即用模块。首先,对于点云中的每个对象,我们找到它的ground-truth边界盒形质心,并将质心与盒面连接,形成金字塔体,将对象点划分为六个子集。由于lidarpoint主要分布在物体表面,分割就像一个物体拆卸,我们的增强方案通过像拆卸部件一样操纵这些被分割的点子集,有效地增强了每个物体的点云。

通过设计,我们的形状感知数据增强方案是一个即插即用模块。首先,对于点云中的每个对象,我们找到它的ground-truth边界盒形质心,并将质心与盒面连接,形成金字塔体,将对象点划分为六个子集。由于lidarpoint主要分布在物体表面,分割就像一个物体拆卸,我们的增强方案通过像拆卸部件一样操纵这些被分割的点子集,有效地增强了每个物体的点云。

在这里插入图片描述
此外,在形状感知增强之前,我们对输入点云进行了一组全局变换,包括随机平移、翻转和缩放;参见图2中的“全局转换”。

实验

我们在KITTI 3D和BEV对象检测基准[6]上评估我们的SE-SSD。这个广泛使用的数据集包含7481个训练样本和7518个测试样本。在此基础上,我们将训练样本进一步划分为3712个训练样本和3769个验证样本。我们的实验主要是在最常用的汽车类别上进行,以平均精度进行评价,IoU阈值为0.7。此外,基准在评估中有三个困难级别:简单,适中,和困难,基于对象大小,遮挡和截断级别,其中适中的平均精度是3D和BEV检测在KITTI网站上的官方排名度量。我们将在此作品发表后在GitHub上发布我们的代码。

图6显示了我们的SESSD模型对6种不同输入的3D边界框(第2行和第5行)和BEV边界框(第3行和第6行)的预测结果,展示了其高质量的预测结果。此外,为了更好地显示结果,我们将3D预测投影到相应的图像上(第1行和第4行)。更多的实验结果请参考补充材料。
在这里插入图片描述

实施细则

数据预处理 :我们只使用LiDAR点云作为输入,并将[0,70.4]、[- 40,40]和[- 3,1]米范围内的所有点分别沿着x、y和z,体素化为分辨率为[0.05,0.05,0.1]的网格。我们通过经验设置超参数p1=0.25, p2=0.05, p3=0.1(见第3.4节)。除了形状感知数据增强外,我们还采用了三种常用的数据增强方法:(i)混合[30],它从其他场景中随机抽取地面真实物体并将其添加到当前场景中;对个别地物点的局部增强,例如,随机旋转和平移;(iii)全局增强,包括随机旋转、平移和翻转。前两个用于预处理teacher和studentssd的输入。

训练详情 :我们采用ADAM优化器和余弦退火学习率[18],批量大小为4个,共60个epoch。我们跟随[27]来增加µt(Eq。(5))使用s型函数从0到1。设和(第3.2节)分别为0.3和0.7,ω1和ω2(Eq。(5))分别为2.0和0.2,EMA衰减重量为0.999, (Eq.(4))为1.25。

与最先进技术的比较

通过将我们的预测结果提交到KITTI服务器进行评估,我们得到了我们的模型在KITTI测试集上的3D和BEV平均精度,并与表1中列出的最新方法进行比较。
在这里插入图片描述
如表所示,我们的模型在三个难度级别的3D和BEV检测方法中均排名第一。此外,我们的模型推理速度在所有方法中排名第二,大约比最新的最佳两级检测器Deformable PV -RCNN[1]快2.6倍。在3D检测方面,与PV-RCNN[1]和变形PV-RCNN[23]相比,我们的单阶段模型在中度AP上显著提高了1.1点。对于单级检测器,我们的模型也大大优于之前的所有工作,在所有三个难度级别上,我们的模型平均优于之前的单级检测器SA-SSD[8] 2.8分,推理时间也更短(减少了约25%)。我们在APs上的巨大改进主要来自于通过利用软目标和硬目标来更好地优化模型,而我们的模型的高效率主要是由于我们所提出的方法的性质,即我们在SSD中细化特征,而不会在推理中引起额外的计算。

在BEV检测中,我们的模型也比最好的单级和两级检测器平均领先0.8点左右。此外,我们还计算了三个难度等级的平均精度(mAP),用于比较。我们更高的map表明SE-SSD与其他类型相比获得了更平衡的性能,因此我们的方法在实践中更有希望解决各种情况。此外,我们比较了我们的SE-SSD与最新的最好的两个单阶段和两阶段的方法KITTI val分裂。如表2所示,我们的3D和BEV中等召回点为11或40的ap均优于这些之前的方法。
在这里插入图片描述
接下来,我们提出了烧蚀研究,以分析我们提出的模块在SE-SSD上KITTI val分裂的有效性。表3总结了我们的一致性损失(“Cons损失”)、ODIoU损失(“ODIoU”)和形状感知数据增强(“SA-DA”)的消融结果。对于ODIoU损失,在这项消融研究中,我们用smooth - l1损失来替代它,因为我们不能像Cons损失和SA-DA那样简单地去除它。所有报告的ap都有40个召回点。

一致性损失的影响 : 如表3的第一行和第四行所示,我们的一致性损失将中度AP提高了0.9个点。这一巨大的改进表明,使用信息更丰富的软目标可以有助于更好的模型优化。对于简单AP的轻微增长,我们认为对简单子集的基线预测已经非常精确,因此已经非常接近硬目标。重要的是,通过在优化中结合硬标签和ODIoU损失,我们的SE-SSD进一步提高了中等和硬ap约2.6分,如表3中的第五行所示。这证明了通过利用硬目标和软目标以及我们设计的约束条件共同优化模型的有效性。
在这里插入图片描述
进一步,我们分别分析了一致性损失对边界盒(“reg”)和置信度(“cls”)的影响,以显示这两项损失的有效性。如表4所示,置信度对AP的增益较大,我们认为置信度优化可能更有效地缓解定位精度和分类置信度之间的偏差。同时,我们对盒子中心距离匹配策略上设计的盒子和置信度约束[34]进行了评估,得到了一个较低的AP (dist),我们认为其潜在原因与它们的设计有关,即寻址轴向对齐的盒子,因此不适合我们的任务。

消融研究

ODIoU 损失的影响 : 如表3中的第一行和第三行所示,与smooth - l1损失相比,我们的ODIoU损失将中度AP提高了约0.6个百分点。AP的增益比SA-DA模块的增益大,从而显示了盒心距离和方向差异对ODIoU损失的约束的有效性。同时,AP在硬子集上的增益也大于其他子集,这与我们的期望是一致的,即使是物体表面上稀疏的点也可以提供足够的信息来回归盒子中心和方向。

形状感知数据增强的效果 : 在表3中,前两行表明,我们的形状感知数据增强(SA-DA)方案在基线模型上平均提高了约0.5个点。SA-DA在预训练SSD的基础上,进一步提高了SE-SSD的中、硬ap约0.3个点,如表3最后两行所示。这些优点表明了该算法通过增强对象多样性和模型可泛化性来提高性能的有效性。

基于IOU的匹配策略 : 此外,我们比较了过滤软目标的不同方法,即,删除(i)使用NMS(“NMS filter”)彼此重叠的软目标,(ii)不与任何ground truth(“gt filter”)重叠,以及(iii)不与小于IoU阈值的student box(“stu filter”)重叠的软目标。从表5中我们可以看到,与其他策略相比,我们提出的“stu filter”在AP中获得了最大的收益,因为它为student的预测保留了最相关和信息最丰富的软目标。

运行时分析

SE-SSD的总体推断时间只有30.56ms,其中数据预处理时间为2.84ms,网络转发时间为24.33ms,后处理和生成最终预测时间为3.39ms。所有的评估都是在Intel Xeon Silver CPU和单个TITAN Xp GPU上完成的。与SA-SSD[8]相比,我们的方法获得了更快的推理速度,因为我们的BEVConvNet结构更简单,我们进一步优化了体素化代码。

结论

提出了一种新的用于室外三维点云的自集成单级目标检测器。主要贡献包括通过我们制定的与软目标的一致性约束优化的SE-SSD框架,用ODIoU损失来监督与硬目标的网络,以及形状感知数据增强方案来扩大训练样本的多样性。该系列实验验证了SE-SSD的有效性和所提出的各个模块的有效性,并显示了高效的优势。总的来说,我们的SE-SSD在KITTI基准中优于3D和BEV汽车检测的所有最先进的方法,并获得超高的推理速度。

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

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

相关文章

Mac 安装 Java 反编译工具 JD-GUI

Mac 安装 Java 反编译工具 JD-GUI JD-GUI 是一款 Java 反编译工具,可以方便的将编译好的 .class 文件反编译为 .java 源码文件,用于开发调试、源码学习等。 官网地址:http://java-decompiler.github.io Git 地址:https://github…

直播美颜sdk是什么?它是怎么让用户”变美“的?

如今,直播美颜sdk、手机摄影、短视频以及社交软件的盛行,让“拍照”成为人们日常生活中不可或缺的一部分。随着直播美颜sdk技术的不断升级,手机摄影的质量也越来越高。有统计数据显示,2018年中国智能手机用户已经达到了7亿人&…

美国最新调查显示 50% 企业已在用 ChatGPT,其中 48% 已让其代替员工,你怎么看?

美国企业开始使用ChatGPT,我认为这不是什么新闻。 如果美国的企业现在还不使用ChatGPT,那才是个大新闻。 据新闻源显示,已经使用chatGPT的企业中,48%已经让其代替员工工作。 ChatGPT的具体职责包括:客服、代码编写、招…

HTB-remote

HTB-remote信息搜集开机提权信息搜集 nmap 较为感兴趣的端口: 2180nfs 首先尝试21端口,可以看到并没有文件在ftp服务器里面,而且也无法上传文件。 80端口。 在contact里面找到了能够登录的网站。 经过简单的测试发现可能不存在sql注…

逆向、安全、工具集

0、安卓逆向环境 r0env 原味镜像介绍文章:https://mp.weixin.qq.com/s/gBdcaAx8EInRXPUGeJ5ljQ 原味镜像介绍视频:https://www.bilibili.com/video/BV1qQ4y1R7wW/ 百度盘:链接:https://pan.baidu.com/s/1anvG0Ol_qICt8u7q5_eQJw 提取码:3x2a …

【Spring源码】Spring AOP的核心概念

废话版什么是AOP关于什么是AOP,这里还是要简单介绍下AOP,Aspect Oriented Programming,面向切面编程,通过预编译和运行期间提供动态代理的方式实现程序功能的统一维护,使用AOP可以降低各个部分的耦合度,提高…

openfeign负载均衡策略 | Spring Cloud 5

一、Spring Cloud LoadBalancer介绍 Spring Cloud LoadBalancer是Spring Cloud官网提供的一个客户端负载均衡器,功能类似于Ribbon。在Spring Cloud Nacos 2021移除了中Ribbon组件,Spring Cloud在Spring Cloud Commons项目中,添加了Spring Cl…

华为OD机试题,用 Java 解【N 进制减法】问题

最近更新的博客 华为OD机试题,用 Java 解【停车场车辆统计】问题华为OD机试题,用 Java 解【字符串变换最小字符串】问题华为OD机试题,用 Java 解【计算最大乘积】问题华为OD机试题,用 Java 解【DNA 序列】问题华为OD机试 - 组成最大数(Java) | 机试题算法思路 【2023】使…

Linux | 分布式版本控制工具Git【版本管理 + 远程仓库克隆】

文章目录一、前言二、有关git的相关历史介绍三、Git版本管理1、感性理解 —— 大学生实验报告2、程序员与产品经理3、张三的CEO之路 —— 版本管理工具的诞生四、如何在Linux上使用Git1、创建仓库2、将仓库克隆到本地3、git三板斧① git add② git commit③ git push4、有关git…

yarn run serve报错Error: Cannot find module ‘@vue/cli-plugin-babel‘ 的解决办法

问题概述 关于这个问题,是在构建前端工程的时候遇到的,项目构建完成后,“yarn run serve”启动项目时,出现的问题:“ Error: Cannot find module ‘vue/cli-plugin-babel‘ ” 如下图: 具体信息如下&…

(24秋招笔试准备)回溯专题--代码随想录刷题记录

回溯算法理论基础回溯三部曲:编辑切换为居中添加图片注释,不超过 140 字(可选)组合问题https://mp.weixin.qq.com/s/OnBjbLzuipWz_u4QfmgcqQ组合总和https://mp.weixin.qq.com/s/HX7WW6ixbFZJASkRnCTC3whttps://mp.weixin.qq.com/…

Linux系统认知——驱动认知

文章目录一、驱动相关概念1.什么是驱动2.被驱动设备分类3.设备文件的主设备号和次设备号4.设备驱动整体调用过程二、基于框架编写驱动代码1.驱动代码框架2.驱动代码的编译和测试三、树莓派I/O口驱动的编写1.微机的总线地址、物理地址、虚拟地址介绍2.通过树莓派芯片手册确定需要…

zabbix部署

文章目录前言一、zabbix简介二、zabbix下载与部署三、部署完成、访问前端测试前言 一、zabbix简介 Zabbix 是一个企业级分布式开源监控解决方案。Zabbix 软件能够监控众多网络参数和服务器的健康度、完整性。Zabbix 使用灵活的告警机制,允许用户为几乎任何事件配置…

数据结构与算法——4时间复杂度分析(常见的大O阶)

这篇文章是时间复杂度分析的第二篇。在前一篇文章中,我们从0推导出了为什么要用时间复杂度,时间复杂度如何分析以及时间复杂度的表示三部分内容。这篇文章,是对一些常用的时间复杂度进行一个总结,相当于是一个小结论 1.常见的大O…

【LeetCode】剑指 Offer(11)

目录 题目:剑指 Offer 29. 顺时针打印矩阵 - 力扣(Leetcode) 题目的接口: 解题思路: 代码: 过啦!!! 写在最后: 题目:剑指 Offer 29. 顺时针…

西电计算机通信与网络(计网)简答题计算题核心考点汇总(期末真题+核心考点)

文章目录前言一、简答计算题真题概览二、网桥,交换机和路由器三、ARQ协议四、曼彻斯特编码和差分曼彻斯特编码五、CRC六、ARP协议七、LAN相关协议计算前言 主要针对西安电子科技大学《计算机通信与网络》的核心考点进行汇总,包含总共26章的核心简答。 【…

华为OD机试模拟题 用 C++ 实现 - 自动曝光(2023.Q1)

最近更新的博客 【华为OD机试模拟题】用 C++ 实现 - 最多获得的短信条数(2023.Q1)) 文章目录 最近更新的博客使用说明自动曝光题目输入输出描述示例一输入输出说明示例二输入输出说明Code使用说明 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出࿰

Ubuntu搭建maven私服

1.安装JDK8 已经是JDK8的需要配置环境变量,如果是更高版本的JDK则需要修改nexus配置文件 2.下载nexus安装包 百度网盘下载:链接:https://pan.baidu.com/s/1DfKqql8tZNQXEBxAEH7UyA 提取码:hx4p安装到有磁盘的目录如下所示&…

大数据框架之Hadoop:MapReduce(三)MapReduce框架原理——Join多种应用

3.7.1Reduce Join 1、工作原理 Map端的主要工作:为来自不同表或文件的key/value对,打标签以区别不同来源的记录。然后用连接字段作为key,其余部分和新加的标志作为value,最后进行输出。 Reduce端的主要工作:在Reduc…

C++杂谈(一)

前言 本系列也是慢更系列,主要收纳一些还不够单独成系列的C的杂项问题,或是一些与C有关,但不属于核心知识的一些旁系问题。 关于C与C的关系 「学C要先学C吗?」 「C和C是不是完全不同的两个语言?」 「这个语法是C的还…