原创 深入瞭解LOD

在從類關係說起一文中,我們談到了幾種類與類之間的關係,在此來深入一下對象與對象之間的通信問題.爲什麼要深入對象與對象之間的通信呢,其根本在於,系統中不會存在唯一的對象,不同的對象勢必要相互進行交流. 初學者的問題 在開始介紹迪米

原创 OpenJDK系列(四):從JVM談C/C++編譯流程

編譯器的這點事 gcc和g++還傻傻分不清楚?clang與gcc有什麼關係?llvm又是什麼?下面將對一些常見的名詞進行說明以免在後續閱讀中感到疑惑. gcc和g++ gcc 即 GNU C Compiler, 剛開始它就是一個c編譯

原创 OpenJDK系列(三):VM對CAS的設計與實現

CAS簡介 CAS即Compare-and-Swap的縮寫,即比較並交換,它是一種實現樂觀鎖的技術.在CAS中包含三個操作數: V: 需要讀寫的內存位置,從java角度你可以把它當成一個變量 A: 預期值,也就是要進行比較的值 B:

原创 OpenJDK系列(二):從ClassFileParser談Endian

對TensorFlow的研究暫時告一段落.就目前看來,AI的應用場景還有待發掘,後續如果有時間將寫點關於TF結合樹莓派的一些玩法. Endian Endian即所謂的字節序,通俗點說就是多於一個類型的數據在內存中存取的順序目前有兩種字節序

原创 Android應用優化指南

對我們技術從業者而言,很多時候時候不是我們不知道怎麼做,而是不知道做什麼?今天系統的總結自己關於如何對Android應用進行優化的一些經驗,共計八個維度. 1.佈局優化 爲什麼? Android系統每個16ms發出VSYNC信號,觸發

原创 Android 7.0系統啓動流程分析

隨着Android版本的升級,aosp項目中的代碼也有了些變化,本文基於Android 7.0分析Android系統啓動流程.當我們按下電源鍵後,整個Android設備大體經過了一下過程: 今天我們只想來分析init進程及其後的過程,

原创 Android 7.0應用冷啓動流程分析

最近在爲自己Moto G定製Rom,順便重新讀了一遍Android 7.0的相關源碼,特此記錄當做筆記. 在開始正文之前,首先要明白冷啓動和熱啓動.所謂冷啓動就是啓動該應用時,後臺沒有該應用的進程,此時系統會創建一個進程分配給它(AMS通

原创 基礎篇:帶你從頭到尾玩轉註解

前面寫了Android 開發:由模塊化到組件化(一),很多小夥伴來問怎麼沒有Demo啊?之所以沒有立刻放demo的原因在還有許多技術點沒說完. 今天我們就來細細評味Java當中Annotation,也就是我們常說的註解. 本文按照以下順序

原创 Android 開發:由模塊化到組件化(一)

在Android SDK一文中,我們談到模塊化和組件化,現在我們來聊聊組件化開發背後的哪些事.最早是在廣告SDK中應用組件化,但是同樣適用於普通應用開發 以下高能,請做好心理準備,看不懂請發私信來交流.本文不推薦新手閱讀,如果你剛接觸An

原创 談亂序執行和內存屏障

10多年前的程序員對處理器亂序執行和內存屏障應該是很熟悉的,但隨着計算機技術突飛猛進的發展,我們離底層原理越來越遠,這並不是一件壞事,但在有些情況下了解一些底層原理有助於我們更好的工作,比如現代高級語言多提供了多線程併發技術,如果不深入下

原创 打造RxJava生命週期管理框架RxLife

在前邊RxJava實戰技巧大全一文中,我們介紹了RxJava使用過程中常見的應用場景和可能遇到的問題,其中我們談到利用RxLifeCycle來管理RxJava的生命週期,避免內存泄漏問題,今天自己動手打生命週期管理框RxLife來加深對R

原创 漫談Android 增量更新

在前幾年,整體移動網絡環境相比現在差很多,加之流量費用又相對較高,因此每當我們發佈新版本的時候,一些用戶升級並不是很積極,這就造成了新版本的升級率並不高。而google爲了解決了這個問題,提出了Smart App Update,即增量更新

原创 拓展篇:註解處理器最佳實踐

在基礎篇中,我們介紹了什麼是註解以及如何開發註解處理器,今天就來說說在開發編譯時註解處理器中的那些最佳實踐。 什麼是Android-apt 我們知道APT是集成在javac當中的工具,這個Android-apt又是什麼鬼呢? 對於從事An

原创 TensorFlow學習筆記(一)

最近致力於深度學習,希望在移動領域能夠找出更多的應用點.其中TensorFlow作爲目前的一個熱點值得我們重點關注. 機器學習 機器學習是人工智能的一個分支,也是用來實現人工只能的一種方法。簡單來說,機器學習就是通過算法,使得機器能從大量

原创 不一樣的視角:從JVM內存模型談線程安全

作爲一個三個多月沒有去工作的獨立開發者而言,今天去小米麪試了一把.怎麼說呢,無論你水平如何,請確保在面試之前要做準備,就像其中一位面試官說的一樣,我知道你水平不錯,但是無論如何也是要準備下的,不然你怎麼會連這個方法也忘記了? 此刻,我突然