王道计算机组成原理课代表 - 考研计算机 第三章 存储系统 究极精华总结笔记

news2024/11/23 4:08:21

本篇博客是考研期间学习王道课程 传送门 的笔记,以及一整年里对 计算机组成 知识点的理解的总结。希望对新一届的计算机考研人提供帮助!!!
 
关于对 存储系统 章节知识点总结的十分全面,涵括了《计算机组成原理》课程里的全部要点本人来来回回过了三遍视频),其中还陆陆续续补充了许多内容,所以读者可以相信本篇博客对于考研计算机组成原理 “存储系统” 章节知识点的正确性与全面性;但如果还有自主命题的学校,还需额外读者自行再观看对应学校的自主命题材料
 
计算机组成原理 笔记导航🚥🚥🚥

  1. 🥬 第一章 计算机系统概述(未完成)
  2. 🥕 第二章 数据的表示和运算(未完成)
  3. 🥪 第三章 存储系统 ⇦当前位置🪂
  4. 🍊 第四章 指令系统
  5. 🍒 第五章 中央处理器
  6. 🍀 第六章 总线
  7. 🍚 第七章 输入输出系统
  8. 🎨计算机组成原理 复试精简笔记 (未完成)
     

如果本篇文章对大家起到帮助的话,跪求各位帅哥美女们,求赞👍 、求收藏、求关注!
你必考上研究生!我说的,耶稣来了也拦不住!😀😀😀

在这里插入图片描述

 

食用说明书:
第一遍学习王道课程时,我的笔记只有标题和截图,后来复习发现看只看图片,并不能很快的了解截图中要重点表达的知识点。
在第二遍复习中,我给每一张截图中 标记了重点,以及 每张图片上方总结了该图片 对应的知识点 以及自己的 思考
最后第三遍,查漏补缺。
所以 ,我把目录放在博客的前面,就是希望读者可以结合目录结构去更好的学习知识点,之后冲刺复习阶段脑海里可以浮现出该知识结构,做到对每一个知识点熟稔于心!
请读者放心!目录展示的知识点结构是十分合理的,可以放心使用该结构去记忆学习!
注意(⊙o⊙)!,每张图片上面的文字,都是该图对应的知识点总结,方便读者更快理解图片内容。

 


《计算机组成原理》第3章 存储系统

【考纲内容】 王道 P94
 
(一) 存储器分类
 
(二) 层次化存储器的基本结构

(一)和(二)网课耗时:1 h

 

(三) 半导体随机存取存储器

  • SRAM、DRAM、Flash存储器;
     

(四) 主存储器

  • DRAM芯片和内存条、多模块存储器、主存和CPU之间的连接;

(三)和(四)网课耗时:0.5 h

 

(五) 外部存储器

​ 网课耗时:1 h

  • 磁盘存储器、固态硬盘(SSD);
     

(六) 高速缓冲存储器(Cache)

​ 网课耗时:1.5 h

  • Cache的基本原理;
  • Cache和主存之间的映射方式;
  • Cache中主存块的替换算法;
  • Cache写策略
     

(七) 虚拟存储器

​ 网课耗时:1 h

  • 虚拟存储器的基本概念;
  • 页式虚拟存储器:基本原理、页表、地址转换、TLB(快表);
  • 段式虚拟存储器的基本原理;
  • 段页式虚拟存储器的基本原理;
     

【复习提示】
 
​本章是历年命题重点,特别是有关 Cache虚拟存储器 的考点容易出 综合题
 
存储器的特点,存储器的扩展(芯片选择、连接方式、地址范围等),交叉存储器,Cache的相关计算与替换算法,虚拟存储器与快表也容易出 选择题
 
​ 读者需掌握存在 Cache 和 TLB 的计算机中的地址翻译与Cache映射问题,也建议结合 操作系统 - 内存管理 一起复习;

知识点选择题综合题
存储器的特点
存储器的扩展
交叉存储器
Cache
Cache的相关计算与替换算法
虚拟存储器
快表

 

3.1 存储器概述

在这里插入图片描述

在这里插入图片描述

 

1. 存储器的层次结构

​ 存储器的三大评判指标:速度、容量、价格

在这里插入图片描述

 

​ 使用任意一种存储器,都无法满足用户对存储器 高速、大容量、低价格 的需求,所以采用 多级结构 形成对应的 “存储体系“。

