多模态+SNN个人学习历程和心得

祖传开头

这次想写一个一直深藏心中的研究方向,那就是多模态方向。其实当初在实验室那会儿,最先接触的就是多模态的工作,因此这是我科研之路的起点。只不过,后来经历了一些波折,导致个人没有往这个方向深挖,这篇博客主要是想记录一些多模态相关的知识基础,还会涉及一些脉冲神经网络(SNN)的知识,同时记录个人参与过的工作,留下一些回忆。


多模态学习

基本概念

多模态学习,或者称为多模态机器学习(MMML),是近年来学术界非常热门的话题和方向。就如2023年讨论度最高的大模型方向,目前也在往多模态方向进军,各大企业都追求开发多模态的大模型。多模态听起来可能有点抽象,但不难理解。

所谓模态(Modality),通常指的是某种感觉、知觉或信息传递的方式或通道,具体可以涵盖不同的感觉或信息传递方式,如视觉、听觉、触觉、嗅觉和味觉等,每种感觉或信息传递方式都可以被称为一种模态。多模态(Multimodal)则是指涉及多种不同感觉或信息传递方式的情况。在多模态信息处理中,不同的感觉通道可以相互交互,以综合或增强对信息的理解和感知。

形式

多模态可能有以下三种形式:

  • 描述同一对象的多媒体数据。如互联网环境下描述某一特定对象的视频、图片、语音、文本等信息,这种是最常见的多模态的理解。
  • 来自不同传感器的同一类媒体数据。如医学影像学中不同的检查设备所产生的图像数据, 如CT、B超、核磁共振等。
  • 具有不同的数据结构特点、表示形式的表意符号与信息。包括了结构化和非结构化的数据单元,数学概念的多种表达方式,以及语义符号的不同形态。例如,可以用不同的数据格式来描述同一地理位置,如地理坐标、地图图像或文字描述。同样,数学中的某个概念可以以公式、逻辑符号、函数图或解释性文本的形式呈现。语义符号也具有多样性,如词向量、词袋、知识图谱等,都可用于表达相同的概念或语义。

我们再细说多模态数据。对于同一个对象,描述的方式可以是不同的(视角或领域不同),把描述这些数据的每一个领域或者视角叫做一个模态。通俗地理解,就是输入数据的类型不同,比如文本、图片、音频、视频等等。在视频分析中,视频可以分解为音频、图像、字幕等多模态信息;每个图片又可以表示成强度或者灰度、纹理等不同模态特征。

模态间的关联性:每个模态能为其余模态提供一定的信息,即模态之间存在一定的关联性。对不同模态数据进行同等处理或对所有模态特征进行简单的连接整合不能保证挖掘任务的有效性。

多模态机器学习是指基于不同模态的数据进行学习的算法,通常研究文本、语音和视觉。

一般方法

  • 表征(Representation)。找到某种对多模态信息的统一表示,分为协同表征Coordinated representations(每个模态各自映射然后用用相关度距离来约束表示)和联合表征Joint representations(多个模态一起映射);
  • 翻译(Translation)。一个模态映射到另一个模态,分为 example-based(有候选集,如检索任务)和 generative(Encoder-Decoder);
  • 对齐(Alignment)。找模态子成份之间的关系,如某词对应某区域。分显式对齐和隐式对齐,Attention 首当其冲;
  • 融合(Fusion)。整合信息,分为 model-agnostic(早晚融合)和 model-based(融合更深入);
  • 联合学习(Co-learning)。通过利用丰富的模态的知识来辅助稀缺的模态,分为parallel(如迁移学习),non-parallel(迁移学习,zero shot),hybrid 等。

多模态情感分析

多模态情感分析(MSA)是一种用于分析人类情感的方法,它通过同时分析文本、图像、语音等多种信息模态来识别情感。这种方法能够更全面地了解人类情感,因为它能捕捉到文本中难以表现的信息,例如面部表情和语音语气。

现阶段的多模态情感分析任务,大多站在如何有效地将多模态的特征信息进行融合这一角度考虑问题,目的是排除与情感分析任务无关的噪声数据,最大化利用与情感分析任务相关的多模态数据,包括单模态内的数据交互与模态间的数据交互,最终达到分析情感极性的目标。

