深度学习--神经网络全面知识点总结(持续更新中)

news2024/11/28 4:52:23

文章目录

  • 神经网络基础
    • 1.1 什么是神经网络?
    • 1.2 神经元和激活函数
    • 1.3 前向传播和反向传播
    • 1.4 损失函数和优化算法
  • 深度神经网络
    • 2.1 卷积神经网络(CNN)
    • 2.2 循环神经网络(RNN)
    • 2.3 长短期记忆网络(LSTM)
    • 2.4 生成对抗网络(GAN)
  • 神经网络训练技巧
    • 3.1 数据预处理
    • 3.2 批量归一化
    • 3.3 正则化和dropout
    • 3.4 参数初始化策略
  • 深度学习应用领域
    • 4.1 图像识别和分类
    • 4.2 自然语言处理
    • 4.3 语音识别
    • 4.4 强化学习

神经网络基础

1.1 什么是神经网络?

想象一下,你正在学习如何识别不同种类的动物,比如狗、猫和鸟。你会观察它们的特征,如体型、毛色、嘴形等,然后逐渐学会将这些特征与相应的动物类别关联起来。
在这里插入图片描述

神经网络也是以类似的方式工作。它由大量的人工神经元组成,每个神经元类似于一个小的计算单元。每个神经元接收来自其他神经元的输入,并通过一个称为激活函数的非线性函数来处理这些输入。激活函数决定了神经元是否应该“激活”并传递信号给下一层神经元。

举例来说,假设你要训练一个神经网络来识别猫和狗的图像。神经网络的第一层可以是图像的像素值,每个像素作为一个输入。然后,神经网络通过多个中间层逐渐提取更高级的特征,比如边缘、纹理和形状等。最后一层是输出层,代表猫和狗两个类别。

通过训练神经网络,它会自动调整神经元之间的权重,以便正确地将输入图像与相应的类别关联起来。这就类似于你学习识别动物时,逐渐建立了不同特征与动物类别之间的联系。

神经网络是一种模仿人脑神经元工作原理的计算模型,通过学习输入数据的特征和模式,实现对复杂问题的建模和预测能力。在图像识别、自然语言处理等领域有显著的成果。

1.2 神经元和激活函数

神经元是神经网络中的基本单元,通过加权求和、激活函数和偏置来处理输入数据,并将结果传递给下一层神经元。激活函数的引入使得神经网络能够捕捉非线性关系,提高模型的表达能力和学习能力。

神经元可以用以下几个关键组成部分来描述:

输入权重(Weights):每个输入都有一个对应的权重,表示该输入对神经元的影响程度。权重决定了输入信号的重要性,通过调整权重,神经网络可以学习不同输入之间的关联性。

加权求和(Weighted Sum):神经元将每个输入与对应的权重相乘,然后将这些加权的输入求和,形成一个加权求和的结果。

偏置(Bias):偏置是一个可调参数,与每个神经元关联。它表示了神经元被激活的容易程度。偏置可以理解为一种阈值,如果加权求和结果超过这个阈值,神经元就会被激活。

激活函数(Activation Function):激活函数是神经元的非线性变换函数。它接收加权求和的结果,并将其转换为神经元的输出。激活函数的引入使得神经网络能够捕捉非线性关系,从而提高了模型的表达能力。

激活函数常用的类型有:

Sigmoid函数:将输入映射到0和1之间的连续值,常用于二分类问题。

ReLU函数(Rectified Linear Unit):将负数映射为0,保持正数不变,提供了更好的计算性能和模型收敛性。

Tanh函数:将输入映射到-1和1之间的连续值,具有Sigmoid函数的非线性特性。

激活函数的选择对神经网络的性能和训练效果具有重要影响。不同的激活函数适用于不同类型的问题和网络架构。

1.3 前向传播和反向传播

前向传播(Forward Propagation)和反向传播(Backpropagation)是神经网络中两个关键的步骤,用于训练网络和更新权重。

前向传播是神经网络中通过层层传递信号来计算预测结果的过程,而反向传播则是根据预测结果和真实标签的差异来调整权重以优化模型性能的过程。这两个步骤是神经网络训练的关键步骤,通过反复迭代可以不断优化模型

前向传播:
在前向传播过程中,神经网络将输入数据通过各层的神经元,从输入层一直传递到输出层,计算并预测出模型的输出结果。过程可以分为以下几个步骤:

输入传递:将输入数据输入到神经网络的输入层。

加权求和:每个神经元接收上一层神经元的输出,并将其与对应的权重相乘,然后对所有加权输入求和。

激活函数:对加权求和的结果应用激活函数,得到神经元的输出。

传递输出:将每个神经元的输出传递到下一层的神经元,依次执行加权求和和激活函数的步骤,直到达到输出层,得到最终的预测结果。

通过前向传播,神经网络可以根据当前的权重和输入数据计算出预测结果。

反向传播:
在反向传播过程中,神经网络根据预测结果和真实标签之间的差异,通过调整权重来优化模型的性能。过程可以分为以下几个步骤:

计算损失:通过比较预测结果和真实标签,计算出损失函数的值,用来衡量模型的预测误差。

反向传播误差:将损失从输出层向输入层反向传播,根据链式法则计算每个神经元对损失的贡献。

更新权重:根据反向传播过程中计算得到的梯度,使用优化算法(如梯度下降)来更新每个神经元的权重,使损失函数逐渐减小。

重复迭代:反复进行前向传播和反向传播的过程,不断更新权重,直到模型收敛或达到预设的训练轮数。

通过反向传播,神经网络可以根据预测误差来调整权重,从而使模型逐渐优化和改善预测性能。

1.4 损失函数和优化算法

损失函数(Loss Function)和优化算法(Optimization Algorithm)是深度学习中用于训练神经网络的组成部分。

损失函数:
损失函数用来衡量模型预测结果与真实标签之间的差异,即模型的预测误差。

通过定义一个合适的损失函数,可以 quantitatively 衡量模型的性能,并使用它来指导优化过程。常见的损失函数有:
均方误差(Mean Squared Error,MSE):用于回归问题,计算预测值与真实值之间的平方差。

交叉熵损失(Cross-Entropy Loss):用于分类问题,通过计算预测结果与真实标签的交叉熵来度量模型的预测误差。

对数似然损失(Log-Likelihood Loss):常用于概率模型,衡量预测结果与真实标签的对数似然。

选择合适的损失函数取决于具体的问题和模型类型。通过最小化损失函数,可以训练神经网络来更好地拟合训练数据,并提高其在新数据上的泛化能力。

优化算法:
优化算法用于调整神经网络中的权重和偏置,以最小化损失函数。

优化算法决定了如何在参数空间中搜索最优解,即找到能够使损失函数最小化的权重和偏置的组合。
梯度下降(Gradient Descent)是最基本和常用的优化算法。

通过计算损失函数关于权重和偏置的梯度,并按照梯度的方向进行参数更新,逐渐接近最优解。
随机梯度下降(Stochastic Gradient Descent,SGD)是梯度下降的一种变体,它在每次更新时仅使用一个样本的梯度估计,具有更快的收敛速度。

Adam、RMSprop 和 Adagrad 等优化算法结合了梯度下降的思想,并加入了自适应学习率的机制,可以更好地处理不同参数的梯度尺度和学习速率。

优化算法的选择往往取决于问题的复杂性、数据的规模和模型的架构。
通过不断迭代和更新权重,优化算法能够让神经网络逐步逼近全局最优解或局部最优解。

深度神经网络

2.1 卷积神经网络(CNN)

卷积神经网络(Convolutional Neural Network,CNN)是一种在计算机视觉和图像处理领域广泛应用的深度学习模型。它通过卷积层、池化层和全连接层等组件,能够有效地提取图像中的特征,并在分类、目标检测和图像识别等任务上取得出色的性能。

卷积层(Convolutional Layer):
卷积层是CNN的核心组件,它通过在图像上滑动一个或多个卷积核(也称为滤波器)来提取图像的特征。每个卷积核由一组可学习的权重构成,它在输入图像上进行局部区域的卷积操作,并生成特征映射(Feature Map)。卷积层可以学习到不同的特征,如边缘、纹理和形状等。

