【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.mzph.cn/news/690407.shtml

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

相关文章

深度解析 Transformer 模型:原理、应用与实践指南【收藏版】

深度解析 Transformer 模型:原理、应用与实践指南 1. Transformer 模型的背景与引言2. Transformer 模型的原理解析2.1 自注意力机制(Self-Attention)自注意力机制原理 2.2 多头注意力机制(Multi-Head Attention)多头注…

java+vue_springboot企业设备安全信息系统14jbc

企业防爆安全信息系统采用B/S架构,数据库是MySQL。网站的搭建与开发采用了先进的java进行编写,使用了vue框架。该系统从三个对象:由管理员、人员和企业来对系统进行设计构建。主要功能包括:个人信息修改,对人员管理&am…

C++ 浮点数二分 数的三次方根

给定一个浮点数 n ,求它的三次方根。 输入格式 共一行,包含一个浮点数 n 。 输出格式 共一行,包含一个浮点数,表示问题的解。 注意,结果保留 6 位小数。 数据范围 −10000≤n≤10000 输入样例: 1000.00…

树与二叉树

树与二叉树 文章目录 树与二叉树一、树的概念及结构1.、树的概念2、树的相关概念1.3 树的表示 二、二叉树1.概念2、特殊的二叉树3、二叉树的性质4、二叉树的存储结构 三、二叉树的顺序结构及实现1、二叉树的顺序结构2、堆的概念及结构3、堆的实现 四、二叉树链式结构的实现1、遍…

python统计分析——一元线性回归分析

参考资料:用python动手学统计学 1、导入库 # 导入库 # 用于数值计算的库 import numpy as np import pandas as pd import scipy as sp from scipy import stats # 用于绘图的库 import matplotlib.pyplot as plt import seaborn as sns sns.set() # 用于估计统计…

JAVA常见IO模型 BIO、NIO、AIO总结

BIO Blocking IO 同步阻塞型IO。当系统进行IO读写的时候,会阻塞,直到IO读写完毕。比如调用系统Read后,需要将内核空间的数据读取到用户空间。需要等待内核空间 数据准备,数据就绪,拷贝数据,线程一直处于阻…

IO进程:fread\fwrite图像拷贝,read\write文件拷贝,时间函数

1.使用fread、fwrite实现图片拷贝 程序代码&#xff1a; 1 #include<myhead.h>2 int main(int argc, const char *argv[])3 {4 //判断传入文件个数5 if(argc!3)6 {7 printf("input file error\n");8 printf("usage:./a.out …

【QCA6174】SDX12+QCA6174驱动屏蔽120/124/128信道修改方案

SDX12基线版本 SDX12.LE.1.0-00215-NBOOT.NEFS.PROD-1.39743.1 问题描述 对于欧洲国家来说,默认支持DFS信道,但是有三个信道比较特殊,是天气雷达信道,如下图所示120、124、128,天气雷达信道有个特点就是在信号可以发射之前需要检测静默15min,如果信道自动选择到了天气雷达…

BI 数据分析,数据库,Office,可视化,数据仓库

AIGC ChatGPT 职场案例 AI 绘画 与 短视频制作 PowerBI 商业智能 68集 Mysql 8.0 54集 Oracle 21C 142集 Office 2021实战应用 Python 数据分析实战&#xff0c; ETL Informatica 数据仓库案例实战 51集 Excel 2021实操 100集&#xff0c; Excel 2021函数大全 80集 Excel 2021…

阿里云服务器镜像选择方法详解,这么选就对了!

阿里云服务器镜像怎么选择&#xff1f;云服务器操作系统镜像分为Linux和Windows两大类&#xff0c;Linux可以选择Alibaba Cloud Linux&#xff0c;Windows可以选择Windows Server 2022数据中心版64位中文版&#xff0c;阿里云服务器网aliyunfuwuqi.com来详细说下阿里云服务器操…

HarmonyOS 鸿蒙应用开发(十一、面向鸿蒙开发的JavaScript基础)

