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

多标签分类论文笔记 | ML-Decoder: Scalable and Versatile Classification Head

个人论文精读笔记,主要是翻译+心得,欢迎旁观,如果有兴趣可以在评论区留言,我们一起探讨。
Paper: https://arxiv.org/pdf/2111.12933.pdf
Code: https://github.com/Alibaba-MIIL/ML_Decoder

文章目录

  • 0. 摘要
  • 1. 介绍
  • 2. 方法
    • 2.1 Baseline分类头
    • 2.2 回顾-Attention and Transformer-Decoder
    • 2.3 ML-Decoder
  • 3. 实验研究
    • 3.1 查询类型比较
    • 3.2 比较不同分类头
    • 3.3 Zero-shot学习
  • 4. 实验结果
    • 4.1 多标签分类
    • 4.2 Zero-shot学习
    • 4.3 单标签分类
  • 5. 结论与未来工作

0. 摘要

  • 翻译
    本文介绍了一种新的基于注意力的分类头——ML-Decoder。ML-Decoder通过查询预测类标签的存在,与全局平均池化相比,它能够更好地利用空间数据。通过重新设计解码器架构,并使用一种新颖的组解码方案,ML-Decoder具有很高的效率,并且可以很好地扩展到数千个类。与使用更大的主干相比,ML-Decoder始终提供更好的速度-精度权衡。ML-Decoder也是通用的——它可以作为各种分类头的临时替代品,并且在与单词查询操作时推广到不可见的类。新颖的查询扩充进一步提高了其泛化能力。使用ML-Decoder,我们在几个分类任务上取得了最先进的结果:在MS-COCO多标签上,我们达到了91.4%的mAP;在NUS-WIDE的zero-shot上,我们达到了31.1%的ZSL(Zero shot learning) mAP;在ImageNet单标签上,我们在没有额外数据或蒸馏的情况下,用vanilla ResNet50主干达到了80.7%的新最高分。

  • 笔记

    1. 摘要主要讲了下ML-Decoder不同于一般的全局平均池化,通过查询来预测类别能更好的利用空间信息;
    2. 跟更大的backbone相比,ML-Decoder能更好权衡速度-精度;
    3. ML-Decoder也是通用的——它可以作为各种分类头的临时替代品,并且在与单词查询操作时推广到不可见的类;
    4. 最后展示了下实验数据,能在不同数据集上多标签分类的任务达到SOTA的性能;

1. 介绍

先说了一下图像分类的概念,可以根据图像中的物体分配一个或多个标签,那么分配一个标签的就是单分类,多个标签就是多分类。然后单分类需要对输出结果做softmax操作,softmax操作其实就是把输出的多个类别通过运算缩放到0~1之间的值,我们可以称为概率值,然后对于每个物体预测的所有类别之和为1,具体可以参考这篇博文。再说回多分类,其实自然图片通常包括多个对象,那么就需要多标签分类。然后作者介绍了下他的做法:类似处理多任务问题,分别独立地预测每个类别。然后介绍了业界一般的做法:通过图神经网络利用标签相关性,改进损失函数、预训练方法和主干,在多标签分类领域取得了显著的成功。

极端分类时,我们需要预测大量类的存在(通常是数千或更多),迫使我们的模型和训练方案是高效和可扩展的。多标签零次学习(ZSL)是多标签分类的扩展,在推理过程中,网络尝试识别看不见的标签,即在训练过程中未使用的其他类别的标签。这通常是通过文本模型在可见类(用于训练)和不可见类之间共享知识来实现的。

分类网络通常包含主干和分类头。主干输出空间嵌入张量,分类头将空间嵌入张量转换为预测逻辑。在单标签分类中,这通常是通过全局平均池化 (GAP)完成的,然后是一个全连接层。基于GAP的分类头也用于多标签分类。然而,由于需要识别具有不同位置和大小的多个对象,这可能会使平均池的使用不是最优的。最近,一些研究提出了基于注意力分类头的多标签分类方法。有论文提出一种双流注意力框架,用于从全局图像到局部区域的多类别物体识别。还有论文提出了简单的空间注意分数,然后将其与类别无关的平均池化特征相结合。还有论文提出了一个具有可学习查询的池化transformer,用于多标签分类,获得了顶级结果。(具体哪篇论文请参考原文)

