计算机组成原理笔记(王道考研) 第一章:计算机系统概述

news/2024/5/6 16:10:14/文章来源:https://blog.csdn.net/zimuzi2019/article/details/126959883

内容基于中国大学MOOC的2023考研计算机组成原理课程所做的笔记。

感谢LY,他帮我做了一部分笔记。由于听的时间不一样,第四章前的内容看起来可能稍显啰嗦,后面会记得简略一些。

 

西电的计算机组织与体系结构课讲法和王道考研的课不太一样,要应付校内考试建议还是跟着老师学比较好。以下是20年西电计科院车向泉老师这门课的录播下载链接(请勿将录像上传到B站等网站!!):

链接:https://pan.baidu.com/s/1bFs3ajhy8ZcbHopS9izGsw

提取码:fdez

期中考试占20分,一般只考前两章内容,期末考试占60分,一般前两章内容不考,考察内容一般考前的复习课都会讲清楚,请务必认真听复习课。

 

其他各章节的链接如下:

计算机组成原理笔记(王道考研) 第一章:计算机系统概述

计算机组成原理笔记(王道考研) 第二章:数据的表示和运算1

计算机组成原理笔记(王道考研) 第二章:数据的表示和运算2

计算机组成原理笔记(王道考研) 第三章:存储系统

计算机组成原理笔记(王道考研) 第四章:指令系统

计算机组成原理笔记(王道考研) 第五章:中央处理器

计算机组成原理笔记(王道考研) 第六章:总线

计算机组成原理笔记(王道考研) 第七章:输入输出系统

其他各科笔记汇总

计算机系统概述

导言

计算机组成原理研究计算机硬件在底层是如何相互协调工作的。

以玩游戏为例。CPU性能如何决定了玩游戏的时候图像处理的速度。运行内存越大,同时开多个应用程序会更流畅。机身存储决定了可以存多少资料。

以一款笔记本标出的硬件参数为例:I7-9750H(CPU型号,处理能力如何),8G(内存大小),512G固态(硬盘存储容量,读写速度如何),GeForce GTX1660Ti 6G独显(显卡)

计算机唯一能识别的数据是二进制0/1。用低/高电平分别表示0/1,通过电信号来传递数据。通过很多条电路(如主板上的印刷电路),可以传递多个二进制数位。每个二进制数位称为1 bitbitbit(比特)。

此处的低/高电平理解成低/高电压即可

计算机系统的发展

image-20210124155845111

什么是计算机系统

计算机系统=硬件+软件

  • 硬件:计算机的实体,如主机,外设等。外设就是鼠标,键盘,显示器这些设备。

  • 软件:由具有各类特殊功能的程序组成

 

软件又可以分为系统软件和应用软件

  • 系统软件:用来管理整个计算机系统

Eg:操作系统,数据库管理系统(DBMS),标准程序库,网络软件,语言处理程序,服务程序

名词的简单解释:

  • 标准程序库就是编程的时候使用的那些库函数
  • 网络软件是实现TCP-IP协议的那些软件模块
  • 语言处理软件是那些编译程序,汇编程序。把编程使用的高级语言翻译为更低级的机器语言
  • 服务类程序有很多。我们调试代码用的程序就是服务程序的一种
  • 应用软件:按任务需要编制成的各种程序

Eg:抖音,王者荣耀,迅雷,美图秀秀…

硬件的发展

发展阶段逻辑元件备注
第一代:电子管时代电子管体积超大,耗电量超大。使用机器语言编程
第二代:晶体管时代晶体管体积,功耗降低。出现面向过程的程序设计语言:FORTRAN。有了操作系统雏形
第三代:中小规模集成电路时代中小规模集成电路将元件集成在基片上。计算机主要用于科学计算等专业用途。高级语言迅速发展。开始有了分时操作系统
第四代:大规模,超大规模集成电路时代大规模,超大规模集成电路时代开始出现“微处理器”(CPU就是微处理器的一部分),微型计算机。个人计算机(PC)萌芽。操作系统:Windows,MacOsMacOsMacOs,Linux

