【计算机组成原理】详谈计算机发展历程

计算机发展历程

  • 导读
  • 一、计算机的诞生
    • 1.1 历史背景
    • 1.2 计算机的发明
  • 二、计算机硬件的发展
    • 1.1 计算机的四代变化
      • 1.1.1 第一代计算机
        • bug的由来
      • 1.1.2 第二代计算机
      • 1.1.3 第三代计算机
        • 半导体存储器的发展
      • 1.1.4 第四代计算机
    • 1.2 个人计算机的发展
      • 1.2.1 微处理器的发展
      • 1.2.2 个人计算机的出现
  • 三、计算机软件的发展
  • 结语

封面

导读

大家好,很高兴又和大家见面啦!!!

从今天开始,我们将开始学习一门新的课程——计算机组成原理(Computer Organization, CO)。

计算机组成原理这门课程与操作系统一样,同样也是一门理论学科。在学习这门课程的过程中,我们会接触到很多的计算机名词,了解到计算机最底层的理论知识。这门学科的学习能够帮助我们更好的理解一台计算机及其工作原理。

计组这门课程总共有七大章节:

  1. 计算机系统概述
  2. 数据的标识和运算
  3. 存储系统
  4. 指令系统
  5. 中央处理器
  6. 总线
  7. 输入/输出系统

我们会在学习这些内容的过程中逐步加深对计算机的理解。

【计算机组成原理】博客专栏和其它的专栏一样,都是我个人的一份学习笔记。在每一篇的内容中,我都会完成相应理论知识点的记录、个人理解的对应表达以及相关必要的图片的绘制。

在当今的信息化时代,我们在生活中会经常使用计算机、手机等电子产品。一台个人计算机则是由最底层的硬件、在硬件之上的操作系统以及在操作系统之上的软件构成,而我们与其他人通过计算机进行交流时,则是通过计算机网络实现:

信息化时代
通过【计算机组成原理】这门课,我们会学习到计算机最底层的硬件的工作原理;通过【操作系统】这门课,我们会学习搭载在硬件上的操作系统的工作原理;通过学习【C/C++/JAVA……】这些高级编程语言以及【数据结构】这门课,我们则能够学习如果通过计算机语言来描述咱们的世界;通过学习【计算机网络】这门课,我们会学习计算机与计算机之间传递信息的工作原理。

因此整个计算机学习的阶段,高级编程语言、DS、OS、CO、CN这五门课程是必不可少的。在今天的内容中,我们将会学习一下计算机一个发展历程,了解一下计算机从诞生开始到现在经历了怎样的发展。今天的篇章算是学习计算机组成原理之前的一个小故事,下面我们就来进入今天的内容吧!

一、计算机的诞生

1.1 历史背景

科技的发展是以国家之间的对抗为背景的,一个国家要想强大,只能通过不断的提升自己的技术

时间回到二战时期,当时的战斗十分激烈,但是各国的武器装备却没有特别的先进,在战斗中占主导地位的战略武器就是飞机和大炮,因此研制和开发新型的大炮和导弹就是当时的重中之重。为此美国陆军军械部在马里兰州的阿拉伯丁设立了“弹道研究实验室”。1

1.2 计算机的发明

于1937年~1941年间,美国爱荷华州立大学的约翰·文森特·阿塔纳索夫(John Vincent Atanasoff)教授和他的研究生克利福特·贝瑞(Clifford Berry)先生研发了“阿塔纳索夫-贝瑞计算机”(Atanasoff-Berry Computer,简称ABC)。
阿塔纳索夫和贝瑞

ABC计算机是第一台电子化的计算机,非图灵完备和不可编程是其最大限制。
ABC计算机
1941年,莫克利(JohnW.Mauchly)在阿坦纳索夫家中借助了5天,在此期间“盗取”了阿塔纳索夫教授的研究成果及想法,之后于1942年提出了试制第一台能够计算导弹弹道轨迹的电子计算机的初始设想——“高速电子管计算装置的使用”,期望用电子管代替继电器以提高机器的计算速度。

