Skip to content

Commit c4e944c

Browse files
committed
fix: 更新图片链接
1 parent b9c4014 commit c4e944c

22 files changed

+97
-130
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@
147147

148148
关注我获得最新笔记、更多资源
149149

150-
<div align="center"> <img src="https://gitee.com/wardseptember/images/raw/master/imgs/gzh.jpg" width="600"/> </div><br>
150+
<div align="center"> <img src="imgs/gzh.jpg" width="600"/> </div><br>
151151

152152

153153
## GPL v2.0

docs/Java并发包/ThreadLocal源码解析.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,13 @@ ThreadLocal采用“以空间换时间”的方式,为每一个线程都提供
1919

2020
Thread、ThreadLocal、ThreadLocalMap、Entry之间的关系:
2121

22-
<div align="center"> <img src="https://gitee.com/wardseptember/images/raw/master/imgs/20201207173804.png" width="600"/> </div><br>
22+
<div align="center"> <img src="../../imgs/20201207173804.png" width="600"/> </div><br>
2323

2424
上图中描述了:一个Thread中只有一个ThreadLocalMap,一个ThreadLocalMap中可以有多个ThreadLocal对象,其中一个ThreadLocal对象对应一个ThreadLocalMap中一个的Entry(也就是说:一个Thread可以依附有多个ThreadLocal对象)。
2525

2626
在ThreadLocal的生命周期中,都存在这些引用。看下图: **实线代表强引用,虚线代表弱引用。**
2727

28-
<div align="center"> <img src="https://gitee.com/wardseptember/images/raw/master/imgs/20201207174041.png" width="600"/> </div><br>
28+
<div align="center"> <img src="../../imgs/20201207174041.png" width="600"/> </div><br>
2929

3030
2、ThreadLocal的实现是这样的:每个Thread 维护一个 `ThreadLocalMap` 映射表,这个映射表的 key 是 `ThreadLocal`实例本身,value 是真正需要存储的 Object。
3131

docs/Java集合包/HashCode和equals.md

Lines changed: 0 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -358,36 +358,6 @@ p1==p2 : false
358358
(02) ***p1==p2\***
359359
这是判断p1和p2是否是同一个对象。由于它们是各自新建的两个Person对象;因此,返回false。
360360

