深入详解神经网络基础知识——理解前馈神经网络( FNN)、卷积神经网络(CNN)和循环神经网络(RNN)等概念及应用
深入详解神经网络基础知识
深度学习作为人工智能(AI)的核心分支之一,近年来在各个领域取得了显著的成果。从图像识别、自然语言处理到自动驾驶,深度学习技术的应用无处不在。而深度学习的基础,神经网络,是理解和掌握这一强大工具的关键。本文将深入探讨神经网络的基础知识,包括前馈神经网络(Feedforward Neural Networks, FNN)、卷积神经网络(Convolutional Neural Networks, CNN)和循环神经网络(Recurrent Neural Networks, RNN)等,并通过详细的示例代码帮助读者更好地理解这些概念。
目录
深入详解神经网络基础知识
1. 引言
2. 神经网络概述
2.1 生物神经网络与人工神经网络
2.2 神经网络的基本组成
3. 前馈神经网络(FNN)
3.1 结构与原理
3.2 激活函数
3.3 损失函数
3.4 训练过程
3.5 示例代码
4. 卷积神经网络(CNN)
4.1 结构与原理
4.2 卷积层
4.3 池化层
4.4 常见架构
4.5 示例代码
5. 循环神经网络(RNN)
结构与原理
长短期记忆网络(LSTM)
门控循环单元(GRU)
应用场景
示例代码
6. 深度学习的优化技术
正则化
批量归一化(Batch Normalization)
早停法(Early Stopping)
数据增强(Data Augmentation)
7. 实践中的神经网络设计
数据预处理
超参数调优
模型评估
8. 总结与展望
9. 参考资料
1. 引言
神经网络是深度学习的核心,通过模拟人脑的神经元连接,实现对复杂数据的抽象和理解。自从Geoffrey Hinton等人在上世纪80年代提出反向传播算法以来,神经网络在计算能力增强和大数据时代的推动下,取得了飞速的发展。本文旨在为读者提供一个全面、深入的神经网络基础知识体系,涵盖前馈神经网络、卷积神经网络和循环神经网络,并辅以详细的示例代码。
2. 神经网络概述
2.1 生物神经网络与人工神经网络
神经网络的灵感来源于生物神经系统,特别是人脑的神经元结构。在生物神经网络中,数以亿计的神经元通过突触相互连接,形成复杂的网络结构,实现信息传递和处理。人工神经网络(Artificial Neural Networks, ANN)则是对生物神经网络的简化和抽象,通过模拟神经元和突触的功能,构建能够进行学习和预测的计算模型。
2.2 神经网络的基本组成
一个典型的神经网络由以下几个基本组成部分构成:
1. 神经元(Neurons):基本的计算单元,接受输入并产生输出。
2. 层(Layers):神经元的集合,通常包括输入层、隐藏层和输出层。
3. 权重(Weights):连接神经元之间的参数,决定信息传递的强度。
4. 偏置(Bias):调整输出的参数,帮助模型更好地拟合数据。
5. 激活函数(Activation Functions):引入非线性,使网络能够学习复杂的模式。
6. 损失函数(Loss Functions):衡量模型预测与真实值之间的差异。
7. 优化器(Optimizers):用于调整网络参数,以最小化损失函数。
3. 前馈神经网络(FNN)
前馈神经网络(Feedforward Neural Networks, FNN)是最基本的神经网络结构,信息在网络中单向流动,从输入层通过隐藏层传递到输出层,没有循环或反馈连接。
3.1 结构与原理
FNN由多个层次组成:
输入层(Input Layer):接收原始数据的特征向量。
隐藏层(Hidden Layers):一或多个层,进行特征的非线性变换。
输出层(Output Layer):产生最终的预测结果。
每个神经元与上一层的所有神经元相连接,权重和偏置决定了每个连接的强度和输出位置。
3.2 激活函数
激活函数为神经网络引入非线性,使其能够拟合复杂的函数关系。常见的激活函数包括:
Sigmoid:
\[
\sigma(x) = \frac{1}{1 + e^{-x}}
\]
映射输入到(0,1)区间,适用于二分类问题的输出。
ReLU(Rectified Linear Unit):
\[
\text{ReLU}(x) = \max(0, x)
\]
简单高效,广泛应用于隐藏层。
Tanh(双曲正切):
\[
\tanh(x) = \frac{e^{x} - e^{-x}}{e^{x} + e^{-x}}
\]
映射输入到(-1,1)区间。
3.3 损失函数
损失函数用于衡量模型预测值与真实值之间的差异,常见的损失函数有:
均方误差(Mean Squared Error, MSE):适用于回归问题。
交叉熵损失(Cross-Entropy Loss):适用于分类问题。
3.4 训练过程
神经网络的训练过程主要包括前向传播和反向传播:
1. 前向传播:数据从输入层经过隐藏层传递到输出层,计算输出值。
2. 损失计算:根据输出值与真实值计算损失。
3. 反向传播:根据损失对网络参数进行梯度计算。
4. 参数更新:使用优化器调整权重和偏置,以最小化损失。
3.5 示例代码
以下是一个使用TensorFlow和Keras构建和训练前馈神经网络的示例,用于手写数字识别任务(MNIST数据集)。
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Flatten
from tensorflow.keras.datasets import mnist
from tensorflow.keras.utils import to_categorical# 加载MNIST数据集
(x_train, y_train), (x_test, y_test) = mnist.load_data()# 数据预处理
x_train = x_train.astype('float32') / 255.0 # 标准化
x_test = x_test.astype('float32') / 255.0
y_train = to_categorical(y_train, 10) # 独热编码
y_test = to_categorical(y_test, 10)# 构建前馈神经网络模型
model = Sequential([Flatten(input_shape=(28, 28)), # 输入层,将28x28的图像展平为784维向量Dense(128, activation='relu'), # 第一个隐藏层,128个神经元,ReLU激活Dense(64, activation='relu'), # 第二个隐藏层,64个神经元,ReLU激活Dense(10, activation='softmax') # 输出层,10个神经元,对应10个类别,Softmax激活
])# 编译模型
model.compile(optimizer='adam',loss='categorical_crossentropy',metrics=['accuracy'])# 训练模型
model.fit(x_train, y_train, epochs=20, batch_size=32, validation_split=0.2)# 评估模型
test_loss, test_acc = model.evaluate(x_test, y_test)
print(f'测试准确率: {test_acc:.4f}')
代码注释说明:
1. 数据加载与预处理:
使用Keras内置的`mnist`数据集。
将图像像素值标准化到[0,1]区间,提高训练效率。
将标签进行独热编码,以适应多分类的损失函数。2. 模型构建:
使用`Sequential`顺序模型,逐层堆叠网络结构。
`Flatten`层将二维图像数据展平为一维向量。
`Dense`全连接层作为隐藏层,激活函数选择ReLU引入非线性。
输出层使用Softmax激活函数,将输出转换为概率分布。3. 模型编译与训练:
编译时选择Adam优化器和交叉熵损失函数,适用于多分类问题。
训练过程中使用20个epoch和32的批量大小,使用20%的训练数据作为验证集。4. 模型评估:
在测试集上评估模型性能,输出测试准确率。
4. 卷积神经网络(CNN)
卷积神经网络(Convolutional Neural Networks, CNN)专为处理具有网格结构的数据设计,尤其在图像处理领域表现卓越。CNN通过局部连接、权重共享和池化操作,能够有效捕捉数据中的空间特征。
4.1 结构与原理
典型的CNN由以下几类层组成:
1. 卷积层(Convolutional Layers):通过卷积操作提取局部特征。
2. 激活层(Activation Layers):引入非线性,如ReLU。
3. 池化层(Pooling Layers):降低特征图的尺寸,减少计算量和过拟合。
4. 全连接层(Fully Connected Layers):将提取的特征映射到输出类别。
5. 输出层(Output Layers):产生最终的预测结果。
4.2 卷积层
卷积层通过应用多个滤波器(卷积核)在输入数据上滑动,计算卷积操作,从而提取不同层次的特征。每个卷积核学习到一种特定的特征,如边缘、纹理等。
公式表示:
\[
\text{Output}(i, j) = \sum_{m=0}^{M-1} \sum_{n=0}^{N-1} \text{Input}(i+m, j+n) \times \text{Filter}(m, n)
\]
4.3 池化层
池化层用于下采样,通过取局部区域的最大值(最大池化)或平均值(平均池化)来减少特征图的尺寸,减小计算量,并具有一定的平移不变性。
4.4 常见架构
1. LeNet:早期的CNN架构,应用于手写数字识别。
2. AlexNet:在2012年ImageNet竞赛中取得突破,采用ReLU激活和Dropout正则化。
3. VGG:通过增加网络深度(16-19层)提升性能,使用小卷积核(3x3)。
4. ResNet:引入残差连接,解决深层网络训练中的梯度消失问题,支持上百层的深度。
4.5 示例代码
以下是使用TensorFlow和Keras构建和训练简单卷积神经网络的示例,用于CIFAR-10图像分类任务。
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense, Dropout
from tensorflow.keras.datasets import cifar10
from tensorflow.keras.utils import to_categorical# 加载CIFAR-10数据集
(x_train, y_train), (x_test, y_test) = cifar10.load_data()# 数据预处理
x_train = x_train.astype('float32') / 255.0 # 标准化
x_test = x_test.astype('float32') / 255.0
y_train = to_categorical(y_train, 10) # 独热编码
y_test = to_categorical(y_test, 10)# 构建CNN模型
model = Sequential([Conv2D(32, (3, 3), activation='relu', padding='same', input_shape=(32, 32, 3)),Conv2D(32, (3, 3), activation='relu', padding='same'),MaxPooling2D(pool_size=(2, 2)),Dropout(0.25),Conv2D(64, (3, 3), activation='relu', padding='same'),Conv2D(64, (3, 3), activation='relu', padding='same'),MaxPooling2D(pool_size=(2, 2)),Dropout(0.25),Flatten(),Dense(512, activation='relu'),Dropout(0.5),Dense(10, activation='softmax')
])# 编译模型
model.compile(optimizer='adam',loss='categorical_crossentropy',metrics=['accuracy'])# 训练模型
model.fit(x_train, y_train, epochs=50, batch_size=64, validation_split=0.2, verbose=2)# 评估模型
test_loss, test_acc = model.evaluate(x_test, y_test)
print(f'测试准确率: {test_acc:.4f}')
代码注释说明:
1. 数据加载与预处理:
使用Keras内置的CIFAR-10数据集。
将图像像素值标准化到[0,1]区间。
标签进行独热编码,适应多分类任务。2. 模型构建:
使用`Sequential`顺序模型。
第一组卷积层:两层32个3x3卷积核,ReLU激活,保持输入尺寸(`padding='same'`)。
第一个池化层:2x2最大池化,减少特征图尺寸。
Dropout层:防止过拟合,随机丢弃25%的神经元。
第二组卷积层:两层64个3x3卷积核。
第二个池化层和`Dropout`层。
Flatten`层将多维特征图展平为一维向量。
全连接层:512个神经元,ReLU激活。
最后一个`Dropout`层和输出层(10个神经元,Softmax激活)。3. 模型编译与训练:
使用Adam优化器和交叉熵损失函数。
训练50个epoch,批量大小为64,使用20%的训练数据作为验证集。4. 模型评估:
在测试集上评估模型性能,输出测试准确率。
5. 循环神经网络(RNN)
循环神经网络(Recurrent Neural Networks, RNN)专门用于处理序列数据,如时间序列、文本和音频。与前馈神经网络不同,RNN具有内部循环连接,能够记忆和利用前序信息。
结构与原理
RNN通过在时间步(time steps)上共享参数,处理序列中的每个元素。每个时间步的输出不仅依赖于当前输入,还依赖于前一个时间步的隐藏状态,从而捕捉序列中的上下文信息。
核心公式:
\[
h_t = \sigma(W_{hh}h_{t-1} + W_{xh}x_t + b_h)
\]
\[
y_t = W_{hy}h_t + b_y
\]
其中:
\( h_t \) 是当前隐藏状态。
\( x_t \) 是当前输入。
\( W_{hh} \), \( W_{xh} \), \( W_{hy} \) 是权重矩阵。
\( b_h \), \( b_y \) 是偏置向量。
\( \sigma \) 是激活函数(通常是tanh或ReLU)。
长短期记忆网络(LSTM)
传统RNN在处理长序列时,容易出现梯度消失或爆炸的问题,难以捕捉远距离依赖关系。长短期记忆网络(Long Short-Term Memory, LSTM)通过引入门控机制,有效缓解了这一问题。
LSTM的核心结构包括三个门:
1. 遗忘门(Forget Gate):决定保留多少前一时间步的信息。
2. 输入门(Input Gate):决定当前输入的信息量。
3. 输出门(Output Gate):决定输出多少当前隐藏状态。
门控循环单元(GRU)
门控循环单元(Gated Recurrent Unit, GRU)是LSTM的简化版本,合并了遗忘门和输入门,减少了参数数量,同时保持了类似的性能。
应用场景
自然语言处理:语言建模、机器翻译、文本生成。
时间序列预测:股票价格预测、气象预测。
语音识别:语音转文字。
视频分析:动作识别、视频摘要。
示例代码
以下是使用TensorFlow和Keras构建和训练LSTM模型的示例,用于IMDB电影评论情感分类任务。`
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Embedding, LSTM, Dense, Dropout
from tensorflow.keras.datasets import imdb
from tensorflow.keras.preprocessing import sequence# 参数设置
max_features = 20000 # 词汇表大小
maxlen = 100 # 序列最大长度# 加载IMDB数据集
(x_train, y_train), (x_test, y_test) = imdb.load_data(num_words=max_features)# 数据预处理,填充序列
x_train = sequence.pad_sequences(x_train, maxlen=maxlen)
x_test = sequence.pad_sequences(x_test, maxlen=maxlen)# 构建LSTM模型
model = Sequential([Embedding(max_features, 128, input_length=maxlen), # 嵌入层,将词索引转换为密集向量LSTM(128, dropout=0.2, recurrent_dropout=0.2), # LSTM层,128个隐藏单元Dense(1, activation='sigmoid') # 输出层,二分类
])# 编译模型
model.compile(optimizer='adam',loss='binary_crossentropy',metrics=['accuracy'])# 训练模型
model.fit(x_train, y_train, epochs=10, batch_size=64, validation_split=0.2)# 评估模型
test_loss, test_acc = model.evaluate(x_test, y_test)
print(f'测试准确率: {test_acc:.4f}')
代码注释说明:
1. 参数设置与数据加载:
max_features:词汇表大小,选择最常见的20000个词。
maxlen:将所有序列填充或截断到100个词。
使用Keras内置的IMDB数据集,默认按频率编码词索引。2. 数据预处理:
使用`pad_sequences`将所有序列填充到固定长度,确保输入数据具有统一的形状。3. 模型构建:
Embedding层将词索引转换为128维的密集向量。
LSTM层具有128个隐藏单元,dropout和recurrent_dropout用于防止过拟合。
输出层使用Sigmoid激活函数,适用于二分类任务。4. 模型编译与训练:
使用Adam优化器和二元交叉熵损失函数。
训练10个epoch,批量大小为64,使用20%的训练数据作为验证集。5. 模型评估:
在测试集上评估模型性能,输出测试准确率。
6. 深度学习的优化技术
在深度神经网络的训练过程中,优化模型性能和防止过拟合是至关重要的。以下是几种常见的优化技术:
正则化
正则化通过在损失函数中添加惩罚项,限制模型的复杂度,防止过拟合。常见的正则化方法包括:
L1正则化(Lasso):促进稀疏性,适用于特征选择。
L2正则化(Ridge):限制权重的绝对值,防止权重过大。
示例:
from tensorflow.keras.regularizers import l2Dense(64, activation='relu', kernel_regularizer=l2(0.001))
批量归一化(Batch Normalization)
批量归一化通过对每一层的输入进行标准化,加速训练过程,提高模型的稳定性。
示例:
from tensorflow.keras.layers import BatchNormalizationmodel.add(Dense(64, activation='relu'))
model.add(BatchNormalization())
早停法(Early Stopping)
早停法通过监控验证集的性能,提前停止训练以防止过拟合。
示例:
from tensorflow.keras.callbacks import EarlyStoppingearly_stopping = EarlyStopping(monitor='val_loss', patience=5, restore_best_weights=True)
model.fit(x_train, y_train, epochs=100, batch_size=32, validation_split=0.2, callbacks=[early_stopping])
数据增强(Data Augmentation)
数据增强通过对训练数据进行随机变换(如旋转、平移、翻转),增加数据的多样性,提升模型的泛化能力。
示例(适用于图像数据):
from tensorflow.keras.preprocessing.image import ImageDataGeneratordatagen = ImageDataGenerator(rotation_range=20,width_shift_range=0.2,height_shift_range=0.2,horizontal_flip=True
)datagen.fit(x_train)
model.fit(datagen.flow(x_train, y_train, batch_size=32), epochs=50, validation_data=(x_test, y_test))
7. 实践中的神经网络设计
在实际应用中,设计和训练神经网络需要综合考虑数据预处理、模型结构、超参数调优和模型评估等多个方面。
数据预处理
高质量的数据预处理是深度学习成功的关键,包括:
数据清洗:处理缺失值、异常值。
特征缩放:标准化或归一化特征。
数据增强:增加数据多样性。
类别平衡:处理不平衡类别问题,如过采样、欠采样。
超参数调优
超参数的选择直接影响模型性能,常见的超参数包括:
学习率(Learning Rate):控制梯度更新的步长。
批量大小(Batch Size):每次训练使用的样本数量。
网络深度与宽度:隐藏层数和每层的神经元数量。
正则化参数:如L1、L2正则化系数。
优化器选择:如SGD、Adam、RMSprop等。
常用的超参数调优方法有网格搜索(Grid Search)、随机搜索(Random Search)和贝叶斯优化(Bayesian Optimization)。
模型评估
合理的模型评估方法确保模型在未见数据上的表现良好,包括:
训练集与测试集划分:合理分配数据集,确保模型评估的公正性。
交叉验证(Cross-Validation):通过多次训练和验证,获得稳定的性能估计。
评价指标:根据任务类型选择合适的指标,如准确率、精确率、召回率、F1分数、AUC-ROC等。
8. 总结与展望
本文深入探讨了深度学习中神经网络的基础知识,包括前馈神经网络、卷积神经网络和循环神经网络等。通过详细的结构解析和示例代码,展示了这些网络在实际任务中的应用方法。随着计算能力的提升和算法的不断优化,神经网络将在更多领域发挥重要作用。未来,结合自监督学习、强化学习等新兴技术,神经网络有望在更复杂和多样化的任务中取得突破。
9. 参考资料
1.深度学习(Ian Goodfellow, Yoshua Bengio, Aaron Courville 著)
2. 神经网络与深度学习(Michael Nielsen 著)
3. TensorFlow官方网站:https://www.tensorflow.org/
4. Keras官方网站:https://keras.io/
5. PyTorch官方网站:https://pytorch.org/
相关文章:

深入详解神经网络基础知识——理解前馈神经网络( FNN)、卷积神经网络(CNN)和循环神经网络(RNN)等概念及应用
深入详解神经网络基础知识 深度学习作为人工智能(AI)的核心分支之一,近年来在各个领域取得了显著的成果。从图像识别、自然语言处理到自动驾驶,深度学习技术的应用无处不在。而深度学习的基础,神经网络,是理…...

react 项目打包二级目 使用BrowserRouter 解决页面刷新404 找不到路由
使用BrowserRouter package 配置 (这部分代码可以不做配置也能实现) {"homepage": "/admin",}vite.config 配置 export default defineConfig({base: /admin])BrowserRouter 添加配置项 <BrowserRouter basename/admin>&l…...

EasyPlayer.js播放器Web播放H.265要兼顾哪些方面?
在数字化时代,流媒体技术已经成为信息传播和娱乐消费的重要方式。随着互联网技术的飞速发展和移动设备的普及,流媒体服务正在重塑我们的生活和工作方式。从视频点播、在线直播到音乐流媒体,流媒体技术的广泛应用不仅改变了内容的分发和消费模…...

使用 acme.sh 申请域名 SSL/TLS 证书完整指南
使用 acme.sh 申请域名 SSL/TLS 证书完整指南 简介为什么选择 acme.sh 和 ZeroSSL?前置要求安装过程 步骤一:安装 acme.sh步骤二:配置 ZeroSSL 证书申请 方法一:手动 DNS 验证(推荐新手使用)方法二…...

