原创 說說你對Java反射的理解

public class ReflectCase { public static void main(String[] args) throws Exception { Proxy target = new Pr

原创 9_ArrayList

ArrayList 是一個數組隊列,相當於 動態數組。與Java中的數組相比,它的容量能動態增長。它繼承於AbstractList,實現了List, RandomAccess, Cloneable, java.io.Serializabl

原创 3_Eventbus源碼原理

用過EventBus嗎?實現原理是什麼?有什麼優缺點? 1.EventBus.getDefault().register(this); 其中getDefault()是一個單例方法,保證當前只有一個EventBus實例: public

原创 14_LeakCannary原理

leakCannary原理,如何判斷一個對象是否被回收?如何觸發手動gc leakCanary原理: 主要是在Activity的&onDestroy方法中,手動調用 GC,然後利用ReferenceQueue+WeakReference,

原创 10_Activity啓動流程源碼原理

對Activity啓動流程的瞭解:AMS和ActivityThread涉及到的源碼? 我們以啓動微信爲例,看看啓動流程是怎樣的。 簡單概括啓動微信的流程就是: 1.Launcher通知AMS 要啓動微信了,並且告訴AMS要啓動的是哪個頁面

原创 9_WindowManagerServer源碼原理

Window是一個抽象的概念,每個Window都對應着一個View和一個ViewRootImpl,Window和View通過ViewRootImpl來建立聯繫,因此Window並不是真實存在的,它是以View的形式存在的。 Window

原创 11_Google Protocol Buffer

Google Protocol Buffer( 簡稱 Protobuf) 是 Google 公司內部的混合語言數據標準。他們用於 RPC 系統和持續數據存儲系統。 Protocol Buffers 是一種輕便高效的結構化數據存儲格式,可以

原创 5_RxJava源碼原理

      RxJava 變換操作符 map、flatMap、concatMap buffer 談談對於RxJava的理解,可以嘗試描述一些使用場景,以及原理 操作符有幾大類: 創建操作符 變換操作符 組合/合併操作符 功能性操作符 過濾

原创 8_Activity的setContentView源碼原理

setContentView是怎麼把視圖繪製出來的 Activity#setContentView(int resID)方法會調用getWindow().setContentView(layoutResID) 其中有幾個需要注意的: ge

原创 如何繞過9.0限制

如何限制: 1.阻止java反射和JNI 2.當獲取方法或Field時進行檢測 (怎麼檢測: (1)區分出是系統調用還是開發者調用:根據堆棧,回溯Class,查看ClassLoader是否是BootStrapClassLoader。 (2

原创 Layout_gracity和gravity的區別

兩者的可選值差不多。 gravity:指的是文字在控件中的對齊方式。或者子view在父view的對齊方式(在父view中設置)。 layout_gravity:是LineaLayout的屬性,是用於指定控件在佈局中的對齊方式。當Linea

原创 8_LinkedList

LinkedList類是雙向列表,列表中的每個節點都包含了對前一個和後一個元素的引用. 繼承extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable

原创 synchronized 和volatile 關鍵字的區別

volatile和synchronized特點   首先需要理解線程安全的兩個方面:執行控制和內存可見。 (1)執行控制的目的是:控制代碼執行(順序)及是否可以併發執行。 (2)內存可見控制的是:線程執行結果在內存中對其它線程的可見性。(

原创 synchronized與Lock的區別

區別: 1.用法上的不同: (1)使用範圍不同:synchronized既可以加在方法上,也可以加載特定代碼塊上,而lock需要顯示地指定起始位置和終止位置。 (2)實現方式不同:synchronized是託管給JVM執行的,lock的鎖

原创 12_ConcurrentHashMap

ConcurrentHashMap   爲什麼要用ConcurrentHashMap HashMap線程不安全,而Hashtable是線程安全,但是它使用了synchronized進行方法同步,插入、讀取數據都使用了synchronize