深度学习发展中的继承和创新

news2024/11/16 3:24:44

        深度学习是一步一步发展而来的,新的成就也是在原有的基础上,逐步取得突破,有一些东西是一点一点变化,突破发展而来的,也就是每一次小的突破和每一次小的突破累积起来,构成一个明显的进步。我们可以通过观察其中不变的东西,同时仔细考量其中变化的东西,我们就能够看出一些端倪,也会更有把握和信心。

        在更多成功的思想基础上,逐步的突破和创新发展带来新的亮丽风景。透过细致观察,我们可以发现成功有迹可循,结果可以理解,成功可以接受,成果可以复制。

        变化,代表着进步;不变,意味着“有效设定”的继承!我们可以看到在“有效继承”和“突破性变化”二者之上的进步,以及精彩呈现!


        从一个很高的角度来看,所有的神经网路架构都是对输入数据的表示——以向量或嵌入矩阵的形式。这种方法将有用的统计或语义信息(图像信息)进行编码。这些隐表示可以被用来进行一些有用的任务。神经网络通过反馈(即损失函数)来构建更好的表示

1、人类和机器都能很好地区分猫和狗,这是因为图像中本就具有丰富的结构,而这些结构可以被人类和机器学习模型使用。同样,自然语言中也有丰富的结构,这些结构也可以被人类和机器学习模型利用。更好地利用这些结构有助于我们提升认知能力和行动能力。

2、卷积神经网络就是机器学习利用自然图像中一些已知结构的创造性方法。同样,Transformer是机器学习利用自然语言中一些(已知)结构的创造性方法。

3、多层感知机的输入是二维图像\textbf{X},其隐藏表示\textbf{H}在数学上是一个矩阵,在代码中表示为二维张量。

\left [H \right ]_{i,j}=\left [U \right ]_{i,j}+\sum_{k}\sum_{l}\left [W \right ]_{i,j,k,l}\left [X \right ]_{k,l}多层感知机

\left [H \right ]_{i,j}=u+\sum_{a=-\Delta }^{\Delta }\sum_{b=-\Delta }^{\Delta }\left [V\right ]_{a,b}\left [X \right ]_{i+a,j+b}(卷积神经网络)

       卷积网络的提出,利用了图像中的局部性和移不变性,这两个性质可以将多层感知机简化为卷积神经网络,参数量可以从10亿量级下降至数百量级,且能够取得基本一致的效果。当然,改变输入或隐藏表示的维度。这种大幅度减少参数的代价是:我们的特征现在是平移不变的,并且在确定每个隐藏激活的值时,我们的层只能包含局部信息。所有的学习都依赖于强加归纳偏见。当这种偏差与现实相符时,我们就得到了样本效率高的模型,可以很好地推广到看不见的数据。但是,当然,如果这些偏差与现实不符,例如,如果图像不是平移不变的,我们的模型甚至可能难以适应我们的训练数据。 

       从多层感知机到卷积神经网络,我们可以看到其中对图像模态数据属性特点的利用。


4、 虽然深度神经网络的概念非常简单——将神经网络堆叠在一起,但是选择不同的网络架构和超参数,这些神经网络的性能会发生很大的变化。例如,transformer选择注意力机制模型,与之前的编码器-解码器架构中选择RNN或LSTM时,二者的性能变化。后面会对比LeNet和AlexNet、AlexNet和Transformer之间的异同点,观察其中的相同和不同之处,找寻共性特点,以及变化带来的进步。

       从LeNet到AlexNet,其中最突出的变化之一,是非线性激活函数的改变。AlexNet使⽤ReLU⽽不是sigmoid作为其激活函数,LeNet则使用sigmoid作为激活函数。

