目錄
- Java相關
- 集合
- 多執行緒
- JVM
- 例外相關
- 注解
- 反射
- 資料
- 其他
- java中==和equals和hashCode的區別
- 設計模式
- Android相關
- Activity
- View
- Handler機制
- 跨行程通信
- Gradle
- Android APK打包流程
- JetPack
- JNI
- 網路
- TCP和UDP
- HTTPS
- 架構
- 性能優化
- 演算法
- 適配
- Android各個版本API的區別
- UI適配
- 其他
- js相關
- 別人的整理
Java相關
集合

Java集合簡介
Android中的集合資料結構
最通俗易懂搞定HashMap的底層原理
HashMap實作原理
LinkedHashMap就是HashMap+雙向鏈表:圖解LinkedHashMap原理
ConcurrentHashMap就是HashMap+分段鎖:ConcurrentHashMap詳解
多執行緒
執行緒池執行流程:


執行緒池7大引數:

執行緒池分類:
FixedThreadPool:只有核心執行緒并且梳理是固定的,沒有非核心執行緒;
CachedThreadPool:沒有核心執行緒、非核心執行緒是無界的;
SingleThreadExecutor:只有一個核心執行緒;
ScheduledThreadPool:一個能實作定時和周期性任務的執行緒池;
深入理解synchronized底層原理,一篇文章就夠了!
Java并發——Synchronized關鍵字和鎖升級,詳細分析偏向鎖和輕量級鎖的升級
volatile、記憶體屏障、指令重排序、記憶體一致性決議
比較synchronized和volatile,它們倆特性上最大的區別就在于原子性,volatile不具備原子性,
Java中如何優雅正確的終止執行緒
鎖的分類:

JVM
深入淺出Java虛擬機課程
Java虛擬機(一)結構原理與運行時資料區域
Java虛擬機(二)物件的創建與OOP-Klass模型
Java虛擬機(三)垃圾標記演算法與Java物件的生命周期
Java虛擬機(四)垃圾收集演算法
Java四種參考決議以及在Android的應用
參考計數 根搜索法

在Java中,可以作為GC Roots的物件主要有以下幾種:
①Java堆疊中的參考的物件,
②本地方法堆疊中JNI參考的物件,
③方法區中運行時常量池參考的物件,
④方法區中靜態屬性參考的物件,
⑤運行中的執行緒
⑥由引導類加載器加載的物件
⑦GC控制的物件
雙親委托模式
Android決議ClassLoader(一)Java中的ClassLoader
類加載器查找Class所采用的是雙親委托模式,所謂雙親委托模式就是首先判斷該Class是否已經加載,如果沒有則不是自身去查找而是委托給父加載器進行查找,這樣依次的進行遞回,直到委托到最頂層的Bootstrap ClassLoader,如果Bootstrap ClassLoader找到了該Class,就會直接回傳,如果沒找到,則繼續依次向下查找,如果還沒找到則最后會交由自身去查找,
例外相關
StackOverFlowError 常見原因及解決方法
Java語言按照錯誤嚴重性,從throwale根類衍生出Error和Exception兩大派系
Error(錯誤)
程式在執行程序中所遇到的硬體或作業系統的錯誤,錯誤對程式而言是致命的,將導致程式無法運行,常見的錯誤有記憶體溢位,jvm虛擬機自身的非正常運行,calss檔案沒有主方法,程式本生是不能處理錯誤的,只能依靠外界干預,Error是系統內部的錯誤,由jvm拋出,交給系統來處理,
Exception(例外)
是程式正常運行中,可以預料的意外情況,比如資料庫連接中斷,空指標,陣列下標越界,例外出現可以導致程式非正常終止,也可以預先檢測,被捕獲處理掉,使程式繼續運行,

