【计算机组成原理】3.1 存储系统基本概念

2024-08-30 13:36

本文主要是介绍【计算机组成原理】3.1 存储系统基本概念,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

3.1 存储系统基本概念

00:00

各位同学大家好。经过之前的学习,我们已经知道了数据在计算机内部如何进行表示和运算。从这个小节开始,我们会进入一个新的章节存储系统,也就是要探讨数据,这些二进制的数据在计算机内部如何存储。

00:18

我们之前说过现代计算机当中,它的结构大致是这个样子,其中主机的内部有一个很重要的部件叫做主存储器,也就是我们熟悉的内存。另外还有大家熟悉的辅存,也就是像这个图里边的机身存储,手机的机身存储就是所谓的辅存,那么这些存储器可以看到它们的容量是不一样的,辅存会更小,而所谓的辅存,它的存储容量会更大。那除了我们平时熟知的这个主存和辅存之外,还有没有其他的用于存储数据的存储器呢?另外为什么主存和辅存的这种存储中量差异这么大?除了存储容量之外,它们之间有没有速度差异呢?这就是我们在这一小节当中需要探讨的第一个问题,也就是存储器的层次结构。

01:11

另外在这个小节当中我们会介绍计算机内部存储器的分类。当然分类这个问题我们要看从什么角度来出发考虑。比如说我们对人不同的人进行分类,那么我们可以从性别进行分类,也可以从比如说地区这个人的籍贯地区进行分类。存储器的分类也是一样的,我们可以从不同的角度进行分类。然后最后我们会介绍度量存储器的性能的一些指标。

01:40

好,我们首先来看一下存储器的层次结构。在这个层次结构当中,越靠近上层的速度越快,但是容量越小,造价也越高,越靠近下层的速度越慢,容量也越大,当然造价也会越低。之前那一页的PPT当中,华为的手机它的内存也就是主存的容量是8GB的大小,由于主存比较靠近上层,所以主存的速度还是比较快的。另外还有一个机身存储,也就是辅存的容量是128GB,只不过手机里面的辅存一般不是用磁盘来实现的,但无论怎么说,手机里这个辅存的容量也要比它的内存,也就是主存要大一些,但是辅存的读写速度也会更慢。

02:30

那我们平时手机里安装的那些APP,什么微信,各种游戏之类的,就是存储在我们的辅存里边的。但是由于辅存它的读写速度会比较慢,因此CPU不能直接和辅存进行数据的交互。这是因为CPU的数据处理速度很快。如果让快速的CPU去去直接读取读写辅存的数据,那么CP处理数据的速度会被辅存读写数据的速度所拖累。所以平时我们要启动一个app比如说要启动一个微信,那么启动微信的时候就需要把微信这个程序这个APP相关的数据先从主存调入到主存。

03:17

大家在打开微信的时候不是会有一个页面,那就一个什么什么下边站了一个小人那个那个页面,我们的手机会在这个页面停留大概两三秒的时间。这两三秒的时间其实就是把微信的数据从主存读入主存所需要的时间。当微信这个APP的数据放到主存之后,手机的CPU就可以开始运行微信相关的代码,这样的话我们就可以开始使用我们的微信了。所以再次强调在辅存里的数据只有调入到主存之后才可以被CPU访问。

03:52

这儿主存和CPU它们所连接的这两个箭头,就是指CPU可以直接从主存读数据,也可以直接向主存写数据,是这样一个意思。辅存这个东西是大家平时买手机、买电脑的时候经常会关注到的一个存储部件。在辅存之上还会有一个大家平时可能注意不到的东西,叫做cache。注意是读cache而不是cache,也就是所谓的高速缓冲存储器。我们会看到主存的数据会不会放到cache当中,然后CPU可以直接往cache写数据和读数据。另外cache里被更改的数据也会被写回主存。

04:34

那我们增加这样的一层高速缓冲存储器有什么作用呢?原因在于我们的主存虽然读写速度已经很快了,但是主存的读写速度依然远远跟不上CPU的运算速度。因此为了缓解这种速度矛盾,通常计算机硬件会把当前有可能被频繁访问的那些代码数据从主存复制一份到当中,然后CPU可以直接读取cache当中的这个副本数据。

05:05