美国军方得知这一设想后,马上拨款大力支持,成立了以莫克利、埃克特(John Eckert)为首的研制小组开始研制工作,预算经费为15万美元。于是世界上第二台电子计算机,世界上第一台通用计算机 ENIAC (Electronic Numerical Integrator And Computer)开始进入研发状态。

于1944年,也就是 ENIAC 的研发中期,当时弹道研究所的顾问——正在参与美国第一颗原子弹研制工作的数学家冯·诺依曼(von Neumann,1903-1957,美籍匈牙利人)带着原子弹研制过程中遇到的大量计算问题,在研制过程中期加入了研制小组。

当时的 ENIAC 设计中存在两个问题:

  1. 没有存储器
  2. 它是使用布线接板进行控制的

为了进行搭接,可能需要耗费数天的时间,这就导致计算机的速度被这一工作抵消了。

1945年,为了解决 ENIAC 存在的这两个问题,冯·诺依曼和他的研制小组在共同讨论的基础上,发表了一个全新的“存储程序通用电子计算机方案”—— EDVAC (Electronic Discrete Variable Automatic Computer)。方案中提出的计算机体系结构一直延续至今,也就是现代计算机的冯·诺依曼结构。
冯·诺依曼

EDVAC 的初步预算为10万美元,但最终的成本大约超过估计的4倍,约50万美元。2

1946年,第一台通用计算机 ENIAC 问世,并开始投入运行。

1949年8月,第一台离散变量自动电子计算机 EDVAC 问世,于1951年正式开始投入运行。

二、计算机硬件的发展

在开始介绍硬件的发展之前,我们需要先了解几个名词:

  1. 电信号:随时间而变化的电压或电流。
  2. 二进制语言:面相机器的语言,直接来自计算机的指令系统,与具体计算机紧密相关。在二进制语言中通常将电信号的高电平用1表示,将电信号的低电平用0表示。
  3. 机器语言:机器能够识别的二进制语言
  4. 逻辑元件:处理电信号的最小基本单位

这些名词在后续的内容中会经常提到,我们先要对其有个初步影响,接下来我们就来看看整个计算机硬件的发展过程;

1.1 计算机的四代变化

从1946年世界上第一台电子数字计算机 ENIAC 问世以来,计算机的发展已经经历了四代。

1.1.1 第一代计算机

  1. 第一代计算机(1946-1957年)——电子管时代。

ENIAC 问世后,人们在使用时通过在纸带或卡片上打孔的方式来编写机器语言,并通过纸带机将纸带上的内容转换成对应的电信号——有孔代表低电平,无孔代表高电平。

纸带机
ENIAC 为首的第一代计算机的逻辑元件采用的是电子管,通过电子管来识别这些电信号。

电子管
ENIAC 中,总共使用了1.8w个这样的电子管,并通过线路将这些电子管给连接起来从而实现通过电路进行运算的功能,可想而知 ENIAC 必定是一个庞然大物。

ENIAC
ENIAC 总占地面积约为 170 m 2 170m^2 170m2,由于使用了大量的电子管,其耗电量也达到了 150 K W 150KW 150KW,即使有这么大的占地面积和这么高的耗电量,其运算速度也只能够实现 5000 次左右的加法运算 / 秒 5000次左右的加法运算/秒 5000次左右的加法运算/


bug的由来

在一次实验中,这些科学家们像往常一样将打了孔洞的纸带放入纸带机后,就等 ENIAC 进行相应的运算,可是那一次实验出现了问题,他们在寻找原因的过程中,其中一人在纸带上发现了一只小虫子,于是便说我发现了bug,这里的bug是指小虫子的意思。

bug
后来人们便将这次事故中因这只小虫子产生的故障称为程序漏洞,并以bug来命名。这种说法并沿用至今,现在我们在运行程序时如果遇到了问题,我们也会惊呼,这是bug,我发现了bug……

哈哈哈,题外话到此为止,下面我们继续回归正题。


