第四十五周:文献阅读

news2024/11/17 23:53:29

目录

摘要

Abstract

文献阅读:基于注意力的双向LSTM和编码器-解码器的水质预测

现有问题

提出方法

创新点

方法论

1、EMD(经验模态分解)

2、VMD(变分模态分解)

3、VBAED模型

研究实验

数据集

数据预处理

评估指标

基准方法

实验结果分析

VDM实现(python)

总结


 

摘要

本周阅读的文献《Accurate water quality prediction with attention-based bidirectional LSTM
and encoder–decoder》中提出了一种结合了变分模式分解(VMD),双向输入注意力机制,具有双向LSTM(BiLSTM)的编码器,以及具有双向时间注意力机制和BiLSTM的解码器的混合预测方法VBAED,用来预测水质时间序列。VBAED从定义上看就是一种编码器-解码器模型,首先采用VMD对预测因子的历史数据进行分解,其分解结果与其他特征一起沿着作为输入。然后,采用双向输入注意机制,从两个方向的输入特征添加权重。VBAED采用BiLSTM作为编码器,从输入特征中提取隐藏特征。最后,通过具有双向时间注意机制的BiLSTM解码器获得预测结果。

Abstract

The literature "Accurate water quality prediction with attention based bidirectional LSTM and encoder decoder" read this week proposes a hybrid prediction method VBAED that combines Variational Mode Decomposition (VMD), bidirectional input attention mechanism, encoder with bidirectional LSTM (BiLSTM), and decoder with bidirectional time attention mechanism and BiLSTM to predict water quality time series. VBAED is defined as an encoder decoder model, which first uses VMD to decompose the historical data of prediction factors, and its decomposition results are used as input along with other features. Then, a bidirectional input attention mechanism is adopted to add weights from the input features in both directions. VBAED uses BiLSTM as the encoder to extract hidden features from input features. Finally, the prediction results are obtained through a BiLSTM decoder with bidirectional temporal attention mechanism.

文献阅读:基于注意力的双向LSTM和编码器-解码器的水质预测

Redirectinghttps://doi.org/10.1016/j.eswa.2023.121807时间:2023

现有问题

  1. 由于监测技术的发展,水质数据变得非线性和不稳定,并受到许多因素的影响。传统的统计方法不能很好地感知细微的水质变化和捕捉大尺度水质序列的非线性特征,SVR等非线性模型在处理大量数据时会消耗大量资源。此外,大多数普通神经网络无法捕捉长期依赖性,
  2. 作为rnn的典型变体,LSTM可以避免传统rnn中存在的梯度爆炸和梯度消失。它可以有效地捕获长依赖关系,在自然语言处理和时间序列预测中经常用于编码。然而,LSTM不能从后往前编码信息。在时间序列预测中,从后到前的信息是隐藏的,这是LSTM作为编码器无法获得的。
  3. LSTM和编码器-解码器被广泛用于预测时间序列数据。但是随着水质数据的增加,它变得不稳定和高度非线性,尽管LSTM捕获了长期依赖性,但对于多特征预测任务,它不能区分不同特征的重要性。

提出方法

本文提出了一种混合预测方法VBAED来预测水质时间序列,VBAED结合了变分模式分解(VMD),双向输入注意力机制,具有双向LSTM(BiLSTM)的编码器,以及具有双向时间注意力机制和BiLSTM的解码器。VBAED的定义是一种编码器-解码器模型,它使用VMD作为模式分解,将BiLSTM与双向注意力机制相结合。具体地说,VBAED首先采用VMD对预测因子的历史数据进行分解,其分解结果与其他特征一起沿着作为输入。然后,采用双向输入注意机制,从两个方向的输入特征添加权重。VBAED采用BiLSTM作为编码器,从输入特征中提取隐藏特征。最后,通过具有双向时间注意机制的BiLSTM解码器获得预测结果。

创新点

  1. 采用BiLSTM作为编码器,从两个方向捕获特征。BiLSTM通过双向输入注意力机制进行改进,从两个方向独立地向输入添加注意力权重。
  2. 采用BiLSTM作为解码器,并结合双向时间注意机制来捕获长期依赖性,从而自适应地选择编码器在所有时间步长上的重要隐藏状态,并从两个方向对其进行解码