举个例子,刚才我们不是说微信微信数据被调入这个主存了。那如果说我们此时是用微信和你的家人进行视频聊天。那么显然在接下一段时间内,微信当中处理视频聊天的那一段代码是有可能会被频繁的访问到的。所以在这个时候我们可以把处理视频聊天相关的代码,从主存把它复制一份到cache当中。由于cache是更靠近上层的一个存储层,因此cache的访问速度就是读写速度会更快。那么CPU直接访问cache里边存储的这个视频聊天相关的代码,是不是就可以比直接访问主存要快很多。这样的话就可以保证我们视频聊天的过程可以更流畅,因此这就是cache的作用。添加cache层主要是为了缓解主存和CPU之间的速度矛盾。

06:04

好,另外除了cache之外,还会看到更上面一层最接近CPU的一层叫做寄存器。那什么是寄存器?我们在之前的小节当中已经讲过很多次,比如我们之前提到过的ACC累加寄存器,MQ乘商寄存器。寄存器的读写速度又要比cache快得多。所以CPU在进行加减乘除之类的运算的时候,会把那些操作数先放到寄存器里面。CPU内部包含的寄存器数量是很有限的,有可能只有几十个寄存器。好,总之越靠近上层的这个存储器,它的速度越快,容量越小,造价也越高。

06:45

接下来我们再往下看,对于辅存这一层大家很熟悉了。比如我们的电脑里的机械硬盘,也就是磁盘,它就是属于辅存。另外还有磁带、光盘,当然还有大家很熟悉的U盘,这些又属于外存。有的教材当中会把安装在电脑内部的磁盘或者固态硬盘这些称为辅存,然后把U盘、光盘这些称为外存。也有的教材会把磁盘、U盘、光盘这些统称为辅存或者外存。所以大家在做题的时候,如果有的题目把辅存和外存区别为两个东西,大家也不要觉得奇怪。

07:21

好,如果大家之前学过操作系统的话,就知道主存和辅存之间的这些数据的交换是由硬件加上操作系统来实现的。操作系统需要负责实现页面置换算法,根据页面置换算法可以决定要把哪些数据从主存换出到外存。所以主存和辅存之间的数据交换需要系统程序员关心。另外主存和cache之间的数据交换通常是由硬件自动完成的。所有的软件程序员都不需要关心这个主存和cache之间的数据交换如何实现。这个部分是由硬件工程师来负责实现的。那么主存和辅存之间的这个数据交换就实现了操作系统里边讲过的虚拟存储系统。

08:11

虚拟存储系统解决了主存容量不够的问题。在实现了虚拟存储系统之后,应用程序员所看到的这个主存的容量可以比它实际的容量要大得多,所以这是虚拟的意思。而主存和cache之间的这个数据交换,又解决了主存和CPU速度不匹配的问题。他们之间的数据交换对于应用程序员,甚至对于操作系统程序员来说都是透明的,由硬件自动完成。这就是计算机内部存储器的层次化结构。

08:47

接下来我们用一个实际的例子带大家感受一下各层存储器它们的速度和价格之间的差异。这张图是我从京东的这个三星内存条的介绍里面截取下来的。来看一下,这儿的所谓memory指的就是我们这个三星的内存条,它的一个读写的速度,还有复制的速度。当这个内存条和英特尔的I5什么9300H和这个CPU配合工作的时候,内存的读速度可以达到37000多兆字节每秒。然后写速度同样的可以达到3万多兆字节每秒,也就是大概能到40GB每秒的读写速度。这是内存,也就是主存这一层它的读写速度。可以看到这个内存条它只有8GB的大小。

09:41

刚才我们说过除了内存之外,还会有cache层,对吧?大家可以去查一下各种CPU的型号里边,它肯定会介绍它的高速缓存,也就是cache的容量大小是多少。像I5的这个处理器,它的cash总容量只有12兆字节,要比这个内存的容量要小得多。

10:02

另外现在的CPU当中,cash层通常也是分层的,像I5这个处理器它分为L1、L2、L三这样的几层。越靠近上层的速度越快容量也越小越靠近下层的速度越慢,容量也越大。来看一下最靠近上层的这个cache层,它的读写速度可以达到900多GB每秒,要比内存的读写速度快得多。即便是最底层的这些cache,它的读写速度看一下也可以达到大概两百多GB每秒。这样的一个速度同样比内存的读写速度40GB要快得多。所以在CPU内部的cache层,虽然它的这个存储容量很小,但是它的访问速度,读写速度要比内存比主存这一层更高的多。