ENIAC 为首的第一代计算机因其逻辑元件采用的是电子管,所以将这一时期称为电子管时代。在电子管时代的计算机的特点有以下几点:

  • 逻辑元件采用电子管;
  • 使用机器语言进行编程;
  • 主存用延迟线或磁鼓存储信息,容量极小;
  • 体积庞大,成本高;
  • 运算速度较低,一般只有几千次到几万次每秒。

1.1.2 第二代计算机

  1. 第二代计算机(1958-1964年)——晶体管时代。

在第二次世界大战期间,不少实验室在有关硅和锗材料的制造和理论研究方面,也取得了不少成绩,这就为晶体管的发明奠定了基础。

为了克服电子管的局限性,第二次世界大战结束后,贝尔实验室加紧了对固体电子器件的基础研究。肖克莱等人决定集中研究硅、锗等半导体材料,探讨用半导体材料制作放大器件的可能性。

1945年秋天,贝尔实验室成立了以肖克莱为首的半导体研究小组,成员有布拉顿、巴丁等人。

肖克利

1947年12月,这个世界上最早的实用半导体器件终于问世了,在首次试验时,它能把音频信号放大100倍,它的外形比火柴棍短,但要粗一些。在为这种器件命名时,布拉顿想到它的电阻变换特性,即它是靠一种从“低电阻输入”到“高电阻输出”的转移电流来工作的,于是取名为trans-resistor(转换电阻),后来缩写为transistor,中文译名就是晶体管。

第一个晶体管

1950年,第一只“PN结型晶体管”问世了。

PN结型晶体管

半导体材料的发明,尤其是硅半导体材料的应用,为晶体管计算机的发明奠定了基础。

1953:年,磁芯存储器被开发出来。

1954年,IBM的John Backus和他的研究小组开始开发 FORTRAN。

同年,美国贝尔实验室研制成功第一台使用晶体管线路的计算机,取名“催迪克”(TRADIC),装有800个晶体管。
晶体管计算机
1957年,FORTRAN 高级语言开发成功,这是一种适合科学研究使用的计算机高级语言。

1958年,美国的IBM公司制成了第一台全部使用晶体管的计算机RCA501型。

RCA501

由于RCA501型计算机采用晶体管逻辑元件,及快速磁芯存储器,计算机速度从每秒几千次提高到几十万次,主存储器的存贮量,从几千提高到10万以上。

以RCA501为首的第二代计算机由于采用的是晶体管作为逻辑元件,因此该时代也被称为晶体管时代。在晶体管时代的计算机具有以下特点:

  • 逻辑元件采用晶体管;
  • 运算速度提高到几万次到几十万次每秒;
  • 主存使用磁芯存储器;
  • 计算机软件也得到了发展,开始出现了高级语言及其编译程序,有了操作系统的雏形。

1.1.3 第三代计算机

  1. 第三代计算机(1965-1971年)——中小规模集成电路时代。

1958年,仙童公司Robert Noyce与德仪公司基尔比间隔数月分别发明了集成电路,开创了世界微电子学的历史;

1960年,H H Loor和E Castellani发明了光刻工艺

1962年,美国RCA公司研制出MOS场效应晶体管

1963年,F.M.Wanlass和C.T.Sah首次提出CMOS技术,今天,95%以上的集成电路芯片都是基于CMOS工艺

1964年,Intel摩尔提出摩尔定律,预测晶体管集成度将会每18个月增加1倍。

  • 摩尔定律。当价格不变时,集成电路上可容纳的晶体管数目,约每隔18个月便会增加一倍,性能也会提示一倍。也就是说我们现在和18个月后花同样的钱买到的CPU,后者的性能是前者的两倍。这一定律揭示了信息技术进步的速度。

1964年4月7日,IBM公司研制成功世界上第一个采用集成电路的通用计算机IBM 360系统,它兼顾了科学计算和事务处理两方面的应用。IBM 360系列计算机是最早使用集成电路的通用计算机系列,它开创了民用计算机使用集成电路的先例,计算机从此进入了集成电路时代。

