JAVA EE (计算机是如何工作的)

学前注意事项

出去面试的时候java岗位不需要懂前端(会少量讲解)

但是我们做项目的时候多少回用到一些前端的东西

1.什么是计算机

1.1前情提要

不仅仅只有电脑是计算机

计算机还不仅仅是电脑手机和平板 路由器 智能洗衣机 刷脸打卡机都可以说是计算机

1.2计算机分类

1.更通用

(1)终端设别(台式机,笔记本,手机,ipad)手机

(2)服务器 日常普通用户是见不到的,以后我们作为开发人员还是经常和服务器打交道的

2.不是特别通用

(3)嵌入式设备,主体功能不是用来计算而是针对一些特定专属常见,量身定做的(专用计算机)

1.3冯诺依曼体系结构

(1)1.2中的所有设备都遵循冯诺依曼体系结构

(2)冯诺依曼和图灵是计算机的祖师爷

         冯诺依曼在成为计算机之父之前就是物理化学专家,博弈论之父,还参与过“曼哈顿计划”,是奥本海默的技术顾问,被评为20世纪的全才!!!!!!!!

         他在火车上遇到了普林斯顿大小研究员,这个研究员在参与计算机设计,然后互留联系方式,后面冯诺依曼就参与了“艾尼阿克”第一台计算机的开发

        然后提出了冯诺依曼体系,并对第一代计算机进行改进。

        冯诺依曼体系定义了二进制表示的存储数据。

(3)冯诺依曼体系结构大致就是说

       一个计算机要有(目前市面上有的计算机的结构)

         CPU(控制器 运算器)

         存储器(内存 外存)

         输入设备

         输出设备

         有的硬件设备可能是输入设备也可以是输出设备

(4)计算机一开始是为了军事用途

      最早是用来计算弹道轨迹

1.3.1CPU

  (1)cpu主要功能是进行各种算数运算

(2)进行各种逻辑判断

我们的每一个程序都是通过cpu来进行执行的

(3)一个打工人一天可能工作8小时

  可能一个人花4小时把活干了

   这时候就可以把CPU占用率成为百分之50

  一个计算机上同时运行横夺程序,这些程序有些全力工作有些不全力工作,最终算出的总占用率

(4)现在的计算机有多核,假如16个核心,就代表一个核心是一个cpu

(5)linux中式把每个cpu的核心加在一起

(6)CPU的频率就代表这CPU的效率,数字越大,干活越快,我们可以理解为1s中cpu运算了多少次,执行了多少个指令。

(7)CPU认识知道的指令就是汇编语言。

         你让计算机算一个1+1 = 2其实这背后有非常多的机器指令

(8)如何让一个CPU核心更快

        让CPU中的集成基础原件更多,也就是更加的小目前极限是4nm工艺

        最近台机电在冲击1nm工艺

        小到足够小的时候这其中就涉及到量子力学emmmmm

(9)既然多核心难以更nb,那么不妨往多核心发展

         英特尔最近还有啥大小核心的,大核一个顶两,小核还是一对一。英特尔公司还提出了超线程技术,一个cpu一个核中有两个线程,也就是一个物理核心顶2个核心使用。

        引入更多的核心本质上相当于干活的人读了,所以要想程序跑的更快,就需要在设计程序的时候考虑这一点,我们需要将问题拆分成更多的部分,交给多个不同的核心来进行处理。

       不能单核全干,其他核看戏

(10)所以现在多线程编程,才成为了我们当前研究的重点内容。

底层就是数电emmm

1.3.2指令表(重要的)

(1)指令可以仍未CPU被设计的时候,给程序员提供的一些程序接口。

(2)不同的CPU提供的哪些指令是不一样的,虽然不一样但是也是有几套标准的。(x86)现在更多的是(酷睿一种x86的继承)amd为了和intel兼容,也高搞了了x86,还有一个交arm架构,像我们的平板手机各种嵌入式系统,m1,m2芯片也是arm架构,论性能不及x86,但是功耗比较低,所以比较适合移动设备。还有一些冷门架构emmm不多说了

