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

DropMAE: Masked Autoencoders with Spatial-Attention Dropout for Tracking Tasks

摘要

​ 在本文中,我们研究了掩码自动编码器(MAE)预训练的视频基于匹配的下游任务,包括视觉目标跟踪(VOT)和视频对象分割(VOS)。MAE的一个简单扩展是在视频中随机掩码帧块并重建帧像素。然而,我们发现这种简单的基线严重依赖于空间线索,而忽略了帧重建的时间关系,从而导致VOT和VOS的时间匹配表示次优。为了缓解这一问题,我们提出了DropMAE,它在帧重构中自适应地执行空间注意退出,以促进视频中的时间对应学习。

此外,我们还发现,预训练视频中的运动多样性比场景多样性对于提高VOT和VOS的性能更重要。

引言

​ 在视频对象跟踪(VOT)中,最近的两项工作,SimTrack和OSTrack,探索使用MAE预训练的ViT模型作为跟踪主干。而监督训练学习的是对外观变化不变的与高水平的类相关的特征。尽管取得了很好的性能,但由于图像和视频之间的自然差距,图像网络上的MAE预训练仍然是跟踪任务的次最优训练,即在**静态图像中无法学习到先前的时间对应信息。**然而,以往的跟踪方法已经表明,**时间对应学习(时序关系)是开发一个鲁棒和鉴别跟踪器的关键。**因此,有机会进一步开发专门针对匹配基视频任务的MAE框架,如VOT和VOS。

​ 将MAE扩展到视频的一种简单方法是随机掩蔽视频剪辑中的帧补丁(即视频帧对),然后重建视频剪辑。我们将这个简单的基线表示为双胞胎MAE(TwinMAE)。

在这里插入图片描述

​ 给定一个掩码的补丁查询(a masked patch query),如图所示。2 & 4,我们发现TwinMAE严重依赖于邻近的空间在同一帧内重建补丁,这意味着一个沉重的协同适应空间线索(帧内标记)重建和可能导致学习次优时间表示基于匹配的下游任务如视频对象跟踪和分割。

​ 为了解决TwinMAE基线的这个问题,我们提出了专门设计的DropMAE,用于预训练基于匹配的视频下游任务(如VOT和VOS)的掩码自动编码器。我们的DropMAE自适应地执行空间注意退出,以在框架重建过程中打破空间线索(帧内标记)之间的协同适应,从而鼓励更多的时间交互,促进预训练阶段的时间对应学习。

有趣的是,我们通过DropMAE获得了几个重要的发现:

  • DropMAE是一种有效的时间对应学习器,它在基于匹配的任务上比基于imagenet的MAE获得更好的微调结果,预训练速度快2×。

  • 预训练视频中的运动多样性比场景多样性对于提高VOT和VOS的性能更为重要。

总之,我们的工作的主要贡献是:

  • 据我们所知,我们是第一个研究基于时间匹配的下游任务的掩码自动编码器视频预训练的任务。具体来说,我们探索了各种视频数据源进行预训练,并建立了一个TwinMAE基线来研究其在时间匹配任务上的有效性。

  • 我们提出了DropMAE,它在帧重构中自适应地执行空间注意退出,以促进视频中有效的时间对应学习。

相关工作

跟踪和分割

自监督学习

方法

​ 我们提出了一种自监督的视频预训练方法来学习基于时间匹配的下游任务的鲁棒表示,包括VOT和VOS任务。我们首先介绍了一个简单的将MAE扩展到从视频中进行的时间匹配表示学习。然后,我们说明了TwinMAE基线的局限性,并提出了一种空间注意退出策略来促进时间对应学习,记为DropMAE。

TwinMAE

​ 掩码自动编码器(MAE)模型由编码器和解码器组成。它的基本思想是随机屏蔽图像中的大一部分(例如75%)补丁,然后重建图像像素。具体来说,编码器只将可见块作为特征学习的输入,然后将解码器同时输入可见块和掩蔽块,以进行图像重建。为了适应下游的基于视频匹配的任务,一个简单的扩展是直接将MAE应用于连接的视频帧,希望从视频帧对中学习时间匹配表示,我们称之为TwinMAE。