IBM360
1966年:美国RCA公司研制出CMOS集成电路,并研制出第一块门阵列(50门),为现如今的大规模集成电路发展奠定了坚实基础,具有里程碑意义。

以IBM 360为首的第三代计算机采用的逻辑元件为中小规模的集成电路,因此该时期也被称为中小规模集成电路时代。这个时代,计算机主要还是应用于科学计算等专业用途,并未在普通的家庭进行普及。该时代的计算机具有以下特点:

  • 逻辑元件采用中小规模集成电路;
  • 半导体存储器开始取代磁芯存储器;
  • 高级语言发展迅速,操作系统也进一步发展,开始有了分时操作系统;

半导体存储器的发展

1970年,仙童半导体公司生产处第一个较大容量的半导体存储器,至今,半导体存储器经历了11代:单芯片1KB、4KB、16KB、64KB、256KB、1MB、4MB、16MB、256MB和现在的1GB。


1.1.4 第四代计算机

  1. 第四代计算机(1972年至今)——超大规模集成电路时代。

1967年和1977年分别出现了大规模和超大规模集成电路。由大规模和超大规模集成电路组装成的计算机,被称为第四代电子计算机。美国ILLIAC-IV计算机,是第一台全面使用大规模集成电路作为逻辑元件和存储器的计算机,它标志着计算机的发展已到了第四代。

第四代计算机的另一个重要分支是以大规模、超大规模集成电路为基础发展起来的微处理器和微型计算机。

微处理器和微型计算机的发展总共经历了四个阶段:

  • 第一阶段是1971~1973年,微处理器有4004、4040、8008。 1971年Intel公司研制出MCS4微型计算机(CPU为4040,四位机)。后来又推出以8008为核心的MCS-8型。

  • 第二阶段是1973~1977年,微型计算机的发展和改进阶段。微处理器有8080、8085、M6800、Z80。初期产品有Intel公司的MCS一80型(CPU为8080,八位机)。后期有TRS-80型(CPU为Z80)和APPLE-II型(CPU为6502),在八十年代初期曾一度风靡世界。

  • 第三阶段是1978~1983年,十六位微型计算机的发展阶段,微处理器有8086、8088、80186、80286、M68000、Z8000。微型计算机代表产品是IBM-PC(CPU为8086)。本阶段的顶峰产品是APPLE公司的Macintosh(1984年)和IBM公司的PC/AT286(1986年)微型计算机。

  • 第四阶段便是从1983年开始为32位微型计算机的发展阶段。微处理器相继推出80386、80486。386、486微型计算机是初期产品。 1993年, Intel公司推出了Pentium或称P5(中文译名为“奔腾”)的微处理器,它具有64位的内部数据通道。Pentium III(也有人称P7)微处理器己成为了主流产品,Pentium IV 已在2000年10月推出。

由此可见,微型计算机的性能主要取决于它的核心器件——微处理器(CPU)的性能。

该时期计算机的特点有:

  • 逻辑元件采用大规模集成电路和超大规模集成电路,产生了微处理器;
  • 诸如并行、流水线、高速缓存和虚拟存储器等概念用在了这代计算机中。

1.2 个人计算机的发展

将CPU浓缩在一块芯片上的微型机的出现与发展,掀起了计算机大普及的浪潮。

1.2.1 微处理器的发展

1969年,英特尔(Intel)公司受托设计一种计算器所用的整套电路,公司的一名年轻工程师费金(Federico Fagin)成功地在4.2×3.2的硅片上,集成了2250个晶体管。这就是第一个微处理器——Intel 4004。它是4位的。

1971年11月15日,Intel公司的工程师霍夫发明了世界上第一个商用微处理器—4004,从此这一天被当作具有全球IT界里程碑意义的日子而被永远的载入了史册

在它之后,1972年初又诞生了8位微处理器Intel 8008。

1973年出现了第二代微处理器(8位),如Intel 8080(1973)、M6800(1975,M代表摩托罗拉公司)、Z80(1976,Z代表齐洛格公司)等。