存储体系:把两个或两个以上的存储介质,通过 软件、硬件 或 软硬件结合 的方式,把它们连成一个整体。使得这个存储体系具有高速、大容量、低价格的特点。

  • 主存 - 辅存 结构解决 容量 问题;
  • 缓存 - 主存 结构解决 速度 问题;

​ 主存和CPU两者的速度存在不匹配问题,故使用 cache缓存 进行解决,这里面还涉及到 局部性原理(时间、空间)

在这里插入图片描述

 

缓存 - 主存 层次采用 硬件方式 连成一个整体(为了追求速度);

主存 - 辅存 层次采用 软、硬件结合方式 连成一个整体;

主存 - 辅存 构成 虚拟存储器 ,使用虚地址(逻辑地址);

缓存 - 主存 使用主存储器地址,也就是实地址(物理地址);

在这里插入图片描述

 

2. 存储器的分类

① 按 层次结构 分类

在这里插入图片描述
 

② 按 存储介质 分类

  • 半导体存储器
  • 磁表面存储器
  • 光存储器

在这里插入图片描述

 

③ 按 存取方式 分类

  • 随机存储器:存储器的任何存储单元都能被 随机存取 ,且存取时间和存储单元的物理位置 无关;(半导体存储器是随机)
  • 顺序存储器:存储器只能按照 某种顺序来存取 ,存取时间和存储单元的物理位置 有关;(磁带是顺序,磁盘是半顺序)

在这里插入图片描述

 

④ 按 信息的可更改性 分类

  • 只读存储器(ROM)
  • 随机读写存储器(RAM)

在这里插入图片描述
 

⑤ 按 信息的可保持性 分类

  • 易失性存储器
  • 非易失性存储器

在这里插入图片描述

 

3. 存储器的性能指标

在这里插入图片描述

 

字存储单元 :存放一个机器字的存储单元,相应的单元地址叫做 字地址

字节存储单元 :存放一个字节的存储单元,相应的单元地址叫做 字节地址

按字寻址 :计算机可编址的最小单位是 字存储单元

按字节寻址 :计算机可编址的最小单位是 字节存储单元

 

再补充下 字的概念:

  • 如果指单位 :一个字 = 2个字节 ;
  • 如果指机器字 :就是计算机一次运算的数据位数(32位、64位);
  • 如果指存储字 :每个存储单元的位数(一般是1B);

​ 存储字长是指存放在一个存储单元中的二进制代码个数,内存中存储字的长度,存储字长可以是8位、16位、32位等;

不要把字节和字长混淆 。因为1字节 = 8位(一般情况下),所以存储字长都是8的倍数。(1字长 = n字节)

 

下图举例说明:

​ 地址线24根,224 = 16MB, 此时 1字节就是1B,所以按字节寻址的范围就是16M;

​ 按字寻址时,如果字长为16位,那么1字长(16)就是2字节(2 * 8),此时按字寻址的范围就是8M;

​ 关键就是看 字长等于几字节

在这里插入图片描述

 

小结

在这里插入图片描述

 

3.2 主存储器

3.2.1 主存储器的基本构成

​ CPU 要实现对存储单元的访问,首先要 选择存储芯片 ,即进行 片选

​ 然后为选中的芯片依地址码 选择相应的存储单元 ,以进行数据的存取,即进行 字选
 
​ 片内的字选通常是由CPU送出的N条低位地址线完成的,地址线直接接到所有存储芯片的地址输入端 (N 由片内存储容量决定);
 
​ 片选信号的产生分为 线选法译码片选法

在这里插入图片描述

 

1. 半导体元件的原理
 
​ 每个存储器由 存储体、MAR 和 MDR 构成,在 时序控制逻辑 的控制下有条不紊地运行;

​ 存储体(存储矩阵)由多个 存储单元 构成,一个存储单元由多个 存储元 构成;

在这里插入图片描述

 

2. 存储芯片的基本原理
 
如何根据地址,去读/写某个存储字?

​ n位地址 代表 2n个存储单元,译码器 根据地址寄存器送来的地址,转为某一条 字选线 的高电平信号;

​ 加压之后,对应的MOS管连通,之后进行读、写操作;

在这里插入图片描述

 

MAR 不稳定,只有当其电信号稳定之后,控制电路 才会打开 译码器 的开关,让其翻译地址;