重要概念:非线性变换

      非线性变换(Non-linear Transformation): 通过使用激活函数(如ReLU、Sigmoid、Tanh等),神经网络能够引入非线性,这使得网络能够学习和模拟更加复杂的函数映射,从而提高表示的能力。

       非线性变换在神经网络中扮演着重要的角色,非线性变换的一些关键作用和特点的介绍如下:

  1. 模拟复杂关系: 非线性激活函数使得神经网络能够学习和模拟输入数据之间的复杂非线性关系。没有非线性激活函数,无论神经网络有多少层,都只能表示线性关系。

  2. 增加表达能力: 非线性变换扩展了神经网络的表达能力,允许网络捕捉和表示更丰富的数据特征。

  3. 解决非线性问题: 现实世界中的许多问题本质上是非线性的。非线性激活函数使得神经网络能够解决这些问题,如图像识别、语音处理等。

  4. 激活函数的选择

    • ReLU(Rectified Linear Unit):在正区间内线性,计算简单,训练速度快,是目前最常用的激活函数之一。
    • Sigmoid:将输出压缩到(0, 1)区间,常用于二分类问题的输出层。
    • Tanh:将输出压缩到(-1, 1)区间,常用于需要输出在负值和正值之间分布的情况。
  5. 避免线性叠加: 如果一个神经网络中所有的层都是线性的,那么无论层数多少,都可以被压缩为一个单一的线性层,这将大大限制网络的能力。非线性激活函数打破了这种线性叠加。

  6. 反向传播中的链式法则: 在神经网络的训练过程中,反向传播算法利用了激活函数的导数来计算梯度。非线性激活函数的可导性质保证了这一过程的可行性。

  7. 缓解梯度消失问题: 某些非线性激活函数(如ReLU)可以在一定程度上缓解梯度消失问题,有助于在深层网络中传播梯度。

  8. 稀疏激活: 如ReLU这样的激活函数可以实现稀疏激活,即在给定的输入下只有一部分神经元被激活,这有助于提高网络的效率和泛化能力。

  9. 损失函数的非线性: 神经网络的输出层通常会使用一个非线性激活函数,与损失函数相结合,以适应不同类型问题的需要,如交叉熵损失常用于分类问题。

  10. 设计复杂网络结构: 非线性变换使得设计复杂的网络结构成为可能,如残差网络(ResNet)利用跳跃连接来解决深度网络中的梯度消失问题。

  11. 泛化能力: 非线性激活函数有助于提高神经网络的泛化能力,使得网络不仅在训练数据上表现良好,也能在未见过的数据上取得较好的性能。

       非线性变换是神经网络设计中的一个基本且重要的组成部分,它赋予了神经网络处理复杂数据和任务的能力


5、层数增加的成功:AlexNet的较高层建立在这些底层表示的基础上,以表示更大的特征,如眼睛、鼻子、草叶等,而更高的层可以检测整个物体,如人、飞机、狗或飞盘。最终的隐藏神经元可以学习图像的综合表示,从而使属于不同类别的数据易于区分。

补充:Transformer也是如此,较高层很够表示更大的语言特征,如句子、段落,而更高的层可以检测到整个语义,如整篇文章。最终的隐藏神经元可以学习语言的综合表示,从而使属于不同类别的数据易于区分。

重要概念:层次化表示 

       层次化表示(Hierarchical Representation): 神经网络通常设计为多个层次的架构,每个层次都构建在前一个层次的基础上,形成一种层次化的特征表示。这种层次化的信息处理方式使得网络能够捕捉数据中的多尺度和多级别的特征

       层次化表示是神经网络中的一个核心概念,尤其在深度学习和卷积神经网络(CNN)中表现得尤为明显。以下是层次化表示的一些关键点:

  1. 概念基础: 层次化表示基于这样的观察:现实世界中的许多复杂对象和现象可以通过它们的成分和部分以层次化的方式进行分解。例如,在图像中,像素是基本单元,它们组合成边缘,边缘再组合成形状,形状最终构成可识别的对象。

  2. 从简单到复杂: 在神经网络中,较低层次通常学习到简单的、局部的特征(如线条和角点),而较高层次则学习到更复杂的、全局的特征(如物体的部分或整个物体)。

  3. 逐层抽象: 每一层的输出都成为下一层的输入,从而形成了一种逐层抽象的过程。这种层次化的处理方式使得网络能够从原始数据中提取出越来越高级的特征。

  4. 卷积神经网络(CNN): CNN是层次化表示的一个典型例子。它们使用卷积层来学习图像的局部特征,然后通过池化层(Pooling Layer)来降低特征的空间维度,并通过全连接层(Fully Connected Layer)或其他高层结构来整合这些特征以进行决策。

  5. 循环神经网络(RNN): RNN通过在序列数据上操作,捕捉时间序列中的层次化信息,如在自然语言处理中,RNN可以捕捉到单词、短语和整个句子的结构。

  6. 自注意力机制: 在某些神经网络架构中,如Transformer模型,自注意力机制允许网络在序列的不同部分之间直接建立联系,这可以看作是一种跨越不同层次的特征交互。

  7. 泛化能力: 层次化表示提高了网络的泛化能力,因为它允许网络学习到数据中更抽象和鲁棒的特征表示,这些特征表示对于不同的任务和数据变化更为稳定。

  8. 计算效率: 通过层次化的设计,神经网络可以在高层上处理更加抽象的表示,这通常需要更少的参数,从而提高计算效率。

  9. 迁移学习: 层次化表示的一个额外好处是它允许迁移学习,即网络在某个任务上学习到的低层次特征可以在其他相关任务上复用。

  10. 网络深度: 网络的深度(即层数)对层次化表示的质量有很大影响。更深的网络能够学习到更复杂的层次化表示,但同时也更难以训练。

       某种意义上说,层次化表示是神经网络能够有效处理复杂数据和任务的关键因素之一,它使得网络能够从原始输入中自动发现和提取有用信息,构建出有助于各种机器学习任务的特征表示。