池化层(Pooling Layer):
池化层用于减小特征映射的空间尺寸,并保留主要特征。最常用的池化操作是最大池化(Max Pooling),它将每个特征映射划分成不重叠的区域,然后在每个区域中选择最大值作为池化结果。这样可以减少特征的维度,降低计算量,并增加模型的平移不变性。

全连接层(Fully Connected Layer):
全连接层接在卷积层和池化层之后,将提取的特征映射转换为一维向量,并通过多个神经元进行分类或回归。全连接层将前一层的输出与权重相乘,并通过激活函数进行非线性变换,生成最终的预测结果。

激活函数(Activation Function):
激活函数引入非线性变换,增加模型的表达能力。在CNN中,常用的激活函数包括ReLU(Rectified Linear Unit)、Sigmoid和Tanh。ReLU函数在正区间上保持输入不变,将负值映射为0,提供了更好的计算性能和模型收敛性。

多通道(Multiple Channels):
多通道指的是在卷积层中使用多个卷积核来提取不同的特征。每个卷积核生成一个特征映射,多个特征映射堆叠在一起形成多通道的特征表示。多通道的卷积层可以更好地捕捉图像中的多种特征。

深度(Depth):
深度指的是CNN中卷积层的层数。较深的网络可以学习到更抽象和高级的特征表示,有助于提高模型的表达能力和性能。深度学习中的经典CNN模型,如AlexNet、VGGNet、ResNet和Inception等,都具有多个卷积层和全连接层,以构建更深的网络结构。

填充(Padding):
填充是在输入图像周围添加额外像素的过程,以控制卷积操作后特征映射的尺寸。常见的填充方式有两种:零填充(Zero Padding)和边界填充(Border Padding)。填充可以保留输入图像的边缘信息,并减小特征映射的尺寸损失。

步幅(Stride):
步幅定义了卷积核在图像上滑动的步长。较大的步幅可以减小特征映射的尺寸,同时降低计算量。较小的步幅可以增加特征映射的空间维度,提取更丰富的局部信息。

参数共享(Parameter Sharing):
参数共享是CNN的重要特性之一。在卷积层中,每个卷积核在整个图像上滑动,共享相同的权重和偏置,以提取相似位置的特征。这样可以大大减少参数数量,提高模型的效率和泛化能力。

特征图(Feature Map):
特征图是卷积层输出的三维数据,其中包含了经过卷积和激活函数处理后的特征表示。每个特征图对应一个卷积核,表示不同的特征或模式在输入图像中的分布。

2.2 循环神经网络(RNN)

循环神经网络(Recurrent Neural Network,RNN)是一种用于处理序列数据的深度学习模型。与传统神经网络不同,RNN在处理序列数据时引入了循环连接,使得网络能够保留并利用先前的信息。这种结构使RNN在自然语言处理、语音识别、机器翻译等任务中表现出色。

基本结构:
RNN的基本结构包括一个隐藏状态(Hidden State)和一个输入(Input)。每个时间步,RNN会接收一个输入和上一步的隐藏状态,并产生一个输出和新的隐藏状态。隐藏状态可以被视为网络对先前信息的记忆,并在后续时间步中传递。

循环连接:
循环连接是RNN的关键特性。它允许网络在处理序列数据时利用先前的信息。在每个时间步,RNN会将当前输入和上一步的隐藏状态传递给下一个时间步,从而实现信息的循环传递。

前向传播:
RNN的前向传播过程可以分为以下几个步骤:

  1. 在每个时间步,RNN接收一个输入和上一步的隐藏状态。
  2. 输入和隐藏状态经过线性变换,并通过激活函数得到当前时间步的输出。
  3. 当前时间步的输出同时作为下一个时间步的隐藏状态,并在下一个时间步中继续循环传递。

长期依赖问题:
传统RNN存在长期依赖问题,即网络在处理较长序列时,很难有效地利用先前的信息。为了解决这个问题,出现了一些改进的RNN结构,如长短期记忆网络(Long Short-Term Memory,LSTM)和门控循环单元(Gated Recurrent Unit,GRU)。这些结构通过引入门机制和记忆单元,能够更好地捕捉长期依赖关系。

