原创 速讀Java線程池

一、前言 線程池是開發中繞不開的一個知識點 。 對於移動開發而言,網絡框架、圖片加載、AsyncTask、RxJava, 都和線程池有關。 正因爲線程池應用如此廣泛,所以也成了面試的高頻考點。 我們今天就來講講線程池的基本原理和周邊知識。

原创 (下篇)AsyncTask加強版

一、前言 前文鏈接:(上篇)解讀AsyncTask 上一篇文章我們介紹了AsyncTask的相關知識點,尤其是就其存在的問題做了深入的探討。 AsyncTask總的來說實現簡單,構思精巧,還是有不少地方值得借鑑的; 但因其保守的設計,在通用

原创 (上篇)解讀AsyncTask

一、前言 爲了提高流暢性,耗時任務放後臺線程運行,這是APP開發的常識了。 遠古時期,還沒有各種庫的時候,用來處理異步任務的方法有: Thread/ThreadPoolExecutor、Service/IntentService、Async

原创 基數排序原理與實現

一、前言 基數排序是一種非比較型整數排序算法,其原理是將整數按位數切割成不同的數字,然後按每個位數分別比較。 以上內容摘自維基百科,不過不是基數排序的定義,只是一段描述,主要講述兩個點: 性質:非比較型排序 原理:按位切割,分別比較。

原创 如何修復SQLite數據庫

一、前言 SQLite性能好,對SQL支持全面,是久經考驗的輕量的關係型數據庫。 移動開發者對SQLite應該都不陌生了,只是不同的 APP 對數據庫的依賴程度不同(有的甚至不需要數據庫-_-)。 SQLite雖然是可靠性較高的數據庫,但是

原创 造了四個輪子之後,我們上路跑一跑

一、前言 最近相繼發佈了四個開源項目,都是比較輕量的項目。 造完輪子,很自然的想到要弄個App來跑一下。 在搬APP出來之前,先介紹下這幾個輪子吧。 二、輪子 昨晚我在秋名山輸給一輛五菱宏光, 他用慣性飄移過彎,他的車很快,我只看到他有個

原创 如何實現一個圖片加載框架

一、前言 圖片加載的輪子有很多了,Universal-Image-Loader, Picasso, Glide, Fresco等。 網上各種分析和對比文章很多,我們這裏就不多作介紹了。 古人云:“紙上得來終覺淺,絕知此事要躬行”。 只看分析

原创 如何實現一個線程調度框架

一、前言 線程是程序執行流的最小單元,很基礎,也很重要。 爲了提高流暢性,耗時任務放後臺線程運行,這是APP開發的常識了。 隨着APP複雜度的提升,越來越多任務需要開線程執行,同時,遇到如下挑戰: 任務場景多樣化,常規的API無法滿足;

原创 幾條曲線構建Android表白程序

每年的情人節和七夕,甜蜜與痛苦的日子,做點什麼好呢? 寫詩畫畫送禮物,逛街吃飯看電影? 作爲搬磚愛好者,寫個表白腳本或者動畫什麼的吧。 想起之前看到的一段H5動畫,在Android平臺“臨摹”了一遍。 效果如下圖:其構圖還是比較簡單的,樹枝

原创 LightKV-高性能key-value存儲組件

LightKV是基於Java NIO的輕量級,高性能,高可靠的key-value存儲組件。 一、起源 Android平臺常見的本地存儲方式, SDK內置的有SQLite,SharedPreference等,開源組件有ACache, Disk

原创 Android設備唯一標識的獲取和構造

設備唯一標識對於app開發是很重要的一個點,主要應用於統計,有時也應用於業務。 Android平臺提供了很多獲取唯一標識的API,但都不是很穩定。 一、獲取唯一標識 Android開發者網站上的一篇文章Identifying App Ins

原创 Android輕量級事件通信方案

開發過程中,總會遇到一些需要通信的場景。 如果邏輯比較簡單,通過常規的傳參,回調,返回值等即可實現。 而如果調用層次較深(如跨模塊,跨線程等),光靠傳參和回調等手段,耦合度較高, 對於需要主動通知,通知多個組件等場景,更是捉襟見肘。 爲解耦

原创 漫談散列函數

說到散列,一般對應於散列表(哈希表)和散列函數。 我們今天不談哈希表,僅談下散列函數。 定義 引一段百度百科關於散列函數的定義。 Hash,一般翻譯做“散列”,也有直接音譯爲“哈希”的,就是把任意長度的輸入,通過散列算法,變換成固定長度的

原创 Kotlin委託屬性-簡化數據訪問

一、概述 Kotlin有很多語法糖,最近看了委託屬性, 用於改造筆者的開源組件LightKV, 確實提高了不少易用性。 關於LightKV,筆者在上一篇文章《LightKV-高性能key-value存儲組件》中有介紹其原理,有興趣的讀者可以

原创 UUID的壓縮

概述 UUID,通用唯一識別碼(Universally Unique Identifier)。 UUID的目的是讓分佈式系統中的所有元素都能有唯一的辨識信息,而不需要透過中央控制端來做辨識信息的指定。 UUID的標準型式包含32個16進制數