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

【Java EE初阶】计算机是如何⼯作的

计算机是如何⼯作的

  • 计算机发展史
  • 冯诺依曼体系(Von Neumann Architecture)
  • CPU
    • 指令(Instruction)
    • CPU 是如何执行指令的(重点)
  • 操作系统(Operating System)
    • 进程(process)
  • 进程 PCB 中的关键属性
    • 1.PID (进程 id)
    • 2.内存指针
    • 3. 文件描述符表
  • PCB 中支持进程调度的几个属性
    • 1.状态
    • 2.优先级
    • 3.上下文
    • 4. 记账信息
  • 小结

JavaEE==网站开发
学习⽬标
这阶段的学习中,我们会从软件⼯程师的⻆度解释计算机是如何⼯作的,我们的主要⽬标既不是期待⼤家可以造出⾃⼰的计算机,也不是介绍如何编程,⽽是希望让⼤家了解计算机的核⼼⼯作机制后,打破计算机的神秘感,并且有利于理解我们平时编程时的⼀些⾏为、动作的历史渊源。
⼤家可以配合 Crash Course Computer Science 视频做更详尽的学习和了解。

计算机是啥?
在这里插入图片描述

一个计算机(电脑)分成几个部分??
在这里插入图片描述

计算机发展史

计算的需求在⼈类的历史中是⼴泛存在的,发展⼤体经历了从⼀般计算⼯具到机械计算机到⽬前的电⼦计算机的发展历程。
在这里插入图片描述
⼈类对计算的需求,驱动我们不断的发明、改善计算机。⽬前这个时代是“电⼦计算机”的时代,发展的潮流是:更快速、更稳定、更微型。计算机的以后将如何发展,期待⼤家的努⼒。
推荐书籍: 《计算机简史》
Java发展史
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Java 在后面又抓住了两波机会.

  1. 后端开发
    在这里插入图片描述
  2. 移动端开发
    在这里插入图片描述
    这两波机会,使 Java 始终在人们的视线中,始终是最流行的编程语言之一

美好的时光,短暂的.新的挑战又会出现

  1. 后端
    后端这里,随着网站规模变大,越来越复杂,PHP 这种网站开发的形式, 逐渐难以胜任了
    JSP 也同样收到影响~(Spring 也有了)
  2. 移动端
    2008 年,乔布斯发布苹果手机~标志着移动互联网时代开启了.手机功能机 =>智能机.
    在这里插入图片描述
    在这里插入图片描述
    这双重加持,就在 2010 之后, 连续好几年 Java 都霸榜 编程语言排行榜第一把交椅~
    (从这开始,谈到入行 程序猿,很多人都会推荐 java)
    Java 就是最流行的编程语言,没有之一了

Java 看起来稳坐第一,实际上也面临很多挑战~
2023 Java虽然还是最主流的编程语言(不是第一,Python 和 C 偶尔会反超)

  1. 后端
    在这里插入图片描述
    字节(Go+Python)
    还有B站 知乎 腾讯/腾讯云……都在使用Go
  2. 移动端
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
上面的东西面试都用得到 其实面试呢不仅仅是一问一答 而且要学会去和面试官聊天
聊什么呢 上面的这些东西都是可以和面试官聊的东西

冯诺依曼体系(Von Neumann Architecture)

现代的计算机, ⼤多遵守 冯诺依曼体系结构在这里插入图片描述
• CPU 中央处理器: 进⾏算术运算和逻辑判断.
• 存储器: 分为外存和内存, ⽤于存储数据(使⽤⼆进制⽅式存储)
• 输⼊设备: ⽤⼾给计算机发号施令的设备.
• 输出设备: 计算机个⽤⼾汇报结果的设备.
在这里插入图片描述
针对存储空间
硬盘 > 内存 >> CPU
针对数据访问速度
CPU >> 内存 > 硬盘

