原创 ThreadPoolExecutor精簡解析

目錄參數解析運行狀態工作隊列execute時線程數量和任務隊列的關係創建線程並消費隊列中任務 通過圖表和流程圖來精簡解析線程池的各種參數配置和基本的工作原理. 更基礎的一些原理, 例如condition的等待和通知等會單獨再開一篇

原创 Thread線程間協作

目錄joinyieldCountDownLatchCyclicBarrierwait notifyLockSupportConditionConditionsSynchronousQueue 線程間的交互和協作從簡單到複雜有很多種

原创 Android 項目部署之Nexus私服搭建和應用

一.概述        Nexus是一個基於maven的倉庫管理的社區項目.主要的使用場景就是可以在局域網搭建一個maven私服,用來部署第三方公共構件或者作爲遠程倉庫在該局域網的一個代理.簡單舉幾個例子就是:        1.第三方J

原创 Java對象在內存中的結構和鎖狀態升級過程

目錄Mark Word無鎖狀態偏向鎖狀態輕量級鎖狀態重量級鎖狀態Class WordInstance DataPadding java對象在堆中主要分爲四部分結構, 分別是對象頭MarkWord, 對象指針ClassWord, 實

原创 Android activity-alias 多入口配置

       以前裝應用的時候有些應用會在桌面上生成兩個圖標,這兩個圖標有些是同一個Activity的入口,有些是另外一個Activity的入口,這樣的效果是怎麼實現的呢?在看Android原生DeskClock程序的時候看到了這個功能的

原创 Java 內存結構分配和回收規則

目錄內存結構對象引用分析GC回收算法GC回收器內存分配規則 Java同C++的內存管理不一樣, 不需要開發者自己維護對象的生命週期. JVM的自動內存管理機制會幫助回收需要被回收的對象, 並且不會輕易出現內存泄露等問題. 這種機制

原创 Android源碼之DeskClock (二)

一.概述        在DeskClock(一)中介紹了該程序源碼的遷出,現在開始分析該應用的源碼,DeskClock主要有四個功能,鬧鐘,時鐘,定時,和秒錶,在這篇博客中主要分析DeskClock的入口和主UI上的邏輯結構,在後續的

原创 Android源碼之DeskClock (四)

一.概述        之前寫三的時候饒了個彎,通過DeskClock這個項目簡單實現了一下加固+熱修復,在這篇繼續回到正規繼續分析源碼.在二里面大致分析了DeskClock的主入口,跟四個主要功能Fragment的轉換,從這篇開始就着手

原创 Android 可視化性能監控和輔助小工具合集

MagicBox是一款Android平臺的小工具合集, 性能檢測, 接口請求控制和攔截等功能集合. 建議在Debug和測試階段使用. 功能清單 小工具: 提供各種小工具輔助開發測試, 並支持外部擴展. 功能 描述

原创 Android設計模式之單例模式 Singleton

單例模式是設計模式中最簡單的一種, 由於它沒有設計模式中各種對象之間的抽象關係, 所以有人不認爲它是一種模式, 而是一種實現技巧. 單例模式就像字面的意思一樣, 創建全局唯一的一個實例, 提供給外部使用. 要達到這幾點要求就要滿足三點:

原创 Android設計模式之工廠模式 Factory

一.概述        平時做項目跟使用第三方類庫的時候經常會用到工廠模式.什麼是工廠模式,簡單來說就是他的字面意思.給外部批量提供相同或者不同的產品,而外部不需要關心工廠是如何創建一個複雜產品的過程.所以工廠模式可以降低模塊間的耦合,同

原创 Android源碼之DeskClock (一)

一.概述       一直有read the fucking source code的計劃,但是實行起來都是斷斷續續的.到現在也沒有真正得讀過多少Android的源碼(主要是懶的).現在回想起來實在是很慚愧,再加上好久沒有寫博客了,經過幾

原创 Android 基於Proxy/Delegate 實現bug熱修復

一.概述        現在越來越多的app開始採用本地app結合html5的設計結構,這樣做不僅可以跨平臺,並且在某個業務或模塊出了嚴重的bug,可以直接在html5+後臺實時修復,省去了發佈新包和新版本的步驟.那麼在不是html5結構

原创 Android源碼之DeskClock (三) Proxy/Delegate Application 框架應用

一.概述        當項目有加殼子,插件化或熱修復等需求的時候,可以使用Proxy/Delegate Application框架的方式,在正常的模式中,一個程序一般只有一個Application入口,而Proxy/Delegate模式

原创 Android 5.0之後對HashMap的修改

       之前發現在Android 5.0的機子上放在HashMap裏面的數據取出後跟Android 5.0之下的機子不一樣,導致項目裏面一個接口出了問題(接口做了緩存,request參數順序變化的話就會導致一些數據拿不到),然後去查