睡岗和玩手机数据集,4653张原始图,支持YOLO,VOC XML,COCO JSON格式的标注
睡岗和玩手机数据集,4653张原始图,支持YOLO,VOC XML,COCO JSON格式的标注 数据集分割 训练组70% 3257图片 有效集20% 931图片 测试集10% 465图片 预处理 没有采用任何预处…...

[Unity] 【VR】【游戏开发】在VR中使用New Input System获取按键值的完整教程
在使用Unity开发VR项目时,推荐使用 New Input System 来处理输入操作。相比于旧的Input系统,New Input System更加灵活、功能强大,尤其在处理VR控制器的按键输入时具有明显优势。本文将详细介绍如何在VR项目中使用New Input System获取按键值,并通过代码示例和图文讲解,帮…...

网络安全渗透有什么常见的漏洞吗?
弱口令与密码安全问题 THINKMO 01 暴力破解登录(Weak Password Attack) 在某次渗透测试中,测试人员发现一个网站的后台管理系统使用了非常简单的密码 admin123,而且用户名也是常见的 admin。那么攻击者就可以通过暴力破解工具&…...

2024年合肥师范学院信息安全小组内部选拔赛(c211)WP
目录 前言MISC签到题_熟悉吗又来一道签到题文件包含 CRYPTO古典1古典2RSA webbaby_sql 前言 [HFNU 校级选拔] 已经结束,接下来一起了解下题目是怎么做的。 通过网盘分享的文件:ARCHPR_4.66.266.0_汉化绿色版.7z 链接: https://pan.baidu.com/s/1N_c0PJX…...