在这里插入图片描述

多模态融合

1、特征级融合(早期融合)
特征级融合(有时称为早期融合)将每种形态(文本、音频或视觉)的所有特征组合成单个特征向量,在开始提取特征后就进行融合,然后将其输入到分类算法中。特征级融合的好处是,它允许不同的多模态特征之间的早期关联,从而可以更好地完成任务。

这种融合方法的缺点是时间同步,因为收集到的特征属于几种模态,在许多领域可能差异很大。因此,在融合过程发生之前,需要将特征转换为所需的格式。这种融合方法不能有效地表示模态内的动态,它无法过滤掉从多个模态收集的冲突或冗余数据。模型基本结构如下:

在这里插入图片描述


2、后期融合(晚期融合)
由于模态之间的数据的相关性较高,以及多模态数据源无法同步的问题,针对该场景,有了后期融合模型。在后期融合中,先对各模态的特征进行独立处理和分类,然后将分类结果融合形成最终的决策向量,即前期各模态数据单独训练得到预测结果,后期采用决策或者集成的方式将多模型的输出结果进行规则融合。因为融合发生在分类之后,这个过程被称为晚期融合。

由于早期融合的挑战,大多数学者选择在决策级融合中分别对每个模态的输入建模,最后整合单模态识别的结果。由于不同分类器产生的错误不相关,分类器融合优于单独的分类器。由于由许多模态产生的决策通常具有相同形式的数据,从不同模态接收的决策的融合比特征级的融合更容易。这种融合过程的另一个好处是,每个模态可以使用可用的最佳分类器或模型学习其特征。当分析任务需要使用不同的分类器时,决策级融合步骤中所有这些分类器的学习过程变得困难和耗时。模型基本结构如下:

在这里插入图片描述


3、混合融合
既然有了早期融合和晚期融合,为了平衡上述两种方法的优劣,于是有了混合融合模型,即针对数据同步、相关性不强的的模态进行早期融合,对相关性强、数据和更新不同的模态进行晚期融合。在一些数据集上,效果可能要好于早期融合和晚期融合。其模型结构如下:

在这里插入图片描述


4、张量融合
张量融合使用一个张量融合层(显式模拟单模态、双模态和三模态相互作用)构建了一个使用模态嵌入的3倍笛卡尔积,它将所需的训练样本数量降至最低。其中一种张量融合技术 MTFN 的体系结构如下图所示:

在这里插入图片描述


5、双模态融合
基于两两的模态表示,新的端到端网络实现了融合(相关增量)和分离(差异增量),这两个组件同时接受训练。由于模态之间已知的信息不平衡,该模型以两个双模态对作为输入。其中一个双模态融合架构 BBFN 结构模型如下图所示:

在这里插入图片描述


6、基于注意力机制的融合
背景信息提取和多模态融合是多模态情感分析和情感识别中最重要的两个难点。基于双向递归神经网络模型的多层次背景特征提取称为基于注意机制的融合。在话语层面,每种情态对情感和情感分类的贡献不同。因此,该模型建议多模态融合采用基于注意的互态融合,以适应每个互态话语的重要性。将上下文注意的单模态特征两个两个地连接起来形成双模态特征,然后将所有双模态特征合并在一起形成三模态特征向量,每一步融合后提取上下文特征。其中一种基于融合机制的模型MMHA 体系结构如下图所示:

在这里插入图片描述

以上是对多模态学习的简单介绍,我提及的都是比较基础的概念,大家可以参考其他大佬or奆佬的博客学习学习!


个人工作

接下来我简单介绍个人之前在实验室参与的科研项目(多模态情感分析),我参与的部分其实不多,但是整个流程基本了解,主要目的是助于大家更深入地了解多模态学习(同时让我巩固一下知识😂)。

数据集

在该工作中,我们自己构建了一个用于情感分析的印尼多模态视频数据集(命名为IMVD)。我所在实验室的成员从YouTube上收集了187个印尼语视频(人工找时间成本确实高)。该数据集涉及不同领域:餐厅/烹饪、名人、美容评论、品牌/产品、网络名人博主、在线教程、政治、健康、情感、个人经历、书籍推荐、社会事件和观点。