总的来说CPU其实有很多不同的架构,同一个程序在这个机器上的cpu上面可以运行但是另一个机器就不行,就像我们的手机和电脑应用要区分开。

(3)cpu是如何执行指令啊?

所谓的指令都是先加载到内存中,然后才被cpu读取并执行。

比如一个java程序,写出来时一个java源文件程序,编译得到class二进制文件,运行jvm时就会把这个class文件加载到内存中,再进一步翻译成cpu能够识别的二进制指令

比如一个c程序写出来是一个c源文件代码,编译得到exe二进制文件,操作系统是吧这个exe加载到内存中,在进一步的由cpu执行。

(4)因此CPU执行程序大概就是经历三个阶段

    读指令(把内存中的治理数据读取到cpu的寄存器中,存储数据的模块称之为寄存器,速度比内存快,但是内存空间更小也更贵)

     解析指令,(理解放弃指令要做啥)

     执行指令

上述是一个简化的模板,他还会有流水线啊啥的(计算机体系结构这个课里面会讲,大家自己去找找感兴趣的)

(5)指令表的引入

1.3.3后端程序员以后可能会遇到的计算机问题解决方式

1.4操作系统

上面的是硬件,下面我会给大家讲解一下软件也就是操作系统

1.4.1操作系统基本概念

(1)软件可以理解为一组指令的集合,我们将多个指令集合一起就可以搞出来一个软件。

(2)程序员的工作就可以理解为开发软件

(3)操作系统可以理解为一个大的软件,一个操作系统可以有成千上万行代码进行组成

(4)操作系统可以理解为一个大型的管理软件用来管理你的一些小的软件,和数据,文件,以及各类硬件的相互配合

(5)操作系统= 内核+配置的应用

(6)其中我们在编写代码的时候就是用操作系统来完成这些指令与程序的交互的(API)

其中java是调用操作系统的中的内核的API的

(7)API有的是搞网卡的,有的是管理显示屏的。

(8)操作系是用内核驱动程序,来操作系统

总的来说操作系统既要管理软件也要管理硬件,并且还要管理好软件再使用的环境,没有操作系统

1.4.2操作系统的进程

(1)进程是一个程序跑起来,在操作系统中就会出现一个对应的进程,所以进程就是一个跑起来的应用程序

(2)小知识:任务管理器就是占用了一个小进程

(3)运行的程序和自带的本身要运行的程序都会占用线程

(4)这里代表这每一线程占用的CPU使用率,

(4)想用硬件,软件,系统都会给他分配内存资源

(5)进程可以理解为操作系统分配资源的基本单位(重点)

(6)我们先用结构体来把一个进程核心进程提取出来,通过一定的数据结构把结构体穿起来,方便进一步的增删改查

(7)主流的操作系统都是用c来进行编写的,linux是纯c,windos是一部分c++一部分c++

(8)在操作系统中,我们通称之为PCB这样的进程结构体来描述进程的

(9)操作系统中通常使用链表这样的结构来把多个PCB穿起来的

(10)创建新的进程,新的进程创建出一个对应的PCB并且添加到上述的链表中

(11)销毁的某个进程,就是将链表上面对应的PCB节点给删除掉

(12)pid进程的id/标识符,身份证号同一个机器,同一个时刻进程id一定是不同的

(13)内存指针,进程运行的时候需要消耗一定的硬件资源,内存是一个关键的资源。 

图解

1.4.3文件描述表

(1)通过顺序表,记录顺序表,记录当下进程,都打开了哪些文件

(2)系统中包含了很多进程,进程需要执行,需要用cpu才能执行,占用cpu资源,这时候进程的数量是多于CPU的,现在的CPU是有多个核心的,每个CPU都是一个打工人,每个打工人互相之间各干各的,