微处理器的发展以微处理器技术为标志。微处理器不断发展,对应的机器字长不断增加。

机器字长:计算机一次整数运算所能处理的二进制位数

摩尔定律:集成电路上可容纳的晶体管数目,约每隔18个月便会增加一倍,整体性能也将提升一倍

软件的发展

机器语言/汇编语言→\toFORTRAN/PASCAL/C++/Java…

使用高级语言编程的时候就不需要关心机器的具体特性如何,只需要专注于所需要解决的问题

DOS(只能用命令行的方式操作计算机)→\toWindows,Android/iosiosios(拥有图形化的界面)

目前的发展趋势

目前计算机的发展趋势呈现两极分化:

一级是微型计算机向更微型化,网络化,高性能,多用途方向发展。

另一极是巨型机向更巨型化,超高速,并行处理,智能化方向发展。

计算机硬件的基本组成

image-20210124155755246

早期冯诺依曼机的结构

冯诺依曼提出了“存储程序”的概念。指将指令以二进制代码的形式事先输入计算机的主存储器(内存),然后按其在存储器中的首地址执行程序的第一条指令,以后就按该程序的规定顺序执行其他指令,直至程序执行结束

程序是指令和数据的集合

注意说的是主存储器不是存储器!存储器包括主存(内存)和辅存(固态硬盘),前者属于主机,后者则属于I/O设备。像我们平时手机里的APP就是存放在辅存里面的,只有需要启动运行的时候才会把辅存里面的APP相关程序代码数据读到主存里面

下图就是一个冯诺依曼机的示意图

image-20210123155920799

控制器会利用电信号来协调其他部件相互配合的工作,也负责解析存储器里所存储的程序指令

 

冯诺依曼计算机的特点:

  • 计算机由五大部件组成
  • 指令和数据以同等地位存于存储器,可按地址寻访
  • 指令和数据用二进制表示
  • 指令由操作码和地址码组成
  • 存储程序
  • 以运算器为中心

输入/输出设备与存储器之间的数据传送通过运算器完成

这几个特点在学完下一节后再回头来看下会有更好的体会

现代计算机的结构

现代计算机以存储器为中心

image-20210123160627885

 

我们常说的CPU=运算器+控制器,所以也可以上图的结构框图简化一下为下图

image-20210123160052289

注意这里的主机和我们平常生活中说的主机是有区别的。平常说的主机除了有CPU和主存储器之外,还有硬盘,风扇之类。

各个硬件的工作原理

image-20210123162322423

主存储器的基本组成

image-20210123162456915

CPU从主存储器中取数据会先把它想要的数据存放的地址写到MAR中,主存储器根据MAR接收到的地址信息从存储体中拿出CPU想要的数据并存到MDR中。最后CPU通过数据线路从MDR中取走数据。

CPU写入数据时会指明它想要写入到哪个位置,写入的具体数据放到MDR中。最后CPU通过控制总线告诉主存储器要执行写操作。主存储器根据CPU发出的这三个信息就可以往对应的位置写入数据

接下来把注意力放到存储体上

image-20210123162524589

运算器的基本组成

image-20210123162601304

通用寄存器可能有多个。ALU是运算器的核心部件

控制器的基本组成

image-20210123162631945

CU是控制器的核心部件

计算机最主要的工作就是执行代码,而我们所用的代码就是一条条的指令。每完成一条指令需要三个阶段。先取指令,根据PC里记录的指令地址从内存里取出对应的指令。取出的指令放在IR中,CU分析这条指令到底要干什么。分析完后CU控制其他部件配合着完成指令的具体执行

计算机的工作过程

下面举一个具体的例子来演示计算机的工作过程。

