【存储】cache memory、primary memory and secondary memory

news2024/11/16 7:53:40

  • 一、提要
  • 二、计算机的存储结构
  • 三、高速缓存:cache memory
  • 四、主存:Primary memory
    • 4.1 RAM
      • 4.11 SRAM 和 DRAM的概念
      • 4.12 SRAM 和 DRAM的应用场景
    • 4.2 ROM
      • 4.21 PROM
      • 4.22 EPROM
        • ▶ EEPROM
        • ▶ UVEPROM
  • 五、辅助存储器:secondary memory
  • 六、单片机的存储

一、提要

昨天晚上在JD搜了下SSD,居然都这么便宜了,价格几乎是几年前的1/2、1/3了。
在这里插入图片描述

着看看着,脑海中浮现出一些名词:DAM、SAM、EEPRAM、FLASH等等,仿佛又回到了当年的课堂。

二、计算机的存储结构

简单来说是这样:
在这里插入图片描述

内存可以分为高速缓存和主存(也称为主存储器),不仅仅是我们常说的内存条。

高速缓存(Cache)是位于CPU内部或靠近CPU的一种特殊类型的内存。它用于临时存储CPU最频繁访问的数据和指令,以提供快速访问和执行。高速缓存的目的是通过预先存储常用的数据,以减少CPU等待主存储器访问的时间,从而提高计算机系统的性能。总之就是很快

高速缓存通常分为多个层级,如L1、L2和L3缓存。L1缓存是最接近CPU核心的、最快速的缓存层级,L2缓存位于L1缓存之外,而L3缓存则位于更远离CPU的位置,通常是多个CPU核心共享的。不同层级的高速缓存具有不同的容量和访问延迟。

主存(Main/primary Memory)是计算机系统中用于存储程序、数据和操作系统的内部存储器。它是计算机系统的主要存储区域,用于临时存储正在执行的程序和数据。主存是相对于高速缓存而言的,其容量通常比高速缓存大得多,但访问速度较慢。

主存储器与高速缓存之间存在访问延迟和容量的差异。高速缓存是为了提供更快的数据访问,而主存则提供了更大的存储容量。CPU在需要数据时首先从高速缓存中查找,如果数据不在高速缓存中,则会从主存中获取。高速缓存和主存之间的数据传输通过总线进行。

Secondary memory(辅助存储器)是计算机系统中用于持久存储数据和程序的一种存储设备。与主存储器(主存)相比,辅助存储器的容量更大,但访问速度较慢。辅助存储器通常用于长期存储和持久保存数据,即使在断电或重新启动计算机后,存储在辅助存储器中的数据仍然保持不变。

常见的辅助存储器设备包括硬盘驱动器(Hard Disk Drive,HDD)、固态硬盘(Solid State
Drive,SSD)、光盘、闪存驱动器(Flash Drive)、磁带等。

三、高速缓存:cache memory

根据与处理器的接近程度,我们可以将缓存分为三种类型。

  • L1 缓存– L1 缓存通常嵌入在处理器中。因此,它非常接近处理器。
  • L2 缓存– L2 缓存比 L1 更大且更慢。L2 要么在处理器中实现,要么在单独的芯片上实现。处理器可以直接访问二级缓存。
  • L3 缓存——L3 的实现是为了提高上述两种缓存的性能。L3缓存存在于多核处理器之外,处理器的每个核心都可以共享L3缓存。它当然比 L1 和 L2 慢,但比主存快。

缓存的优缺点

  • 优点
    • 处理器可以比主内存更快地访问高速缓存的内容。
      • 缓存还提高了处理器的性能。
  • 缺点
    • 与主存储器相比,高速缓冲存储器尺寸较小且价格昂贵。
    • 它是一个易失性存储器,因为一旦电源关闭,数据就会消失。

可以看一下各级缓存的速度:
在这里插入图片描述


高速缓存大小范围:

L1缓存:

L1指令缓存(L1 Instruction Cache)通常在4 KB到128 KB之间。
L1数据缓存(L1 Data Cache)通常在8 KB到256 KB之间。

L2缓存:

L2缓存通常在128 KB到8 MB之间。

L3缓存:

L3缓存通常在4 MB到64 MB之间。

