【计算机组成原理】一文快速入门,很适合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将会一目了然。

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

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

相关文章

怎么把pdf图片转换成jpg?pdf转jpg的方法分享

pdf文件在我们的日常工作中非常的常见,因为这种文件安全性高,不会轻易的乱码,所以受到了我们的欢迎,但是它不容易被编辑,而且占用内存会比较大,所以我们需要将pdf文件进行转换,接下来小编会为大…

【网络】多路转接——poll | epoll

🐱作者:一只大喵咪1201 🐱专栏:《网络》 🔥格言:你只管努力,剩下的交给时间! 书接上文五种IO模型 | select。 poll | epoll 🍧poll🧁认识接口🧁简…

WebAgent-基于大型语言模型的代理程序

大型语言模型(LLM)可以解决多种自然语言任务,例如算术、常识、逻辑推理、问答、文本生成、交互式决策任务。最近,LLM在自主网络导航方面也取得了巨大成功,代理程序助HTML理解和多步推理的能力,通过控制计算…

【Linux】centos8安装cmake3.27.4

第一步,去官网下安装包,一定不要下错了 下好了之后,用ftp软件传到云服务器或者虚拟机上,我用的是centos8系统,安装之前先准备好这些依赖项 yum install -y gcc gcc-c make automake yum install -y openssl openssl-…

git rebase和merge区别

一、概述 merge和rebase 标题上的两个命令:merge和rebase都是用来合并分支的。 这里不解释rebase命令,以及两个命令的原理,详细解释参考这里。 下面的内容主要说的是两者在实际操作中的区别。 1.1 什么是分支 分支就是便于多人在同一项目…

[USACO07DEC] Sightseeing Cows G(分数规划+负权回路判定)

题面 [USACO07DEC] Sightseeing Cows G - 洛谷 题目大意: 给出一张n点m边的带点权带边权的有向图 求一个回路使得路上点权和除以边权和最大(最优比率回路) 题解 首先一定仔细读题,是回路不是路径 由于回路上所有点权只能获取…

百万级单细胞多组学数据集成

写在前面 这是一篇粉丝来稿,文章题目为“Multi-omics integration in the age of million single-cell data”,于2021年发表于《Nature Reviews Nephrology》上,影响因子为42.439。由于单细胞目前快速的买入了百万级、多组学的时代&#xff…

upload-labs文件上传漏洞靶场练习

任意文件上传靶场upload-labs下载地址 文章目录 Pass-01- 前端JS校验绕过Pass-02- 文件类型MIME类型绕过Pass-03- 文件名后缀黑名单绕过Pass-04- .htaccess绕过Pass-05- 文件名后缀大写绕过Pass-06- 文件名后缀加空格绕过Pass-07- 文件名后缀加点绕过Pass-08-文件名后缀 ::$DAT…

Qt中XML文件创建及解析

一 环境部署 QT的配置文件中添加xml选项&#xff1a; 二 写入xml文件 头文件&#xff1a;#include <QXmlStreamWriter> bool MyXML::writeToXMLFile() {QString currentTime QDateTime::currentDateTime().toString("yyyyMMddhhmmss");QString fileName &…

【拾枝杂谈】从游戏开发的角度来谈谈原神4.0更新

君兮_的个人主页 勤时当勉励 岁月不待人 C/C 游戏开发 Hello,米娜桑们&#xff0c;这里是君兮_&#xff0c;结合最近的学习内容和以后自己的目标&#xff0c;今天又开了杂谈这个新坑&#xff0c;分享一下我在学习游戏开发的成长和自己的游戏理解&#xff0c;当然现在还是一枚…

C++------map和set的使用

文章目录 关联式容器键值对树型结构的关联式容器set的介绍map的介绍 关联式容器 什么是关联式容器&#xff1f;它与序列式容器有什么区别&#xff1f; 关联式容器也是用来存储数据的&#xff0c;与序列式容器不同的是&#xff0c;其里面存储的是<key&#xff0c;value>结…

UG\NX二次开发BlockUI 进入NX的BlockUI编辑界面

文章作者:里海 来源网站:王牌飞行员_里海_里海NX二次开发3000例,里海BlockUI专栏,C\C++-CSDN博客 简介: 要使用BlockUI,需要先进入NX的BlockUI编辑界面。在低版本中,可以在Toolbar工具条中进入开始→所有应用模块→块UI样式编辑器;在高版本中,可以在Ribbon工具栏…

【数据结构】二叉数的存储与基本操作的实现

文章目录 &#x1f340;二叉树的存储&#x1f333;二叉树的基本操作&#x1f431;‍&#x1f464;二叉树的创建&#x1f431;‍&#x1f453;二叉树的遍历&#x1f3a1;前中后序遍历&#x1f4cc;前序遍历&#x1f4cc;中序遍历&#x1f4cc;后续遍历 &#x1f6eb;层序遍历&am…

Typora mac版本安装

提示&#xff1a;文章介绍&#xff0c;Typora在Mac系统中免费安装使用 文章目录 一、官网下载二、安装 一、官网下载 官网地址&#xff1a;https://www.typoraio.cn/ 二、安装 安装好后按 command 空格键&#xff0c;找到 Typora的安装路径 /Applications/Typora.app/Con…

计网(第四章)(网络层)(六)

目录 一、路由选择协议&#xff08;动态路由自动获取路由信息&#xff09;概述&#xff1a; 二、因特网采用的路由协议 主要特点&#xff1a; 1.自适应 2.分布式 3.分层次 因特网采用分层次的路由选择协议&#xff1a; 三、常见的路由选择协议 一、路由选择协议&#xff…

遇到 Binder这些面试题,你会怎么答?

作为开发人员&#xff0c;每个人都有每个人擅长领域&#xff0c;自然也有自己不擅长的领域&#xff0c;很难成为完美的一个全栈开发。在面试中最怕遇见的一件事是面试官专挑你不擅长的领域进行提问&#xff0c;目的就是看你遇到问题的应变能力。 接下给大家分享一个面试中容易被…

使用 Netty 实现群聊功能的步骤和注意事项

文章目录 前言声明功能说明实现步骤WebSocket 服务启动Channel 初始化HTTP 请求处理HTTP 页面内容WebSocket 请求处理 效果展示总结 前言 通过之前的文章介绍&#xff0c;我们可以深刻认识到Netty在网络编程领域的卓越表现和强大实力。这篇文章将介绍如何利用 Netty 框架开发一…

报错sql_mode=only_full_group_by

首发博客地址 https://blog.zysicyj.top/ 报错内容 ### The error may exist in file[D:\code\cppCode20221025\leader-system\target\classes\mapper\system\TJsonDataMapper.xml] ### The error may involve defaultParameterMap ### The error occurred while…

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

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