LOADING

加载过慢请开启缓存 浏览器默认开启

图解系统

冯诺依曼模型

计算机基本的五个结构:运算器,控制器,存储器,输入设备,输出设备。
内存:程序和数据的存储位置,存储的基本单位是字节

中央处理器(CPU):负责程序的运行和控制,是计算机的核心部件,由运算器和控制器组成,运算器负责算术运算和逻辑运算,控制器负责控制程序的执行。控制单元复杂控制 CPU 工作,逻辑运算单元负责计算,寄存器根据种类的不同所对应的功能也不尽相同。

通用寄存器:用来存放需要进行运算的数据
程序计数器:用来存放下一条指令的地址。注意所存放的不是下一条指令,此时指令还在内存中,而是下一条指令的地址。
指令寄存器:用来存放当前正在执行的指令

总线:用于 CPU 和其他部件之间的信息传递,分为数据总线,地址总线,控制总线。使用顺序一般是首先要通过「地址总线」来指定内存的地址,然后通过「控制总线」控制是读或写命令,最后通过「数据总线」来传输数据;

数据总线:用于读写内存的数据
地址总线:用于指定 CPU 将要操作的内存地址
控制总线:用于发送和接受信号,比如中断,设备复位等信号,CPU 收到信号后自然进行相应,这时也需要控制总线。

输入设备:负责将外部信息转换成计算机可识别的信息
输出设备:负责将计算机处理的信息转换成人们可识别的信息

CPU Cache 的数据结构和读取过程是什么样的?

CPU Cache 是由多个 Cache Line 组成的,Cache Line 是 CPU 从内存读取数据的基本单位,而 Cache Line 是由各种标志(Tag)+数据块(Data Block)组成的,Tag 用于标识该 Cache Line 所对应的内存地址,Data Block 则是真正存放数据的地方。当 CPU 需要从内存中读取数据时,首先会根据地址找到对应的 Cache Line,然后再根据 Tag 判断该 Cache Line 中是否存放了需要的数据,如果存放了,就直接从 Data Block 中读取数据,如果没有存放,就需要从内存中读取数据,然后将数据存放到 Data Block 中,同时更新 Tag。

CPU 访问内存数据是一小块一小块数据读取的,这个块的大小取决于 coherency_line_size 的值大小,一般是 64 字节,在内存中这一块数据被称为内存块,读取的时候我们要拿到数据所在的内存块地址。对于直接映射 Cache 采用的策略,就是把内存块的地址始终「映射」在一个 CPU Cache Line(缓存块)的地址,至于映射关系实现方式,则是使用「取模运算」,取模运算的结果就是内存块地址对应的 CPU Cache Line(缓存块)的地址。

由于同一个 Cache Line 中会有多个内存块,所以为了区别不同的内存块,还会存储一个组标记(Index),组标记的作用就是用来标识当前 Cache Line 中的内存块是哪个组的,这样就可以通过组标记来判断当前 Cache Line 中的内存块是否是我们需要的内存块,如果是,就直接从 Cache Line 中读取数据,如果不是,就需要从内存中读取数据,然后将数据存放到 Cache Line 中,同时更新组标记。

内存地址的构成:组标记+CPU Cache Line 索引+内存块内偏移量

CPU Cache 的数据写入

如何将数据写入到内存中呢?这就需要用到写策略了,写策略有两种,一种是写回策略,一种是写直达策略。

写直达方式:保持内存与 cache 一致性最简单的方式是把数据同时写入内存和 Cache 中,这种方法就是写直达。

写回方式:写回方式则是只将数据写入到 Cache 中,当 Cache 中的数据被替换时,再将数据写入到内存中。当发生写操作时,新的数据仅仅被写入 Cache Block 里,只有当修改过的 Cache Block「被替换」时才需要写到内存中,减少了数据写回内存的频率,这样便可以提高系统的性能

yarn 常用命令
yarn init 初始化项目
yarn add 添加依赖
yarn remove 删除依赖
yarn upgrade 升级依赖
yarn install 安装依赖
yarn run 运行脚本
yarn cache clean 清除缓存
yarn config get 获取配置
yarn config set 设置配置
yarn config delete 删除配置
yarn config list 列出配置
安装包:
yarn install //安装 package.json 里所有包,并将包及它的所有依赖项保存进 yarn.lock
yarn install –flat //安装一个包的单一版本
yarn install –force //强制重新下载所有包
yarn install –production //只安装 dependencies 里的包
yarn install –no-lockfile //不读取或生成 yarn.lock
yarn install –pure-lockfile //不生成 yarn.lock

yarn add –exact/-E // 安装包的精确版本。例如 yarn add foo@1.2.3会接受 1.9.1 版,但是 yarn add foo@1.2.3 –exact 只会接受 1.2.3 版
yarn add –tilde/-T // 安装包的次要版本里的最新版。例如 yarn add foo@1.2.3 –tilde 会接受 1.2.9,但不接受 1.3.0

发布包:
yarn pulish

移除一个包:
yarn remove #移除一个包,会自动更新 package.json 和 yarn.lock

更新一个依赖
yarn upgrade 用于更新包到基于规范范围的最新版本
运行脚本
yarn run #用来执行在 package.json 中 scripts 属性下定义的脚本
显示某个包的信息
yarn info #可以用来查看某个模块的最新版本信息

缓存:
yarn cache
yarn cache list #列出已缓存的每个包

前端:Vue3+yarn+webpack+axios+vue-router+vuex+echarts+less+ES6+ESLint+Prettier+git+vscode

后端:golang+gin+gorm+mysql+redis+docker+swagger+goland+postman+goland+vscode

本文作者:GWB
当前时间:2023-11-09 11:11:11
版权声明:本文由gwb原创,本博客所有文章除特别声明外,均采用 CC BY-NC-ND 4.0 国际许可协议。
转载请注明出处!