缓存这么快,为什么不把容量设计的大大的呢?

前面的速度图里面,可以看到,现在主存的速度一般在5000MB/s到10GB/s,但L1缓存速度高达 百G/s。很明显,cache的价格很高,当然了,不只是价格原因:

  1. 成本:高速缓存是一种昂贵的存储器,其制造和维护成本相对较高。增加缓存的容量会导致更多的硬件资源和成本投入,因此在设计中需要权衡成本与性能之间的平衡
  2. 物理空间限制:高速缓存需要位于CPU芯片上或靠近CPU的位置,以便能够提供快速访问。然而,物理空间在芯片上是有限的。增加缓存的容量可能需要更多的芯片空间,而这可能会对其他重要的组件和功能造成限制。
  3. 命中率和成本效益:增加缓存的容量并不总是会带来线性的性能提升。高速缓存的作用是通过存储最常访问的数据来提高命中率,以减少对主存的访问。然而,数据的局部性原理(Locality Principle)指出,大部分程序只是访问其中一小部分数据,而不是整个内存空间。因此,增加缓存容量超过一定阈值可能并不会显著提高命中率,从而带来成本效益的下降。
  4. 访问延迟:较大容量的缓存可能需要更长的访问延迟,因为更多的数据需要在缓存层级之间传输。尽管缓存的访问速度比主存快得多,但增加容量会引入更多的访问路径和传输时间,从而增加整体的访问延迟。

四、主存:Primary memory

Primary memory(主存储器)是计算机系统中的主要存储器,用于存储正在执行的程序、数据和操作系统。它是计算机的内部存储器,直接与CPU(中央处理器)相连,用于快速的读取和写入操作。

其中RAM就是我们最常见的了,比如你电脑的内存条。

在这里插入图片描述

4.1 RAM

RAM(随机存取存储器)是计算机主存储器的一部分,可由CPU直接访问。RAM用于读取和写入由CPU随机访问的数据。RAM 本质上是易失性的,这意味着如果断电,存储的信息就会丢失(说的是DRAM)。RAM用于存储CPU当前正在处理的数据。大多数可修改的程序和数据都存储在 RAM 中。

4.11 SRAM 和 DRAM的概念

SRAM(Static Random Access Memory)和DRAM(Dynamic Random Access Memory)都是常见的计算机内存类型,它们在构造、工作原理和性能特点上有所区别。

SRAM:

  • 构造:SRAM使用触发器(flip-flop)构建存储单元,每个存储单元由多个晶体管组成。它们的构造比较复杂,因此每个存储单元需要更多的晶体管,导致SRAM的密度较低。
  • 工作原理:SRAM的存储单元通过反馈回路来保持数据状态,因此在未被刷新的情况下,数据可以持续存储。这也是SRAM的一个重要特点,使得它的访问速度快。
  • 性能特点:SRAM的访问速度快、读写延迟低,可以实现随机访问,因此适用于对速度要求较高的任务。它的耗电量较高,相对较昂贵,但由于不需要定期刷新,SRAM在电源断电或重新启动后能够保持数据的完整性

DRAM:

  • 构造:DRAM使用电容器和晶体管构成存储单元,每个存储单元只需要一个电容器和一个晶体管,因此DRAM的存储密度较高。
  • 工作原理:DRAM的电容器存储数据,但电容器的电荷会逐渐泄漏,因此数据需要定期刷新。为了刷新数据,DRAM需要周期性地进行读取和写入操作。
  • 性能特点:DRAM的访问速度较慢,因为每次访问都需要读取和写入操作,而且需要进行刷新。然而,DRAM具有较低的功耗和相对较低的成本,因此在大容量内存需求的场景下被广泛使用。

综合比较:

  • SRAM比DRAM更快、更可靠,但更昂贵、容量较小
  • DRAM比SRAM更便宜、容量更大,但速度较慢、需要定期刷新

4.12 SRAM 和 DRAM的应用场景

