机器学习第34周周报VBAED

文章目录

  • week34 VBAED
  • 摘要
  • Abstract
  • 一、文献阅读
    • 1. 题目
    • 2. abstract
    • 3. 网络架构
      • 3.1 序列问题阐述
      • 3.2 变分模态分解
      • 3.3 具有 BiLSTM 和双向输入注意力的编码器
      • 3.4 具有 BiLSTM 和双向时间注意力的解码器
    • 4. 文献解读
      • 4.1 Introduction
      • 4.2 创新点
      • 4.3 实验过程
        • 4.3.1 数据集
        • 数据预处理
        • 评估指标
        • 实验结果分析
    • 总结
    • 参考文献

week34 VBAED

摘要

本周阅读了题为Accurate water quality prediction with attention-based bidirectional LSTM and encoder–decoder的论文。该文提出了一种称为VBAED的混合预测方法来预测水质时间序列。VBAED 结合了变分模式分解 (VMD)、双向输入注意力机制、具有双向 LSTM 的编码器 (BiLSTM) 以及具有双向时间注意力机制和 BiLSTM 的解码器。VBAED 的定义是一个编码器-解码器模型,它使用 VMD 作为模式分解,将 BiLSTM 与双向注意力机制相结合。本文在最后使用vmdpy对数据进行了一定处理。

Abstract

This week read the paper entitled Accurate water quality prediction with attention-based bidirectional LSTM and encoder–decoder. This paper proposes a hybrid prediction method called VBAED to predict the water quality time series. VBAED combines Variational mode decomposition (VMD), a Bidirectional input Attention mechanism, an Encoder with bidirectional LSTM (BiLSTM), and a Decoder with a bidirectional temporal attention mechanism and BiLSTM. The definition of VBAED is an Encoder–Decoder model that uses VMD as mode decomposition, combining BiLSTM with a bidirectional attention mechanism. And the end, using vmdpy as a tool for processing data.

一、文献阅读

1. 题目

标题:Accurate water quality prediction with attention-based bidirectional LSTM and encoder–decoder

作者:Jing Bi, Zexian Chen, Haitao Yuan, Jia Zhang

期刊名:[Expert Systems with Applications]

链接:https://doi.org/10.1016/j.eswa.2023.121807

2. abstract

随着水质数据的增加,其变得不稳定且高度非线性,因此,其准确预测成为一个巨大的挑战。为了解决这个问题,该文提出了一种称为VBAED的混合预测方法来预测水质时间序列。VBAED 结合了变分模式分解 (VMD)、双向输入注意力机制、具有双向 LSTM 的编码器 (BiLSTM) 以及具有双向时间注意力机制和 BiLSTM 的解码器。VBAED 的定义是一个编码器-解码器模型,它使用 VMD 作为模式分解,将 BiLSTM 与双向注意力机制相结合。

As the water quality data increases, it becomes unstable and highly nonlinear, and therefore, its accurate prediction becomes a big challenge. To solve it, this work proposes a hybrid prediction method called VBAED to predict the water quality time series. VBAED combines Variational mode decomposition (VMD), a Bidirectional input Attention mechanism, an Encoder with bidirectional LSTM (BiLSTM), and a Decoder with a bidirectional temporal attention mechanism and BiLSTM. The definition of VBAED is an Encoder–Decoder model that uses VMD as mode decomposition, combining BiLSTM with a bidirectional attention mechanism.

3. 网络架构

bead552fe445b031ecca620ae60a85e

该文在输入维度和时间维度上创新地将注意力机制与BiLSTM相结合,并采用VMD对水质数据进行分解,将重要模式与噪声模式分离,进一步提高预测精度。具体来说,通过VMD将预测因子的历史数据分解为多种模式。然后,模式和其他特征由具有双向输入注意机制的 BiLSTM 进行编码,并由具有双向时间注意机制的 BiLSTM 进行解码,以产生最终预测。

image-20240413145538449