1、获取方法
这些视频是通过在YouTube人工检索找到的(搜索相关的印尼语单词),然后根据是否符合以下标准进行筛选: ①说话者的脸部应清晰地面对摄像头约1分钟;②视频中只有说话者的声音,背景噪声应尽可能小;③说话者表达了他/她的观点(明显或含蓄)。

所有选中的视频片段也都经过预处理。每段视频都要经过人工编辑,选择包含观点的片段,以确保生成的视频包含单一的主题。视频中经常会出现文字标题字幕或解释,有时还伴有动画。为了解决这一问题,我们对部分视频片段进行手动分割。

有些视频中的人物讲话时,镜头会被打断,或转向其他地方,从而影响视频质量。我们会在不影响讲话内容的前提下尽量减少这种情况的出现。不过操作起来有点难,我们的处理方式会对这些视频的情感分析造成影响。

此外,在该数据集中,我们还保留了一些印尼当地的特征,如戴头巾的女性,以及带有一点点BGM的视频(越来越多的YouTube博主喜欢给视频加BGM,增加了音频情感分析的难度)。

2、转录
对视频进行预处理后,我们再进行人工转录,以提取每段视频中的每一句话。许多印尼视频不包含字幕,因此我们请印尼语专业的同学帮忙口述每个视频,同时用ELAN工具获取文本内容。此外,我们还为每个句子进行情感标注,并根据说话者表达的意思和停顿来判断每个句子的开始和结束,然后手动划分每个句子在音频中的位置。之后,我们从获得的eaf文件中提取每句话的开始时间、结束时间、文本内容和情感标注。

每个视频包含4-16个语句,每个句子的长度从3s-20s不等。虽然人工转录耗费了大量人力和时间,但结果比较可靠,而且有助于同时收集其他数据。

3、情感标注
我们使用ELAN工具进行情感标注。标注是根据语句对应的视频、对应的音频和语句内容进行的。我们将每个语句标记为七种情感类别:恐惧、厌恶、愤怒、悲伤、中性、高兴和惊喜。在标注中,我们用数字来表示相应的情绪(-4 表示恐惧,-3 表示厌恶,-2 表示愤怒,-1 表示悲伤,0 表示中立,1 表示高兴,2 表示惊讶)。

4、音频特征提取
我们从每个视频片段的音轨中提取每个视频的音频,并根据文本句子的时间段进行切割,这样每个视频至少有3个子音频片段。同时,我们使用OpenSmile工具提取每段音频的音高和音强。

5、视频特征提取
根据文本句子的时间段,从每个完整视频中分割并提取子视频,因此许多子视频属于同一视频。每个视频片段中只有一个人,大部分时间他们都面对镜头。同时,我们使用dlib库提取了人脸的坐标特征,得到了68个关键点的定位,并使用几何方法计算相关特征点,得到了13个人脸情感特征。

后续

写到这突然发现,后续的工作我不太了解,当时主要是师兄师姐在负责。我们用了一个多模态情感分析任务的框架,尝试将该框架的数据集换成我们自己的数据集,这就涉及到数据对齐、模态融合等工作,可惜的是,当时我还年轻,没有参与后面的代码工作中。

不过通过这段经历,我对多模态这三个字有了浅薄的认识,意味着我开始入门多模态这一领域了。当时的我始终认为这个方向是相当有前景的,事实证明确实如此,有机会的话,我还会继续钻研多模态的相关研究。


脉冲神经网络

基本概念

脉冲神经网络(SNN)属于第三代神经网络模型,建立在脉冲神经元的基础上,模拟了神经元和突触状态,更接近于生物神经元,因此具有很大的潜力。SNN 使用脉冲——这是一种发生在时间点上的离散事件,而非常见的连续值。每个峰值由代表生物过程的微分方程表示出来,其中最重要的是神经元的膜电位。本质上,一旦神经元达到了某一电位,脉冲就会出现,随后达到电位的神经元会被重置。对此,最常见的模型是 Integrate-And-Fire(LIF)模型。此外,SNN 通常是稀疏连接的,并会利用特殊的网络拓扑。

SNN结构

