【javaEE初阶】

🌈🌈🌈关于java

⚡⚡⚡java的由来

我们这篇文章主要是来介绍javaEE,一般称为java企业版,实际上java的历史可以追溯到上个世纪90年代,当时主要的语言主流的还是C语言和C++,但是在那个时期嵌入式初步发展,刚开始是打算制造一个“智能面包机”的,于是专门对此研发出了一种新的语言-Oak(橡树)。
在这里插入图片描述

说来也很有意思,当时我们的java创始人詹姆斯.高斯林,起这个名字仅仅是因为当时的办公室透过窗户可以看到一颗橡树,后来这个项目并没有推行下去,但是这门语言发展的不错,后来互联网开始发展,当时最大的浏览器网景公司的netscape,也想要将网页和用户之间有跟多的互动,所以高斯林就把这门语言做了一定完善,并更名为java~~
在这里插入图片描述

⚡⚡⚡出师未捷身先死

不久,微软,也推出了自己的浏览器IE,由于当时Windows已经风靡全球,微软将IE和Windows捆绑销售,并推出自己的编程语言J++,全面封杀了java,但是有意思的是虽然微软这波操作确实666,但是自己的语言J++,并没有发展的很好,侧面推动了JavaScript的发展,注意这里的JavaScript和java没有一点关系,起这个名完全就是为了蹭波流量~~,java只好寻求新的出路
在这里插入图片描述

创新之路

Orcal公司很快推出了一系列的java的新版本,javaSE,javaEE,javaME,分别针对java的日常使用,后端服务器的开发,嵌入式的开发,javaEE是仿照当时大火的语言PHP做的,javaME则是在当时的功能机上面支持安装第三方应用,可以说java一直没有停下创新的脚步~~
在这里插入图片描述

⚡⚡⚡再遇波折

随着互联网的信息越来越多,以PHP为主的这类语言,对于越来越庞大的网站,难以适应了~,移动端这边,乔布斯发布了第一部iPhone,标志着移动互联网的发展,之前的那些功能机公司很快倒闭,javaME也被雪藏,java的发展再入低谷。
乔布斯

⚡⚡⚡顿断玉锁走蛟龙

在前端这边,java摒弃了之前的语言,研发出了一个新的霸主 Spring,这其实是以Spring为主的一个大的框架,非常擅长大网站的开发~~
在这里插入图片描述

后端,谷歌推出了自己的一套操作系统,大名顶顶的安卓,说来很巧,刚开始本来是打算用python开发安卓的,恰好谷歌与Python的创始人有些事闹得很不愉快~,于是安卓就是用java作为开发语言,此后大家也都知道安卓发展的有多好了。
在这里插入图片描述

于是java一跃成为当时语言的NO.1,直接起飞~
在这里插入图片描述

🌈🌈🌈计算机的工作原理

⚡⚡⚡冯诺依曼架构

冯·诺依曼架构是一种经典的计算机体系结构,由冯·诺依曼于1945年提出。它将指令和数据存储在同一个存储器中,并使用同一套总线进行数据传输。在冯·诺依曼架构中,计算机的指令和数据被存储在内存中的同一地址空间中,CPU通过抓取指令和数据来执行程序。这种架构具有程序存储器和数据存储器的明显分离,使得指令和数据可以在存储器和CPU之间自由传输。大多数现代计算机系统都采用了冯·诺依曼架构。

哈佛架构是另一种常见的计算机体系结构,最早由哈佛大学提出。在哈佛架构中,指令存储器和数据存储器是物理上分开的,使用不同的总线进行数据传输。指令存储器用于存储程序的指令,数据存储器用于存储程序的数据。哈佛架构的一个优势是可以同时抓取指令和数据,这提高了执行效率。然而,哈佛架构对硬件的要求更高,因为需要独立的指令和数据存储器。在这里插入图片描述

尽管冯·诺依曼架构和哈佛架构在指令和数据存储方式上存在差异,但它们都是用于构建计算机系统的基本原理。现代计算机系统往往会根据具体需求和应用选择适合的架构。
在这里插入图片描述

🌈🌈🌈CPU的参数

CPU一般由逻辑运算单元、控制单元和存储单元组成。在逻辑运算和控制单元中包括一些寄存器,这些寄存器用于CPU在处理数据过程中数据的暂时保存。一般在市面上购买CPU时所看到的参数一般是以(主频\前端总线\二级缓存)为格式的。例如Intel P6670的就是(2.16GHz\800MHz\2MB)。

⚡⚡⚡核心数