SRAM(静态随机存取存储器)由于其快速的访问速度和不需要刷新的特性,在许多应用领域中得到广泛应用:

  1. 缓存存储器(Cache Memory):SRAM常用于计算机系统的缓存层级,包括L1、L2和L3缓存。缓存存储器用于暂时存储CPU最常访问的数据,以提供快速的数据访问速度,从而加快计算机的运行速度。
  2. 寄存器文件(Register Files):SRAM用于存储处理器内部的寄存器文件。寄存器文件用于存储指令和数据操作的临时结果,供处理器进行高速计算和操作。
  3. 图形和图像处理器(Graphics and Image Processors):SRAM被广泛应用于图形处理器和图像处理器,用于存储图像数据、图形纹理和其他计算所需的临时数据。
  4. 交换和路由设备(Switches and Routers):SRAM用于存储路由表和缓冲区,以帮助实现数据包的路由和转发。
  5. 嵌入式系统(Embedded Systems):由于SRAM的快速访问和低功耗特性,它经常用于嵌入式系统中,如智能手机、平板电脑、数字摄像机、网络设备等。

SRAM主要用于需要快速访问和持久存储数据的场景,特别适用于缓存存储器、寄存器文件和对数据响应速度要求高的应用。然而,由于SRAM的成本较高和容量较小,它通常被用作辅助存储器,而不是主要的系统内存。

DRAM:

  1. 主存储器(Main Memory):DRAM是计算机系统中主要的内存类型,用于存储运行中的程序和数据。它提供了大容量的存储空间,可以满足计算机系统对临时存储和访问数据的需求。
  2. 个人电脑(Personal Computers):DRAM被广泛应用于个人电脑中作为主要的内存。它提供了足够的容量和速度,以支持操作系统、应用程序和用户数据的加载和运行。
  3. 服务器(Servers):DRAM用于服务器系统中作为主存储器,以满足多用户和多任务的需求。服务器通常需要大容量的内存来处理复杂的计算任务和大规模的数据操作。
  4. 数据中心(Data Centers):数据中心使用DRAM作为主要的内存类型,用于存储和处理大规模的数据。数据中心通常需要高容量和高性能的内存来支持各种数据分析、处理和存储任务。
  5. 移动设备(Mobile Devices):虽然移动设备的内存容量相对较小,但DRAM仍然被广泛用于智能手机、平板电脑和其他移动设备中。它用于存储运行的应用程序、临时数据和用户数据。
  6. 嵌入式系统(Embedded Systems):DRAM也在许多嵌入式系统中使用,例如工业控制系统、汽车电子、物联网设备等。它提供了临时存储和数据交换的功能。

4.2 ROM

ROM(只读存储器)是一种存储数据的电子存储器类型,其中存储的数据在断电或重新启动后保持不变。ROM被称为"只读",是因为存储在其中的数据无法被常规操作修改或擦除

ROM的数据是在制造过程中被编程的,通常由芯片制造商或设备制造商在生产阶段完成。这些数据包括预先存储的指令、固件、引导程序、配置信息、固定数据等。ROM的内容在使用过程中无法修改,因此它被用于存储不可更改或固定的数据。

以前常用的51单片机,烧录程序,就是把程序写入到ROM中。

在这里插入图片描述

有几种常见类型的ROM:

  1. Mask ROM(掩模只读存储器):Mask ROM是一种最早的ROM类型。在制造过程中,ROM芯片的数据被物理地编码到芯片内部的电路中。一旦编程完成,数据将无法修改或擦除。使用很少了,不介绍。
  2. PROM可编程只读存储器):PROM允许用户编程数据到ROM芯片中,但一旦编程完成,数据就无法再次修改或擦除。编程通常通过使用特定的设备或编程器进行。
  3. EPROM可擦除可编程只读存储器):EPROM与PROM类似,但它具有可擦除的特性。它允许多次编程和擦除数据,通常通过使用紫外线擦除器来擦除数据。擦除后,新的数据可以重新编程到EPROM中。

4.21 PROM

