File tree Expand file tree Collapse file tree 4 files changed +12
-0
lines changed
Expand file tree Collapse file tree 4 files changed +12
-0
lines changed Original file line number Diff line number Diff line change 193193 - [ Array] ( /algorithm/LeetCode/Array.md )
194194 - [ Partition Array] ( /algorithm/LeetCode/Array/Partition-Array.md )
195195 - [ Subarray Sum] ( /algorithm/LeetCode/Array/Subarray-Sum.md )
196+ - [ String] ( /algorithm/LeetCode/String.md )
197+ - [ Restore IP Addresses] ( /algorithm/LeetCode/String/ip.md )
196198
197199## 设计模式
198200
Original file line number Diff line number Diff line change 77加载,验证,准备,解析,初始化,使用和卸载。其中验证,准备,解析3个部分统称为连接。
88
99这7个阶段发生顺序如下图:
10+
1011![ ] ( http://upload-images.jianshu.io/upload_images/3985563-0108cc612a217322.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240 )
1112
1213加载,验证,准备,初始化,卸载这5个阶段的顺序是确定的,而解析阶段则不一定:它在某些情况下可以在初始化完成后在开始,这是为了支持Java语言的运行时绑定。
2728
2829### 4.类加载的具体过程:
2930** 加载:**
31+
3032①.通过一个类的全限定名来获取定义此类的二进制字节流
3133
3234②.将这个字节流所代表的静态存储结构转换为方法区内的运行时数据结构
4042包含四个阶段的校验动作
4143
4244a.文件格式验证
45+
4346验证字节流是否符合Class文件格式的规范,并且能被当前版本的虚拟机处理。
47+
4448b.元数据验证
49+
4550对类的元数据信息进行语义校验,是否不存在不符合Java语言规范的元数据信息
51+
4652c.字节码验证
53+
4754最复杂的一个阶段,主要目的是通过数据流和控制流分析,确定程序语义是合法的,符合逻辑的。对类的方法体进行校验分析,保证被校验类的方法在运行时不会做出危害虚拟机安全的事件。
55+
4856d.符号引用验证
57+
4958最后一个阶段的校验发生在虚拟机将符号引用转换为直接引用的时候,这个转换动作将在连接的第三个阶段——解析阶段中发生。
59+
5060符号验证的目的是确保解析动作能正常进行。
5161
5262** 准备:**
You can’t perform that action at this time.
0 commit comments