通过任务管理器查看,windows下任务管理器的打开方式较多,比如:

  • Win+x,选择任务管理器(T)
  • Win+R,输入taskmgr并点击回车键,打开任务管理器
  • Ctrl+Alt+Delete,选择任务管理器
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/4f30379a419346eabc808d14ee06753c.png

⚡⚡⚡频率

和上面查看核心数的方式一样,在同一个界面:
在这里插入图片描述

⚡⚡⚡CPU的寄存器

寄存器是CPU内部用来存放数据的一些小型存储区域,用来暂时存放参与运算的数据和运算结果。其实寄存器就是一种常用的时序逻辑电路,但这种时序逻辑电路只包含存储电路。寄存器的存储电路是由锁存器或触发器构成的,因为一个锁存器或触发器能存储1位二进制数,所以由N个锁存器或触发器可以构成N位寄存器。寄存器是中央处理器内的组成部分。寄存器是有限存储容量的高速存储部件,它们可用来暂存指令、数据和位址。
在这里插入图片描述
由于寄存器的内存其实是比较小的,有的数据需要不停地从内存读取,这样就会对运行速度有很大的
限制,所以后来计算机引入了缓存的概念,缓存相对来说存储空间就比较大了,且分为三个级别,第一级别访问速度快,存储空间小,后面依次速度变慢,空间变大。

在这里插入图片描述

🌈🌈🌈CPU执行指令的过程

一个CPU有哪些指定,在他被造出来的时候,就已经决定了,这里给出一个表格用来说明这个cpu都具有那些指令!!!
在这里插入图片描述
这里给关于内存地址和数据的一张表,来演示CPU指令执行的过程:
在这里插入图片描述

⚡⚡⚡CPU执行的过程可以大致分为三个部分:

  • 取指令,CPU从内存中读取到指令内容到CPU的内部
  • 解析指令,识别出这个指令到底是干嘛的,以及对应的操作数和操作码。
  • 执行指令

CPU中存在一个特殊的寄存器,“程序计数器”,保存了接下来要从内存哪个位置来执行指令~此处就可以默认程序计数器要从哪个内存位置执行指令了。随着指令的执行,程序计数器也会自动++。

⚡⚡⚡CPU执行指令

⚡ 1. 读取指令:
在这里插入图片描述
⚡2. 解析指令:
在这里插入图片描述

⚡4. 执行指令
在这里插入图片描述

这个1110可以转化成十进制14,也就是把14存储到寄存器当中。

⚡1. 读取指令
在这里插入图片描述

⚡2. 解析指令
这个指令是LOAD B,就是将1111地址的数据读取到寄存器B中。(转化为十进制就是15)
在这里插入图片描述

⚡3. 执行指令
找到15这个地址上的数据,读取到寄存器B中了,接着程序计数器就更新为2

⚡1. 读取指令
在这里插入图片描述
⚡ 2. 解析指令
计算两个指定寄存器的数据之和,并将结果放到第二个寄存器中
⚡3. 执行指令
程序计数器自动更新++
在这里插入图片描述

🌅🌅🌅1) 读取指令
在这里插入图片描述
🌅🌅🌅2)解析指令
在这里插入图片描述
🌅🌅🌅3)执行指令
将结果存入到1101->13中去,程序计数器++

后面的指令我们通过指令表可以看到全部为零此时我们认为该指令执行完毕。

⚡⚡⚡操作系统的进程管理

在这里插入图片描述

对于操作系统来说,有很多重要的核心参数,在这其中就有一个非常重要的参数叫进程,即用来描述一个程序运行情况,一般情况下,一个程序以exe文件的形式躺在硬盘中,当我们点击运行它的时候,就会被读取到内存中,进而将指令传入到CPU中。
在这里插入图片描述

进程是操作系统分配资源的基本单位,由于电脑中的进程是非常多的,所以要进行管理,通常以类似于结构体的形式,将这些进程即其中的属性描述出来,每个进程之间以链表的形式存储,后面我们打开一个程序,或者结束一个程序,对应的就是链表的插入和删除。对于Linux来说就是以一个叫PCB的结构体描述进程信息的。

🌈🌈🌈PCB中的重要参数

⚡⚡⚡PID

每个进程的标识符,不会重复,系统中的很多操作都是依据PID找到相应的进程的。
在这里插入图片描述

⚡⚡⚡内存指针

用来描述一个进程依赖的指令和数据在那个区域
在这里插入图片描述

⚡⚡⚡文件描述符表

