存储器

概述

存储器分类

按存储介质分类

存储介质是指能寄存’0’、'1’两种代码并能区别两种状态的物质或元器件。
存储介质主要有半导体器件、磁性材料和光盘等。

(1) 半导体存储器 	易失	(体积小、功耗低、存取时间短)
  种类:
	①TTL:高速
	②MOS:高度集成(目前使用较广泛)
	
(2) 磁表面存储器	非易失	
  组成:
	磁头(工作时用磁头在磁层上进行读写操作)
	载磁体(工作时磁层随载磁体高速运转)  
  种类:
	①磁盘
	②磁带
	③磁鼓(很少采用)		
	
(3) 磁芯存储器(几乎不用)		非易失	
  组成:
	由硬磁材料做成的环状元件	
	
(4) 光盘存储器					非易失
  组成:
  	应用激光在记录介质上进行读写
  种类:
  	激光、磁光材料
按存取方式分类
(1) 存取时间与物理地址无关(随机访问存储器)
  随机存储器(RAM)	在程序的执行过程中 可 读 可 写
  特点:存储器的任何一个存储单元的内容都可以随机存取,而且存取时间与存储单元的物理位置无关。
  	①静态RAM(以触发器原理寄存信息)
  	②动态RAM(以电容充放电原理寄存信息)
  只读存储器(ROM)	在程序的执行过程中 只 读
  特点:通常用它存放固定不变的程序、常数以及汉字字库、甚至用于操作系统的固话、它与随机存储器可共同作为主存的一部分,统一构成主存的地址域。
  	①MROM:掩膜型只读存储器
  	②PROM:编程只读存储器
  	③EPROM:可擦除可编程只读存储器
  	④EEPROM:电可擦除可编程
  	⑤Flash Memory:快擦型,具有EEPROM的特点,速度更快
(2) 存取时间与物理地址有关(串行访问存储器)
特点:对存储单元进行读写操作时,需按其物理位置的先后顺序寻找地址,则这种存储器叫作串行访问存储器。
  顺序存取存储器    磁带
  直接存取存储器    磁盘
按在计算机中的作用分类
主存储器:和CPU直接交换信息

辅助存储器:它是主存储器的后援存储器,用来存放当前暂时不用的程序和数据,不能与CPU直接交换信息。

Cache:缓冲作用。
存储器分类总结

在这里插入图片描述

存储器的层次结构

存储器三个主要特征的关系

在这里插入图片描述

2. 缓存——主存层次和主存——辅存层次

在这里插入图片描述

  1. 缓存——主存缓存——主存这一层次的速度接近于缓存,高于主存。
    主要解决CPU与主存速度不匹配问题

  2. 主存——辅存主存——辅存这一层次速度接近于主存,容量接近于缓存。
    主要解决存储系统的容量问题

  3. 主存——辅存这一层次的不断发展中,形成了虚拟存储系统。在这个系统中,程序员编程的地址范围与虚拟存储器的地址空间相对应。

4.地址空间
虚地址(逻辑地址):程序员编程时采用的地址(相对地址),
地址空间大于实际主存。
• 实地址(物理地址):主存的实际地址。
**• 虚地址转换为实地址:**由计算机系统的硬件和操作系统自动完成,
对程序员是透明的。

主存储器

概述

主存的基本组成

在这里插入图片描述
现代计算机的主存都由半导体集成电路构成,图中的驱动器、译码器和读写电路均制作在存储芯片中,而MAR和MDR制作在CPU芯片内,存储芯片和CPU芯片可通过总线连接

主存和CPU的关系

在这里插入图片描述
读出信息:首先由CPU将该字的地址送到MAR,经地址总线送至主存,然后发出读命令主存接到读命令后,得知需将该地址单元的内容读出,便完成读操作,将该单元的内容读至数据总线上,由CPU决定该信息由MDR送至何方

写入信息:首先CPU该字所在主存单元的地址MAR送到地址总线,并将信息字送入MDR,然后向主存发写命令,主存接到写命令后,便将数据线上的信息写入到对应地址线指出的主存单元中

主存中存储单元地址的分配