SNN体系结构由脉冲神经元和互连的突触组成,这些突触由可调节的标量权重建模。实现SNN的第一步是使用基于速率的方法、某种形式的时间编码或群体编码将模拟输入数据编码为脉冲序列。如前所述,大脑中的生物神经元(和仿真的脉冲神经元类似)从神经网络中的其他神经元接收突触输入。生物神经网络既具有动作电位生成动力学,又具有网络动力学。与真正的生物网络相比,人工SNN的网络动力学得到了极大的简化。

那么,在这种情况下,假设建模的脉冲神经元具有纯阈值动力学是有用的。突触前神经元的活动调节突触后神经元的膜电位,当膜电位超过阈值时产生动作电位或脉冲。在具有大量的生物学细节和高计算成本的HH模型之后,人们提出了多种神经元模型,例如脉冲响应模型(SRM)、Izhikevich神经元模型以及泄漏整合放电(LIF)神经元。 LIF模型非常受欢迎,因为它可以捕获外部输入的直观特性,从而以明确的阈值在整个泄漏的细胞膜上累积电荷。(这两段比较学术化。。可以选择性跳读,大概了解即可)

脉冲神经网络中的脉冲序列通过突触连接传播。突触既可以是兴奋性的,可以在接受输入时增加神经元的膜电位,也可以是抑制性的,可以降低神经元的膜电位。学习的结果可以改变自适应突触的强度(权重)。 SNN的学习规则是开发多层(深度SNN的最具挑战性的组成部分,因为脉冲序列的不可微性限制了流行的反向传播算法。

脉冲神经网络分为三种拓扑结构,分别是前馈型脉冲神经网络、递归型脉冲神经网络和混合型脉冲神经网络。

1、前馈型
在多层前馈脉冲神经网络结构中,网络中的神经元是分层排列的,输入层各神经元的脉冲序列表示对具体问题输入数据的编码,并将其输入脉冲神经网络的下一层。最后一层为输出层,该层各神经元输出的脉冲序列构成网络的输出。输入层和输出层之间可以有一个或者多个隐藏层。

此外,在传统的前馈人工神经网络中,两个神经元之间仅有一个突触连接,而脉冲神经网络可采用多突触连接的网络结构,两个神经元之间可以有多个突触连接,每个突触具有不同的延时和可修改的连接权值。多突触的不同延时使得突触前神经元输入的脉冲能够在更长的时间范围对突触后神经元的脉冲发放产生影响。突触前神经元传递的多个脉冲再根据突触权值的大小产生不同的突触后电位。

2、递归型
递归型神经网络不同于多层前馈神经网络和单层神经网络,网络结构中具有反馈回路,即网络中神经元的输出是以前时间步长上神经元输出的递归函数。递归神经网络可以模拟时间序列,用来完成控制、预测等任务,其反馈机制一方面使得它们能够表现更为复杂的时变系统;另一方面也使得有效学习算法的设计及其收敛性分析更为困难。

传统递归人工神经网络的两种经典学习算法分别为实时递归学习算法和随时间演化的反向传播算法,这两种算法都是递归地计算梯度的学习算法。递归脉冲神经网络是指网络中具有反馈回路的脉冲神经网络,由于其信息编码及反馈机制不同于传统递归人工神经网络,由此网络的学习算法构建及动力学分析较为困难。递归脉冲神经网络可应用于诸多复杂问题的求解中,如语言建模、手写数字识别以及语音识别等。递归脉冲神经网络可分为两大类:全局递归脉冲神经网络和局部脉冲神经网络。

3、混合型
混合型脉冲神经网络包括前馈型结构又包含递归型结构。

SNN的优劣性

1、优势

  • SNN 的优势主要体现在用加法取代乘法,用bit数据取代整数/浮点数的高能效计算方式;
  • 能耗低、并行能力更强,以及可以在专门的神经形态计算平台上获得加速运算;
  • 速度上来说,在神经形态芯片上,SNN比ANN速度快很多;
  • 对于具有反馈连接,或者说复杂网络结构的SNN,其潜力可能是巨大的。SNN可以建立局部的学习机制,例如BCM、STDP 等学习算法,同时他们与ANN所用的BP算法最大的不同在于,学习所需的信息并不需要特定的传播路径,而是仅仅依赖于前后神经元自身的信息(包括但不限于膜电位、发放率、发放时间,以及各种低通滤波之后的信息)。这意味着,学习可以与运算同步进行(on-line learning),而不需要BP的前馈、反馈分离。与此同时,学习是可以通过自组织的方式进行的,在确保网络稳定性的同时,不需要一个“中心化”的指挥者(尽管注意力可能充当了一种“指挥者”的作用)。甚至,学习出来的连接可以是双向的,而BP算法限于其性质无法对反馈连接进行训练。通过局部的学习方式,建立起来的网络也拥有更高的复杂度。

2、劣势

  • 在当前的同步计算机制下,SNN完成一次前向推理通常需要几百至几千时间步长的模拟,导致了极大的额外延迟和能耗;
  • 在正常硬件上模拟SNN需要耗费大量算力,因为它需要模拟微分方程;
  • SNN目前还处于初级阶段,目前SNN和CNN很接近,甚至有研究者直接称之为S-CNN,因为只换了激活函数,如RELU→LIF;
  • 性能方面,目前ANN转SNN的方法可以接近ANN,但是很难超越;
  • SNN跟ANN比性能,是比不过的;
  • 在GPU或者CPU上,SNN的速度不比ANN好多少;
  • SNN的训练困难,尽管有无监督生物学习方法,如赫布学习(Hebbian learning)和STDP,但没有适合SNN的有效监督训练方法能够优于第二代神经网络的性能;
  • 由于脉冲训练不可微,无法在不损失准确时间信息的前提下使用梯度下降来训练SNN。

ANN和SNN对比

一般认为ANN是纯数字编码的,神经元输入输出都是数值(浮点数、定点数或者模拟值)。而SNN则是脉冲时间编码的,神经元的输入输出都是脉冲序列(0-1 向量)。这是两者的本质区别。除此以外,SNN在训练方法上也很不一样,常采用传说中的STDP学习规则,这种学习规则需要同时看前级和后级神经元的发放情况,共同决定权重的改变量。相反ANN一般都是BP学习规则,权重更新仅仅与后级神经元反馈回来的误差有关,而跟前级神经元无关。但是,学习规则并不是两者的本质区别,一方面两种网络都各自有多种训练方法,另一方面由于STDP一直不理想,现在很多SNN喜欢用BP来训练,然后再做一次ANN到SNN的映射。

不同模态特征转换为脉冲序列

1、图像特征→脉冲序列

图像特征指图像中所包含的有用信息,这些信息可以用来描述图像的形状、大小、颜色、纹理等。将图像特征转换为脉冲序列是一种数字图像处理技术,它通过将图像中的有用信息编码为一系列的比特位来实现。将图像特征转换为脉冲序列一般的几个步骤:

  • 对图像进行预处理,并通过图像分析技术提取图像中的有用信息。这一步可以通过图像滤波、图像边缘检测、图像分割等方法来实现;
  • 使用编码算法将图像特征编码为一系列比特位。这一步通常会选择一种适当的编码方案,并根据图像特征的特点进行编码;
  • 将编码后的比特位转换为脉冲序列。这一步通常会使用脉冲宽度调制(PWM)技术,将比特位转换为脉冲序列;
  • 对脉冲序列进行信号处理,并将它转换为可以通过信道传输的信号。这一步通常会使用信号滤波器、数字信号处理器等技术来实现。

2、音频特征→脉冲序列

音频特征指音频信号中所包含的有用信息,这些信息可以用来描述音频的频率、音色、时间和空间信息等。将音频特征转换为脉冲序列是一种数字信号处理技术,它通过将音频信号中的有用信息编码为一系列的比特位来实现。将音频特征转换为脉冲序列一般的几个步骤:

  • 对音频信号进行采样,并将其转换为数字信号。这一步需要使用数字信号处理器(DSP)或其他采样器来实现;
  • 使用信号分析技术提取音频信号中的有用特征。这一步通常会选择一种适当的分析方法,并根据音频信号的特点进行分析;
  • 使用编码算法将音频特征编码为一系列比特位。这一步通常会选择一种适当的编码方案,并根据音频特征的特点进行编码;
  • 将编码后的比特位转换为脉冲序列。这一步通常会使用脉冲宽度调制(PWM)技术,将比特位转换为脉冲序列。

3、文本特征→脉冲序列

文本特征指文本信息中所包含的有用信息,这些信息可以用来描述文本的语言、语法、语义等内容。将文本特征转换为脉冲序列是一种数据编码技术,它通过将文本信息编码为一系列的比特位来实现。将文本特征转换为脉冲序列一般的几个步骤:

  • 对文本信息进行预处理,并通过语言分析技术提取文本中的有用信息。这一步可以通过分词、词性标注、语法分析等方法来实现;
  • 使用编码算法将文本特征编码为一系列比特位。这一步通常会选择一种适当的编码方案,并根据文本特征的特点进行编码;
  • 将编码后的比特位转换为脉冲序列。这一步通常会使用脉冲宽度调制(PWM)技术,将比特位转换为脉冲序列;
  • 对脉冲序列进行信号处理,并将它转换为可以通过信道传输的信号。这一步通常会使用信号滤波器、数字信号处理器等。

上述转换方法是个人基于其他研究和当前的方法总结的,仅供参考。SNN我也接触过蛮长一段时间的,所以自己就摸索出了一些方法。目前SNN还处于萌芽阶段,网上相关的介绍也不多,希望我的经验对同样打算入门SNN的小伙伴有帮助。

再会

好了,写完这篇继续肝毕设了,到时有机会再和各位聊聊我毕设的工作哈哈哈哈哈,如果感觉这篇文章有用,点赞关注就不会迷路了💙

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【读书笔记】学习突围

最近在读一本书《学习突围》,作者是常青,知乎大V。对他的一些回答非常认同,受益匪浅,特此买来纸质书籍细细学习一番! 1.【学习心态】(拖延症、自控、执行力、专注力) 2.【学习方法】&#xff0…

解析c++空指针解引用奔溃

空指针解引用引起程序奔溃是c/c中最常见的稳定性错误之一。 显然并非所有使用空指针的语句都会导致奔溃,那什么情况下使用空指针才会引起程序奔溃呢?有一个判断标准:判断空指针是否会导致访问非法内存的情况,如果会导致访问非法内…

深度学习算法应用实战 | 利用 CLIP 模型进行“零样本图像分类”

文章目录 1. 零样本图像分类简介1.1 什么是零样本图像分类?1.2 通俗一点的解释 2. 模型原理图3. 环境配置4. 代码实战5. Gradio前端页面5.1 什么是 Gradio ? 6 进阶操作7. 总结 1. 零样本图像分类简介 1.1 什么是零样本图像分类? “零样本图像分类”(Zero-shot …

CentOS 6 制作openssl 1.1.1w rpm包 —— 筑梦之路

参考资料: CentOS 7 制作openssl 1.1.1w 版本rpm包 —— 筑梦之路_centos7 openssl 1.1.1 rpm包-CSDN博客 直接上spec文件如下: Name: openssl Version: 1.1.1w Release: 1%{?dist} Summary: Utilities from the general purpose cryptography li…

yolo 分割label格式标注信息图片显示可视化查看

参考: https://github.com/ultralytics/ultralytics/issues/3137 https://blog.csdn.net/weixin_42357472/article/details/135218349?spm=1001.2014.3001.5501 需要把坐标信息在图片上显示 代码 1)只画出了坐标边缘 import cv2 import numpy as np from random impor…

上海雏鸟科技无人机灯光秀跨年表演点亮三国五地夜空

2023年12月31日晚,五场别开生面的无人机灯光秀跨年表演在新加坡圣淘沙、印尼雅加达、中国江苏无锡、浙江衢州、陕西西安等五地同步举行。据悉,这5场表演背后均出自上海的一家无人机企业之手——上海雏鸟科技。 在新加坡圣淘沙西乐索海滩,500架…

【读书笔记】网空态势感知理论与模型(七)

通过网络级对象依赖关系揭示0Day攻击路径 1. 研究动机 0Day攻击是攻击者和防御者之间信息不对称的结果。赛门铁克研究人员认为,典型的0Day攻击平均隐藏312天才会被觉察。 受到SKRM模型启发,Patrol系统以全局视野来调查在某一个路径上的0Day攻击行为。从…

16_线程池

文章目录 完整的线程状态转换图理论层面代码层面 线程池3种线程池线程池的使用 多线程的实现方式三:实现Callable接口单例设计模式(线程安全) 完整的线程状态转换图 理论层面 代码层面 线程池 提高效率 3种线程池 Executors: 线程工具类,…

统一网关 Gateway【微服务】

文章目录 1. 前言2. 搭建网关服务3. 路由断言工厂4. 路由过滤器4.1 普通过滤器4.2 全局过滤器4.3 过滤器执行顺序 5. 跨域问题处理 1. 前言 通过前面的学习我们知道,通过 Feign 就可以向指定的微服务发起 http 请求,完成远程调用。但是这里有一个问题&am…

【JAVA】线程的run()和start()有什么区别?

🍎个人博客:个人主页 🏆个人专栏: JAVA ⛳️ 功不唐捐,玉汝于成 目录 前言 正文 run() 方法: start() 方法: 区别总结: 结语 我的其他博客 前言 多线程编程是Java中一个重要…

生成式 AI 如何重塑软件开发流程和开发工具?

生成式AI正在重塑开发流程和开发工具,通过自动化和优化软件开发过程,提高开发效率和质量。它可以帮助开发人员快速生成代码、测试和部署应用程序,同时减少错误和缺陷。此外,生成式AI还可以帮助开发人员快速理解和解决复杂的技术问…

Vulnhub靶机:Corrosion1

一、介绍 运行环境:Virtualbox 攻击机:kali(10.0.2.15) 靶机:corrosion:1(10.0.2.12) 目标:获取靶机root权限和flag 靶机下载地址:https://www.vulnhub.com/entry/c…

Vue3-46-Pinia-获取全局状态变量的方式

使用说明 在 Pinia 中,获取状态变量的方式非常的简单 : 就和使用对象一样。 使用思路 : 1、导入Store;2、声明Store对象;3、使用对象。 在逻辑代码中使用 但是 Option Store 和 Setup Store 两种方式定义的全局状态变量…

0109作业

1> 思维导图 2> 使用手动连接,将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中,在自定义的槽函数中调用关闭函数 将登录按钮使用qt5版本的连接到自定义的槽函数中,在槽函数中判断ui界面上输入的账号是否为"admin&quo…

设计与实现基于Java+MySQL的模拟银行ATM操作系统

课题背景 随着现代经济的发展,电子支付和自动化银行服务已成为人们生活中不可或缺的一部分。自动取款机(ATM)作为一种常见的自助服务设备,使用户能够方便地进行资金的存取、查询余额、转账等操作,而无需到银行柜台。 …

浅淡A100-4090-性价比

大模型的训练用 4090 是不行的,但推理(inference/serving)用 4090 不仅可行,在性价比上还能比 H100 稍高。4090 如果极致优化,性价比甚至可以达到 H100 的 2 倍。 -------------------- FP64(双精度浮点&a…

pycharm社区版配置flask开发环境

新建配置文件,类型选择Shell Script 设置Execute中flask.exe的路径 设置options :--appflask_app.py run --port5000 --debug 设置working 路径 设置环境变量FLASK_APPflask_app.py;FLASK_ENVdevelopment 注意:FLASK_APPflask_app.py和上…

automa插件使用的一些经验

automa,我承认我写不出来这样的代码,早年的时候公司想过做一个爬虫的工具,那个时候RPA还没有火,虽然下载也没怎么火.RPA再牛,还是需要工程师,想一点经验都没有人来做,还是理解不了。能够简化数据…

Java接口的解析

在 Java 中,接口(Interface)是一种抽象类型,用于定义一组相关方法的契约。接口只包含方法的签名,而没有方法的实现。实现接口的类必须提供接口中定义的方法的具体实现。 以下是对 Java 接口的解析: 这只是…

【uniapp】遇到的一些问题

一、小程序中textarea ios样式不生效的方法 默认有内边距,加个disable-default-padding"true" 二、uni-data-picker循环使用,一个改了全局的值 换成了uni自带的picker,下面括号里必须有默认值,为空字符串的时候&…