双向循环神经网络:
双向循环神经网络(Bidirectional RNN)是RNN的扩展形式,它同时考虑了过去和未来的上下文信息。它包含两个RNN,一个按正序处理输入序列,另一个按逆序处理输入序列。然后将它们的输出进行合并,以综合过去和未来的信息。

应用领域:
RNN在自然语言处理(如语言建模、机器翻译、情感分析)、语音识别、语音合成、时间序列预测等领域具有广泛应用。它能够处理变长序列数据,并捕捉序列中的时序关系和上下文信息。

训练和反向传播:
RNN的训练过程与其他神经网络相似,使用反向传播算法进行参数更新。在反向传播中,梯度信息从后向前传播,沿着时间步展开的路径进行更新。由于RNN存在时间依赖,梯度在时间上可以通过时间展开进行反向传播。

序列到序列模型:
序列到序列(Sequence-to-Sequence)模型是RNN的一种常见应用,用于将一个序列映射到另一个序列。例如,机器翻译任务中将源语言句子翻译为目标语言句子。该模型使用编码器-解码器结构,其中编码器RNN将源序列编码为固定长度的向量,解码器RNN将向量解码为目标序列。

RNN变体:
除了LSTM和GRU之外,还有其他一些RNN的变体,用于解决不同类型的任务。例如,递归神经网络(Recursive Neural Network)用于处理树状结构的数据,深度循环神经网络(Deep RNN)引入多个隐藏层以增加模型的深度。

注意力机制:
注意力机制是一种在RNN中引入的机制,用于提高对序列中不同部分的关注度。它使网络能够根据输入的重要性动态地分配注意力。注意力机制在机器翻译、文本摘要等任务中取得了显著的性能提升。

2.3 长短期记忆网络(LSTM)

长短期记忆网络(Long Short-Term Memory,LSTM)是一种特殊类型的循环神经网络(RNN),它被设计用于解决传统RNN中的长期依赖问题。LSTM通过引入门控机制和记忆单元,能够有效地捕捉和存储长期的序列信息。

LSTM结构:
LSTM由一个存储状态(Cell State)和三个门组成:输入门(Input Gate)、遗忘门(Forget Gate)和输出门(Output Gate)。每个门都由一个Sigmoid激活函数和一个逐元素乘法操作组成,用于控制信息的流动和存储。

存储状态(Cell State):
存储状态是LSTM的核心组件之一,用于存储和传递长期的信息。存储状态在每个时间步上被更新,其值受到输入门、遗忘门和输出门的控制。通过这种方式,LSTM可以选择性地保留或遗忘先前的信息。

输入门(Input Gate):
输入门决定了新输入应该在多大程度上被纳入存储状态。它通过将当前输入和先前的隐藏状态作为输入,并经过Sigmoid激活函数产生一个0到1之间的值。该值与当前输入的元素相乘后,将结果添加到存储状态中。

遗忘门(Forget Gate):
遗忘门决定了存储状态中哪些信息应该被遗忘。类似于输入门,遗忘门接收当前输入和先前的隐藏状态,并通过Sigmoid激活函数生成一个遗忘门向量。该向量与存储状态元素逐元素相乘后,更新存储状态,从而控制了哪些信息应该被遗忘。

输出门(Output Gate):
输出门决定了当前隐藏状态的输出。它接收当前输入和先前的隐藏状态,并通过Sigmoid激活函数生成一个输出门向量。将输出门向量与经过tanh激活的存储状态逐元素相乘后,得到当前时间步的隐藏状态。这个隐藏状态既可以作为当前时间步的输出,也可以传递给下一个时间步。

LSTM的训练和反向传播:
LSTM的训练过程与其他神经网络相似,使用反向传播算法进行参数更新。通过时间展开,将LSTM展开为多个时间步,并在每个时间步计算损失函数的梯度。然后使用梯度下降算法更新LSTM的参数。

应用领域:
LSTM在序列建模和处理序列数据的任务中表现出色。它在机器翻译、语音识别、文本生成、语言建模、情感分析等领域都得到了广泛应用。由于LSTM能够有效地处理长期依赖关系,它在处理自然语言任务中特别有优势,能够捕捉句子中的语法结构和语义关系。

