java基礎知識

來源:互聯網
上載者:User

標籤:acid   儲存   throws   訊號   調用   狀態   jdbc   integer   代碼塊   

一、JAVA異常

1、runtime exception(一般不需要捕獲,除數是0)

2、checked exception(null 指標),throws與throw

二、泛型(public static <T extend Comparable & Serializable> T min(T t))

1、虛擬機器沒有泛型型別對象-所有對象都是普通類。當程式調用泛型方法時,如果擦除傳回型別,編譯器插入強制類型轉換。

 1 import java.util.*;  2 public class ErasedTypeEquivalence {  3     public static void main(String[] args) {  4         Class c1 = new ArrayList<String>().getClass();  5         Class c2 = new ArrayList<Integer>().getClass();  6         System.out.println(c1 == c2); //泛型擦除 7     }  8 }/* Output:  9 true 10 *///:~

2、解決泛型擦除

1)萬用字元

   <? super T>逆變指明泛型類持有T的基類,則T肯定可以放入

   <? extends T>指明泛型類持有T的匯出類,則傳回值一定可作為T的協變類型返回

2)定義介面實現

三、反射

在運行狀態中,對於任意一個類,都能得到其所有屬性和方法,對於任何一個對象都能調用其方法(動態調用對象方法的功能)

clazz.getClass()

四、類載入

1、類載入機制

(1) 裝載:尋找和匯入Class檔案;

(2) 連結:把類的位元據合并到JRE中;

     (a)校正:檢查載入Class檔案資料的正確性;

     (b)準備:給類的靜態變數分配儲存空間;

     (c)解析:將符號引用轉成直接引用;

(3) 初始化:對類的靜態變數,靜態代碼塊執行初始化操作

2、類載入的三種方式

1)new Date()

2)Class.forName("")-->Class.forName(className, true, this.getClass().getClassLoader())。第二個參數,是指Class被loading後是不是必須被初始化。Class.forName(com.mysql.cj.jdbc.Driver);

3)ClassLoader.loadClass(className)實際上調用的是ClassLoader.loadClass(name, false),第二個參數指Class是否被link。

3、類載入器和雙親委派模型

1)Bootstrap ClassLoader : 將存放於<JAVA_HOME>\lib目錄中的,只有符合類庫的才會被載入。

2)Extension ClassLoader : 將<JAVA_HOME>\lib\ext目錄下的,或者被java.ext.dirs系統變數所指定的路徑中的所有類庫載入。開發人員可以直接使用擴充類載入器。

3)Application ClassLoader : 負責載入使用者類路徑(ClassPath)上所指定的類庫,開發人員可直接使用。它負責將系統類別路徑java -classpath或-Djava.class.path變數所指的目錄下的類庫載入到記憶體中。

五、集合

1、Collection(實現了Iterable介面)

2、鏈表 將每個對象存放在獨立的節點,每個節點還存放序列中下一個節點的引用,添加刪除快,數組添加刪除慢,需要數組複製。

3、數組列表 ArrayList,底層數組,隨機尋找快。

4、散列集 HashSet底層HashMap

5、樹集 TreeSet 紅/黑樹狀結構

6、對象比較 Comparable 介面,得實現這個介面才能比較,compareTo(T);Comparator Compare(T1, T2)

7、隊列與雙端隊列 ArrayDeque(非安全執行緒,訪問快)、Stack(extend Vector)

8、映射表 HashMap 初始16 大小為2^n,JDK7底層數組,數組每一項都是Entry,Hash碰撞解決是拉鏈法->位桶+鏈表;JDK8底層數組,數組每一項都是Node,Hash碰撞解決->位桶+鏈表/紅/黑樹狀結構

六、多線程

1、繼承Thread、實現Runnable

2、中斷線程

3、線程的狀態

1)NEW

2)RUNNABLE  start()之後

3)BLOCKED locked之後

4)WAITING wait()、join()

5)TIMED WAITING wait(time)

6)TERMINAL 

4、線程優先順序以及守護線程(當沒有其他線程執行時結束)

5、Volatile

6、ThreadLocal

7、線程間通訊

1)利用最基本的synchronizednotifywait

2)利用LockCondition

3)訊號量a、CyclicBarrier(預定線程數達到後)b、CountDownLatch(計數器減為0)c、Semaphore(允許訪問限制資源的線程數)

8、執行器

1)newSingleThreadExecutor:

2)newFixedThreadPool:

3)newCachedThreadPool:

4)newScheduledThreadPool:

5)ThreadPoolExecutor:

五、資料庫

1、事務

1)事務特性(ACID)atomacity、consistency、isolation、durability

2)交易隔離等級 (髒讀、非重複讀、幻想讀、丟失修改)--> 未提交讀、已提交讀、可重複讀、串列讀

3)鎖 共用鎖定、更新鎖定、獨佔鎖

4)索引:直接建立(建表時建立)和間接建立(建表後建立)

 

java基礎知識

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.