现在有多个CPU核心,100多个进程,为了能够让这些进程有条不紊的运行,这时候就需要进程调度来组织这些东西。

一个核心同一时刻只能运行一个进程,16个核心同时进行(完全并行执行)

但是一个核心不同时间段可以执行不同的程序

但是他的切换速度太快了

所以我们肉眼感觉不到

所以操作系统并发相互搭配运行所有系统

这种系统我们称之为可以执行多个任务的操作系统

现在我们市面上见到的基本上都是可以执行多个任务的机器

并行指的微观时间上是串行

并发指的是宏观的化是同时进行的

我们在编程的时候,无法干预并行,普通用户也感知不到

把编写解决并发翁提的程序比称之为“并发编程”

(3)PCB中提供了几个属性来支持进程的调度

1)状态(后序线程文章会对线程来更好的讲解)

规划时间表的时候看这几个小哥的状态来进行规划(默认随叫随到,在操作系统中称之为就绪状态)假如一个小哥出差了(叫做进程处于阻塞状态),阻塞状态下无法运行,这个就叫做IO阻塞

2)优先级

给三个小哥排时间是不一样的,可能陪的时间不一样(时间资源会有所不一样)

3)上下文(内存的结构体中的一个成员变量)

一次约会没干完的事情,后面继续干

4)记账信息

这个用来记录后面要干的事情,在下次的时候一一对应,不出差错

也是有优先级的

此时就需要通过一个表格来统计每个进程(小哥)都分配了多少时间了,

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

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

相关文章

Ubuntu18.04桌面版设置静态IP地址

引用: Ubuntu配置静态IP_ubuntu配置静态ip地址-CSDN博客 正文 默认Unbuntu 18.04 Desktop桌面版使用 netplan 管理网卡网络地址。使用Unbuntu 18.04 桌面版配置,可以通过桌面上的设置图标配置网卡的静态IP地址。 点击桌面右上角下拉框,点击“设置”按…

Codeforces\ Round\ 930(C.Bitwise Operation Wizard)