​ 当 MDR 的输出稳定之后,控制电路 才会认为此时的输出是正确的,才让其给 数据总线 传输数据;

在这里插入图片描述

 

​ 片选线:选择存储芯片是否有效;

​ 考试还会让你根据地址线、数据线、片选线、读/写控制线等信息,确定金属引脚的数量;

在这里插入图片描述

在这里插入图片描述

 

3. 如何实现不同的寻址方式

在这里插入图片描述

在这里插入图片描述

小结

在这里插入图片描述


3.2.2 SRAM和DRAM

在这里插入图片描述

1. DRAM和SRAM存储元件不同导致的特性差异

在这里插入图片描述

在这里插入图片描述

​ 栅极电容是 ==破坏性读出,==读出就放电了,所以在读出之后还得 重写

​ 双稳态触发器是 ==非破坏读出,==所以速度更快;

在这里插入图片描述

​ 双稳态触发器成本高,功耗高,更贵;

在这里插入图片描述

DRAM v.s SRAM

在这里插入图片描述

​ 电容里面的电荷会逐渐消失,所以必须在消失前进行 刷新

在这里插入图片描述

2. DRAM的刷新

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3. DRAM的地址线复用技术

​ 行地址,列地址一共n位,但可以用 n/2条地址线分别送到行地址缓冲器、列地址缓冲器里;

在这里插入图片描述

小结

在这里插入图片描述


3.2.3 只读存储器ROM

在这里插入图片描述

1. 各种ROM的信息

在这里插入图片描述

在这里插入图片描述

2. 计算机内的重要ROM

在这里插入图片描述

在这里插入图片描述

小结

在这里插入图片描述

3.3 主存储器与CPU的连接

3.3.1 主存储器与CPU的连接

在这里插入图片描述

1. 单块存储芯片与CPU的链接

在这里插入图片描述

2. 多块存储芯片与CPU的链接

补充一下:地址线和数据线的根数 取决于 存储器芯片 的容量,如何理解这句话?

分析:

​ ① 先假设有一个存储芯片的容量为1GB

​ ② 可能是下面几种情况:

​ 1GB = 1G * 1B

​ = 512M * 2B

​ = 256M * 4B = 存储单位个数 * 存储单位位数

​ 虽然这三种情况容量都是1GB,但代表了三个不一样的存储器。

​ ③ 以 1G * 1B 举例:

​ 1G = 230,也就是 30根地址线

​ 1字节 = 8位,也就是 8根数据线

在这里插入图片描述

在这里插入图片描述

(1) 位扩展

在这里插入图片描述

在这里插入图片描述

(2) 字扩展

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

① 线选法

在这里插入图片描述

② 译码片选法

在这里插入图片描述

​ 使用 1-2 译码器 进行字扩展,1-2 代表输入一位信号得到2种输出结果;

​ 下图左边存储芯片,当地址为 1x xxxx xxxx xxxx 时,存储芯片工作;

​ 下图右边存储芯片,当地址为 0x xxxx xxxx xxxx 时,存储芯片工作;

​ ==3-8 译码器,==输入 ==000,==对应的 第1条线高电平信号;

在这里插入图片描述

​ ==3-8 译码器,==输入 ==001,==对应的 第2条线高电平信号;

在这里插入图片描述

​ ==3-8 译码器,==输入 ==010,==对应的 第3条线高电平信号;

在这里插入图片描述

​ 使用 2-4 译码器 进行字扩展

​ 输入 00、01、10、11

在这里插入图片描述

​ 当 2-4 译码器 的两条输入线接 A13、A15 时,A14 是什么都没关系;

在这里插入图片描述

在这里插入图片描述

(3) 字位扩展

​ 位扩展,增加存储字长,提高数据总线传输能力;

​ 字扩展,增加存储字数,提高CPU寻址能力;

在这里插入图片描述

小结

在这里插入图片描述

3-8 译码器

在这里插入图片描述

​ 下图右边的译码器,有 EN 使能端 和 小圆圈(非门)

​ 使能端,让译码器工作;

在这里插入图片描述

​ 注意下图多个 使能,只有输入 100 时,译码器才有效;

在这里插入图片描述

​ CPU可使用译码器的 使能端 控制 片选信号 的生效时间;

在这里插入图片描述