上图说明了所提出的 VBAED 模式

3.1 序列问题阐述

02b28b98d2abdb5d3fe4dc70d4d8321

3.2 变分模态分解

VMD迭代地搜索变分模态的最优解,不断更新每个模态函数和中心频率,并获得多个本征模态函数(IMF)。变分问题定义为求解 k模IMF 来最小化每种模式的估计带宽之和。 Y 分解为 k 模。

VMD分解可以降低时间序列的非线性和波动性,避免模式混合的负面影响。不同的模态分量对预测结果有不同的影响。

通过将它们分离并与输入注意机制相结合,VBAED 能够自适应地选择重要模式,从多个模式中过滤掉噪声模式,并专注于包含重要信息的模式。可以根据实验结果选择性地去除模态分量。

这项工作通过 VMD 将目标值序列分解为三个分量,并将其用作特征。这引导神经网络更用心地学习更复杂的特征并提高预测精度。VMD处理后的的输入为 X ^ = { X ^ 1 , … , X ^ t , … , X ^ T } ∈ R n × T where  n = n ˙ + 3 \hat X=\{\hat X_1,\dots, \hat X_t,\dots,\hat X_T\}\in \mathbb R^{n\times T}\ \text{where}\ n=\dot n+3 X^={X^1,,X^t,,X^T}Rn×T where n=n˙+3

3.3 具有 BiLSTM 和双向输入注意力的编码器

BiLSTM:由两个独立的 LSTM 单元组成。第一个 LSTM 单元称为 LSTMF,它从前到后对信息进行编码。第二个 LSTM 单元称为 LSTMB,它从后到前对信息进行编码。然后,组合来自两个方向的信息以获得编码器在时间步 t 的隐藏状态 h t h_t ht

特别是,在时间步 t 处,LSTMF 根据时间步 t-1 处的前一个隐藏状态 h t − 1 F h^F_{t-1} ht1F、时间步 t-1 处的单元状态 c t − 1 F c^F_{t-1} ct1F以及输入 X t X_t Xt 计算其隐藏状态 h t F h^F_t htF 。 LSTMB 基于隐藏状态 h t − 1 B h^B_{t-1} ht1B、单元状态 c t + 1 B c^B_{t+1} ct+1B 和输入 X t X_t Xt 计算其隐藏状态 h t B h^B_t htB。然后,将前向隐藏状态 h t F h^F_t htF和后向隐藏状态 h t B h^B_t htB组合成BiLSTM的隐藏状态。 LSTMF和LSTMB是两个独立的LSTM单元,它们不共享参数。 h t F h^F_t htF h t B h^B_t htB h t h_t ht 给出为:
h t F = LF ( h t − 1 F , c t − 1 F , X ^ t ) (2) h^F_t=\text{LF}(h^F_{t-1},c^F_{t-1},\hat X_t) \tag{2} htF=LF(ht1F,ct1F,X^t)(2)

h t B = LB ( h t + 1 B , c t + 1 B , X ^ t ) (3) h^B_t=\text{LB}(h^B_{t+1},c^B_{t+1},\hat X_t) \tag{3} htB=LB(ht+1B,ct+1B,X^t)(3)

h t = [ h t F ; h t B ] (4) h_t=[h^F_t;h^B_t] \tag{4} ht=[htF;htB](4)

其中 LF 是 LSTMF 单元,LB 是 LSTMB 单元。 𝑚 表示每个 BiLSTM 单元的隐藏状态大小, h t F ∈ R m , h t B ∈ R m , h t ∈ R 2 m h^F_t\in R^m,\ h^B_t\in R^m,\ h_t\in R^{2m} htFRm, htBRm, htR2m

该文为BiLSTM设计了一种输入注意机制。分别为LSTMF和LSTMB添加一个输入注意机制层,两种输入注意力机制关注不同的特征。

bd6ac30c8b5b3ef6082366fbe6472a2

6171efd4757cc95abeafadc79edcf32

