王道计算机组成原理课代表 - 考研计算机 第三章 存储系统 究极精华总结笔记
本篇博客是考研期间学习王道课程 传送门 的笔记,以及一整年里对
计算机组成
知识点的理解的总结。希望对新一届的计算机考研人提供帮助!!!
关于对存储系统
章节知识点总结的十分全面,涵括了《计算机组成原理》课程里的全部要点(本人来来回回过了三遍视频),其中还陆陆续续补充了许多内容,所以读者可以相信本篇博客对于考研计算机组成原理 “存储系统” 章节知识点的正确性与全面性;但如果还有自主命题的学校,还需额外读者自行再观看对应学校的自主命题材料。
计算机组成原理
笔记导航🚥🚥🚥
- 🥬 第一章 计算机系统概述
(未完成)
- 🥕 第二章 数据的表示和运算
(未完成)
- 🥪 第三章 存储系统
⇦当前位置🪂
- 🍊 第四章 指令系统
- 🍒 第五章 中央处理器
- 🍀 第六章 总线
- 🍚 第七章 输入输出系统
- 🎨
计算机组成原理 复试精简笔记 (未完成)
如果本篇文章对大家起到帮助的话,跪求各位帅哥美女们,
求赞👍 、求收藏、求关注!
你必考上研究生!
我说的,耶稣来了也拦不住!😀😀😀
食用说明书:
第一遍学习王道课程时,我的笔记只有标题和截图,后来复习发现看只看图片,并不能很快的了解截图中要重点表达的知识点。
在第二遍复习中,我给每一张截图中 标记了重点,以及 每张图片上方总结了该图片 对应的知识点 以及自己的 思考 。
最后第三遍,查漏补缺。
所以 ,我把目录放在博客的前面,就是希望读者可以结合目录结构去更好的学习知识点,之后冲刺复习阶段脑海里可以浮现出该知识结构,做到对每一个知识点熟稔于心!
请读者放心!目录展示的知识点结构是十分合理的,可以放心使用该结构去记忆学习!
注意(⊙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)在虚拟存储器中,页面是设置得大一些好还是小一些好 ?
页面不能设置得过大,也不能设置得过小;
因为页面太小时,平均页内剩余空间较少,可节省存储空间,但会使得页表增大,而且页面太小时不能充分利用访存的空间局部性来提高命中率;
页面太大时,可减少页表空间,但平均页内剩余空间较大,会浪费较多存储空间,页面太大还会使页面调入/调出的时间较长;
相关文章:

王道计算机组成原理课代表 - 考研计算机 第三章 存储系统 究极精华总结笔记
本篇博客是考研期间学习王道课程 传送门 的笔记,以及一整年里对 计算机组成 知识点的理解的总结。希望对新一届的计算机考研人提供帮助!!! 关于对 存储系统 章节知识点总结的十分全面,涵括了《计算机组成原理》课程里…...

Flask-mock接口数据流程
背景:由于在开发过程中,会遇到以下的痛点 1.服务端接口提测延期,具体接口逻辑未完成实现,接口未能正常调通,导致客户端提测停滞; 2.因为前期已在技术评审上已与客户端开发定好接口字段,客户端比…...

springboot项目配置序列化,反序列化器
介绍本文介绍在项目中时间类型、枚举类型的序列化和反序列化自定义的处理类,也可以使用注解。建议枚举都实现一个统一的接口,方便处理。我这定义了一个Dict接口。枚举类型注解处理这种方式比较灵活,可以让枚举按照自己的方式序列化࿰…...

c++11 标准模板(STL)(std::unordered_map)(九)
定义于头文件 <unordered_map> template< class Key, class T, class Hash std::hash<Key>, class KeyEqual std::equal_to<Key>, class Allocator std::allocator< std::pair<const Key, T> > > class unordered…...

Seay代码审计工具
一、简介Seay是基于C#语言开发的一款针对PHP代码安全性审计的系统,主要运行于Windows系统上。这款软件能够发现SQL注入、代码执行、命令执行、文件包含、文件上传、绕过转义防护、拒绝服务、XSS跨站、信息泄露、任意URL跳转等漏洞,基本上覆盖常见PHP漏洞…...

