【day01】每天三道 java后端面试题:JDK、JRE和JVM | 字节码 | ACID

文章目录

  • 1. JDK, JRE, JVM分别是什么?有什么区别?
  • 2. 什么是字节码?采用字节码的最大好处是什么?
  • 3. 什么是数据库事务?讲一下事务的ACID特性。

1. JDK, JRE, JVM分别是什么?有什么区别?

答题思路: 分别回答三者的概念。解释三者之间的关系。

  • JDK是 java 开发工具包,包含了编写、编译、调试和运行 java 程序的所有工具和组件。JDK包含 JRE,还包含编译器(javac),javaAPI,文档注释工具(javadoc)等一系列的开发工具。

  • JRE是 java 运行时环境,包含了 java 虚拟机(JVM)和基础类库。

  • JVM是 java 虚拟机,是 java 程序运行的环境,其作用是运行 java 字节码,将 字节码解释或编译为机器码。字节码和不同系统的 JVM 实现,是 java 实现【一次编译,随处运行】的关键。

  • 三者关系图:
    在这里插入图片描述

2. 什么是字节码?采用字节码的最大好处是什么?

答题思路:
解释字节码;
理解 java 程序变为机器代码的过程;
从 java 程序变为机器代码的过程出发,理解采用字节码的好处。

  • 字节码

    • 字节码是 java 程序通过编译器(javac)编译后的中间代码,是一种可移植的二进制代码(即扩展名为 .class 的文件),可以在任何支持 java 虚拟机 (JVM)的平台上运行。
    • 字节码不面向任何特定的处理器(CPU),只面向 java 虚拟机。
  • java 程序转变为机器代码的过程

    ① java 程序通过编译器 javac 编译生成 .class 字节码文件;

    ② .class 字节码文件转化为机器码是在 JVM 中完成的。JVM 类加载器加载字节码文件,通过解释器逐行解释执行,这种方式的执行速度较慢。

    ③ 有些方法和代码块是经常被调用的(即热点代码),引进 JIT(Just in time compilation)编译器,JIT 属于运行时编译。当 JIT 编译器完成首次编译后,会将字节码对应的机器码保存下来,下次可以直接使用。机器码的运行效率高于 java 解释器。

    ④ 因此,java 是解释和编译共存的语言。

在这里插入图片描述

  • 采用字节码的好处

    ① 可移植性:字节码是中间代码,可以在任何支持 JVM 的平台上运行,使 java 程序有很好的可移植性,这也是 java 跨平台的重要特性之一。

    ② 安全性:字节码在 JVM 中运行,所以 JVM 可以对字节码进行安全检查,以确保程序不会对系统造成威胁。

    ③ 性能:字节码是一种紧凑的二进制格式,相比于直接编译为机器码,可以更快地加载和传输,同时可以在运行时进行动态优化 (JIT),提高程序的执行效率。

    ④ 可读性:相比于直接编译为机器码,字节码作为中间代码具有更好的可读性,可以方便地进行反汇编和调试。

3. 什么是数据库事务?讲一下事务的ACID特性。

  • 数据库事务是指数据库管理系统(DBMS)中的一个操作序列,这些操作必须作为一个不可分割的单元执行,即要么全部执行成功,要么全部失败回滚。事务通常涉及到对数据库中的数据进行读写操作。
  • 事务的 ACID 特性指四个关键特征:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。
    1. 原子性(Atomicity):事务是一个原子操作,要么全部提交,要么全部回滚。当一个事务执行期间发生故障,操作系统会自动将其回滚到事务执行之前的状态,保证数据的一致性。
    2. 一致性(Consistency):事务执行结束后,数据必须保持一致性状态。在事务执行期间,数据库中的数据可以处于中间状态,但在事务完成时必须保证数据的一致性。
    3. 隔离性(Isolation):数据库系统必须保证事务之间相互隔离,不会互相干扰。隔离级别不同,会影响到事务的并发性和数据一致性,比如出现脏读、不可重复读、幻读等问题。
    4. 持久性(Durability):一旦事务提交,其所做的修改必须永久保存到数据库中。即使系统发生故障或宕机,数据也能够保持不变。
  • ACID 特性是保证事务正确性和数据一致性的重要手段。在设计数据库应用程序时,应该根据具体的业务需求和数据安全性要求,选择合适的隔离级别和事务提交策略,保证事务的可靠性和数据的一致性。

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

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

相关文章

linux安装mysql8且初始化表名忽略大小写

mysql8下载地址 MySQL8.0安装步骤 1、把安装包上传到linux系统,解压、重命名并移动到/usr/local/目录: cd ~ tar -xvf mysql-8.0.32-linux-glibc2.12-x86_64.tar.xz mv mysql-8.0.32-linux-glibc2.12-x86_64/ mysql80/ mv mysql80/ /usr/local/2、在M…

C/C++内存管理详解

目录 一、C内存分布 二、C语言与C内存管理方式 1、C语言中动态内存管理方式:malloc/calloc/realloc/free 2、C中的内存管理方式:new/delete 三、operator new与operator delete函数 1、函数概念: 2、函数使用: 3、底层原理…

【plt.pie绘制饼图】:从入门到精通,只需一篇文章!【Matplotlib可视化】

【📊plt.pie绘制饼图】:从入门到精通,只需一篇文章!【Matplotlib可视化】! 利用Matplotlib进行数据可视化示例 🌵文章目录🌵 🎨 一、饼图初探:基本概念与用途&#x1f4a…

anomalib1.0学习纪实-续1:增加新算法