​ CPU先送出地址信号,说我要取数据了;

​ 但是 MRER 会等到 地址信号稳定后再发出存储器请求信号

在这里插入图片描述


3.3.2 双端口RAM和多模块存储器

在这里插入图片描述

在这里插入图片描述

1. 双端口RAM

​ 双端口RAM可以优化 多核CPU 访问一根内存的速度;

在这里插入图片描述

2. 多模块存储器

(1) 多体并行存储器

​ 采用高位交叉编制时,用高位的地址来区分使用哪个存储单元;低位交叉编制同理;

在这里插入图片描述

​ 高位编制,访问 ==00 000 ~ 00 100,==读了5个存储字,耗时5T

在这里插入图片描述

​ 对于低位交叉编制,耗时:T + (n-1) × r

​ 为什么低位交叉编制可以不用等待恢复时间呢 ?

​ 因为低位交叉编制,是 一个个存储芯片交替使用,高位交叉是一直占用一个存储芯片,直到满了再去下一个存储芯片;

​ 为什么要探讨 连续访问 的情况 ?

​ 因为很多数据、数据结构在内存中就是被连续存储;

在这里插入图片描述

m ≥ T / r

​ 一般来说,存取时间总线传输周期 是同一个概念

在这里插入图片描述

(2) 单体多字存储器

在这里插入图片描述

小结

在这里插入图片描述

在这里插入图片描述

3.4 外部存储器

​ 注意和==《操作系统》第5章 输入输出管理 5.3 磁盘和固态硬盘== 联系起来学习;

在这里插入图片描述

3.4.1 磁盘存储器

1. 磁盘原理

在这里插入图片描述

(1) 磁盘设备的组成

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

(2) 磁盘的性能指标

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

(3) 磁盘地址

在这里插入图片描述

在这里插入图片描述

2. 磁盘阵列

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

小结

在这里插入图片描述


3.4.2 固态硬盘

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3.5 高速缓冲存储器 ⭐

3.5.1 Cache的基本概念和原理

在这里插入图片描述

1. Cache的工作原理

【问题】Cache的作用 ?

​ 答:弥补CPU与内存之间的速度差异;

【问题】Cache的工作原理 ?

​ 答:程序访问的局部性;

在这里插入图片描述

在这里插入图片描述

​ Cache由SRAM构成,具体特性可复习 3.2.2 SRAM和DRAM

​ 目前已经被集成到CPU内部,下图中Cache在CPU外部只是为了更好地展示效果;

在这里插入图片描述

2. 局部性原理

在这里插入图片描述

3. 性能分析

在这里插入图片描述

在这里插入图片描述

4. 主存和缓存的编址

​ 主存与Cache之间以 为单位进行数据交换;

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

小结

在这里插入图片描述


3.5.2 Cache和主存的映射方式

在这里插入图片描述

【问题】什么是地址映射 ?

​ 答:从主存调入指定块到Cache里,该放到Cache的哪一块里;

【问题】Cache如何标记已经存放的主存块 ?

​ 答:使用 ==有效位 + 标记位,==标记位记录存放的是哪一块主存块,有效位记录标记位是否有效;

在这里插入图片描述

1. 全相联映射

​ 全相联映射,任意找空闲块存放;

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

​ 使用 全相联映射 的访存过程

在这里插入图片描述

2. 直接映射

​ 直接映射,固定的映射关系;

在这里插入图片描述

​ 缺点:空闲区不能用,必须一一对应;

在这里插入图片描述

​ 对 标记 进行优化

在这里插入图片描述

在这里插入图片描述

​ 使用 直接映射 的访存过程

在这里插入图片描述

3. 组相联映射

​ 组相联映射:组间直接映射 + 组内全相联映射

在这里插入图片描述

在这里插入图片描述

组相联映射 的地址结构

在这里插入图片描述

在这里插入图片描述

​ 使用 组相联映射 的访存过程

在这里插入图片描述

小结

​ Cache 的总容量包括:存储容量、标记阵列容量(有效位、标记位)

(标记阵列中的一致性维护位 和 Cache 数据一致性维护方式相关,替换算法控制位和替换算法相关)

在这里插入图片描述

在这里插入图片描述


3.5.3 Cache替换算法

在这里插入图片描述

​ 直接映射方式无需考虑替换算法

在这里插入图片描述