C语言写好的程序经过编译链接后从高级语言被翻译为机器语言并装入主存。

image-20210123225614958

由上图可以看到每一个存储单元都是16个bitbitbit,也就是存储字长是16bitbitbit。每一条指令的两个部分也是占16bitbitbit,只不过在执行这些指令的时候CPU会自动把它们拆解成操作码和地址码两个部分

首先指令和变量的数据都存放在存储体当中。这个程序要执行的第一个指令存放在0号位置。所以在程序运行之前,PC指向0位置。

接下来把这个位置存放的指令取出执行,首先PC存放的指令需要通过地址总线传送到MAR中。因为PC=0,所以该操作导致(MAR)=0,也就是控制器向主存指明了接下来要访问的是0号地址所对应的数据。同时控制器会通过控制总线告诉主存储器这次要进行的是读操作。

把寄存器外面打一个括号表示的是寄存器里面的内容

接下来主存储器会根据MAR记录的地址信息去存储体中找出0号位置所对应的二进制数据并将这些数据放到MDR中。导致现在MDR当中存放的就是我们要读取的第一条指令。

M(MAR)→\toMDR。括号外M表示主存储器,主存储器里的MAR地址所指明的数据放到MDR当中

这条指令会沿地址总线被放到IR当中,导致IR中存放此次要执行的指令。

这条指令的前6个bitbitbit(操作码,对应00001)会被送到CU控制单元里。CU分析得出这是“取数”指令。所以接下来要把地址码所指明的内存单元里的数据取出并放到ACC寄存器当中。

既然要读取主存的这个地址的信息,就需要把地址码信息(0000000101,转换为二进制为5)送到主存的MAR当中,导致(MAR)=5。5号存储单元所指向的刚好就是a这个变量所存放的位置。

接下来主存储器根据MAR指明的地址去存储体当中找出5号单元的这些数据并且把这些数据放到MDR当中,也就是把a这个变量的值放到MDR里。

最后在控制单元的指挥下,MDR里的数据会被传送到ACC当中。

到此为止我们就完成了取数的指令,最终导致a这个变量的值被放到ACC当中。

image-20210123231701600

在上一步的取指令动作完成之后PC值就自动加一了,0+1=1指明了下一条我们要执行的指令应该在1这个单元。

接下来根据PC所指向的位置取得第2条指令,取指令的过程和之前是类似的。通过前4步把第2条指令放到IR当中。

取完指令之后就要分析指令。和之前一样会把操作码部分(00100)送到CU控制单元,CU控制单元分析得出这是乘法指令。接下来CU会指挥其他部件来协调完成乘法操作。

现在这步要完成的是 a×ba\times ba×b 的操作。而a变量之前已经被送到ACC中。所以现在这条乘法指令的地址码(0000000110=6)指明的是另一个乘数b的存放位置,这条指令的地址码会被送到MAR中指明我要取出6号存储单元里的数据。

接下来主存会根据MAR所指明的地址取出相应的数据,也就是把b变量的值放到MDR当中。

接下来b的值会通过数据总线送到MQ中。

接下来还要把a的值放到x中。

当CPU执行乘法操作的时候,它会把被乘数放到x中,然后把被乘数放到MQ中

接下来CU通过控制线告诉ALU让它进行乘法运算。ALU会把x和MQ里面存储的数进行相乘操作然后把最终结果放到ACC中。

在这个例子中相乘的两个数很小,如果两个数很大,ACC可能存不下结果,这时就需要MQ辅助存储。MQ里面会用来存放乘法结果的低位。

到此为止就完成了第2条指令也就是乘法指令

和前边的一条指令相比,其实第1步到第5步每一步要做的事情都是一模一样的。只有当CU分析出这条指令是乘法指令的时候接下来的操作才会产生区别。取指令结束后PC的值也会自动加1指向下一条要执行的指令。

image-20210123231725393