在这里插入图片描述
在这里插入图片描述
数据存储模式:大端vs小端
小端模式
– 是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址
大端模式
– 是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址

主存的技术指标
主存的主要技术指标是存储容量和存储速度。
(1)存储容量:主存存放二进制代码总位数
(2)存储速度:
 	存取时间:存储器的访问时间,指启动一次存储器操作(读或写)到完成该操作所需的全部时间(读出时间、写入时间)。
 	读出时间:从存储器接收到有效地址开始,到产生有效输出所需的全部时间。
 	写入时间:从存储期接收到有效地址开始,到数据写入被选中单元为止所需的全部时间。
 	存取周期:连续两次独立的存储器操作(读或写)所需的最小间隔时间(读周期 写周期)
 	通常:存取周期 > 存取时间
(3)存储器的带宽:位/秒   单位时间内存储器存取的信息量
带宽=存储器时频率×存储器数据总线位数/8
(4)为了提高存储器的带宽,可采用以下措施:
	①缩短存取周期
	②增加存储字长,使每个存取周期可以读/写更多的二进制位
	③增加存储体

半导体存储芯片简介

半导体存储芯片的基本结构

芯片内集成具有记忆功能存储矩阵、译码驱动电路和读写电路

读/写电路:包括读出放大器和写入电路,用来完成读/写操作。
在这里插入图片描述
在这里插入图片描述

1.译码驱动能把地址总线送来的地址信号翻译成对应存储单元的选择信号,该信号在读写电路的配合完成对被选中单元的读写操作
2.读写电路包括读出放大器和写入电路,用来完成读写操作。
3.存储芯片通过地址总线、数据总线和控制总线与外部连接。
4.地址线单向输入的,其位数与芯片容量有关。
5.数据线是双向的(有的芯片可用成对出现的数据线分别作输入或输出),其位数与芯片可读出或写入的数据位
有关。
6.控制线主要有读/写控制线与片选线两种。读/写控制线决定芯片进行读/写操作片选线用来选择存储芯片
在这里插入图片描述
由多个存储芯片扩展成大容量存储器:
① 需要的存储芯片数量
② 存储芯片的地址线条数与构成的存储器地址线
条数及地址线之间的关系
③ 存储芯片的数据线条数与构成的存储器数据线
条数及数据线之间的关系
④ 存储器的地址范围和各组存储芯
片的地址范围(会用二进制数写出其范围)
⑤ 如何选择某一个(组)芯片
在这里插入图片描述

半导体存储芯片的译码驱动方式

半导体存储芯片的译码驱动方式有两种:线选法和重合法
在这里插入图片描述
**线选法:特点是用一根字选择线(字线),直接选中一个存储单元的各位(如一个字节)。这种方式结构比较简单,但只适合于容量不大的存储芯片。**如当地址线A3A2A1A0为1111时,则第15根线被选中,对应图中最后一行八位代码可以直接读出或写入。
在这里插入图片描述
重合法:在这里插入图片描述
在这里插入图片描述

随机存取存储器(RAM)

补充知识
在这里插入图片描述
随机存取存储器按其存储信息的原理不同,可分为静态RAM和动态RAM两类。
静态RAM(Static RAM 或记作 SRAM)

1.所谓的“静态”,是指这种存储器只要**保持通电**,里面储存的数据就可以**恒常保持**。然而,当**电力供应停止**时,SRAM储存的数据还是会消失(被称为volatile memory),这与在断电后还能储存资料的ROM或闪存是不同的。
2.SRAM不需要刷新电路即能保存它内部存储的数据。

1.保存0和1的原理是什么?
触发器存储数据。
在这里插入图片描述
在这里插入图片描述
2.基本单元电路的构成是什么?
SRAM一般可分为五大部分:存储单元阵列(core cells array),行/列地址译码器(decode),灵敏放大器(Sense Amplifier),控制电路(control circuit),缓冲/驱动电路(FFIO)。SRAM是静态存储方式,以双稳态电路作为存储单元,SRAM不像DRAM一样需要不断刷新,而且工作速度较快,但由于存储单元器件较多,集成度不太高,功耗也较大。
在这里插入图片描述