基于GAP的分类头简单而有效,并且由于它们具有固定的空间池化成本,因此可以很好地随类数量的增加而扩展。然而,它们提供了次优结果,并且不能直接应用于ZSL。基于注意力的分类头确实改善了结果,但通常成本很高,即使对于具有少量类别的数据集也是如此,并且对于极端的分类场景实际上是不可行的。它们也没有自然延伸到ZSL。

在本文中,我们介绍了一种新的分类头,称为ML-Decoder,它为单标签、多标签和零采样分类提供了统一的解决方案,并取得了最先进的结果(见图1)。ML-Decoder的设计基于原始的transformer-decoder,进行了两大修改,显著提高了其可扩展性和效率。首先,它通过去除冗余的自关注块,将解码器在输入查询数量上的二次依赖关系降低为线性依赖关系。其次,ML-Decoder使用一种新颖的组解码方案,它不是为每个类分配查询,而是使用固定数量的查询,这些查询通过称为组全连接(group
fully-connected)的新体系结构块插值到最终数量的类。使用组解码,ML-Decoder还享有固定的空间池成本,并且可以很好地扩展到数千个类。

在这里插入图片描述
ML-Decoder灵活高效。它可以用可学习的或固定的查询进行同样好的训练,并且可以在训练和推理期间使用不同的查询(见图2)。这些关键特性使ML-Decoder适合ZSL任务。当我们为每个类分配查询并使用单词查询训练MLdecoder时,它可以很好地泛化到看不见的查询,并显着改进了以前最先进的ZSL结果。我们还证明了组解码方案可以扩展到ZSL场景,并在训练过程中引入新的查询增强以进一步促进泛化。
在这里插入图片描述
本文的贡献可以总结如下:

  1. 我们提出了一种新的分类头,称为ML-Decoder,它为多标签、零标签和单标签分类提供了统一的解决方案,并具有最先进的结果。
  2. ML-Decoder可以作为全局平均池化的替代方案。它简单而高效,与更大的主干或其他基于注意力的头相比,它提供了更好的速度和精度权衡。
  3. ML-Decoder新颖的设计使其可扩展到分类数千类。互补的查询增强技术也提高了它对不可见类的通用性。
  4. 我们通过对常用分类数据集(MS-COCO、Open Images、NUS-WIDE、PASCAL-VOC和ImageNet)的综合实验验证了ML-Decoder的有效性。
  • 笔记:
    以上是翻译带一点补充,然后是Intro,是介绍关于分类、多分类各大家的做法,然后提出自己的做法,并且总结了下自己的贡献。比较关键的几点在最后的贡献也总结了,好像也没啥其他好写的了= =下面看具体的方法,方法我就不翻译了,直接带理解的做笔记。

2. 方法

先是回顾baseline分类头,包括 GAP-based 和 Attention-based。然后再介绍本文的重点ML-Decorder,包括他的优点以及介绍他在CV多重任务中什么适用的,多重任务当然就包括多标签分类、ZSL、单标签分类。

2.1 Baseline分类头

首先是统一一套框架,backbone+cls head的结构:
在这里插入图片描述
cls head又分为GAP-based和Attention-based,GAP-based就是用全局平均池化算子把backbone输出的tensort减到一维,然后全连接层转换为N个输出,N为类别,GAP通常处理单标签分类任务,有一定的泛化性,有些论文也把GAP作为多标签分类的baseline。
在这里插入图片描述

对于Attention-based的分类头,可以更好的使用空间数据,并提高结果,具体看下面。

2.2 回顾-Attention and Transformer-Decoder

