原创 Interview - network

# 傳統以太網幀 1500 + 14(頭) + 4 (CRC) = 1518 (bytes) # MSS和MTU MSS是TCP連接在SYN時進行協商的,代表的最大數據長度,1460的計算是指 1500減去20字節IP頭長度和

原创 深入理解Android系統網絡架構

引言:這篇文章以WiFi舉例,介紹了Android系統網絡架構。其內容包含:網絡鏈路的連接和註冊、網絡有效性檢測和網絡優選、Android系統網絡防火牆和幾種場景下的網絡策略等,文章的最後也列舉了幾種常見的無法上網原因供大家參考。

原创 TextView高度預測量方法

這篇文章介紹TextView在寬度確定時對於任意text內容情況下的高度測量方法 1. 應用場景 對於一個寬度確定的TextView,提前計算其在顯示不同text情況下的高度。 例子:TextView的動態展開和收回(抖音的話

原创 深入理解Android系統多用戶

一、引言 這篇文章以Android v28的源碼爲參考,介紹Android多用戶的特性、使用方式和系統原理。 二、初識Android多用戶 2.1 Android多用戶簡介 從Android 4.0開始,Google就開始在A

原创 Interview - Android

# Task, Application, Process https://blog.csdn.net/yyyysjhappy/article/details/20127615 Application:應用程序,是一組組件的集合,當

原创 Interview - JAVA & JVM

# 設計模式 https://www.cnblogs.com/malihe/p/6891920.html # Java 單例模式的懶漢和餓漢 單例模式中的懶漢和餓漢的區別在於類初始化時是否有初始化實例對象。 懶漢:在getIns

原创 Android系統網絡架構

這邊文章介紹了Android的系統網絡架構 一. 基本結構 1.1 類圖 1.2 WifiService WifiManager中公開API的具體實現,提供了WiFi打開與關閉、配置、掃描、連接、斷開等方法;其中也包含了對調用者

原创 vector push_back 超過 capacity 時產生的內存拷貝問題

根據 C++ Reference 的官方解釋:http://www.cplusplus.com/reference/vector/vector/ Just like arrays, vectors use contiguous st

原创 系統應用集成 LeakCanary

本文介紹如何在系統應用中集成LeakCanary。由於很多系統應用不使用gradle,且通過Android.mk來進行編譯,因此無法使用類似gradle的方式添加依賴來完成對LeakCanary的集成和使用。 1. 源碼下載 Le

原创 深入理解AsyncChannel、Messenger

這篇文章主要介紹Android AsyncChannel、Messenger原理及其應用實例 注:文章參考的是Andrdoid 8.0源碼 AsyncChannel 簡介      AsyncChannel的源碼位於 fra

原创 BPF高階 - 使用BPF過濾固定特徵報文

這篇文章主要介紹如何使用BPF過濾固定特徵報文 參考文章:https://www.freebsd.org/cgi/man.cgi?query=bpf&sektion=4&manpath=FreeBSD | 4.7-RELEASE

原创 Socket阻塞導致的system_server無法正常啓動分析

這篇文章主要記錄分析monkey出現的一個system server無法正常啓動問題 … 注:文章分析過程比較長,閱讀分析過程前,可以先參考文章末尾的問題主線圖 Socket原理   Pipe原理 分析工具 問題現

原创 Linux socket - 源碼分析(一)

這篇文章主要分析socket原理和創建流程 參考kernel msm-4.4源碼 進程和進程間通信   進程(Process)是計算機中的程序關於某數據集合上的一次運行活動,是系統進行資源分配和調度的基本單位,是操作系統結構的基

原创 Wi-Fi EAP網絡驗證過程與Android平臺拓展實例(二)

文章參考的是Android 7.1的源碼 本文主要研究EAP類型網絡的身份驗證過程,從而簡化Android平臺EAP類型網絡的身份驗證過程。 上篇文章Wi-Fi EAP網絡驗證過程與Android平臺拓展實例(一)已經分析出I

原创 Linux fork 孤兒進程並管理孤兒進程

這篇文章主要介紹如何fork孤兒進程,並且管理孤兒進程的生死 什麼是孤兒進程   父進程創建子進程後退出,子進程會被init進程託管,因此子進程的ppid會成爲init進程的pid,這樣創建的子進程就叫做孤兒進程。 創建孤兒進程實例