PROM(可编程只读存储器)是一种只读存储器类型,可以由用户编程数据。它允许将数据一次性编程到芯片中,之后数据无法再次修改或擦除。下面是对PROM的详细介绍:

  1. 工作原理:PROM使用一种特殊的存储单元,称为可编程存储单元(fuse或antifuse)。这些存储单元中的电路元件可以被电气信号编程以表示二进制数据的位。编程过程是非可逆的,一旦编程完成,数据就无法再次更改或擦除。
  2. 编程过程:编程PROM通常需要使用特定的设备或编程器。在编程过程中,电气信号被应用到PROM的特定位置,以改变存储单元的状态。编程后,存储单元的状态会被固定下来,以表示编程的数据。
  3. 数据存储:PROM的数据存储在每个存储单元的编程状态中。存储单元的状态可以是导通(1)或不导通(0),表示二进制数据的位。编程过程中,用户可以选择将存储单元设置为1或0,以编程相应的数据。
  4. 不可擦除性:与EPROM和EEPROM不同,PROM无法擦除已编程的数据。一旦编程完成,数据就无法再次修改或擦除。这使得PROM的数据是固定的,无法在使用过程中进行更新或修改。
  5. 应用:PROM在过去广泛用于存储固定的数据,例如引导程序、配置信息、固件等。然而,由于其不可擦除的特性,PROM的应用范围相对受限。现代技术中,可编程ROM的更高级版本,如EPROM和EEPROM,更常用于满足灵活性和可更新性的需求。

4.22 EPROM

EPROM(可擦除可编程只读存储器)是一种只读存储器类型,具有可擦除和可编程的特性。它允许用户多次编程和擦除数据,以更新或修改存储的内容。下面是对EPROM的详细介绍:

  1. 工作原理:EPROM使用一种特殊的存储单元,称为浮栅(floating gate)。浮栅中的电子可以被紫外线辐射(UV)或电子激励(电子注入)来改变电子的能量状态。这个状态的变化会影响存储单元的导电性,从而表示二进制数据的位
  2. 编程过程:EPROM的编程是通过将电荷注入浮栅中来实现的。编程时,电压被应用到存储单元,使得电子被注入到浮栅中,改变其能量状态。存储单元的状态可以是导通(1)或不导通(0),表示二进制数据的位。
  3. 擦除过程:EPROM的擦除是将浮栅中的电荷移除,恢复存储单元的初始状态。擦除通常通过暴露EPROM芯片到紫外线光源下进行,以使浮栅中的电子能量状态返回到未编程状态。擦除后,存储单元可以重新编程以存储新的数据。
  4. 可擦除性:与PROM不同,EPROM具有可擦除的特性。它可以通过紫外线擦除器来擦除数据,使存储单元返回到未编程状态。擦除过程是全局性的,即整个EPROM芯片的数据都会被擦除。
  5. 多次编程和擦除:EPROM允许多次编程和擦除操作,这使得数据可以被更新和修改。在EPROM编程时,只需要选择要编程的存储单元,并将相应的数据编程到这些单元中。擦除时,整个芯片的数据都会被擦除。
  6. 应用:EPROM在过去广泛用于存储固件、引导程序、配置信息等需要更新的数据。然而,由于EPROM的擦除过程需要紫外线擦除器,并且擦除是全局性的,使用EPROM的灵活性有限。现代技术中,更常用的是EEPROM和闪存等可擦除存储器类型,它们具有更高的擦除和编程灵活性。

EPROM虽然具有可擦除的特性,但其擦除和编程过程都是相对较慢的。此外,EPROM芯片的寿命也有限,擦除和编程次数越多,芯片的可靠性和性能可能会下降。因此,在使用EPROM时需要注意擦除和编程的次数,以保证数据的可靠性和持久性。

▶ EEPROM