3.单元电路如何读出和写入
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.典型芯片的结构是什么样子的?
在这里插入图片描述
5.静态RAM芯片如何进行读出和写入操作?
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

动态随机存储器DRAM

1.保0和1的原理是什么?
电容充放电原理寄存信息

2.基本单元电路的构成是什么?
在这里插入图片描述
3.单元电路如何读出和写入?
4.典型芯片的结构是什么样子的?
在这里插入图片描述

5.动态RAM芯片如何进行读出和写入操作?
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
动态 RAM 时序
在这里插入图片描述

6.动态RAM为什么要刷新,刷新方法?
在这里插入图片描述
集中刷新
(存取周期为0.5μs)以 128 × 128 矩阵为例 刷新与行地址有关
在这里插入图片描述
分散刷新
(存取周期为1μs)
在这里插入图片描述

分散刷新与集中刷新相结合(异步刷新)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

只读存储器(ROM)

1.掩模ROM(MROM)
行列选择线交叉处有MOS管为**“1”**
行列选择线交叉处无MOS管为**“0”**

2.PROM(一次性编程)
在这里插入图片描述
熔丝断为"0" 熔丝未断为"1"

3.EPROM(多次性编程)
在这里插入图片描述
4.EEPROM(多次性编程)
电可擦写
局部擦写
全部擦写

5.Flash Memory(闪速性存储器)

存储器与CPU的连接

1.存储器容量的扩展
在这里插入图片描述
(1)位扩展 增加存储字长
位扩展是指只在**位数(数据线)**方向扩展(增加存储器的字长),而芯片的字数(地址线)和存储器的字数(地址线)是一致的。
连接方法:

  1. 将各存储芯片的地址线、片选线和读写线相应地并联起来;
  2. 各芯片的数据线单独列出。

位扩展的方法:
4. 在给定的芯片中选择合适的芯片,并确定使用数量;
5. 将各存储芯片的地址线、片选线和读写线相应地并联起来;
6. 各芯片的数据线单独列出,拼接成要求的数据宽度。
在这里插入图片描述
(2)字扩展
增加存储字(存储单元)的数量
字扩展是指仅在字数方向(存储单元个数或地址线)扩展,而位数不变。
连接方法:
7. 将各存储芯片的将芯片的地址线、数据线、读写线并联;
8. 由多出来的地址线作为片选信号来选中高低芯片。

字扩展的方法:
9. 在给定的芯片中选择合适的芯片,并确定使用数量;
10. 将选中芯片的低位地址线、读写线、数据线对应并联起来;
11. 用高位地址线译码,将输出接至各芯片的片选端。
在这里插入图片描述
(3)字、位扩展
字、位扩展是指仅在字数方向和位数方向上同时扩展(指既增加存储器的字的数量又增加字长)。
连接方法:
12. 先进行位扩展;
13. 然后按组进行字扩展。

字、位扩展的方法:
14. 在给定的芯片中选择合适的芯片,并确定使用数量;
15. 先进行位扩展,扩展成“组”,使得“组”的字长达到要求的字长;
16. 再用“组”进行字扩展,按照字扩展的方法将字数增加到目标字数

2.存储器和CPU的连接(重点)
(1)地址线的连接
CPU的地址线数往往比存储芯片的地址线数多,通常总是将CPU地址线的低位与存储芯片的地址线相连,CPU地址线的高位或在存储芯片扩充时用,或做其他用途,如片选信号等
(2)数据线的连接
CPU的数据线与存储芯片的数据线也不一定相等,必须对存储芯片扩位,使其数据位数与CPU的数据线数相等
(3)读/写命令线的连接
CPU的读/写命令线一般可直接与存储芯片的读/写控制端相连,通常高电平为读,低电平为写。
(4)片选线的连接
正确工作的关键。片选信号由CPU的MREQ的非(访存控制信号,低电平有效。若CPU访问I/O,则MREQ的非为高,表示不要求存储器工作)和未与存储芯片相连的高位地址线共同产生(需要用到一些逻辑电路,如译码器)。
(5)合理选择存储芯片
通常选用ROM存放系统程序、标准子程序和各类常数等,RAM则是为用户编程而设置的。
(6)考虑CPU和存储芯片的配合问题、速度问题、负载匹配问题。