变体和扩展:
LSTM有一些常见的变体和扩展,用于应对不同类型的任务和改进性能。其中包括双向LSTM(Bidirectional LSTM),它能够同时考虑过去和未来的上下文信息;多层LSTM,通过堆叠多个LSTM层来增加模型的深度;注意力机制LSTM(Attention LSTM),结合了注意力机制和LSTM,能够动态地对序列中不同部分进行加权。

长期依赖和梯度消失问题:
传统RNN在处理长序列时容易遇到梯度消失或梯度爆炸的问题,导致难以捕捉长期依赖关系。LSTM通过精心设计的门控机制,有效地解决了这个问题。输入门和遗忘门可以控制信息的流动,从而保留或遗忘先前的信息,避免了梯度的衰减或爆炸。

注意事项:
在使用LSTM时,需要考虑一些注意事项:

数据预处理:对输入数据进行适当的归一化、标准化或编码,以便更好地适应LSTM的训练。
参数调整:选择合适的学习率、批量大小、迭代次数等超参数,以获得最佳的性能。
防止过拟合:可以采用正则化技术(如L2正则化)或使用Dropout层来减少过拟合。
梯度裁剪:通过限制梯度的范围,防止梯度爆炸问题。
初始状态设置:对于循环连接,初始状态的选择对结果具有重要影响,可以尝试不同的初始化策略。

2.4 生成对抗网络(GAN)

生成对抗网络(Generative Adversarial Networks,GAN)是一种由生成器和判别器组成的深度学习模型。GAN的目标是训练生成器能够生成与真实数据相似的样本,并同时训练判别器来区分生成的样本与真实样本。通过对抗的方式,生成器和判别器相互竞争和优化,最终使得生成器能够生成更逼真的样本。

基本结构:
GAN由两个主要组件组成:生成器(Generator)和判别器(Discriminator)。
生成器:生成器接受一个随机噪声向量作为输入,并通过一系列转换将其转换为与真实样本相似的数据。生成器的目标是尽可能欺骗判别器,使其将生成的样本误认为是真实的。
判别器:判别器接收真实样本和生成器生成的样本作为输入,并输出一个概率值,表示输入样本来自真实数据集的概率。判别器的目标是准确地区分生成的样本和真实的样本。

对抗训练过程:
GAN的训练过程是一个对抗性的过程,生成器和判别器相互博弈,互相提高。
生成器训练:生成器通过生成样本,并将其传递给判别器。生成器的目标是使生成的样本被判别器误认为是真实样本,即最大化判别器的输出概率。
判别器训练:判别器接收真实样本和生成器生成的样本,并将它们分类为真实或生成的。判别器的目标是准确地区分真实和生成的样本,即最小化分类错误的概率。

损失函数:
GAN使用两个损失函数来训练生成器和判别器。
生成器损失:生成器的损失函数是生成的样本被判别器错误分类的概率的负对数似然。生成器的目标是最小化这个损失,以生成更逼真的样本。
判别器损失:判别器的损失函数是真实样本被正确分类和生成样本被错误分类的概率的负对数似然之和。判别器的目标是最小化这个损失,以更好地区分真实和生成的样本。

应用领域:
GAN在图像生成、图像修复、图像转换、文本生成等领域具有广泛应用。它可以生成逼真的图像、改变图像的特征、合成新的图像等。

GAN训练:
GAN训练过程中存在的问题:

模式崩溃(Mode Collapse):生成器可能陷入模式崩溃的状态,只生成有限的几种样本,而忽略了数据集中的其他模式。
平衡问题:生成器和判别器之间的平衡是一个挑战。如果生成器过于强大,判别器无法有效区分真实和生成的样本,导致训练不稳定。反之,如果判别器过于强大,生成器无法生成逼真的样本。
梯度消失和梯度爆炸:在训练过程中,梯度消失或梯度爆炸问题可能会出现,影响模型的收敛性和训练效果。
训练不稳定:GAN的训练通常是不稳定的,容易出现训练过程中的震荡和振荡现象,需要仔细调整超参数和网络结构。