上次取指令结束的时候,PC的值也会自动加1,所以这条指令执行结束之后得到的效果就是PC指向了2,也就是指向了下一条要执行的指令。ACC里面存储了上一个运算的结果,即a×b=6a\times b=6a×b=6

接下来执行2这个地址存放的指令,前面的几个步骤都是一样的。通过5个步骤可以完成取指令和分析指令的操作。最终CU分析得到这是“加法”指令。接下来CU会根据”加法“指令的步骤来指挥其他部件协调工作。

这次要计算的是 a×b+ca\times b+ca×b+ca×ba\times ba×b的结果已经存放在ACC当中,所以这个加法指令的地址码(0000000111=7)指明的是c这个变量的存放地址。

接下来要取出7这个地址存放的数据。需要把这个地址码送到MAR,主存根据MAR指明的地址取出相应的数据,也就是把c的值放到MDR当中。

接下来这步会把MDR的值传送到x中。

当我们进行加法运算的时候,ACC里面会先存入被加数,x里面存放加数。

然后控制单元会向ALU发送一个信号,告诉其此次要执行的是加法操作。ALU就会把ACC和x里面存放的值进行相加,并且把加得的值结果再次存回ACC当中。

因此这就导致了(ACC)=7,也就是把a×b+ca\times b+ca×b+c的值存放到了ACC里面。

到此为止我们完成了第三条指令也就是加法指令。

前面的5个步骤和之前的两条指令没有任何区别。另外在取完指令之后也会自动地进行PC加1的操作,也就是PC会指向下一条我们应该执行的指令

image-20210124135246729

接下来这条指令的执行前边的步骤都是一样的。根据PC记录的地址取出这条指令并且放到IR寄存器当中,然后第5个步骤会把操作码送到CU中进行分析得到这是“存数”指令。也就是要把ACC里面的数据存到地址码(0000001000=8)所指明的存储单元中,而8这个存储单元刚好对应的是y这个存储单元的位置。现在ACC里面存的是7,也就是a×b+ca\times b+ca×b+c的值。

接下来执行存数指令。首先会把指令的地址码部分送到MAR中,用来指明此次我要存入的是哪个存储单元。另外还需要把ACC里面的运算结果通过数据总线送到MDR当中。也就是说此时MDR里面保存了a×b+ca\times b+ca×b+c的值,并且此时MAR里边指明了这个值是要存到内存地址为8的地方。

接下来CU控制单元会通过控制总线告诉主存储器说此次要进行的是写操作。于是主存储器会根据MAR的地址把MDR当中的数据放到相应的位置当中。这就导致了8号存储单元的值变为了7,也就是最终我们想要得到的结果y=a∗b+cy=a*b+cy=ab+c

同样存数指令的执行,取指令和分析指令的阶段做的事情和前面那些指令没有什么区别。只有分析出了指令之后才会在CU控制单元的控制之下执行一些不一样的操作。同样PC会加1指向下一条应该执行的指令

image-20210123231810028

接下来执行这条指令。和之前一样首先需要取出指令,把这个指令取到IR中。接下来要把操作码部分送到CU里面,CU分析得到这是“停机”指令。

执行到这一步就知道我们的这段程序运行结束了。学过操作系统就会知道要停止一个进程的运行需要通过系统调用或者中断机制来通知操作系统终止该进程。于是接下来执行的指令就不是这一系列指令,而是操作系统相关的指令,后续的部分就不需要再关心了。

到此为止我们就一步一步模拟了这个程序执行的过程

image-20210123231833159

总结一下

“取数”指令的执行可以分为取指令,分析指令和执行指令这三个阶段。任何一条指令的执行一定都是这样3个阶段。

无论我们执行的是什么指令,前面取指令和分析指令的步骤其实都是一模一样的,只有分析完指令之后,CU才会知道这条指令到底要做什么。于是接下来的步骤对于不同的指令来说就有可能不一样。

