【计算机组成原理】一文快速入门,很适合JAVA后端看

作者简介:

CSDN内容合伙人、CSDN新星计划导师、JAVA领域优质创作者、阿里云专家博主,计算机科班出身、多年IT从业经验、精通计算机核心理论、Java SE、Java EE、数据库、中间件、分布式技术,参加过国产中间件的核心研发,对后端有自己独到的见解。

目录

1.概述

2.计算机由哪些部分组成

3.计算机各部分之间如何通信

4.数据如何存储

5.计算机如何与外界进行通信


1.概述

在实际的JAVA后端开发中,我们会经常碰见一些性能问题,这些性能问题很多其实都是因为现代计算机的基础架构自身存在着绕不过去的短板,而很多性能优化的方法其实就是围绕着如何补这个短板而展开的。

例如因为读数据库(读磁盘)很慢,而产生的redis之类的缓存技术,又例如IO很慢,JAVA从BIO从而升级了NIO,在其中提出了零拷贝的解法。

了解计算机的基础架构,能让我们在看待后端技术时,拥有更高的视角,会发现其实搞来搞去归根结底就是为了补全那么几个地方的缺陷,使得纷繁复杂且抽象的知识很快就能归类起来,而且更加容易类推,使得学习无往不利。

博主之前写过一个系列的《计算机组成原理》,是专门针对后端方向来写的。本文可以理解为是该系列的清单。本文将依次讲述:

  • 计算机由哪些部分组成
  • 各部分之间如何通信
  • 数据如何存储
  • 计算机如何与外界进行通信

注:本文的所有图片均来自博主以前的文章,那时候的ID还不是现在这个,均属自产自销。

2.计算机由哪些部分组成

文章链接:

计算机组成原理(1)概论_pc机内存储器由半导体存储器组成,可分为 ddr3和()两大类。__BugMan的博客-CSDN博客

我们现在使用的计算机的设计与实现,均遵循1946年美籍匈牙利科学家冯·诺伊曼提出的“冯诺依曼体系”,该体系简单总结起来即为,计算机有五大部分组成:内部有运算器、控制器、存储器;外部有输入、输出设备。

  • 内部
    • 运算器,ALU(算术逻辑单元),执行算术逻辑运算以及位移循环等操作。常说的计算机的位数,也就是运算器的一个数据单元的宽度,8位、16位、32位、64位。
    • 控制器,CU,产生控制命令,控制全机。
    • 存储器,,用二进制的方式存储数据和程序。
  • 外部
    • 输入设备,输入信息
    • 输出设备,输出信息

3.计算机各部分之间如何通信

文章链接:

计算机组成原理(2)总线_单总线和双总线的区别__BugMan的博客-CSDN博客

计算机的五大组件我们已经知道了,但是五大组件都是各自独立的,要让他们携手起来一起工作,还需要一样东西将他们串联起来,这样东西就是——总线。

总线系统是计算机内部各个组件之间进行数据传输和通信的物理连接和控制机制。总线可以看作是一组并行的电子线路,用于传递指令、数据和控制信号。总线系统在计算机的内部连接各种硬件组件,如中央处理器(CPU)、内存、输入输出设备等,实现它们之间的协调工作。

总线一共有三种:

  • 数据总线

    传输数据信息

  • 地址总线

    传输数据总线上传输的数据在内存中的地址

  • 控制总线

    传输控制信号,如中断信号、复位信号、就绪信号等。

加上总线后,整个计算机的架构应该长这样:

4.数据如何存储

文章链接:

计算机组成原理(3)存储器_计组数据总线等于储存容量__BugMan的博客-CSDN博客

计算机除了需要CPU来完成运算和控制功能以外,还需要有一个存储体系来存储数据。现代计算机的存储结构采用的一个多级结构:

数据从最底层的硬盘上一层层的加载进上层,最终给CPU,之所以将存储体系构架成这样,是因为构建一个合理的存储体系会涉及以下问题:

  1. 主存速度够快吗?
  2. 主存容量够大吗?价格够低吗?

1.主存速度够快吗?

按照摩尔定律,计算机的CPU上晶体管每18个月数量会翻一倍,因此CPU的读写速度现阶段要远远高于主存的读写速度。

CPU是一个食客,主存是个厨子,食客吃菜的速度肯定比厨子做菜的速度快的多,这时候食客等待的这段时间就被浪费掉,对应于CPU来说就是未被充分利用起来,大段时间处于空转、等待。

解决办法就是做成自助餐,放在餐台上,让餐台这个设施去平衡食客和厨子之间速率的不匹配。至于食客到底想吃什么?会有一个算法去自动计算,计算出食客可能想吃的是什么。

这个餐台就是位于CPU和主存之间的高速缓冲存储器(cache)

2.主存容量够大吗?价格够低吗?