GAN的变体:
条件GAN(Conditional GAN):在生成器和判别器中引入条件信息,使生成的样本能够满足特定条件。
Wasserstein GAN(WGAN):通过引入Wasserstein距离来改进GAN的训练稳定性,并解决了模式崩溃的问题。
注意力GAN(Attention GAN):在生成器和判别器中引入注意力机制,使模型能够更好地关注重要的特征。
无监督学习GAN(Unsupervised GAN):在没有标签的情况下训练GAN,用于学习无监督的特征表示和数据分布。

神经网络训练技巧

3.1 数据预处理

3.2 批量归一化

3.3 正则化和dropout

3.4 参数初始化策略

深度学习应用领域

4.1 图像识别和分类

4.2 自然语言处理

4.3 语音识别

4.4 强化学习

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

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

相关文章

C#可视化 商品信息管理系统(具体做法及全部代码)

目录 题目: 效果图: 数据库: 做法: 主页面添加menustrip,之后添加两个窗体双击事件,双击下拉区域就好了。 添加界面 查询按钮功能 datagirdview设置 全部代码: DBHelper类 From1主窗体代…

【并发篇】01 java中的线程状态

Java线程分为6种状态: (1)新建NEW:用new关键字创建的线程就是新建状态,这时候还没有和系统底层真正的线程关联起来,还仅仅只是一个java对象,所以这个时候这个线程不会被系统分配给cpu。 &#…

【云原生】docker

容器化越来越受欢迎,因为容器是: ●灵活:即使是最复杂的应用也可以集装箱化。 ●轻量级:容器利用并共享主机内核。 ●可互换:可以即时部署更新和升级。 ●便携式:可以在本地构建,部署到云&#…

shel脚本基础1——变量基础、脚本运算符

文章目录 一、变量基础二、bash变量类型三、脚本基础知识3.1 脚本测试命令3.2 shell运算符3.3 命令逻辑关系3.4 bash条件判断3.4.1 条件测试的表达式3.4.2 整数测试3.4.2 字符测试3.4.3 文件测试3.4.4 组合测试条件 一、变量基础 变量的含义: 变量可以通过变量名访问…

5.数据结构期末复习之图以及相关算法

1.应用: 教学计划(先修什么才能修什么课程)社交网络地图导航 2.什么是图? 顶点(有穷非空个)顶点的边 ,抽象为G(V,E) (Vert,Edge) 1.无向图: 点到点都可以到达 表示为(vi,vj) 2.有向图 只能一个点到另外一个点 表示为<vi,vj> 又分为: 1.非带权图(上面的例子就是) 2.带权图…

Day29

TCP_SER #include <myhead.h>//定义处理错误的宏函数 #define ERR_MSG(msg) do{\fprintf(stderr,"line:%d %s %s",__LINE__, __FILE__, __func__);\perror(msg);\ }while(0)//定义IP和端口号 #define IP "192.168.2.186" #define PORT 6666int …

数组的定义方式及访问

问题 如何创建及访问数组。 方法 了解数组的概念 数组就是存储多个数据的容器&#xff0c;数组的长度固定&#xff0c;多个数据的数据类型要一致。 数组的三种定义方式 数据存储的数据类型[] 数组名字 new 数组存储的数据类型[长度] 数据类型[] 数组名 new 数据类型[]{元素…

测试人35岁何去何从?软件测试路在何方?“我“一路升级打怪...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 测试员干到35岁&a…

暑期健身房招生活动文案分享,在线传单设计

想要有效地宣传健身房的信息&#xff0c;还能够吸引学员了解报名的宣传单要怎么制作&#xff1f;不用自己动手设计&#xff0c;借助在线模板和在线设计工具&#xff0c;一键就能生成专属的招生传单。以下是在线招生传单设计教程和传单设计模板使用教程。 首先找到一个在线设计工…

Juypter更改默认路径,并且解决改完默认路径不自动跳转的问题

目录 更改默认路径 第一步先在你所安装的juypter的环境下输入下面代码 第二步在自己的文件夹下找到这个目录&#xff0c;用记事本打开 第三步更改快捷方式 解决浏览器不调转方法 相对于juypter来讲&#xff0c;还是挺好用的&#xff0c;自我感觉比pycharm更好一点。 juypt…