6、尽管一直有一群执着的研究者不断钻研,试图学习视觉数据的逐级表征,然而很长一段时间里这些尝试都未有突破。深度卷积神经网络的突破出现在2012年。逐级表征,是多层神经网络最突出的特点之一,高层表示依赖于低层的表示,从而提升网络的表示能力,学习更好的表示,这是神经网络的核心功能之一。好的表示,意味更好的任务性能,更广泛和更有价值的应用。

transformer中的逐级表征:

      通过将前一段翻译成数学符号以及向量的方式去创建对整个体系结构的认知。将长句 S 中的第i个单词的隐藏特征 h 从 ℓ 层更新至ℓ+1 层(这是一个构建更好表示的过程)。

      在Transformer模型中,逐级表征(也称为分层或层次化表示)是通过模型的不同层级逐步构建的。每一层都对输入数据进行处理,以捕获不同级别的特征和模式。以下是Transformer模型中逐级表征的关键特点:

  1. 自注意力机制: Transformers使用自注意力机制来捕捉输入序列中不同位置之间的关系。在每个自注意力层中,模型会计算输入序列中每个元素对其他所有元素的注意力权重。

  2. 多头注意力: Transformers中的多头注意力允许模型同时在不同的表示子空间中关注输入的不同部分,这增强了模型捕获复杂关系的能力。

  3. 逐层抽象: 通过多个自注意力层,Transformer模型能够逐层抽象输入数据,每一层都构建在前一层的输出之上,从而形成逐级的特征表示。

  4. 位置编码: 由于Transformer缺乏像循环神经网络那样的递归结构,它使用位置编码来保留序列中元素的顺序信息。

  5. 逐层特征融合: 通过逐层的自注意力处理,模型能够将输入序列中的长距离依赖关系逐步融合到逐层的特征表示中。

  6. 层间残差连接: Transformers在每个自注意力层和前馈网络层之后使用残差连接,这有助于避免在深层网络中出现的梯度消失问题。

  7. 层归一化: 通常在残差连接之后应用层归一化,这有助于稳定训练过程,并可能提高模型的泛化能力。

  8. 深度和宽度: Transformers模型的深度(层数)和宽度(每层中注意力头的数量或神经元的数量)共同决定了模型的表示能力。

  9. 跨模态表征: Transformers不仅用于处理自然语言处理任务,还可以用于跨模态任务,如结合图像和文本,其中模型需要学习到能够连接不同类型数据的逐级表征。

  10. 预训练和微调: 在预训练阶段,Transformer模型通常在大规模数据集上进行训练,以学习通用的语言表示。在微调阶段,模型在特定任务上进行进一步训练,以构建任务特定的逐级表征。

  11. 模型容量: Transformer模型的容量(即模型大小和复杂度)影响其学习逐级表征的能力,更大的模型通常能够捕获更复杂的特征。

Transformer模型的逐级表征是其强大的性能和灵活性的基础,使得它在自然语言处理和其他领域的任务中都取得了显著的成功。


7、与芯片设计中工程师从放置晶体管到逻辑元件再到逻辑块的过程类似,神经网络架构的设计也逐渐变得更加抽象。开始研究人员从单个神经元的角度思考问题,后来发展到整个层,现在又转向块,重复层的模式。这个可以通过整个transformer架构的设计中观察到,不同类型的层、块的堆叠设计。

      使⽤块的想法⾸先出现在⽜津⼤学的视觉⼏何组(visual geometry group)的VGG⽹络中。通过使⽤循环 和⼦程序,可以很容易地在任何现代深度学习框架的代码中实现这些重复的架构。

       从单个神经元到整个层,再到重复层的模式,神经网络的设计和应用不断演进,以适应日益复杂的任务和数据类型。这个过程实际上体现了深度学习领域在理解、设计和优化神经网络结构方面的深刻进步。

神经网络的设计和应用的演进过程:

       神经网络的设计和应用已经经历了显著的演进过程,这样的演进是为了适应不断增长的复杂任务和多样化的数据类型。演进过程更详细的描述:

  1. 单个神经元: 最初的神经网络研究集中在单个神经元的模型上,如McCulloch-Pitts神经元模型和感知机。这些模型是理解神经网络如何处理信息的基础。

  2. 单层网络: 随后,研究者将单个神经元组合成单层网络,这些网络能够解决简单的分类和模式识别任务。

  3. 多层感知器(MLP): 多层感知器通过增加一个或多个隐藏层来提高网络的学习能力,这使得网络能够学习更复杂的函数映射。

  4. 卷积神经网络(CNN): CNN通过引入卷积层来专门处理图像数据,利用局部感受野和权重共享来捕捉图像的局部特征。

  5. 循环神经网络(RNN): RNN设计用于处理序列数据,通过在序列的不同时间步上传递信息来捕捉时间依赖性。

  6. 深度网络和重复层: 深度学习革命带来了深度网络的设计,其中相同的层或块被重复堆叠多次,形成了非常深的网络结构。这种设计提高了模型的学习能力,并解决了梯度消失问题。

  7. 残差网络(ResNet): ResNet通过引入残差连接,允许训练更深层次的网络,其中相同的网络结构被重复使用。

  8. Transformer模型: Transformers采用了自注意力机制,并且其核心是由多个相同的自注意力和前馈网络层组成的。这种设计允许模型并行处理序列中的所有元素。

  9. 模块化设计: 现代神经网络设计强调模块化,其中网络的不同部分可以独立设计和优化,以适应特定的任务需求。

  10. 优化算法和正则化技术: 随着网络深度的增加,开发了新的优化算法和正则化技术,如Adam优化器和Dropout正则化,以提高模型的训练效率和泛化能力。

  11. 计算效率和模型压缩: 在设计神经网络时,研究人员越来越关注计算效率和模型大小,以便于在资源受限的设备上部署模型。

  12. 注意力机制和稀疏性: 注意力机制的引入不仅提高了模型的性能,还带来了计算上的稀疏性,这有助于提高模型的效率。

  13. 跨领域应用: 神经网络的设计和优化也开始考虑跨领域应用,如自然语言处理、计算机视觉和语音处理等领域的融合。

       这个演进过程体现了深度学习领域在理解、设计和优化神经网络结构方面的深刻进步,也展示了研究人员对算法、硬件和应用需求之间相互作用的深入理解。随着技术的不断发展,可预见神经网络的设计将继续演进,以解决更多的挑战性问题。


 8、迁移学习

       迁移学习(Transfer Learning): 通过迁移学习,神经网络可以在一个任务上训练得到的知识应用到另一个相关任务上,这有助于网络在数据较少的情况下也能构建出好的表示。

       迁移学习允许一个模型在一个任务上学习得到的知识(通常是特征表示)被应用到另一个相关任务上。迁移学习的一些关键点如下:

  1. 数据效率: 迁移学习可以提高模型在新任务上的训练效率,尤其是在数据较少的情况下。

  2. 利用预训练模型: 通常涉及使用在大型数据集(如ImageNet)上预训练的模型,并将其应用于特定的、数据量较小的任务。

  3. 特征重用: 在源任务中学习到的特征表示可以重用在目标任务中,因为这些特征可能捕捉到了对两个任务都有用的通用信息。

  4. 适应性: 迁移学习使模型能够适应新的、不同的任务,而不需要从头开始训练。

  5. 减少计算资源: 由于预训练模型已经学习了大量有用的特征,迁移学习减少了训练模型所需的计算资源。

  6. 微调(Fine-tuning): 在迁移学习中,通常在固定预训练模型的一部分参数的同时,对模型的其他部分进行微调,以适应新的任务。

  7. 领域适应(Domain Adaptation): 迁移学习可以用于领域适应,其中模型在一个领域(如医疗图像)上训练,然后迁移到另一个领域(如自然图像)。

  8. 多任务学习: 迁移学习与多任务学习结合,可以帮助模型在一个任务上的学习提升其在其他任务上的性能。

  9. 零样本和少样本学习: 迁移学习是零样本和少样本学习的关键技术,它允许模型在没有或几乎没有标注数据的情况下进行任务。

  10. 跨模态迁移: 迁移学习也可以在不同的数据模态之间进行,例如,从文本数据迁移到图像数据。

  11. 模型泛化能力: 通过迁移学习,模型可以提高其泛化能力,因为它结合了来自不同任务的知识。

  12. 知识蒸馏: 迁移学习可以与知识蒸馏技术结合,其中预训练的大模型的知识被转移到一个更小、更高效的模型中。

  13. 挑战和限制: 迁移学习也面临一些挑战,如源任务和目标任务之间的差异可能导致负迁移(negative transfer)。选择合适的源任务和目标任务对于成功迁移至关重要。