3.4 具有 BiLSTM 和双向时间注意力的解码器

BiLSTM 解码器由两个独立的 LSTM 单元组成,包括 LSTMDF 和 LSTMDB。前者从前往后解码信息,后者从后到前解码信息。

m 表示每个 BiLSTM 单元的隐藏状态大小。 hi 表示编码器的第 i 隐藏状态。

BiLSTM中双向注意力机制的详细信息:

时间步 t 的前向注意力权重和第 i 个隐藏状态 ( h i h_i hi) 的后向注意力权重分别由 β t F i ( β t F i ∈ ( 0 , 1 ) ) , β t B + i ( ∈ ( 0 , 1 ) ) \beta^{F_i}_t(\beta^{F_i}_t\in(0,1)),\ \beta^{B+i}_t(\in(0,1)) βtFi(βtFi(0,1)), βtB+i((0,1)) β t F i \beta^{F_i}_t βtFi 是根据 LSTMDF 在时间步 t-1 的隐藏状态 d t − 1 f ( d t − 1 F ∈ R p ) d^f_{t-1}(d^F_{t-1}\in R^p) dt1f(dt1FRp)和单元状态 s t − 1 F ( s t − 1 F ∈ R p ) s^{F}_{t-1}(s^F_{t-1}\in R^p) st1F(st1FRp)计算的。此外, β t B i \beta^{B_i}_t βtBi是根据LSTMDB在时间步t+1的隐藏状态 d t + 1 B ( d t + 1 B ∈ R p ) d^B_{t+1}(d^B_{t+1}\in R^p) dt+1B(dt+1BRp)和单元状态 s t + 1 B ( s t + 1 B ∈ R p ) s^B_{t+1}(s^B_{t+1}\in R^p) st+1B(st+1BRp)计算的。 o t F i o^{F_i}_t otFi o t B i o^{B_i}_t otBi 表示 h i h_i hi​ 在时间步 t 的能量得分,其公式如下:

image-20240413222851706

时间步 𝑡 处的前向和后向上下文向量由 g t F g^F_t gtF g t B g^B_t gtB 表示,它们分别是编码器所有隐藏状态的加权和

image-20240413223113403

g t F g^F_t gtF g t B g^B_t gtB 同历史真实值 y t y_t yt联立,分别在时间t获得LSTMDF和LSTMDB的新输入 y ~ t F , y ~ t B \tilde y^F_t, \tilde y^B_t y~tF,y~tB

image-20240413223340101

将这些输入用于更新LSTMDF和LSTMDB在时间步t处的隐藏状态 d t F , d t B d^F_t, d^B_t dtF,dtB

image-20240413223502846

其中LDF表示LSTMDF,LDB表示LSTMDB

最终预测值 y ^ t + 1 \hat y_{t+1} y^t+1表示为

image-20240413223607998

训练过程:采用均方误差MSE作为损失函数,以最小化真实值与预测值之间的差异。损失函数 Δ \Delta Δ如下:
image-20240413223739675

4. 文献解读

4.1 Introduction

LSTM只能从前到后进行编码,无法捕获从后道歉的信息。同时,采用注意力机制的网络也无法捕获从后到前的数据。另外,水质数据中可能包含噪声,而噪声无法通过上述方法分离。为了解决上述问题,该文提出了一种称为 VBAED 的混合方法。 VBAED 集成了变分模式分解(VMD)、双向输入注意力机制、具有双向 LSTM 的编码器(BiLSTM)以及具有双向时间注意力机制和 BiLSTM 的解码器。

4.2 创新点

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

4.3 实验过程