例题1:
设CPU有16根地址线,8根数据线,用MREQ作访存控制现有下列芯片:1K×4位RAM;4K×8位RAM;8K×8位RAM;2K×8位ROM;4K×8位ROM;8K×8位ROM及74LS138等电路要求:构成地址为6000~67FFH的系统程序区;
地址为6800~6BFFH的用户程序区,选择芯片并画出逻辑连接图。
在这里插入图片描述
(1)写出地址范围对应的二进制地址码,并确定总容量
在这里插入图片描述
(2)确定芯片的数量及类型
系统程序区:需要的容量为 2K×8位,根据其特点,
选择ROM。
所以选择1片2K×8位的ROM,不需扩展。

用户程序区:需要的容量为 1K×8位,根据其特点,
选择RAM。
所以选择2片1K×4位的RAM,需位扩展。
(3)分配CPU的地址线
CPU连接ROM:
在这里插入图片描述
CPU连接RAM:
在这里插入图片描述
在这里插入图片描述
(4)确定片选信号
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
例题2:
CPU有20条地址线和16条数据线。并用"IO/" “M” ̅作为访存控制信号,(“RD” ) ̅为读命令,(“WR” ) ̅为写命令,CPU可以通过BHE和A0来控制按字节或字两种形式访存(如表4.1)。要求采用图4.39所示的芯片,门电路自定,试回答:
(1)CPU按字节访问和按字访问的地址范围各是多少?
(2)CPU按字节访问时需分奇偶体,且最大64KB为系统程序区,与其相邻的64KB为用户程序区。写出每片存储芯片对应的二进制地址码。
(3)画出对应上述地址范围的CPU与存储芯片的连接图。
在这里插入图片描述
(1)CPU按字节访问和按字访问的地址范围各是多少?
∵CPU地址线为20条,∴按字节访问的地址范围为220=1M
∵CPU数据线为16条,则存储器的字长为16位。
∴按字访问的地址范围为1M/2=512K
(2)CPU按字节访问时需分奇偶体,且最大64KB为系统程序区,与其相邻的64KB为用户程序区。写出每片存储芯片对应的二进制地址码。

CPU可以通过BHE和A0来控制按字节或字两种形式访存
在这里插入图片描述
(3)画出对应上述地址范围的CPU与存储芯片的连接图。
在这里插入图片描述
在这里插入图片描述
(3)画出对应上述地址范围的CPU与存储芯片的连接图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

存储器的校验
   具有发现错误或者同时能给出错误所在位置的数据编码,
就称为数据校验码。 
   校验码用于数据传输、存储过程中确保信息正确。

~~奇偶校验
~~循环冗余校验
~~海明码

**码距:**任意两组合法代码之间 不同的二进制位数 的 最小值。
在这里插入图片描述
在这里插入图片描述
1. 编码的最小距离(码距)
任意两组合法代码之间 二进制位数 的 最少差异
编码的纠错 、检错能力与编码的最小距离有关
在这里插入图片描述
2. 汉明码的组成能检查并纠正1位错误
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
各检测位 Ci 所承担的检测小组及特点:
在这里插入图片描述
2. 汉明码(n+k,n)的组成
在这里插入图片描述
例题:
在这里插入图片描述
3. 汉明码的纠错过程
在这里插入图片描述
在这里插入图片描述

例题1:
在这里插入图片描述
例题2:
在这里插入图片描述
例题3:
在这里插入图片描述

提高访存速度的措施

提高访存速度的措施:
采用高速器件(提高存储器的带宽 P74)
缩短存储器的存取周期;增加存储字长
采用层次结构 Cache –主存(4.3)
程序访问的局部性原理
调整主存结构