​ 需要注意的是,现有的将MAE扩展到视频表示学习的作品]主要是为视频动作识别的下游任务设计的,其中一个长视频剪辑(如16帧)用于基于重构的预训练。为了与我们的VOT/VOS下游任务保持一致,我们遵循对象跟踪中使用的一般训练设置,其中从一个视频中采样两帧作为输入到TwinMAE进行预训练。与现有的视频预训练方法相比,由于vit的二次复杂度,这种自适应大大降低了计算和内存成本。

​ 首先,我们在一个具有预定义的最大帧间隙的视频中随机采样2帧。对于每一帧,我们遵循普通的ViT将其划分为不重叠的patches。然后,从两帧中提取的patches被连接在一起,形成完整的patches序列。然后,我们随机掩码patches序列中的patches,直到达到预定义的掩码比率。请注意,我们使用与原始MAE相同的掩码比(即75%),因为两帧的信息冗余应该类似于单个图像。可见补丁通过线性投影嵌入,掩码补丁使用共享的可学习掩码令牌嵌入。所有嵌入的补丁都添加位置嵌入。

帧标识嵌入 ,为了区分两个帧在同一空间位置上的掩码标记,我们使用两个可学习的帧标识嵌入来表示两个输入帧。在每个嵌入的补丁中添加相应的帧标识嵌入。

​ 按照原始MAE [37]中的自动编码管道,编码器只将可见的嵌入的补丁作为输入,解码器输入所有的嵌入的补丁,用于掩码补丁重构。我们使用相同的来自MAE的归一化像素损失来训练整个网络架构。

TwinMAE基线的限制

​ 我们的TwinMAE基线的重建的可视化如图2所示。我们还定量地比较了图4中重建过程中帧内和帧间的平均注意度。有趣的是,我们发现TwinMAE重建严重依赖于帧内斑块或空间线索,这可能导致基于匹配的视频任务的次优时间表征。

[

​ 当只使用帧内空间线索时,解码器将只使用相邻补丁中的上下文信息进行重建,因此学习到的编码器表示将嵌入上下文信息。相反,当使用帧间线索时,解码器将学习对帧间的补丁进行匹配,从而在另一帧中恢复相应的目标补丁。因此,使用帧间线索进行解码将使编码器学习支持帧间时间匹配的表示。先前在目标跟踪[3,86]方面的工作也表明,时间对应学习在开发一个鲁棒和有区别的跟踪器中起着关键作用。由于TwinMAE更多地依赖于上下文信息,因此它对于下游跟踪任务仍然是次优的。

Adaptive Spatial-Attention Dropout

​ 解决讨论的TwinMAE问题。我们提出了一种自适应空间注意辍学(ASAD)来促进时间MAE中的时间对应学。

​ 给定一个查询令牌,我们的基本思想是自适应地删除部分帧内线索,以便于模型学习更可靠的时间对应关系,即帧间线索。也就是说,我们限制了同一帧中的查询令牌和令牌之间的交互,并通过操作转换器中计算出的空间注意,鼓励与另一帧中的令牌进行更多的交互。因此,为了最小化重建损失,该模型易于学习更好的时间匹配能力,这是基于匹配的视频任务的关键。

​ VIT:设z∈RN×Dz∈R^{N×D} zRN×D为两个连接的输入帧的输入序列,N为两帧中的总patch数,D为特征维数。标准的多头自注意可表述为:

A=qkTDk∈RN×NA=\frac{qk^T}{\sqrt{D_{k}}}\in R^{N×N}A=DkqkTRN×N表示注意矩阵。我们的ASAD在A上执行空间注意退出,以消除一些帧内交互。

Temporal matching probability

​ 我们首先需要考虑应用ASAD的最佳令牌。直观地说,在另一帧中有强匹配的查询标记应该是一个很好的候选对象,因为在没有帧内线索的情况下,它仍然可以使用另一帧中的时间线索很好地重建。在这里,我们定义了一个时间匹配函数ftem(⋅)f_{tem}(·)ftem()来度量第i个查询令牌的时间匹配概率:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uXb0xmio-1680667872624)(null)]