存储设备的价格和读写速度是成正比的,基于成本考虑计算机中的存储设备不可能都用主存级读写速度的。因此更为合理的架构是——主存+辅存,主存就是内存条,辅存就是硬盘,主存读写速度较快,价格高,容量小,存放计算机当前需要的热数据,辅存中读写速度较慢,价格低,容量大,存放冷数据。手机的诸如8+128,4+64就是指的内存和主存。

5.计算机如何与外界进行通信

链接:

计算机组成原理(4)IO_计算机组成原理io设备__BugMan的博客-CSDN博客

计算机的输入/输出(I/O,Input/Output)是指计算机与外部设备之间的数据交换过程。在JAVA后端,IO优化是性能优化上很重要的一点,其实JAVA的IO模型就是对计算机的IO模型进行的二次封装,搞明白计算机的IO模型,对编程语言的IO将会一目了然。

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

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

相关文章

软件工程(十三) 设计模式之结构型设计模式(一)

前面我们记录了创建型设计模式,知道了通过各种模式去创建和管理我们的对象。但是除了对象的创建,我们还有一些结构型的模式。 1、适配器模式(Adapter) 简要说明 将一个类的接口转换为用户希望得到的另一个接口。它使原本不相同的接口得以协同工作。 速记关键字 转换接…

C语言练习题解析:挑战与突破,开启编程新篇章!(2)

💓博客主页:江池俊的博客⏩收录专栏:C语言刷题专栏👉专栏推荐:✅C语言初阶之路 ✅C语言进阶之路💻代码仓库:江池俊的代码仓库🎉欢迎大家点赞👍评论📝收藏⭐ 文…

nowcoder NC236题 最大差值

目录 题目描述: 示例1 示例2 题干解析: 暴力求解: 代码展示: 优化: 代码展示: 题目跳转https://www.nowcoder.com/practice/a01abbdc52ba4d5f8777fb5dae91b204?tpId128&tqId33768&ru/exa…

table,设置 数据相同时, 合并列

<el-table :data"tableData" :span-method"objectSpanMethod" border style"width: 100%" show-summary><el-table-column type"index" label"序号" width"100" /><el-table-column prop"dat…

系统架构设计高级技能 · 云原生架构设计理论与实践

系列文章目录 系统架构设计高级技能 软件架构概念、架构风格、ABSD、架构复用、DSSA&#xff08;一&#xff09;【系统架构设计师】 系统架构设计高级技能 系统质量属性与架构评估&#xff08;二&#xff09;【系统架构设计师】 系统架构设计高级技能 软件可靠性分析与设计…

前端面试基础面试题——1

总结了一些基础的面试题 如果大家有兴趣的话可以关注留意一下 今后会不断更新一些面试题 1.JavaScript 中的 AJAX 原理及应用。 2.什么是闭包?请简单描述一下闭包的特点与应用场景。 3.请简述 HTTPS 与 HTTP 的区别&#xff0c;如何保证 HTTPS 的安全性? 4.请简述…

【软考】系统集成项目管理工程师(三)信息系统集成专业技术知识①【16分】

一、系统集成的特点 官方解释&#xff1a; 1、信息系统建设的内容主要包括设备采购、系统集成、软件开发和运维服务等&#xff1b; 2、信息系统集成是指将计算机软件、硬件、网络通信、信息安全等技术和产品集成为能够满足用户特定需求的信息系统&#xff1b;显著特点如下&am…

算法通关村第9关【白银】| 二分查找与搜索树高频问题

基于二分查找的拓展问题 1.山脉数组的峰顶索引 思路&#xff1a;二分查找 山峰有三种状态&#xff1a;需要注意数组边界 1.顶峰&#xff1a;arr[mid]>arr[mid1]&&arr[mid]>arr[mid-1] 2.上坡&#xff1a;arr[mid]<arr[mid1] 3.下坡&#xff1a;arr[mid]…

常见的移动端布局

流式布局&#xff08;百分比布局&#xff09; 使用百分比、相对单位&#xff08;如 em、rem&#xff09;等来设置元素的宽度&#xff0c;使页面元素根据视口大小的变化进行调整。这种方法可以实现基本的自适应效果&#xff0c;但可能在不同设备上显示不一致。 <!DOCTYPE ht…

java项目mysql转postgresql

特殊函数 &#xff1a; mysql&#xff1a; find_in_set(?, ancestors) postgresql&#xff1a; ? ANY (string_to_array(ancestors,,)) mysql&#xff1a; date_format(t1.oper_time, %Y-%m-%d) postgresql&#xff1a; rksj::date to_char(inDate,YYYY-MM-DD) mysql&am…

Haproxy+Keepalive 整合rabbitmq实现高可用负载均衡

Haproxy 实现负载均衡 HAProxy 提供高可用性、负载均衡及基于 TCPHTTP 应用的代理&#xff0c;支持虚拟主机&#xff0c;它是免费、快速并且可靠的一种解决方案&#xff0c;包括 Twitter,Reddit,StackOverflow,GitHub 在内的多家知名互联网公司在使用。HAProxy 实现了一种…