解释:
解释:若CPU字长16位,提高存储器存储字长到64位。CPU每次访存发送一个地址,都可以访问到64位(4个机器字长,即4个指令字长)到MDR。提高访存速度。
问题:
1、单体多字并行存储器一次能读取4个指令字。如果这些指令字中有分支指令,而且分支成功,那么该分支指令之后的指令是无用的。
2、当前执行指令所需要的多个操作数也不一定正好都存放在同一个长存储字中。由于数据存放的随机性比程序指令存放的随机性大所以发生这种情况的概率较大。
3、在这种存储器中必须凑齐了4个数之后才能一起写入存储器。如果只写个别字,就必须先把相应的长存储字读出来放到数据寄存器中然后在地址码的控制下修改其中的一个字最后再把长存储字写回存储器。 写操作变复杂。
4、当要读出的数据字和要写入的数据字处于同一个长存储字内时读和写的操作就无法在同一个存储周期内完成。

单体多字系统 增加存储体的存储字长及MDR位数

在这里插入图片描述
优点:增加存储器的带宽,提高访存速度
缺点:遇到转移指令、操作数不能连续存放、只需要单字长操作,效率不高。

多体并行系统

在这里插入图片描述
(1)高位交叉编址(顺序存储)
在这里插入图片描述
高位地址表示体号低位地址表示体内地址。程序和数据按体内地址顺序存放,一个存储体存满后,再存储下一个。

交叉:不连续
高位交叉:高位(体号或体地址)不连续

优点:各存储体可并行工作,体内地址连续,便于存储器的扩充。
缺点:由于程序和数据按顺序存放,导致某个存储体访问过于频繁,其余存储器空闲。
高位交叉编址的特点:
通过多体并行提高访存速度,有利于存储器容量的扩展。
若采用高位交叉编址,则连续读取n个字所需时间为nT(T为存取周期)。
(2)低位交叉编址(交叉存储)
各个存储体轮流编址
在这里插入图片描述
高位地址表示体内地址低位地址表示体号。程序连续存放在相邻的存储体中

每个模块的单元地址是不连续的;连续地址分布在相邻的不同模块内。
对于数据的成块传送,各模块可以实现多模块流水式并行存取;

优点:充分挖掘总线的每个瞬间(分离式通信),结合流水技术,有利于增加存储器带宽
低位交叉编址的特点:在不改变单体的存取周期的前提下,结合流水线技术增加存储器的带宽
在这里插入图片描述
为保证第二次启动某个体时,它的上一次存取操作已经完成,存储体的数量应该大于等于n
在这里插入图片描述
例题:
在这里插入图片描述
在这里插入图片描述
(3)存储器控制部件(简称存控)
在这里插入图片描述
写数请求高于读数,读数请求高于读指令

因为若运算部件不能尽快送走已算出的结果,会严重影响后续指令的执行,因此写数指令优先级高于读数和读指令;同样,若没有操作数参与运算,取出再多指令也无济于事, 因此读数的优先级高于读指令

多体并行存储器总结:
相当于把每个存取周期分成4段,每段为总线周期τ。每隔τ启动一个存储体。
在这里插入图片描述

高性能存储芯片(了解)

(1)SDRAM (同步 DRAM)
需要与系统时钟相同步的外部时钟;
非同步DRAM,CPU需先与主存进行时钟同步,再读写数据;
同步DRAM,主存在系统时钟控制下工作,CPU无需同步等待时间
SDRAM支持猝发模式,发出一个地址即可连续访问一个数据块;
采用多存储体结构,多个存储体紧密配合,高速读写数据。
(2)RDRAM(Rambus DRAM)
由 Rambus 开发,主要解决 存储器带宽问题
不像传统的DRAM,采用/RAS,/CAS和/WE信号来控制,而是采用异步的传输协议传送地址信息和数据信息,数据交换以包为单位
(3)CDRAM(带Cache的DRAM )
在 DRAM 的芯片内 集成 了一个由 SRAM 组成的 Cache ,有利于 猝发式读取

高速缓冲存储器

概述

1. 问题的提出
避免 CPU “空等” 现象
CPU 和主存(DRAM)的速度差异
理论基础:局部性原理
空间局部性:指当CPU访问某个存储单元时,该存储单元附近的存储单元最有可能被随后访问;

时间局部性:指当CPU访问某个存储单元时,该存储单元最有可能被再次访问。

例如:
int sum(int *a,int n)
{
int i, s=0; //s变量,时间局部性
for(i=0;i<n;i++)
s+=a[i]; //a数组,空间局部性
return s;
}