在这里插入图片描述

1. 随机算法 (RAND)

在这里插入图片描述

2. 先进先出算法 (FIFO)

​ FIFO没考虑 ==局部性原理,==可能会发生 抖动现象

在这里插入图片描述

3. 近期最少使用 (LRU)

在这里插入图片描述

在这里插入图片描述

​ LRU算法的Cache命中率高;但如果 ==频繁访问的主存块数量 > Cach行的数量,==则有可能发生 抖动

在这里插入图片描述

4. 最近不经常使用 (LFU)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

​ LRU的缺点:过去经常访问的主存块在未来不一定会用到;

在这里插入图片描述

小结

​ 近期最少使用 与 最不经常使用 很容易混淆,区别小技巧:

​ LRU 淘汰一段时间内最久没有被访问的,可以理解为 淘汰老人(很久没被访问了)

​ LFU 淘汰访问次数最小的,可以理解为 淘汰废物(不怎么被访问)

在这里插入图片描述


3.5.4 Cache写策略

在这里插入图片描述

​ 因为读操作不会导致Cache与主存的数据不一致,所以只需考虑写操作;

​ 当CPU对Cache写操作时,如果Cache里有目标块,就是 写命中 ,没有目标块就是 写不命中

在这里插入图片描述

1. 写命中

① 写回法

​ 写回法:Cache块换出时,对块的 修改位 (脏位) 进行判断,再决定时写回还是舍弃;

在这里插入图片描述

② 全写法

​ 全写法(写直达):命中时,Cache与内存一块写;

在这里插入图片描述

​ 当CPU不对Cache写操作的时候,写缓冲 就可以在专门的控制电路下去写回主存,保持Cache与主存数据一致;

在这里插入图片描述

2. 写不命中

① 写分配法

在这里插入图片描述

② 非写分配法

​ 直接对主存写数据,不会调入Cache

在这里插入图片描述

3. 多级Cache

在这里插入图片描述

在这里插入图片描述

小结

在这里插入图片描述

章节小结

​ Cache的总容量:用户Cache容量 + CAM+ 计数器 + 修改位

  • 用户Cache容量:狭义上, 指 2c = C - 1 块Cache块;
  • CAM (相联存储表) :Cache的一部分,完成由主存地址到Cache地址的转换;
  • 计数器: 替换算法计数;
  • 修改位:写策略标记;

3.6 虚拟存储器 ⭐

​ 注意和==《操作系统》第3章 内存管理 3.2 虚拟内存管理== 联系起来学习;

3.6.1 页式存储器

1. 页式存储的思想

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

小结

在这里插入图片描述


3.6.2 虚拟存储器

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3.7 常见问题和易混淆知识点

1. 存取时间 Ta 就是存储周期 Tm 吗 ?

​ 不是;

存取时间 Ta 是执行一次读操作或写操作的时间,分为 读出时间 和 写入时间

​ 读出时间是从主存接收到有效地址开始到数据稳定为止的时间;

​ 写入时间是从主存接收到有效地址开始到数据写入被写单元为止的时间;

​ 存储周期 Tm 是指存储器进行连续两次独立地读或写操作所需的最小时间间隔;

​ 所以存取时间 Ta 不等于 存储周期 Tm 。通常存储周期T大于存取时间T;

2. Cache行的大小和命中率之间有什么关系 ?

​ 行的长度较大,可以充分利用程序访问的空间局部性,使一个较大的局部空间被一起调到Cache 中,因而可以增加命中机会;

​ 但是,行长也不能太大,主要原因有两个:

  • ① 行长大使失效损失变大。也就是说,若未命中,则需花更多时间从主存读块;
  • ② 行长太大,Cache项数变少,因而命中的可能性变小;

3. 发生取指令Cache缺失的处理过程是什么 ?

  • ① 程序计数器恢复当前指令的值;
  • ② 对主存进行读的操作;
  • ③ 将读入的指令写入Cache 中,更改有效位和标记位;
  • ④ 重新执行当前指令;

1)存储器的 层次结构 主要体现在何处 ?为何要分这些层次 ?计算机如何管理这些层次 ?

​ 存储器的层次结构主要体现在 Cache - 主存主存 - 辅存 这两个存储层次上;

Cache - 主存层次 在存储系统中主要对 CPU访存起加速作用