1978年出现了第三代微处理器(16位),如Intel 8086、Z8000、M68000等。

1981年出现了第四代微处理器(32位),如iAPX432、i80386、MAC-32、NS-16032、Z80000、HP-32等。它们的性能都与七十年代大中型计算机大致相匹敌。微处理器的两三年就换一代的速度,是任何技术也不能比拟的。

自1971年Intel公司开发出第一个微处理器Intel 4004至今,微处理器经历了Intel 8008(8位)、Intel 8086(16位)、Intel 80386(32位)、Pentium(32位)、Pentium Ⅲ(64位)、Pentium 4(64位)、Core i7(64位)等。

这里的4位、8位、16位、32位、64位指的是机器字长,是指计算机进行一次整型运算所能处理的二进制数据的位数。

1.2.2 个人计算机的出现

最早的个人计算机之一是美国苹果(Apple)公司的AppleⅡ型计算机,于1977年开始在市场上出售。继之出现了TRS-80(Radio Shack公司)和PET-2001(Commodore公司)。

从此以后,各种个人计算机如雨后春笋一般纷纷出现。

当时的个人计算机一般以8位或16位的微处理器芯片为基础,存储容量为64KB以上,具有键盘、显示器等输入输出设备,并可配置小型打印机、软盘、盒式磁盘等外围设备,且可以使用各种高级语言自编程序。

随着PC机的不断普及,IBM公司于1979年8月也组织了个人计算机研制小组。两年后宣布了IBM-PC,1983年又推出了扩充机型IBM-PC/XT,引起计算机工业界极大震动。在当时,IBM个人计算机具有一系列特点:设计先进(使用Intel8088微处理器)、软件丰富(有八百多家公司以它为标准编制软件)、功能齐全(通信能力强,可与大型机相连)、价格便宜(生产高度自动化,成本很低)。

到1983年,IBM-PC迅速占领市场,取代了号称美国微型机之王的苹果公司。

三、计算机软件的发展

计算机软件技术的蓬勃发张,也为计算机系统的发展做出了很大的贡献。

计算机软件的发展实际上就是计算机语言的发展。

  • 在第二代计算机出现之前,科学家们使用的都是面向机器的机器语言,由于机器语言的可读性很差,于是便出现了能够让人理解的汇编语言。但是不管是机器语言还是汇编语言都是需要根据具体的计算机能够识别的语言来决定的,当时有些计算机可以识别汇编语言,而有些计算机只能识别机器语言,因此这个时期的软件并没有很好的发展。
  • 在1957年,适合科学研究使用的计算机高级语言FORTRAN出现后,便开始出现了操作系统的雏形,此时的软件才是真正意义上的开始发展。
  • 而高级语言的发展真正促进了软件的发展,它经历了从科学计算和工程计算的FORTRAN、结构化程序设计的PASCAL到面向对象的C++和适应网络环境的JAVA。
  • 与此同时,直接影响计算机系统性能提升的各种系统软件也有了长足的发展,特别是操作系统,如Windows、UNIX、Linux等。

结语

在今天的内容中我们详细介绍了计算机的整个发展历程:

计算机发展历程
从整个历程中我们不难发现计算机的发展是逐渐往小型化的方向去发展,同时也是往更快的运算速度发展。

现在的计算机发展逐步走向了两极分化:

  • 一种是微型计算机向更微型、网络化、高性能、多用途的方向发展;如智能手表、手机等
  • 一种是巨型计算机向更巨型、超高速、并行处理、智能化的方向发展;如超级计算机——神威·太湖之光(每秒9.3亿亿次的浮点运算)

今天的内容到这里就全部结束了,在下一篇内容中我们将介绍计算机系统层次结构的相关内容,大家记得关注哦!如果大家喜欢博主的内容,可以点赞、收藏加评论支持一下博主,当然也可以将博主的内容转发给你身边需要的朋友。最后感谢各位朋友的支持,咱们下一篇再见!!!


  1. ENIAC ↩︎

  2. EDVAC ↩︎

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

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