2. Cache的工作原理
^^主存和缓存的编址
^^命中与未命中
^^Cache 的命中率
^^cache—主存系统的效率
(1) 主存和缓存的编址
主存和缓存按块存储 块的大小相同
B 为块长

在这里插入图片描述
(2) 命中与未命中
在这里插入图片描述
(3) Cache 的命中率
在这里插入图片描述
(4) Cache –主存系统的效率
设访问 Cache 的时间为 tc ,访问主存的时间为 tm1-h表示未命中率,则主存系统的平均访问时间ta为:
ta=h*tc+(1-h)*tm
在这里插入图片描述
3. Cache 的基本结构
在这里插入图片描述
Cache存储体以块为单位与主存交换信息,为加速cache
与主存之间的调动,主存大多采用多体结构,且cache访存的优先级最高。

当cache内容已满,无法接受来自主存块的信息时,就由
Cache内的替换机构按一定的替换算法来确定应从cache内移出哪个块返回主存,而把新的主存块调入cache。

是将CPU送来的主存地址转换为cache地址。
4. Cache 的 读写 操作
在这里插入图片描述
Cache 和主存的一致性
在这里插入图片描述
5. Cache 的改进
在这里插入图片描述

Cache --主存的地址映射

地址映射:主存地址映射到Cache地址。方法有:
1.直接映射 2.全相联映射 3.组相联映射

直接映射

在这里插入图片描述
每个缓存块 i 可以和 若干 个 主存块 对应
每个主存块 j 只能和 一 个 缓存块 对应
在这里插入图片描述

全相联映射

在这里插入图片描述
主存 中的 任一块 可以映象到 缓存 中的 任一块

组相联映射

在这里插入图片描述
在这里插入图片描述

三种映射方式的主存和缓存地址划分

在这里插入图片描述

三种映射方式的比较

直接映射:某一主存块只能映射到唯一缓存块。映射方式简单,但是不够灵活,容易导致块冲突。
全相联映射:某一主存块可映射到任一缓存块,最灵活,不易冲突,但成本高。
组相联映射:某一主存块可映射到某一组的任一块,兼顾了灵活性和成本。

替换算法

  1. 先进先出 ( FIFO )算法
  2. 近期最少使用法( LRU)算法
    1. 随机法
      例题:
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述

辅助存储器

一、概述

  1. 特点 容量大、速度慢、成本低、非易失性、不直接与 CPU 交换信息
  2. 磁表面存储器的技术指标
    (1) 记录密度
    道密度 Dt 位密度 Db

(2) 存储容量
C = n × k × s

(3) 平均寻址时间
寻道时间 + 等待时间

(4) 数据传输率
Dr = D × V
在这里插入图片描述

(5) 误码率
出错信息位数与读出信息的总位数之比

二、磁记录原理和记录方式
1. 磁记录原理
在这里插入图片描述
在这里插入图片描述
2. 磁表面存储器的记录方式
在这里插入图片描述
三、硬磁盘存储器

  1. 硬磁盘存储器的类型
    (1) 固定磁头和移动磁头
    (2) 可换盘和固定盘
  2. 硬磁盘存储器结构
    在这里插入图片描述
    (1) 磁盘驱动器
    在这里插入图片描述
    (2) 磁盘控制器
    • 接受主机发来的命令,转换成磁盘驱动器的控制命令
    • 实现主机和驱动器之间的数据格式转换
    • 控制磁盘驱动器读写
    在这里插入图片描述
    (3) 盘片
    由硬质铝合金材料制成

四、软磁盘存储器
在这里插入图片描述
在这里插入图片描述
五、光盘
在这里插入图片描述

特别注意

仅供参考学习,转载请附上原文链接
图片来源于网络、个人收藏、个人制作、老师PPT
该篇文章不做任何商业用途,纯属分享学习心得,如有侵权,望联系本人处理
还在读大学的程序员,项目经验少,如有纰漏,感谢指正
需要源代码请私聊联系本人
谢谢配合

如果这篇文章对您有帮助,小小的点个赞,算是给小学弟的鼓励吧!谢谢大佬!!/呱呱.jpg

  • 7
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值