mirror of
https://github.com/Snailclimb/JavaGuide
synced 2025-07-28 12:22:17 +08:00
Compare commits
11 Commits
fd47a1c687
...
bd61ba6dbe
Author | SHA1 | Date | |
---|---|---|---|
|
bd61ba6dbe | ||
|
31f8e52e3a | ||
|
c09fdc247c | ||
|
0309d4d747 | ||
|
28adc53d74 | ||
|
c1729fdc38 | ||
|
2471e2d642 | ||
|
11afae8137 | ||
|
236986590c | ||
|
654c64a376 | ||
|
ecf5f78ac0 |
@ -76,4 +76,4 @@ TCP 协议保证了数据传输的可靠性,是数据包传输的主力协议
|
||||
- 转发:将分组从路由器的输入端口转移到合适的输出端口。
|
||||
- 路由:确定分组从源到目的经过的路径。
|
||||
|
||||
所以到目前为止,我们的数据包经过了应用层、传输层的封装,来到了网络层,终于开始准备在物理层面传输了,第一个要解决的问题就是——**往哪里传输?或者说,要把数据包发到哪个路由器上?**这便是 BGP 协议要解决的问题。
|
||||
所以到目前为止,我们的数据包经过了应用层、传输层的封装,来到了网络层,终于开始准备在物理层面传输了,第一个要解决的问题就是——**往哪里传输?或者说,要把数据包发到哪个路由器上?** 这便是 BGP 协议要解决的问题。
|
||||
|
@ -86,7 +86,7 @@ ER 图由下面 3 个要素组成:
|
||||
|
||||
为什么不要用外键呢?大部分人可能会这样回答:
|
||||
|
||||
1. **增加了复杂性:** a. 每次做 DELETE 或者 UPDATE 都必须考虑外键约束,会导致开发的时候很痛苦, 测试数据极为不方便; b. 外键的主从关系是定的,假如那天需求有变化,数据库中的这个字段根本不需要和其他表有关联的话就会增加很多麻烦。
|
||||
1. **增加了复杂性:** a. 每次做 DELETE 或者 UPDATE 都必须考虑外键约束,会导致开发的时候很痛苦, 测试数据极为不方便; b. 外键的主从关系是定的,假如哪天需求有变化,数据库中的这个字段根本不需要和其他表有关联的话就会增加很多麻烦。
|
||||
2. **增加了额外工作**:数据库需要增加维护外键的工作,比如当我们做一些涉及外键字段的增,删,更新操作之后,需要触发相关操作去检查,保证数据的的一致性和正确性,这样会不得不消耗数据库资源。如果在应用层面去维护的话,可以减小数据库压力;
|
||||
3. **对分库分表不友好**:因为分库分表下外键是无法生效的。
|
||||
4. ……
|
||||
|
@ -303,7 +303,7 @@ int d = c--;
|
||||
int e = --d;
|
||||
```
|
||||
|
||||
答案:`a = 11` 、`b = 9` 、 `c = 11` 、 `d = 11` 、 `e = 10`。
|
||||
答案:`a = 11` 、`b = 9` 、 `c = 10` 、 `d = 10` 、 `e = 10`。
|
||||
|
||||
### 移位运算符
|
||||
|
||||
|
@ -555,7 +555,7 @@ public class MyServiceLoader<S> {
|
||||
|
||||
其实不难发现,SPI 机制的具体实现本质上还是通过反射完成的。即:**我们按照规定将要暴露对外使用的具体实现类在 `META-INF/services/` 文件下声明。**
|
||||
|
||||
另外,SPI 机制在很多框架中都有应用:Spring 框架的基本原理也是类似的方式。还有 Dubbo 框架提供同样的 SPI 扩展机制,只不过 Dubbo 和 spring 框架中的 SPI 机制具体实现方式跟咱们今天学得这个有些细微的区别,不过整体的原理都是一致的,相信大家通过对 JDK 中 SPI 机制的学习,能够一通百通,加深对其他高深框的理解。
|
||||
另外,SPI 机制在很多框架中都有应用:Spring 框架的基本原理也是类似的方式。还有 Dubbo 框架提供同样的 SPI 扩展机制,只不过 Dubbo 和 spring 框架中的 SPI 机制具体实现方式跟咱们今天学得这个有些细微的区别,不过整体的原理都是一致的,相信大家通过对 JDK 中 SPI 机制的学习,能够一通百通,加深对其他高深框架的理解。
|
||||
|
||||
通过 SPI 机制能够大大地提高接口设计的灵活性,但是 SPI 机制也存在一些缺点,比如:
|
||||
|
||||
|
@ -149,7 +149,7 @@ Java 类的继承关系由类索引、父类索引和接口索引集合三项确
|
||||
|
||||
类索引用于确定这个类的全限定名,父类索引用于确定这个类的父类的全限定名,由于 Java 语言的单继承,所以父类索引只有一个,除了 `java.lang.Object` 之外,所有的 Java 类都有父类,因此除了 `java.lang.Object` 外,所有 Java 类的父类索引都不为 0。
|
||||
|
||||
接口索引集合用来描述这个类实现了那些接口,这些被实现的接口将按 `implements` (如果这个类本身是接口的话则是`extends`) 后的接口顺序从左到右排列在接口索引集合中。
|
||||
接口索引集合用来描述这个类实现了哪些接口,这些被实现的接口将按 `implements` (如果这个类本身是接口的话则是`extends`) 后的接口顺序从左到右排列在接口索引集合中。
|
||||
|
||||
### 字段表集合(Fields)
|
||||
|
||||
|
@ -252,7 +252,7 @@ System.out.println(aa==bb); // true
|
||||
|
||||
HotSpot 虚拟机中字符串常量池的实现是 `src/hotspot/share/classfile/stringTable.cpp` ,`StringTable` 可以简单理解为一个固定大小的`HashTable` ,容量为 `StringTableSize`(可以通过 `-XX:StringTableSize` 参数来设置),保存的是字符串(key)和 字符串对象的引用(value)的映射关系,字符串对象的引用指向堆中的字符串对象。
|
||||
|
||||
JDK1.7 之前,字符串常量池存放在永久代。JDK1.7 字符串常量池和静态变量从永久代移动了 Java 堆中。
|
||||
JDK1.7 之前,字符串常量池存放在永久代。JDK1.7 字符串常量池和静态变量从永久代移动到了 Java 堆中。
|
||||
|
||||

|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user