EEPROM(Electrically Erasable Programmable Read-Only Memory)是一种可擦写可编程只读存储器。与传统的ROM类型不同,EEPROM具有可编程和可擦写的特性,可以在电子设备中存储和更新数据。以下是对EEPROM的详细介绍:

  1. 存储和擦写:EEPROM可以像ROM一样存储数据,但它还具有擦写的能力。擦写是指可以将存储在EEPROM中的数据擦除,并写入新的数据。与EPROM需要使用紫外线擦除器不同,EEPROM可以通过电子擦除操作实现,无需特殊设备
  2. 工作原理:EEPROM中的存储单元由浮栅(floating gate)组成,类似于EPROM。然而,EEPROM具有控制门(control gate),可以在正常工作时改变浮栅中的电荷状态。这使得数据可以被编程到EEPROM中,并在需要时被擦除和重新编程。
  3. 擦写操作:EEPROM的擦写操作通常通过电子隧道效应来实现。在擦写操作中,通过应用适当的电压和电流,电子可以从浮栅隧穿到擦除门(erase gate),从而将浮栅中的电荷移除,实现数据的擦除。
  4. 编程操作:EEPROM的编程操作类似于擦写操作,但是编程时会将电子注入浮栅中,以改变其电荷状态。这种改变会影响存储单元的导电性,从而表示存储的数据。
  5. 数据保持性:与RAM不同,EEPROM是非易失性存储器,意味着它可以在断电情况下保持存储的数据。即使没有外部电源供应,EEPROM中的数据仍然会保持。
  6. 应用:EEPROM常用于存储需要在设备使用过程中更新或修改的数据,如配置信息、用户设置、校准数据等。它在许多电子设备中得到广泛应用,例如计算机、手机、电视、汽车电子系统等。

EEPROM的擦写和编程操作相对较,相比于RAM和高速缓存等存储器,EEPROM的访问速度较慢。此外,EEPROM具有一定的擦写寿命,即可以进行有限次数的擦写操作,超过寿命后可能会导致存储单元的损坏。因此,在使用EEPROM时需要注意擦写次数的限制和数据的可靠性。

比如ROM容量较小的51单片机就是用的EEPROM。

▶ UVEPROM

就是前面说的使用紫外线擦除的EROM。

五、辅助存储器:secondary memory

Secondary memory(辅助存储器)是计算机系统中用于持久存储数据和程序的一种存储设备。与主存储器(主存)相比,辅助存储器的容量更大,但访问速度较慢。辅助存储器通常用于长期存储和持久保存数据,即使在断电或重新启动计算机后,存储在辅助存储器中的数据仍然保持不变。

常见的辅助存储器设备包括硬盘驱动器(Hard Disk Drive,HDD)、固态硬盘(Solid State
Drive,SSD)、光盘、闪存驱动器(Flash Drive)、磁带等。

介绍一下最常见的 HDD、SSD和Flash:

  1. HDD(Hard Disk Drive):HDD是一种机械式存储设备,使用旋转的磁盘和移动的读写磁头来存储和检索数据。HDD内部包含一个或多个磁性盘片,数据通过读写磁头在盘片上进行读写。HDD的工作原理是通过磁性材料在盘片上创建磁场,用于表示数据的位。HDD具有较大的存储容量、相对较低的成本和广泛的应用领域,但其速度较慢、存在机械部件和易受冲击和震动的影响。
    在这里插入图片描述

  2. SSD(Solid State Drive):SSD是一种基于闪存存储芯片的存储设备,不含任何机械部件。SSD使用闪存芯片来存储数据,这些芯片具有非易失性存储特性,可以在断电情况下保持数据。SSD的工作原理是通过电子门和电荷存储单元(如NAND闪存)来表示数据的位。SSD具有较快的读写速度、较低的访问延迟和较高的耐冲击性。它们广泛应用于个人电脑、笔记本电脑、服务器和移动设备等领域。
    在这里插入图片描述

  3. Flash 存储器:Flash存储器是一种非易失性存储器技术,用于数据存储和传输。它是SSD和其他存储设备中使用的核心技术之一。Flash存储器通过电子门和电荷存储单元来存储数据,类似于SSD。Flash存储器具有较快的读取速度、较低的功耗、较高的可靠性和耐久性。它被广泛应用于闪存驱动器(SSD)、USB闪存驱动器、闪存卡、存储卡、手机和其他便携设备中

以前买的电脑都是SSD+HDD的组合,而现在已经完全是SSD了,而且SSD由于技术的提升,价格已经大幅下降了(当然了也有无良商家)。

六、单片机的存储

简单说一下。

51单片机有几种存储介质。它有一个内部RAM,每种51单片机都应该有,共256字节。此外,它还有一个程序存储器(EEPROM),片内外统一编址,共64KB。此外,如果内部数据存储器不够用,可以外接数据存储器。8051单片机最大可以外接容量为64KB的数据存储器(RAM)。

在这里插入图片描述