GESP CCF C++八级编程等级考试认证真题 2024年12月
202412 GESP CCF C八级编程等级考试认证真题 1 单选题(每题 2 分,共 30 分) 第 1 题 小杨家响应国家“以旧换新”政策,将自家的汽油车置换为新能源汽车,正在准备自编车牌。自编车牌包括5 位数字或英文字母,…...

GlusterFS 部署全攻略:详细步骤与要点解析(上)
文章目录 1、二进制部署1.1 安装yum源1.2 准备服务器1.3 添加本地解析1.4关闭防火墙及selinux1.5 加载内核模块1.6 格式化分区和挂载brick1.7 安装GlusterFS1.8 iptables配置1.9 配置可信任池1.10 设置GlusterFS卷1.11 测试volume卷 2、使用heketi将二进制GlusterFS集群作为k8s…...

充分利用 AIStor 的网络配置

算法题(10):好数
审题: 需要判断出1-N的范围内有多少个好数,并输出 思路: 遍历数据:需要用for循环(从1循环到N) 每一位判断:用while循环,先从个位开始,每循环一次就让记录位数的变量&…...

使用二分查找法找出给定点距离给定点集合距离最近的点
1、场景描述 给定点Point A (x,y)和 直线点集合 Points [(x1,y1),(x2,y2),(x3,y3),(x4,y4),(x5,y5)......],计算出集合中距离点A最近的一个点 (如果集合中的两个点距离A点最近且相等,则只取其中一个) 2、代码&#x…...

