【javaEE初阶】

news2024/11/20 8:37:48

🌈🌈🌈关于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.coloradmin.cn/o/1791514.html

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

相关文章

Unity中帧动画素材的切割设置

有几个问题,美术在给我们帧动画的时候,一般都是给一个比较大的图,然后进行切割成多个sprite,导入到animation中 一般来说,进行那个autoSlide,自动切割就可以了 这个自动切割的图片会沿着有像素的最小包围…

运动会信息管理系统(Springboot+MySQL)

本课题旨在实现对运动会信息的全面管理,提供用户友好的界面和高效的操作体验。系统的基础功能包括运动员报名比赛、比赛成绩查询、资讯留言等。为了确保系统的高扩展性和稳定性,选用主流的开发技术,实现规范的项目结构和高效的性能。 技术选型…

Linux基础 (十四):socket网络编程

我们用户是处在应用层的,根据不同的场景和业务需求,传输层就要为我们应用层提供不同的传输协议,常见的就是TCP协议和UDP协议,二者各自有不同的特点,网络中的数据的传输其实就是两个进程间的通信,两个进程在…

VS2022,DLL1调用lib,lib调用DLL2

DLL1调用lib,lib调用DLL2 问题1:为什么在dll1中需要引入dll2的.lib文件 当你有一个工程(dll1)调用静态库(lib),而静态库(lib)又调用另一个DLL(dll2&#xf…

3D模型贴了白膜渲染漆黑一片---模大狮模型网

在3D建模与渲染的世界里,白膜通常作为基础的材质贴图,用于呈现模型的基本形状和轮廓。然而,当我们在3D Max软件中为模型贴上白膜后,却发现渲染结果漆黑一片,这无疑是一个令人困扰的问题。 一、材质与贴图问题 首先&am…

高通开发系列 - 借助libhybris库实现Linux系统中使用Andorid库(2)

By: fulinux E-mail: fulinuxsina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! 返回:专栏总目录 目录 参考上一篇文章:高通开发系列 - 借助libhybris库实现Linux系统中使用And…

报名倒计时 2 天!龙蜥社区系统安全 Meetup 演讲亮点一览

各位开发者们: 龙蜥社区“走进系列”第 10 期《龙蜥社区系统安全 MeetUp》,由浪潮信息联合龙蜥社区主办,将于 2024 年 6 月 14 日(周五)在北京召开!现场活动报名截止时间 6 月 7 日,限定 80 名…

Windows下SVN文件损坏,启动服务报错1067

之前碰到过一次,忘记最后怎么解决的了,只记得大概原理和原因,以及解决办法。 1067错误码,很多地方都会碰到,mysql也会有,看来应该是windows系统的错误码。跟具体程序无关。所以直接百度“SVN”、“1067”…

Vue3中的常见组件通信之mitt

Vue3中的常见组件通信之mitt 概述 ​ 在vue3中常见的组件通信有props、mitt、v-model、 r e f s 、 refs、 refs、parent、provide、inject、pinia、slot等。不同的组件关系用不同的传递方式。常见的撘配形式如下表所示。 组件关系传递方式父传子1. props2. v-model3. $refs…

重要经济数据对行情的影响有多大?

金融市场上的消息非常多,可以来自不同国家、不同大型企业,也可以由不同机构统计公布,甚至是各国政府或中央银行的发表。在宏观经济层面上,所有政经消息都属于金融市场的风险事件,大多能引起市场波动,因此投…

STM32作业实现(一)串口通信

目录 STM32作业设计 STM32作业实现(一)串口通信 STM32作业实现(二)串口控制led STM32作业实现(三)串口控制有源蜂鸣器 STM32作业实现(四)光敏传感器 STM32作业实现(五)温湿度传感器dht11 STM32作业实现(六)闪存保存数据 STM32作业实现(七)OLED显示数据 STM32作业实现(八)触摸按…

小米SU7智能座舱介绍,果然有亮点!

2024 年,小米 SU7 横空出世,从开始的怀疑到发布后仅 24h 就达到了 8W 台的订单量,火到出圈的具象化。智能手机厂家造车,之前的华为做了榜样,小米作为汽车制造中又一条鲶鱼,能否给智能汽车市场带来新的契机? 小米造车可谓是各方位进行全新打造,包括座舱、底盘、智驾、车…

word自带公式编辑器技巧

1.实现多行公式换行且对齐 1.1 准备阶段(默认Unicode模式) 进入公式编辑模式,输入\eqarray,紧接着按下空格键输入空格,如下 1.2 实现换行和对齐 将要编辑的公式输入到括号内 &:实现位置对齐 &…

IP协议1.0

基本概念: • 主机: 配有IP地址, 但是不进⾏路由控制的设备; • 路由器: 即配有IP地址, ⼜能进⾏路由控制; • 节点: 主机和路由器的统称; IP协议的报头 • 4位版本号(version): 指定IP协议的版本, 对于IPv4来说, 就是4. • 4位头部⻓度(header length): IP头部的⻓…

循迹模块之循迹小车

1.TCRT5000传感器 TCRT5000传感器的红外发射二极管 不断发射红外线 1.1 当发射出的红外线没有被反射回来或被反射回来但强度不够大时, 红外接收管一直处于关断状态,此时模块的输出端为高电平,指示二极管一直处于熄灭状态 1.2 当被检测物体…

罗德与施瓦茨RS SMA100A 9KHZ-3GHZ或6GHZ信号发生器

R&S SMA100A 提供信号质量、速度和灵活性。R&S SMA100A 是一款高级模拟发生器,因其出色的特性而树立了标准。 它结合了卓越的信号质量和极高的设置速度。无论是在开发、生产、服务还是维护方面,R&SSMA100A 都能出色地完成任务。 罗德与施瓦茨…

前后端分离与实现 ajax 异步请求 和动态网页局部生成

前端 <!DOCTYPE html><!-- 来源 --> <!-- https://cloud.tencent.com/developer/article/1705089 --> <!-- https://geek-docs.com/ajax/ajax-questions/19_ajax_javascript_send_json_object_with_ajax.html --> <!-- 配合java后端可以监听 --&…

升级你的提问技巧:ChatGPT-4o时代,如何让对话更智能?

最近&#xff0c;我一直在尝试使用升级版的ChatGPT&#xff0c;也就是GPT-4o&#xff0c;它带来了许多令人兴奋的新功能。要充分利用这个新工具&#xff0c;我们得在提问方式上做些小小的调整。下面&#xff0c;我会从简单到复杂&#xff0c;一一介绍这些调整。 提高提示词的具…

Nvidia Jetson/Orin +FPGA+AI大算力边缘计算盒子:人工智能消防应用

青鸟消防股份有限公司成立于2001年6月&#xff0c;于2019年8月在深圳证券交易所挂牌上市&#xff0c;成为中国消防报警行业首家登陆A股的企业。公司始终聚焦于消防安全与物联网领域&#xff0c;主营业务为“一站式”消防安全系统产品的研发、生产和销售。公司产品已覆盖了火灾报…

网络空间安全数学基础·环

4.1 环与子环 &#xff08;理解&#xff09; 4.2 整环、除环、域 &#xff08;熟练&#xff09; 4.3 环的同态、理想 &#xff08;掌握&#xff09; 4.1 环与子环 定义&#xff1a;设R是一非空集合&#xff0c;在R上定义了加法和乘法两种代数运算&#xff0c; 分别记为ab和a…