方法论

1、EMD(经验模态分解)

在实际测量数据时容易受外界环境影响,导致经在测量信号中产生趋势项。趋势项是指信号中周期大于采样长度的频率成分,通常表现为线性的或者慢变的趋势误差。提取和消除信号中存在的趋势项是信号预处理的一个重要环节,因为趋势项会严重影响信号时域相关分析和频域功率谱估计精度,严重的趋势项干扰会使低频谱严重失真。目前提取趋势项的方法例如差分法、低通滤波法和最小二乘拟合法等。这些方法通常需要预先明确信号中趋势项的类型,如线性趋势项、多项式或指数趋势项等,不适用于复杂变化的趋势项提。EMD方法是一种针对非平稳信号的分析方法。利用EMD进行趋势项提取可不考虑趋势项的类型,具有自适应性因此适用范围更广泛。

有模态函数 IMF

EMD过程实质上是对非平稳信号进行平稳化处理的一种手段,其结果是将信号中不同尺度的波动和趋势进行逐级分解,产生一系列具有不同特征尺度的数据序列,每一个序列称为一个固有模态函数 IMF。每一个 IMF必须满足2个条件:

  1. 在整个时程内极值点个数与过零点个数相等或最多相差1;
  2. 在任意时刻,由局部极大值点形成的上包络线和由局部极小值点形成的下包络线的平均值为零,即上、下包络线相对于时间轴局部对称。

4c7d6bb733f64c8b9d6425c21c0edd2e.jpeg

 EMD过程

cc9ae29429df4b1b979ba238e56b98d8.png

EMD的好处

  1. 对于一段未知信号,不需要做预先分析与研究,就可以直接开始分解。
  2. 这个方法会自动按照一些固模式按层次分好,而不需要人为设置和干预。 

EMD方法的缺陷 

  1. 提取趋势项必须要求原始信号本身满足可分解条件,如果可分解条件得不到满足,则会在 EMD 过程中产生模态混叠,导致不同频率成分共存于同一个 IMF 分量中,此时用分解余量作为趋势项会使趋势项提取不完全。
  2. 端点效应问题:在 EMD 分解中采用三次样条法求上下包络的平均值,由于所分析信号长度有限,信号的两端点不能确定是极值。使得上下包络在信号两端附近严重扭曲。端点效应同样会波及到分解余量中,导致趋势项提取不够精确。

2、VMD(变分模态分解)

VMD参考文献:Variational Mode Decompositionhttps://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=6655981

VMD的作用是将构成一个信号的多个子信号分解出来。如下图所示,信号(a)经过VMD后分解成了三个模态(也即三个子信号),这三个模态正是构成信号(a)的三个子信号。

9bb64228b201432192324ed6a7ae9ba2.png

变分模态分解可以很好抑制EMD方法的模态混叠现象(通过控制带宽来避免混叠现象)。与EMD原理不同,该方法假设任何的信号都是由一系列具有特定中心频率、有限带宽的子信号组成(即IMF)。通过对变分问题进行求解,得到 中心频率与带宽限制,找到 各中心频率在频域中对应的有效成分,得到模态函数。VMD 的分解过程就是变分问题的求解过程,其算法主要包括 变分问题的构造和 变分问题的求解

VMD的求解过程主要包含两点约束:

  1. 要求每个模态分量中心频率的带宽之和最小;
  2. 所有的模态分量之和等于原始信号。

变分问题的构造

所谓变分问题,就是求泛函的极值。在VMD中,泛函指的是VMD约束变分模型,而要求的极值,就是“每个模态分量中心频率的带宽之和最小”。 

dce67cc3fe3c4703815912da89891a55.png

上式表示的变分问题,即求取“每个模态分量中心频率的带宽之和最小”时的模态函数eq?u_%7Bk%7D和中心频率eq?w_%7Bk%7D,其中eq?u_%7Bk%7D%3D%5Cbegin%7BBmatrix%7D%20u_%7B1%7D%2Cu_%7B2%7D%2C...%2Cu_%7Bk%7D%20%5Cend%7BBmatrix%7Deq?w_%7Bk%7D%3D%5Cbegin%7BBmatrix%7D%20w_%7B1%7D%2Cw_%7B2%7D%2C...%2Cw_%7Bk%7D%20%5Cend%7BBmatrix%7D。 