这里回顾了transformer-decoder并且说明了ML-Decoder与之的区别。首先Attention的定义如下,Q、K、V分别为3个输入向量
在这里插入图片描述
多头的输出为:
在这里插入图片描述
在这里插入图片描述
图中展示了transformer-decoder和ML-Decoder的区别,FF是前馈全连接层。token池化阶段是在token嵌入的维度D上进行简单池化,以产生N个输出。

2.3 ML-Decoder

2.3.1 动机
transformer-decoder分类头有个缺点,计算成本是类别的平方。 导致类别越多,速度越慢,或者不可行。如Open Images(9600个类),从计算成本的角度来看,这类方法实际上是不可行的。另外,变压器-解码器作为分类头只适用于多标签分类。一个更普遍的基于注意力的头部,也可以处理其他任务,如单一标签和ZSL,将是有益的。

2.3.2 ML-Decoder设计
详细说明图3中,对于transformer-decoder,ML-Decoder做了哪些修改。

(1)移除Self-attention:

我们首先观察到,在推理过程中,transformer-decoder的self-attention模块对输入查询提供了固定的转换。然而,当查询进入cross-attention模块时,在进行注意操作之前,它们要经过一个投影层(参见公式1)。在实践中,投影层可以将查询转换为任何想要的输出,使自注意模块冗余。因此,我们可以去除自关注层,同时仍然保持分类头的相同表达性,并且不会降低结果。我们将在3.1节中验证这一点。通过消除自关注,我们避免了昂贵的模块,并将ML-Decoder在输入查询数上的二次方关系变为线性关系,使其更加实用和高效。

(2)组编码(Group-decoding)

在极端的分类场景中,即使分类头与类别数量的线性依赖关系也可能代价高昂。我们希望打破这种耦合,使交叉关注模块及其后的前馈层与类的数量无关,与GAP操作相同。为此,我们没有为每个类分配一个查询,而是使用固定数量的组查询K作为输入(参见图3)。

然后看图4,很明显只跟K有关而不跟N相关。
在这里插入图片描述
对组解码方案的一些额外观察和见解:

  • 使用全解码(g = 1),每个查询检查单个类的存在性。使用组解码,每个查询检查几个类的存在性。我们选择以随机的方式把班级分成几组。通过语义接近对类进行聚类是另一种选择,但需要一个繁琐的聚类过程,并且可能需要对每个数据集进行调优的额外超参数。在第3.2节中,我们将展示随机分组聚类足以提供与全解码方案相当的结果。
  • 在flops方面,组全连接层相当于基于gap的头部中的全连接层(N × D乘法)。两者在类的数量上都是线性相关的,但在实践中,即使对于数千个类,它们的计算开销也很小。就内存消耗而言,在单个操作中执行完全连接在一起的两个任务比连续执行它们更有效,因为不需要存储大型中间映射。
  • ML-Decoder中唯一依赖于输入图像大小的组件是cross-attention模块。我们可以把cross-attention层想象成空间池,类似于GAP。对于组解码,ML-Decoder具有固定的空间池开销,与N无关。

(3)Non-learnable查询

用于多标签分类的transformer-decoder只有在可学习的查询下才能获得最佳结果。然而,我们观察到查询总是被输入到一个多头注意层,该注意层对查询应用了一个可学习的投影计算(参见公式1)。因此,将查询权重设置为可学习的是多余的——可学习的投影可以将任何固定值查询转换为可学习查询获得的任何值。我们将在第3.1节中验证这一点,表明使用可学习或固定查询训练ML-Decoder时获得相同的准确性。除了简化训练过程之外,使用固定查询将使我们能够进行ZSL。

2.3.3 ML-Decoder for ZSL

接下来,我们将介绍在多标签ZSL场景中使用ML-Decoder所需的适应性,并讨论ML-Decoder的关键特性,使其适合该任务。我们还将证明组解码方案可以扩展到ZSL,并提出新的查询增强功能,进一步提高ML-Decoder的泛化性。

