原创 ProductFlavors 簡單使用

概述我們在開發過程中,會經常遇到,同樣的業務邏輯,需要配置不同的資源的情況。有時是不同的渠道,有時是不同的語言環境,各種不同。如果我們在業務邏輯中,去實現這些差異化,會導致兩個問題:代碼量很大,分支路徑很多。而很多路徑在實際使用中是用不到的

原创 Android dependencies 基礎知識

概述在build:gradle2.x的時代,我們在進行第三方依賴時,會有一些尷尬的問題。比如,我們製作了一個庫,依賴了Glide2.0 。項目組集成我們的庫,同時也需要使用Glide4.0 。由於Glide4.0與Glide2.0包名相同,

原创 annotationProcessor 自動生成代碼(上)

概要有時候,我們需要開發大量重複的代碼。每段代碼,只有少數成員變量命名不同。這樣的場景在開發接口層時,感覺尤爲明顯。 接口類可能只是實現類的抽象形式。但每個實現方法,我們都要寫一遍接口。且每個接口方法的命名,可能和實現方法完全一致。 那

原创 排序備忘

摘要排序是算法的一項基礎能力,也是面試必考題。如何寫一個恰當的排序,也是一個軟件工程師的基本必備技能。冒泡排序法冒泡排序法是思想最樸實的排序,通過n^2次交換,將當前最大的,送到序列尾部。冒泡排序的時間最好,最差,平均時間複雜度都是O(n^

原创 Git使用教程

SVN區別Git 與 SVN 區別點:1、GIT是分佈式的,SVN不是:這是GIT和其它非分佈式的版本控制系統,例如SVN,CVS等,最核心的區別。2、GIT把內容按元數據方式存儲,而SVN是按文件:所有的資源控制系統都是把文件的元信息隱藏

原创 KVO簡單使用及其實現原理

前言在應用開發中,我們經常需要使用到,觀察者模式,能監聽某些對象屬性的變化,進行相應的操作。在iOS中,OC爲我們提供了一套更加簡潔優雅的觀察方式——KVO。KVO全稱Key Value Observing,鍵值監聽機制,由NSKeyVal

原创 計算機網絡學習筆記(二)

HTTP的請求流程客戶端在特定端口發起一個到服務器指定域名的TCP連接,該端口是HTTP默認端口。客戶端經它向服務端發送一個HTTP請求報文,報文包含了路徑HTTP服務器接收請求報文,從存儲器中檢索出對象,在HTTP響應報文中封裝對象,併發

原创 計算機網絡學習筆記(一)

體系結構常見的網絡體系結構分爲:C/B-S結構 與 P2P結構。C/B-S結構需要一箇中心服務器,具有固定且周知的IP地址。如Google。P2P結構所有設備都是對等方,如skype。P2P結構的挑戰有三:上載與下載不對等,上載壓力比下載壓