ES6中 Promise和使用场景

介绍 &#x1f959;&#x1f959;&#x1f959;更加合理和更加强大 Promise&#xff0c;译为承诺&#xff0c;是异步编程的一种解决方案&#xff0c;比传统的解决方案&#xff08;回调函数&#xff09;更加合理和更加强大 在以往我们如果处理多层异步操作&#xff0c;我们往往…

群晖服务器被encrypted勒索病毒攻击后的表现与如何解密勒索病毒

群晖服务器是一种高效的数据管理方案&#xff0c;但是如果被Encrypted勒索病毒感染&#xff0c;可能会导致许多重要的数据会丢失。Encrypted勒索病毒将加密被感染服务器上的文件&#xff0c;导致它们无法打开。一旦我们遭到encrypted勒索病毒攻击&#xff0c;建议大家选择专业的…

【Web开发技术】异常处理机制的使用

文章目录 一、引言1、应用场景2、语法3、体系 二、详细设计&#xff08;后端开发&#xff09;1、信息提示常量类2、自定义异常3、Model层4、Controller层5、View层 一、引言 编程也有很久的时间了&#xff0c;如果每个报的错误和寻找的答案写成一张纸&#xff0c;叠加起来也得有…

JAVA项目代码几乎没有改动,重新发布后突然报错,无法启动

项目场景&#xff1a; 提示&#xff1a;这里简述项目相关背景&#xff1a; JAVA项目代码几乎没有改动&#xff0c;重新发布后突然报错&#xff0c;无法启动 问题描述 提示&#xff1a;这里描述项目中遇到的问题&#xff1a; JAVA项目代码几乎没有改动&#xff0c;重新发布后…

2023年PMP 续证的费用和流程最全介绍

PMP证书并不是终身有效的&#xff0c;是需要三年一续的&#xff0c;PMI会在有效期截止前给持证者发邮件提示换证&#xff08;续证&#xff09;。目前的续证费用为150美金和积满60个PDU&#xff0c;60个PDU是在证书三年有效期内积满就可以&#xff0c;像我的培训机构艾威每周都会…

当Mysql缓慢时,这几招可解燃眉之急

第一步定位问题源&#xff1a; 常见的以查询Mysql性能问题的方法 1.大部分的性能问题都是查询过慢的问题&#xff0c;可以查询慢sql日志。 通过慢查询日志定位那些执行效率较低的SQL语句&#xff0c;用–log-slow-queries[ file_name]选项启动时&#xff0c;mysqld写一个包含所…

售后退换货客服话术

在客服的工作生涯里&#xff0c;售后退换货这种问题&#xff0c;对于我们客服来说可以说是见惯不惯了。今天小编给大家准备了一些退换货的售后回复话术&#xff0c;让大家工作起来更加高效。 一、引导退换货 1.亲&#xff0c;麻烦您收到后请先试穿&#xff0c;请一定要保持衣服…

WordPress入门版,保姆级记录

服务器里用户越近&#xff0c;访问速度越快&#xff0c;所以需要根据用户群体选择合适的服务器 国外网站&#xff1a;SiteGround国内网站&#xff1a;阿里云 bidewang.co/sg WordPress托管服务器页面&#xff0c;一般选择第二个套餐 没有域名则选择购买域名 然后填选购买信息…

007-从零搭建微服务-网关中心(一)

写在最前 如果这个项目让你有所收获&#xff0c;记得 Star 关注哦&#xff0c;这对我是非常不错的鼓励与支持。 源码地址&#xff1a;https://gitee.com/csps/mingyue 文档地址&#xff1a;https://gitee.com/csps/mingyue/wikis 新建 mingyue-gateway 在 【从零搭建微服务…

练习SpringBoot烘培坊项目

烘培坊项目 文章目录 烘培坊项目项目概述项目搭建项目关键代码实现实现首页轮播图实现注册功能实现登录功能实现图片上传稿件管理页面内容列表功能稿件管理页面修改功能稿件管理页面删除功能首页三个类型下的分类展示首页三种类型的内容展示点击查看更多进入列表页面在header里…