基于NLP的查询:我们首先介绍一个具有完整解码方案的ZSL ML-Decoder版本(每个标签都有一个相应的查询)。如前一节所讨论的,输入查询可以是可学习的,也可以是固定的。对于ZSL,我们使用固定的基于nlp的查询——对于每个标签,使用语言模型提取单词嵌入向量,并将其设置为输入查询。我们还在组全连接层中使用共享投影矩阵(在Eq. 3中设置Wk = W)。使用基于nlp的查询和共享投影矩阵,语义信息可以在推理期间从可见(训练)类传播到不可见(测试)类,从而实现泛化。

ML-Decoder功能:ML-Decoder包含几个有利的功能,使其非常适合ZSL。首先,它的注意机制是基于向量之间的点积相似度(Eq. 1)。由于NLP词嵌入保留了这种点积语义相似度[15],因此未见的标签更有可能与解码器内最相似的键和值匹配。此外,具有共享投影矩阵的MLDecoder允许可变数量的输入查询,并且对查询的顺序不敏感。这是有益的,因为在ZSL中,我们对不同的类集执行训练和测试,因此对不同的查询集执行训练和测试。对于ZSL,我们只对可见标签进行训练,并对不可见类进行推理,而对于广义ZSL (GZSL),我们对不可见和可见标签集的并集进行推理。

组解码:组解码(K < N)需要修改才能在ZSL设置中工作。在附录B中,我们详细介绍了ZSL组解码的变体。

查询增强:通过基于nlp的查询,MLDecoder自然地扩展到ZSL任务。然而,我们希望应用专门的训练技巧来进一步提高其通用性。在计算机视觉中,对输入图像进行增强以防止过拟合,并提高对未见过的新图像的泛化能力是一种常见的做法。
类似地,我们引入查询扩展来鼓励对不可见的类查询进行泛化。第一个增强是random-query,它向输入查询集添加额外的随机值查询,并为这些添加的查询分配一个表示“随机”的正基础真值标签。第二个增强是查询噪声,我们在每批输入查询中添加一个小的随机噪声。
请参见附录中的图8,以了解增强的示例。在第3.3节中,我们将展示查询增强鼓励模型识别以前没有遇到过的新查询向量,并提高ZSL分数。我们还尝试了查询截断增强,即每批删除查询的随机部分。然而,在我们的实验中,这种技术并不是有益的。

2.3.4 ML-Decoder for Single-label Classification
先前提出的大多数基于注意力的分类头都是用于多标签分类的,这也是我们在工作中关注的主要任务。然而,我们的ML-Decoder设计使其能够在其他计算机视觉任务(如单标签分类)中用作基于gap的磁头的直接替代品,如图2所示。

在多标签分类中,基于注意的头部的主要动机是需要识别几个不同位置和大小的物体。我们将在4.3节中展示ML-Decoder的好处更普遍,并且完全适用于单标签问题,其中图像通常包含单个对象。

3. 实验研究

在这部分,我们将为我们提出的ML-Decoder分类头带来消融测试和内部比较。首先,我们将使用不同类型的输入查询测试ML-Decoder。然后,我们将ML-Decoder与其他分类头进行比较,例如transformer-decoder和基于GAP的分类头。最后,我们将利用增强查询和群解码对ZSL进行消融研究。

3.1 查询类型比较

如第2.3.2节所述,由于注意模块中的线性投影,ML-Decoder在使用可学习或固定查询时保持相同的表达性。在表7中,我们比较了MS-COCO多标签数据集上不同类型查询的ML-Decoder结果(参见附录C以获得MS-COCO的完整训练细节)。

事实上,我们看到可学习的、固定随机的和固定基于NLP的单词查询都产生了相同的准确率,88.1% mAP,正如预期的那样。为了减少学习参数的数量,我们将使用固定查询。
在这里插入图片描述

3.2 比较不同分类头

在这里插入图片描述
在这里插入图片描述
TResNet-M 的backbone相当于Resnet50
在这里插入图片描述
在图5中,我们在MS-COCO上比较了mAP分数与基于gap和ML-Decoder分类头的失败,具有三种不同的架构- tresnet, TResNet-M, TResNet-L(在运行时相当于ResNet34, ResNet50和ResNet101)。