0、基本信息 现在我要增加一个新算法:DDAD 他的代码,可以在github中找到:GitHub - arimousa/DDAD 一、基础操作: 1、修改anomalib\src\anomalib\models\__init__.py 我增加的第33行和61行, 2、 增加ddad文件夹和文…

趣学贝叶斯统计:概率密度分布(probability density function)

目录 1. 分布:PDF与PMFPDFPMF 2. 将概率密度函数应用于我们的问题用积分量化连续分布积分度量变化率:导数 3. R语言实践4. 小结 1. 分布:PDF与PMF PDF PDF定义在连续值上。在连续型随机变量的情况下,具体取某个数值的概率是0,因此PDF并不直…

idea将springboot打包成jar包

打开idea->view->Tool Windows->Terminal 在控制台输入: mvn clean package

HarmonyOS 通过getInspectorByKey获取指定元素高宽等属性

例如 这里 我们有这样一个组件 Entry Component struct Dom {build() {Column() {Row() {Circle({ width: 200, height: 200 }).fill(#20101010)}.id(ES)}.width(100%).height(100%)} }这里 我们就写了个很基本的组件结构 然后 我们写了个 Circle 组件 定义了宽高 然后 如果我…

设计模式七大原则

七大原则有: 单一原则原则接口隔离原则依赖倒转原则里氏替换原则开闭原则迪米特法则合成复用原则 1 单一职责原则 1.1 基本介绍 ​ 对类来说的,即一个类应该只负责一项职责。 如类A负责两个不同的职责:职责1,职责2。当职责1需…

MATLAB实现朴素贝叶斯分类

朴素贝叶斯(Naive Bayes)是一种基于贝叶斯定理的分类算法,它假设特征之间相互独立,从而简化了计算复杂性。该算法常用于文本分类、垃圾邮件过滤、情感分析等应用场景。 MATLAB实现鸢尾花数据集分类代码如下: clear lo…

【C语言】通讯录(静态版本+动态版本)思路解析+完整源代码

通讯录 由于代码比较长,为了增加可读性,分成了contact.h,contact.c,test.c,分别用来声明函数或者类型,实现函数功能,测试代码 contact.h 我们希望通讯录具有增加联系人,删除联系人…

Eclipse 创建 Hello World 工程

Eclipse 创建 Hello World 工程 1. Hello WorldReferences Download and install the Eclipse IDE. 1. Hello World Eclipse -> double click -> Launch 单击蓝色方框 (右上角) 最大化 IDE File -> New -> C Project -> Finish Project name:工程名…

【小沐学GIS】基于C++QT绘制三维数字地球Earth(OpenGL)

🍺三维数字地球系列相关文章如下🍺:1【小沐学GIS】基于C绘制三维数字地球Earth(456:OpenGL、glfw、glut)第一期2【小沐学GIS】基于C绘制三维数字地球Earth(456:OpenGL、glfw、glut)第二期3【小沐…

Redis篇----第三篇

系列文章目录 文章目录 系列文章目录前言一、缓存雪崩**二、缓存穿透三、缓存预热四、缓存更新五、缓存降级 前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女…

【Jvm】性能调优(拓展)Jprofiler如何监控和解决死锁、内存泄露问题

文章目录 Jprofiler简介1.安装及IDEA集成Jprofiler2.如何监控并解决死锁3.如何监控及解决内存泄露(重点)4.总结5.后话 Jprofiler简介 Jprofilers是针对Java开发的性能分析工具(免费试用10天), 可以对Java程序的内存,CPU,线程,GC,锁等进行监控和分析, 1.安装及IDEA集成Jprofil…

【AIGC】Stable Diffusion的生成参数入门

Stable Diffusion 的生成参数是用来控制图像生成过程的重要设置,下面是一些常见的生成参数及其详解 1、采样器,关于采样器的选择参照作者的上一篇文章 2、采样步数(Sampling Steps)是指在生成图像时模型执行的总步数&#xff0c…

计算机网络——18无连接传输UDP

无连接传输UDP UDP “尽力而为的”服务,报文段可能 丢失送到应用进程的报文段乱序 无连接 UDP发送端和接收端之间没有握手每个UDP报文段都被独立的处理 UDP被用于 流媒体DNSSNMP 在UDP上实现可靠传输 在应用层增加可靠性应用特定的差错格式 UDP:用户…

unity学习(19)——客户端与服务器合力完成注册功能(1)入门准备

逆向服务器用了三天的时间,但此时觉得一切都值,又可以继续学习了。 服务器中登录请求和注册请求由command变量进行区分,上一层的type变量都是login。 public void process(Session session, SocketModel model) {switch (model.Command){ca…

C++学习:stack

1.stack的定义和结构 stack是一种后进先出(LIF0)的数据结构&#xff0c;使用前需要包含头文件,stack提供了一组函数来操作和访问元素&#xff0c;但它的功能相对较简单。stack的定义和结构如下(仅作了解即可): template<class T, class (ontainer deque<T>> cla…

CTFshow web(php命令执行 68-71)

web68 还是那句话&#xff0c;没看到flag在哪&#xff0c;那就优先找到flag位置 这里cvar_dump(scandir("/")); 直接输出根目录的位置&#xff0c;然后查看源代码&#xff0c;发现flag位置为flag.txt 知道flag在根目录下面的flag.txt直接访问就好了 cinclude(/flag…

element 表单提交图片(表单上传图片)

文章目录 使用场景页面效果前端代码 使用场景 vue2 element 表单提交图片   1.点击【上传图片】按钮择本地图片&#xff08;只能选择一张图片&#xff09;后。   2.点击图片&#xff0c;支持放大查看。   3.点击【保存】按钮&#xff0c;提交表单。 页面效果 前端代码…