Skip to content

Commit

Permalink
Merge pull request InterviewTips#2 from ronething/master
Browse files Browse the repository at this point in the history
update some questions
  • Loading branch information
ronething authored Aug 27, 2018
2 parents fa4f1b2 + 3b92904 commit dcb6425
Show file tree
Hide file tree
Showing 6 changed files with 989 additions and 8 deletions.
21 changes: 21 additions & 0 deletions ACID.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# 什么是 ACID

## 1. 原子性(Atomicity)

事务被视为不可分割的最小单元,事务的所有操作要么全部提交成功,要么全部失败回滚。

回滚可以用日志来实现,日志记录着事务所执行的修改操作,在回滚时反向执行这些修改操作即可。

## 2. 一致性(Consistency)

数据库在事务执行前后都保持一致性状态。在一致性状态下,所有事务对一个数据的读取结果都是相同的。

## 3. 隔离性(Isolation)

一个事务所做的修改在最终提交以前,对其它事务是不可见的。

## 4. 持久性(Durability)

一旦事务提交,则其所做的修改将会永远保存到数据库中。即使系统发生崩溃,事务执行的结果也不能丢失。

可以通过数据库备份和恢复来实现,在系统发生崩溃时,使用备份的数据库进行数据恢复。
17 changes: 17 additions & 0 deletions JRE、JDK、JVM 及 JIT 之间有什么不同.md
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 有那么紧密的关系。
Loading

0 comments on commit dcb6425

Please sign in to comment.