10:52

那为什么cash层的容量不能搞的更大一些呢?原因就是为了控制硬件的开发成本。之前我们说在同等容量的情况下,cache的这个成本要比内存的成本要高得多。所以为了控制成本,我们注定不可能把它造的很大。好,这是主存层和cache层,这两个层次都可以直接被CPU访问。

11:17

接下来我们再来看靠近下层的这个辅存,这也是京东上搜来的一个商品。它是一个磁盘,一个机械硬盘,299的价格就是和这个内存的价格差不多。但是它的存储容量可以达到1TB,要比内存的8GB要大得多。所以同等容量的情况下,显然辅存的造价要比内存要低得多。

11:43

再来看这个库存的速度,这个商品页面它有点欺负人的意思,就是他写了seta什么6GB每秒,他这儿给出的速度其实是seta接口的一个极限速度,但是并不是这个机械硬盘可以达到的速度。这个机械硬盘实际能达到的读写速度可能也就一百兆字节每秒,大概是这样的一个速度。他这个宣传有点类似于说他告诉你某一个高速公路的这个出入口,最大可以支持的车流量是这么大,看起来6GB每秒已经很快了,但事实上实际有可能出现的最大车流并不能达到这个高速公路路口可以支持的最大车流,有点类似于这样的意思。好,总之这个机械硬盘我们实际使用的时候,有可能达到的实际速度可能就是100兆自节每秒。大概是这样的速度,比我们的内存慢了很多很多。好,这是辅存层。

12:44

再来看我们刚才提到的外层这一层,大家可以去搜一下蓝光的光盘,这样的十片光盘每一片可以存储25GB这么多的数据。然而十片只需要45块钱。所以外存的这个制造成本要比辅助要低得多,但是外存的读写速度要比辅存更慢。好,所以通过这些商品的截图,大家应该能够感受到各层存储器的速度和价格的一个差异。

13:16

在好几年前大多数的辅存都是采用机械硬盘。但是最近这些年有了这样的一个趋势,就是几乎所有的电脑都会采用SSD,也就是固态硬盘来作为辅存。那可以看一下现在我们可以搜到的一个固态硬盘。大概550块钱可以买到一个500GB大小的固态硬盘,读写速度可以达到500兆字节每秒,比原来的机械硬盘要快得多。现在比较新的一些固态硬盘,如果说采用M点2这种接口的话,那它的读写速度甚至可以达到4GB每秒这样的一个速度,已经达到主存速度的10分之1了。

13:58

由于固态硬盘的读写速度要比机械硬盘快得多,所以这也是为什么大家买电脑的时候,如果电脑的系统安装在这个固态硬盘里边,会比安装在机械硬盘里边启动速度更快的多的一个原因。因为我们在开机的时候,就是需要把系统相关的数据从辅存读入到主存。而辅存的速度越快,读入的速度也越快,也就会导致开机的速度越快。好的,那这就是存储器的层次结构。

14:30

接下来我们会探讨的问题是存储器的分类。第一种分类的方式就是按照这个层次结构来分类,我们需要重点关注的是中间这三层,高速缓存,还有主存,还有辅存这样的三层。高速缓存和主存可以直接被CPU读写,而辅存里的数据只有调入到主存之后才可以被CPU访问,这是存储器的第一个分类。

14:55

接下来一种分类方式是可以按照存储介质来分类。我们知道无论是什么存储器,它终归就是用来存放二进制数据0101的,那根据存储这些二进制位的存储介质不同,我们可以对存储器进行这样的分类:第一类存储器就是半导体存储器,用半导体元器件来存储0101这样的二进制数据,我们熟悉的主存,还有刚才提到的cache,就是用半导体器件实现的存储器,这一类的存储器读写速度通常要快一些。

15:28

然后接下来就是用磁性材料存储信息的这种存储器。比如说大家可能没有见过这种好多年前的软盘,它就是用磁性材料作为存储信息。另外还有这种磁带,这个大家应该都见过。还有我们刚才提到的机械硬盘,也就是磁盘,这些存储器都是以磁性材料作为存储介质的。

15:51