相关文章

AIGC之Stable Diffusion Web Ui 初体验

前言 Stable Diffusion辣么火,同学你确定不尝试一下嘛? 纯代码学习版本搞啦,Web Ui 也得试试咧 网上有很多安装Stable Diffusion Web Ui 的介绍了,我在这说一下我的踩坑记录 想安装的同学,看这个链接 万字长文&#x…

U-Net: Convolutional Networks for Biomedical Image Segmentation--论文笔记

U-Net: Convolutional Networks for Biomedical Image Segmentation 资料 1.代码地址 2.论文地址 https://arxiv.org/pdf/1505.04597 3.数据集地址 论文摘要的翻译 人们普遍认为,深度网络的成功训练需要数千个带注释的训练样本。在本文中,我们提出…

44-5 waf绕过 - SQL注入绕WAF方法

环境准备: 43-5 waf绕过 - 安全狗简介及安装-CSDN博客然后安装sqlilabs靶场:构建完善的安全渗透测试环境:推荐工具、资源和下载链接_渗透测试靶机下载-CSDN博客 一、双写绕过 打开sql靶场的第一关:http://127.0.0.1/sqli-labs-master/Less-1/?id=1 验证一下waf是否开启防…

C\C++内存管理(未完结)

文章目录 一.C\C内存分布二.C语言中动态内存管理方式:malloc/calloc/realloc/free三.C内存管理方式3.1.new/delete操作内置类型3.2.new和delete操作自定义类型 四.operator new与operator delete函数(重要点进行讲解)4.1. operator new与oper…

npm install 出错,‘proxy‘ config is set properly. See: ‘npm help config‘

背景 从远程clone下项目之后,使用命令 npm install 安装依赖,报错如下 意为: 报错: npm犯错!network与网络连通性有关的问题。 npm犯错!网络在大多数情况下,你背后的代理或有坏的网络设置。 npm犯错!网络 npm犯错…

spring-kafka-生产者服务搭建测试(SpringBoot整合Kafka)

文章目录 1、生产者服务搭建1.1、引入spring-kafka依赖1.2、使用Java代码创建主题分区副本1.3、发送消息 1、生产者服务搭建 1.1、引入spring-kafka依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/…

KOL营销新篇章:互动式内容与线上活动如何助力品牌增长

在当今数字化时代&#xff0c;KOL营销已成为品牌推广的重点策略之一。然而&#xff0c;随着市场竞争的加剧&#xff0c;单纯依靠KOL的曝光已经不再足够&#xff0c;更多的是需要与用户进行互动&#xff0c;帮助品牌与受众建立更紧密的联系。本文将探讨KOL营销如何通过互动式内容…

《企业应用架构模式》学习指南

导读&#xff1a;企业应用包括哪些&#xff1f;它们又分别有哪些架构模式&#xff1f; 世界著名软件开发大师Martin Fowler给你答案 01什么是企业应用 我的职业生涯专注于企业应用&#xff0c;因此&#xff0c;这里所谈及的模式也都是关于企业应用的。&#xff08;企业应用还有…

怎么用NodeJS脚本实现远程控制空调

怎么用NodeJS脚本实现远程控制空调呢&#xff1f; 本文描述了使用NodeJS脚本调用HTTP接口&#xff0c;实现控制空调&#xff0c;通过不同规格的通断器&#xff0c;来控制不同功率的空调的电源。 可选用产品&#xff1a;可根据实际场景需求&#xff0c;选择对应的规格 序号设备…

MySQL从入门到高级 --- 12.事务 13.锁机制 14.日志

文章目录 第十二章 && 第十三章 && 第十四章&#xff1a;12.事务12.1 特性12.2 隔离级别 13.锁机制13.1 各存储引擎对锁的支持状况&#xff1a;13.2 锁特性13.3 MyISAM表锁13.3.1 加表锁 13.4 InnoDB行锁13.4.1 行锁特点13.4.2 行锁模式 14.日志14.1 错误日志1…