​ 其中,softmax函数应用于A的每一,,ftem(⋅)∈[0,1]f_{tem}(·)∈[0,1]ftem()[0,1],Ωt(i)表示第i个查询标记的时间索引集,它包含另一帧的所有标记索引。ftem(⋅)f_{tem}(·)ftem()值越大,表示第i个查询标记在另一帧中匹配的概率越大,因此是一个很好的ASAD候选对象。ftem(⋅)f_{tem}(·)ftem()的可视化图如图5所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3KYy0e5p-1680667873312)(null)]

Overall dropout probability measurement

​ 位置 (i, j) 的总体空间注意力辍学概率是使用时间匹配概率和归一化空间重要性来测量的:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GE93wXgj-1680667872631)(null)]

​ 其中 Ωs(i) 是包含所有其他标记索引(即,不包括查询索引本身)与第 i 个查询位于同一帧中。当Wi,jW_{i,j}Wi,j较大时,第i个查询标记在帧间匹配良好,并且第j个帧内标记对于第i个注意评分查询很重要。在这种情况下,在A中删除注意元素(i,j)有助于模型使用帧间(时间匹配的)标记来进行标记学习或重建。

​ 需要注意的是,总共有N(N/2−1)(即不包括自我注意元素),只有这些空间注意元素被考虑退出。通过预先定义的辍学比P,我们从A中全局剔除了全部Nd = P N(N/2−1)注意元素。

Sampling for Dropout

​ 我们从基于退出概率矩阵w的多项分布中提取Nd元素,然后通过将它们的值设为−∞,将其放到A中。在(1)中应用softmax函数后,去除相应的空间注意权值。其他操作与ViT中使用的原始多头自注意机制相同。类似于pytorch的伪代码在补充部分中显示。

​ 由于gpu中的有效矩阵操作,我们的ASAD方法与TwinMAE相比,额外的时间成本可以忽略不计。在训练前阶段,我们将ASAD应用于解码器中的每一层,以学习支持时间匹配的编码器表示。在下一节中,我们将介绍基于预先训练良好的ViT模型的下游任务微调。

下游任务

在获得预先训练的DropMAE模型后,我们对下游时间匹配任务,即VOT和VOS的编码器(即ViT模型)进行微调。

Video Object Tracking

​ 最近,在ImageNet上预训练的MAE ViT模型被应用于VOT,显示了令人印象深刻的结果。我们使用最先进的跟踪器OSTrack 作为我们的微调基线跟踪器。在OSTrack中,裁剪后的模板和搜索图像首先被序列化成序列并连接在一起。然后将整个序列加入位置嵌入和输入到ViT主干中,进行联合特征提取和交互。最后,将更新后的搜索特征输入到预测头部,以预测目标边界框。

​ 在微调阶段,我们使用预先训练过的DropMAE编码器权值来初始化OSTrack中使用的ViT主干。同时,在模板嵌入和搜索嵌入中分别添加两个帧标识嵌入,以保持与预训练阶段的一致性。我们使用了与原来的OSTrack相同的训练损失。详细的训练参数见补充资料,以供参考。

Video Object Segmentation

​ 对于VOS,目前还没有基于ViT的方法。因此,我们构建了一个简单的VOS基线。

​ 输入序列化。给定一个带有二进制掩码的模板帧,VOS的目标是在视频的每一帧中分割感兴趣的对象。与训练前阶段相似,首先将二进制掩模映射、模板和搜索帧转换为补丁序列,然后进行线性投影并添加位置嵌入。向模板和搜索嵌入中添加两个框架标识嵌入,并将掩码嵌入添加到模板嵌入中以进行掩码编码。

​ 联合特征提取和交互作用。模板和搜索嵌入被连接在一起,并输入到ViT主干中进行联合特征提取和匹配。我们使用从ViT的最后一层中提取的更新后的搜索特征来进行掩模预测。

​ 掩码预测。现有的VOS方法采用多分辨率特征进行掩模预测。然而,更新后的搜索功能是单分辨率的。我们遵循,通过两个反卷积模块将搜索特征上采样到2×和4×大小。最后,我们使用与中相同的解码器进行掩码预测。

​ 训练损失。我们使用常用的交叉熵损失来训练整个网络架构。在线推断在在线推理过程中,我们使用具有掩码标注的第一帧作为搜索帧中在线目标匹配的记忆帧。管道图和更多的实现细节可以在补充资料中找到。