用来描述一个进程打开了哪些文件(硬盘中的),结构类似于顺序表,打开一个文件,就插入一个元素,从侧面体现了进程的执行需要一定的硬盘资源。

🌈🌈🌈进程的调度

当你打开自己的任务管理器,观察自己机器的进程的时候,会发现其实系统中运行的进程有百八十个,但是我们的计算机只有6核12线程也就是只能执行12个进程,那这到底是咋回事呢,这就涉及到一个重要的知识"进程的分时复用"
在这里插入图片描述

此时CPU会分时运行进程一,过一会运行进程二,再过一会运行进程三,由于CPU的运行和切换速度非常快,我们肉眼难以观察到,所以站在人的角度认为CPU运行进程是并发执行

现在的多核CPU,每个核心与核心之间会执行不同的进程,这就是CPU的并行执行。

我们一般将并发执行和并行执行合称为并发执行,对应的编程手法称为并发编程。

⚡⚡⚡进程的状态

在这里插入图片描述
就绪状态的进程,是可以随时被调度到CPU上执行指令的
而阻塞的进程无法被调度到CPU执行,因为要做一些其他的工作,比如IO操作,例如我们编程的时候经常用到的scanf和Scanner

⚡⚡⚡进程的优先级

每个进程的优先级是不一样,正如我们上面所说,CPU执行进程是分时复用的,所以执行的过程一定有一个优先级,这就表示这个进程何时被执行,占用CPU多少时间。

⚡⚡⚡进程的上下文

由于我们对于众多的进程采用分时复用,那么当结束一个进程时势必要将该进程的信息存储下来,不然下次运行该进程的时候,就会遗忘之前的信息,导致运行错误。
在这里插入图片描述

⚡⚡⚡进程的记账信息

在优先级的加持下,不同的进程吃到的资源差距越来越大,为了不影响进程的正常运行,CPU会统计每个进程运行的时间,依据这个重新完成调度的调整。
在这里插入图片描述

这几个属性相互配合,共同完成进程的调度的核心逻辑。

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

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

相关文章

小熊家务帮day13-day14 门户管理(ES搜索,Canal+MQ同步,索引同步)

目录 1 服务搜索1.1 需求分析1.2 技术方案1.2.1 使用Elasticsearch进行全文检索(为什么数据没有那么多还要用ES?)1.2.2 索引同步方案1.2.2.1 Canal介绍1.2.2.1 Canal工作原理 1 服务搜索 1.1 需求分析 服务搜索的入口有两处: 在…

c# 学习 2

常量 转义字符 类型转换

强化训练:day12(删除公共字符、两个链表的第一个公共结点、mari和shiny)

文章目录 前言1. 删除公共字符1.1 题目描述1.2 解题思路1.3 代码实现 2. 两个链表的第一个公共结点2.1 题目描述2.2 解题思路2.3 代码实现 3. mari和shiny3.1 题目描述3.2 解题思路3.3 代码实现 总结 前言 1. 删除公共字符   2. 两个链表的第一个公共结点   3. mari和shiny…

编译原理总结

编译器构成 1. 前端分析部分 1.1 词法分析 确定词性,输出为token序列 1.2 语法分析 识别短语 1.3 语义分析 分析短语在句子中的成分 IR中间代码生成 2. 机器无关代码优化 3. 后端综合部分 目标代码生成 机器相关代码优化 4. 其他 全局信息表 异常输出

一个思维狂赚20万+?揭秘电商平台隐藏的流量认知!

你想要的流量,资源,人脉,都已经有人为你准备,你只需要找到拥有这些资源的人。对于流量和信息,也是一样,你想找的客户和产品,都已经有人为你准备在淘宝、拼多多等电商平台,你只需要找…

IO流,文件操作

