当前位置: 首页 > news >正文

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

相关文章:

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

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

10万字智慧政务大数据平台项目建设方案222页[Word]

导读:原文《10万字智慧政务大数据平台项目建设方案222页[Word]》(获取来源见文尾),本文精选其中精华及架构部分,逻辑清晰、内容完整,为快速形成售前方案提供参考。 1.1 项目建设目标 推进市一级政府搭建数字政府建设的规划要求,结合市一级政府“互联网+政务服务”建设…...

Python-主线程控制子线程-4

需求:在Python-主线程控制子线程-3的基础上,新增使用UDP接收指令功能,代替从键盘输入指令 # 修改后的程序,主线程可以获取子线程的结果 import threading import time import queue import tracebackfrom loguru import logger i…...

设计模式二十二:策略模式(Strategy Pattern)

定义一系列算法,将每个算法封装成独立的对象,并使这些对象可互相替换。这使得在运行时可以动态地选择算法,而不必改变使用算法的客户端代码。策略模式的主要目标是将算法的定义与使用分离,使得客户端可以根据需要灵活地选择和切换…...

【c语言】结构体内存对齐,位段,枚举,联合

之前学完结构体,有没有对结构体的大小会很疑惑呢??其实结构体在内存中存储时会存在内存对齐,捎带讲讲位段,枚举,和联合,跟着小张一起学习吧 结构体内存对齐 结构体的对齐规则: 第一个成员在与结…...

干货丨软件测试行业迎来新时代,AI将成为主流技术?

随着科技日新月异的发展,人工智能正逐渐渗透到我们生活的各方各面,从智能语音助手到自动驾驶汽车、从智能家居到人脸识别技术,AI正以其卓越的智能和学习能力引领着新时代的发展方向。 在这个快速演进的时代中,软件测试领域也受到了…...

MacOS goland go1.21 debug问题

安装dlv brew install dlv 安装之后在终端会显示所在目录 类似/usr/local/Cellar/delve/1.21.0/bin 配置goland 在文件系统中找到goland 右击选择show package contents -> Contents -> plugins -> go 尝试替换 其中对应系统 的 dlv 结果还是不行 然后打开应用gol…...

python 笔记(1)——基础和常用部分

目录 1、print 输出不换行 2、格式化输出字符串 3、浮点数的处理 4、进制转换和ASCII与字符间的转换 5、随机数 6、字符串截取和内置方法 6-1)字符串截取 6-2)字符串内置方法 7、元组、列表,及其遍历方式 7-1)列表常用内…...

kafka架构和原理详解

Apache Kafka 是一个分布式流数据平台,用于高吞吐量、持久性、可扩展的发布和订阅消息。它具有高度的可靠性,被广泛用于构建实时数据流处理、日志收集和数据管道等应用。 基本架构 1. 主题(Topic): 主题是消息的逻辑分类生产者将消息发布到特定的主题中,而消费者可以订阅…...

wsl Ubuntu中非root的普通用户怎么直接执行docker命令