STM32单片机也有几种存储介质。它有一个内置的Flash,一般我们使用JTAG或者SWD模式下载程序时,就是下载到这个里面,重启后也直接从这启动程序,可以理解为电脑中的软件安装在这里。

此外,它还有一个内置的SRAM区,可以理解为这个是电脑的内存条。STM32单片机还有一个系统存储器,这是一块特定的区域,只读ROM存储器,STM32厂家在这个区域内部预置了一段BootLoader,也就是我们常说的ISP程序,出厂后无法修改。

在这里插入图片描述



~

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

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

相关文章

redis的4种模式,单机,哨兵、主从复制、集群

为了redis叫做redis服务器? 因为在运行时,在进行工作时是一个被注册一个进程(服务),我们把他叫做一个redis服务器。(就是个应用程序而已。) 1.单机模式 我们安装redi,启动服务之后,默认就这个,只有一个redis服务器(…

编译原理笔记(哈工大编译原理)(持续更新)

文章目录 前言概论语言与文法基本概念字母表串字母表与串的联系 文法语言推导和规约句型与句子语言与字母表 文法的分类CFG的分析树 前言 说实话,我不是很想上这门课,确实没什么大用,虽然我觉得这门课学一学也挺好,但是我觉得弄8…

架构师必备项目管理方法-关键路径法

在《架构思维的六要素》中提到成本、规划、需求、维护、人员和质量是要考量的留个维度。咱们在日常工作中多少都会接触一些相关的管理方法,但是似乎是不知道也不影响干活,所以很多人也没有去深究。但实际上很可能知道了做事就更能抓住重点。 关键路径法是…

预测神经胶质瘤基因型的多模态学习

文章目录 Multi-modal learning for predicting the genotype of glioma摘要本文方法多模态数据生成Brain networks construction via self-supervised NNsMulti-modal learning for image, geometrics and brain networksBi-level multi-modal contrastive loss Population gr…

html实现好看的个人介绍,个人主页模板3(附源码)

文章目录 1.设计来源1.1 主界面1.2 关于我界面1.3 教育成就界面1.4 项目演示界面1.5 联系我界面 2.效果和源码2.1 动态效果2.2 源代码2.2 源代码目录 源码下载 作者:xcLeigh 文章地址:https://blog.csdn.net/weixin_43151418/article/details/131263195 …

新手Maven入门(一)

Mavenue介绍和基本概念 一、什么是Maven1.1 Maven的组成1.2 安装和配置Maven1.2.1 下载1.2.2 安装 二、Maven 的基本概念2.1 标准的目录结构2.2 POM 大纲2.2.1 pom大纲展示 2.3 构件2.3.1 什么是maven的构建 2.4 POM 文件的用例2.5 GAV 坐标 三、依赖 一、什么是Maven Maven 是…

2023年前端面试汇总-计算机网络

1. HTTP协议 1.1. GET和POST的请求的区别 Post 和 Get 是 HTTP 请求的两种方法,其区别如下: 1. 应用场景 GET 请求是一个幂等的请求,一般 Get 请求用于对服务器资源不会产生影响的场景,比如说请求一个网页的资源。而 Post 不是…

如何在Ubuntu上安装MongoDB?

一、Ubuntu安装MongoDB MongoDB安装很简单,无需下载源文件,可以直接用apt-get命令进行安装。 打开终端,输入以下命令 sudo apt-get install mongodb这时装好以后应该会自动运行mongod程序,通过命令查看进程是否已经启动 pgrep …

Spring 实现AOP常见的两种方式(注解或者自定义注解)

第一种 导入AOP相关坐标(依赖冲突解决办法&#xff0c;将依赖中版本号删除&#xff0c;springboot会自动匹配合适的版本 ) <dependencies><!--spring核心依赖&#xff0c;会将spring-aop传递进来--><dependency><groupId>org.springframework</gr…

自动化测试必会之数据驱动测试

数据驱动测试 在实际的测试过程中&#xff0c;我们会发现好几组用例都是相同的操作步骤&#xff0c;只是测试数据的不同&#xff0c;而我们往往需要编写多次用例来进行测试&#xff0c;此时我们可以利用数据驱动测试来简化该种操作。 参数化&#xff1a; 输入数据的不同从而产…

C语言:输入两个升序排列的序列,将两个序列合并为一个有序序列并输出。

题目&#xff1a; 描述 输入两个升序排列的序列&#xff0c;将两个序列合并为一个有序序列并输出。 输入描述&#xff1a; 输入包含三行&#xff0c; 第一行包含两个正整数n, m&#xff0c;用空格分隔。n表示第二行第一个升序序列中数字的个数&#xff0c;m表示第三…

C++ 教程(12)——循环

C 循环 有的时候&#xff0c;可能需要多次执行同一块代码。一般情况下&#xff0c;语句是顺序执行的&#xff1a;函数中的第一个语句先执行&#xff0c;接着是第二个语句&#xff0c;依此类推。 编程语言提供了允许更为复杂的执行路径的多种控制结构。 循环语句允许我们多次…

朋友圈功能合集来咯!定时发朋友圈,查看朋友圈,朋友圈跟圈,一键转发朋友圈,延迟评论

&#x1f30a;发布朋友圈 功能介绍&#xff1a;可使用已登录在系统上的微信号发送朋友圈。支持发送图片、文字、视频和公众号链接等几种类型的内容。 &#xff08;1)朋友圈内容编辑&#xff1a;可以在输入框中输入要发送的文本&#xff0c;并在浮窗中选择表情。上传图片可以点…

【c++11】c++11特性

c11 c11简介列表初始化std::initializer_list autodecltypenullptr 结语 c11简介 从C0x到C11&#xff0c;C标准10年磨一剑&#xff0c;第二个真正意义上的标准珊珊来迟。相比于C98/03&#xff0c;C11则带来了数量可观的变化&#xff0c;其中包含了约140个新特性&#xff0c;以…

QT QTreeView\QTreeWidget控件 使用详解

本文详细的介绍了QTreeView、QTreeWidget控件的各种操作&#xff0c;例如&#xff1a;新建界面、QTreeWidget、QTreeView、控件布局、设置列、设置宽高、设置列表头、设置复选框、设置图标、添加树、删除树、查找树、修改树、设置选中、树排序、事件、信号、槽函数、添加节点、…

【玩转Docker小鲸鱼叭】MacOS系统安装Docker

安装Docker Mac 系统安装 Docker 其实很简单&#xff0c;我们在官方文档下载安装一下就可以了&#xff0c;但是需要注意 Docker 官方建议 MacOS 必须是版本 11 或更高版本&#xff0c;如果版本较低&#xff0c;建议先升级 MacOS 版本。 可以通过左上角的小  图片查看系统版…

浅析Spring-kafka源码——消费者模型的实现

SpringBoot项目中的消费端实现而言,Spring-kafka没有用原生的ConsumerConnector,,而是借助原生client的拉取消息功能做了自己的消费模型的实现,提供了@KafkaListener注解这种方式实现消费。 开发中在使用Spring-kafka时,一般也都是通过使用@KafkaListener注解的方法来实现…

Android MPAndroidChart折线图渐变填充实现

效果如下&#xff1a; 以下是一个从上到下渐变的drawable&#xff0c;上面是蓝色&#xff0c;逐步向下变成白色&#xff1a; chart_bg.xml <?xml version"1.0" encoding"utf-8"?> <shape xmlns:android"http://schemas.android.com/apk…

静态链接和动态链接 -- 静态加载(隐式调用)和动态加载(显式调用)

区别 静态链接和动态链接 静态链接 : 由链接器在链接时将库的内容加入到可执行程序中&#xff0c;这里的库是静态库&#xff0c;Windows下是*.lib后缀&#xff0c;Linux下是*.a后缀。动态链接 : 可执行程序加载时(静态加载) 或者 运行时(动态加载)&#xff0c;将库文件中的内容…

OpenShift Virtualization - 通过外部固定 IP 访问 VM 中的服务(附视频)

《OpenShift / RHEL / DevSecOps 汇总目录》 说明&#xff1a;本文已经在 OpenShift 4.12 的环境中验证 文章目录 方法1&#xff1a;通过 Service 的 NodePort 访问 VM方法2&#xff1a;通过外部 IP 访问 VM确认 OpenShift 集群环境为 Worker 节点添加 Linux Bridge创建使用 Li…