实验

比较

​ 在本节中,我们将将微调后的VOT和VOS模型,表示为DropTrack和DropSeg,与VOT和VOS基准测试上的最新方法进行比较。我们使用在800个时代的K700上训练的DropMAE作为VOT和VOS微调的预训练模型。

Video Object Tracking

​ 为了证明提出的DropMAE对VOT的有效性,我们在7个具有挑战性的跟踪基准上将我们的DropTrack与最先进的跟踪器进行了比较。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CKdZ8u5S-1680667872552)(null)]

Video Object Segmentation

消融研究

​ 在本节中,我们将进行消融研究,以对我们的方法进行更详细的分析。我们使用DropMAE和400个时代的预训练来进行消融研究。

The effect of dropout ratio P.

​ 我们在图6中研究了辍学率P的影响。P = 0.1相对较小的辍学率在VOT和VOS任务中都很有效。同时,减少过多的空间线索(如P=0.2)会降低下游任务,这主要是因为空间线索对准确的定位和分割也很有用。P = 0.1是最优设置,因此我们在下面的实验中采用它。

Pre-training video sources.

​ 由于我们是第一个探索掩码的时间匹配任务的自动编码器预训练,所以不清楚哪个视频数据集是预训练的最佳选择。下游跟踪结果见表5。即使在WebVid中使用96万个视频进行预训练,性能也不好。这说明WebViD并不是跟踪预训练的好选择,这主要是因为它是一个视频标题数据集,专注于场景多样性,缺乏丰富的物体运动。跟踪从丰富的动作类(即700个K700动作类)的预训练中获益,该模型可以从中学习到更强的时间匹配能力。

Applying ASAD to the encoder.

​ 在这里,我们测试应用ASAD到所有的层,包括掩码自动编码器的编码器和解码器。如表6所示,该变体比原始基线有了改进(SR在0.75中为0.6%)。考虑到其额外的成本和有限的性能改进,我们只将ASAD应用于解码器

Domain specific data.

​ 我们还将跟踪训练数据(不使用方框注释),包括跟踪gnet、LaSOT和GOT-10k,添加到K400中进行预训练。使用较大的预训练集的下游跟踪性能为73.4/68.8,优于基线。结果表明,特定领域的数据有助于弥合领域的差距,这可以作为未来扩展动力学数据集与更多的跟踪视频的工作。

Frame identity embedding.

​ 在预训练过程中,使用帧身份嵌入来识别两帧相同二维位置的掩蔽补丁。从表6中,我们可以发现,没有帧标识嵌入的下游微调比没有嵌入它的性能更差,因为不使用它与预训练阶段不一致。

结论

​ 本文研究了基于时间匹配的下游任务的掩码自编码预训练。具体来说,提出了一种自适应空间注意退出方法,以促进视频自监督预训练中的时间对应学习。我们表明,我们提出的训练前方法DropMAE在VOT和VOS上比基于图像的MAE可以获得更好的下游性能,同时使用50%的预训练时间。此外,作为研究这个问题的第一个工作,我们展示了在预训练前选择视频源的指导方针,即选择具有丰富运动信息的视频更有利于基于时间匹配的下游任务。

附录

​ 我们在算法1中展示了我们提出的自适应空间注意退出(ASAD)的伪代码。可以看出,该实现是简单和简洁的,它可以灵活地集成到现有的方法中,如MAE [37]中。该实现主要包括三个步骤: 1)时间匹配概率f tem的计算;2)帧内空间归一化注意A spa的计算;3)多项分布的退出抽样。我们的代码和预先训练过的模型将在论文发表后公开使用。

实施细节

​ 在本节中,我们将详细介绍DropMAE预训练的实现细节,以及下游VOT和VOS任务的微调细节。

Downstream VOT Fine-Tuning

​ 根据跟踪基线OSTrack ,我们分别使用192×192和384×384像素的模板和搜索大小,并使用跟踪特定的数据来微调我们的DropMAE模型(见秒。4 NVIDIA A100gpu。在OSTrack中提出的候选消除模块也被用于一个公平的比较。对于完整的300历元微调,详细的超参数如表8所示。在对GOT- 10k进行微调时,总训练历元减少到100,学习率在80历元时衰减。我们的DropTrack的推理速度与基线OSTrack相同,它是在单个GPU上测量的58.1 FPS。

可视化

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Jc6QjvgU-1680667872654)(null)]