第三类存储器是以光介质来存储信息,这一类的存储器我们可以把它称为光存储器。大家熟悉的光盘什么DVD、VCD那些就是光存储器。好,这是按照存储器的存储介质来进行的一个分类。

16:07

接下来我们还可以按照存取方式进行一个分类。第一类叫做随机存取的存储器random access memory,简称RAM,之前我们说过,其实所有的这些存储器,它都是分为一个一个的存储单元,每一个存储单元会有各自的地址编号,01234这样的一些地址编号,所谓随机存取的存储器,就是指我们要读取任何一个地址的这个存储单元的时候,所需要的读写时间都是相同的。读写速度并不会因为存储单元的物理位置而改变。像大家熟悉的内存条,它就是一种随机存取存储器。好,第二种叫做顺序存取的存储器,Sequential Access Memory缩写叫SAM,比如小时候可能大家用复读机听过歌,那复读机里面放的这种磁带,它就是一种顺序存取的存储器。

17:03

对于这种类型的存储器,我们要读写一个存储单元所需要的时间取决于存储单元所在的物理位置。我们的复读机或者录音机会有一个磁头来读写这个磁带里边存放的数据。比如说磁头在中间这个位置,那么这个磁带中间的轴转动的时候,这个磁条会划过读写磁头,当这个磁条划过读写磁头的时候,它就可以读出里边存储的数据。如果现在这个读写磁头要读取,而是这些磁带后半部分的一段数据的话,那是不是需要让这个磁带一直转转转转让这一段划过读写磁头才可以进行读写,因此很显然,当我们要读写某一个存储单元里面所存储的数据的时候,显然和这个存储单元的物理位置是有关的,我们需要等这个磁带一直转转转,把这段磁条转到读写磁头下方才可以。好,这是顺序存取的存储器。

18:04

好,接下来另外一种叫做直接存取的存储器,英文缩写叫DAM,听起来有点像骂人的话,像我们的机械硬盘,也就是磁盘,就是一种典型的直接存取的存储器,这种存储器它既有随机存取的特性,也有顺序存取的特性。

18:22

首先这个磁头臂会进行前后的移动,移动到想要读取的那个区域,然后接下来中间的这个马达会带动着这个磁盘旋转,当我们想要读写的数据划过磁头下方的时候,这个磁头就可以进行相应的读和写,所以直接把磁头臂移动到想要读写的区域这一步有点随机存取的意思。然而我们又需要等待这个磁盘一直转转转,然后把存储数据的那个区域划过磁头臂,这个又有点顺序存取的意思。所以直接存取存储器它的读写速度要比顺序存取的这种存储器要更快一些,但是要比随机存取的存储器要更慢一些。

19:08

像右边这两种存储器,读写时间和存储单元的物理位置有关,这两种存储器我们可以把它们都归为串行访问的存储器。好,刚才我们提到的这三种类型的存储器,都是我们要指明一个读写的地址,然后进行读取。然而还有一种存储器的存取方式会不太一样,叫做相联存储器,也可以称为按内容访问的存储器,英文缩写叫CAM,这种存储器的特性就是我们可以按照我们想要找的那个内容去检索到存储位置在哪儿,然后对这个存储位置进行读和写。比如说快表就是一种相连存储器,注意这种存储器和其他三种的区别,其他三种是指定数据存储地址,然后直接去那个地址当中读或者写这个数据,而相联存储器是我们可以指明我们想要找的数据内容是什么,然后根据数据的内容去查找它的存储位置在哪儿。下面三种是按照地址来访问,上面这一种是按照内容来访问。好,和快表相关的知识我们还会在之后进行进一步的探讨。

20:27

好的,这是按照存取方式的不同对存储器的一个分类。接下来我们还可以按照信息的可更改性对存储器进行分类。有的存储器既可以从其中读取数据,也可以往里面写数据,比如说磁盘,还有内存cache,这些都是可读可写的。然而也有一些存储器我们只能读不能写,我们通常会用ROM,也就只读存储器来存储一些不太可能被更改的数据,比如大家去购买的一些音乐专辑,用CD来存放的话,那么这个音乐专辑的信息显然是不太可能被更改的,所以就可以把这个音乐的信息放到CD ROM里边。另外还有就是正版电影的蓝光光碟,虽然我没有购买过,但是显然这个电影的信息我们也可以用一个ROM只读存储器来存储,不太可能更改。另外如果自己安装过系统的同学应该知道bios是什么东西,bios通常也是写在一个ROM里边的,而这个ROM芯片通常会集成在我们的主板上好,所以这是只读存储器。

21:37

值得注意的是,现在的很多ROM只读存储器,其实也可以往里边重新写数据,只不过想要写会比较麻烦,比如我们可能需要一些特殊的手段,先把ROM里边的数据给擦除,然后再往里边写好的。这是按照信息的可更改性对存储器的一个分类。

21:56

接下来我们还可以按照信息的可保存器进行分类。如果说在断电之后,存储器里边存储的信息会消失,那么这种存储器我们可以把它称为易失性的存储器,比如说主存,还有cash,主存里的数据在断电之后会消失,这一点大家应该是有感受的。

22:15

我们的手机没电,关机之后你需要再开机,对吧?那开机的时候它会有一个开机画面,并且开机的过程很缓慢,这其实就是因为之前你的手机正在运行的什么操作系统,各种软件之类的,这些数据本来是存在主存里边的,然而在断电之后,主存里的这些数据被清空了,所以我们在开机的时候,需要重新把各种各样什么系统之类的数据从辅存调入主存,因此我们开机的过程会比较慢。好,这是易失性的存储器。

22:48

与之相对的就是断电之后数据依然保存,这种就是非易失性的存储器。比如我们的手机系统或者电脑的系统安装在辅存里,那电脑没电或者手机没电之后,显然这些数据依然是存在的对吧?不然我们就不可能重新开机了,因此像什么磁盘,还有固态硬盘,还有光盘,这些就是非易失性的存储器。

23:11

而另一个方面,在信息读出之后,如果原来存储的信息被破坏,那这种读出方式我们称为破坏性读出,比如之后我们会学习一种叫做DRAM的芯片,我们读取出这个芯片里的二进制01之后,里边存储的这些信息会被破坏掉,那此时我们需要对数据进行重写。

23:31

好与之相对的另一种类型的存储器,当我们在读出信息之后,原来的数据不会被破坏,这种读出方式称为非破坏读出。比如之后我们会学习SRAM芯片,还有大家熟悉的磁盘光盘,当我们读出数据之后,原来的数据并不会被破坏,那这种就是非破坏性读出。好,这是按照信息的可保存性来进行的分类。

23:56

接下来我们再来学习这个小节的最后一个内容,存储器的性等指标。第一个指标叫做存储容量,这个很好理解,就是存储字数×存储字长。之前我们说过存储器的MDR也就是数据寄存器,它的位数反映了我们的存储字长是多少。另外MAR的位数又反映了存储字数为多少。我们用存储字数乘以存储字长就可以得到存储容量。这一点我们在第一章讲过,这就不再赘述。

24:29

第二个存储器的性能指标叫做单位成本,也就是指每一个比特位所需要付出的金钱成本是多少。比如我们之前看到的那个三星的内存条,8GB的大小总共要259块钱,那么259块钱除以8GB,再把这个8GB换算成比特,因为我们要算的是每一位,每一个比特所需要付出的金钱成本,也就是8乘以8,八八六十四64G个比特,那256块除以64G比特算出来的就是刚才三星那个存储器的单位成本,每个比特位所需要付出的价格。

25:12

好,第三个性能指标就是存储的速度,又称为数据传输率。我们可以用数据的宽度,也就是存储字长,存储字长除以存储周期就可以得到数据传输率。每一个存储周期我们可以读或者写一个存储字这么多的数据,而存储周期又可以被划分为存取时间,还有恢复时间这样的两个部分,每次进行读或者写的时候,我们都需要花费存取时间这么长的一段时期,但是在这一次读或者写结束之后,我们的存储器需要一段恢复时间才可以再进行下一次的读或者写,所以虽然理论上我们进行单独的一次读或者写只需要TA这么多的时间,然而如果我们需要进行连续的多次读写,那么多次的读写之间至少需要有存取周期TM这么多的一个时间间隔,因为我们还需要留一段恢复时间,所以需要注意存取时间和存取周期是有区别的。

26:17

另外一个需要注意的概念叫做主存带宽。主存带宽其实就是我们之前提到的数据传输率,只不过是一个别名而已,同样是用存储字长除以存取周期就可以得到这个主存的带宽,就是指每秒从主存进出信息的最大数量,单位可以是自每秒、字节每秒或者位每秒。再次强调需要注意大B和小b的一个区别,这个我们之前说过。好的,这就是存储器的几个性能指标。

26:50

这个小节当中我们学习了存储器的一些基本概念,在计算机内部存储器是被分层的,越靠近CPU的存储器速度越快,但是成本越高。高速缓存、cache和主存是可以直接被CPU读写的,而辅助存储器内部的数据如果想要被CPU处理的话,必须先调入到主存当中,主存和辅存它们之间的数据交换由硬件和操作系统负责实现,这两层的数据交换实现了虚拟存储系统,解决了主存容量不够的问题,另外cache和主存这两层之间的数据交换由硬件来实现,对于所有的程序员都是透明的,这两层的数据交换解决了主存和CPU速度不匹配的问题。

27:37

好,另外这个小节当中我们介绍了存储器的一个分类方式,从不同的角度可以有不一样的分类,这个部分大家有一个简要的了解即可。在这个小节的最后,我们还介绍存储器的性能指标,分为存储容量、单位成本,还有数据传输率,也就是主存带宽,这些指标都很好理解。需要注意的是,存储周期由存取时间和恢复时间这样的两个部分构成,所以存取时间和存取周期是不一样的两个概念,这一点大家需要注意。好的,以上就是这个小节的全部内容。

这篇关于【计算机组成原理】3.1 存储系统基本概念的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1120968

相关文章

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于

hdu4407(容斥原理)

题意:给一串数字1,2,......n,两个操作:1、修改第k个数字,2、查询区间[l,r]中与n互质的数之和。 解题思路:咱一看,像线段树,但是如果用线段树做,那么每个区间一定要记录所有的素因子,这样会超内存。然后我就做不来了。后来看了题解,原来是用容斥原理来做的。还记得这道题目吗?求区间[1,r]中与p互质的数的个数,如果不会的话就先去做那题吧。现在这题是求区间[l,r]中与n互质的数的和

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

hdu4407容斥原理

题意: 有一个元素为 1~n 的数列{An},有2种操作(1000次): 1、求某段区间 [a,b] 中与 p 互质的数的和。 2、将数列中某个位置元素的值改变。 import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.Inpu

hdu4059容斥原理

求1-n中与n互质的数的4次方之和 import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.PrintWrit

【机器学习】高斯网络的基本概念和应用领域

引言 高斯网络(Gaussian Network)通常指的是一个概率图模型,其中所有的随机变量(或节点)都遵循高斯分布 文章目录 引言一、高斯网络(Gaussian Network)1.1 高斯过程(Gaussian Process)1.2 高斯混合模型(Gaussian Mixture Model)1.3 应用1.4 总结 二、高斯网络的应用2.1 机器学习2.2 统计学2.3

寻迹模块TCRT5000的应用原理和功能实现(基于STM32)

目录 概述 1 认识TCRT5000 1.1 模块介绍 1.2 电气特性 2 系统应用 2.1 系统架构 2.2 STM32Cube创建工程 3 功能实现 3.1 代码实现 3.2 源代码文件 4 功能测试 4.1 检测黑线状态 4.2 未检测黑线状态 概述 本文主要介绍TCRT5000模块的使用原理,包括该模块的硬件实现方式,电路实现原理,还使用STM32类

JavaEE7 Servlet 3.1(JSR 340)规范中文版

http://www.iteye.com/news/27727-jinnianshilongnian     Jave EE 7中的部分规范已正式获得批准通过,其中包括JSR340 Java Servlet 3.1规范,去年翻译了该规范,在此分享出来,希望对某些朋友有所帮助,不足之处请指正。   点击直接下载    在线版目录   Servlet3.1规范翻译

计算机视觉工程师所需的基本技能

一、编程技能 熟练掌握编程语言 Python:在计算机视觉领域广泛应用,有丰富的库如 OpenCV、TensorFlow、PyTorch 等,方便进行算法实现和模型开发。 C++:运行效率高,适用于对性能要求严格的计算机视觉应用。 数据结构与算法 掌握常见的数据结构(如数组、链表、栈、队列、树、图等)和算法(如排序、搜索、动态规划等),能够优化代码性能,提高算法效率。 二、数学基础