深入理解计算机系统 第三版 中文版 图5-27 p371 错漏

中文版 英文版 对照 可以看出错漏 这本书中文版很多错漏,可以配合英文版查正,不过英文版也很多错漏,所以不用太相信书本.要根据自己的理解来.

微软云计算Windows Azure(一)

目录 一、微软云计算平台二、微软云操作系统Windows Azure&#xff08;一&#xff09;Windows Azure概述&#xff08;二&#xff09;Windows Azure计算服务&#xff08;三&#xff09;Windows Azure存储服务&#xff08;四&#xff09;Windows Azure Connect&#xff08;五&…

Win 11官宣取消硬件限制,微软这次彻底服软了

上市近 3 年&#xff0c;微软寄予厚望的 Win 11 终究落了个被上代 Win 10 光环狠狠掩埋的结局。 有小伙伴儿认为是 Win 11 本身做的太烂&#xff0c;更新频繁、BUG 一堆&#xff0c;让人失去兴趣。 也有人认为&#xff0c;系统本身体验没啥大毛病&#xff0c;严苛的硬件限制才…

数据结构算法-堆排序

堆排序&#xff1a;利用堆的特性进行排序,先将数组转换为堆对象&#xff08;最大堆或最小堆&#xff09;&#xff0c;以最大堆为例&#xff0c;每次heapify之后&#xff0c;取出堆顶&#xff08;索引为0)的元素与最后一个元素交换。以后每次做同样的事情&#xff0c;只是堆的长…

Golang性能分析工具pprof--远程分析时无法定位源代码行数问题解决方案

场景 通过命令行模式的list命令&#xff0c;为了查看指标消耗在具体哪一行&#xff0c;需要源代码。但实际程序是部署在线上或者程序的源代码目录变了&#xff0c;则pprof从默认路径找不到代码&#xff0c;无法显示是哪一行的问题。 通过浏览器模式的source页面&#xff0c;有…

JUC总结3

CAS 简介 CAS的全称是“比较并交换”&#xff0c;是一种无锁的原子操作&#xff0c;其体现了乐观所的思想&#xff0c;在无锁的情况下保证线程操作共享数据的原子性。 CAS一共有3个值&#xff1a; 1、V&#xff1a;要更新的值&#xff1b; 2、E&#xff1a;预期值&#xf…

RHCE (Linux进阶) Ubuntu 操作系统安装教程

一、在官网下载iso镜像文件 下载地址&#xff1a; https://cn.ubuntu.com/download/server/step1#downloads&#xff08;下载最新的Ubuntu 20.04 LTS服务器版本&#xff09; 二、VMware安装配置过程 基本安装过程 1、新建虚拟机 2、选择典型即可 3、设置下载好的Ubuntu对应路…

Exception异常机制详细讲解

目录 一、异常1.1 什么是异常1.2 异常机制的作用1.3 常见的异常2.3 异常的分类1. Error2. Exception① 运行时异常② 编译期异常总结&#xff1a; 二、异常的处理2.1 抛出异常3.1 抛出异常语法3.2 试图捕获异常3.3 捕获异常与抛出异常的区别1. 抛出异常2.捕获异常 三、finally四…

Spring Cloud:构建高可用分布式系统的利器

摘要&#xff1a;本文将介绍Spring Cloud&#xff0c;一个基于Spring Boot的开源微服务架构工具集。我们将探讨Spring Cloud的核心组件、特性以及如何使用Spring Cloud构建高可用、分布式系统。通过本文&#xff0c;读者将了解到Spring Cloud在实现微服务架构中的应用和优势。 …

【Springcloud微服务】MybatisPlus下篇

&#x1f525; 本文由 程序喵正在路上 原创&#xff0c;CSDN首发&#xff01; &#x1f496; 系列专栏&#xff1a;Springcloud微服务 &#x1f320; 首发时间&#xff1a;2024年6月4日 &#x1f98b; 欢迎关注&#x1f5b1;点赞&#x1f44d;收藏&#x1f31f;留言&#x1f43…