​ 在图8中,我们展示了由我们的DropTrack和其他3个比较跟踪器获得的定性跟踪结果。所选的序列包含各种挑战,包括显著的外观变化、背景簇、照明变化和类似的对象。由于强大的DropMAE预训练模型,我们的DropTrack很好地处理了这些挑战。

Frame Reconstruction

​ 我们在图10中显示了由我们的DropMAE得到的视频帧重建结果。可以看出,虽然在重建过程中利用的空间线索较少,但我们的DropMAE仍然通过探索时间线索或帧间斑块获得了良好的重建结果。

相关文章:

DropMAE: Masked Autoencoders with Spatial-Attention Dropout for Tracking Tasks

摘要 ​ 在本文中,我们研究了掩码自动编码器(MAE)预训练的视频基于匹配的下游任务,包括视觉目标跟踪(VOT)和视频对象分割(VOS)。MAE的一个简单扩展是在视频中随机掩码帧块并重建帧像…...

【shell 基础(11)循环之for】带列表:空格子串、换行子串、展开、命令替换、seq;不带列表:接受参数、类C

文章目录一. 带列表的for循环1. 语法2. 例子2.1. 循环字串2.2. 展开或命令替换:数字循环2.3 命令替换(输出换行)作为list二. 其他for循环1. 不带列表的循环2. 类C的for循环一. 带列表的for循环 1. 语法 for var in list do commanddone注意…...

虚拟环境中创建Django项目 详细完整

一、自身安装python(我自身安装的python3.6.8) (1)官网: Python Releases for Windows | Python.org for windows> 这样下载慢的话,以下链接复制到迅雷下载: https://www.python.org/ftp/…...

BCSP-玄子JAVA开发之JAVA数据库编程CH-08_JDBC

BCSP-玄子JAVA开发之JAVA数据库编程CH-08_JDBC 8.1 JDBC 介绍 8.1.1 什么是 JDBC JDBC(Java Database Conectivity) Java数据库连接技术的简称,提供连接各种常用数据库的能力 8.1.2 JDBC 的工作原理 JDBC API 内容:供程序员…...

一位程序员将一款开源工具变成了价值75亿美元的帝国

他的成功,激励着年轻的程序员为什么翻译这些程序员大佬的成功故事?除了写代码,作为开发者,我们也需要时不时地仰望星空。我们每个人都怀有着远大的理想,希望用代码改变自己的生活、行业,甚至是这个世界。编…...

tmux | 终端操作软件,解决深度学习中终端相关问题

tmux 一次可运行多个终端会话。或者在后台运行终端会话。当需要一次访问多个 ssh 会话或只是为了一个便利的流程管理时,这很有帮助。例如,可以在下载最新的系统更新时运行 htop,编辑配置文件并在一个 tmux 会话中重新启动服务。 对于我来说t…...

信号 捕捉

signal 函数 作用&#xff1a;注册一个信号捕捉函数&#xff08;注册而非创建&#xff09; 原型&#xff1a; sighandler_t signal(int signum, sighandler_t handler);typedef void (*sighandler_t)(int);案例一&#xff1a; signal函数 捕捉 ctrlc 触发事件 #include<std…...

sqlserver中判断是否存在的方法

自定义变量 declare age int declare name varchar(20) set name‘张三’ --用set 方法给变量赋值 注&#xff1a; 此方法一次只能给一个变量赋值 select ageage from client where [name]name --查询客户张三的年龄赋值给age变量 注&#xff1a;此方法能一次多个变量赋值 …...

基于Kettle跑批的案例说明

需求概述 通过动态配置表的方式完成在kettle里动态配置参数&#xff0c;并调用ktr&#xff0c;实现跑批的目的。 问题分析 定义一个ktr读取配置表的信息并将拷贝记录到结果定义一个ktr从结果里获取记录并设置变量定义业务ktr&#xff08;即按照业务需要开发的…...

2023 最新版网络安全保姆级自学指南

