RNN And CNN通识
CNN And RNN
- RNN And CNN通识
- 一、卷积神经网络(Convolutional Neural Networks,CNN)
- 1. 诞生背景
- 2. 核心思想和原理
- (1)基本结构:
- (2)核心公式:
- (3)关键特性:
- (4)局限性:
- 3. 发展历史
- (1)LeNet的提出(1989年)
- (2)AlexNet的突破(2012年)
- (3)VGG和GoogLeNet(2014-2015年)
- (4)ResNet的提出(2015年)
- 4. 最佳实践
- 二、循环神经网络(Recurrent Neural Network, RNN)
- 1. 诞生背景
- 2. 核心思想和原理
- (1) 基本结构:
- (2)核心公式:
- (3)关键特性:
- (4)局限性:
- 3. 发展历史
- (1)经典RNN的提出(1986年)
- (2)LSTM的诞生(1997年)
- (3)GRU的提出(2014年)
- (4)基于注意力机制的改进(2014-2017年)
- (5)现代发展(2020年至今)
- 4. 最佳实践
- 三、RNN与CNN对比
- 1. 应用场景
- 2. 核心思想
- 3. 结构与原理对比
- 4. 优缺点对比
- 5. 适用场景与选择建议
- 6. 总结
RNN And CNN通识
近期正在阅读《Attention Is All You Need》这篇Transformer的原始论文,阅读中碰到了一些对我来说,是新名词、新技术、新模型的知识,因此进行一个通识的学习和总结,记录在此。
一、卷积神经网络(Convolutional Neural Networks,CNN)
1. 诞生背景
卷积神经网络(Convolutional Neural Network, CNN)最早的基础可以追溯到20世纪80年代,由Yann LeCun等人提出,最初用于手写数字识别。与传统的前馈神经网络相比,CNN在处理图像数据方面表现出了显著优势。传统神经网络需要连接每一对输入和输出,这在处理高维数据(如图像)时计算成本较高且效率低。CNN通过局部连接、共享权重等方式,有效地减少了模型参数,并使得神经网络能够捕捉到输入数据的空间结构。
- 诞生时间:CNN的概念最早由LeCun于1989年提出,并在1998年发布了经典的LeNet-5模型。
- 主要解决问题:CNN主要解决了图像数据处理中的参数过多和计算效率低的问题,同时通过局部连接和权重共享使得神经网络能够有效地捕捉图像的局部特征。
2. 核心思想和原理
卷积神经网络的核心思想是通过卷积层提取局部特征,并通过池化层降低特征维度,逐步提取更高级的特征,从而进行分类或回归任务。
(1)基本结构:
CNN的基本结构通常包括:
- 卷积层(Convolutional Layer):用于提取局部特征,通常使用多个滤波器(卷积核)在输入图像上滑动,进行局部感受野的计算。
- 池化层(Pooling Layer):通过下采样减少特征图的大小,降低计算量,同时保留最重要的特征信息。
- 全连接层(Fully Connected Layer):在卷积和池化层提取特征之后,使用全连接层进行分类或回归任务。
- 激活函数(Activation Function):通常使用ReLU(Rectified Linear Unit)激活函数,使模型能够学习非线性特征。
(2)核心公式:
-
卷积操作公式:

-
池化操作公式:
池化层通常使用最大池化(Max Pooling)或平均池化(Average Pooling),最大池化公式为:

(3)关键特性:
- 局部连接:每个神经元只连接到输入图像的局部区域,这样可以减少计算量。
- 共享权重:同一卷积核在图像的不同位置使用相同的权重,进一步减少参数数量。
- 平移不变性:通过卷积操作,CNN能够在不同位置识别相同的特征,具有平移不变性。
(4)局限性:
- 对空间关系的依赖:CNN主要关注局部特征和空间关系,对于长期依赖和全局上下文的建模能力较弱。
- 计算开销:尽管通过共享权重减少了参数数量,但卷积和池化操作仍然需要较高的计算资源。
3. 发展历史
(1)LeNet的提出(1989年)
LeNet由Yann LeCun等人提出,是第一个成功应用于手写数字识别的卷积神经网络模型。LeNet使用卷积和池化层提取特征,然后通过全连接层进行分类。它是CNN的早期代表之一,标志着CNN在计算机视觉领域的首次成功应用。
(2)AlexNet的突破(2012年)
2012年,AlexNet在ImageNet比赛中取得了突破性成绩,显著提高了深度学习在计算机视觉中的应用。AlexNet通过使用更深的网络结构(8层卷积层和全连接层)、ReLU激活函数、Dropout正则化等技术,解决了过拟合和计算效率问题,使得CNN成为深度学习领域的重要研究方向。
(3)VGG和GoogLeNet(2014-2015年)
- VGG提出了更深的网络结构,使用了重复的3×3卷积层,改进了模型的表现。
- GoogLeNet(Inception Network)引入了Inception模块,通过使用不同尺寸的卷积核和池化操作来提高网络的表达能力,同时保持较少的计算量。
(4)ResNet的提出(2015年)
ResNet通过引入残差连接(Residual Connection)解决了深度网络训练中的梯度消失问题,使得网络深度可以达到上千层,并且提高了网络的性能。ResNet开创了深度网络的新方向,使得深度学习技术在各个领域取得了更大的突破。
4. 最佳实践
(1)网络结构的选择
- 简单任务:对于较简单的图像分类任务,可以选择较浅的网络,如LeNet或AlexNet。
- 复杂任务:对于复杂的任务,如图像识别和检测,可以使用更深的网络,如VGG、ResNet或Inception。
(2)正则化技术
- Dropout:可以有效减少过拟合,尤其是在训练大型深度神经网络时。
- Batch Normalization:通过对每一层的输出进行标准化,加速训练并提高模型的稳定性。
(3)优化技术
- 数据增强:通过对输入数据进行旋转、缩放、裁剪等变换来扩增数据集,增强模型的泛化能力。
- 学习率调度:使用动态调整学习率的方法(如学习率衰减)来加速训练过程并避免局部最优解。
(4)硬件加速
- GPU加速:使用GPU进行矩阵运算的加速,可以大大缩短训练时间。
- 分布式训练:对于超大规模数据集和模型,可以使用分布式训练框架(如TensorFlow、PyTorch)来进行并行训练。
二、循环神经网络(Recurrent Neural Network, RNN)
1. 诞生背景
在上世纪80年代至90年代,传统神经网络(如前馈神经网络)在处理序列数据时表现出局限性。这些网络无法有效捕获序列中前后数据的关联,因为输入之间是独立的。然而,许多实际任务(如语音识别、机器翻译和时间序列预测)都涉及顺序依赖关系。为了克服这一问题,==循环神经网络(RNN)==应运而生。
- 诞生时间:RNN最初由David Rumelhart等人于1986年提出,后来由Sepp Hochreiter和Jürgen Schmidhuber在1997年提出LSTM(长短期记忆网络)加以改进。
- 主要解决问题:如何在序列数据中捕获长期依赖关系,记住前面输入的信息,并将其用于当前和后续的预测。
2. 核心思想和原理
循环神经网络的核心思想是通过隐藏状态(Hidden State)存储过去的信息,并在序列的每一步中将当前输入与之前的隐藏状态结合起来,以动态更新隐藏状态。
(1) 基本结构:
RNN每个时间步的输入输出关系如下:

(2)核心公式:
-
隐藏状态更新公式:

-
输出计算公式:

(3)关键特性:
- 权重共享:在不同时间步之间,RNN的参数(如权重矩阵)是共享的。
- 序列依赖:每个时间步的输出依赖于之前时间步的隐藏状态,从而捕获序列中的时间依赖关系。
(4)局限性:
- 梯度消失和梯度爆炸:在长序列中,反向传播时梯度可能会逐渐衰减(梯度消失)或迅速增长(梯度爆炸),导致难以捕获长期依赖。
3. 发展历史
(1)经典RNN的提出(1986年)
David Rumelhart等人首次提出RNN结构,用于解决序列数据的建模问题。但受限于梯度消失问题,其性能有限。
(2)LSTM的诞生(1997年)
Sepp Hochreiter和Jürgen Schmidhuber提出长短期记忆网络(LSTM),通过引入记忆单元(Cell State)和门机制(如输入门、遗忘门和输出门)有效缓解了梯度消失问题,使得RNN可以处理更长的序列。
(3)GRU的提出(2014年)
Kyunghyun Cho等人提出门控循环单元(GRU),简化了LSTM的结构,保留了其捕获长期依赖的能力,同时减少了计算开销。
(4)基于注意力机制的改进(2014-2017年)
- 2014年,Bahdanau等人提出注意力机制(Attention Mechanism),让模型在生成每个输出时能够灵活选择关注输入序列的不同部分。
- 2017年,Transformer的提出彻底改变了序列建模领域,完全摒弃了RNN结构,依赖于全局注意力机制。
(5)现代发展(2020年至今)
虽然Transformer已在许多任务中取代了RNN,但RNN及其变体(如LSTM、GRU)仍在语音识别、时间序列预测等领域具有重要地位。
4. 最佳实践
(1)选择合适的RNN变体
- 标准RNN:适用于短序列任务,如简单时间序列预测。
- LSTM:更适合长序列任务,如文本生成、机器翻译。
- GRU:计算效率更高,但在大多数任务中的性能与LSTM相当。
(2)梯度问题的解决
- 梯度裁剪(Gradient Clipping):防止梯度爆炸,通过限制梯度的最大值来稳定训练。
- 权重正则化:使用L2正则化或Dropout减少过拟合。
(3)优化训练
- 小批量梯度下降(Mini-Batch Gradient Descent):使用小批量样本训练,提高计算效率。
- 学习率调度:动态调整学习率以加快收敛。
(4)结合注意力机制
- 在序列到序列(Seq2Seq)模型中,结合注意力机制可提升RNN对长序列的处理能力。
(5)硬件加速与库选择
- 硬件:利用GPU或TPU加速矩阵计算。
- 深度学习框架:如PyTorch、TensorFlow等框架提供了高效的RNN、LSTM、GRU实现。
三、RNN与CNN对比
卷积神经网络(CNN)和循环神经网络(RNN)是深度学习中两种重要的神经网络架构,分别擅长处理不同类型的数据。以下将从应用场景、核心思想、结构与原理、优缺点等方面进行详细对比。
1. 应用场景
| 网络类型 | 主要应用领域 | 示例任务 |
|---|---|---|
| CNN | 计算机视觉、图像处理、视频分析 | 图像分类、目标检测、语义分割、风格迁移 |
| RNN | 自然语言处理、时间序列分析、语音处理 | 机器翻译、文本生成、语音识别、时间序列预测 |
总结:
- CNN适合空间结构数据,如图像、视频等。
- RNN适合序列数据,如文本、语音等。
2. 核心思想
| 网络类型 | 核心思想 |
|---|---|
| CNN | 通过卷积核提取局部特征,并利用权重共享减少参数数量。 |
| RNN | 通过隐藏状态捕获序列中的时间依赖关系。 |
总结:
- CNN专注于空间特征提取,局部感受野逐层扩展至全局。
- RNN专注于时间依赖建模,当前输出依赖于过去的信息。
3. 结构与原理对比
(1) CNN结构特点
- 卷积层(Convolutional Layer):用于提取局部特征,通过卷积核在输入图像上滑动进行计算。
- 池化层(Pooling Layer):对特征图进行下采样,以此减少特征维度。
- 激活函数(ReLU):引入非线性特性,使模型能够学习更复杂的映射关系。
- 全连接层(Fully Connected Layer):将前面提取的特征用于分类或回归任务。
(2)RNN结构特点
- 隐藏状态(Hidden State):当前时间步的隐藏状态(h_t)由前一时间步(h_{t - 1})和当前输入(x_t)共同决定,以此实现信息在序列中的传递与累积。
- 时间依赖(Temporal Dependency):借助循环结构来对序列数据的依赖关系进行建模,体现序列顺序特性。
- 序列输出:输出可以是单个值,也可以是整个序列,具体取决于具体任务需求。
4. 优缺点对比
| 对比维度 | 卷积神经网络(CNN) | 循环神经网络(RNN) |
|---|---|---|
| 优势 | 1. 具备高效并行计算能力,计算速度相对较快。 2. 通过参数共享机制,可有效减少模型参数数量。 3. 在处理图像、视频等空间数据方面表现优异。 | 1. 非常适合处理序列数据,能够有效捕获其中的时间依赖关系。 2. 可以处理长度可变的输入和输出序列。 3. 使用如LSTM、GRU等变体,能够在一定程度上缓解梯度消失问题。 |
| 劣势 | 1. 擅长处理固定大小的输入,对于序列数据的处理效果欠佳。 2. 较难捕获长距离依赖关系,对于远距离特征关联建模能力有限。 3. 对全局特征的捕获能力相对有限(通常需要加深网络结构来改善)。 | 1. 计算过程难以并行化,导致训练速度较慢。 2. 原始的RNN容易出现梯度消失或梯度爆炸问题,影响模型训练效果和稳定性。 3. 针对长序列任务,往往需要较长的训练时间。 |
| 并行化能力 | 优异(卷积操作和池化操作均可并行执行)。 | 较差(其计算依赖前一时间步的结果,限制了并行计算的可行性)。 |
| 参数规模 | 较小(得益于卷积核共享权重的特性,整体参数数量相对较少)。 | 较大(因为每个时间步都涉及参数更新,所以参数规模相对更大)。 |
5. 适用场景与选择建议
-
使用CNN的场景:
- 图像分类、目标检测、语义分割、视频分析等计算机视觉相关任务。
- 需要高效并行处理以及捕获空间特征的任务场景。
-
使用RNN的场景:
- 自然语言处理相关任务,例如机器翻译、文本生成等。
- 时间序列预测、语音识别等涉及序列数据处理的任务。
-
综合建议:
- 若任务涉及长序列并且需要捕获复杂的时间依赖关系,建议使用RNN或其变体(如LSTM、GRU)。
- 若任务涉及空间特征(如图像或视频),则使用CNN更为高效。
- 在某些场景下,可结合CNN + RNN架构,比如在视频分类任务中,先利用CNN提取视频帧中的空间特征,再借助RNN对帧序列的时间关系进行建模。
6. 总结
卷积神经网络(CNN)作为一种强大的深度学习模型,在计算机视觉领域中发挥了巨大的作用。它通过局部连接和共享权重等方式,成功提取图像中的局部特征,并进行分类或回归任务。从LeNet到AlexNet,再到ResNet,CNN不断发展和完善,推动了深度学习技术的进步。对于研究者和工程师而言,理解CNN的核心原理、选择合适的网络结构,并掌握最佳实践,是构建高效神经网络模型的关键。
循环神经网络作为一种能够建模序列数据的强大工具,在深度学习的发展中具有重要地位。从经典RNN到LSTM、GRU,再到结合注意力机制的Seq2Seq模型,RNN不断演化以适应更复杂的序列建模需求。虽然Transformer已在许多领域占据主导地位,但RNN仍在一些特定任务中具有不可替代的优势。对于研究者而言,了解RNN的发展历史、核心原理以及最佳实践,是深入掌握序列建模技术的基础。
卷积神经网络(CNN)和循环神经网络(RNN)各有所长,分别在不同类型的数据处理上展现优势。CNN主要聚焦于空间结构数据的处理,适用于图像、视频等任务;RNN则侧重于序列数据,更契合自然语言处理和时间序列分析等应用场景。深入理解二者的差异、优势以及应用场景,有助于针对具体任务准确选择最适配的模型架构,进而提升任务处理效果。
相关文章:
RNN And CNN通识
CNN And RNN RNN And CNN通识一、卷积神经网络(Convolutional Neural Networks,CNN)1. 诞生背景2. 核心思想和原理(1)基本结构:(2)核心公式:(3)关…...
生产环境中:Flume 与 Prometheus 集成
在生产环境中,将 Apache Flume 与 Prometheus 集成的过程,需要借助 JMX Exporter 或 HTTP Exporter 来将 Flume 的监控数据转换为 Prometheus 格式。以下是详细的实现方法,连同原理和原因进行逐步解释,让刚接触的初学者也能完成集…...
求平均年龄
求平均年龄 C语言代码C 代码Java代码Python代码 💐The Begin💐点点关注,收藏不迷路💐 班上有学生若干名,给出每名学生的年龄(整数),求班上所有学生的平均年龄,保留到小数…...
Ardusub源码剖析(1)——AP_Arming_Sub
代码 AP_Arming_Sub.h #pragma once#include <AP_Arming/AP_Arming.h>class AP_Arming_Sub : public AP_Arming { public:AP_Arming_Sub() : AP_Arming() { }/* Do not allow copies */CLASS_NO_COPY(AP_Arming_Sub);bool rc_calibration_checks(bool display_failure)…...
【NLP 2、机器学习简介】
人生的苦难不过伏尔加河上的纤夫 —— 24.11.27 一、机器学习起源 机器学习的本质 —— 找规律 通过一定量的训练样本找到这些数据样本中所蕴含的规律 规律愈发复杂,机器学习就是在其中找到这些的规律,挖掘规律建立一个公式,导致对陌生的数…...
数据结构与算法——N叉树(自学笔记)
本文参考 N 叉树 - LeetBook - 力扣(LeetCode)全球极客挚爱的技术成长平台 遍历 前序遍历:A->B->C->E->F->D->G后序遍历:B->E->F->C->G->D->A层序遍历:A->B->C->D->…...
【趣味升级版】斗破苍穹修炼文字游戏HTML,CSS,JS
目录 图片展示 开始游戏 手动升级(满100%即可升级) 升级完成,即可解锁打怪模式 新增功能说明: 如何操作: 完整代码 实现一个简单的斗破苍穹修炼文字游戏,你可以使用HTML、CSS和JavaScript结合来构建…...
【Oracle】个人收集整理的Oracle常用SQL及命令
【建表】 create table emp( id number(12), name nvarchar2(20), primary key(id) ); 【充值一】 insert into emp select rownum,dbms_random.string(*,dbms_random.value(6,20)) from dual connect by level<101; 【充值二】 begin for i in 1..100 loop inser…...
Linux内核4.14版本——ccf时钟子系统(5)——通用API
1. clk_get 1.1 __of_clk_get_by_name 1.2 clk_get_sys 2. clk_prepare_enable 2.1 clk_prepare 2.2 clk_enable 3. clk_set_rate 1. clk_get clock get是通过clock名称获取struct clk指针的过程,由clk_get、devm_clk_get、clk_get_sys、of_clk_get、of_clk_g…...
安装MySQL 5.7 亲测有效
前言:本文是笔者在安装MySQL5.7时根据另一位博主大大的安装教程基础上做了一些修改而成 首先在这里表示对博主大大的感谢 下面附博主大大地址 下面的步骤言简意赅 跟着做就不会出错 希望各位读者耐下心来 慢慢解决安装中出现的问题~MySQL 5.7 安装教程(全…...
《Django 5 By Example》阅读笔记:p455-p492
《Django 5 By Example》学习第 16 天,p455-p492 总结,总计 38 页。 一、技术总结 1.myshop (1)打折功能 使用折扣码实现,但是折扣码是手动生成的,感觉实际业务中应该不是这样的。 (2)推荐功能 使用 Redis 做缓存࿰…...
Element-UI 官网的主题切换动画
文章目录 实现圆形扩散过渡动画 实现一下 Element-UI 官网的主题切换动画加粗样式 实现 首先我们起一个 html 文件,写一个按钮,以及简单的背景颜色切换,来模拟主题的切换 想要实现过渡效果,需要先用到一个 JavaScript 的原生方…...
Golang 构建学习
Golang 构建学习 如何搭建Golang开发环境 1. 下载GOlang包 https://golang.google.cn/dl/ 在地址上下载Golang 2. 配置包环境 修改全局环境变量,GOPROXY,GOPATH,GOROOT GOPROXYhttps://goproxy.cn,direct GOROOT"" // go二进…...
VM Virutal Box的Ubuntu虚拟机与windows宿主机之间设置共享文件夹(自动挂载,永久有效)
本文参考如下链接 How to access a shared folder in VirtualBox? - Ask Ubuntu (1)安装增强功能(Guest Additions) 首先,在网上下载VBoxGuestAdditions光盘映像文件 下载地址:Index of http://…...
分析 系统滴答时钟(tickClock),设置72MHz系统周期,如何实现1毫秒的系统时间?
一、CubeMX相关配置 1.1 相关引脚配置 1.2 相关时钟数配置 1.3 打开程序源码 二、相关函数分析...
C++优选算法十七 多源BFS
1.单源最短路问题 一个起点一个终点。 定义:在给定加权图中,选择一个顶点作为源点,计算该源点到图中所有其他顶点的最短路径长度。 2.多源最短路问题 定义:多源最短路问题指的是在图中存在多个起点,需要求出从这些…...
Mongodb入门到放弃
Mongodb分片概括 分片在多台服务器上分布数据的方法, Mongodb使用分片来支持具有非常大的数据集和高吞吐量的操作的部署 具有大数据集和高吞吐量应用程序的数据库系统,可以挑战单台服务器的容量。 例如,高查询率可以耗尽服务器的cpu容量&…...
青藤云安全携手财信证券,入选金融科技创新应用优秀案例
11月29日,由中国信息通信研究院主办的第四届“金信通”金融科技创新应用案例评选结果正式发布。财信证券与青藤云安全联合提交的“基于RASP技术的API及数据链路安全治理项目”以其卓越的创新性和先进性,成功入选金融科技创新应用优秀案例。 据悉&#x…...
在CentOS系统中安装工具包的时候报错的解决方法
我刚装了一个新的虚拟机,打算安装一些工具出现了错误信息 执行的命令如下: yum install -y yum-utils device-mapper-persistent-data lvm2错误信息如下 Cannot find a valid baseurl for repo: base/7/x86_64搜索了一下原因有好几种。 一是网络不通…...
cad软件打不开报错cad acbrandres dll加载失败
一切本来很顺利哒 但是,当我用快捷方式打开时,就出现了这个错误。进入文件路径,是有这个的; 在文件路径直接打开,也会提示错误 原因竟然是我改了个名字: 随便选的文件路径,空的,文件名为Acr…...
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...
Chapter03-Authentication vulnerabilities
文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...
HTML 语义化
目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案: 语义化标签: <header>:页头<nav>:导航<main>:主要内容<article>&#x…...
云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?
大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...
Linux 文件类型,目录与路径,文件与目录管理
文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...
vue3 字体颜色设置的多种方式
在Vue 3中设置字体颜色可以通过多种方式实现,这取决于你是想在组件内部直接设置,还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法: 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...
使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装
以下是基于 vant-ui(适配 Vue2 版本 )实现截图中照片上传预览、删除功能,并封装成可复用组件的完整代码,包含样式和逻辑实现,可直接在 Vue2 项目中使用: 1. 封装的图片上传组件 ImageUploader.vue <te…...
MySQL 8.0 OCP 英文题库解析(十三)
Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...
鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南
1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发,使用DevEco Studio作为开发工具,采用Java语言实现,包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...
ip子接口配置及删除
配置永久生效的子接口,2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...