在取指令的阶段,MDR里的数据肯定是要传到IR,而在执行指令的阶段CU会根据具体的这条指令来决定MDR里的数据应该是放到ACC还是MQ还是其他的通用寄存器里面。所以根据指令执行周期的不同,它处于不同的阶段,CPU就会区分出我们这次从内存里取出的到底是指令还是数据了。

image-20210123231854739

我们这个小节给的例子中,每一条指令只有一个操作码和一个地址码。但有的计算机它所支持的指令有可能有多个地址码,比如后面会讲的二地址指令。

计算机系统的多级层次结构

image-20210124155710914

高级语言编写的代码最终要翻译成机器语言才能被CPU执行(机器语言指的就是用二进制表述的指令)。传统意义上的机器只能识别机器语言。CPU在执行用二进制表示的机器指令时还需要把这些机器指令分为更细的小步骤(微指令,微操作)执行。

像上一节的例子中第一条机器指令(取数的指令)就需要被划分为9个微指令依次执行才能完成

可以把下图中的微程序机器看成对上层传统机器的分解。也就是用微程序机器的微指令来解释并执行传统机器的每一条机器指令

显然这样编程很不方便,所以出现了符号式的设计语言,也就是汇编语言。对于使用汇编语言的程序员来说,他所看到的机器似乎是可以直接识别他所编写的汇编语言程序的。所以使用汇编语言的程序员所看到的机器被称为虚拟机器。

之所以叫虚拟是因为任何一台机器都不可能直接识别汇编语言,汇编语言编写的程序想要执行必须通过汇编程序的翻译翻译为等价的机器指令才可以执行。

随着计算机的发展,慢慢出现了各种高级语言。用高级语言编写的代码需要经过编译程序翻译成汇编语言程序。

另一方面我们所编写的这些程序难免会用到操作系统所提供的各种服务,比如说某些系统调用。所以一般来说用汇编语言编写的程序同样也需要请求操作系统的服务,也就是通过系统调用的方式来请求。系统调用又可以被称为广义指令。因此下图的层次结构中在汇编语言的下方再插入操作系统机器。

操作系统及其之上的部分属于软件的部分,而传统机器和微指令机器属于硬件的部分。

image-20210123170301080

 

刚才我们提到了三种级别的语言。高级语言编写的源程序需要通过编译程序翻译为与之等价的汇编语言程序。汇编语言本质上是一些助记符,一些方便人类记忆的符号而已,本质上它和机器语言是一一对应的。汇编语言在经过汇编程序翻译后就能得到与之对应的机器语言程序。机器语言程序才是可以让CPU执行的程序。C/C++就需要一步编译和一步汇编才能得到可执行的程序。

当然如果你的程序里调用了其他的库函数,那么在经过汇编之后还要再经过链接的操作,也就是把你的程序还有你所调用的其他一些东西联系起来。

也有一些语言经过编译程序编译之后可以直接由源程序得到最终可以执行的机器语言程序。

还有一些高级语言(很多脚本语言,例如JavaScript,Python,Shell)通过解释程序翻译为对等的机器指令。编译程序和解释程序是不一样的,区别见下图。

想想C语言编译汇编之后得到的.exe文件,这个文件就是机器语言描述的程序

image-20210123170418717

后面讲了下计算机体系结构和计算机组成原理两门课内容的区别,略过不记

计算机的性能指标

image-20210124155647052

存储器的性能指标

image-20210124153928645

CPU性能指标

image-20220905162707029

系统整体的性能指标

image-20210124155119893

系统整体的性能指标(动态测试)

image-20210124155233018

常说的“跑分软件”比如鲁大师之类就是基准程序

 

下面看几个问题

1.主频高的CPU一定比主频低的CPU快吗?

不一定,如两个CPU,A的主频为2GHz,平均CPI=10;B的主频1GHz,平均CPI=1

2.若A、B两个CPU的平均CPI相同,那么A一定更快吗?