变分问题的求解

利用二次惩罚项和拉格朗日乘子法的优势,引入了增广拉格朗日函数,将上述约束变分问题转变为非约束变分问题,其中,eq?%5Calpha是罚参数,eq?%5Clambda是Lagrangian乘子。

ac7fd2da946b454285211adb234dba1f.png

首先初始化eq?u_%7Bk%7D 、eq?w_%7Bk%7Deq?%5Clambda,然后通过迭代对于所有eq?%5Comega%20%5Cgeq%200,根据VMD算法公式更新eq?u_%7Bk%7D 和 eq?w_%7Bk%7D

更新模态函数eq?u_%7Bk%7D

1197b1b2f9c84009ac967a479601ea77.png

更新中心频率eq?w_%7Bk%7D

a3366963863c42498cc90660e4a07c73.png

 根据相关的算法更新拉格朗日乘数eq?%5Clambda

b240ce1c26ec403986021e09b1ed70af.png

不断重复更新直到满足下面的迭代约束条件,即对于所有的eq?%5Comega%20%5Cgeq%200,解析信号的单边谱只包含非负频率。

1bf06cf637814c4bae7492fe10ce2d52.png

则停止迭代,否则继续迭代更新三个参数的值,以上便是求解每一个模态的单步骤。VMD可以分解获得包含多个不同频率尺度且相对平稳的模态(子序列),适用于非平稳性的序列。

VMD的好处

  1. 相对于EMD,VMD对采样和噪声具有更强的鲁棒性。
  2. 相对于EMD,VMD在分解复杂信号方面效果更好。
  3. VMD技术具有可以确定模态分解个数的优点,其自适应性表现在根据实际情况确定所给序列的模态分解个数。

VMD的缺陷 

  1. 与EMD一样,需要手工设定模态个数,模态个数过多过少都会影响分解精度。

3、VBAED模型

VBAED通过VMD对水质时间序列中某一预测因子的历史数据进行分解,降低了输入数据的非线性和波动性,提高了预测精度。所提出的双向输入注意机制可以自适应地选择输入中的重要特征。BiLSTM可以捕获更多的长期依赖关系。双向时间注意机制提取时间维度上的重要特征,并BiLSTM作为解码器获得预测值。

8d4673b6a62c431e8872bc0786682348.png

输入双向注意力机制

为了更好地捕捉重要特征,本文为BiLSTM设计了一个输入注意机制。注意力机制可以自适应地从大量的特征中选择重要的特征并关注它们。注意力权重表示信息的重要性。由于LSTMF和LSTMB是两个具有独立参数的LSTM单元,因此我们分别为它们添加了输入注意力机制层。前向输入注意层用于LSTMF,后向输入注意层用于LSTMB。LSTMF和LSTMB从不同的方向进行编码,并且输入注意机制侧重于不同的特征。为它们中的每一个独立地设计单独的输入注意机制的优点在于它们可以自适应地提取两个方向上的重要特征,这可以提高模型的鲁棒性和预测精度。

2589026cfebf4f35a88b11a579149fc5.png

在BiLSTM中的输入注意力机制中,对于特征X,我们引用LSTMF单元中的eq?h_%7Bt-1%7D%5E%7BF%7Deq?c_%7Bt-1%7D%5E%7BF%7D 去构建前向输入注意机制,引用LSTMB单元中的 eq?h_%7Bt+1%7D%5E%7BB%7Deq?c_%7Bt+1%7D%5E%7BB%7D 去构建后向输入注意机制。其中eq?a_%7Bt%7D%5E%7BF_%7B1%7D%7D 和 eq?a_%7Bt%7D%5E%7BB_%7B1%7D%7D 分别表示在时间步长 eq?t 的前向注意力权重和后向注意力权重, 

BiLSTM模块