界面开发(4)--- PyQt5实现打开图像及视频播放功能
PyQt5创建打开图像及播放视频页面 上篇文章主要介绍了如何实现登录界面的账号密码注册及登录功能,还简单介绍了有关数据库的连接方法。这篇文章我们介绍一下如何在设计的页面中打开本地的图像,以及实现视频播放功能。 实现打开图像功能 为了便于记录实…...

核心系统国产平台迁移验证
核心系统国产平台迁移验证 摘要:信息技术应用创新,旨在实现信息技术领域的自主可控,保障国家信息安全。金融领域又是关系国家经济命脉的行业,而对核心交易系统的信息技术应用创新是交易所未来将要面临的重大挑战。为了推进国产化进…...

【数据结构之二叉树】——二叉树的概念及结构,特殊的二叉树和二叉树性质
文章目录一、二叉树的概念及结构1.概念2.现实中的二叉树3. 特殊的二叉树:3.二叉树的性质二、二叉树练习题总结一、二叉树的概念及结构 1.概念 一棵二叉树是结点的一个有限集合,该集合: 或者为空由一个根节点加上两棵别称为左子树和右子树的二叉树组成…...

Android学习之帧动画和视图动画
帧动画 帧动画中的每一帧其实都是一张图片,将许多图片连起来播放,就形成了帧动画。 在drawable目录下新建frmae_animation文件,在这个文件中定义了帧动画的每一帧要显示的图片,播放时,按从上到下显示。 <?xml v…...

vue2和vue3的区别
这周呢主要就是整理整理学的东西,不然看的也记不住,把这些学的东西做成笔记,感觉会清楚许多,这次就把vue2和vue3的区别总结一下,明天要考四级,嗐,本来想着复习四级,结果只写了一两套…...

