原创 反射機制

什麼是反射: 反射是Java語言的一個特性,它允許程序在運行時來進行自我檢查並且對內部的成員進行操作。例如它允許一個java的類獲取他所有的成員變量和方法並且顯示出來。 java的反射機制的實現要藉助4個類:Class,Const

原创 深入分析 Java 中的中文編碼問題

幾種常見的編碼格式 爲什麼要編碼 不知道大家有沒有想過一個問題,那就是爲什麼要編碼?我們能不能不編碼?要回答這個問題必須要回到計算機是如何表示我們人類能夠理解的符號的,這些符號也就是我們人類使用的語言。由於人類的語言有太多

原创 Java併發編程之CyclicBarrier

一、場景描述 有四個遊戲玩家玩遊戲,遊戲有三個關卡,每個關卡必須要所有玩家都到達後才能允許通過。其實這個場景裏的玩家中如果有玩家A先到了關卡1,他必須等到其他所有玩家都到達關卡1時才能通過,也就是說線程之間需要相互等待。這和Cou

原创 ArrayList和LinkedList的區別

List代表一種線性表的數據結構,ArrayList則是一種順序存儲的線性表。ArrayList底層採用數組來保存每個集合元素,LinkedList則是一種鏈式存儲的線性表。其本質上就是一個雙向鏈表,但它不僅實現了List接口,還實

原创 Java併發編程之synchronized

Java語言的關鍵字,當它用來修飾一個方法或者一個代碼塊的時候,能夠保證在同一個時間,只有一個線程可以進行操作。多線程的同步機制對資源進行加鎖,同步用以解決多個線程同時訪問時可能出現的問題。 對於普通同步方法,鎖是當前實例對象。對於靜

原创 Git分支管理

首先,我們創建dev分支,然後切換到dev分支 [plain] view plain copy $ git checkout -b dev   Git checkout命令加上-b參數表示創建並切換,相當於

原创 Java併發編程之讀寫鎖

讀寫鎖維護了一對相關的鎖,一個用於只讀操作,一個用於寫入操作。只要沒有writer,讀取鎖可以由多個reader線程同時保持。寫入鎖是獨佔的。 可重入讀寫鎖 ReentrantReadWriteLock ReentrantRead

原创 ArrayList和Vector的區別

Vector和ArrayList這兩個集合類的本質並沒有太大的不同,它們都實現了List接口,而且底層都是基於Java數組來存儲集合元素。 在ArrayList集合類的源代碼中可以看到如下一行。 //採用elementData數組來保

原创 類方法和類實例的區別

先來看一道面試題: 下列說法錯誤的有() A.在類方法中可用this來調用本類的類方法 B.在類方法中調用本類的類方法時可直接調用 C.在類方法中只能調用本類中的類方法 D.在類方法中絕對不能調用實例方法   曾經我做過

原创 Java併發編程之重入鎖

重入鎖,顧名思義,就是支持重進入的鎖,它表示該鎖能夠支持一個線程對資源的重複加鎖。重進入是指任意線程在獲取到鎖之後能夠再次獲取該鎖而不會被鎖阻塞,該特性的實現需要解決以下兩個問題。 1、線程再次獲取鎖。鎖需要去識別獲取鎖的線程是否爲當

原创 java動態代理

 在目前的Java開發包中包含了對動態代理的支持,但是其實現只支持對接口的的實現。 其實現主要通過是Java.lang.reflect.Proxy類和java.lang.reflect.InvocationHandler接口。 Pro