前言 如今&#xff0c;组织的信息系统和数据面临着许多威胁。而人们了解网络安全的所有基本要素是应对这些威胁的第一步。 网络安全是确保信息完整性、机密性和可用性(ICA)的做法。它代表了应对硬盘故障、断电事故&#xff0c;以及来自黑客或竞争对手攻击等防御和恢复能力。而…...

Chapter9.3:线性系统稳定性分析及综合实例

该系列博客主要讲述Matlab软件在自动控制方面的应用&#xff0c;如无自动控制理论基础&#xff0c;请先学习自动控制系列博文&#xff0c;该系列博客不再详细讲解自动控制理论知识。 自动控制理论基础相关链接&#xff1a;https://blog.csdn.net/qq_39032096/category_10287468…...

EXCEL 在复杂查询时摒弃vlookup() sumif() 等公式,而使用数据透视表的初步学习

1 为什么要用数据透视表 如果不用&#xff0c;就可能需要写很复杂的&#xff0c;查询公式 比如&#xff0c;vlookup各种sumif,sumifs 等等&#xff0c;如果还是多个表进行统计&#xff0c;那写起来更酸爽所以感觉 vlookup sumif,sumifs 更适合&#xff0c;简单情况下的查询&am…...

C 文件读写

C 文件读写 本章我们将介绍 C 程序员如何创建、打开、关闭文本文件或二进制文件。 一个文件&#xff0c;无论它是文本文件还是二进制文件&#xff0c;都是代表了一系列的字节。C 语言不仅提供了访问顶层的函数&#xff0c;也提供了底层&#xff08;OS&#xff09;调用来处理存…...

Linux中实现程序开机自启——将程序配置为系统服务

一、需求说明 当我们在Linux系统上安装软件时,希望软件实现开机自启,或程序崩溃后自动重启,提升软件运行的稳定性;而linux系统中的systemd刚好可以满足我们的要求(可将软件注册为系统服务)。 二、systemd systemd 是一个 Linux 系统基础组件的集合,提供了一个系统和服务…...

【洛谷刷题】蓝桥杯专题突破-广度优先搜索-bfs(13)

目录 写在前面&#xff1a; 题目&#xff1a;P1443 马的遍历 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题目描述&#xff1a; 输入格式&#xff1a; 输出格式&#xff1a; 输入样例&#xff1a; 输出样例&#xff1a; 解题思路&#xff1a; 代码&#xff1a; AC &am…...

【新2023Q2模拟题JAVA】华为OD机试 - 总最快检测效率 or 核酸检测效率

最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为od机试,独家整理 已参加机试人员的实战技巧本篇题解:报数 题目 一百个人围成一圈…...

基于主成分分析的混音方法

一、简介&#xff1a; 基于主成分分析的混音方法是一种常见的音频混音技术&#xff0c;它利用主成分分析&#xff08;PCA&#xff09;对音频信号进行降维和重构&#xff0c;从而实现混音。 二、基本步骤如下&#xff1a; 采集和存储需要混音的音频信号。 对音频信号进行主成分…...

Code Two Exchange Crack

CodeTwo Exchange 迁移允许直接从早期版本的 Exchange&#xff08;从 Exchange 2010 开始&#xff09;安全、轻松地迁移到 Exchange 2019 和 2016。此服务器应用程序还允许您集中管理来自 Microsoft 365 (Office 365) 的邮箱迁移以及来自基于 IMAP 的电子邮件系统&#xff08;例…...

jQuery.form.js 详细用法_维护老项目使用

概述 jquery-3.3.1.min.js &#xff1a; http://jquery.com/download jquery.form.min.js &#xff1a;http://malsup.com/jquery/form/#tab7 jquery form 是一个表单异步提交的插件&#xff0c;可以很容易提交表单&#xff0c;设置表单提交的参数&#xff0c;并在表单提交前…...

【Java】关于你不知道的Java大整数运算之BigInteger类超级好用!!!

目录 一、BigInteger类简单介绍 二、BigInteger构造方式 &#xff08;1&#xff09;构造方式 &#xff08;2&#xff09;输入方式 三、BigInteger常见的成员方法 &#xff08;1&#xff09;方法介绍 &#xff08;2&#xff09;方法使用演示 1.加减乘除余 2.比较 3.绝…...

运维是不是没有出路了?