4.3.1 数据集

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

  • BTH数据集收集自2018年9月至2021年12月期间京津冀地区河流中的自动水质站。每4 h采集一次,涉及pH、TN、TP。在实验中,TN被用作基础事实,pH和TP被用作特征。对于少量的缺失值,采用线性插值的方法进行补充,总共有7200个数据样本。我们将前5000个数据样本作为训练集,接下来的1000个数据样本作为验证集,剩下的1200个数据样本作为测试集。

  • 亚拉巴马数据集是2017年5月至2019年8月美国亚拉巴马河一段的水质数据。数据收集间隔为一小时。与BTH数据集不同,亚拉巴马数据集只有一个DO特征,即亚拉巴马数据集中的目标值。对于数据集中的少量缺失值,采用线性插值方法进行补齐。在亚拉巴马数据集中,我们总共有19862个数据样本。在这项工作中,我们将前15889个数据样本作为训练集,随后的1986个数据样本作为验证集,最后的1987个数据样本作为测试集。

image-20240413223857438

数据预处理

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

评估指标

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

实验结果分析
  1. 验证VBAED的准确性

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

image-20240413224020011

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

image-20240413224040826

  1. 验证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容易忽略从后到前的信息,导致相关信息丢失的局限性。

image-20240413224117860

image-20240413224131067

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

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

image-20240413224228923

image-20240413224238000

import numpy as np
import matplotlib.pyplot as plt
from vmdpy import VMD
# -----测试信号及其参数--start-------------
Fs=1000 # 采样频率
N=1000 # 采样点数
t=np.arange(1,N+1)/N
fre_axis=np.linspace(0,Fs/2,int(N/2))
f_1=100;f_2=200;f_3=300
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))
v=[v_1,v_2,v_3] # 测试信号所包含的各成分
f=v_1+v_2+v_3+0.1*np.random.randn(v_1.size)  # 测试信号
# -----测试信号及其参数--end----------
# alpha 惩罚系数;带宽限制经验取值为抽样点长度1.5-2.0倍.
# 惩罚系数越小,各IMF分量的带宽越大,过大的带宽会使得某些分量包含其他分量言号;
# a值越大,各IMF分量的带宽越小,过小的带宽是使得被分解的信号中某些信号丢失该系数常见取值范围为1000~3000
alpha=2000
tau=0 # tau 噪声容限,即允许重构后的信号与原始信号有差别。
K=3 # K 分解模态(IMF)个数
DC=0 # DC 若为0则让第一个IMF为直流分量/趋势向量
init=1 # init 指每个IMF的中心频率进行初始化。当初始化为1时,进行均匀初始化。
tol=1e-7 # 控制误差大小常量,决定精度与迭代次数
u, u_hat, omega = VMD(f, alpha, tau, K, DC, init, tol) # 输出U是各个IMF分量,u_hat是各IMF的频谱,omega为各IMF的中心频率# 1 画原始信号和它的各成分
plt.figure(figsize=(10,7));plt.subplot(K+1, 1, 1);plt.plot(t,f)
for i,y in enumerate(v):plt.subplot(K+1, 1, i+2);plt.plot(t,y)
plt.suptitle('Original input signal and its components');plt.show()# 2 分解出来的各IMF分量
plt.figure(figsize=(10,7))
plt.plot(t,u.T);plt.title('all Decomposed modes');plt.show()  # u.T是对u的转置# 3 各IMF分量的fft幅频图
plt.figure(figsize=(10, 7), dpi=80)
for i in range(K):plt.subplot(K, 1, i + 1)fft_res=np.fft.fft(u[i, :])plt.plot(fre_axis,abs(fft_res[:int(N/2)])/(N/2))plt.title('(FFT) amplitude frequency of IMF {}'.format(i + 1))
plt.show()# 4 分解出来的各IMF分量的频谱
# print(u_hat.shape,t.shape,omega.shape)
plt.figure(figsize=(10, 7), dpi=80)
for i in range(K):plt.subplot(K, 1, i + 1)plt.plot(fre_axis,abs(u_hat[:, i][int(N/2):])/(N/2))plt.title('(VMD)amplitude frequency of the modes{}'.format(i + 1))
plt.tight_layout();plt.show()# 5 各IMF的中心频率
plt.figure(figsize=(12, 7), dpi=80)
for i in range(K):plt.subplot(K, 1, i + 1)plt.plot(omega[:,i]) # X轴为迭代次数,y轴为中心频率plt.title('mode center-frequencies{}'.format(i + 1))
plt.tight_layout();plt.show()plt.figure(figsize=(10,7))
plt.plot(t,np.sum(u,axis=0))
plt.title('reconstructed signal')

