0. 背景
構建一個屬於本身的知識體系,可以讓咱們學到的知識體系化.讓本身清楚哪塊是本身的知識盲區,哪塊已經構建起根基.而後根據實際狀況,有針對性的進行模塊學習.讓本身成爲一個合格的Android工程師.前端
平時看博客或者學知識,學到的東西比較零散,沒有獨立的知識模塊概念,並且學了以後很容易忘.因而我創建了一個本身的筆記倉庫 (一個我長期維護的筆記倉庫,感興趣的能夠點個star~你的star是我寫做的巨大大大大的動力),將平時學到的東西都歸類而後放裏面,須要的時候呢也方便複習.過了段時間,我以爲這樣仍是不夠好,因而我最近花了點時間,整理了一下Android中的常見知識,畫了一張思惟導圖.更清晰地認識本身的知識邊界到底在哪裏,哪些東西還不足.python
圖片看不清楚朋友的能夠訪問圖片源文件,或者查看幕布筆記連接: Android知識體系最新git
此知識體系呢只是一個參考,你們能夠根據本身的實際狀況進行增刪(先將筆記保存到幕布,而後就能夠進行修改了).而後進行查漏補缺,提高本身~github
1. 計算機基礎
1.1 計算機網絡
1.1.1 計算機網絡概述
- 網絡七層協議
- TCP/IP四層模型
- 底層協議
- 底層設備
1.1.2 應用層
- HTTP協議(⭐⭐⭐)
- DHCP協議(⭐⭐⭐)
- NAT
1.1.3 傳輸層(⭐⭐⭐)
1.1.4 網絡層
1.2 操做系統(⭐⭐⭐)
1.2.1 操做系統基本功能
1.2.2 Linux系統
1.2.3 補充
- 自旋鎖/互斥鎖/讀寫鎖/條件變量/共享文件
- 消息隊列/管道/信號量
- 操做系統的用戶態與內核態
- 上下文切換成本
- 進程,線程與協程
2. Java基礎(⭐⭐⭐)
2.1 集合原理
- ArrayList
- Vector
- Stack
- LinkedList
- HashMap
- Hashtable
- TreeMap
- LinkedHashMap
- HashSet
- TreeSet
- CopyOnWriteArrayList
- ConcurrentHashMap
- LinkedBlockingQueue
- SynchronousQueue
- SparseArray
- ArrayMap
2.2 其餘
3. Java併發
3.1 線程基礎
- 實現多線程
- 啓動線程
- 中止線程
- 線程的6種狀態
- 各類各樣的鎖
- 悲觀鎖和樂觀鎖
- 共享鎖和獨佔鎖
- 公平鎖和非公平鎖
- 可重入鎖和非可重入鎖
- 可中斷鎖和非可中斷鎖
- 自旋鎖和非自旋鎖
- 偏斜鎖/輕量級鎖/重量級鎖
- JVM對synchronized鎖的優化
- wait/notify/sleep/join等重要方法
- 守護線程,優先級等屬性
- 線程安全
- Future獲取運行結果
- Fork/Join模式
- CountDownLatch
- CyclicBarrier
- Semaphore
- Condition
- Phaser
- 重排序
- 原子性
- 內存可見性
- CAS原理
- AQS框架
3.2 其餘
3.2.1 併發容器
- Vector/Hashtable
- ConcurrentHashMap
- CopyOnWriteArrayList
- 阻塞隊列
- 非阻塞隊列
- ConcurrentSkipListMap
3.2.2 atomic包,6種原子類
3.2.3 ThreadLocal
3.3.4 線程池
- 優勢
- 參數
- 分類
- 執行任務流程
- 拒絕策略
- 正確關閉線程池
- 線程池複用原理
4. JVM虛擬機
- 內存區域
- 內存模型
- 內存分配回收策略
- Java對象的建立、內存佈局和訪問定位
- GC: 引用計數及可達性分析,垃圾回收算法,G1及ZGC
- 類加載機制
- 雙親委派模型
- 編譯器優化: 方法內聯,逃逸分析
- 虛擬機相關: HotSpot及JIT,Dalvik,ART及AOT
- JVM執行方法
- JVM實現反射
- JVM實現泛型
- JVM實現異常
- JVM實現註解
5. 數據結構與算法
5.1 數據結構
- 棧
- 隊列
- 數組
- 鏈表
- Hash表
- 二叉樹
- 基礎排序算法
- 字符串操做
5.2 算法
5.3 刷題
6. Android基礎
6.1 核心知識點
6.1.1 四大組件
- Activity
- Service
- BroadcastReceiver
- ContentProvider
6.1.2 佈局和控件
- RelativeLayout
- FrameLayout
- LinearLayout
- ConstraintLayout
- Button
- TextView
- RecyclerView
- ......
6.1.3 自定義View/ViewGroup
- onMeasure
- onLayout
- onDraw
- onTouchEvent
- dispatchTouchEvent
- 自定義屬性
6.1.4 動畫和手勢
- View動畫
- 屬性動畫
- layoutAnimation視圖動畫
- 手勢檢測(GestureDetector)
- 縮放手勢檢測(ScaleGestureDecetor)
6.1.5 網絡
6.1.6 圖片加載
- 本地圖片
- 網絡圖片
- 壓縮圖片
- 多圖列表
- DiskLruCache
6.1.7 Handler
- Looper
- Message
- MessageQueue
- 內存泄漏
- ThreadLocal
6.1.8 Android各版本新特性
- Android5.0
- Android6.0
- Android7.0
- Android8.0(O)
- Android9.0(P)
- Android10.0(Q)
- Android11.0(R)
6.1.9 其餘
- adb經常使用命令
- 文件和數據庫
- 異步線程池
- Resources
6.2 開源庫使用
- Retrofit/OKhttp
- RxJava
- Glide
- 註解框架
- Jetpack
6.3 性能優化
6.3.1 快-流暢的體驗
6.3.2 穩-穩定
6.3.3 省-省電/流量
- 使用JobScheduler調度任務
- 使用懶惰法則
6.3.4 小-安裝包小
7. Android進階
7.1 核心知識點
7.1.1 多進程
7.1.2 Activity難點
- onSaveInstanceState()和onRestoreInstanceState()
- intent-filter匹配規則
- 生命週期
- 啓動模式
- Activity啓動過程
- App啓動過程
7.1.3 Service難點
- startService流程
- bindService流程
7.1.4 BroadcastReceiver難點
7.1.5 ContentProvider難點
7.1.6
- View繪製
- 事件分發
- 消息隊列
- AsyncTask原理
- RemoteViews
- Window和ViewRootImpl
7.2 開源庫原理
- OkHttp
- Retrofit
- RxJava
- Glide
- LeakCanary
- GreenDao
- ARouter
7.3 Gradle
- 編譯
- 混淆
- 簽名
- Groovy
- Gradle構建流程
- GradlePlugin
- Gradle構建優化
- App構建過程
- 差別化打包
7.4 初級架構
7.5 JNI
7.6 動態化
7.6.1 前置知識
- Android打包流程
- Java字節碼
- GradlePlugin
- TransformAPI
- ASM
7.6.2 熱修復:nuwa&Tinker
- 經典-64k問題
- dex分包
- MultiDex優化
- findClass原理
- QQ空間熱補丁方案
- Nuwa應用層實現
- NuwaGradle
7.6.3 插件化:VirtualAPK
7.7 編譯插樁
7.8 Framework
7.8.1 系統服務
- Zygote啓動
- Android系統啓動
- ServiceManager啓動及工做原理
7.8.2 應用進程
- 啓動流程
- 啓用Binder機制
- Application初始化流程
- Context
7.8.3 UI體系
- 顯示原理
- UI線程啓動
- 屏幕刷新機制
- surface
- vsync
7.8.4 進程通訊
- Binder
- IPC通訊流程
- Binder對象跨進程傳遞
- OneWay機制
7.8.5 線程通訊
- 消息隊列
- 消息傳遞機制
- Handler消息延遲實現
- IdleHandler原理
- 消息屏障
- ThreadLocal原理
7.8.6 其餘
8. 領域專家
8.1 性能優化方向
- 穩定性優化
- 啓動速度優化
- 繪製優化
- 內存優化
- 包體積優化
- 網絡優化
- IO優化
- 存儲優化
- 耗電優化
8.2 基礎架構方向
- Android工程實踐
- Gradle自動化構建
- 編譯插樁技術
- Android架構
- Android熱修復
- Android插件化
- Android核心源碼
8.3 NDK、音視頻
- C
- C++
- JNI基礎
- 編譯原理與語法基礎
- Linux基礎
- 熱修復
- Gif圖實現
- 音視頻基礎
- ffmpeg
- WebRTC
- opengl
- vulkan
- opencv
8.4 大前端
8.4.1 前端基礎
8.4.2 Flutter(⭐⭐)
- Dart入門
- Flutter入門
- 開發
- 工程管理
- 線上運維
- 發佈
- 測試調試
8.4.3 其餘
9. 其餘Android相關
9.1 Kotlin(⭐⭐)
9.1.1 基礎部分
9.1.2 高級部分
9.2 Python(⭐)
- 基礎
- 函數
- 高級特性
- 函數式編程
- 模塊
- 面向對象編程
- 錯誤,調試,測試
- IO編程
- 進程和線程經常使用內建模塊
- 經常使用第三方模塊
- 網絡編程
- 數據庫
- 異步IO
寫了個python腳本,將幕布思惟導圖轉成markdown並標上序號. 有興趣的能夠在這裏看源碼算法
參考資料
感謝以上幾位大佬數據庫