361-
362-
363-
------
364-
365-
**第3部分 hashCode() 的作用**
366-
367-
hashCode() 的作用是**获取哈希码**,也称为散列码;它实际上是返回一个int整数。这个**哈希码的作用**是确定该对象在哈希表中的索引位置。
368-
369-
hashCode() 定义在JDK的Object.java中,这就意味着Java中的任何类都包含有hashCode() 函数。
370-
虽然,每个Java类都包含hashCode() 函数。但是,仅仅当创建并某个“类的散列表”(关于“散列表”见下面说明)时,该类的hashCode() 才有用(作用是:确定该类的每一个对象在散列表中的位置;其它情况下(例如,创建类的单个对象,或者创建类的对象数组等等),类的hashCode() 没有作用。
371-
上面的散列表,指的是:Java集合中本质是散列表的类,如HashMap,Hashtable,HashSet。
372-
373-
​ 也就是说:**hashCode() 在散列表中才有用,在其它情况下没用。**在散列表中hashCode() 的作用是获取对象的散列码,进而确定该对象在散列表中的位置。**运行结果**
374-
375-
```
376-
p1.equals(p2) : true
377-
p1==p2 : false
378-
```
379-
380-
**结果分析**
381-
382-
在EqualsTest3.java 中:
383-
(01) ***p1.equals(p2)\***
384-
这是判断p1和p2的内容是否相等。因为Person覆盖equals()方法,而这个equals()是用来判断p1和p2的内容是否相等,恰恰p1和p2的内容又相等;因此,返回true。
385-
386-
(02) ***p1==p2\***
387-
这是判断p1和p2是否是同一个对象。由于它们是各自新建的两个Person对象;因此,返回false。
388-
389-
390-
391361
------
392362

393363
**第3部分 hashCode() 的作用**

docs/Java集合包/HashMap详解(1.7和1.8).md

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -285,7 +285,7 @@ key = null映射为索引0,查找table[0]中有没有key=null的结点
285285

286286
`HashMap`结构图:
287287

288-
![](http://wardseptember.top/FjO6pGCUZafcw5DGVmQnv0-kPrL5)
288+
![](../../imgs/FjO6pGCUZafcw5DGVmQnv0-kPrL5)
289289

290290
HashMap:它根据键的hashCode值存储数据,大多数情况下可以直接定位到它的值,因而具有很快的访问速度,但遍历顺序却是不确定的。 HashMap最多只允许一条记录的键为null,允许多条记录的值为null。HashMap非线程安全,即任一时刻可以有多个线程同时写HashMap,可能会导致数据的不一致。如果需要满足线程安全,可以用 Collections的synchronizedMap方法使HashMap具有线程安全的能力,或者使用ConcurrentHashMap。
291291

@@ -1089,7 +1089,7 @@ static final int hash(Object key) {
10891089

10901090
[JDK 源码中 HashMap 的 hash 方法原理](https://link.jianshu.com/?t=https%3A%2F%2Fwww.zhihu.com%2Fquestion%2F20733617%2Fanswer%2F111577937)
10911091

1092-
![](http://wardseptember.top/FviYD1i2KPPm7G3Ocar06b8y7gi5)
1092+
![](../../imgs/FviYD1i2KPPm7G3Ocar06b8y7gi5)
10931093

10941094
*hash函数的主要作用就是:增大随机性,减少碰撞。*
10951095

@@ -1167,7 +1167,7 @@ hashmap中put的源码:
11671167

11681168
如果n是默认大小16,没有扩容,`(n - 1) & hash`的计算结果就是hash值本身;见下图:
11691169

1170-
![](http://wardseptember.top/FnoOXwzol6IFaNzkiZtRkKr5H32a)
1170+
![](../../imgs/FnoOXwzol6IFaNzkiZtRkKr5H32a)
11711171

11721172
如果n扩容,扩容大小是原大小*2,为什么n一定要是2的倍数?举个例子:
11731173

@@ -1195,7 +1195,7 @@ e2.hash & newCap-1
11951195

11961196
当桶上的结点数大于8会转成红黑树:
11971197

1198-
![](https://gitee.com/wardseptember/images/raw/master/imgs/FilCh0t268Fot12pqsnGGsw3YVG-)
1198+
![](../../imgs/FilCh0t268Fot12pqsnGGsw3YVG-)
11991199

12001200
红黑树的查找速度更快,查找速度优化为O(logn)。
12011201

@@ -1388,5 +1388,4 @@ class HashMapThread extends Thread {
13881388
---
13891389
**欢迎关注我的公众号呦,率先更新内容,并且后续还有一些源码级的免费教程推出。**
13901390

1391-
1392-
<div align="center"> <img src="https://gitee.com/wardseptember/images/raw/master/imgs/gzh.jpg" width="600"/> </div><br>
1391+
<div align="center"> <img src="../../imgs/gzh.jpg" width="600"/> </div><br>

docs/LeetCode终极版/动态规划.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ a.length <= 100000
7777
根据题目对 B[i] 的定义,可列表格,如下图所示。
7878

7979
根据表格的主对角线(全为 1 ),可将表格分为 上三角 和 下三角 两部分。分别迭代计算下三角和上三角两部分的乘积,即可 不使用除法 就获得结果。
80-
![](https://gitee.com/wardseptember/images/raw/master/imgs/20200817155830.png)
80+
![](../../imgs/20200817155830.png)
8181

8282
算法流程:
8383

@@ -130,7 +130,7 @@ class Solution {
130130

131131
### 动态规划
132132

133-
![](https://gitee.com/wardseptember/images/raw/master/imgs/20200813155250.png)
133+
![](../../imgs/20200813155250.png)
134134

135135
```java
136136
class Solution {
@@ -1004,13 +1004,13 @@ class Solution {
10041004

10051005
给定数组arr,设长度为n,输出arr的最长递增子序列。(如果有多个答案,请输出其中字典序最小的)
10061006

1007-
<div align="center"> <img src="https://gitee.com/wardseptember/images/raw/master/imgs/20210215190146.png" width="600"/> </div><br>
1007+
<div align="center"> <img src="../../imgs/20210215190146.png" width="600"/> </div><br>
10081008

10091009
### 解法
10101010

1011-
<div align="center"> <img src="https://gitee.com/wardseptember/images/raw/master/imgs/20210215190314.png" width="600"/> </div><br>
1011+
<div align="center"> <img src="../../imgs/20210215190314.png" width="600"/> </div><br>
10121012

1013-
<div align="center"> <img src="https://gitee.com/wardseptember/images/raw/master/imgs/20210215190344.png" width="600"/> </div><br>
1013+
<div align="center"> <img src="../../imgs/20210215190344.png" width="600"/> </div><br>
10141014

10151015
```java
10161016
import java.util.*;
@@ -2305,7 +2305,7 @@ class Solution {
23052305
```
23062306
### 动态规划
23072307

2308-
<div align="center"> <img src="https://gitee.com/wardseptember/images/raw/master/imgs/20210119104647.png" width="600"/> </div><br>
2308+
<div align="center"> <img src="../../imgs/20210119104647.png" width="600"/> </div><br>
23092309

23102310
i/j不等于dp[i/j],这是动态规划,举个例子,n=20,最小操作数是9,最大因子是10,dp[10]是不等于10的,等于7。dp[20] = dp[2] + 1 + dp[20/2] - 1,dp[10] = dp[2] + 1 + dp[10/2] - 1; dp[5] = 5。一句话就是如果n的最大因子是合数,那么就是dp[i/j],如果n的最大因子是质数就是dp[i/j]= i/j,但是显然n的最大因子是合数还是质数是不确定的,所以直接使用dp[i/j]
23112311

docs/剑指Offer/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
## 公众号
4545

4646
**欢迎关注我的公众号呦,率先更新内容,并且后续还有一些源码级的免费教程推出。**
47-
![](http://wardseptember.club/Fsis2Lao1zRA-RpbsTEDA0_z04wb)
47+
![](../../imgs/Fsis2Lao1zRA-RpbsTEDA0_z04wb)
4848

4949
## 贡献
5050

docs/剑指Offer/位运算和哈希表.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,4 +178,4 @@ class Solution {
178178

179179
---
180180

181-
<div align="center"> <img src="https://gitee.com/wardseptember/images/raw/master/imgs/gzh.jpg" width="600"/> </div><br>
181+
<div align="center"> <img src="../../imgs/gzh.jpg" width="600"/> </div><br>

docs/剑指Offer/动态规划.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -332,4 +332,4 @@ class Solution {
332332

333333
---
334334

335-
![](http://wardseptember.top/Fsis2Lao1zRA-RpbsTEDA0_z04wb)
335+
![](../../imgs/Fsis2Lao1zRA-RpbsTEDA0_z04wb)

docs/剑指Offer/字符串.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -209,4 +209,4 @@ class Solution {
209209

210210
---
211211

212-
![](http://wardseptember.club/Fsis2Lao1zRA-RpbsTEDA0_z04wb)
212+
![](../../imgs/Fsis2Lao1zRA-RpbsTEDA0_z04wb)

docs/剑指Offer/排序、回溯和分治.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -254,11 +254,11 @@ class Solution {
254254

255255
为了让您更好地理解问题,以下面的二叉搜索树为例:
256256

257-
![](http://wardseptember.top/20200802093421.png)
257+
![](../../imgs/20200802093421.png)
258258
我们希望将这个二叉搜索树转化为双向循环链表。链表中的每个节点都有一个前驱和后继指针。对于双向循环链表,第一个节点的前驱是最后一个节点,最后一个节点的后继是第一个节点。
259259

260260
下图展示了上面的二叉搜索树转化成的链表。“head” 表示指向链表中有最小元素的节点。
261-
![](http://wardseptember.top/20200802093442.png)
261+
![](../../imgs/20200802093442.png)
262262

263263
特别地,我们希望可以就地完成转换操作。当转化完成以后,树中节点的左指针需要指向前驱,树中节点的右指针需要指向后继。还需要返回链表中的第一个节点的指针。
264264
### 解法
@@ -415,4 +415,4 @@ class Solution {
415415

416416
---
417417

418-
![](http://wardseptember.top/Fsis2Lao1zRA-RpbsTEDA0_z04wb)
418+
![](../../imgs/Fsis2Lao1zRA-RpbsTEDA0_z04wb)

0 commit comments

Comments
 (0)