原创 Proguard學習及App混淆

proguard-android.txt與proguard-android-optimize.txt 當我們打Release的時候,Google會默認對我們的release包進行優化,這個優化是通過在modeule中build.g

原创 常見排序算法彙總及Java中默認實現

基本排序算法的分類及比較 首先,上一張各種排序算法比較的圖 排序方法 平均時間複雜度 最好情況下的時間複雜度 最壞情況下的時間複雜度 空間複雜度(輔助存儲) 穩定性 直接插入排序 O(n^2) O(n) O(n^2) O(

原创 OkHttp中攔截器流程解析

OkHttp中,我們對請求報文和返回報文的處理都是在攔截器中進行的,所以熟悉OkHttp中的各個攔截器以及它們是怎樣的處理流程是理解OkHttp的重點 攔截器鏈 首先,我們所最後得到的Response是通過這個函數得到的。 Res

原创 Android事件分發機制總結

Android中的事件分發機制是我們實現觸摸反饋、攔截等等的基礎,瞭解了事件分發機制,對於觸摸反饋事件失靈、多點觸控等等的實現和疑難解決,都有一個敏感的認知。 一切的開始: Activity的處理 當我們的Android手機接收到手指

原创 LeetCode:01矩陣

題目如下: 給定一個由 0 和 1 組成的矩陣,找出每個元素到最近的 0 的距離。 兩個相鄰元素間的距離爲 1 。 示例 1: 輸入: 0 0 0 0 1 0 0 0 0 輸出: 0 0 0 0 1 0 0 0 0 示例 2: 輸入: 0

原创 Android繪製流程總結

我們在自定義實現一個自定義view的時候,往往需要重寫它的onDraw()方法,在這個方法中,我們可以獲取到它的Canvas對象,那麼,這個Canvas對象是怎麼得到的呢? 首先我們知道Activity的視圖是由一個Window來進行顯示

原创 Https連接建立過程

Https的全稱是Http over SSL,而SSL是在TCP協議之上的保密層,但是它也是屬於傳輸層的,如果直接傳輸Http,報文的信息安全是無法被保障的,因爲它在應用層的信息傳輸是明文傳輸的。 過程 Https傳輸建立的過程可以分

原创 再探synchronized關鍵字

Synchronized關鍵字實現了兩個線程對同一個Monitor的互斥,可以用這個例子看出來: private static final Object lock1 = new Object(); priv

原创 synchronized關鍵字與volatile原理淺析

synchronized關鍵字與volatile關鍵字可以說是Java多線程的基礎,無論是各種同步鎖,還是我們所遇到的線程安全問題,都與這兩個關鍵字有聯繫。 Synchronized Synchronized關鍵字我們經常用來執行線程間的

原创 Java中的正則表達式(一)

Java中應用正則表達式必須依靠Pattern與Matcher類,常用的正則規範一般如下: 序號 規範 描述 1 \ 表示反斜線(\)字符 2 \t 表示製表符 3 \n 表示換行 4 [abc] 字符a、b或c

原创 LeetCode:根據身高重建隊列

題目如下: 假設有打亂順序的一羣人站成一個隊列。 每個人由一個整數對(h, k)表示,其中h是這個人的身高,k是排在這個人前面且身高大於或等於h的人數。 編寫一個算法來重建這個隊列。 注意:總人數少於1100人。 示例 輸入: [[7

原创 Lock接口實現解析:到底什麼是非重入鎖和可重入鎖

Java中接口的實現只給了ReentrantLock這一個默認的實現,也就是重入鎖,它的概念是在獲得鎖後可以重複獲得該資源的鎖,但是這是一個聽起來很繞的概念,重複獲得該資源的鎖是什麼意思?如果不能獲得,也就是這個鎖是不可重入的,又會是怎麼

原创 讓函數有執行順序-模板方法模式

我們知道在一般情況下,Android中Activity的生命週期如圖所示 執行順序爲onCreate()->onStart()->onResume()->onPause()->onStop()->onDestroy(),這個就是模板

原创 Android編譯時註解

這個寒假用空閒時間做了一個基於編譯時註解的RxBus,目前還沒有做工程化處理,但是基本的功能已經寫好,歡迎大家star和fork RxEventBus 趁着寒假最後一天來寫一下開發過程。 編譯時註解總結 註解分爲源碼級註解、編譯時註解

原创 類與實例的初始化順序

在Java中,static修飾符一直都是很重要的知識點,特別是當它修飾爲一個靜態代碼塊的時候,還有它被用來修飾變量的時候,當發生繼承關係或者是內部類關係的時候,我們這裏分幾種情況進行討論 當發生繼承關係的時候 如: public c