参考 Java IO 基础知识总结 | JavaGuide 史上最骚最全最详细的IO流教程,没有之一! - 宜春 - 博客园 零、io-流简介 IO 即 Input/Output,输入和输出。数据输入到计算机内存的过程即输入,反之输出到外部存储(比如数据…

[沫忘录]MySQL InnoDB引擎

[沫忘录]MySQL InnoDB引擎 逻辑存储结构 InnoDB采用 “表、段,区, 页、行” 这样的层级结构进行存储。 **表空间(tablespace)**ibd文件,主要用于存储记录、索引等数据,一个mysql实例可有多个表空间,甚至能通过innodb…

【机器学习】深度探索:从基础概念到深度学习关键技术的全面解析——梯度下降、激活函数、正则化与批量归一化

🔥 个人主页:空白诗 文章目录 一、机器学习的基本概念与原理二、深度学习与机器学习的关系2.1 概念层次的关系2.2 技术特点差异2.3 机器学习示例:线性回归(使用Python和scikit-learn库)2.4 深度学习示例:简…

在cmd菜单中使用自定义命令通过bat和powershell命令调用翻译API

先说一个血淋淋的结果,这个小功能其实在github已经有大佬帮我们封装好了,我也是自己刚倒腾好之后才发现的,所以如果只是需要这个功能的朋友可以直接移步这个项目:https://github.com/kenshinji/yddict,自己电脑安装一个…

Linux 磁盘分区步骤

1.lsblk用于查看磁盘分区情况,lsblk -f用于查看uuid字符串以及挂载点。 以下是虚拟机部分添加磁盘的步骤。 其余没展示的都按照默认设置进入下一步即可。 2.添加完成后使用reboot重新进入后再使用lsblk就会发现磁盘sdb已经有了,但是没有分区。现在添加分…

三十六、openlayers官网示例Earthquake Clusters解析——在聚合图层鼠标触摸显示五角星

官网demo地址: Earthquake Clusters 这篇展示了鼠标触摸聚合图层点位显示五角星的效果。 首先是初始化地图,加载了一个KML格式的矢量数据源,extractStyles为false表示不从kml数据源中提取样式。使用Select添加了鼠标选中的交互事件 vector …

【Kubernetes】 emptyDir、nfs存储卷 和 PV、PVC

emptyDir存储卷 当pod被分配给节点 容器和容器之间进行共享存储 hostPath nfs共享存储卷 NAS 专业的存储设备;一般是与NFS 搭配,然后共享出去 GFS 自己搭;CEPH(至少要9台) 第三方;NAS 第三方; 云端 oss …

【wiki知识库】05.分类管理模块--后端SpringBoot模块

📝个人主页:哈__ 期待您的关注 目录 一、🔥今日目标 二、☀SpringBoot代码修改 1.使用逆向工程生成Category表结构 2. 新增CategoryQueryParam 3.新增CategorySaveParam 4.新增CategotyQueryVo 三、🤖新增分类管理的相关接口…

v1.2.70-FastJson的AutoType机制研究

v1.2.70-FastJson的AutoType机制研究 最近在对接Alexa亚马逊语音技能,Smart Home Skill Apis时,有一个配置的JSON字符串是这样的: { "capabilityResources": {"friendlyNames": [{"type": "asset",…

python图像识别库-pytesseract

内容目录 一、安装1.安装tesseract OCR1) MAC中安装2) Windows中安装3) 中文报下载 二、pytesseract的简单使用 pytesseract是python的一个用于图像提取的库, 它实际上是对Tesseract OCR引擎的封装。pytesseract使得在Python项目中调用Tesseract变得更加简便,主要用…

17K star,一款开源免费的手机电脑无缝同屏软件

导读:白茶清欢无别事,我在等风也等你。 作为程序员,在我们的工作中经常需要把手机投票到电脑进行调试工作,选择一款功能强大的投屏软件是一件很必要的事情。今天给大家介绍一款开源且免费的投屏软件,极限投屏&#xff…

Arthas调优工具使用

1,服务器端下载 curl -O https://arthas.aliyun.com/arthas-boot.jar 2,服务器端启动 java -jar arthas-boot.jar 选定要绑定的Java进程ID 3,本地idea安装Arthas idea 4,选定方法右键trace,生成命令 trace com.xxx.xxx.xxx.vouche…

C语言数据结构快速排序的非递归、归并排序、归并排序的非递归等的介绍

文章目录 前言一、快速排序非递归二、归并排序五、归并排序非递归总结 前言 C语言数据结构快速排序的非递归、归并排序、归并排序的非递归等的介绍 一、快速排序非递归 快速排序非递归的定义 快速排序非递归,需要使用栈来实现。将左右下标分别push到栈中。在栈为…

基于Tricore的Tasking链接文件解读

目录 1.链接文件有什么用? 2.文件结构和语法解析 2.1 文件结构 2.2 语法解析 3.小结 玩惯了ld文件,突然让搞lsl,被其中花里胡哨的语法搞晕了,例如: memory cpu0_dlmu{mau 8;size 64k;type ram;map cached …

腾讯中视频计划项目玩法,号称执行就有收入

腾讯中视频掘金计划是一个创新的短视频创作与分享平台,类似于西瓜视频,允许用户发布原创视频内容,并将其同步至腾讯旗下的多个平台,用户基数大,相信视频播放量也会比较大。 操作流程: 1. 注册并登录腾讯中…