​ 即从整体运行的效果分析,CPU访存速度加快,接近于Cache的速度,而寻址空间和位价却接近于主存;

主存 - 辅存层次 在存储系统中主要起 扩容作用

​ 即从程序员的角度看,他所使用的存储器的容量和位价接近于辅存,而速度接近于主存;

​ 综合上述两个存储层次的作用,从整个存储系统来看,就达到了 速度快、容量大、位价低 的优化效果;

​ 主存与Cache 之间的信息调度功能全部由 硬件自动完成

​ 而主存与辅存层次的调度目前广泛采用 虚拟存储技术 实现,即将主存与辅存的一部分通过 软/硬结合 的技术组成虚拟存储器;

​ 程序员可用这个比主存实际空间(物理地址空间)大得多的虚拟地址空间(逻辑地址空间)编程,当程序运行时,再由软/硬件自动配合完成虚拟地址空间与主存实际物理空间的转换;

​ 因此,这两个层次上的调度或转换操作对于程序员来说都是 透明 的;

2)存储周期和存取时间 有何区别 ?

​ 存取周期和存取时间的主要区别是:存取时间 仅为完成一次操作的时间

​ 而存取周期不仅包含操作时间,而且包含操作后线路的恢复时间,即 存取周期 = 存取时间+恢复时间

3)在虚拟存储器中,页面是设置得大一些好还是小一些好 ?

​ 页面不能设置得过大,也不能设置得过小;

​ 因为页面太小时,平均页内剩余空间较少,可节省存储空间,但会使得页表增大,而且页面太小时不能充分利用访存的空间局部性来提高命中率;

​ 页面太大时,可减少页表空间,但平均页内剩余空间较大,会浪费较多存储空间,页面太大还会使页面调入/调出的时间较长;

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

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

相关文章

云时代数据科学平台--Sengee

随着数字经济的步步落地,我们将迎来“数据风暴”的冲击,传统的数据处理方式已经显得跟不上脚步,传统的开发方式已经不足矣应对“数据风暴”带来的需求革命,因此,需要考虑开放、多元、可变、集成、易用等数据处理的属性…

【C 语言 笔记】解决控制台闪烁/鬼畜/光标乱跑问题

问题 如果你要在控制台里“画”一些频繁更新的东西,比如做个小游戏,常见的思路是: while(1) {//先清空system("clear");//再画printf("....."); }然后控制台的就闪个不停,很瞎眼。 解决 0 降低刷新频率&a…

分布式相关知识(分布式锁,事务实现方案,CAP)

一 CAP理论 1.1 CAP理论 CAP原则又称CAP定理,指的是在一个分布式系统中,Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性)这3个基本需求&#xff0…

【3维视觉】网格细分Mesh Subdivision算法介绍(Loop, Catmull-Clark, Doo-Sabin)

引言 介绍了Loop, Catmull-Clark, Doo-Sabin细分。 算法介绍 1. Loop细分 Loop细分是Charles Loop在1987年在硕士论文中提出的一种对三角网格的细分算法。 Loop细分是递归定义的,每一个三角形一分为四,对于新生成的点和旧点以不同的规则更新。 点的…

医院信息管理云平台源码 云HIS系统源码 4级电子病历系统

基层医院云HIS系统源码 高端商业his源码 有演示,可直接项目运营。 一款满足基层医院各类业务需要的云HIS系统。该系统能帮助基层医院完成日常各类业务,提供病患挂号支持、病患问诊、电子病历、开药发药、会员管理、统计查询、医生站和护士站等一系列常规…

leetcode 55. 跳跃游戏

给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标。 示例 1: 输入:nums [2,3,1,1,4] 输出:true 解释:可以先跳 1 …

刷题记录(2023.3.6 - 2023.3.11)

我很喜欢这周的感觉,前两道题对着 wp 简略复现了一下,由于以前都是自己学习,对一些稍微多、稍微难的题都会马上避开,笨小孩逃避太久了,有些事逃不掉,总得面对,开始往往很难,多花点时…

大数据下的协调者Zookeeper详解

Zookeeper框架 为什么要学习Zookeeper框架 1、Zookeeper是作为大数据生态圈框架中非常重要的一员 2、Zookeeper单独使用没有意义,主要是用来管理其他框架,被称为动物管理员 3、后期Hadoop的高可用框架、Kafka都需要依赖ZookeeperZookeeper的概述 1、Z…