image-20240413225140491

image-20240413225204343

image-20240413225222650

image-20240413225232404

image-20240413225250112

总结

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

参考文献

[1] Jing Bi, Zexian Chen, Haitao Yuan, Jia Zhang “Accurate water quality prediction with attention-based bidirectional LSTM and encoder–decoder”, [J] https://doi.org/10.1016/j.eswa.2023.121807

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

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

相关文章

Redis为什么会变慢

链接: https://pan.baidu.com/s/1PNzhDMqkFBdKUu9_FxA5zw 提取码: euvk

以太网数据量大小字符串生成方法(可变单位)

0 前言 当我们想显示以太网数据量大小时,往往有个头疼的单位需要处理,单位取小了不一目了然,单位取大了精度太低。本例设计一个函数,将根据以太网数据量大小自动生成单位可变的字符串(KB、MB、GB、TB、PB)…

雷军 30 年前的病毒论文,结语最后一句是亮点

在 2023 雷军年度「成长」主题演讲中,他分享了自己在武汉大学设立的三个目标: 两年修完大学所有学分成为优秀的程序员在学报上发论文 对于彼时的在校生来说,在一级学报上发表论文是十分困难的事情,但雷军并没有因困难而畏惧、放…

【植物大战僵尸融合机器学习】+源码

上期回顾: 今天给大家推荐一个Gtihub开源项目:PythonPlantsVsZombies,翻译成中就是植物大战僵尸。 《植物大战僵尸》是一款极富策略性的小游戏。可怕的僵尸即将入侵,每种僵尸都有不同的特点,例如铁桶僵尸拥有极强的抗…

VRRP虚拟路由实验(华为)

思科设备参考:VRRP虚拟路由实验(思科) 一,技术简介 VRRP(Virtual Router Redundancy Protocol)是一种网络协议,用于实现路由器冗余,提高网络可靠性和容错能力。VRRP允许多台路由器…

APP开发_开发一个入门的 H5 APP