国标GB28181协议平台Liveweb:搭建建筑工地无线视频联网监控系统方案
随着科技高速发展,视频信号经过数字压缩,通过互联网宽带或者移动4G网络传递,可实现远程视频监控功能。将这一功能运用于施工现场安全管理,势必会大大提高管理效率,提升监管层次。而这些,通过Liveweb监控系统…...

构建MacOS应用小白教程(打包 签名 公证 上架)
打包 在package.json中,dependencies会被打进 Electron 应用的包里,而devDependencies则不会,所以必要的依赖需要放到dependencies中。files中定义自己需要被打进 Electron 包里的文件。以下是一个完整的 mac electron-builder的配置文件。 …...

Nginx 双向链表 ngx_queue_t
目录 一、基本概述 二、数据结构 三、接口描述与实现 1、相关宏接口 2、ngx_queue_middle 3、ngx_queue_sort 四、使用案例 整理自 nginx 1.9.2 源码 和 《深入理解 Nginx:模块开发与架构解析》 一、基本概述 双向链表的优势是可以快速进行数据插入、删除与…...

【vue】npm install 报错 python2 Error: not found: python2
如图所示,vue项目在下载依赖的时候报错找不到python2,有网友通过下载python2.7并配置环境变量解决了,这里有两个其他自测可用的方式,供各位作为参考。 报错的主要原因是因为【sass-loader】【node-sass】这两个依赖跟nodejs版本有…...