也不一定,还要看指令系统,如 A不支持乘法指令,只能用多次加法实现乘法;而B支持乘法指令

3.基准程序执行得越快说明机器性能越好吗?

基准程序中的语句存在频度差异,运行结果也不能完全说明问题

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Affinity Propagation (AP)近邻传播聚类

近邻传播聚类:根据 N 个数据点之间的相似度聚类,相似度可以是对称的,即两个数据点互相之间的相似度一样(如欧氏距离);也可以是不对称的,即两个数据点互相之间的相似度不等。这些相似度组成 NN 的相似度矩阵 S (N代表N个…

IP静态路由

IP静态路由基础概述 为了实现数据的转发,路由器必须有能力建立、刷新路由表,并根据路由表转发数据包 定义 路由是数据通信网络中的最基本的要素。路由信息就是知道报文发送的路径信息,路由的过程就是报文中继转发的过程 目的 为了实现数据的转发,路由器、路由表和路由协议是…

selenium工具之find_element(by=By.xx, value=xxx) find_elements(by=By.xx, value=xxx)详解

前言 selenium是一款十分强大的Web应用自动化框架,我们可以通过它来自动操控浏览器。操控浏览器的实质是操控浏览器的界面元素,因此定位元素是使用selenium的关键,selenium中通过 find_element() 方法来完成定位。 用法 1、通过webdriver对象的 find_element(by="属性名…

【教程】在 visual studio 共享和重用项目属性

环境 os:windows 10IDE:visual studio 2015 前言 在 visual studio 下开发项目时,通常会配置项目的属性,比如引入外部头文件,引入外部库之类的 尤其是不同的开发模式,debug 和 release,不同…

PHP+经贸时间轴 毕业设计-附源码211617

基于php经贸时间轴小程序 摘 要 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,经贸时间轴小程序被用户普遍使用…

Cache与内存映射

全相联 主存的某一Block可以映射到Cache中的任意一Block&#xff0c;多对多N<>M&#xff1b; 全相联地址格式&#xff1a; 高位为块地址与tag比较&#xff0c;offset负责取出Block内的字节 放一道例题把&#xff1a; 既然新开了一章写就写的细一点&#xff0c;Cache全…

深度学习入门:基于Python的理论与实现

1.Python入门 python中使用class关键字来定义类&#xff1a; class 类名&#xff1a;def __init__(self, 参数,...):#构造函数...def 方法1(self, 参数, ...): # 方法1...def 方法2(self, 参数, ...): # 方法2...这里有一股特殊的__init__方法&#xff0c;这是进行初始化的方…

合成/聚合复用原则

合成/聚合复用原则 很多情况继承会带来麻烦:对象的继承关系是在编译时就定义好了,所以无法在运行时改变从父类继承的实现。子类的实现与它的父类有非常密切的依赖关系,以至于父类实现中的任何变化必然会导致子类发生变化。当需要复用子类时,如果继承下来的实现不适合解决新…

港科夜闻|香港科大为庆祝建校30周年举办慈善义卖,限量推出一批具有收藏价值的非同质化代币(NFT)艺术精品...

关注并星标每周阅读港科夜闻建立新视野 开启新思维1、香港科大为庆祝建校30周年举办慈善义卖&#xff0c;限量推出一批具有收藏价值的非同质化代币(NFT)艺术精品。这系列NFT艺术收藏品的亮点&#xff0c;就是26款按英文字母A至Z排列、重现香港科大生活点滴的原创数码图像&#…

【计算机网络】第五章 传输层

第五章 传输层 一、传输层概述 传输层功能 协议&#xff1a;TCP和UDP 是只有主机才有的层次 功能&#xff1a; 提供进程和进程之间的通信&#xff0c;网络层提供的是主机之间的通信复用和分用&#xff1a;将数个进程的信息复用起来&#xff0c;发送出去&#xff1b;收到信息…

安装 Windows Server 2019 VM虚拟机

目录&#xff08;1&#xff09;系统语言设置&#xff08;2&#xff09;点击【Install now】&#xff08;3&#xff09;激活Windows&#xff08;4&#xff09;选择安装版本&#xff08;5&#xff09;同意【license terms】&#xff08;6&#xff09;选择安装类型&#xff08;7&a…

新华三学习记录

文章目录前言计算机网络基础基本概念TCP/IP四层和OSI七层模型LAN/WAN冲突域基本组网基本协议总结前言 本博客仅做学习笔记&#xff0c;如有侵权&#xff0c;联系后即刻更改 科普&#xff1a; 计算机网络基础 参考文章 基本概念 计算机网络 分布各地的具有独立功能的计算机…

【云原生-Docker】Docker 安装 MySQL

&#x1f341;博客主页&#xff1a;&#x1f449;不会压弯的小飞侠 ✨欢迎关注&#xff1a;&#x1f449;点赞&#x1f44d;收藏⭐留言✒ ✨系列专栏&#xff1a;&#x1f449;Docker学习专栏 ✨学习社区&#xff1a;&#x1f449;不会压弯的小飞侠 ✨知足上进&#xff0c;不负…

5.Eureka服务注册的源码分析(springcloud)

一、Eureka 概念的理解 1 服务的注册 当项目启动时&#xff08;eureka 的客户端&#xff09;&#xff0c;就会向 eureka-server 发送自己的元数据&#xff08;原始数据&#xff09;&#xff08;运行的 ip&#xff0c;端口 port&#xff0c;健康的状态监控等&#xff0c;因为使用…

P02 反射

P02 反射1.反射概述1.1 反射的基本作用1.2 反射的关键2.反射获取类对象2.1 forName(String className)2.2 类名.class2.3 对象.getClass()3.反射获取构造器对象![在这里插入图片描述](https://img-blog.csdnimg.cn/e234dd155af94a5c80223d64b112f4bf.png)3.1 Class 类中用于获取…

18.Composition API(四)高级语法补充

1.自定义指令 之前我们学习了各种指令&#xff1a;v-model、v-for、v-show等&#xff0c;除了这些指令外&#xff0c;Vue允许我们自定义指令。 什么时候使用自定义指令&#xff1f; 需要对DOM元素进行底层操作&#xff0c;这个时候就会用到自定义指令。 注意&#xff1a;在V…

第二章 ES数据操作与集群

一、回顾 1.介绍ES 2.ES原理 3.ES功能 4.ES使用场景 5.ES安装 1)ES配置文件(单点配置) [root@es01 ~]# grep ^[a-z] /etc/elasticsearch/elasticsearch.yml node.name: es-1 path.data: /data/es/data path.logs: /data/es/log bootstrap.memory_lock: true network.host: 1…

Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8

因为另一台机器开发时,android studio提示更新什么东西,无脑点了。 导致原先的那台开发机器,无法build,报异常: Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8 有两个方法解决: 1、修改jdk从1.8改到11如果没有这个选项,可能需要安装…

高项重点内容

BI&#xff0c;商业智能 联机事务处理OLTP主要是执行基本日常的事务处理&#xff0c;比如数据库记录的增删查改。比如在银行的一笔交易记录&#xff0c;就是一个典型的事务。联机分析处理是数据仓库系统的主要应用&#xff0c;支持复杂的分析操作&#xff0c;侧重决策支持&…

Java高级:IO

笔记来源&#xff1a;尚硅谷Java入门视频教程(在线答疑Java面试真题) 文章目录一 File类的使用1.1 基本概述1.2 File类的常用构造器1.3 路径分隔符1.4 File类常用方法二 IO流原理及流的分类2.1 IO原理2.2 流的分类2.3 节点流和处理流2.4 InputStream & Reader2.4.1 InputSt…