C o d e f o r c e s R o u n d 930 ( C . B i t w i s e O p e r a t i o n W i z a r d ) \Huge{Codeforces\ Round\ 930(C.Bitwise Operation Wizard)} Codeforces Round 930(C.BitwiseOperationWizard) 文章目录 题意思路注意 标程 题目链接:[B.Bitwise Operati…

Spring cloud gateway解决网关跨域问题

一、Spring cloud gateway介绍 Spring Cloud Gateway是一个基于Spring Framework 5,Spring Boot 2和Project Reactor等技术构建的API网关服务。它旨在为微服务架构中的应用程序提供统一的路由服务,同时还具有过滤、流量控制、安全性、监控等功能。 主要…

知乎x-zse-96逆向

声明: 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!wx a15018601872 本文章…

JAVA每日面经——JVM篇(包含JVM优化)

👩🏽‍💻个人主页:阿木木AEcru 🔥 系列专栏:《Docker容器化部署系列》 《Java每日面筋》 💹每一次技术突破,都是对自我能力的挑战和超越。 目录 一、什么是JVM?二、JVM由…

酷开系统用电视为居家生活打开精彩窗口|酷开科技|酷开会员|

随着互联网的发展,电视也承载了更多的功能。相比于传统的电视,如今的智能电视屏幕更大、分辨率更高、色彩更加鲜艳,能够呈现出更加逼真的画面效果。当观众观看大屏电视时,仿佛置身于电影大幕的场景之中,感受到更为震撼…

NodeJs接入腾讯云存储COS

什么是腾讯云COS 腾讯云的 COS(Cloud Object Storage)是一种对象存储服务,类似于亚马逊的 S3(Simple Storage Service)。COS 提供了存储和管理大规模数据的能力,用户可以通过 COS 存储和检索各种类型的数据…

html常见标签

width宽度 height高度 border边框 1px(边框线条宽度) solid(实线) red(红色) border-radius: 100px 边框圆角 background-color:red(背景颜色为红色) margin&#xf…

面试常问问题

1.数据库的优化 选取最适用的字段属性,可以将表中字段的宽度设得尽可能小 使用连接(JOIN)来代替子查询 使用联合(UNION)来代替手动创建的临时表 防止数据的完整性,使用事务 如果用户访问数据库较大时可以通过锁定表的方式来获…

获取比特币和莱特币的实时价格

数据来源: https://datacenter.jin10.com/reportType/dc_bitcoin_current 代码: import akshare as ak import pandas as pd pd.set_option(display.max_columns, None) pd.set_option(display.max_rows, None) pd.set_option(display.width, 1000)cr…

「Linux系列」Shell 变量定义及运用

文章目录 一、Shell 变量的定义规则二、Shell变量的定义方法三、Shell变量的运用问题1. 变量未定义或为空2. 变量名拼写错误3. 变量作用域问题4. 变量值被意外修改5. 变量扩展问题6. 环境变量与局部变量冲突 四、相关链接 一、Shell 变量的定义规则 在Shell中,变量…

2024年最新Anaconda3 2024版中Jupyter Notebook安装

一、 Anaconda3 2024版下载 1.下载:Free Download | Anaconda 2.等待 解释:默认选择等等下载 ,时间可能数分钟 3.安装 解释:打开刚刚下载的Anaconda Navigator,并如图安装低版本,高版本会直接报错 4. …

CSS学习笔记:transform属性实现元素的位移、旋转、缩放

位移 实现居中的两种方法 绝对定位的盒子在父盒子中实现居中效果有两种方法 法一:margin 其中,left和top的值分别为子盒子自身宽高的一半 法二:translate 实现过渡效果 translate常常配合hover和transition使用,以实现鼠标悬停…

微博修改密码后无法通过微博开放接口发送微博

生产环境,因密码修改导致授权失效致接口发送微博失效!内部网站编辑完博文后无法发送微博。在修改密码时,有提示授权应用失效,操作人员不清晰情况,直接忽视。 微博应用开放接口----》微博转发博文接口文档 无示例 遗憾…

突破边界:Web3开启数字化社会的新纪元

引言 随着科技的不断进步和数字化社会的发展,Web3正逐渐成为了人们关注的焦点。作为新一代互联网的演进形态,Web3具有突破传统边界、实现去中心化的特点,被认为将开启数字化社会的新纪元。本文将深入探讨Web3的概念、特点、应用场景&#xf…

【LeetCode: 224. 基本计算器 + 模拟 + 栈】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

Java的集合体系及相关数据结构---Collection系列

​​​​​​​ 其中,有序和无序是指存取时候的顺序一致或者不一致; Collection是单列集合的顶层接口,它的方法全部单列集合可用。 Collection方法 方法名说明boolean add(E e)添加元素boolean remove(Object o)从集合中移除指定的元素…

微信小程序事件处理

微信小程序中的事件处理是指在微信小程序中处理用户的交互操作,例如点击按钮、选择器改变等。微信小程序中的事件处理分为以下几种: bindtap:点击事件。bindchange:选择器改变事件。bounddata:数据改变事件。 以下是…

SQL Server 的日志文件占满硬盘时处理方法

当 SQL Server 的日志文件占满硬盘时,可以采取以下几个步骤来解决问题: 1. 备份和压缩日志文件:首先,你可以通过备份数据库日志文件并压缩它们来释放磁盘空间。可以使用 SQL Server Management Studio (SSMS) 或 Transact-SQL (T…

语音转文字——sherpa ncnn语音识别离线部署C++实现

简介 Sherpa是一个中文语音识别的项目,使用了PyTorch 进行语音识别模型的训练,然后训练好的模型导出成 torchscript 格式,以便在 C 环境中进行推理。尽管 PyTorch 在 CPU 和 GPU 上有良好的支持,但它可能对资源的要求较高&#x…