CS 144 check3: the TCP sender
Lecture Notes 略 Exercises 现在,在check3中,您将实现连接的另一边。 TCPSender是一种工具,它从出站字节流转换为将成为不可靠数据报的有效负载的段。 TCP sender的任务是确保receiver至少收到每个bytes一次。任务: 1、跟踪…...

Deepin/Linux clash TUN模式不起作用,因网关导致的问题的解决方案。
网关导致的问题的解决方案 查看路由 ip route寻找默认路由 默认路由应当为Mihomo default dev Mihomo scope link 如果不是,则 sudo ip route add default dev Mihomo在clash TUN开关状态发生变化时,Mihomo网卡会消失,所以提示找不到网卡…...

Tomato 靶机(通关攻略)
点击开启靶机 去kali终端输入 arp-scan -l //扫描靶机IP 扫出靶机IP192.168.131.171 第一步:信息收集 端口扫描 nmap -p- 192.168.131.171 敏感目录扫描 dirb http://192.168.131.171 总结: IP:192.168.168.131 开放端口:2…...

服务器被入侵登录不上怎么办?
在数字化时代,服务器作为数据存储与业务运行的核心载体,其安全性直接关系到企业的生死存亡。然而,随着网络攻击手段的不断升级,服务器被入侵的事件屡见不鲜,导致系统瘫痪、数据泄露等严重后果。当您发现自己的服务器被…...