3.3 Zero-shot学习

在这里插入图片描述
从表中可以明显看出,随机查询和附加噪声都有助于模型泛化到不可见类的能力。当同时应用这两种方法时,我们看到未见过的课程的mAP分数增加了1.2%。我们还测试了查询增强对所见类的影响。在MS-COCO和NUS-WIDE上,添加查询扩展对所见类的mAP分数没有影响(MS-COCO为88.1%,NUS-WIDE为22.7%)。这与3.1节的结果一致,在3.1节中,可学习查询和固定查询在所见类上提供相同的结果。使用查询增强的好处是可以更好地泛化到不可见的类。

在表4中,我们比较了ZSL任务的组解码器和全解码器。附录B描述了对ZSL组解码方案的修改。
在这里插入图片描述
从表4中我们可以看到,组解码方案也适用于ZSL场景,与完全解码相比,mAP分数略有下降。

4. 实验结果

在本节中,我们将在流行的多标签、ZSL和单标签分类数据集上评估基于ml解码器的解决方案,并将结果与已知的最先进技术进行比较。

4.1 多标签分类

在这里插入图片描述

4.2 Zero-shot学习

在这里插入图片描述

4.3 单标签分类

在这里插入图片描述

5. 结论与未来工作

本文介绍了一种新的基于注意力的分类头——ML-Decoder。通过去除冗余的自关注层并使用新颖的组解码方案,ML-Decoder可以很好地扩展到数千个类,并且比使用更大的主干提供更好的速度-精度权衡。ML-Decoder可以很好地处理固定查询或随机查询,并在训练和推理时使用不同的查询。通过基于单词的查询和新颖的查询增强,ML-Decoder还可以很好地泛化到不可见的类。大量的实验分析表明,ML-Decoder优于基于GAP分类头的多个分类任务,如多标签,单标签和Zero-shot,并取得了新的最先进的结果。

我们未来的工作重点是将ML-Decoder的使用扩展到其他计算机视觉任务,包括分类,如目标检测和视频识别。我们还将探索更普遍地使用群解码方案来处理任何空间嵌入张量,并将尝试将其应用于其他领域和任务,如分割,姿态估计和NLP相关问题。

相关文章:

多标签分类论文笔记 | ML-Decoder: Scalable and Versatile Classification Head

个人论文精读笔记&#xff0c;主要是翻译心得&#xff0c;欢迎旁观&#xff0c;如果有兴趣可以在评论区留言&#xff0c;我们一起探讨。 Paper: https://arxiv.org/pdf/2111.12933.pdf Code: https://github.com/Alibaba-MIIL/ML_Decoder 文章目录 0. 摘要1. 介绍2. 方法2.1 Ba…...

修改http_charfinder.py使能在python311环境中运行

需要修改两个函数&#xff0c;第一个是init函数&#xff0c;修改如下&#xff1a; async def init(loop, address, port): # <1> # app web.Application(looploop) # <2> # app.router.add_route(GET, /, home) # <3> app web.Application(…...

蓝桥杯(跳跃 C++)

思路&#xff1a; 1、根据题目很容易知道可以用深度搜索、广度搜索、动态规划的思想解题。 2、这里利用深度搜素&#xff0c;由题目可知&#xff0c;可以往九个方向走。 3、这里的判断边界就是走到终点。 #include<iostream> using namespace std; int max1 0; int …...

08 | Jackson 注解在实体里面如何应用?常见的死循环问题如何解决?

我们用 Spring Boot 里面默认集成的 fasterxml.jackson 加以说明&#xff0c;这看似和 JPA 没什么关系&#xff0c;但是一旦我们和 Entity 一起使用的时候&#xff0c;就会遇到一些问题&#xff0c;特别是新手同学&#xff0c;我们这一课时详细介绍一下用法。先来跟着我了解一下…...

JavaScript—获取当前时间 并转化为yyyy-MM-dd hh:mm:ss格式

