【后端开发】JavaEE初阶——计算机是如何工作的???
前言:
🌟🌟本期讲解计算机工作原理,希望能帮到屏幕前的你。
🌈上期博客在这里:【MySQL】MySQL中JDBC编程——MySQL驱动包安装——(超详解)
🌈感兴趣的小伙伴看一看小编主页:GGBondlctrl-CSDN博客
目录
📚️1.引言
📚️2冯诺依曼体系
📚️3.CPU
3.1CPU的组成
3.2多核CPU
3.3指令
3.4缓存和流水线
1.缓存
2.流水线
3.5总结
📚️4.操作系统
4.1进程、任务
4.2进程的管理
1.先描述
2.再组织
4.3PCB的核心属性
1.pid进程标识
2.内存指针
3.文件描述附表
4.4进程的调度
1.状态
2.优先级
3.记账信息
4.上下文
4.5内存的分配-内存的管理
4.6进程间通信
4.7缺点
📚️5.总结
📚️1.引言
Hello!!!家人们,小编又回来啦,上期讲解了关于JDBC编程,那么mysql部分就基本上结束撒花咯🎉🎉🎉接下来,就开启后端开发JavaEE初阶的学习了,本期就开始基础的计算机是如何工作的,开始发车了。加油加油~~~🥳🥳🥳
且听小编讲解,包你学会!!!
📚️2冯诺依曼体系
图片展示:
很明显可以看出:
CPU:是进行数据的算术运算和逻辑运算
存储器:由外存和内存组成,主要是用来进行数据的存储(这数据以二进制的方式进行存储)
输入设备:顾名思义即用户给计算机发送指令的部分
输出设备:顾名思义就是计算机进行数据处理后返回展示给用户的部分
按照内存大小:硬盘>内存>>CPU
运行速度:CPU>>内存>硬盘
📚️3.CPU
3.1CPU的组成
CPU是由:
门电路=>半加器=>全加器=>加法器=>ALU运算器=>构成了CPU
虽然后端开发不用全部了解每个部分的工作原理,但是计算机的重要部分例如:内存,硬盘,CPU这些重要的部分还是要了解到的;
门电路是由晶体管构成,这是一个非常小的单元,级别为nm级别;CPU能无限小吗???
答案是不能,太小了经典物理学就不管用了,还有制作工艺大大增加,过大也不行:太大了会造成良品率大幅度下降;
此时就有了多核CPU的概念
3.2多核CPU
即软件将任务分成部分小块,合理的分给多个CPU(即一个活有多个人来干)(并发编程),那么此时的效率就大大提升了,那么还有一种情况,就是一个CPU可以干两个人的活那么就有了(超线程技术)
即4个CPU可以干8个人的活;4:为物理核心;8:为逻辑核心;
其实我们的电脑即时运用了超线程技术的:打开任务管理器;
打开性能栏目:可以看到小编这个电脑是内核为6(物理核心),逻辑处理器为12(逻辑核心)这就运用了超线程技术;
当然不是核心越多越好,像有的CPU核心很多,但是单核的频率不高,也是不行的;
频率:描述CPU核心工作的速度;
例如:小编这里的速度:3.01GHz表示的是一秒钟执行30.1亿次;
这里的单位换算:
1KHz=1024Hz 1MHz=1024KHz 1GHz=1024MHz
注意描述一个CPU的性能好坏是看最低执行频率(基础频率)和上限(最大睿频);
3.3指令
指令表:
这里的RAM即是:内存
所谓的寄存器就是由于CPU的存储数据少,而为了支持CPU的计算,而保存中间结果的一个空间
下面小编就来模拟一下程序的执行过程
3.4缓存和流水线
随着啥时间的发展,cpu执行的速度越来越快,而CPU的执行需要从内存中读取数据,那么就会发现内存读取跟不上CPU的执行速度了;
1.缓存
例如:在表演的时候,演员家里表演的地方很远时,隔天表演,那么演员就会在附近的宾馆住宿,那么就不会回自己的家,而CPU执行也是一样的;
那么需要用的数据存储在一个空间(集成在CPU上),虽然空间不大,但是里CPU近。就解决了从内存中读取数据太慢的问题;
2.流水线
例如:一次表演,当A上台进行表演时,就要把接下来表演的B接到舞台附近,依次进行;
同理:当CPU在执行的时候,就将内存中的数据读出来,准备下一个数据的执行;
3.5总结
1.CPU执行的指令都存储在内存中
2.要想执行指令,就要从内存中取出指令,解析只能,最后执行指令
3.取指令需要从内存中读取指令到CPU寄存器中,由于取指令这一步很消耗时间,引入了流水线和缓存机制
4.CPU解析指令时要用到指令表,不同CPU架构的指令表是不同的
5.指令在执行过程中带有的操作数,不同的操作数的作用是不同的
6.CPU主要的参数是主频,代表这CPU一秒中执行的次数
📚️4.操作系统
目前的操作系统:Windows,Linux,iOS,Android,Mac;
操作系统是一个软件~~~(由程序编写而成)
作用:
1.管理各种硬件设备
2.为软件提供稳定的运行环境
而JVM又是对其系统进行封装,所以我们JAVA程序员,就只用掌握JVM提供的API就可以实现各个操作系统的操作;
为啥我们要有操作系统???
就拿各种硬件设备来看,不同的鼠标有不同的功能,键盘也是一样的,那么程序员需要针对不同的硬件设定不同的代码吗,这样就太麻烦,所以就引入了操作系统,这样就可以管理各种硬件设备,给软件提供统一的API;
图例如下:
此所谓上至软件应用程序,下至各种硬件设备
4.1进程、任务
所谓的进程就是操作系统提供一种软件资源,我们运用的系统就是“多任务操作系统”;
这里的每个电脑打开的后台,和最小化就是多个任务,一个任务可以理解为一个进程;
注意:任务在执行的过程会消耗一定的硬件资源,换而言之就是进程执行时都要分配一定的系统资源;进程是系统资源分配的基本单位;
可以猜测这个截图时运用微信进行裁剪的~~~嘿嘿
4.2进程的管理
1.先描述
一般是通过类/结构体这样的方式,将实例所属性描述出来,由于操作系统是c++写的,所以可以使用结构体来表示进程的结构体,叫做PCB(进程控制块)
2.再组织
在使用数据结构将这些类或者结构体串起来;
当我们看到任务管理器里的进程信息的啥时候,就意味着系统内部在进行链表的遍历,并进行每个节点的打印;
若果进行一个新的程序,那么就会创建一个新的进程,那么就要构造一个新的PCB,然后插入到链表上;
若果结束一个程序的运行,那么进程的PCB就要从链表中进行删除,对应的PCB就要进行销毁;
4.3PCB的核心属性
1.pid进程标识
系统会通过简单的不重复整数来进行区分,保证同一时刻,每个进程的pid是不同的;
2.内存指针
所谓的内存指针就是用来描述进程使用,内存的分配问题的;
例如:学校的寝室楼,每个同学都有自己的寝室,内存指针就像是每个学生所对应寝室号,指定这个学生的寝室是哪一个,而不是每个寝室学生都可以使用;
所以:内存指针就是表示进程能够使用哪些内存~~~,而指令和数据都是存在内存中的,进程的也需要知道能够使用哪些数据和指令;
3.文件描述附表
所谓描述了进程所使用的相关硬盘资源,操作系统会对这些硬盘资源封装=>文件;
进程想使用一个文件那么就要先打开文件,所以进程就会在文件描述附表中构建一个结构数据来表示文件的相关信息
4.4进程的调度
1.状态
描述某个进程能否进入CPU进行执行;
就绪状态:随时准备好进入CPU进行执行;
阻塞状态:指某个进程不方便进入CPU,不能进行调度(例如,等待IO,用户的输入与输出)
例如:
Scanner函数执行,就需要用户进行输如数据,否则程序就不会执行;
2.优先级
即指多个进程等待系统的调度,每个进程的被调度的先后顺序是不一样的;
例如:在游戏和QQ同时运行时,很明显游戏的进程优先级肯定大于QQ的优先级;
3.记账信息
即描述每个进程运行占CPU的时间的统计,会根据这个统计来进行调整进程占有CPU的时间;
4.上下文
PCB一种数据结构
1.存档
当要将进程调度出CPU时,那么就要将寄存器中的信息,单独存储在一个空间里(内存中)
2.读档
当该进程再次进入CPU时,就要将寄存器中的信息回复过来,即将内存中寄存器存储的数据加载到CPU中;
4.5内存的分配-内存的管理
对于内存的管理是一个非常复杂的问题,小编这里就不再讲解了(小编没有过多了解~~)
核心思想:每个进程的内存是互不干扰的,通常情况下进程A是不能访问进程B的;
作用:主要是为了当一个进程代码出现Bug的时候,保证其他的进程是不会受到干扰的;这也叫做进程的独立性;
4.6进程间通信
对于一些特殊的情况,需要多个进程相互配合,来合作完成某些工作
进程间通信是与进程独立性是不冲突的,系统会提供公共空间,来供多个进程进行数据之间的交换
4.7缺点
多任务操作系统,即多进程操作系统,希望系统同时进行多个程序的运行;
但是如果在频繁的创建和销毁进程的时候,多进程编程系统的开销就会很大(主要是在资源的申请和释放上);此时就要引入多线程编程了,小编下期开始讲解;
📚️5.总结
💬💬小编本期讲解了关于计算机的构成,主要讲解了关于CPU的相关知识,以及操作系统中最主要的进程控制块和进程的相关知识如状态,通信等问题。
🌅🌅🌅~~~~最后希望与诸君共勉,共同进步!!!
💪💪💪以上就是本期内容了, 感兴趣的话,就关注小编吧。
😊😊 期待你的关注~~~
相关文章:

【后端开发】JavaEE初阶——计算机是如何工作的???
前言: 🌟🌟本期讲解计算机工作原理,希望能帮到屏幕前的你。 🌈上期博客在这里:【MySQL】MySQL中JDBC编程——MySQL驱动包安装——(超详解) 🌈感兴趣的小伙伴看一看小编主…...
Linux(Ubuntu)源码安装postgresql16.3
文章目录 Linux(Ubuntu)源码安装postgresql016.3下载程序包编译安装软件初次执行configure错误调试1:configure: error: ICU library not found再次执行configureBuild 设置环境初始化数据库启动数据库参考 Linux(Ubuntu)源码安装…...
Python 入门教程(7)面向对象 | 7.6、多态
文章目录 一、多态1、鸭子类型2、实现多态的机制2.1、鸭子类型2.2、继承与重写 3、Python多态的优势4、总结 前言: 在面向对象编程(OOP)中,多态(Polymorphism)是一种非常重要的概念,多态就是同一…...

Cilium + ebpf 系列文章-什么是ebpf?(一)
前言: 这篇非常非常干,很有可能读不懂。 这里非常非常推荐,建议使用Cilium官网的lab来辅助学习!!!Resources Library - IsovalentExplore Isovalents Resource Library, your one-stop destination for ins…...

