File tree Expand file tree Collapse file tree 1 file changed +17
-1
lines changed Expand file tree Collapse file tree 1 file changed +17
-1
lines changed Original file line number Diff line number Diff line change @@ -99,6 +99,14 @@ Set中的对象不按特定方式排序,并且没有重复对象。但它的
9999List中的对象按照索引位置排序,可以有重复对象,允许按照对象在集合中的索引位置检索对象,如通过list.get(i)方式来获得List集合中的元素。
100100Map中的每一个元素包含一个键对象和值对象,它们成对出现。键对象不能重复,值对象可以重复。
101101
102+ ### ArrayList与LinkedList区别
103+
104+ | ArrayList| LinkedList|
105+ | --------| --------|
106+ | 数组| 双向链表|
107+ | 增删的时候在扩容的时候慢,通过索引查询快,通过对象查索引慢| 增删快,通过索引查询慢,通过对象查索引慢|
108+ | 扩容因子1.5倍| 无|
109+
102110### HashMap和HashTable区别
103111
1041121 . Hashtable中的方法是同步的,而HashMap中的方法在缺省情况下是非同步的。
@@ -126,6 +134,12 @@ Java 8的ConcurrentHashMap同样是通过Key的哈希值与数组长度取模确
126134对于put操作,如果Key对应的数组元素为null,则通过CAS操作将其设置为当前值。如果Key对应的数组元素(也即链表表头或者树的根元素)不为null,则对该元素使用synchronized关键字申请锁,然后进行操作。如果该put操作使得当前链表长度超过一定阈值,则将该链表转换为树,从而提高寻址效率。
127135
128136## 多线程
137+ ### 问:你怎么理解多线程的
138+
139+ 1 . 定义:多线程是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。打个比方,一个人去搬砖与几个人去搬砖,一个人只能同时搬一车,但是几个人可以同时一起搬多个车。
140+ 2 . 实现:在Java里如何实现线程,Thread、Runnable、Callable。
141+ 3 . 问题:线程可以获得更大的吞吐量,但是开销很大,线程栈空间的大小、切换线程需要的时间,所以用到线程池进行重复利用,当线程使用完毕之后就放回线程池,避免创建与销毁的开销。
142+
129143### 线程的生命周期
130144新建 -- 就绪 -- 运行 -- 阻塞 -- 死亡
131145
@@ -134,7 +148,6 @@ Java 8的ConcurrentHashMap同样是通过Key的哈希值与数组长度取模确
1341482 . 实现Runnable接口
1351493 . 扩展一种:实现Callable接口。这个得和线程池结合
136150
137-
138151### 如何实现同步
139152[ https://fangjian0423.github.io/2016/04/18/java-synchronize-way/ ] ( https://fangjian0423.github.io/2016/04/18/java-synchronize-way/ )
140153
@@ -245,6 +258,9 @@ CyclicBarrier可以循环使用。比如,假设我们将计数器设置为10
245258final方法:禁止序列化、克隆
246259
247260## 管道-过滤器模式
261+
262+ [ http://www.wangtianyi.top/blog/2017/10/08/shi-yao-shi-hou-neng-yong-shang-she-ji-mo-shi/ ] ( http://www.wangtianyi.top/blog/2017/10/08/shi-yao-shi-hou-neng-yong-shang-she-ji-mo-shi/ )
263+
248264## 装饰器模式
249265动态地将责任附加到对象上,如果要拓展功能,装饰器提供了比继承更有弹性的方式。
250266
You can’t perform that action at this time.
0 commit comments