全网最早Towards Generalizable Multi-Object Tracking—通用跟踪器的点跟踪CVPR2024

Towards Generalizable Multi-Object Tracking—迈向可推广的多目标跟踪

在这里插入图片描述

原标题:Towards Generalizable Multi-Object Tracking
论文链接:https://arxiv.org/pdf/2406.00429
代码链接:https://github.com/qinzheng2000/GeneralTrack.git
作者单位:西安交通大学 Wormpex AI Research 伊利诺伊大学芝加哥分校

文章的整体概括:本文提出了一种点到实例关系(point-wise to instance-wise relation)框架,用于多目标跟踪,即GeneralTrack,该框架能够在不同场景中进行泛化,同时无需平衡运动和外观。得益于其卓越的通用性,本文提出的GeneralTrack在多个基准测试中达到了最新的性能,并展示了域泛化的潜力。

摘要总结

  1. 有效的跟踪器应该在不同场景中表现出高度的通用性,现有的跟踪器难以兼顾所有方面,或需要通过假设和实验来定制特定场景的关联信息(运动和/或外观),导致解决方案过于狭隘,通用性有限。

  2. 本文探讨了影响跟踪器在不同场景中泛化能力的因素,并将其具体化为一组跟踪场景属性,以指导设计更具通用性的跟踪器。

  3. 提出了一种逐点到实例关系跟踪框架,用于多目标跟踪,即GeneralTrack,该框架能够在不同场景中进行泛化,同时无需平衡运动和外观。重点指出的是具有较高的普遍性通用性

在这里插入图片描述

解读:从摘要中分析出论文提出的主要的创新点目测应该包括两个方面:分析阻碍现有跟踪器通用性的因素,然后提出了点到示例的通用的跟踪框架。

引言与相关工作

MOT作为一项基本的任务收到了越来越多的关注。但是将其泛化到不同的应用场景也存在着许多的困难。存在两种常用的范式

  • TBD范式:
  • tracking-by-regression范式:基于深度学习的回归跟踪方法(这个方法自己不太了解感觉类似是基于Transform的那种通过向量查询的跟踪方式。)论文中说TbR 方法还进行逐帧对象检测,但用每个轨迹到其新位置的连续回归来替换数据关联是现在主导的范式。

在这里插入图片描述

现实中的应用场景具有很强的复杂性,包括了图中的几个方面

当前的 MOT 方法在很大程度上依赖于广泛的先验知识或复杂的工程工作才能在特定场景中表现出色,但它们很难有效地推广到不同的情况。 这种限制极大地限制了它们在实际应用中的实用性

我们说这种很难得有效推广它主要是集中在哪些方面呢?

  1. 当遇到不规则运动和目标形状或位置的大幅变化时,以运动为主导的方法(卡尔曼滤波相关的运动特征)很脆弱。

  2. 以外观为主导的方法(reid网络和检测器)在面临遮挡时容易失败,例如,由于密集的人群或庇护所、光线变化和小目标造成的遮挡。

总结为两点:遮挡和形变导致现有的跟踪方法在生成的权重矩阵或者代价矩阵那里,需要针对不同的场景来调整两个因素的权重值信息。

首先对跟踪场景进行深入分析,以深入了解为什么特定跟踪器的性能在不同场景中存在显着差异 ? ——运动复杂度、变化幅度、目标密度、小目标、帧率

我之前在博客中写的追踪器在运动主导和外观主导的方法都有各自不擅长的属性。

而论文中提出的GeneralTrack,可以泛化到不同的场景,无需手动平衡运动和外观信息。看起来是很厉害的一代新型的跟踪器。——特别是,我们的 GeneralTrack 在 BDD100K 上排名第一。

这里补充说明一下数据集的信息: BDD100K是伯克利发布的开放式驾驶视频数据集,其中包含10万个视频和10个任务(因为把交通灯的颜色也区分了出来,实际上是13类分类任务),目的是方便评估自动驾驶图像识别算法。

