@ [toc]
1.依賴注入
- 依賴注入是一種設計模式和編程思想,不依賴 具體的框架實現,可以通過多種方式和框架來實現
- 可以通過Spring , Google Guice , PicoContainer 等都可以實現依賴注入,也可以通過手動編寫實現
- 目的:
- 為了解耦合,將對象之間的依賴關系從代碼中解耦出來, 使系統更加靈活,更易于維護和測試
- 方法:
- 構造方法注入: 通過構造函數傳入依賴對象
- Setter方法注入:通過Setter方法設置依賴對象
- 接口注入
2.File類
- File類是用來表示文件和目錄路徑名的抽象,主要功能是對文件和目錄進行操作,如創建,刪除,重命名,以及獲取文件和目錄的各種屬性信息.如果要進行文件內容的讀寫,則需要使用java IO流相關的類
- java中用于文件操作的基礎類,主要用于獲取文件和目錄的屬性,信息等,而不能直接進行文件的讀寫操作
- File本身不能讀寫文件內容,需要使用FileInputStream,FileOutputStream,FIleReader,FileWriter等流類操作
- 通過createNewFile()方法創建文件,通過mkdir()或者mkdirs()方法創建目錄
3.多線程
- run()方法是線程執行的入口點,也是新線程執行的起點.當一個類繼承Thread類或實現Runnable接口時,必須==重寫run()==方法來定義線程要執行的任務
- start()方法是用來啟動線程的方法,是線程進入就緒狀態,等待CPU調度
4.HashMap
- java中常用的集合類
- 使用鍵值對的形式存儲數據,每個鍵都映射一個特定的值,這種結構讓數據的存取非常高效
- 不保證元素的順序,有序存儲需要使用LinkedHashMap或者ThreeMap
- 允許使用null作為鍵,但是只能有一個null鍵
- 允許使用null做值,并且可以有多個鍵映射到值
- 鍵必須是唯一的,但是值可以重復
- HashMap的實現基于哈希表,查找效率為O(1)
- 不是線程安全,多線程環境下應使用ConcurrentHashMap
5.序列化
- java實現序列化時,必須實現Serializable接口,這是一個標記接口,沒有定義任何方法,僅用來標識某個類對象可以序列化.當一個類實現后,java虛擬機在序列化的過程中提供默認的序列化機制
- 序列化時將對象轉換為字節序列的過程
- 反序列化是將字節序列恢復對象的過程
- serialVersionUID是 序列化版本號,用于確保序列化與反序列化的類版本一致
- 使用transient關鍵字可以標記不需要序列化的字段
6.Cloneable接口
- 用于標記一個類的對象可以被克隆
7.Comparable接口
- 用于定義對象之間自然排序規則,提供compareTo方法的實現
8.Writeable
- 不是java標準庫中的接口
9.executeUpdate()方法返回值的具體含義
- 其返回值表示受影響的行數
- 對于INSERT語句:返回新增的記錄數
- 對于UPDATE語句:返回更新的記錄數
- 對于DELETE語句:返回刪除的記錄數
- 如果執行失敗,則會拋出SQLException,恩施返回特殊值
10.volatile
- 用于多線程環境下的同步控制,但是并不能完全保證線程安全
- 能保證可見性 和 有序性 ,但是不能保證原子性
- JVM的內存模型規定,volatile變量的值在使用前必須從主內存重新加載,保證獲取到的是最新值
- 輕量級的同步機制,保證內存可見性和機制指令重新排序,但是不保證原子性,所以不保證線程安全
11.線程安全的類
- Hashtable:其所有方法都是同步的(synchronized),任一時刻只能有一個線程訪問,所以是線程安全的,但是性能不如HashMap,在多線程環境下可以安全使用
- Vector:與Hashtable類似,所有方法是同步的,可在多線程環境下安全使用,是ArrayList的線程安全版本
- 現在更推薦使用java.util.concurrent包下的并發集合類,如ConcurrentHashMap,CopyOnWriteArrayList等
12.線程不安全的類
- TreeSet:基于T熱額Map實現的,不是線程安全的,可以使用Collections.synchronizedSet()實現線程安全
- LinkkedList:是雙向鏈表實現,本身不是線程安全的,在多線程環境下使用需要額外的同步措施
13.類方法的特性和調用規則
- 類方法中不能使用this關鍵字,因為this表示當前對象的引用,而類方法屬于類本身,不依賴與具體對象,在類方法中使用this是語法錯誤
- 可以直接調用本類的其他方法和類變量
- 也可以調用實例方法,但需要先創建類的實例對象,然后通過對象引用來調用