认识计算机的祖师爷 – 冯诺依曼
冯·诺依曼(John von Neumann,1903年12⽉28⽇-1957年2⽉8⽇), 美籍匈⽛利数学家、计算机科学家、物理学家,是20世纪最重要的数学家之⼀。冯·诺依曼是布达佩斯⼤学数学博⼠,在现代计算机博弈论核武器⽣化武器等领域内的科学全才之⼀,被后⼈称为“现代计算机之⽗”、“博弈论之⽗”.在这里插入图片描述

CPU

在这里插入图片描述
CPU是怎么构成的
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
对于 CPU 重点关注两个参数:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
咱们后面进行并发编程的时候,cpu 的核心数,就是一个非常重要的参考依据~
(软件很多时候都是跟着硬件走的,硬件有啥特性,软件,把这些特性充分的利用起来,扬长避短)

英特尔最近几年还搞了大小核 从 12 代 intel cpu 开始有大小核
大核一个顶俩,小核一个还是顶一个(功耗更低)
amd 的CPU都是大核.
哪种更好呢?
各有各的好。大小核就是更适合笔记本,能剩电. 但是要追求极致算力,就得是全大核的好
在这里插入图片描述

指令(Instruction)

指令就可以认为是 CPU 被设计的时候,给程序猿提供的一些"编程接口" => 近似理解成 cpu 提供给程序猿的 API
不同的 cpu, 提供哪些指令, 是不一样的.
在这里插入图片描述
指令本⾝也是⼀个数字,⽤⼆进制形式保存在内存的某个区域中。
在这里插入图片描述

CPU 是如何执行指令的(重点)

所谓的指令,都是要先加载到内存中,然后才能被 cpu 读取,并执行
在这里插入图片描述
通过一个例子~ 搞一个简化版本的机器语言
简单模拟一下CPU执行指令的过程
在这里插入图片描述
在这里插入图片描述

虽然咱们可以不用理解 cpu 具体的构造,但是需要理解,cpu 是怎么执行代码的~
在这里插入图片描述
默认情况下,cpu 执行内存中的指令是"顺序执行"的~
当然,也可能会遇到一些 跳转 类的指令(代码中的 if, while, for, throw,函数调用……)
当前指令表中没这些,,默认还是按照顺序来执行~
在这里插入图片描述
当前的计算机, 在 cpu 执行指令的时候,要经历从内存读取数据这样的操作的!!!
这个事情其实放在今天,非常不科学了
在这里插入图片描述
cpu 就设计了很多的机制,来解决上述问题~
在这里插入图片描述
在这里插入图片描述
接下来在这里插入图片描述
然后接下来到地址4了 数据显示00000000,结束!
其实上述就是CPU是如何计算4+14的

具体步骤

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在上面的过程中,就有以下几个结论:
在这里插入图片描述
在这里插入图片描述
上述内容,是计算机执行程序的基本过程 (基本盘)
对于理解计算机非常有意义的~~(面试一般不会直接考这个)
虽然,作为一个 java 程序猿,日常开发中不太会直接和 cpu 打交道,(JVM 都封装好了) 不太需要了解硬件的细节
但是实际上有些技术场景,还是和上述内容直接相关的.多少还是得知道一点~
在这里插入图片描述
在这里插入图片描述

操作系统(Operating System)

操作系统是⼀组做计算机资源管理的软件的统称。⽬前常⻅的操作系统有:Windows系列、Unix系列、Linux系列、OSX系列、Android系列、iOS系列、鸿蒙等。
在这里插入图片描述
软件工程的本质,就是针对"复杂程度"的管理。 人脑,能够处理的复杂程度是有限的~
如何管理"复杂程度"核心就是"抽象封装。 同一时刻,只关注其中的一个部分~来降低思考的成本
这也是操作系统所做的事
在这里插入图片描述
在这里插入图片描述
操作系统,本身是一个很大的话题,在此处就不展开其他的.
操作系统里的知识,很多面试中不太涉及到,只需要掌握一些和工作密切相关的即可. 网络和数据结构是面试中更高频的话题
此处重点讨论操作系统中,非常核心的(和咱们 Java 程序猿息息相关的)
进程~

进程(process)

