rockychen1221 / java-learning

java记录

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

java-learning

个人学习过程的实践过程,持续更新中

util开源依赖

Apache Commons Project

官网请点击上图进入,翻译党请进->这里!

HuTool

很多java开发的小伙伴都会阅读jdk源码,然而确不知道应该从哪读起。以下为小编整理的通常所需阅读的源码范围。 标题为包名,后面序号为优先级1-4,优先级递减

1、java.lang

  1. Object 1
  2. String 1
  3. AbstractStringBuilder 1
  4. StringBuffer 1
  5. StringBuilder 1
  6. Boolean 2
  7. Byte 2
  8. Double 2
  9. Float 2
  10. Integer 2
  11. Long 2
  12. Short 2
  13. Thread 2
  14. ThreadLocal 2
  15. Enum 3
  16. Throwable 3
  17. Error 3
  18. Exception 3
  19. Class 4
  20. ClassLoader 4
  21. Compiler 4
  22. System 4
  23. Package 4
  24. Void 4

2、java.util

  1. AbstractList 1
  2. AbstractMap 1
  3. AbstractSet 1
  4. ArrayList 1
  5. LinkedList 1
  6. HashMap 1
  7. Hashtable 1
  8. HashSet 1
  9. LinkedHashMap 1
  10. LinkedHashSet 1
  11. TreeMap 1
  12. TreeSet 1
  13. Vector 2
  14. Queue 2
  15. Stack 2
  16. SortedMap 2
  17. SortedSet 2
  18. Collections 3
  19. Arrays 3
  20. Comparator 3
  21. Iterator 3
  22. Base64 4
  23. Date 4
  24. EventListener 4
  25. Random 4
  26. SubList 4
  27. Timer 4
  28. UUID 4
  29. WeakHashMap 4

3、java.util.concurrent

  1. ConcurrentHashMap 1
  2. Executor 2
  3. AbstractExecutorService 2
  4. ExecutorService 2
  5. ThreadPoolExecutor 2
  6. BlockingQueue 2 7)AbstractQueuedSynchronizer 2 8)CountDownLatch 2
  7. FutureTask 2 10)Semaphore 2 11)CyclicBarrier 2 13)CopyOnWriteArrayList 3 14)SynchronousQueue 3 15)BlockingDeque 3
  8. Callable 4

4、java.util.concurrent.atomic

  1. AtomicBoolean 2
  2. AtomicInteger 2
  3. AtomicLong 2
  4. AtomicReference 3

5、java.lang.reflect

  1. Field 2
  2. Method 2

6、java.lang.annotation

  1. Annotation 3
  2. Target 3
  3. Inherited 3
  4. Retention 3
  5. Documented 4
  6. ElementType 4
  7. Native 4
  8. Repeatable 4

7、java.util.concurrent.locks

  1. Lock 2
  2. Condition 2
  3. ReentrantLock 2
  4. ReentrantReadWriteLock 2

8、java.io

  1. File 3
  2. InputStream 3
  3. OutputStream 3
  4. Reader 4
  5. Writer 4

9、java.nio

  1. Buffer 3
  2. ByteBuffer 4
  3. CharBuffer 4
  4. DoubleBuffer 4
  5. FloatBuffer 4
  6. IntBuffer 4
  7. LongBuffer 4
  8. ShortBuffer 4

10、java.sql

  1. Connection 3
  2. Driver 3
  3. DriverManager 3
  4. JDBCType 3
  5. ResultSet 4
  6. Statement 4

11、java.net

  1. Socket 3
  2. ServerSocket 3
  3. URI 4
  4. URL 4
  5. URLEncoder 4

阅读笔记简版

1、Object

  1. wait(), notify(), notifyAll(), wait(timeout)
  2. hashCode(), equals()
  3. clone()

2、String

  1. char[] value
  2. int hash
  3. equals(), startWith(), endWith(), replace

3、AbstractStringBuilder

  1. char[] value
  2. int count
  3. 扩容:翻倍,不够取所需最小

4、StringBuffer

  1. 继承AbstractStringBuilder
  2. synchronized方法保证线程安全
  3. char[] toStringCache

5、StringBuilder 继承AbstractStringBuilder

6、ArrayList

  1. Object[] elementData
  2. int size
  3. 默认大小10
  4. 扩容:翻倍,不够取所需最小

7、LinkedList

  1. Node {E item, Node prev, Node next}
  2. int size
  3. Node first
  4. Node last
  5. linkFirst(), linkLast(), linkBefore(), unLinkFirst(), unLinkLast(), unLink(), indexOf()

8、HashMap

  1. Node{int hash, K key, V value, Node next}
  2. 默认容量16,负载因子0.75f
  3. int size, modCount, threshold, float loadFactor
  4. Node[] table
  5. Set entrySet
  6. put():根据key算hash,根据容量和hash算index,table[index]没有直接添加到数组中,table[index]有,若index位置同一个key则更新,否则遍历next是否有,有则更新,无则新增,最后根据thread与size判断是否扩容。注:扩容时容量翻倍,重新算hash复制到新数组 7)get()类似 注:先比较hash,若相等在比较equals

9、Hashtable

  1. 结构实现与HashMap基本一致 2)通过synchronized方法保证线程安全

10、HashSet:委托给HashMap,其Value是同一个默认对象

11、LinkedHashMap继承HashMap

  1. Entry{HashMap.Node, Entry before, after}
  2. Entry head, tail
  3. 重写newNode()添加节点时,除像HashMap中添加外,保存before、after信息

12、LinkedHashSet继承HashSet:不知道如何实现的顺序?

13、AbstractMap维护EntrySet,AbstractSet维护Iterator,AbstractList维护Iterator

14、ConcurrentHashMap

  1. JDK1.7及以前: a、Segment[] ,HashEntry[] , HashEntry{hash, k, v, next} b、根据key算hash,根据hash和Segment的大小算位置,每个segment拥有一个自己的HashEntry[] c、get():不加锁,volatile类型 d、put(): 对相应segment加锁 e、size():各HashEntry[] 之和,先不加锁算两遍,若一致则返回,若不一致则加锁重新计算 2)JDK1.8 a、Node{hash, key, value, next} b、Node[] table c、大多数操作类似于HashMap,不同CAS方式设置,根据key算hash,在根据hash和容量算index,对table[index]加锁,从而达到更大的并发量 d、get(): 同HashMap e、put(): 对table[index]加锁

15、TreeMap 1)红黑树,即自平衡二叉查找树,时间复杂度O(logn) 2)Entry{K k, V v, Entry parent, left, right, boolean color} 3)Entry root,int size, int modeCount

16、TreeSet:委托TreeMap实现 ---------------------

About

java记录

License:Apache License 2.0


Languages

Language:Java 100.0%