在这里插入图片描述

  • 捕获点的关系并将其转换为示例的关系。细粒度的特征加上细到粗的转换可以应对密集目标和小目标

  • 信任多尺度点区域关系(在点跟踪方法上的改进)

  • 我们设计了一个层次关系聚合范例来关联轨迹和检测 (在关联部分的创新

主要贡献总结:

  1. 本文分析了阻碍现有跟踪器通用性的因素,并将其具体化为跟踪场景属性,以指导跟踪器的设计。

  2. 一种用于多目标跟踪的“点到实例关系”框架。该框架首先通过多尺度4D相关体构建点对点的关系,然后通过一种新颖的“点-部分-实例”层次结构将其聚合为实例级关联。本文的新框架能够解决多目标跟踪中的若干基本挑战。具体来说,点对点的相关建模可以处理由密集和小目标引起的实例级表示损坏;多尺度点区域关系的构建可以应对严重的运动复杂性、不同的位置变化和帧速率;层次聚合则能够应对形状变化。

  3. 取得了良好的实验数据。

在这里插入图片描述

相关工作概述

  • TBD

  • Dense Flow and Correspondences密集光流相关。

    • FlowNet
    • RAFT
    • MatchFlow
  • 4D Correlation Volume 通常用于捕获像素对的视觉相似性,并作为支持密集流和对应估计的核心组件

  • 从构建低级视觉的像素到实例的关系的角度来解决跟踪任务。

核心方法论

Analysis ofMOT Scenarios(MOT的场景分析)

  • Motion Complexity:场景内目标运动的不规则性和不可预测性。 运动越不规则和不可预测,其复杂性就越大。
  • Variation Amplitude:反映了目标的可变性,包括形状和位置的变化。
  • Target Density:反映了场景中人群的密度,隐含地反映了人群内部的遮挡程度。
  • Small Target
  • Frame Rate: 输入视频流一秒捕获的帧数这里自己理解的是影响跟踪的速度,决定跟踪器的性能。每个对象的一帧移动的速度。

五个数据集上对这些属性进行了彻底的测量,并形成了如图2所示的跟踪场景属性图。这里自己感觉这个图还挺具有创新性的。

在这里插入图片描述

对应论文中的图2. 跟踪场景属性图。在蓝色区域占比较大的场景中,外观表现较差;在白色区域中,运动表现较差。

对这个图的总结说明体现在了下面的几个方面:

  1. 以运动和外观为主的方法可能分别在白色和蓝色区域表现不佳。 特别是运动规律、高帧率、小运动幅度的行人跟踪场景,例如MOT17、MOT20

  2. 用于跟踪具有高度复杂运动模式的场景,例如 DanceTrack和SportsMOT,外观比运动更有效。

  3. BDD100K由于帧率低、运动幅度大,无法提供可靠的运动信息。

这里其实是十分有意义的,cvpr的这一篇论文通过分析各个数据集的属性可以更好的指导后面的跟踪器的实验。在不同的数据集上我们更应该去倾向哪个比例。

GeneralTrack的整体概述

整个方法遵循的是TBD的范式。

在这里插入图片描述

在详细的介绍完了第一个创新点之后,论文就给出了关于它自己所提出的通用的点跟踪器的详细的一个介绍。

  1. 对于在线视频流,我们首先用YOLOX处理当前帧t 来去获得检测的结果。

For online video streaming, we first process the
current frame t with YOLOX

我们将检测的结果表示为:在帧 t 中包含 N 个检测框,其中 dti 表示检测边界框的位置和大小。

D t = { d i t } i = 1 N \mathcal{D}^{t}=\left\{\mathbf{d}_{i}^{t}\right\}_{i=1}^{N} Dt={dit}i=1N

  1. 在定义完成检测框之后我们将轨迹的集合表示为:

T = { T j } j = 1 M \mathbb{T}=\left\{\mathcal{T}_{j}\right\}_{j=1}^{M} T={Tj}j=1M

其中Tj 是一个身份为 j 的 tracklet我们将其定义为:其中 lt j 是第 t 帧中的位置,t0 是初始化时刻。

T j = { l j t 0 , l j t 0 + 1 , … , l j t } \mathcal{T}_{j}=\left\{\mathbf{l}_{j}^{t_{0}}, \mathbf{l}_{j}^{t_{0}+1}, \ldots, \mathbf{l}_{j}^{t}\right\} Tj={ljt0,ljt0+1,,ljt}

这里简单的解释并补充一下:哪些虚的T是我们整个视频检测完成之后的轨迹集合。里面每一帧轨迹的分布从第j=1个第M个。对于里面的其中一个轨迹j我们给出从t0直达结束帧的表示。

  1. 给出了整体过程的一个概述
  • 给定当前帧 t,我们获得其检测 Dt 和直到帧 t−1 为止的 M 个轨迹 T 的集合。

  • 然后,我们通过构建帧 t − 1 和帧 t 之间的逐点关系,并将它们转换为实例关联将现有轨迹 T 与当前检测 Dt 相关联新的关联方法

在这里插入图片描述

论文中将整个过程分为了三个阶段。

  1. 阶段一我们使用特征关系提取器通过 4D 相关体为帧 t − 1 中的每个点构建与帧 t 的全局密集关系

为每一个点,自己的理解就是t-1帧的全像素点,与之后的t帧中的每一个点参与点积运算。构建全像素的4d相关体。

  1. 阶段二:我们将全局关系转化为多尺度点区域关系,并形成第t-1帧的关系图,其中每个点代表其运动趋势。

也就是使用多尺度的点区域关系来进行表示。

  1. 根据层次关系聚合以关联轨迹和检测。(这里的层次的聚合主要指的可能是通过点来恢复出框的关系完成检测框和跟踪框之间的关联

下面的三个阶段就细化为三个部分进行详细的讲解。

Feature Relation Extractor

在这里插入图片描述

  1. 给定一对连续的 RGB 图像,It−1 和 It

  2. 卷积神经网络将它们编码成两个较低分辨率的密集特征图,表示为 Ft−1,Ft ∈ RH×W×D 其中H、W分别是图像高度和宽度的1/8,D是特征尺寸。

  3. 这里和我自己印象中的RAFT的下采样8倍基本是一致的情况。

在这里插入图片描述
4. 在下采样获得了Ft−1,Ft 之后通过构建它们之间的完整相关量来计算全局稠密关系。相关量 Cglobal 通过所有特征向量对之间的点积形成,如下所示:

Cglobal中的元素cijkl表示帧t-1中的第(i,j)个特征点与帧t中的第(k,l)个特征点之间的关系。(当目标太小或被遮挡时,实例级特征会被损坏,而在这种情况下,相邻帧之间的逐点关系是鲁棒的。)

C global  ( F t − 1 , F t ) ∈ R H × W × H × W , c i j k l = ∑ d = 1 D f i j d t − 1 ⋅ f k l d t \begin{array}{l} \mathbf{C}^{\text {global }}\left(\mathbf{F}^{t-1}, \mathbf{F}^{t}\right) \in \mathbb{R}^{H \times W \times H \times W}, \\ c_{i j k l}=\sum_{d=1}^{D} f_{i j d}^{t-1} \cdot f_{k l d}^{t} \end{array} Cglobal (Ft1,Ft)RH×W×H×W,cijkl=d=1Dfijdt1fkldt

这里和RATF构建4d成本体积的部分计算初步感觉基本上也是一致的情况。

Multi-scale Point-region Relation(多尺度的点域关系)

在这里插入图片描述

这部分是为了使跟踪器适应各种帧速率以及位置变化的幅度。(核心的地方。)

在这里插入图片描述

论文中的图4. 相关金字塔上的多尺度点区域关系。随着下采样,搜索区域逐渐变大(红色、绿色和蓝色框)。图中给出了两个示例点a和b,其中绿色点和蓝色点分别代表帧 t−1 和帧 t 中的目标点。(a) 汽车的车灯。汽车移动速度很快,位移很大,其在帧t中的关系点直到最大尺度的层次才被捕捉到。(b) 人的头部。由于人的移动相对较小,其关系可以在金字塔的第一层(最高分辨率)获得。这样的关系搜索范式可以灵活适应大位移和小位移,同时计算资源消耗较低

  1. Cglobal 包含密集的全局关系,其中存在大量无效关系,这会导致巨大的计算成本和缓慢的收敛速度。

  2. 为了跟踪器的灵活性和计算简单性,我们将全局关系转换为多尺度点区域关系

  3. 受多尺度4D体积的启发,我们对相关体积进行下采样,并通过池化最后两个维度获得相关金字塔如下所示:(这里和RATF保持高分辨率的做法下采样最后两个维度也基本上是一致的。

C s = pooling ⁡ ( C s − 1 ) , C s ∈ R H × W × H / 2 s × W / 2 s \mathbf{C}_{s}=\operatorname{pooling}\left(\mathbf{C}_{s-1}\right), \mathbf{C}_{s} \in \mathbb{R}^{H \times W \times H / 2^{s} \times W / 2^{s}} Cs=pooling(Cs1),CsRH×W×H/2s×W/2s

其中 s 是金字塔的层数,C0 初始化为 Cglobal这组体积提供了不同尺度下从帧 t − 1 中的点到帧 t 中每个区域的关系。

  1. 为了减少无效关系,我们根据:

{ C s } s = 0 S \left\{\mathbf{C}_{s}\right\}_{s=0}^{S} {Cs}s=0S

设置一个基于中心的关系搜索区域,如下所示:(这里和RATF里面的邻域半径搜索的思想也基本上是保持一致的。)

P ( x ) s = { x / 2 s + r : ∥ r ∥ ≤ R } \mathcal{P}(\mathbf{x})_{s}=\left\{\mathbf{x} / 2^{s}+\mathbf{r}:\|\mathbf{r}\| \leq R\right\} P(x)s={x/2s+r:rR}

x ε Z2 是 Ft−1 中的坐标,r ε Z2 是相对于相关金字塔中第 s 层中的点 x/2s 的位移。

在这里插入图片描述

它这里说的每一层的一个搜索的区域,应该就是对应于不同尺度下的三个框的搜索大小。

在这里插入图片描述
所以:我们利用P(x)s在相关金字塔{Cs}S s=0上搜索关系,形成多尺度点区域关系图。

O ∈ R H × W × ( S + 1 ) ( 2 R + 1 ) 2 \mathbf{O} \in \mathbb{R}^{H \times W \times(S+1)(2 R+1)^{2}} ORH×W×(S+1)(2R+1)2

  • 其中函数search表示在每一层上用P(x)s进行搜索操作。

O s = search ⁡ ( C s , P ( x ) s ) , \mathbf{O}_{s}=\operatorname{search}\left(\mathbf{C}_{s}, \mathcal{P}(\mathbf{x})_{s}\right), Os=search(Cs,P(x)s),

{ O s ∈ R H × W × ( 2 R + 1 ) 2 } s = 0 S \left\{\mathbf{O}_{s} \in \mathbb{R}^{H \times W \times(2 R+1)^{2}}\right\}_{s=0}^{S} {OsRH×W×(2R+1)2}s=0S

是{Cs}S s=0中每一层的点-区域关系,它们在最后一个维度连接起来。O包含第t-1帧到第t帧中各点在各个方向、各个范围内的运动趋势。

在这里插入图片描述
不同层代表不同的位移尺度,同一层中的不同点代表不同的方向和幅度,可以适应各种帧速率 以及位置变化的幅度灵活

在这里插入图片描述

Hierarchical Relation Aggregation(层次关系聚合)

我们假设:在当前帧 t 中,检测集 Dt 包含 N 个检测框,轨迹集 T 包含 M 个轨迹

关系图 O 将帧 t − 1 的逐点关系编码到帧 t 中的多尺度区域。

我们将逐点关系转换为实例关系,以构建轨迹检测关系矩阵 Prela ∈ RN×M 进行数据关联。(真正的含有明显的创新点的一个地方。)-通过检测矩阵来进行关联。

P rela  ∈ R N × M \mathbf{P}^{\text {rela }} \in \mathbb{R}^{N \times M} Prela RN×M

论文中提到了:为了解决实例的形状变化,我们将实例视为柔性体。 不像传统的运动或外观方法那样将实例视为刚体

在这里插入图片描述

补充多目标跟踪中的柔性体和刚体。

  1. 刚体是指在运动过程中,其形状和大小保持不变的物体。在目标跟踪中,刚体目标的运动通常包括平移、旋转和缩放等,但这些运动不会导致目标形状的变化。例如,交通车辆、大多数机械部件等都可以被视为刚体目标
  2. 柔性体或非刚体是指在运动过程中,其形状和大小可能会发生变化的物体。这种变化可能是由于目标自身的形变,或者是因为目标的姿态变化。例如,人体在运动过程中由于关节活动和身体姿态的变化,其形状会有所改变,因此可以被视为非刚体目标。
  3. 在实际应用中,根据目标的性质选择合适的跟踪算法。例如,对于车辆跟踪,可能更倾向于使用刚体跟踪算法;而对于人体跟踪,则可能需要使用能够处理非刚体形变的算法。
  1. 我们通过点-部分-实例层次结构逐步聚合关系。

对于Dt中的第i个检测dti和T 中第 j 个轨迹的位置 lt−1j。

在这里插入图片描述
2. 我们将实例 dt i 和 lt−1 j 分为 v×v 部分。 我们将 RoIAlign 应用于 O 上的 lt−1 j 并获得第 j 个轨迹的部分关系。(其中 v × v 是 RoIAlign 大小D 是特征维度)

O j ∈ R v × v × D , \mathbf{O}_{j} \in \mathbb{R}^{v \times v \times D}, OjRv×v×D,

  1. 然后我们对 dt i 和 lt−1 之间每个部分的相对位置进行编码将其表示为(其中,其元素表示相应质心的位移)

E i j ∈ R v × v × 2 \mathbf{E}_{i j} \in \mathbb{R}^{v \times v \times 2} EijRv×v×2

  1. 连接 Oj 和 Eij 并对其应用卷积运算。 最后,我们通过多层感知(MLP)获得预测分数,如下所示:

p i j rela  = MLP ⁡ ( conv ⁡ ( concat ⁡ ( O j , E i j ) ) ) p_{i j}^{\text {rela }}=\operatorname{MLP}\left(\operatorname{conv}\left(\operatorname{concat}\left(\mathbf{O}_{j}, \mathbf{E}_{i j}\right)\right)\right) pijrela =MLP(conv(concat(Oj,Eij)))

这里我们就得到了最终的关联检测矩阵的结果了

最终,我们对Prela使用匈牙利算法并完成关联。 对于丢失的轨迹,我们使用卡尔曼滤波器来检索它们。

在这里插入图片描述

简单了解训练方法

训练我们选取视频中的两个连续帧作为训练样本。 前向传播过程中使用两幅原始图像作为输入It−1和It,ground truth box分别作为T和Dt

两帧中的目标成对组合以预测轨迹检测关系 Prela,我们根据它们是否具有相同的身份来标记正或负。

在这里插入图片描述

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

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

相关文章

MyBatis框架-动态SQL-XML中的常用标签+特殊字符在XML中的显示

一、if标签、where标签、trim标签、choose标签、set标签、foreach标签 1、问题引入:where关键字和and关键字在动态SQL里面应该如何添加? (1)if标签: test属性的值是判断条件 if标签里面的内容是条件成立时添加到SQ…

探秘嵌入式位运算:基础与高级技巧

目录 一、位运算基础知识 1.1. 位运算符 1.1.1. 与运算(&) 1.1.2. 或运算(|) 1.1.3. 异或运算(^) 1.1.4. 取反运算(~) 1.1.5. 双重按位取反运算符(~~&#xf…

渗透测试笔记—shodan(7完结)

声明: 学习视频来自B站up主 【泷羽sec】有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关&am…

2024年最新版Java八股文复习

最新版本Java八股文复习,每天更新一篇,博主正在持续努力更新中~~~ 一、Java基础篇1、怎么理解面向对象?简单说说封装、继承、多态三大特性?2、多态体现在哪几个方面?3、面向对象的设计原则你知道有哪些吗?4…

Notepad++ 替换所有数字给数字加单引号

前言 今天遇到这样一个场景: 要去更新某张表里 code1,2,3,4,5,6 的数据,把它的 name 设置为 ‘张三’ 但是 code在数据库里面的字段类型是 vachar(64),它自身携带索引 原本可以这样写 SQL: update tableA set namezhangsan where code in …

前端图像处理(一)

目录 一、上传 1.1、图片转base64 二、图片样式 2.1、图片边框【border-image】 三、Canvas 3.1、把canvas图片上传到服务器 3.2、在canvas中绘制和拖动矩形 3.3、图片(同色区域)点击变色 一、上传 1.1、图片转base64 传统上传: 客户端选择图片&#xf…

推荐一款龙迅HDMI2.0转LVDS芯片 LT6211UX LT6211UXC

龙迅的HDMI2.0转LVDS芯片LT6211UX和LT6211UXC是两款高性能的转换器芯片,它们在功能和应用上有所差异,同时也存在一些共同点。以下是对这两款芯片的详细比较和分析: 一、LT6211UX 主要特性: HDMI2.0至LVDS和MIPI转换器。HDMI2.0输…

51单片机从入门到精通:理论与实践指南入门篇(二)

续51单片机从入门到精通:理论与实践指南(一)https://blog.csdn.net/speaking_me/article/details/144067372 第一篇总体给大家在(全局)总体上讲解了一下51单片机,那么接下来几天结束详细讲解,从…

STM32C011开发(3)----Flash操作

STM32C011开发----3.Flash操作 概述硬件准备视频教学样品申请源码下载参考程序生成STM32CUBEMX串口配置堆栈设置串口重定向FLASH数据初始化FLASH 读写演示 概述 STM32C011 系列微控制器内置 Flash 存储器,支持程序存储与数据保存,具备页面擦除、双字写入…

IDEA无法创建java8、11项目创建出的pom.xml为空

主要是由于Spring3.X版本不支持JDK8,JDK11,最低支持JDK17 解决的话要不就换成JDK17以上的版本,但是不太现实 另外可以参考以下方式解决 修改spring初始化服务器地址为阿里云的 https://start.aliyun.com/

【Unity3D】创建自定义字体

前置准备 如图所示,项目工程中需要用文件夹存储0-9的Sprite图片。 使用流程 直接右键存放图片的文件夹,选择【创建自定义字体】,之后会在脚本定义的FontOutputPath中生成材质球和字体。 源码 using System; using System.Collections.Gene…

logminer挖掘日志归档查找问题

--根据发生问题时间点查找归档文件 select first_time,NAME from gv$archived_log where first_time>2016-03-15 17:00:00 and first_time<2016-03-15 21:00:00; 2016-03-15 17:23:55 ARCH/jxdb/archivelog/2016_03_15/thread_1_seq_41588.4060.906577337 2016-03-15 17:…

电商项目高级篇06-缓存

电商项目高级篇06-缓存 1、docker下启动redis2、项目整合redis 缓存 流程图&#xff1a; data cache.load(id);//从缓存加载数据 If(data null){ data db.load(id);//从数据库加载数据 cache.put(id,data);//保存到 cache 中 } return data;在我们的单体项目中可以用Map作…

如何使用GCC手动编译stm32程序

如何不使用任何IDE&#xff08;集成开发环境&#xff09;编译stm32程序? 集成开发环境将编辑器、编译器、链接器、调试器等开发工具集成在一个统一的软件中&#xff0c;使得开发人员可以更加简单、高效地完成软件开发过程。如果我们不使用KEIL,IAR等集成开发环境&#xff0c;…

一个专为云原生环境设计的高性能分布式文件系统

大家好&#xff0c;今天给大家分享一款开源创新的分布式 POSIX 文件系统JuiceFS&#xff0c;旨在解决海量云存储与各类应用平台&#xff08;如大数据、机器学习、人工智能等&#xff09;之间高效对接的问题。 项目介绍 JuiceFS 是一款面向云原生设计的高性能分布式文件系统&am…

Vue-TreeSelect组件最下级隐藏No sub-options

问题&#xff1a;最下级没有数据的话&#xff0c;去除No sub-options信息 为什么没下级&#xff0c;会展示这个&#xff1f; 整个树形结构数据都是由后端构造好返回给前端的。默认子类没数据的话&#xff0c;children是一个空数组。也就是因为这最下级的空数组&#xff0c;导致…

k8s集群增加nfs-subdir-external-provisioner存储类

文章目录 前言一、版本信息二、本机安装nfs组件包三、下载nfs-subdir-external-provisioner配置文件并进行配置1.下载文件2.修改配置 三、进行部署备注&#xff1a;关于镜像无法拉取问题的处理 前言 手里的一台服务器搭建一个单点的k8s集群&#xff0c;然后在本机上使用nfs-su…

C语言数据结构-链表

C语言数据结构-链表 1.单链表1.1概念与结构1.2结点3.2 链表性质1.3链表的打印1.4实现单链表1.4.1 插入1.4.2删除1.4.3查找1.4.4在指定位置之前插入或删除1.4.5在指定位置之后插入或删除1.4.6删除指定位置1.4.7销毁链表 2.链表的分类3.双向链表3.1实现双向链表3.1.1尾插3.1.2头插…

【SpringCloud详细教程】-04-服务容错--Sentinel

精品专题&#xff1a; 01.《C语言从不挂科到高绩点》课程详细笔记 https://blog.csdn.net/yueyehuguang/category_12753294.html?spm1001.2014.3001.5482 02. 《SpringBoot详细教程》课程详细笔记 https://blog.csdn.net/yueyehuguang/category_12789841.html?spm1001.20…

【Python中while循环】

一、深拷贝、浅拷贝 1、需求 1&#xff09;拷贝原列表产生一个新列表 2&#xff09;想让两个列表完全独立开&#xff08;针对改操作&#xff0c;读的操作不改变&#xff09; 要满足上述的条件&#xff0c;只能使用深拷贝 2、如何拷贝列表 1&#xff09;直接赋值 # 定义一个…