RabbitMQ08_保证消息可靠性
保证消息可靠性 一、生产者可靠性1、生产者重连机制(防止网络波动)2、生产者确认机制Publisher Return 确认机制Publisher Confirm 确认机制 二、MQ 可靠性1、数据持久化交换机、队列持久化消息持久化 2、Lazy Queue 惰性队列 三、消费者可靠性1、消费者…...

恶意Bot流量识别分析实践
1、摘要 随着互联网的发展,自动化工具和脚本(Bots)的使用越来越普遍。虽然一些善意 Bots 对于网站的正常运行和数据采集至关重要,但恶意 Bots 可能会对网站带来负面影响,如爬取敏感信息、恶意注册、刷流量等。因此&am…...
Java2 实用教程(第6版)习题2 第四题
【源文件的命名与书中的不同】 四、阅读程序题 1、上机运行下列程序,注意观察输出的结果。 public class E2_1 {public static void main(String args[]){for(int i20302;i<20322;i){System.out.println((char) i);}} } 运行结果: 低 住 佐 佑 佒…...
HashMap和ConcurrentHashMap的区别
1.是什么 HashMap和ConcurrentHashMap都是Java集合框架中的成员,它们用于存储键值对,但它们在并发场景下的表现和行为有很大的不同。以下是它们之间的一些主要区别: 1. 并发安全性 HashMap: HashMap不是线程安全的。如果多个线程同时访问Has…...

css 下拉框展示:当hover的时候展示下拉框 z-index的用法解释
代码如下: <template><div class"outer"><div class"left"></div><div class"aTest2"><div class"box">显示方框</div><div class"aTest3"></div></…...
spring装配笔记
spring装配是个大课题,能懂一点是一点吧。 关于代码链路,最后的方式就是倒序摸索,正序那么多逻辑,没有一百万也差不多少,所以就用倒序。 .(点号)和#井号是一个意思,下面代码可能不详细区分,复…...

vscode【实用插件】Notes 便捷做笔记
安装 在 vscode 插件市场的搜索 Notes点 安装 安装成功后,vscode 左侧栏会出现 使用 初次使用 需先选择一个本地目录 重启 vscode 后,得到 切换笔记目录 新建笔记 快捷键为 Alt N 默认会创建 .md 文件 配合插件 Markdown Preview Enhanced 预览 .md…...

