本文來自http://blog.csdn.net/liuxian13183/ ,引用必須註明出處!
架構這個話題比較大;從組織結構來說,CEO是一家公司的架構師,將公司劃分爲銷售部、市場部、技術部、行政部、財務部、客服部等,每個部門履行特有的職能並相互配合,最終實現“產品”的有效輸出;技術架構也同樣如此。
項目架構主要目的是解耦、靈活開發,讓後端成爲產品的瓶頸,而不要讓客戶端成爲產品的瓶頸,所有的業務均
可實現“熱加載”;大的項目需要進行插件式開發,必須減少依賴關係,這樣編譯和執行纔會快,用戶體驗纔會好。
問題:
1、如何保證http請求從App這裏拿到相應的緩存數據,而不再請求服務器?
客戶端與服務端商定Get請求的時效,可以有效解決部分併發問題。
最近研究緩存,看到了okgo框架,在okhttp基礎上封裝了自定義的重試機制(通過緩存request來實現)和緩存機制(根據請求頭和緩存時間來判斷,通過db來實現),對響應返回也定義了若干數據類型,對於新手學習還是有很大幫助的。
缺點:在於默認3次重試機制,每次3分鐘,無法根據接口來改動(因爲okhttp對象是全局的)。
總體來說,可以用用。
2、應用如何保活?
3、如何優化電量和內存?
4、安全問題:定製執行特定操作、目錄白名單、灰度發佈等方式來安全加載應用。
5、緩存問題:LruCache-Least Recently Used Cache,清除最近最少使用的緩存。
原理:設計緩存大小,使用LinkedList存取數據;get時使用數+1,put時使用數+1,同時監測內存是否超界;
如果超界,則開啓死循環,清除最少使用的緩存(通過linkedHashMap的eldest找到),然後bread;繼續。
灰度發佈:
主要是A/B測試,分功能模塊、地區、用戶比例來測試,同時可以及時停止測試,防止意外發生,同時又
避免影響線上用戶體驗。
其次對比實驗,用數據來確定採用哪套方案。
架構的主要工作有哪些?
0、構造設計模式,MVC、MVP或MVVM,數據存取、網絡工具、加載過程等實現。
1、設計基礎功能模塊
就像生活必備水電煤、米油鹽一樣,有這些日子才能過起來,項目也一樣。設計模式、組件通信、加載過程、網絡框架、圖片框架、線程池管理、UI框架、必要組件、必要功能、基礎組件等均在初期需要制訂。
2、設計基本功能模塊
細化項目框架和組件,以及樣式,設計項目的核心功能,分配功能模塊,靈活設計可插拔模塊
3、減少業務耦合度
AOP思想,面向切面編程,即專注處理自身模塊,通過scheme來告訴外界自己的功能,通過Filter來過濾可以處理細化的信息。
Android中可以使用RxBus和自定義路由來實現。
Otto據說比EventBus、handler、BroadcastReceive和interface更簡單,回頭要研究一下。
將訂閱者及內部的方法以鍵值對的形式存入RxBusFactory,事件源發送事件根據消息類型交由不同的訂閱者處理。
ARouter,默認使用application,如果未設置flag,則會啓動一個新的task;noPostcard,攔截器循環攔截引起,修改其中的邏輯即可。
4、保持調用靈活性
接口和類要全面適配,如參數類型、參數數量、API版本、so庫支持等
5、良好的編譯工具和打包工具
編譯工具:Android最佳編譯工具介紹
打包工具:Ant、Gradle、Python三種打包方式的介紹
Gradle加速編譯:http://droidyue.com/blog/2017/04/16/speedup-gradle-building/index.html
Lint用於找出應用中的異常以及不規範的操作
http://tech.meituan.com/android_custom_lint.html
https://github.com/shwenzhang/AndResGuard
6、項目管理工具,建議用Git,跟Svn的最大區別在於:分佈式管理,每個人的電腦都是服務器。
架構師的修養:阿里中間件需要怎樣的架構師?
Live地址:知乎
翻牆服務搭建:https://www.diycode.cc/topics/738
FindViewById的快速工具:http://www.cnblogs.com/klcf0220/p/5924440.html
谷歌開源檢查應用錯誤工具:Error-prone
markdownpad:
先安這個: http://markdownpad.com/download/awesomium_v1.6.6_sdk_win.exe
MVVM:http://download.csdn.net/detail/liuxian13183/9884386
網站使用www.example.com和example.com的區別:
後者攜帶該網站所有cookie信息,不夠安全;一般通過301設置,將後者跳到前者。一方面有利於統計訪問(對SEO無影響),另一方面不會給用戶造成困擾(後者未作配置,無法訪問)。
Fiddler使用:保證手機網絡和電腦網絡處於同一個路由下面,同一個IP段。