mirror of
https://github.com/Snailclimb/JavaGuide
synced 2025-07-28 12:22:17 +08:00
Compare commits
4 Commits
61c3ffd6a2
...
04a9edb307
Author | SHA1 | Date | |
---|---|---|---|
|
04a9edb307 | ||
|
aef31f195a | ||
|
a71b7cebdc | ||
|
7d45aaba78 |
@ -42,11 +42,23 @@ head:
|
||||
- **[《操作系统设计与实现》](https://book.douban.com/subject/2044818/)** :操作系统的权威教学教材。
|
||||
- **[《Orange'S:一个操作系统的实现》](https://book.douban.com/subject/3735649/)** : 从只有二十行的引导扇区代码出发,一步一步地向读者呈现一个操作系统框架的完成过程。配合《操作系统设计与实现》一起食用更佳!
|
||||
|
||||
如果你比较喜欢看视频的话,我建议你可以看看北京交通大学的慕课[《操作系统》](https://www.icourse163.org/course/NJTU-1003245001)。
|
||||
如果你比较喜欢看视频的话,推荐哈工大李治军老师主讲的慕课 [《操作系统》](https://www.icourse163.org/course/HIT-1002531008),内容质量吊打一众国家精品课程。
|
||||
|
||||

|
||||
课程的大纲如下:
|
||||
|
||||
这个视频课程基本把操作系统的体系结构、设计机理及实现方法和技术相关重要的知识点介绍的差不多了。
|
||||

|
||||
|
||||
主要讲了一个基本操作系统中的六个基本模块: CPU 管理、内存管理、外设管理、磁盘管理与文件系统、用户接口和启动模块 。
|
||||
|
||||
课程难度还是比较大的,尤其是课后的 lab。如果大家想要真正搞懂操作系统底层原理的话,对应的 lab 能做尽量做一下。正如李治军老师说的那样:“纸上得来终觉浅,绝知此事要躬行”。
|
||||
|
||||

|
||||
|
||||
如果你能独立完成几个 lab 的话,我相信你对操作系统的理解绝对要上升几个台阶。当然了,如果你仅仅是为了突击面试的话,那就不需要做 lab 了。
|
||||
|
||||
说点心里话,我本人非常喜欢李治军老师讲的课,我觉得他是国内不可多得的好老师。他知道我们国内的教程和国外的差距在哪里,也知道国内的学生和国外学生的差距在哪里,他自己在努力着通过自己的方式来缩小这个差距。真心感谢,期待李治军老师的下一个课程。
|
||||
|
||||

|
||||
|
||||
还有下面这个国外的课程 [《深入理解计算机系统 》](https://www.bilibili.com/video/av31289365?from=search&seid=16298868573410423104) 也很不错。
|
||||
|
||||
|
@ -92,7 +92,7 @@ InnoDB 引擎中,其数据文件本身就是索引文件。相比 MyISAM,索
|
||||
|
||||
在 MySQL 的 InnoDB 的表中,当没有显示的指定表的主键时,InnoDB 会自动先检查表中是否有唯一索引且不允许存在null值的字段,如果有,则选择该字段为默认的主键,否则 InnoDB 将会自动创建一个 6Byte 的自增主键。
|
||||
|
||||

|
||||

|
||||
|
||||
### 二级索引(辅助索引)
|
||||
|
||||
@ -110,7 +110,7 @@ InnoDB 引擎中,其数据文件本身就是索引文件。相比 MyISAM,索
|
||||
|
||||
二级索引:
|
||||
|
||||

|
||||

|
||||
|
||||
## 聚集索引与非聚集索引
|
||||
|
||||
|
@ -574,9 +574,9 @@ class BasicTypeVar{
|
||||
}
|
||||
```
|
||||
|
||||
### 包装类型的常量池技术了解么?
|
||||
### 包装类型的缓存机制了解么?
|
||||
|
||||
Java 基本类型的包装类的大部分都实现了常量池技术。
|
||||
Java 基本数据类型的包装类型的大部分都用到了缓存机制来提升性能。
|
||||
|
||||
`Byte`,`Short`,`Integer`,`Long` 这 4 种包装类默认创建了数值 **[-128,127]** 的相应类型的缓存数据,`Character` 创建了数值在 **[0,127]** 范围的缓存数据,`Boolean` 直接返回 `True` or `False`。
|
||||
|
||||
@ -629,7 +629,7 @@ public static Boolean valueOf(boolean b) {
|
||||
|
||||
如果超出对应范围仍然会去创建新的对象,缓存的范围区间的大小只是在性能和资源之间的权衡。
|
||||
|
||||
两种浮点数类型的包装类 `Float`,`Double` 并没有实现常量池技术。
|
||||
两种浮点数类型的包装类 `Float`,`Double` 并没有实现缓存机制。
|
||||
|
||||
```java
|
||||
Integer i1 = 33;
|
||||
@ -653,7 +653,7 @@ Integer i2 = new Integer(40);
|
||||
System.out.println(i1==i2);
|
||||
```
|
||||
|
||||
`Integer i1=40` 这一行代码会发生装箱,也就是说这行代码等价于 `Integer i1=Integer.valueOf(40)` 。因此,`i1` 直接使用的是常量池中的对象。而`Integer i2 = new Integer(40)` 会直接创建新的对象。
|
||||
`Integer i1=40` 这一行代码会发生装箱,也就是说这行代码等价于 `Integer i1=Integer.valueOf(40)` 。因此,`i1` 直接使用的是缓存中的对象。而`Integer i2 = new Integer(40)` 会直接创建新的对象。
|
||||
|
||||
因此,答案是 `false` 。你答对了吗?
|
||||
|
||||
|
@ -226,11 +226,11 @@ HotSpot 虚拟机中字符串常量池的实现是 `src/hotspot/share/classfile/
|
||||
|
||||
JDK1.7 之前,字符串常量池存放在永久代。JDK1.7 字符串常量池和静态变量从永久代移动了 Java 堆中。
|
||||
|
||||

|
||||

|
||||
|
||||

|
||||

|
||||
|
||||

|
||||

|
||||
|
||||
**JDK 1.7 为什么要将字符串常量池移动到堆中?**
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user