瑞典马工的​​《是时候让运维集体下岗了》一出&#xff0c;就让运维人为之一颤&#xff0c;​人人自危。文章开篇就提到&#xff1a;​​明人不说暗话&#xff0c;在云原生和DevOps成熟的今天&#xff0c;运维作为一个岗位和团队已经完成了历史任务&#xff0c;应该退出舞台了…...

【C++笔试强训】第七天

选择题 解析&#xff1a;内联函数&#xff08;inline&#xff09;一般用于代码较少&#xff0c;代码块里面没有递归且频繁调用的函数&#xff0c;是一种以空间换时间&#xff08;不是指内存&#xff0c;而是指令变多编译出来的可执行程序会变大&#xff09;的做法。内联函数在预…...

mysql binlog 一直追加写,磁盘满了怎么办?

文章目录 mysql binlog 清理策略1、设置binlog最大的文件数和文件大小2、定时清理过期binlog文件3、手动清理binlog文件4、禁用或启用binlogmysql binlog用于记录mysql数据库所有变更(数据库的DDL、DML操作)包括用户执行的语句,以及底层引擎所执行的操作的二进制日志,主要用…...

缓存穿透、缓存雪崩、缓存击穿解决方案

什么是缓存 缓存就是数据交换的缓冲区&#xff08;称作Cache&#xff09;,是存贮数据的临时地方&#xff0c;一般读写性能较高。 添加 redis 缓存 给店铺类型查询业务添加缓存 需求&#xff1a;添加ShopTypeController中的queryTypeList方法&#xff0c;添加查询缓存 缓存更新…...

web + servlet + jdbc mysql 实现简单的表单管理界面

目录数据库创建数据库连接servlet创建,这里注意一下我的数据库我自己改了一下名字lhx网页html运行文件目录展示首先我们准备好开发使用的工具以及配置 idea2020 tomcat8.5 创建javaweb参考idea编译Tomcat详细步骤 IDEA通过JDBC连接数据库请参考jdbc连接数据库 需要登陆注册界面…...

Maven 国内镜像仓库

镜像仓库目标 当我们未定义任何远程仓库时&#xff0c;使用 Maven 更新依赖时&#xff0c;其会去默认远程仓库中拉取&#xff0c;默认远程仓库 是国外地址&#xff0c;所以在国内访问特别慢&#xff0c;想提升访问速度&#xff0c;需要将国外地址换成国内地址 更换仓库地址的…...

day21 ● 530.二叉搜索树的最小绝对差 ● 501.二叉搜索树中的众数 ● 236. 二叉树的最近公共祖先

二叉搜索树的最小绝对差 二叉搜索树&#xff08;Binary Search Tree&#xff0c;简称 BST&#xff09;是一种特殊的二叉树&#xff0c;它的每个节点都满足以下条件&#xff1a; 左子树上所有节点的值均小于该节点的值&#xff1b;右子树上所有节点的值均大于该节点的值&#…...

大学计算机(软件类)专业推荐竞赛 / 证书 官网及赛事相关信息整理

大学计算机专业(软件)推荐竞赛 / 证书 官网及赛事相关信息 一、算法类(丰富简历)&#xff1a; 1、ACM国际大学生程序设计竞赛&#xff1a; 官网&#xff1a;https://icpc.global/ 国内&#xff1a;http://icpc.pku.edu.cn/index.htm 报名方式&#xff1a;区域预赛一般每年9-1…...

Metasploit入门到高级【第九章】

预计更新第一章&#xff1a;Metasploit 简介 Metasploit 是什么Metasploit 的历史和发展Metasploit 的组成部分 第二章&#xff1a;Kali Linux 入门 Kali Linux 简介Kali Linux 安装和配置常用命令和工具介绍 第三章&#xff1a;Metasploit 基础 Metasploit 的基本概念Met…...

JDK之8后: 协程? 虚拟线程!!!

特性官方文档: https://openjdk.org/jeps/436 Java协程 近三十年来&#xff0c;Java 开发人员一直依赖线程作为并发服务器应用程序的构建块。每个方法中的每个语句都在线程内执行&#xff0c;并且由于 Java 是多线程的&#xff0c;因此多个执行线程同时发生。线程是Java的并发…...