C++回顾(二十四)—— set / multiset容器

24.1 set概述 set是一个集合容器,其中所包含的元素是唯一的,集合中的元素按一定的顺序排列。元素插入过程是按排序规则插入,所以不能指定插入位置。set采用红黑树变体的数据结构实现,红黑树属于平衡二叉树。在插入操作和删除操作…

Spring——AOP核心概念和AOP入门案例

AOP:面向切面编程,一种编程范式,指导开发者如何组织程序结构 作用:在不惊动原始设计的基础上进行功能增强 Spring理念:无侵入式编程 比如测试一个方法的万次执行时间,原本没有Aop需要这样写 public void save() {Long stSystem.currentTim…

Java开发 - 消息队列之Kafka初体验

目录 前言 Kafka 什么是Kafka Kafka软件结构 Kafka的特点 怎么启动Kafka 下载Kafka 配置Kafka Zookeeper 启动Kafka Kafka案例 添加依赖 添加配置 配置启动类 创建生产者 创建消费者 测试 结语 前言 前几日总结了消息队列的一些知识,相信看完的同…

【博客631】监控网卡与进程网络IO使用情况

监控进程的网络IO使用情况 1、vnstat 由于 vnstat 依赖于内核提供的信息,因此执行以下命令来验证内核是否提供了 vnStat 所期望的所有信息: # vnstat --testkernel This test will take about 60 seconds. Everything is ok.不带任何参数的 vnstat 将…

设计模式(十九)----行为型模式之命令模式

1、概述 日常生活中,我们出去吃饭都会遇到下面的场景。 定义: 将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通,这样方便将命令对象进行存储、传递、调用、增加与管理。命…

UE官方教程笔记03-功能、术语、操作简介

对官方教程视频[官方培训]03-UE功能、术语、操作简介 | 徐良安 Epic的笔记这一部分基本都是走马观花的简单介绍功能世界创建建模Mesh editingtool是一个全新的建模工具,具备大多数的主流建模软件的核心功能HOUDINI ENGINE FOR UNREALHoudini编辑器,可以用…

springboot2集成knife4j

springboot2集成knife4j springboot2集成knife4j 环境说明集成knife4j 第一步:引入依赖第二步:编写配置类第三步:测试一下 第一小步:编写controller第二小步:启动项目,访问api文档 相关资料 环境说明 …

C++回顾(二十一)—— list容器

21.1 list概述 list是一个双向链表容器&#xff0c;可高效地进行插入删除元素。list不可以随机存取元素&#xff0c;所以不支持at.(pos)函数与[]操作符。It(ok) it5(err)需要添加头文件&#xff1a;#include <list> 21.2 list构造 &#xff08;1&#xff09;默认构造…

摘花生(简单DP)

Hello Kitty想摘点花生送给她喜欢的米老鼠。她来到一片有网格状道路的矩形花生地(如下图)&#xff0c;从西北角进去&#xff0c;东南角出来。地里每个道路的交叉点上都有种着一株花生苗&#xff0c;上面有若干颗花生&#xff0c;经过一株花生苗就能摘走该它上面所有的花生。Hel…

手写代码理解vue响应式原理

vue2响应式应用了Object.defineProperty&#xff0c;vue3中的响应式则是运用proxy。 目录标题1、defineProperty2、代码理解defineProperty3、手写vue2响应式原理4、vue2监听数组响应式5、Proxy理解6、总结1、defineProperty Object.defineProperty(obj, prop, descriptor) ob…

【8.索引篇】

索引分类 索引和数据就是位于存储引擎中&#xff1a; 按「数据结构」分类&#xff1a;Btree索引、Hash索引、Full-text索引。按「物理存储」分类&#xff1a;聚簇索引&#xff08;主键索引&#xff09;、二级索引&#xff08;辅助索引&#xff09;。按「字段特性」分类&#…

linux字符设备和块设备的区别 以及网络设备

一、字符设备 1、字符设备以字节为单位。大多数设备是字符设备&#xff0c;因为他们不需要缓冲而且不以固定块大小进行操作。 2、字符设备无需缓冲直接读写。 3、字符设备只能被顺序读写。 二、块设备 1、块设备只能以块为单位接受输入和输出。 2、块设备对I/0请求有对应的缓冲…