Skip to content

Commit 9d135f4

Browse files
Add new files and update documentation
1 parent 8484cfe commit 9d135f4

10 files changed

Lines changed: 24 additions & 19 deletions

File tree

A.docx

15.7 KB
Binary file not shown.

Idea.md

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,6 @@
88

99
[**腾讯技术分享:Android手Q的线程死锁监控系统技术实践**](http://www.52im.net/thread-1442-1-1.html)
1010

11-
12-
1311
接下来就复习一下 Andorid 的多线程相关,然后是网络。这时候的时间节点差不多2月底了,这时候就要着手搞 网络优化了
1412

15-
13+
[A.docx](./A.docx)

JAVA/1.0 泛型.md

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
[TOC]
1+
[toc]
22

33
# 什么是泛型
44

@@ -12,7 +12,7 @@
1212

1313
**早期Java是使用Object来代表任意类型的,但是向下转型有强转的问题,这样程序就不太安全**
1414

15-
例如在集合中我们想装不同类型的实物,没必要为每种类型都实现一套。所以早前的集合例:ArrayList<Object> 使用 Object 代表类型,但是在使用的时候需要类型强转,可读性差而且安全性低。
15+
例如在集合中我们想装不同类型的实物,没必要为每种类型都实现一套。所以早前的集合例:ArrayList`<Object>` 使用 Object 代表类型,但是在使用的时候需要类型强转,可读性差而且安全性低。
1616

1717
有了泛型以后:
1818

@@ -32,8 +32,6 @@
3232
}
3333
```
3434

35-
36-
3735
只写一个 ?是双向限定的,写也不能写,读也不能读。
3836

3937
```java
@@ -46,19 +44,15 @@ List<? extends View> list = new ArrayList<>();
4644
List<? super View> list1 = new ArrayList<>();
4745
```
4846

49-
50-
5147
## 通配符和泛型方法
5248

5349
- 如果**参数之间的类型有依赖关系**,或者返**回值是与参数之间有依赖关系**的。那么就使用**泛型方法**
5450
- 如果**没有依赖关系**的,就使用**通配符**,通配符会**灵活一些.**
5551

5652
**静态属性是无法使用泛型的。泛型对应的都是具体的对象。静态方法初始化的时候泛型还没有具体的对象,此时是没有意义的。**
5753

58-
59-
6054
# 参考
6155

6256
[什么叫泛型?有什么作用? - Java3y的回答 - 知乎](https://www.zhihu.com/question/272185241/answer/366129174)
6357

64-
《Java 核心技术 1 卷——第 8 章:泛型程序设计》
58+
《Java 核心技术 1 卷——第 8 章:泛型程序设计》

JAVA/Map/1.0 HashMap(JDK8) 0 - 源码解读.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@ HashMap 是基于 Map 接口实现的哈希表,==它允许拥有为 null 的 k
1616

1717
初始容量(initialCapacity)和负载因子(loadFactor)是影响 HashMap 的重要指标,initialCapacity 指的是 HashMap 底层数组初始化时的容量,而 loadFactor 是指自动扩容的阈值。此阈值 = initialCapacity * loadFactor,当哈希表的使用条目大于了阈值。则将容量扩充为 initialCapacity 的 ==2 倍。==
1818

19-
默认情况下 HashMap 的负载因子为 0.75, 这是一个在空间和时间成本上做了很好这中的经验值。如果负载因子较大表面上是可以较少扩容次数节约空间,但是 get 和 push 的执行时间成本将会增加。如果设置的过低,则会多次触发扩容和重新 hash 时间性能会大幅下降。所以权衡 initialCapacity 和 loadFactor 是很关键的。在设置他们的时候应该结合使用场景考虑映射中的预期条目数及其负载因子,要最大程度上减少重新哈希操作的次数。
19+
默认情况下 HashMap 的负载因子为 0.75, 这是一个在空间和时间成本上做了很好折中的经验值。如果负载因子较大表面上是可以较少扩容次数节约空间,但是 get 和 push 的执行时间成本将会增加。如果设置的过低,则会多次触发扩容和重新 hash 时间性能会大幅下降。所以权衡 initialCapacity 和 loadFactor 是很关键的。在设置他们的时候应该结合使用场景考虑映射中的预期条目数及其负载因子,要最大程度上减少重新哈希操作的次数。
2020

2121

2222

23-
HashMap 并不是线程安全的,即多个线程操作同一个 HashMap 的时候结果很可能不一致,而且还有可能造成链表相交的风险。对于此种场景可以使用 Collections 的 synchronizedMap 方法使 HashMap 具有线程安全的能力,或者使用ConcurrentHashMap。
23+
HashMap 并不是线程安全的,即多个线程操作同一个 HashMap 的时候结果很可能不一致,而且还有可能造成链表成环的风险。对于此种场景可以使用 Collections 的 synchronizedMap 方法使 HashMap 具有线程安全的能力,或者使用ConcurrentHashMap。
2424

2525
HashTable 是个遗弃类,虽然它是线程安全的但其内部使用的主要操作都是用 synchronized 锁住了整个对象,这意味着每次仅能一个线程工作,其余的线程都将会被阻塞,效率是很低的。采用了分段锁的 ConcurrentHashMap 是最好的选择方案。
2626

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,3 +48,4 @@ Copyright © 2019-present 代圣达
4848

4949
任何个人或组织,未经作者本人沟通许可,不得将文中全部或部分内容洗稿和用于写书、卖课等商业活动。
5050

51+
[Test.drawio](Test.drawio)

Test.drawio

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<mxfile host="65bd71144e">
2+
<diagram id="dpXbzeQ2eHDjffGnOZks" name="第 1 页">
3+
<mxGraphModel dx="1261" dy="752" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
4+
<root>
5+
<mxCell id="0"/>
6+
<mxCell id="1" parent="0"/>
7+
<mxCell id="2" value="Text" style="text;strokeColor=none;fillColor=none;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
8+
<mxGeometry x="390" y="300" width="60" height="30" as="geometry"/>
9+
</mxCell>
10+
</root>
11+
</mxGraphModel>
12+
</diagram>
13+
</mxfile>
41 Bytes
Binary file not shown.
742 Bytes
Binary file not shown.
58.8 KB
Binary file not shown.

里程碑.md

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,11 @@
1111
# 21年
1212

1313
* 01月02凌晨复习完 Handler 并整理完毕思维导图
14-
* 01月02 ~ 01月03 复习整理 RecyclerView 相关 + [思维导图](Android专项/思维导图)
15-
* 01月06 ~ 01月08 Java 基础 + [思维导图](JAVA/思维导图)
16-
* 01月09 ~ 01月10 复习代码规范 + OOP 设计 + 设计原则思想并输出 [思维导图](代码质量/思维导图)
14+
* 01月02 ~ 01月03 复习整理 RecyclerView 相关 + [思维导图](Android专项/思维导图)
15+
* 01月06 ~ 01月08 Java 基础 + [思维导图](JAVA/思维导图)
16+
* 01月09 ~ 01月10 复习代码规范 + OOP 设计 + 设计原则思想并输出 [思维导图](代码质量/思维导图)
1717
* 01月01 ~ 01月15 复习设计模式(未全部完成) + [思维导图](代码质量/思维导图)
18-
* 01月16 ~ 01月18凌晨 整理完成 Java 并发 + [思维导图](并发编程/思维导图)
18+
* 01月16 ~ 01月18凌晨 整理完成 Java 并发 + [思维导图](并发编程/思维导图)
1919
* 01月18 ~ 01月19凌晨 Android 并发相关 + 使用 xmind 重构知识导图 + 新版 README
2020
* 01月19 ~ 01月29 [网络基础](网络/思维导图)(TCP/IP 、HTTP、HTTPS、DNS、断点续传)、网络优化的要解决的问题(速度、连接、弱网)、尝试落地网络监控和 DNS 优化方案
2121
* 01月30 ~ 01月31 OkHttp源码的分析
@@ -24,4 +24,3 @@
2424
* 02月18 ~ 02月19 Glide 与 Fresco 简单对比
2525
* 2月27 ~ 3月07 插桩开始 (Gradle plugin ASM)
2626
* 3月06 ~ 3月07 学习二分查找 + 决定仿写 Hunter 封装的插装逻辑
27-

0 commit comments

Comments
 (0)