原创 onMeasure onLayout onDraw 如何使用?

假設你瞭解了view的三大流程,你就很好理解這三個方法如何使用了。 onMeasure onLayout最純正的用法就是自定義ViewGroup的時候使用。因爲,純正的ViewGroup僅僅是view的容器。比如,ViewGroup默認會

原创 靜態內部類創建單例的實現和優點

public class Singleton { private Singleton() {} public static Singleton getInstance() { return Single

原创 socket保活方案 Tcp KeepAlive和應用層HeartBeat

兩種方案: 1. TCP提供的keepalive 2. 應用層heartbeat機制 keepalive 是系統內核就做好的東西,socket提供了設置啓用的方法。原理是tcp連接閒置一段時間後,通過發送數據包(ack包)等待回覆確認。幾

原创 View的三大流程是什麼,加以簡單說明

measure,layuout,draw。這三大流程由ViewRoot通過調用performTranversals發起。 measure:系統根據父View的MeaureSpec和View的layoutparams計算出View的Meas

原创 什麼是線程池,簡單實現

線程池是一個數據容器,盛裝了線程對象。重複利用線程,避免了重複創建銷燬的開銷,提高了工作效率。 附件提供簡單實現。爲什麼說是簡單實現,這是和java爲我們提供的線程池作對比的 比如,附件的實現沒有給出核心線程和一般線程的區分。

原创 DecorView如何被加載到Window中

ActivityThread處理Activity的核心類,他被主線程調用。 DecorView的加載需要從Activity的startActivity方法說起。此方法會調用到ActivityThread的handleLaunchActiv

原创 動態代理 Proxy.newProxyInstance

動態代理使用 interface UserService{ void login(User user); void register(User user); } class UserServiceImpl implem

原创 jvm內存劃分以及如何運行

單單內存劃分的話,可以簡單來講就是運行時數據區。方法區和堆線程共享。虛擬機棧,本地方方法棧,程序計數器線程私有。 JVM如何運行呢?類加載器加載字節碼文件進入運行時數據區。執行引擎執行字節碼指令,本地接口提供調用本地方法庫。

原创 Https 加密原理

基礎篇 Https所做核心事情是利用加密算法進行數據加密。算法主要分爲兩種類型(根據加密解密是否使用同一個密匙區分): 1. 對稱加密 AES加密算法。 2. 非對稱加密 RSA加密算法。 還有獨立於這兩種的算法Hash算法:MD5 SH

原创 排序 快速排序 平民版,升級版

利用遞歸實現快排:將數組或者子數組劃分成左右兩個數組(如何劃分成左右兩個數組,是第二步會講的),調用自身對左邊數組和右邊數組進行排序。 public void recQuickSort(int left, int right) {

原创 排序 選擇排序

每次遍歷選擇出最小的放到最左邊 public void selectionSort() { int in, out, min; for(out = 0; out < array.length -1; out++) {

原创 排序 插入

部分有序,某個數的左邊有序。 實現是,假定某個數的左邊都是有序的。將這個數空出,往左比較一直到比他小退出。否則,不停交換位置,將大數後移。最後,將假定的那個數填入交換後的空洞。 public void insertionSort(){

原创 排序 堆排序-基礎篇

堆是一棵特殊的樹,具有如下特點: 1. 完全二叉樹。除了最後一層,每一層從左到右是滿員的。 2. 每個節點都是大於或者等於它的子節點。 3. 通常由數組實現。 數組表示堆的時候,具有如下特性: 數組中的任意索引x 1. 父節點爲(x -

原创 排序 冒泡

每一次遍歷,最大的數沉到最右邊。 public int array[] = {1,3,5,2,4,3,1,8,7,9,8,6,8,9}; public void bubbleSort() { int in, out; f

原创 js 原型鏈 別把他複雜化

原型鏈是什麼? 根據對象的__proto__一直找尋前一個原型對象,知道原型對象爲null。這一條找尋鏈,就是原型鏈。   原型鏈是什麼,很簡單,就上面這一句。那如何理解原型對象,閱讀這篇文章https://developer.mozil