BiLSTM由两个独立的LSTM单元组成。第一个LSTM单元称为LSTMF,它从前到后对信息进行编码。第二个LSTM单元称为LSTMB,它从后到前对信息进行编码。然后,将来自两个方向的信息进行组合,得到时间步长t处编码器的隐藏状态eq?h_%7Bt%7D%5E%7BF%7D。在时间步t,LSTMF基于在时间步t-1的隐藏状态eq?h_%7Bt-1%7D%5E%7BF%7D和单元状态eq?c_%7Bt-1%7D%5E%7BF%7D,以及Encoder的输入eq?%5Ctilde%7BX%7D_%7Bt%7D%5E%7BF%7D三者计算它的隐藏状态eq?h_%7Bt%7D%5E%7BF%7D。LSTMB基于隐藏状态eq?h_%7Bt+1%7D%5E%7BB%7D、单元状态eq?c_%7Bt+1%7D%5E%7BB%7D和输入eq?%5Ctilde%7BX%7D_%7Bt%7D%5E%7BB%7D计算其隐藏状态eq?h_%7Bt%7D%5E%7BB%7D。因此前向隐藏状态eq?h_%7Bt%7D%5E%7BF%7D和后向隐藏状态eq?h_%7Bt%7D%5E%7BB%7D组合成BiLSTM的隐藏状态。LSTMF和LSTMB是两个独立的LSTM单元,它们不共享参数。

48061cc8a3ad4fff91fa4fd76d367ec4.png

模型总流程 

f2788649fca843a4be3efc3c41cd245c.png

研究实验

数据集

为了评估不同时间序列预测方法的性能,采用了两种不同的真实数据集,即BTH数据集和亚拉巴马数据集,分别为多特征和单特征数据集。

  1. BTH数据集收集自2018年9月至2021年12月期间京津冀地区河流中的自动水质站。每4 h采集一次,涉及pH、TN、TP。在实验中,TN被用作基础事实,pH和TP被用作特征。对于少量的缺失值,采用线性插值的方法进行补充,总共有7200个数据样本。我们将前5000个数据样本作为训练集,接下来的1000个数据样本作为验证集,剩下的1200个数据样本作为测试集。
  2. 亚拉巴马数据集是2017年5月至2019年8月美国亚拉巴马河一段的水质数据。数据收集间隔为一小时。与BTH数据集不同,亚拉巴马数据集只有一个DO特征,即亚拉巴马数据集中的目标值。对于数据集中的少量缺失值,采用线性插值方法进行补齐。在亚拉巴马数据集中,我们总共有19862个数据样本。在这项工作中,我们将前15889个数据样本作为训练集,随后的1986个数据样本作为验证集,最后的1987个数据样本作为测试集。

550aa1fe329c4aa6b1f253794a791ab5.png

数据预处理

采用Savitzky Golay(SG)滤波器对BTH数据集中TN、TP和pH的时间序列数据进行平滑处理,以减少噪声的干扰和局部异常值对整体趋势的影响。对于亚拉巴马数据集,我们直接预测目标DO值而不进行任何预处理。

评估指标

为了验证VBAED的性能,采用三个评估指标来比较预测精度,即均方根误差(RMSE)、平均绝对误差(MAE)和决定系数(R2)。

基准方法

ARIMA(2019)、SVR(2020)、极端梯度提升(2021)、反向传播(2016),LSTM(2019),BiLSTM(2022)和DARNN(2017年)。除此之外还将VMD添加到每个基线方法中以分解数据,从而产生VMD-LSTM(2019)、VMD-BiLSTM和VMD-DA-RNN。

实验结果分析

1、验证VBAED的准确性

用训练集对VBAED进行训练,对于BTH数据集,预测曲线和地面实况曲线几乎相同,这表明VBAED在多特征数据集中是有效的。对于亚拉巴马数据集,VBAED在单特征数据集中也工作得很好。

fcfd3888f0b343f79ca336c9f84934b1.png

在BTH数据集上的水质时间序列预测结果

d94d686b2bcd4dcba08b9351c1e7c3ac.png

在亚拉巴马数据集上的水质时间序列预测结果

 

2、验证VBAED的鲁棒性和有效性

为了进一步,采用RMSE,MAE和R2将其与其他10个对等体进行比较,(DA-RNN只能用于多特征数据集)结果表明,VBAED在BTH和亚拉巴马数据集上都获得了最好的结果。此外,在BTH数据集中,当不采用VMD分解时,LSTM,BiLSTM和DA-RNN的RMSE分别为0.2093,0.1657和0.1259。采用VMD分解后,VMD-LSTM、VMD-BiLSTM和VDM-DARNN的RMSE分别为0.1688、0.1475、0.1156。在亚拉巴马数据集中,当不采用VMD分解时,LSTM和BiLSTM的RMSE分别为0.1957和0.1866。采用该方法后,VMD-LSTM和VMD-BiLSTM的RMSE分别为0.1724和0.1555。结果表明,VMD有效地把握了水质数据的演变趋势,并将其分解为关键信息模式和噪声模式,有助于模型训练,提高了预测精度。在BTH和亚拉巴马数据集上,LSTM的RMSE都比BiLSTM差,这表明双向LSTM结构克服了传统LSTM容易忽略从后到前的信息,导致相关信息丢失的局限性。

f89dfc975dd846aba1ff0681d0ad653b.png7648cc25c44a4469aab3b0d142cb8c57.png

3、验证双向输入注意机制和双向时间注意机制的效果

在两个数据集上进行了消融实验。仅应用双向输入注意机制或双向时间注意机制会导致预测精度显著降低。在BTH和亚拉巴马数据集上,采用双向输入注意的模型的RMSE分别为0.0705和0.1313,而采用双向时间注意的模型的RMSE分别为0.0768和0.1368。这表明双向输入注意机制在VBAED中比双向时间注意机制起着更重要的作用。对于原始的长序列数据,网络很难直接捕捉到重要信息。双向输入注意机制使VBAED能够区分原始特征的重要性,从而加强重要特征,削弱不重要特征。此外,它使VBAED中的编码器能够获得更多有用的信息。VBAED采用双向输入注意机制提取相关特征,采用双向时间注意机制选择所有时间步的相关隐藏状态。因此,VBAED在BTH和亚拉巴马数据集的所有方法中实现了最高的预测精度。

c7d33694878045b49817e055337253ef.png

05299361124a4ca2852b73a4b15cd22f.png

VDM实现(python)

import numpy as np
import matplotlib.pyplot as plt
from vmdpy import VMD

# 时域0到T
T = 1000
fs = 1/T
t = np.arange(1,T+1)/T
#通过指定起始值和终值来创建一维数组
freqs = 2*np.pi*(t-0.5-fs)/(fs)

#中心频率
f_1 = 2
f_2 = 20
f_3 = 40

#模型
v_1 = (np.cos(2*np.pi*f_1*t))
v_2 = 1/4*(np.cos(2*np.pi*f_2*t))
v_3 = 1/16*(np.cos(2*np.pi*f_3*t))

#用于可视化
fsub = {1:v_1,2:v_2,3:v_3}
wsub = {1:2*np.pi*f_1,2:2*np.pi*f_2,3:2*np.pi*f_3}
# 包括噪声的复合信号
f1=v_1 + v_2 + v_3
f = v_1 + v_2 + v_3 + 0.1*np.random.randn(v_1.size)
f_hat = np.fft.fftshift((np.fft.fft(f)))

fig1 = plt.figure()
plt.xlim((0,1))
for key, value in fsub.items():
    plt.subplot(3,1,key)
    plt.plot(t,value)
fig1.suptitle('Original input signal and its components')


#VDM的参数
alpha = 2000       
tau = 0.           
K = 3             
DC = 0           
init = 1          
tol = 1e-7
#运行实际的VMD代码
u, u_hat, omega = VMD(f, alpha, tau, K, DC, init, tol)
# 分解模式的简单可视化
plt.figure()
plt.plot(u.T)
plt.title('Decomposed modes')