【你不知道的事】JavaScript 中用一种更先进的方式进行深拷贝:structuredClone
你是否知道,JavaScript中有一种原生的方法来做对象的深拷贝? 本文我们要介绍的是 structuredClone 函数,它是内置在 JavaScript 运行时中的: const calendarEvent {title: "Builder.io Conf",date: new Date(123),attendees: ["Steve…...

XE开发Linux应用(二)-Webservice
新建一个工程。选择如图。继续输入服务名然后就生成对应的单元。增加linux 平台。完善对应的单元代码{ Invokable implementation File for Txaliontest which implements Ixaliontest }unit xaliontestImpl;interfaceuses Soap.InvokeRegistry, System.Types, Soap.XSBuiltIns…...

kubernetes实战与源码学习
1.1 关于Kubernetes的介绍与核心对象概念 关于Kubernetes的介绍与核心对象概念-阿里云开发者社区 k8s架构 核心对象 使用kubeadm10分钟部署k8集群 使用 KuboardSpray 安装kubernetes_v1.23.1 | Kuboard k8s-上部署第一个应用程序 Deployment基本概念 给应用添加service&a…...

CNCF x Alibaba云原生技术公开课 第八章 应用配置管理
Pod配置管理分类 可变配置就用 ConfigMap;敏感信息是用 Secret;身份认证是用 ServiceAccount;资源配置是用 Resources;安全管控是用 SecurityContext;前置校验是用 InitContainers。 1、ConfigMap 概念:…...

YUV实践记录
文章目录YUV基础介绍:不同采样YUV格式的区别为什么要使用YUV格式呢?YUV的存储方式Android中的YUV_420_888附录:YUV基础介绍: YUV在做手机图像或者视频处理的时候会经常用到的一个格式,用此文来记录YUV相关介绍…...

【题解】百度2020校招Web前端工程师笔试卷(第一批):单选题、多选题
题目来源 若有错误请指正! 单选 1 分页存储管理将进程的逻辑地址空间分成若干个页,并为各页加以编号,从0开始,若某一计算机主存按字节编址,逻辑地址和物理地址都是32位,页表项大小为4字节,若…...

探索云原生技术之容器编排引擎-kubeadm安装kubernetes1.21.10(新版:针对高版本内核)
❤️作者简介:2022新星计划第三季云原生与云计算赛道Top5🏅、华为云享专家🏅、云原生领域潜力新星🏅 💛博客首页:C站个人主页🌞 💗作者目的:如有错误请指正,将…...

2023广西自治区职业技能大赛“网络安全” 项目比赛任务书
2023广西自治区职业技能大赛“网络安全” 项目比赛任务书2023广西自治区职业技能大赛“网络安全” 项目比赛任务书A模块基础设施设置/安全加固(200分)A-1:登录安全加固(Windows, Linux)A-2:Nginx安全策略&a…...

Reactor模式
Reactor是一种设计模式,可以用于构建高并发的网络服务器。 Reactor模式的好处在于:可以在一个或多个reactor线程使用多路复用技术去管理所有网络连接连接建立、IO请求,保证工作线程不被IO阻塞。 前置知识:IO多路复用技术 1. 传统网…...

Git图解-IDEA中的Git操作
目录 一、配置Idea 二、项目克隆 三、文件状态识别 四、Git操作 4.1 git add--添加暂存区 4.2 git commit--提交本地仓库 4.3 git push--推送远程仓库 4.4 git pull--更新本地仓库 五、完整开发流程 5.1 步骤1:克隆项目 5.2 步骤2:创建自己开发…...

在一个web应用中应该如何完成资源的跳转
在一个web应用中通过两种方式,可以完成资源的跳转: 第一种方式:请求转发 第二种方式:重定向 转发和重定向的区别: 代码上的区别: 请求转发 // 获取请求转发器对象 RequestDispatcher dispatcher request.…...

前缀和部分题目
前缀和 前缀和指数组的前 N项之和,是个比较基础的算法 例题 面试题 17.05. 字母与数字 给定一个放有字母和数字的数组,找到最长的子数组,且包含的字母和数字的个数相同。 返回该子数组,若存在多个最长子数组,返回左…...

三天吃透MySQL面试八股文
本文已经收录到Github仓库,该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点,欢迎star~ Github地址:https://github.com/…...

Giving You A guide to learning any topic faster than 95% of people
A guide to learning any topic faster than 95% of people: Richard Feynman was a physician who won the Nobel Prize in 1965. But he became known for his great lectures. Why? He was able to explain complex concepts in simple terms with these 4 steps: 1 • E…...

(七十七)大白话MySQL是如何根据成本优化选择执行计划的?(中)
上次我们讲完了全表扫描的成本计算方法,相信大家应该都理解了,其实还是比较简单的,今天我们来讲一下索引的成本计算方法,因为除了全表扫描之外,还可能多个索引都可以使用,但是当然同时一般只能用一个索引&a…...

原来CSS 也可以节流啊
Ⅰ、前言 「节流」 是为了减少请求的触发频率,不让用户点的太快,达到节省资源的目的 ;通常 我们采用 JS 的 定时器 setTimeout ,来控制点击多少秒才能在触发;其实 通过 CSS 也能达到 「节流」 的目的,下面…...

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

BN,LN,IN,GN的理解和用法
绿色区域表示将该区域作用域(四种方法都贯穿了w,h维度),即将该区域数值进行归一化,变为均值为0,标准差为1。BN的作用区域时N,W,H,表示一个batch数据的每一个通道均值为0,标准差为1;LN则是让每个数据的所有channel的均值…...

Linux:epoll模式web服务器代码,代码debug
源码: https://blog.csdn.net/weixin_44718794/article/details/107206136 修改的地方: 修改后代码: #include <stdio.h> #include <unistd.h> #include <stdlib.h> //#include “epoll_server.h” #ifndef _EPOLL_SER…...

SpringSecurity学习(四)密码加密、RememberMe记住我
文章目录密码加密一、简介密码为什么要加密常见的加密解决方案PasswordEncoder详解DelegatingPasswordEncoder二、自定义加密方式1. 使用灵活的密码加密方案(BCryptPasswordEncoder)加密验证(推荐)需要在密码前指定加密类型{bcryp…...