重要结论:进程是操作系统进行资源分配的基本单位(重点)
在这里插入图片描述
在这里插入图片描述
进程在系统中是如何管理的??
操作系统的进程管理
1.先描述
在这里插入图片描述
2.再组织
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

进程 PCB 中的关键属性

PCB 这个结构体,是一个非常庞大的结构体~ (有上百个属性)

1.PID (进程 id)

在这里插入图片描述

2.内存指针

在这里插入图片描述
在这里插入图片描述

3. 文件描述符表

在这里插入图片描述

PCB 中支持进程调度的几个属性

1.状态

在这里插入图片描述

2.优先级

在这里插入图片描述
在这里插入图片描述

3.上下文

在这里插入图片描述

4. 记账信息

PCB 会统计该进程在 CPU 过去一共执行了多久/多少条指令~ 针对每个进程,统计占据了多少 cpu 时间,可以用来识别出,某个进程是不是太久没有在 cpu 上执行了~
会根据这个统计结果来在下一个轮次进行调整,确保每个进程都不至于出现完全捞不着CPU 的情况的~ 如果发现某个进程,好久没有吃到 cpu 资源了,就会给这个进程倾斜一些资源

小结

在这里插入图片描述
在这里插入图片描述

相关文章:

【Java EE初阶】计算机是如何⼯作的

计算机是如何⼯作的 计算机发展史冯诺依曼体系(Von Neumann Architecture)CPU指令(Instruction)CPU 是如何执行指令的(重点) 操作系统(Operating System)进程(process) 进程 PCB 中的…...

RAG理论基础总结