JavaScript—获取当前时间 并转化为yyyy-MM-dd hh:mm:ss格式 每次项目都需要用到时间戳格式,可以封装成一个方法 下次直接CV过去 const timestampPadStart=(str)=>{str=String(str);return str.padStart(2,0)...

OpenHarmony创新赛丨报名倒计时,超强秘籍带你直通大奖!

OpenHarmony创新赛报名倒计时开始啦&#xff01; 设于开放原子全球开源大赛下的OpenHarmony创新赛&#xff0c;目前正在如火如荼地进行赛事招募中&#xff01;这次大赛围绕创新应用、商显行业、金融行业三大赛题&#xff0c;邀请来自企业、个人、高校师生等各界群体的优秀开发者…...

Linux高性能服务器编程 学习笔记 第十四章 进程池和线程池

动态创建子进程或子线程的缺点&#xff1a; 1.动态创建进程或线程比较耗时&#xff0c;这将导致较慢的客户响应。 2.动态创建的子进程或子线程通常只用来为一个客户服务&#xff08;除非我们做特殊处理&#xff09;&#xff0c;这将导致系统上产生大量的进程或线程&#xff0c…...

微信小程序/vue3/uview-plus form兜底校验

效果图 代码 <template><u-form :model"form" ref"formRole" :rules"rules"><u-form-item prop"nickname"><u-input v-model"form.nickname" placeholder"姓名" border"none" /&…...

Photoshop 2024正式发布!内置最新PS AI,创意填充等功能无限制使用!

PS正式版目前更新到了2024&#xff0c;版本为25.0。 安装教程 1、下载得到安装包后&#xff0c;先解压。鼠标右键&#xff0c;【解压到当前文件夹】 2、双击 Set-up 开始安装 3、这里可以更改安装位置。如果C盘空间不够大&#xff0c;可以把它安装到C盘以外。更改好后&#x…...

芯片学习记录TLP184

TLP184 芯片介绍 TLP184是一款光耦隔离器&#xff0c;它的主要特点包括&#xff1a;高电压耐受能力、高传输速度、高共模隔离能力、低功耗等。它可以用于工业自动化、通信设备、家用电器等领域的电气隔离应用。由一个光电晶体管组成&#xff0c;光学耦合到两个红外发射二极管…...

C++ 重载运算符和重载函数

前言 C 允许在同一作用域中的某个函数和运算符指定多个定义&#xff0c;分别称为函数重载和运算符重载。重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明&#xff0c;但是它们的参数列表和定义&#xff08;实现&#xff09;不相同。 当您调用一个…...

Linux:mongodb数据库基础操作(3.4版本)

安装 3.*版本和4.*版本安装都是一样的 Linux&#xff1a;mongodb数据库源码包安装&#xff08;4.4.25版本&#xff09;_鲍海超-GNUBHCkalitarro的博客-CSDN博客https://blog.csdn.net/w14768855/article/details/133826626?spm1001.2014.3001.5501 mysql和mongodb对比 登录…...

nginx实现灰度上线(InsCode AI 创作助手)

要基于Nginx实现灰度上线&#xff0c;有以下三种方法&#xff1a; 权重分发&#xff1a;使用Nginx的upstream模块来设置不同服务器的权重。将一部分请求分发给新版本服务器&#xff0c;另一部分请求分发给旧版本服务器。这可以通过以下方式实现&#xff1a; http {upstream bac…...

记:apifox 返回 invalid header token 的问题排查思路

背景&#xff1a; 某接口服务使用 springboot 2.x 开发&#xff0c; RestController 、ReqeustBody 在本地(localhost)调用的时候正常、chrome (.cn域名访问)浏览器访问正常。 换成 apifox (.cn域名访问)、postman (.cn域名访问)调用异常返回&#xff1a;invalid header t…...

【00】神经网络之初始化参数

问题描述 #随机初始化权重 w12 np.random.randn(100, 784)/np.sqrt(784) 为什么除以28 回答 这里的代码是初始化一个深度学习模型中的权重矩阵w12。权重矩阵的形状是(100, 784)&#xff0c;这是一个从784个输入节点到100个隐藏节点的全连接层。 除以np.sqrt(784)是权重初始…...

代码随想录Day20 回溯算法 LeetCode77 组合问题

以下内容更详细解释来自于:代码随想录 (programmercarl.com) 1.回溯算法理论基础 回溯法也叫回溯搜索法,是搜索法的一种,我们之前在二叉树中也经常使用到回溯来解决问题,其实有递归就有回溯,有的时候回溯隐藏在递归之下,我们不容易发觉,今天我们来详细介绍一下什么是回溯,它能…...

免费获取天气预报的API接口(Json格式)

免费获取天气预报的API接口&#xff08;Json格式&#xff09; 1、接口地址2、城市代码 1、接口地址 当需要获取某个城市天气数据json时候&#xff0c;需要传入一个城市代码编码作为入参&#xff0c;地址&#xff1a; http://t.weather.itboy.net/api/weather/city/xxxxx &…...

安卓程序执行入口

Android程序执行入口 Android应用程序的执行入口是在一个特定的 Java 类中&#xff0c;通常是 MainActivity 或 SplashActivity&#xff0c;具体取决于应用的设计和结构。 Android应用程序的执行入口通常通过以下方式进行定义&#xff1a; 在 AndroidManifest.xml 文件中&am…...

消息队列(中间件)

通信协议&#xff1a; 为了实现客户端和服务器之间的通信来完成的逻辑&#xff0c;基于TCP实现的自定义应用层协议。通过这个协议,完成客户端–服务器远程方法调用。 序列化/反序列化&#xff1a; 通过网络传输对象把对象存储到硬盘上。 序列化&#xff1a;把对象转化为二进制的…...

Java|学习|异常

1.异常 1.1 异常 1.1.1 概述 异常&#xff1a;就是程序出现了不正常的情况。 Error&#xff1a;严重问题&#xff0c;不需要处理。 Exception&#xff1a;称为异常类&#xff0c;它表示程序本身可以处理的问题。 RuntimeException&#xff1a;在编译器不检查&#xff0c;出…...

nextjs项目修改启动端口号,以及开发启动后自动打开浏览器

next版本&#xff1a;13.5.4 一、修改端口 在package.json文件当中修改启动命令 "scripts": {"dev": "next dev -p 3100","build": "next build","start": "next start","lint": "ne…...

微服务架构 | 超时管理

INDEX LSA 级别与全年停机时间速查表LSA 级别实战TP 性能超时时间设计原则 LSA 级别与全年停机时间速查表 计算公式&#xff1a;60 * 60 * 24 * 365 * (1-LSA) 31,536,000‬ * (1-LSA) 系统级别LSA级别全年停机时间099.999%5分钟099.99%52分钟199.9%8.8小时299%3.65 天 LSA…...

Qt 样式表大全整理

【QT】史上最全最详细的QSS样式表用法及用例说明_qt样式表使用大全_半醒半醉日复日&#xff0c;花落花开年复年的博客-CSDN博客 QT样式表的使用_qt 设置按下 release hover 按钮样式表_create_right的博客-CSDN博客 QPushButton {border-image: url(:/Start_Stop.png); } QPu…...

k8s-10 cni 网络

k8s通过CNI接口接入其他网络插件来实现网络通讯。目前比较流行的插件有flannel,calico等。 CNI插件存放位置: # cat /etc/cni/net.d/10-flannel.conflist 插件使用的解决方案如下: 虚拟网桥&#xff0c;虚拟网卡&#xff0c;多个容器共用一个虚拟网卡进行通信。多路复用: Mac…...

IDEA中.gitignore配置不生效的解决方案

一、创建项目 二、执行以下Git命令 git rm -r --cached . git add . git commit -m "update .gitignore"...

SparkContext 与 SparkContext 之间的区别是什么

SparkContext 是 Spark 的入口点&#xff0c;它是所有 Spark 应用程序的主要接口&#xff0c;用于创建 RDD、累加器、广播变量等&#xff0c;并管理与 Spark 集群的连接。在一个 Spark 应用程序中只能有一个 SparkContext。 而 SparkSession 是 Spark 2.0 新增的 API&#xff0…...

lv8 嵌入式开发-网络编程开发 17 套接字属性设置

1 基本概念 设置套接字的选项对套接字进行控制除了设置选项外&#xff0c;还可以获取选项选项的概念相当于属性&#xff0c;所以套接字选项也可说是套接字属性有些选项&#xff08;属性&#xff09;只可获取&#xff0c;不可设置&#xff1b;有些选项既可设置也可获取 2 选项…...

VulnHub Alice

一、信息收集 发现开发了22、80 2.访问ip&#xff0c;右击查看源代码 发现需要利用X-Forwarded-For 火狐插件&#xff1a;X-Forwarded-For Header 挂上代理后&#xff1a; 出现以下页面&#xff1a; 先注册一个账户&#xff0c;然后再登录 发现有参数进行传参 发现传参&a…...

AUTOSAR组织发布20周年纪念册,东软睿驰NeuSAR列入成功案例

近日&#xff0c;AUTOSAR组织在成立20周年之际发布20周年官方纪念册&#xff08;20th Anniversary Brochure&#xff09;&#xff0c;记录了AUTOSAR组织从成立到今天的故事、汽车行业当前和未来的发展以及AUTOSAR 伙伴关系和合作在重塑汽车方面的作用。东软睿驰提报的基于AUTOS…...

转行网络安全是否可行?

一、前言 其实很多的IT大佬之前也不是专门学计算机的&#xff0c;都是后期转行的。而且大学学什么专业&#xff0c;对后期的工作真的没有太大关系&#xff0c;这也是现在高校的教育现状。有80%的学生都是通过临时抱佛脚&#xff0c;考前冲刺拿到毕业证书的。下面就带大家详细分…...

广东品牌网站建设/搜索引擎优化的技巧

根据最新的数据统计&#xff0c;Java和JavaScript主导了开发者&#xff0c;拥有大量忠实粉丝&#xff08;开发者&#xff09;。然而&#xff0c;随着更多的应用程序逐渐转移到云上&#xff0c;这种情况可能会发生变化。当苹果公司和Facebook争相着去推出新的编程语言&#xff0…...

湖南网站建设企业/关键词优化师

const readline require(readline-sync);//引入用户输入功能console.log(请输入数组的长度&#xff1a;);//提示用户输入let length readline.question();//获取用户输入let arr [];//创建数组for (let i 0; i < length; i) {console.log(请输入数组的第${i 1}个数&…...

专业长春网站建设工作室/黄冈网站推广策略

linux启动oracle命令 su - oraclesqlplus /nologconnect /as sysdbastartup lsnrctl start...

广告公司会建设网站吗/广州网站推广软件

提要&#xff1a; 有些机子特别逆天&#xff0c;比如说Thinkpad e系列。好好的f1-f12一定要加上fn才能按出来&#xff0c;默认的是画在上面的功能键&#xff0c;作为娱乐来说其实是还不错的&#xff0c;但是像我等程序员就觉得特别逆天了。你有两个选择&#xff0c;第一加个外接…...

建网站的公司浩森宇特/合肥seo招聘

xjusticex2016/07/07还是不行。数据库挂了之后&#xff0c;如果不关闭禅道或者重启禅道的话&#xff0c;启动mysql会出现&#xff1a;Starting MySQL. ERROR! The server quit without updating PID file (/usr/local/mysql/var/iZ94aqs6nntZ.pid).的错误。一旦关闭活重启禅道&…...

深圳专业商城网站制作/seo推广经验

Android 图表开源框架之MPAndroidChart PieChart扇形图&#xff08;一&#xff09; Android 图表开源框架之MPAndroidChart PieChart扇形图&#xff0c;版本&#xff1a;3.0.1 implementation com.github.PhilJay:MPAndroidChart:v3.0.1 效果图1&#xff1a; 效果图2&#x…...