fig4 = plt.figure()
plt.loglog(freqs[T//2:], abs(f_hat[T//2:]), 'k:')
plt.xlim(np.array([1, T//2])*np.pi*2)
for k in range(K):
    plt.loglog(freqs[T//2:], abs(u_hat[T//2:,k]), linestyles[k])
fig4.suptitle('Spectral decomposition')
#画出分解的三个子信号
plt.legend(['Original','1st component','2nd component','3rd component'])

fig5 = plt.figure()
for k in range(K):
    plt.subplot(3,1,k+1)
    plt.plot(t,u[k,:], linestyles[k])
    plt.plot(t, fsub[k+1], 'k:')
    plt.xlim((0,1))
    plt.title('Reconstructed mode %d'%(k+1))
    
plt.show()

fd424c860d9c40d0827a570c9e438dae.png 1663067629fd48f9a1193355e68971de.png

c65b121838f440af9b0a5a7fcdcee77f.png

 

总结

这周通过文献学习了解了EMD和VMD两种模态分解方法,模态分解方法可对预测因子的历史数据进行分解,其中VMD分解可以降低时间序列的非线性和波动性,不同于EMD,它可以避免模式混合的负面影响。不同的模态分量对预测结果有不同的影响,通过将它们分离并与输入注意机制相结合,VBAED具有自适应选择重要模式的能力,从多个模式中过滤掉噪声模式,并关注包含重要信息的模式,这将引导神经网络更专注地学习更复杂的特征,从而能够提高预测精度。

 

 

 

 

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

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

相关文章

AC和AP wlan使用案例

关于AC和AP的一篇 拓补图: AC1 sysn AC vlan 10int g0/0/1 p l t p t a v 10 port trunk pvid vlan 10 q int g0/0/2 p l t p t a v 10 port trunk pvid vlan 10 q int vlan 10 ip add 192.168.10.1 24 q dhcp enable int vlan 10 dhcp select interface q capwa…

算法打卡day24|回溯法篇04|Leetcode 93.复原IP地址、78.子集、90.子集II

算法题 Leetcode 93.复原IP地址 题目链接:93.复原IP地址 大佬视频讲解:复原IP地址视频讲解 个人思路 这道题和昨天的分割回文串有点类似,但这里是限制了只能分割3次以及分割块的数字大小,根据这些不同的条件用回溯法解决就好啦 解法 回溯…

三.寄存器(内存访问)

1.内存中字的存储 2.并不是所有cpu都支持将数据段送入段寄存器,所以有时候用个别的寄存器先把数据段存储起来,再把该寄存器mov到段寄存器。 3.字的传送 4.栈 5.栈机制 举例说明 6.栈顶超界问题 push超界 pop超界 7.栈段

管理自由,体验简单,使用安全 | 详解威联通全套多用户多权限管理方案【附TS-466C产品介绍】

管理自由,体验简单,使用安全 | 详解威联通全套多用户多权限管理方案【附TS-466C产品介绍】 哈喽小伙伴们好,我是Stark-C~。今天我们来解决一个之前评论区多次被提及的问题--多用户权限管理。 对于我们NAS用户来说,基本都会面临这…

Windows server 2008 R2 在VMware虚拟机上的安装

Windows server 2008 R2 在VMware虚拟机上的安装 准备工作VMware 新建并配置虚拟机安装和启动Windows server 2008 R2 准备工作 Windows server 2008 R2 ISO镜像的下载:Windows server 2008 R2 ISO VMware 新建并配置虚拟机 第一步,点击新建虚拟机 第…

leetcode每日一题2671

目录 一.题目原型 二.思路解析: 三.具体代码实现: 一.题目原型 二.思路解析: 其实我们可以用两个哈希表来解决这道题,一个哈希表hash1用来存这个数字出现了几次。另一个哈希表hash2用来存出现了几次的次数有几次,由于…

MySQL的日志:undo log、redo log、binlog有什么作用

目录 从一个update语句说起 undo log 为什么需要undo log undo log 版本链 undo log 是如何持久化到磁盘? redo log 为什么需要redo log redo的组成 redo Log的刷盘策略 redo Log循环写 crash-safe能力 binlog 为什么需要 binlog ? binlog与redo lo…

unity学习(69)——多人位置同步

简单的很,每个客户端向服务器发送位置信息,服务器再把这些位置信息发送给其他客户端。 1.客户端发送。 1.1在SocketModel脚本中添加一个新的类MoveDTO public class MoveDTO {public string Id{get; set;}public int Dir{get;set;}public Assets.Mode…

数据分析和机器学习库Pandas的使用

Pandas 库是一个免费、开源的第三方 Python 库,是 Python 数据分析和机器学习的工具之一。Pandas 提供了两种数据结构,分别是 Series(一维数组结构)与 DataFrame(二维数组结构),极大地增强的了 …

2024-Spring IOC 和 AOP源码分析(上篇)

前言:笔者最近面了几次大厂。。。开局Spring源码暴击 之前看过忘了写篇总结。。。 1、介绍一下Spring 核心组件: 常用模块: 常用注解: 2、说一下SpringIOC原理 概念:Spring 通过一个配置文件描述 Bean 及 Bean …

登录校验:JWT令牌、Filter、Interceptor

JWT: 全称:JSON Web Token 定义了一种简洁的、自包含的格式,用于在通信双方以json数据格式安全的传输信息,由于数字签名的存在,这些信息是可靠的。 组成: Header(头部):(“alg&q…

基于物理的实时渲染 -- PBR

简介 PBR,或者用更通俗一些的称呼是指基于物理的渲染(Physically Based Rendering),它指的是一些在不同程度上都基于与现实世界的物理原理更相符的基本理论所构成的渲染技术的集合。正因为基于物理的渲染目的便是为了使用一种更符合物理学规律的方式来模…

如何申请代码签名证书

代码签名证书也是数字证书的一种,其主要作用是对可执行脚本、软件代码和内容进行数字签名的数字证书。代码签名证书用于验证开发者身份真实性、保护代码的完整性。用户下载软件时,能通过数字签名验证软件来源,确认软件、代码没有被非法篡改或…

2024 年广西职业院校技能大赛高职组《云计算应用》赛项赛题第 1 套

#需要资源或有问题的,可私博主!!! #需要资源或有问题的,可私博主!!! #需要资源或有问题的,可私博主!!! 某企业根据自身业务需求&#…

数据结构和算法:树

二叉树 与链表类似,二叉树的基本单元是节点,每个节点包含值、左子节点引用和右子节点引用。 /* 二叉树节点结构体 */ struct TreeNode {int val; // 节点值TreeNode *left; // 左子节点指针TreeNode *right; // 右子节点指针TreeNode(int x) : val(x),…

项目管理证书有何用?这些PMP考试机会一定要抓住

项目管理证书有何用?这些PMP考试机会一定要抓住! PMP认证的中文全称是“项目管理专业人士资格认证”,是目前国际上声誉较高并且含金量比较高的项目管理证书之一,本人有幸考过,也通过PMP认证成功转岗,应该也…

每日一题 --- 反转链表[力扣][Go]

反转链表 题目:206. 反转链表 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1: 输入:head [1,2,3,4,5] 输出:[5,4,3,2,1]示例 2: 输入:head [1,2] 输出&a…

mybatis实践篇(二)

自定义类型处理器(TypeHandler) 实体 package com.wyl.mybatis.entity;import java.util.Date;/*** Description 省市区-字典* Author wuyilong* Date 2024-02-26*/public class FullCity {private static final long serialVersionUID 1L;/*** 主键I…

python之(19)CPU性能分析常见工具

Python之(19)CPU性能分析常见工具 Author: Once Day Date: 2024年3月24日 一位热衷于Linux学习和开发的菜鸟,试图谱写一场冒险之旅,也许终点只是一场白日梦… 漫漫长路,有人对你微笑过嘛… 全系列文章可参考专栏:Python开发_Once-Day的博客…

车载测试 UDS诊断 CANoe使用(线下实操项目)

本周末2天的时间,可以线下带大家对车载项目: uds诊断进行实操训练和CANoe工具的灵活使用 本博主从事新能源汽车的研发部,主要是嵌入式方面的,对车载测试的底层逻辑非常熟悉。 需要项目或者CANoe工具实操的可以关注并私信我