ArkTS 是HarmonyOS&#xff08;鸿蒙操作系统&#xff09;原生应用开发的首选语言。它是用于构建用户界面的一种TypeScript方言&#xff0c;扩展了TypeScript以适应HarmonyOS生态系统的UI开发需求。ArkTS 融合了TypeScript的静态类型系统和现代UI框架的设计理念&#xff0c;为开…

练习题解(关于最短路径)

目录 1.租用游艇 2.邮递员送信 3.【模板】单源最短路径&#xff08;标准版&#xff09; 1.租用游艇 P1359 租用游艇 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 输入数据&#xff1a; 3 5 15 7 因为这道题数据不大&#xff0c;所有我们直接使用Floyd 算法。 这道题大…

Linux系统——防火墙Firewalld

目录 一、firewalld介绍 1.归入zone顺序 2.firewalld zone分类 3.预定义服务 二、图形化操作 1.打开firewalld图形化界面 2.以http服务为例&#xff0c;打开httpd服务 3.修改端口号 三、命令行配置 1.基础配置 2.查看现有firewalld设置 3.设置查看默认区 4.添加源…

类(接口)图几种箭头含义

导语 在平时的开发中&#xff0c;难免会遇到画UML图的时候&#xff0c;也就是我们所说的类图&#xff0c;但是UML图中的箭头多种多样&#xff0c;所代表的含义也是各不相同&#xff0c;今天我们就来说说这几种箭头所代表的含义。 1 泛化 概念&#xff1a;泛化表示一个更泛化的元…

CTFshow web(php命令执行 55-59)

web55 <?php /* # -*- coding: utf-8 -*- # Author: Lazzaro # Date: 2020-09-05 20:49:30 # Last Modified by: h1xa # Last Modified time: 2020-09-07 20:03:51 # email: h1xactfer.com # link: https://ctfer.com */ // 你们在炫技吗&#xff1f; if(isset($_GET[…

Jetpack 之Glance+Compose实现一个小组件

Glance&#xff0c;官方对其解释是使用 Jetpack Compose 样式的 API 构建远程 Surface 的布局&#xff0c;通俗的讲就是使用Compose风格的API来搭建小插件布局&#xff0c;其最新版本是2022年2月23日更新的1.0.0-alpha03。众所周知&#xff0c;Compose样式的API与原生差别不小&…

Android逆向学习(七)绕过root检测与smali修改学习

Android逆向学习&#xff08;七&#xff09;绕过root检测与smali修改学习 一、写在前面 这是吾爱破解正己大大教程的第五个作业&#xff0c;然后我的系统还是ubuntu&#xff0c; 这个是剩下作业的完成步骤。 二、任务目标 现在我们已经解决了一些问题&#xff0c;现在剩下的…

matplotlib图例使用案例1.1:在不同行或列的图例上添加title

我们将图例进行行显示或者列显示后&#xff0c;只能想继续赋予不同行或者列不同的title来进行分类。比较简单的方式&#xff0c;就是通过ax.annotate方法添加标签&#xff0c;这样方法复用率比较低&#xff0c;每次使用都要微调ax.annotate的显示位置。比较方便的方法是在案例1…

基于jieba、TfidfVectorizer、LogisticRegression的垃圾邮件分类,模型平均得分为0.98左右(附代码和数据集)

基于jieba、TfidfVectorizer、LogisticRegression的垃圾邮件分类,模型平均得分为0.98左右(附代码和数据集)。 垃圾邮件分类识别是一种常见的文本分类任务,旨在将收件箱中的邮件分为垃圾邮件和非垃圾邮件。以下是一些常用的技术和方法用于垃圾邮件分类识别: 基于规则的过…

探索设计模式的魅力:迭代器模式让你轻松驾驭复杂数据集合

​&#x1f308; 个人主页&#xff1a;danci_ &#x1f525; 系列专栏&#xff1a;《设计模式》 &#x1f4aa;&#x1f3fb; 制定明确可量化的目标&#xff0c;并且坚持默默的做事。 文章目录 一、&#x1f4a1; 引言二、原理与结构 &#x1f4da;&#x1f465; 迭代器模式的关…