摘要:基于鏈表,增刪快,查詢滿。散列算法通過散列算法獲取下標,沖突且為時存入鏈表。當為的次方時,可以最大程度減小沖突。
泛型
本質 | 類型參數化,作用就是將類型轉換問題從運行時轉移到編譯期 |
語法 |
1 定義在類上 class ClassName 2 定義在方法上 3 通配符 > 可限制傳入參數,但無法使用 泛型參數 需類型轉換 4 上限 extends T > 接受 T及任意子類 5 下限 super T> 接受 T及任意父類 |
存放數據的集合,JAVA中實現Collection和Map的都是集合
Vector:線程安全,基于動態數組,增長率為100%,ArrayList為50%
ArrayList:基于動態數組,查詢快,增刪慢。
LinkedList:基于鏈表,增刪快,查詢滿。
PS : Hash散列算法 hash & (length-1) 通過Hash散列算法獲取下標,HashCode沖突且equals為false時存入鏈表。當length為2的N次方時,可以最大程度減小HashCode沖突。
HashSet:底層由HashMap實現,允許null,唯一,無序
LinkedHashSet:底層由LinkedHashMap實現(適配器模式),不允許null,唯一,按插入順序排序
TreeSet:底層由TreeMap實現,不允許null,唯一,按排序規則排序
映射集合(鍵值對)
HashMap:基于Hash散列算法,鍵唯一,允許null,無序
LinkedHashMap:繼承HashMap,鍵唯一,不允許null,按插入順序排序
TreeMap:鍵唯一,不允許null,按排序規則排序,底層基于紅黑樹
HashTable:線程安全
ConcurrentHashMap:線程安全,鎖分離
本質 | 數據傳輸 | ||
分類 | 數據類型 | 字節流 字符流 |
|
數據流向 | 輸入流 輸出流 |
||
輸入流 | 字節流 | InputStream | 字節輸入流接口 |
ByteArrayInputStream | 字節數組輸入流 | ||
FileInputStream | 文件輸入流 | ||
BufferedInputStream | 高級流 緩存輸入流 | ||
字符流 | Reader | 字符輸入流接口 | |
InputStreamReader | 轉換流 字符輸入流 可指定字符集 | ||
BufferedReader | 高級流 緩存字符輸入流 | ||
輸出流 | 字節流 | outputStream | 字節輸出流接口 |
ByteArrayOutputStream | 字節數組輸出流 | ||
FileOutputStream | 文件輸出流 | ||
BufferedOutputStream | 高級流 緩存輸出流 | ||
字符流 | Writer | 字符輸出流接口 | |
OutputStreamWriter | 轉換流 字符輸出流 可指定字符集 | ||
BufferedWriter | 高級流 緩存字符輸出流 | ||
PrintWriter | 高級流 緩存字符輸出流 自動行刷新 |
多線程 | 并發,合理使用可以提高效率,CPU給每個線程分配時間片(幾十ms),線程有創建與上下文切換的開銷 | |
線程狀態 |
新建 NEW 就緒 RUNNABLE 運行 RUNNING 阻塞 BLOCKED 死亡 DEAD |
|
創建線程 |
1 繼承Thread 2 實現Runnalbe接口 3 實現Callable接口 |
|
線程池 | ||
線程并發 | 三大特性 |
原子性 有序性 可見性 |
同步方案 |
1 volatile 類型修飾符 保證可見性 2 Synchronized 同步代碼塊,可修飾方法 代碼塊 3 ReentrantLock 顯示獲取/釋放鎖 |
|
線程操作 |
1 sleep() 使線程進入阻塞,可指定毫秒值,不釋放鎖 2 wait()/notify()/notifyAll() 等待(阻塞)喚醒(就緒)機制,可指定毫秒值,釋放鎖 3 yield() 使線程進入就緒,不釋放鎖 4 join() 當前線程進入阻塞,直到join線程執行結束,進入就緒,釋放鎖 |
反射 | 反射(Reflection)是Java 程序開發語言的特征之一,它允許運行中的 Java 程序獲取自身的信息,并且可以操作類或對象的內部屬性。 | ||
主要功能 |
1 在運行時判斷一個對象所屬的類 2 在運行時構造任意一個類的對象 3 在運行時判斷任意一個類所具有的成員變量和方法(通過反射甚至可以調用private方法) 4 在運行時調用任意一個對象的方法 |
||
語法 | 注意: 調用私有屬性時,需setAccessible(True)跳過java語言訪問檢查,否則拋出IllegalAccessException | ||
獲取Class |
1 Class.forName(className) 2 類名.class 3 對象.getClass() |
||
對象 | 無參構造器 |
newInstance() 調用無參構造器創建對象并返回 未定義無參構造器時,拋出InstantiationException |
|
獲取構造器 |
1 getConstructor([types]) 獲取指定參數類型列表的公有構造器 2 getConstructors() 獲取所有公有構造器 3 getDeclaredConstructor([types]) 獲取指定參數類型列表的構造器 4 getDeclaredConstructors() 獲取所有構造器 |
||
調用構造器 | 構造器對象.newInstance([params]) 創建對象,調用私有構造器時, 請注意 | ||
方法 | 獲取方法 |
1 getMethod(name[,types]) 獲取指定方法名,參數類型列表的公有方法 2 getMethonds() 獲取所有公有方法,包括繼承類的公有方法 3 getDeclaredMethod(name[,types]) 獲取指定方法名,參數類型列表的方法,但不包括繼承方法 4 getDeclaredMethods() 獲取所有方法,但不包括繼承方法 |
|
調用方法 | 方法對象.invoke(obj[,params]) 調用指定對象方法,調用私有方法時, 請注意 | ||
字段 | 獲取字段 |
1 getField(name) 獲取指定字段名的公有字段 2 getFields() 獲取所有公有字段,包括繼承類的公有方法 3 getDeclaredField(name) 獲取指定字段名的字段,但不包括繼承字段 4 getDeclaredFields() 獲取所有字段,但不包括繼承字段 |
|
操作字段 |
字段對象.set(obj,val) 設置指定對象字段屬性 字段對象.get(obj) 獲取指定對象字段屬性 操作私有字段時,請注意 |
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/76347.html
摘要:我的是忙碌的一年,從年初備戰實習春招,年三十都在死磕源碼,三月份經歷了阿里五次面試,四月順利收到實習。因為我心理很清楚,我的目標是阿里。所以在收到阿里之后的那晚,我重新規劃了接下來的學習計劃,將我的短期目標更新成拿下阿里轉正。 我的2017是忙碌的一年,從年初備戰實習春招,年三十都在死磕JDK源碼,三月份經歷了阿里五次面試,四月順利收到實習offer。然后五月懷著忐忑的心情開始了螞蟻金...
摘要:操作之連接以及簡單操作下載對應的驅動包下載創建一個連接類連接主機地址端口號登錄密碼連接服務器權限認證連接完成會返回緩存鏈接錯誤查詢所有中的查詢所有的為通配符清除所有的中的是清除所有的的命令如果清理完成,會返回完整的代碼聲明對象測試地址端口密 Java操作Redis之連接以及簡單操作 1.下載對應的驅動包 下載 jedis.jar :https://mvnrepository.com/a...
摘要:是一個由寫的存儲系統。是一個開源的使用語言編寫遵守協議支持網絡可基于內存亦可持久化的日志型數據庫,并提供多種語言的。它通常被稱為數據結構服務器,因為值可以是字符串哈希列表集合和有序集合等類型。 REmote DIctionary Server(Redis) 是一個由Salvatore Sanfilippo寫的key-value存儲系統。Redis是一個開源的使用ANSI C語言編寫、遵...
摘要:是一個由寫的存儲系統。是一個開源的使用語言編寫遵守協議支持網絡可基于內存亦可持久化的日志型數據庫,并提供多種語言的。它通常被稱為數據結構服務器,因為值可以是字符串哈希列表集合和有序集合等類型。 REmote DIctionary Server(Redis) 是一個由Salvatore Sanfilippo寫的key-value存儲系統。Redis是一個開源的使用ANSI C語言編寫、遵...
閱讀 1211·2023-04-25 20:31
閱讀 3718·2021-10-14 09:42
閱讀 1485·2021-09-22 16:06
閱讀 2636·2021-09-10 10:50
閱讀 3524·2021-09-07 10:19
閱讀 1772·2019-08-30 15:53
閱讀 1170·2019-08-29 15:13
閱讀 2818·2019-08-29 13:20