docker需要root权限,如果希望非root用户直接使用docker命令,而不是使用sudo,可以选择将该用户加入到docker用户组。 sudo groupadd docker:添加到groupadd用户组(已经有docker用户组,所以可以不用再新增do…...

Web开发模式、API接口、restful规范、序列化和反序列化、drf安装和快速使用、路由转换器(复习)

一 Web开发模式 1. 前后端混合开发模式 前后端混合开发模式是一种开发方式,将前端和后端的开发工作结合在一起,以加快项目的开发速度和 提高协作效率。这种模式通常用于快速原型开发、小型项目或敏捷开发中。在前后端混合开发模式中,前端和…...

<AMBA总线篇> AXI总线协议介绍

目录 01 AXI协议简介 AXI协议特性 AXI协议传输特性 02 AXI协议架构 AXI协议架构 write transaction(写传输) read tramsaction(读传输) Interface and interconnect 典型的AXI系统拓扑 03 文章总结 大家好,这里是程序员杰克。一名平平无奇的嵌入式软件工程…...

一个简单的Python网络爬虫教程

网络爬虫是一种自动获取网页内容的程序,它可以从互联网上的网站中提取数据并进行分析。本教程将带您逐步了解如何使用 Python 构建一个简单的网络爬虫。 注意:在进行网络爬虫时,请遵守网站的使用条款和法律法规,避免对目标网站造…...

YARN资源管理框架论述

一、简介 为了实现一个Hadoop集群的集群共享、可伸缩性和可靠性,并消除早期MapReduce框架中的JobTracker性能瓶颈,开源社区引入了统一的资源管理框架YARN。 YARN是将JobTracker的两个主要功能(资源管理和作业调度/监控)分离&…...

Unity查找资源依赖关系

这个方法主要是发现资源乱用的情况,对应的逻辑可能要改一个才能用到自己的项目里面 [MenuItem("Tools/Prefab/查找选中资源依赖关系", false, 0)] public static void FindDependencies() { foreach (var guid in Selection.assetGUIDs…...

【操作系统】聊聊局部性原理是如何提升性能的

对于目前数据主导的系统,大多数都是Java/Go 技术栈MySQL,但是随着时间的推移,数据库数据的数据量过多,并且会频繁访问热点数据,为了提升系统的性能,一般都是加入缓存中间件、Redis。 局部性原理 我们知道…...

多线程应用——单例模式

单例模式 文章目录 单例模式一.什么是单例模式二.如何实现1.口头实现2.利用语法特性 三.实现方式(饿汉式懒汉式)1.饿汉式2.懒汉式3.线程安全的单例模式4.双重检查锁5.禁止指令重排序 一.什么是单例模式 单例模式(Singleton Pattern&#xff…...

几种在JavaScript中创建对象的方式!

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 字面量方式⭐ 构造函数方式⭐ Object.create()方式⭐ 工厂函数方式⭐ ES6类方式⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门…...

java项目mysql转postgresql

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

SpringBoot Mybatis 多数据源 MySQL+Oracle

一、背景 在SpringBoot Mybatis 项目中&#xff0c;需要连接 多个数据源&#xff0c;连接多个数据库&#xff0c;需要连接一个MySQL数据库和一个Oracle数据库 二、依赖 pom.xml <dependencies><dependency><groupId>org.springframework.boot</groupId&…...

Nunchaku-flux-1-dev部署避坑指南:解决403 Forbidden错误

Nunchaku-flux-1-dev部署避坑指南&#xff1a;解决403 Forbidden错误 部署Nunchaku-flux-1-dev时遇到403 Forbidden错误&#xff1f;别急&#xff0c;这篇文章手把手带你排查和解决这个常见但棘手的问题。 最近在部署Nunchaku-flux-1-dev时&#xff0c;不少小伙伴反映遇到了403…...

5分钟极速部署!Billion Mail容器化方案助力邮件营销升级 [特殊字符]

5分钟极速部署&#xff01;Billion Mail容器化方案助力邮件营销升级 &#x1f680; 【免费下载链接】BillionMail Billion Mail is a future open-source email marketing platform designed to help businesses and individuals manage their email campaigns with ease 项目…...

SEO_2024年最新SEO趋势分析与实战策略解读

<h1 id"2024seo">2024年最新SEO趋势分析与实战策略解读</h1> <p>在数字营销的快速发展中&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;作为提升网站流量的重要手段&#xff0c;一直备受关注。2024年&#xff0c;SEO领域再度发生了一些重要…...

拆解 OA 系统:从需求梳理到核心执行,新手一看就会

你是不是觉得公司的OA系统特别难用&#xff1f;报销要填八百个字段&#xff0c;不知道哪个是必填&#xff1b;请假批完还得自己跑去找下一个人&#xff1b;找一个去年的合同&#xff0c;得翻十几层文件夹。更气人的是&#xff0c;提了意见根本没人管&#xff0c;说系统改不了。…...

AEB紧急制动系统与carsim及simulink联仿技术:卓越效果与性能的完美结合

紧急制动系统AEB&#xff0c;carsim与simulink联仿&#xff0c;效果极好 &#xff0c;踩下刹车的那一刻&#xff0c;方向盘突然传来剧烈震动。盯着屏幕里那辆虚拟的前车尾灯&#xff0c;我手心全是汗——这已经是今天第三次测试紧急制动了。Carsim里那台SUV正以60km/h的速度冲向…...

UE4SS终极指南:解锁虚幻引擎4/5游戏Mod开发新境界

UE4SS终极指南&#xff1a;解锁虚幻引擎4/5游戏Mod开发新境界 【免费下载链接】RE-UE4SS Injectable LUA scripting system, SDK generator, live property editor and other dumping utilities for UE4/5 games 项目地址: https://gitcode.com/gh_mirrors/re/RE-UE4SS …...

PyTorch 2.8镜像部署教程:适配550.90.07驱动的GPU监控与显存优化技巧

PyTorch 2.8镜像部署教程&#xff1a;适配550.90.07驱动的GPU监控与显存优化技巧 1. 镜像概述与环境准备 PyTorch 2.8深度学习镜像专为RTX 4090D 24GB显卡和CUDA 12.4环境深度优化&#xff0c;预装了完整的深度学习工具链。这个镜像已经过严格测试&#xff0c;确保在550.90.0…...

如何将Uvicorn部署到Azure Functions Premium Plan:完整指南

如何将Uvicorn部署到Azure Functions Premium Plan&#xff1a;完整指南 【免费下载链接】uvicorn An ASGI web server, for Python. &#x1f984; 项目地址: https://gitcode.com/GitHub_Trending/uv/uvicorn Uvicorn是Python生态中备受推崇的ASGI Web服务器&#xff…...

SVG-Edit:开源矢量编辑在浏览器工具中的创新实践

SVG-Edit&#xff1a;开源矢量编辑在浏览器工具中的创新实践 【免费下载链接】svgedit Powerful SVG-Editor for your browser 项目地址: https://gitcode.com/gh_mirrors/sv/svgedit SVG-Edit是一款基于浏览器环境的开源矢量图形编辑工具&#xff0c;提供在线SVG编辑能…...

EdB Prepare Carefully:定制你的RimWorld完美开局体验

EdB Prepare Carefully&#xff1a;定制你的RimWorld完美开局体验 【免费下载链接】EdBPrepareCarefully EdB Prepare Carefully, a RimWorld mod 项目地址: https://gitcode.com/gh_mirrors/ed/EdBPrepareCarefully 是否厌倦了RimWorld随机生成的殖民者团队带来的不确定…...