中间件:maxwell、canal
文章目录 1、底层原理:基于mysql的bin log日志实现的:把自己伪装成slave2、bin log 日志有三种模式:2.1、statement模式:2.2、row模式:2.3、mixed模式: 3、maxwell只支持 row 模式:4、maxwell介…...

postman控制变量和常用方法
1、添加环境: 2、环境添加变量: 3、配置不同的环境:local、dev、sit、uat、pro 4、 接口调用 5、清除cookie方法: 6、下载文件方法:...
Spring Boot 中整合 Kafka
在 Spring Boot 中整合 Kafka 非常简单,Spring Kafka 提供了丰富的支持,使得我们可以轻松地实现 Kafka 的生产者和消费者。下面是一个简单的 Spring Boot 整合 Kafka 的示例。 1. 添加依赖 首先,在 pom.xml 中添加 Spring Kafka 的依赖&#…...

什么是开放式耳机?具有什么特色?非常值得入手的蓝牙耳机推荐
开放式耳机是当下较为热门的一种耳机类型。它具有以下特点: 设计结构: 呈现开放式的构造,不会完全堵住耳道。如此一来,外界声音能够较容易地被使用者听到,在使用耳机时可以保持对周围环境的察觉。比如在户外…...
编译 FFmpeg 以支持 AV1 编解码器以及其他硬件加速选项(如 NVENC、VAAPI 等)
步骤 1: 安装必要的依赖 sudo apt update sudo apt install -y \autoconf automake build-essential cmake git libass-dev libfreetype6-dev \libsdl2-dev libtool libva-dev libvdpau-dev libxcb1-dev libxcb-shm0-dev \libxcb-xfixes0-dev pkg-config texinfo wget zlib1g-…...
解释一下Java中的多线程。如何创建一个新的线程?
在Java中,多线程是一种机制,允许一个程序同时执行多个任务或处理。每个任务被称为一个线程。 这种并行执行可以极大地提高应用程序的效率和响应速度。 例如,在开发一个桌面应用程序时,你可以使用一个线程来更新用户界面…...

Java语言程序设计基础篇_编程练习题**18.30 (找出单词)
题目:**18.30 (找出单词) 编写一个程序,递归地找出某个目录下的所有文件中某个单词出现的次数。从命令行如下传递参数: java Exercise18_30 dirName word 习题思路 (读取路径方法)和18.28题差不多,把找…...
MyBatis中 #{} 和 ${} 的区别
1. #{id}(参数占位符) 作用: 使用 #{id} 时,MyBatis 会将 id 参数绑定为 JDBC 的参数。这种方式能够有效防止 SQL 注入攻击,因为它会进行参数的预处理,将参数值作为数据类型的绑定,而不是直接插入到 SQL 语…...

Android Perfetto 学习
1、如何抓取性能日志 方式1、通过手机里的System Tracing抓取 1、点击Settings->System->Developer options->System Tracing->Record trace 打开 2、操作完成后,点击Settings->System->Developer options->System Tracing->Record trace…...
Python|GIF 解析与构建(5):手搓截屏和帧率控制
目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...
java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别
UnsatisfiedLinkError 在对接硬件设备中,我们会遇到使用 java 调用 dll文件 的情况,此时大概率出现UnsatisfiedLinkError链接错误,原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用,结果 dll 未实现 JNI 协…...

【机器视觉】单目测距——运动结构恢复
ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛…...
macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用
文章目录 问题现象问题原因解决办法 问题现象 macOS启动台(Launchpad)多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显,都是Google家的办公全家桶。这些应用并不是通过独立安装的…...
Spring Boot面试题精选汇总
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...

selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

用机器学习破解新能源领域的“弃风”难题
音乐发烧友深有体会,玩音乐的本质就是玩电网。火电声音偏暖,水电偏冷,风电偏空旷。至于太阳能发的电,则略显朦胧和单薄。 不知你是否有感觉,近两年家里的音响声音越来越冷,听起来越来越单薄? —…...

基于Java+MySQL实现(GUI)客户管理系统
客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息,对客户进行统一管理,可以把所有客户信息录入系统,进行维护和统计功能。可通过文件的方式保存相关录入数据,对…...

[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】
大家好,我是java1234_小锋老师,看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】,分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...