第四十五周:文献阅读

目录

摘要

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.mzph.cn/news/767948.shtml

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

相关文章

力扣15. 三数之和

思路:先对数组排序,然后确定第一个数nums[i],再新建左右双指针; 寻找的3元组,a,b,c,即是 nums[i], nums[letf], nums[right] 数组1:-1,-1,-1,0,1,2; 前面3个-1,只有一个-1是有用的,需…

Android开发系列全套课程

教程介绍 本系列课程面向有java基础,想进入企业从事android开发的计算机专业者。学习搭配实战案例,高效掌握岗位知识。 学习地址 链接:https://pan.baidu.com/s/10p2NGYLM3NcCZwYjJZzfzw?pwdk4p0 提取码:k4p0

【智能算法】JAYA算法原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献 1.背景 2016年, Rao等人受到趋利避害性质启发,提出了JAYA算法(JAYA梵文意思即胜利)。 2.算法原理 2.1算法思想 JAYA基于趋利避害性质,表达式十…

Markdown的基本撰写和格式语法

基本撰写和格式语法 使用简单的语法在 GitHub 上为您的散文和代码创建复杂的格式。 本文内容 标题 文本样式 引用文本 引用代码 支持的颜色模型 链接 章节链接 relative links (相对链接) 图像 列表 任务列表 提及人员和团队 引用议题和拉取请求 引用外部资源 上传资产 使用表情…

15 UART回环

UART 串口简介 常用的通信方式可分为为串行通信(serial communication)和并行通信(parallel communication)两种。并行通信是多比特数据同时通过并行线进行传送(一般以字或字节为单位并行进行传输)&#x…

什么是Linux?它与其他操作系统有何区别?

什么是Linux?它与其他操作系统有何区别? 什么是Linux?它与其他操作系统有何区别?摘要引言正文内容了解LinuxLinux与其他操作系统的区别开放性多样性安全性 🤔 QA环节小结 参考资料表格总结总结未来展望 博主 默语带您 …

DBO优化GRNN回归预测(matlab代码)

DBO-GRNN回归预测matlab代码 蜣螂优化算法(Dung Beetle Optimizer, DBO)是一种新型的群智能优化算法,在2022年底提出,主要是受蜣螂的的滚球、跳舞、觅食、偷窃和繁殖行为的启发。 数据为Excel股票预测数据。 数据集划分为训练集、验证集、测试集,比例…

如何使用OpenCV扫描图像、查找表和时间测量

返回:OpenCV系列文章目录(持续更新中......) 上一篇:OpenCV4.9.0开源计算机视觉库核心功能(核心模块) ​ 编辑 目标 我们将寻求以下问题的答案: 如何浏览图像的每个像素?OpenCV 矩…

【C++】如何用一个哈希表同时封装出unordered_set与unordered_map

👀樊梓慕:个人主页 🎥个人专栏:《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》《Linux》《算法》 🌝每一个不曾起舞的日子,都是对生命的辜负 目录 前言 1.哈希桶源码 2.哈希…

分割数组的两种解法:动态规划、二分法

410. 分割数组的最大值 1. 动态规划 「将数组分割为 m 段,求……」是动态规划题目常见的问法 理清状态转移方程比较难,因此不推荐用动态规划解题。 2. 贪心 二分法 「使……最大值尽可能小」是二分搜索题目常见的问法。 本题中,我们注意…

数据库管理开发工具Navicat for MySQL Mac版下载

Navicat for MySQL(Mac版)是一款强大的数据库管理开发工具,专为MySQL设计。它提供直观的用户界面,支持数据建模、查询构建、数据传输等功能,帮助用户轻松管理数据库。其特点包括高效的数据处理能力、安全的数据传输机制…

算法---前缀和练习-1(除自身以外数组的乘积)

除自身以外数组的乘积 1. 题目解析2. 讲解算法原理3. 编写代码 1. 题目解析 题目地址:点这里 2. 讲解算法原理 首先,创建两个辅助数组 f 和 g,它们的长度与 nums 相同。数组 f 用于存储每个元素左侧所有元素的乘积,数组 g 用于存…

SpringCloud-Nacos注册中心

服务注册到nacos Nacos是SpringCloudAlibaba的组件,而SpringCloudAlibaba也遵循SpringCloud中定义的服务注册、服务发现规范。因此使用Nacos和使用Eureka对于微服务来说,并没有太大区别。 主要差异在于: 依赖不同服务地址不同 1. 引入依赖…

XML Data – Semi-Structured Data XML 数据 - 半结构化数据

Outline • Structured, Semistructured, and Unstructured Data • XML Hierarchical (Tree) Data Model • Extracting XML Documents from Relational Databases • XML Documents, DTD, and XML Schema • XML Languages 结构化、半结构化和非结构化数据 - XML 层次&#x…

$.when.apply($, deferreds).done(function() {}) 用法

$.when.apply($, deferreds).done(function() {}) 这行代码是 jQuery 中用于处理多个异步操作的一种模式。让我们逐步解释其用法: $.when(): 这是 jQuery 中的一个方法,用于创建一个新的 Deferred(延迟)对象。Deferred 对象用于管…

如何设计循环队列(两种方法)

文章目录 前言一、方法一:数组法二、方法二.链表法总结 前言 前面有提到过队列的知识,这次来说一下怎么设计一个循环队列 一.循环队列(力扣) . - 力扣(LeetCode). - 备战技术面试?力扣提供海量技术面试资…

【算法每日一练]-动态规划(保姆级教程 篇17 状态压缩)#POJ1185:炮兵阵地 #互不侵犯

目录 今日知识点: 把状态压缩成j,dp每行i的布置状态,从i-1和i-2行进行不断转移 把状态压缩成j,dp每行i的布置状态,从i-1行进行状态匹配,然后枚举国王数转移 POJ1185:炮兵阵地 思路: 题目:互…

代码随想录算法训练营第二十八天|● 93.复原IP地址 ● 78.子集 ● 90.子集II (JS写法)

93 复原IP地址 题目链接/文章讲解:https://programmercarl.com/0093.%E5%A4%8D%E5%8E%9FIP%E5%9C%B0%E5%9D%80.html 视频讲解:https://www.bilibili.com/video/BV1XP4y1U73i/ 思路: /*** param {string} s* return {string[]}*/ var resto…

微信商家转账到零钱:实用指南,涵盖开通、使用与常见问题

商家转账到零钱是什么? 商家转账到零钱功能整合了企业付款到零钱和批量转账到零钱,支持批量对外转账,操作便捷。如果你的应用场景是单付款,体验感和企业付款到零钱基本没差别。 商家转账到零钱的使用场景有哪些? 这…

基于YOLOv8深度学习的橙子病害智能诊断与防治系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标分类

《博主简介》 小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 《------往期经典推…