forked from InterviewTips/Java
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request InterviewTips#2 from ronething/master
update some questions
- Loading branch information
Showing
6 changed files
with
989 additions
and
8 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
# 什么是 ACID | ||
|
||
## 1. 原子性(Atomicity) | ||
|
||
事务被视为不可分割的最小单元,事务的所有操作要么全部提交成功,要么全部失败回滚。 | ||
|
||
回滚可以用日志来实现,日志记录着事务所执行的修改操作,在回滚时反向执行这些修改操作即可。 | ||
|
||
## 2. 一致性(Consistency) | ||
|
||
数据库在事务执行前后都保持一致性状态。在一致性状态下,所有事务对一个数据的读取结果都是相同的。 | ||
|
||
## 3. 隔离性(Isolation) | ||
|
||
一个事务所做的修改在最终提交以前,对其它事务是不可见的。 | ||
|
||
## 4. 持久性(Durability) | ||
|
||
一旦事务提交,则其所做的修改将会永远保存到数据库中。即使系统发生崩溃,事务执行的结果也不能丢失。 | ||
|
||
可以通过数据库备份和恢复来实现,在系统发生崩溃时,使用备份的数据库进行数据恢复。 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
# JRE、JDK、JVM 及 JIT 之间有什么不同 | ||
|
||
## java 虚拟机 (JVM) | ||
|
||
使用 java 编程语言的主要优势就是平台的独立性。你曾经想知道过 java 怎么实现平台的独立性吗?对,就是虚拟机,它抽象化了硬件设备,开发者和他们的程序的得以操作系统。虚拟机的职责就是处理和操作系统的交流。java 不同的接口规范对任何平台都有良好的支持,因为 jvm 很好的实现了每个平台的规范。jvm 可以理解伪代码字节码,在用户和操作系统之间建立了一层枢纽。 | ||
|
||
## java 运行时环境 (JRE) | ||
|
||
java 运行时环境是 JVM 的一个超集。JVM 对于一个平台或者操作系统是明确的,而 JRE 确实一个一般的概念,他代表了完整的运行时环境。我们在 jre 文件夹中看到的所有的 jar 文件和可执行文件都会变成运行时的一部分。事实上,运行时 JRE 变成了 JVM。所以对于一般情况时候使用 JRE,对于明确的操作系统来说使用 JVM。当你下载了 JRE 的时候,也就自动下载了 JVM。 | ||
|
||
## java 开发工具箱 (JDK) | ||
|
||
java 开发工具箱指的是编写一个 java 应用所需要的所有 jar 文件和可执行文件。事实上,JRE 是 JDK 的一部分。如果你下载了 JDK,你会看到一个名叫 JRE 的文件夹在里面。JDK 中要被牢记的 jar 文件就是 tools.jar,它包含了用于执行 java 文档的类还有用于类签名的 jar 包。 | ||
|
||
## 即时编译器 (JIT) | ||
|
||
即时编译器是种特殊的编译器,它通过有效的把字节码变成机器码来提高 JVM 的效率。JIT 这种功效很特殊,因为他把检测到的相似的字节码编译成单一运行的机器码,从而节省了 CPU 的使用。这和其他的字节码编译器不同,因为他是运行时编译(从字节码到机器码)而不是在程序运行之前。正是因为这些,动态编译这个词汇才和 JIT 有那么紧密的关系。 |
Oops, something went wrong.