第四十五周:文献阅读

目录

摘要

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具有自适应选择重要模式的能力,从多个模式中过滤掉噪声模式,并关注包含重要信息的模式,这将引导神经网络更专注地学习更复杂的特征,从而能够提高预测精度。

 

 

 

 

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

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

相关文章

此站点的连接不安全,怎么解决?

有部分的网站用户在打开的时候会被提示“此站点的连接不安全”这种现象为什么会出现,大概率是因为没有安装SSL证书或者SSL证书出现了错误,小编在这里面将展开讲解为大家分析其中的原因以及解决方法。 一:遇到该情况的时候该怎么办&#xff1…

【基于HTML5的网页设计及应用】——随机验证码

🎃个人专栏: 🐬 算法设计与分析:算法设计与分析_IT闫的博客-CSDN博客 🐳Java基础:Java基础_IT闫的博客-CSDN博客 🐋c语言:c语言_IT闫的博客-CSDN博客 🐟MySQL&#xff1a…

2024/3/24--爬虫库

1.常用的爬虫库 (1)在setting的project里面点击Python Interpreter (2)常用的爬虫库有 import requests //用途:用于发送HTTP请求。from bs4 import BeautifulSoup //用于从HTML或XML文档中提取数据。import scrapy //一个功能强大的爬虫框架&#xf…

TypeScript基础类型

string、number、bolean 直接在变量后面添加即可。 let myName: string Tomfunction sayHello(person: string) {return hello, person } let user Tom let array [1, 2, 3] console.log(sayHello(user))function greet(person: string, date: Date): string {console.lo…

R语言迅速计算多基因评分(PRS)

Polygenic Risk Scores in R 最朴素的理解PRS: GWAS分析结果中,有每个SNP的beta值、se值、P值,因为GWAS分析中将SNP变为0-1-2编码,所以这些显著的SNP的beta值,就可以用于预测。 比如:GWAS分析中&#xf…

【C语言】结构体与位段

一、前言 我们之前学习过定义一个整型类型的变量又或者定义一个浮点型类型的变量...,这些变量可以描述一个整数又或者描述一个小数...,可无论是整数还是小数...,它们也只是简单对象。如果我们想要描述像一本书,一个人这种复杂对象…

在国企做软件测试工程师是一种什么样的体验:每天过的像打仗一样

工作越来越卷,下班越来越晚。每到本该下班的时间,总有一批双目无神的打工人坐在工位上,生无可恋地继续加班...... 如今的职场,加班似乎已成为一种普遍化的现象。有人说:在高薪的背后,都是一群玩命工作的身影…

H3C技术大全复现之高级路由交换技术 1

华子目录 VLAN 基本技术VLANIEEE 802.1Q交换机端口类型MVRP协议实验测试 VLAN扩展技术Super VLAN产生背景Super vlan(相当于vlanif接口,也属于虚拟接口,可以充当网关)Sub vlan(普通vlan)关于代理ARP普通代理…

芒果YOLOv8改进:提升篇:从零开始训练 YOLOv8最新稳定8.1版本教程说明,适用Mac、Windows、Linux端

从零开始训练 YOLOv8 - 最新8.1版本教程说明 本文适用Windows/Linux/Mac:从零开始使用Windows/Linux/Mac训练 YOLOv8 算法项目 《芒果 YOLOv8 目标检测算法 改进》 适用于芒果专栏改进 YOLOv8 算法 文章目录 官方 YOLOv8 算法第一步 配置环境1.1 系列配置1.2 代码…

火星文:一种特殊的文字编码

title: 火星文:一种特殊的文字编码 date: 2024/3/25 13:26:20 updated: 2024/3/25 13:26:20 tags: 火星文文字变种网络流行解码阅读社交趣味艺术创新未来符号 定义 火星文是一种特殊的文字编码,也称为奇文,其特点是将常见的文字进行特殊的变…

Linux收到一个网络包是怎么处理的?

目录 摘要 ​编辑 1 从网卡开始 2 硬中断,有点短 2.1 Game Over 3 接力——软中断 3.1 NET_RX_SOFTIRQ 软中断的开始 3.2 数据包到了协议栈 3.3 网络层处理 3.4 传输层处理 4 应用层的处理 5 总结 摘要 一个网络包的接收始于网卡,经层层协议栈…

苍穹外卖项目笔记

软件开发流程 需求分析:说明书和原型 设计:UI,数据库,接口设计 编码:项目代码,单元测试 测试:测试用例,测试报告 上线运维:软件环境安装,配置 软件环境…

ClickHouse03-小白如何快速搭建ClickHouse集群

普通测试通常使用ClickHouse单节点就可以了,但是生产环境不免需要考虑多活、负载等高可用问题,集群就成了基础需求 ClickHouse在集群的选择上,作者已知的有两种: 使用ZooKeeper作为节点协调的组件,使用ClickHouse-Kee…

Java实现JDBC编程

1 数据库编程的必备条件 编程语言,如Java,C、C、Python等 数据库,如Oracle,MySQL,SQL Server等 数据库驱动包:不同的数据库,对应不同的编程语言提供了不同的数据库驱动包,如&#x…

day44 动态规划part6

完全背包 有N件物品和一个最多能背重量为W的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品都有无限个(也就是可以放入背包多次),求解将哪些物品装入背包里物品价值总和最大。 完全背包和01背包问题唯一不同…

vue3怎么读取本地json数据

在Vue 3中&#xff0c;可以使用fetch API或其他HTTP客户端来读取本地JSON数据。以下是一个使用fetch的示例&#xff1a; <template><div><h1>本地JSON数据</h1><div v-if"data">{{ data }}</div></div> </template>…

MP4如何把视频转MOV格式? MP4视频转MOV格式的技巧

在现代的数字媒体时代&#xff0c;视频格式转换成为了许多用户必须掌握的技能。特别是将MP4视频转换为MOV格式&#xff0c;这对于需要在Apple设备上播放或编辑视频的用户来说尤为重要。本文将详细介绍如何将MP4视频转换为MOV格式&#xff0c;帮助读者轻松应对不同设备和平台的需…

利用云手机高效运营多个海外社媒账户

随着全球化进程的不断推进&#xff0c;中国出海企业和B2B外贸企业日益重视海外社媒营销&#xff0c;将其视为抢占市场份额的关键策略。在海外社媒营销中&#xff0c;企业通常会在多个平台上批量开通账户&#xff0c;搭建自己的社媒内容矩阵。本文将会介绍如何用云手机高效运营多…

平价开放式耳机哪些品牌好用?五款高质量测评入手不后悔 !

现在耳机主要分为入耳式和开放式&#xff0c;而且入耳式耳机对外界声音隔绝太严重&#xff0c;走路的时候听不到脚步声喇叭声音也不利于安全&#xff0c;甚至戴耳机和别人说话沟通也很困难。所以现在的年轻人开始追求舒适、安全、健康的听歌产品&#xff0c;开放式耳机也逐渐成…

牛客网python练习题库记录

python格式化输出 python 读入整数数字并且换行输出 python规范输出小数点后几位 afloat(input()) format_a{.2f}.format(a) print(format_a) 小数化整数 afloat(input()) bint(a) print(b) 为整数增加小数点 input_integer int(input()) float_number float(input…