目录 概念 流程 文档收集和切割 读取文档 转换文档 写入文档 向量转换和存储 搜索请求构建 向量存储工作原理 向量数据库 文档过滤和检索 检索前 检索 检索后 查询增强和关联 QuestionAnswerAdvisor查询增强 高级RAG架构 自纠错 RAG(C-RAG&#xf…...

列表推导式(Python)

[表达式 for 变量 in 列表] 注意:in后面不仅可以放列表,还可以放range ()可迭代对象 [表达式 for 变量 in 列表 if 条件]...

嵌入式RTC工作原理及应用场景

20ppm 是衡量 RTC(实时时钟)精度的关键指标,表示 每百万秒(约11.57天)的最大时间误差范围。以下是通俗易懂的解释: 1. ppm 的含义 ppm Parts Per Million(百万分之一) 1 ppm 1/1,…...

一天搞懂深度学习--李宏毅教程笔记

目录 1. Introduction of Deep Learning1.1. Neural Network - A Set of Function1.2. Learning Target - Define the goodness of a function1.3. Learn! - Pick the best functionLocal minimaBackpropagation 2. Tips for Training Deep Neural Network3. Variant of Neural…...

Go语言常见接口设计技巧-《Go语言实战指南》

在 Go 中,接口是连接代码组件的桥梁。合理设计接口可以大幅提升程序的可维护性、可扩展性和测试友好性。本章将分享 Go 开发中常见的接口设计技巧与最佳实践。 一、接口设计原则 1. 面向接口编程,而非面向实现编程 尽量使用接口类型作为函数参数或返回值…...

python打卡训练营打卡记录day43

复习日 作业: kaggle找到一个图像数据集,用cnn网络进行训练并且用grad-cam做可视化 进阶:并拆分成多个文件 数据集来源:Flowers Recognition 选择该数据集原因: 中等规模:4242张图片 - 训练快速但足够展示效…...

Camera相机人脸识别系列专题分析之十一:人脸特征检测FFD算法之低功耗libvega_face.so人脸属性(年龄,性别,肤色,微笑,种族等)检测流程详解

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:Camera相机人脸识别系列专题分析之十:人脸特征检测FFD算法之低功耗libvega_face.so人脸识别检测流程详解 这一篇我们开始讲: Camera相机人脸识别系列专题分析之十一:人脸特征检测FFD算法之低功耗lib…...

解决:输入SSH后,仍无法通过网址登录以及紧接着的新问题Permission denied(publickey,password).

现象: 管理员: Windows PowerShell输入SSH后,仍无法通过网址登录 例如输入你的ssh命令:ssh -CNg -L xxxx:127.0.0.1:xxxx rootaaaaaaaaa.com -p yyyyy 得到终端提示:ssh无法识别为 cmdlet、函数、脚本文件或可运行程序的名称。 解…...

【QT控件】QWidget 常用核心属性介绍 -- 万字详解

目录 一、控件概述 二、QWidget 核心属性 2.1 核心属性概览 2.2 enabled ​编辑 2.3 geometry 2.4 windowTitle 2.5 windowIcon 使用qrc文件管理资源 2.6 windowOpacity 2.7 cursor 2.8 font ​编辑 2.9 toolTip 2.10 focusPolicy 2.11 styleSheet QT专栏&…...

uniapp-商城-77-shop(8.2-商品列表,地址信息添加,级联选择器picker)

地址信息,在我们支付订单上有这样一个接口,就是物流方式,一个自提,我们就显示商家地址。一个是外送,就是用户自己填写的地址。 这里先说说用户的地址添加。需要使用到的一些方式方法,主要有关于地址选择器,就是uni-data-picker级联选择。 该文介绍了电商应用中地址信息处…...

HTTPS加密通信详解及在Spring Boot中的实现

HTTPS(Hyper Text Transfer Protocol Secure)是HTTP的安全版本,通过SSL/TLS协议为通讯提供加密、身份验证和数据完整性保护。 一、HTTPS核心原理 1.加密流程概述 客户端发起HTTPS请求(连接到服务器443端口)服务器返…...

如何让 Git 停止跟踪文件?停止后又如何恢复跟踪?

在使用 Git 管理代码时,有时我们希望某些文件不再被 Git 跟踪(比如本地配置文件、临时文件等),但保留这些文件在本地;过了一段时间,可能又需要恢复跟踪这些文件。本文将用通俗易懂的语言,教你如…...

【第16届蓝桥杯 | 软件赛】CB组省赛第二场

个人主页:Guiat 归属专栏:算法竞赛 文章目录 A. 密密摆放(5分填空题)B. 脉冲强度之和(5分填空题)C. 25 之和D. 旗帜E. 数列差分F. 树上寻宝G. 翻转硬币H. 破解信息 正文 总共8道题。 A. 密密摆放&#xff0…...

SQL进阶之旅 Day 10:执行计划解读与优化

【SQL进阶之旅 Day 10】执行计划解读与优化 开篇 今天是我们的"SQL进阶之旅"系列的第10天,我们将深入探讨SQL执行计划的解读与优化技巧。随着数据库规模的增长和业务复杂度的提升,理解SQL语句在数据库引擎中的执行过程变得至关重要。 执行计…...

AR/MR实时光照阴影开发教程

一、效果演示 1、PICO4 Ultra MR 发光的球 2、AR实时光照 二、实现原理 PICO4 Ultra MR开发时,通过空间网格能力扫描周围环境,然后将扫描到的环境网格材质替换为一个透明材质并停止扫描;基于Google ARCore XR Plugin和ARFoundation进行安卓手…...

Visual studio 中.sln/.vcxproj/.vcxproj.filters和.vcxproj.user文件的作用

在 Visual Studio (尤其是 C 项目) 中,.sln、.vcxproj、.vcxproj.filters 和 .vcxproj.user 文件各自承担着不同的关键角色。理解它们的作用对于项目管理和协作至关重要。 核心原则: .vcxproj 和 .sln 是项目/解决方案的核心定义文件,必须纳…...

【汽车电子入门】一文了解LIN总线

前言:LIN(Local Interconnect Network)总线,也就是局域互联网的意思,它的出现晚于CAN总线,于20世纪90年代末被摩托罗拉、宝马、奥迪、戴姆勒、大众以及沃尔沃等多家公司联合开发,其目的是提供一…...

JVM学习(七)--JVM性能监控

目录 一、JVM性能监控 1、JVM监控及诊断工具-命令行篇 2、JVM监控及诊断工具-GUI篇 3、JVM运行时参数 一、JVM性能监控 1、JVM监控及诊断工具-命令行篇 面试题: 1、你使用过Java虚拟机性能监控和故障处理工具吗? 2、怎么打出线程栈信息。 3、怎么获取 Jav…...

关于 java:5. Java IO 与文件操作

一、File 类(读取文件属性) 1.1 java.io.File 类概述 File 是 Java IO 中的核心类,用于表示文件或目录的路径名。 它是一个抽象路径名,可以表示实际存在或不存在的文件/文件夹。 File 类提供了创建、删除、重命名、判断属性、获…...

【笔记】为 Python 项目安装图像处理与科学计算依赖(MINGW64 环境)

📝 为 Python 项目安装图像处理与科学计算依赖(MINGW64 环境) 🎯 安装目的说明 本次安装是为了在 MSYS2 的 MINGW64 工具链环境中,搭建一个完整的 Python 图像处理和科学计算开发环境。 主要目的是支持以下类型的 Pyth…...

【笔记】MLA矩阵吸收分析

文章目录 一、张量运算的计算量1. FLOPs定义2. 张量计算顺序对计算量的影响 二、MLA第一次矩阵吸收的计算量分析1. 原始注意力计算2. MLA源代码中的吸收方式3. 提前吸收4. 比较分析4.1 比较顺序1和顺序24.2 比较顺序2和顺序3 三、MLA第二次矩阵吸收的计算量分析1. 原始输出计算…...

600+纯CSS加载动画一键获取指南

CSS-Loaders.com 完整使用指南:600纯CSS加载动画库 🎯 什么是 CSS-Loaders.com? CSS-Loaders.com 是一个专门提供纯CSS加载动画的资源网站,拥有超过600个精美的单元素加载器。这个网站的最大特色是所有动画都只需要一个HTML元素…...

开源的JT1078转GB28181服务器

JT1078转GB28181流程 项目地址: JT1078转GB28181的流媒体服务器: https://github.com/lkmio/lkm JT1078转GB28181的信令服务器: https://github.com/lkmio/gb-cms 1. 创建GB28181 UA 调用接口: http://localhost:9000/api/v1/jt/device/add 请求体如下&#xf…...

智能守护电网安全:探秘输电线路测温装置的科技力量

在现代电力网络的庞大版图中,输电线路如同一条条 “电力血管”,日夜不息地输送着能量。然而,随着电网负荷不断增加,长期暴露在户外的线路,其线夹与导线在电流热效应影响下,极易出现温度异常。每年因线路过热…...

Java垃圾回收算法及GC触发条件

一、引言 在Java编程语言的发展历程中,内存管理一直是其核心特性之一。与C/C等需要手动管理内存的语言不同,Java通过自动垃圾回收(Garbage Collection,简称GC)机制,极大地减轻了开发人员的负担&#xff0c…...

【Hot 100】118. 杨辉三角

目录 引言杨辉三角我的解题代码优化优化说明 🙋‍♂️ 作者:海码007📜 专栏:算法专栏💥 标题:【Hot 100】118. 杨辉三角❣️ 寄语:书到用时方恨少,事非经过不知难! 引言 …...

useMemo useCallback 自定义hook

useMemo & useCallback & 自定义hook useMemo 仅当依赖项发生变化的时候,才去重新计算;其他状态变化时则不去做不必要的计算。 useCallback 缓存函数。但是使用注意📢 ,useCallback没有特别明显的优化。 *合适的场景——父…...

ffmpeg 的视频格式转换 c# win10

1,下载ffmpeg ,并设置环境变量。 ffmpeghttps://www.gyan.dev/ffmpeg/builds/ 2.新建.net 9.0 winform using System; using System.Diagnostics; using System.Text; using System.Windows.Forms;namespace WinFormsApp11 {public partial class Fo…...

【irregular swap】An Examination of Fairness of AI Models for Deepfake Detection

文章目录 An Examination of Fairness of AI Models for Deepfake Detection背景points贡献深伪检测深伪检测审计评估检测器主要发现评估方法审计结果训练分布和方法偏差An Examination of Fairness of AI Models for Deepfake Detection 会议/期刊:IJCAI 2021 作者: 背景…...