达梦官方工具 SQLark数据迁移(oracle->达梦数据库)
应国产化需求需要,需将系统中涉及的各中间件替换成国产中间件,此文介绍了从Oracle迁移数据至达梦dm8的步骤,该文在windos环境下已验证测试过 1 SQLark介绍 SQLark是一款专为信创应用开发者设计的数据库开发和管理工具。它支持快速查询、创建和管理多种类型的数据库系统…...

redis数据类型:list
list 的相关命令配合使用的应用场景: 栈和队列:插入和弹出命令的配合,亦可实现栈和队列的功能 实现哪种数据结构,取决于插入和弹出命令的配合,如左插右出或右插左出:这两种种方式实现先进先出的数据结构&a…...

.NET周刊【12月第2期 2024-12-08】
国内文章 终于解决了.net在线客服系统总是被360误报的问题(对软件进行数字签名) https://www.cnblogs.com/sheng_chao/p/18581139 升讯威在线客服与营销系统由.net core和WPF开发,旨在开放、开源、共享。开发者为解决360与其他国产管家的误…...

C#—扩展方法
扩展方法 扩展方法是C#中一种特殊的静态方法,它定义在一个静态类中,但是可以像实例方法一样被调用,使得代码看起来更为直观和易于阅读。扩展方法允许你在不修改原始类的情况下,添加新的方法到现有的类型中。 有↓箭头的是扩展方…...

金碟中间件-AAS-V10.0安装
金蝶中间件AAS-V10.0 AAS-V10.0安装 1.解压AAS-v10.0安装包 unzip AAS-V10.zip2.更新license.xml cd /root/ApusicAS/aas# 这里要将license复制到该路径 [rootvdb1 aas]# ls bin docs jmods lib modules templates config domains …...

sql server 查询对象的修改时间
sql server 不能查询索引的最后修改时间,可以查询表,存储过程,函数,pk 的最后修改时间使用以下语句 select * from sys.all_objects ob order by ob.modify_date desc 但可以参考一下统计信息的最后修改时间,因为索…...

Qt之串口设计-线程实现(十二)
Qt开发 系列文章 - Serial-port(十二) 目录 前言 一、SerialPort 二、实现方式 1.创建类 2.相关功能函数 3.用户使用 4.效果演示 5.拓展应用-实时刷新 总结 前言 Qt作为一个跨平台的应用程序开发框架,在串口编程方面提供了方便易用…...

探索 Seaborn Palette 的奥秘:为数据可视化增色添彩
一、引言 在数据科学的世界里,视觉传达是不可或缺的一环。一个好的数据可视化不仅能传递信息,还能引发共鸣。Seaborn 是 Python 中一款广受欢迎的可视化库,而它的调色板(palette)功能,则为我们提供了调配绚…...

Linux创建普通用户和修改主机名
创建修改用户名和用户组 工作组相关命令 功能命令说明切换用户su username注销用户logout新建用户adduser username 创建用户并分配到用户组useradd -g test username 设置用户密码passwd username查看某一用户w username查看登录用户w查看登陆用户并显示IPwho查看登录历史…...