迁移学习是深度学习中一个非常强大的工具,它使得模型能够快速适应新任务,并且可以显著提高在数据匮乏情况下的学习效率。

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

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

相关文章

python 文件 成绩分析2

‘’’ 文件score.txt中存储了学生的考试信息,内容如下 小明,98,96 小刚,90,94 小红,90,94 小王,98,96 小刘,80,90 小赵,90,96 第二列是数学成绩,第三列是语文成绩 请写程序分析: 哪些同学语文成绩是相同的?哪些同学数学成绩是相同的?哪些同学语文和数…

C语言—字符指针,指针数组和数组指针详解

字符指针 在指针的类型中我们知道有一种指针类型为字符指针 char* ; int main() {char ch w;char *pc &ch;*pc w;return 0; }还有一种使用方式如下: int main() {const char* pstr "hello world.";//这里是把一个字符串放到pstr指针变量里了吗…

WebSocket 快速入门 - springboo聊天功能

目录 一、概述 1、HTTP(超文本传输协议) 2、轮询和长轮询 3、WebSocket 二、WebSocket快速使用 1、基于Java注解实现WebSocket服务器端 2、JS前端测试 三、WebSocket进阶使用 1、如何获取当前用户信息 2、 后端聊天功能实现 一、概述 HTTP…

Linux安装Docker完整教程及配置阿里云镜像源

官网文档地址 安装方法 1、查看服务器内核版本 Docker要求CentOS系统的内核版本高于3.10 uname -r #通过 uname -r 命令查看你当前的内核版本2、首先卸载已安装的Docker(如果有) 2.1 确保yum包更新到最新 yum update2.2 清除原有的docker&#xff0c…

生物特征识别的六大技术研究

生物特征识别技术是结合了计算机科学与光学、声学、生物传感器以及生物统计学原理,通过利用人体固有的生理特征(如指纹、人脸、虹膜、掌纹、指静脉等)和行为特征(如笔迹、声音、步态等),来进行个人身份的鉴…

layui--table里使用switch

1. 项目需求 在layui.table上面渲染后的列表上面加一个switch开关,监听switch开关的动作,实现本列数据的状态切换! 实现效果如下: 2. 实现方式 下面介绍的思路都是利用table的templet模板实现的,不同的在于模板代码…

F-logic DataCube3 SQL注入漏洞复现(CVE-2024-31750)

0x01 产品简介 F-logic DataCube3是一款用于光伏发电系统的紧凑型终端测量系统。 0x02 漏洞概述 F-logic DataCube3 /admin/pr_monitor/getting_index_data.php 接口处存在SQL注入漏洞,未经身份验证的攻击者可通过该漏洞获取数据库敏感信息,深入利用可控制整个web服务器。 …

JavaEE 初阶篇-深入了解 File 文件操作(实现文件搜索、非空文件夹删除)

🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 File 文件概述 2.0 创建 File 类对象的方法 2.1 判断文件类型、获取文件信息的方法 2.2 创建文件、删除文件的方法 2.3 遍历文件夹的方法 3.0 文件搜索与删除 3.1…

虚拟机中的打印机,无法打印内容,打印的是白纸或英文和数字,打印不了中文

原因:打印机驱动设置不正确 解决方案: 打开打印机属性 -> 高级 -> 新驱动程序 下一页 -> Windows 更新 耐心等待,时间较长。 选择和打印机型号匹配的驱动,我选择的是: 虽然虚拟机和主机使用的驱动不…

《机器学习by周志华》学习笔记-线性模型-02

1、对数几率回归 1.1、背景 上一节我们考虑了线性模型的回归学习,但是想要做分类任务就需要用到上文中的广义线性模型。 当联系函数连续且充分光滑,考虑单调可微函数,令: 1.2、概念 找一个单调可谓函数,将分类任务的真实标记与线性回归模型的预测值联系起来,也叫做「…

关系型数据库的相关概念

表、记录、字段 表 一个实体集相当于一个表记录 一个实体相当于一个记录,在表中表表现为一行数据字段 一个字段相当于数据库表中的列 表的关联关系 一对一(一对一的表可以合并成一张表)一对多多对多 必须创建第三张表,该表通常称为联接表&#xff0c…

个人电脑信息安全注意事项

个人电脑信息安全注意事项 一、密码安全: 设置复杂且独特的密码,避免使用容易猜测或常见的密码。 定期更换密码,特别是在重要账户或应用上。 不要在多个账户上重复使用相同的密码。 使用密码管理工具来安全地存储和访问密码。 二、软件安…

Axure琐碎细节

文章目录 琐碎细节注释预览编写原型图的时候可以把颜色改为灰色标尺竖直文字左对齐Axure中的文字怎么添加元件层级问题如何找到各种各样的形状,比如三角形了 五角星了 十字架了给按钮设置简单的交互动作通过锁来等比例缩放 琐碎细节 注释 有时候我们需要给我们的元…

探索通过GPT和云平台搭建网安实战培训环境

项目背景 网络安全是一个不断演变的领域,面临着日益复杂的挑战和不断扩大的威胁。数字化时代,随着勒索攻击、数据窃取、网络钓鱼等频频出现,网络攻击的威胁指数和影响范围进一步增加,如何防范网络攻击,确保数据安全&a…

ssh免秘钥登录与时钟同步

ssh免秘钥登录及数据拷贝 ssh免秘钥登录及数据拷贝环境生成秘钥拷贝公钥到到远程服务器通过ssh-copy-id命令拷贝公钥到远程服务器通过手动拷贝公钥到远程服务器 非root用户远程拷贝公钥 设置编码方式临时设置编码永久设置方法一永久设置方法二 设置时钟同步使用 ntpdate 命令使…

yabai,openssh 竟然把 Windows 搞蓝屏了

在虚拟化技术日益普及的今天,Oracle VirtualBox 提供了一个功能强大的平台,允许用户在单一物理机上运行多个操作系统。 本文将指导你如何使用 Oracle VirtualBox 安装 Oracle Linux 9.3。 1. Oracle VirtualBox 7.0 介绍 Oracle VirtualBox 7.0 是一款由…

Compose 布局

文章目录 Compose 布局ColumnColumn属性使用 RowRow属性使用 BoxBox属性使用 ConstraintLayoutLazyColumnLazyColumn属性使用使用多类型使用粘性标题回到顶部 LazyRowLazyRow属性使用 LazyVerticalGridLazyVerticalGrid属性使用 Compose 布局 Column Compose中的”垂直线性布…

大型网站系统架构演化实例_4.数据库读写分离

1.数据库读写分离 网站在使用缓存后,使对大部分数据读操作访问都可以不通过数据库就能完成,但是仍有一部分操作(缓存访问不命中、缓存过期)和全部的写操作都需要访问数据库,在网站的用户达到一定规模后&#x…

制作一个RISC-V的操作系统十二-定时器中断

文章目录 CLINT定时器中断mtimemtimecmp机制总体框架流程时间节拍系统时钟代码 CLINT 产生软件中断和定时器中断 定时器中断 mtime 类似计数器,按照硬件对应的固定频率递增 上电后会自动复位为0,有硬件自动完成 mtimecmp 需要自己设置&#xff0…

C++相关概念和易错语法(8)(匿名对象、构造+拷贝构造优化、构造析构顺序)

1.匿名对象 当我们实例化对象后,有的对象可能只使用一次,之后就没用了。这个时候我们往往要主动去析构它,否则会占着浪费空间。但是如果遇到大量的这种情况,我们并不想每次都去创建对象、调用、析构,这样会写出很多重…