1 开发环境的搭建与准备 1.1 安装 Android Studio 下载:首先,从谷歌的安卓开发者网站(https://developer.android.google.cn/studio/releases?hlzh-cn)下载Android Studio的安装包。在下载页面中,可以根据自己的操作…

llamafactory:unified efficient fine-tuning of 100+ lanuage models

1.introduction llamafactory由三个主要模块组成,Model Loader,Data Worker,Trainer。 2.Efficient fine-tuning techniques 2.1 Efficient Optimization 冻结微调:冻结大部分参数,同时只在一小部分解码器层中微调剩…

【MATLAB源码-第36期】matlab基于BD,SVD,ZF,MMSE,MF,SLNR预编码的MIMO系统误码率分析。

操作环境: MATLAB 2022a 1、算法描述 1. MIMO (多输入多输出):这是一个无线通信系统中使用的技术,其中有多个发送和接收天线。通过同时发送和接收多个数据流,MIMO可以增加数据速率和系统容量,同时提高信号的可靠性。…

建造者模式:构造复杂对象的艺术

在面向对象的设计中,建造者模式是一种重要的创建型设计模式,专门用来构建复杂的对象。它主要目的是将对象的构造代码与其表示代码分离,使同样的构建过程可以创建不同的表示。本文将详细介绍建造者模式的定义、实现、应用场景以及优缺点&#…

数字乡村创新实践探索农业现代化与乡村振兴新路径:科技赋能农村全面振兴与农民幸福新篇章

随着信息技术的飞速发展,数字乡村成为推动农业现代化与乡村振兴的重要战略举措。科技赋能下的数字乡村创新实践,不仅提升了农业生产的智能化水平,也为乡村治理和农民生活带来了翻天覆地的变化。本文旨在探讨数字乡村创新实践在农业现代化与乡…

Mac环境 llamafile 部署大语言模型LLM

文章目录 Github官网本地部署 llamafile 是一种可在你自己的电脑上运行的可执行大型语言模型(LLM),它包含了给定的开放 LLM 的权重,以及运行该模型所需的一切。让人惊喜的是,你无需进行任何安装或配置。 Github https…

年龄与疾病c++

题目描述 某医院想统计一下某项疾病的获得与否与年龄是否有关,需要对以前的诊断记录进行整理,按照0-18岁、19-35岁、36-60岁、61以上(含61)四个年龄段统计的患病人数以及占总患病人数的比例。 输入 共2行,第一行为过…

ctfshow--web入门--文件上传--web168--web170

web168 法一免杀脚本 还是检查&#xff0c;准备上传图片马 我写的是<?php eval($_POST[a]);?> 上传之后没反应 那么查一下&#xff0c;原来是发现对eval,system还有$_POST和$_GET进行过滤,$_REQUEST还可以用 那么再写一个马&#xff08;免杀脚本&#xff09; <?…

AI 文献综述工具

find sources that support this statement:

Redis入门(常用命令、spring-boot-starter-data-redis)

Redis redis是一个基于内存的key-value的结构数据库 启动&#xff1a; redis-server.exe redis.windows.conf 客户端链接&#xff1a;redis-cli.exe [-h 目标ip] [-p 端口] [-a 密码] 修改链接密码&#xff1a; 在redis.windows.conf中的requirepass 123456 常用的数据类…

前端三剑客 —— JavaScript (第八节)

目录 内容回顾&#xff1a; 事件对象 事件对象 事件对象的方法和属性 案例-移动DIV 案例-图片轮换 Ajax 内容回顾&#xff1a; 事件对象 1.1 什么是事件驱动 1.2 事件绑定 事件源&#xff1a;发生事件的源对象 事件对象&#xff1a;它包含了事件所有的信息&#xff0c;它…

[攻防世界]Reversing-x64Elf-100

1.查壳 无壳&#xff0c;ELF文件 2.用IDA64打开 找到关键部分 这里有坑&#xff0c;看清楚v3是长度为3数组&#xff0c;里面放三个字符串 3.脚本解密 v1"Dufhbmf" v2"pGimos" v3"ewUglpt" v4[v1,v2,v3] a1[0,0,0,0,0,0,0,0,0,0,0,0] for i …

使用cmake进行打包,包含可执行程序和动态依赖库

平常代码开发中&#xff0c;有时候需要将写的程序打包成压缩包放到目标设备上进行运行测试。用CMake管理工程&#xff0c;实现使用make -jnproc package指令可以将工程进行打包&#xff0c;可执行文件存储在bin文件夹中&#xff0c;依赖库存储在lib文件夹中。 示例 1.工程目录结…

算法打卡day41|动态规划篇09| Leetcode198.打家劫舍、213.打家劫舍II、337.打家劫舍 III

算法题 Leetcode 198.打家劫舍 题目链接:198.打家劫舍 大佬视频讲解&#xff1a;198.打家劫舍视频讲解 个人思路 偷还是不偷&#xff0c;这取决于前一个和前两个房是否被偷了&#xff0c;这种存在依赖关系的题目可以用动态规划解决。 解法 动态规划 动规五部曲&#xff1…

B端系统:控制台图表的十大常见类型,附精美案例

大家伙&#xff0c;我是大千UI工场&#xff0c;专注UI分享和项目接单&#xff0c;本期带来控制台图表的常见类型&#xff0c;欢迎大家关注、互动交流。 B端系统控制台的图表类型有很多种&#xff0c;常见的包括&#xff1a; 折线图&#xff1a;用于显示随时间变化的数据趋势&a…