原创 架構師學習--rxjava背壓模式

什麼是背壓模式,在rxjava1系列是沒有背壓模式的,但是在rxjava2中加入了背壓。那是因爲在rxjava1中,如果上游不停地發射,下游處理不過來(阻塞),就會出現內存泄漏。爲了解決這個問題,就引入了背壓。背壓的上游被觀察者是

原创 架構師學習--rxjava操作符(過濾型操作符、條件型操作符)使用

一、過濾型操作符 1、filter操作符 測試代碼如下: 運行結果如下: 這裏只打印了3。 總結: test方法,返回true,表示不過濾,直接發射到下游。 test方法,返回false,表示過濾,不會發射到下游。 2、t

原创 架構師學習--rxjava操作符(合併型操作符、異常型操作符)使用

一、合併型操作符 1、startWith操作符 測試代碼如下: 運行結果如下: 總結: 先發射startWith事件。 2、concatWith操作符 測試代碼如下: 測試結果如下: 總結: 後發射concatWit

原创 架構師學習--rxjava操作符(創建操作符、變換操作符)使用

大家都清楚,Rxjava的問世給我們程序員帶來了一大波福利,簡單的鏈式調用就能實現比較複雜的功能,並且邏輯清晰,易於擴展。但是,對於它的學習,還是需要一定的時間成本的。其實它的設計模式主要就是觀察者模式,只不過它不是標準版的觀察者

原创 架構師學習--okhttp3責任鏈模式(包含請求封裝和結果解析)

之前原理解析中說到,okHttp3使用了責任鏈模式添加了很多的攔截器,比如重試攔截器、請求頭攔截器等等。有了這些攔截器,就可以把網絡請求的不同部分交給各自攔截器實現,然後將攔截器處理的結果拼接成一個完整的請求實體,交給服務器。 一

原创 架構師學習--手寫Glide之複用池

首先了解爲什麼需要複用池的設計?之前有說過,內存緩存採用LruCache緩存機制,在某個時刻系統會回收或者當我們手動回收一張內存中的圖片時,就會將這張圖片的內存加入到複用池中,這樣當下一次申請圖片內存的時候,收錢會從複用池中查找有

原创 架構師學習--手寫Glide之磁盤緩存

前面學習了活動緩存和內存緩存,本章將繼續學習磁盤緩存,在內存緩存中我們使用了最少使用算法,並且android也提供了LruCache這個類供我們使用,同樣的磁盤緩存也是使用了這個算法,但是遺憾的是android沒有提供磁盤緩存的類

原创 架構師學習--okhttp3連接池實現

首先我們需要明白,okhttp比其他網絡請求框架的優勢在哪裏?當然最重要的就是他對傳輸層的Socket進行了進一步的封裝。所謂的封裝,就是拿到服務器最原始的數據流,進行解析,返回給用戶。大家需要明白一點,socket的連接是需要消

原创 架構師學習--手寫Glide之內存緩存

之前一篇文章帶大家學習了活動緩存,本章將繼續學習內存緩存。首先使用了LruCache算法(最近使用)緩存策略,什麼是LruCache算法呢?這裏對算法內部具體實現不做研究。先看一下android提供的源碼: 一、LruCache

原创 架構師學習--手寫Glide之活動緩存

Glide是目前市場上比較流行的圖片加載框架,使用起來很方便,一堆鏈式調用就可以加載一張網絡圖片了。第一次加載會比較慢,當我們下次再次加載這張圖片的時候,速度將會質的飛躍。這是因爲它的圖片緩存機制做的非常好。從源碼中可以看出,他會

原创 架構師學習--插件化之Hook方式(5.0版本~9.0版本)

首選,當我們啓動一個activity,在沒有在配置文件註冊的前提下,會拋出以下異常: 以下分析基於9.0源碼,兼容代碼可自行下載完整代碼。 一、異常分析 那麼首先我們需要分析這個異常是在哪裏出現的?源碼跟蹤如下: 在check

原创 架構師學習--數據庫框架的基本搭建(增刪改查)

本文主要實現如何搭建一套自己的數據庫框架。包括數據庫的創建、表的創建、數據的增刪改查功能、以及數據庫如何實現分庫、如何進行更新。 一、創建數據庫及生成數據庫表 如何使自己的數據庫表的創建以更加優雅的方式,我們就需要註解的方式實現。

原创 架構師學習--數據庫分庫

學習本文內容,需要先去自行閱讀架構師學習–數據庫框架的基本搭建(增刪改查)這篇文章,因爲代碼都是基於之前的基礎上進行開發的。開始之前,我提出幾個問題:什麼是分庫?爲什麼要分庫?如何分庫? 一、什麼是分庫 所謂的分庫就是創建多個db

原创 架構師學習--數據庫升級

我們在平常項目中難免會碰到這樣的情況,比如我想在用戶表中增加一個字段,來採集用戶行爲信息。比較常規的做法可能就是,重新測試打包上架,然後提示用戶更新app。但是如果用戶不更新呢?這樣我們就無法採集到這個字段,另外重新打包上架的時間

原创 架構師學習--okhttp3原理解析

okhttp是目前最流行的網絡框架,爲什麼這樣說呢?本文將帶領大家逐步解密。 一、使用 想必大家在項目中都是如下使用的,這裏以一部請求爲例: 這裏可以看出發出一條請求,離不開這幾個類: OkHttpClient Request