注解
Java注解總結(史上最全,有這一篇就夠了)
反射
Java反射總結(史上最全,有這一篇就夠了)
資料
Java資料總結(最值、存盤、轉換、大數處理)
其他
java中==和equals和hashCode的區別
基本資料型別的 == 比較的值相等;
類的 == 比較的記憶體的地址,即是否是同一個物件,在不覆寫equals的情況下,同比較記憶體地址,原實作也為 == ,如String等重寫了equals方法;
hashCode也是Object類的一個方法,回傳一個離散的int型整數,在集合類操作中使用,為了提高查詢速度,(HashMap,HashSet等比較是否為同一個)
如果兩個物件equals,Java運行時環境會認為他們的hashcode一定相等;
如果兩個物件不equals,他們的hashcode有可能相等;
如果兩個物件hashcode相等,他們不一定equals;
如果兩個物件hashcode不相等,他們一定不equals;
設計模式
設計模式(一)設計六大原則
GoF提出的設計模式總共有23種,根據目的準則分類分為三大類:
創建型模式,共五種:單例模式、工廠方法模式、抽象工廠模式、建造者模式、原型模式,
結構型模式,共七種:配接器模式、裝飾模式、代理模式、外觀模式、橋接模式、組合模式、享元模式,
行為型模式,共十一種:策略模式、模板方法模式、觀察者模式、迭代器模式、責任鏈模式、命令模式、備忘錄模式、狀態模式、訪問者模式、中介者模式、解釋器模式,
另外隨著設計模式的發展也涌現出很多新的設計模式:它們分別是規格模式、物件池模式、雇工模式、黑板模式和空物件模式等,
創建型設計模式:
設計模式(二)單例模式的七種寫法
設計模式(三)建造者模式
設計模式(四)簡單工廠模式
設計模式(十)工廠方法模式
設計模式(十三)抽象工廠模式
設計模式(十六)原型模式
結構型模式:
設計模式(六)代理模式
設計模式(七)裝飾模式
設計模式(八)外觀模式
設計模式(十二)享元模式
行為型模式:
設計模式(五)觀察者模式
設計模式(九)模版方法模式
設計模式(十一)策略模式
設計模式(十四)中介者模式
設計模式(十五)狀態模式
Android相關
Activity
深入理解Activity的生命周期
Activity的4種啟動模式
《Android中高級工程師面試指南 — 基礎知識 — Activity》
Activity 啟動流程分析(Android10)
startActivity啟動程序分析
注:Android啟動流程
1、bootloader啟動內核和init行程;
2、init行程產生守護行程— daemons;
3、init行程啟動Zygote行程;
4、Zygote行程初始化第一個VM, 預加載framework和通用資源;
5、init行程啟動runtime行程;
6、Zygote行程范訓出System Server;
startService與bindService 的區別
View
Android View體系(一)視圖坐標系
Android View體系(二)實作View滑動的六種方法
Android View體系(三)屬性影片
Android View體系(四)從原始碼決議Scroller
Android View體系(五)從原始碼決議View的事件分發機制
Android View體系(六)從原始碼決議Activity的構成
Android View體系(七)從原始碼決議View的measure流程
Android View體系(八)從原始碼決議View的layout和draw流程
Android View體系(九)自定義View
Android View體系(十)自定義組合控制元件
Android View體系(十一)自定義ViewGroup
Android View的繪制流程
android事件攔截處理機制詳解
Android事件分發之ACTION_CANCEL機制及作用
如果一個組件沒有接收到DOWN事件,那么一定接收不到MOVE,UP事件;
即時是MOVE和UP事件,在傳遞給子View之前也是可以通過ViewGroup的onInterceptTouchEvent方法攔截的,如果攔截了,那么該事件就會變成Cancel事件傳遞給子view;
Android影片總結
Android中Drawable整體介紹
Android VSYNC (Choreographer)與UI重繪原理分析
requestLayout、invalidate與postInvalidate區別
如果View確定自身不再適合當前區域,比如說它的LayoutParams發生了改變,需要父布局對其進行重新測量、布局、繪制這三個流程,往往使用requestLayout,而invalidate則是重繪當前View,使當前View進行重繪,不會進行測量、布局流程,因此如果View只需要重繪而不需要測量,布局的時候,使用invalidate方法往往比requestLayout方法更高效
Handler機制
Android Handler總結1-定義與用法
Android Handler總結2-子執行緒中的Handler和HandlerThread的使用
Android Handler總結3-原始碼分析

在訊息佇列獲取下一個訊息的時候,可能會發生阻塞,主要由兩種情況導致:a、訊息佇列已經沒有訊息了,這個時候nextPollTimeoutMillis置為-1,當前執行緒進入無限睡眠等待,直到其他執行緒有訊息放入,并把它喚醒, b、訊息佇列頭的訊息執行時間大于當前時間,那么該執行緒需要睡眠等待后再執行該訊息,進入阻塞前,就會把mBlocked標志位置為true,
而在MessageQueue入隊的時候,當發現佇列是空的,或者發現入隊的訊息的執行時間比當前處理的訊息執行時間小的時候,就會去判斷是否是阻塞的標志位mBlocked是否為true,如果是true表示當前執行緒處于阻塞狀態,就會去把當前執行緒喚醒,
并發編程 | ThreadLocal 原始碼深入分析
從Handler.postDelayed來看看Android怎么實作處理延時訊息
handler同步屏障
跨行程通信
Android IPC機制(一)開啟多行程
Android IPC機制(二)用Messenger進行行程間通信
Android IPC機制(三)在Android Studio中使用AIDL實作跨行程方法呼叫
Android IPC機制(四)用ContentProvider進行行程間通信
Android IPC機制(五)用Socket實作跨行程聊天程式
Binder原理
Gradle
Android Gradle
Gradle核心思想
Android APK打包流程
Android APK打包流程
JetPack
JNI
Android JNI(一)——NDK與JNI基礎
網路
android網路編程-劉望舒
TCP和UDP
TCP協議是一種面向連接的、可靠的、基于位元組流的傳輸層通信協議,它使用三次握手協議建立連接,并且提供了超時重傳機制,具有很高的穩定性,UDP協議則是是一種無連接的協議,且不對傳送資料包進行可靠性保證,適合于一次傳輸少量資料,UDP傳輸的可靠性由應用層負責,在網路質量令人十分不滿意的環境下,UDP協議資料包丟失會比較嚴重,但是由于UDP的特性:它不屬于連接型協議,因而具有資源消耗小,處理速度快的優點,所以通常音頻、視頻和普通資料在傳送時使用UDP較多,
HTTPS
HTTPS加密機制決議與總結
Android中的HTTPS問題
HTTP2.0和HTTP1.0的區別:HTTP1.0、HTTP1.1 和 HTTP2.0 的區別
①降低延遲,針對HTTP高延遲的問題,SPDY優雅的采取了多路復用(multiplexing),多路復用通過多個請求stream共享一個tcp連接的方式,解決了HOL blocking的問題,降低了延遲同時提高了帶寬的利用率,
②請求優先級(request prioritization),多路復用帶來一個新的問題是,在連接共享的基礎之上有可能會導致關鍵請求被阻塞,SPDY允許給每個request設定優先級,這樣重要的請求就會優先得到回應,比如瀏覽器加載首頁,首頁的html內容應該優先展示,之后才是各種靜態資源檔案,腳本檔案等加載,這樣可以保證用戶能第一時間看到網頁內容,
③header壓縮,前面提到HTTP1.x的header很多時候都是重復多余的,選擇合適的壓縮演算法可以減小包的大小和數量,
④基于HTTPS的加密協議傳輸,大大提高了傳輸資料的可靠性,
⑤服務端推送(server push),采用了SPDY的網頁,例如我的網頁有一個sytle.css的請求,在客戶端收到sytle.css資料的同時,服務端會將sytle.js的檔案推送給客戶端,當客戶端再次嘗試獲取sytle.js時就可以直接從快取中獲取到,不用再發請求了,
架構
美團:如何構建Android MVVM 應用框架
性能優化

Android-記憶體泄露的場景
演算法
使用Master公式求解遞回演算法的時間復雜度
適配
Android各個版本API的區別
主要記住一些大版本變化:
android3.0 代號Honeycomb, 引入Fragments, ActionBar,屬性影片,硬體加速
android4.0 代號Ice Cream,API14:截圖功能,人臉識別,虛擬按鍵,3D優化驅動
android5.0 代號Lollipop API21:調整桌面圖示及部件透明度等
android6.0 代號M Marshmallow API23,軟體權限管理,安卓支付,指紋支持,App關聯,
android7.0 代號N Preview API24,多視窗支持(不影響Activity生命周期),增加了JIT編譯器,引入了新的應用簽名方案APK Signature Scheme v2(縮短應用安裝時間和更多未授權APK檔案更改保護),嚴格了權限訪問
android8.0 代號O API26,取消靜態廣播注冊,限制后臺行程呼叫手機資源,桌面圖示自適應
android9.0 代號P API27,加強電池管理,系統界面添加了Home虛擬鍵,提供人工智能API,支持免打擾模式
UI適配
Android 螢屏適配:最全面的解決方案
其他
js相關
JavaScript教程
JavaScript語言總結
HTML5的十大新特性
面試題之ES6的新特性(詳細)
Vue開發檔案
別人的整理
Android 復習資料匯總版
Deep into Android
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/265952.html
標籤:其他
上一篇:Android Studio錯誤代碼解決:The emuilator process for AVD Nexus_ 5X_ API_ 30_ x86 was killed.
下一篇:Typora軟體圖片丟失問題
