Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitbd4509a

Browse files
committed
修改图片地址1
1 parent9982e20 commitbd4509a

File tree

7 files changed

+16
-14
lines changed

7 files changed

+16
-14
lines changed

‎_sidebar.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
*[理解动态代理](docs/Java/理解动态代理.md)
1313
*[理解抽象类与接口](docs/Java/理解抽象类与接口.md)
1414
*[理解异常处理](docs/Java/理解异常处理.md)
15-
*[理解IO](docs/Java/IO.md)
1615
*[理解数据结构队列](docs/Java/理解数据结构队列.md)
1716
*[理解内部类与枚举类](docs/Java/各种内部类和枚举类.md)
1817
*[理解克隆与序列化应用](docs/Java/理解克隆与序列化应用.md)

‎docs/Java/Java关键字理解.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ static {
4242
###1.2 初始化时机
4343

4444
对于被 static 修饰的类变量、方法块和静态方法的初始化时机,我们写了一个测试 demo,如下图:
45-
![图片描述](https://img1.sycdn.imooc.com/5d5fc0be000136a322560976.png) 打印出来的结果是:
45+
![图片描述](https://img02.sogoucdn.com/app/a/100520146/36a3d5e423869264d2b6bcd668e4d83c) 打印出来的结果是:
4646

4747
父类静态变量初始化
4848
父类静态块初始化
@@ -92,7 +92,7 @@ public void testCatchFinally() {
9292
```
9393

9494
这个代码演示了在 try、catch 中都遇到了异常,代码的执行顺序为:try -> catch -> finally,输出的结果如下:
95-
![图片描述](https://img1.sycdn.imooc.com/5d5fc0d40001ede717880302.png) 可以看到两点:
95+
![图片描述](https://img03.sogoucdn.com/app/a/100520146/ede7c8130735e2e1d3249d94fad07f45) 可以看到两点:
9696

9797
1. finally 先执行后,再抛出 catch 的异常;
9898
2. 最终捕获的异常是 catch 的异常,try 抛出来的异常已经被 catch 吃掉了,所以当我们遇见 catch 也有可能会抛出异常时,我们可以先打印出 try 的异常,这样 try 的异常在日志中就会有所体现。
@@ -110,7 +110,7 @@ volatile 的意思是可见的,常用来修饰某个共享变量,意思是
110110
volatile 关键字就会触发这种机制,加了 volatile 关键字的变量,就会被识别成共享变量,内存中值被修改后,会通知到各个 CPU 缓存,使 CPU 缓存中的值也对应被修改,从而保证线程从 CPU 缓存中拿取出来的值是最新的。
111111

112112
我们画了一个图来说明一下:
113-
![图片描述](https://img1.sycdn.imooc.com/5d5fc0ea000100a312740736.png) 从图中我们可以看到,线程 1 和线程 2 一开始都读取了 C 值,CPU 1 和 CPU 2 缓存中也都有了 C 值,然后线程 1 把 C 值修改了,这时候内存的值和 CPU 2 缓存中的 C 值就不等了,内存这时发现 C 值被 volatile 关键字修饰,发现其是共享变量,就会使 CPU 2 缓存中的 C 值状态置为无效,CPU 2 会从内存中重新拉取最新的值,这时候线程 2 再来读取 C 值时,读取的已经是内存中最新的值了。
113+
![图片描述](https://img01.sogoucdn.com/app/a/100520146/00a3f76b262769c00cf2ee3d3920b29e) 从图中我们可以看到,线程 1 和线程 2 一开始都读取了 C 值,CPU 1 和 CPU 2 缓存中也都有了 C 值,然后线程 1 把 C 值修改了,这时候内存的值和 CPU 2 缓存中的 C 值就不等了,内存这时发现 C 值被 volatile 关键字修饰,发现其是共享变量,就会使 CPU 2 缓存中的 C 值状态置为无效,CPU 2 会从内存中重新拉取最新的值,这时候线程 2 再来读取 C 值时,读取的已经是内存中最新的值了。
114114

115115
##5 transient
116116

@@ -119,7 +119,7 @@ transient 关键字我们常用来修饰类变量,意思是当前变量是无
119119
##6 default
120120

121121
default 关键字一般会用在接口的方法上,意思是对于该接口,子类是无需强制实现的,但自己必须有默认实现,我们举个例子如下:
122-
![图片描述](https://img1.sycdn.imooc.com/5d5fc4460001f3cb17220650.png)
122+
![图片描述](https://img02.sogoucdn.com/app/a/100520146/f3cb95c14b3375d311a8638789e7ce81)
123123

124124
##7 面试题
125125

‎docs/Java/理解基本数据类型与包装类.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ List list = new ArrayList<>(); // 编译器代码报错
6565

6666
因为包装类都实现了 Serializable 接口,所以包装类天然支持序列化和反序列化。比如 Integer 的类图如下:
6767

68-
![Integer 类图](https://images.gitbook.cn/cb8c6a80-baa8-11e9-8bd3-43e1fddff917)
68+
![Integer 类图](https://img04.sogoucdn.com/app/a/100520146/7c43cd41ce9a3cbb00a90c09d4bab610)
6969

7070
**4. 类型转换**
7171

@@ -261,7 +261,7 @@ D:以上都不是
261261

262262
答:会报错,因为值 3.4 是 double 类型,float 类型级别小于 double 类型,所以会报错。如下图所示:
263263

264-
![报错示例图](https://images.gitbook.cn/1cab8440-baaa-11e9-8bd3-43e1fddff917)
264+
![报错示例图](https://img02.sogoucdn.com/app/a/100520146/2b8fd3d17b087b32d65ef30f31c7e11c)
265265

266266
####8. 为什么需要包装类?
267267

‎docs/Java/理解异常处理.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ try {
4242

4343
需要注意的是 Java 虚拟机会从上往下匹配错误类型,因此前面的 catch 异常类型不能包含后面的异常类型。比如上面的代码如果把 Exception 放在最前面编译器就会报错,具体可以参考下面的图片。
4444

45-
![enter image description here](https://images.gitbook.cn/5f929c30-be47-11e9-b285-b7b5dec36e68)
45+
![enter image description here](https://img03.sogoucdn.com/app/a/100520146/82758fb0ac32a583eaa81969a6f856dd)
4646

4747
###异常处理的发展
4848

‎docs/Java/理解泛型与迭代器.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ arrayList.add("Java");
3838

3939
报错信息如下图所示:
4040

41-
![enter image description here](https://images.gitbook.cn/83dce010-cdeb-11e9-932d-6123ff488b55)
41+
![enter image description here](https://img01.sogoucdn.com/app/a/100520146/ce4396a172a0c78f16705674b22ea316)
4242

4343
这样就可以避免开头示例中,类型不一致导致程序运行过程中报错的问题了。
4444

@@ -216,19 +216,19 @@ System.out.println(list.getClass() == list2.getClass());
216216

217217
答:`List<?>` 可以容纳任意类型,只不过`List<?>` 被赋值之后,就不允许添加和修改操作了;而`List<Object>``List<?>` 不同的是它在赋值之后,可以进行添加和修改操作,如下图所示:
218218

219-
![enter image description here](https://images.gitbook.cn/b3a90d00-cdeb-11e9-932d-6123ff488b55)
219+
![enter image description here](https://img03.sogoucdn.com/app/a/100520146/8c3a203e7fef1e6ba89a54c2daed526b)
220220

221221
####6.可以把`List<String>` 赋值给`List<Object>` 吗?
222222

223223
答:不可以,编译器会报错,如下图所示:
224224

225-
![enter image description here](https://images.gitbook.cn/cb2aa8d0-cdeb-11e9-b572-5118f14310d8)
225+
![enter image description here](https://img02.sogoucdn.com/app/a/100520146/ab3616ef5b2c22c59d4e333029c875e1)
226226

227227
####7.`List``List<Object>` 的区别是什么?
228228

229229
答:`List``List<Object>` 都能存储任意类型的数据,但`List``List<Object>` 的唯一区别就是,`List` 不会触发编译器的类型安全检查,比如把`List<String>` 赋值给`List` 是没有任何问题的,但赋值给`List<Object>` 就不行,如下图所示:
230230

231-
![enter image description here](https://images.gitbook.cn/e34947f0-cdeb-11e9-932d-6123ff488b55)
231+
![enter image description here](https://img02.sogoucdn.com/app/a/100520146/3c0e932d9a67c62888b3dd62f19051be)
232232

233233
####8.以下程序执行的结果是?
234234

‎docs/NetWork/理解TCP和UDP.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ TCP 之所以可以保证可靠性主要得益于两个方面,一个是“状
3030

3131
TCP 三次握手的执行流程,如下图所示:
3232

33-
<imgsrc="http://s0.lgstatic.com/i/image2/M01/8A/6E/CgotOV13hviAU5H3AAAyMppFmf8039.png"alt="img" />
33+
<imgsrc="https://img02.sogoucdn.com/app/a/100520146/dd6df6154e259897c25d924cacd8cffe"alt="img" />
3434

3535
TCP 三次握手的执行流程图
3636

@@ -51,7 +51,7 @@ TCP 的三次握手执行流程如下:
5151

5252
TCP 四次挥手的执行流程,如下图所示:
5353

54-
![img](http://s0.lgstatic.com/i/image2/M01/8A/4E/CgoB5l13hviAZRJ1AABEfmQ55Jw991.png)
54+
![img](https://img01.sogoucdn.com/app/a/100520146/7bacaab50092f15af650aa33c70d81fb)
5555

5656
TCP 的四次挥手执行流程如下:
5757

‎package-lock.json

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp