天天看點

「架構師進階之路」從哪裡來,才能知道未來到哪裡去

作者:願天堂沒有代碼

回顧

我們總是在為了生活奔波,漸漸的迷失在了其中,但我們必須清楚的知道自己從哪裡來,才能知道未來要到哪裡去

入行之後遇到的一些事情

畢業出社會,開始 Android 開發之旅

畢業之後,進入了一家小公司;在這家公司工作的幾年,技術棧一直沒怎麼變過,就是傳說中的 SSH,也不是說 SSH 不好,Spring 不是也火到現在麼,問題是:“大部分工作都在做增删查改,而且是并發量、資料量都非常低的增删查改”

更可怕的是,在這種環境中工作久了,可能會讓你有一種自己很厲害的錯覺,因為資料量很少,幾百萬幾千萬的資料量,加個索引就查詢的很快了,隻要自己知道如何避免索引失效,就已經打敗了 90% 的隊友,因為你的眼界已經變窄了

我自認為還算是個努力的人,一直是機關中技術能力的“佼佼者”,但是我心裡知道,我這點兒能力拉到外面去根本是個渣渣

“心存敬畏,放寬眼界”,我一直這麼告訴自己

跳出目前的圈子,尋求更好的發展

當年我在這個小公司已經爬到了一個技術工程師的位置,但我并不為此感到自豪,我想要去往大城市發展,隻有這樣才能學到更為前沿的技術,于是我準備跳槽,但當我準備跳槽的時候我意識到自己的一個很大的問題:時常感覺自己沒有準備好,面試的時候會不會被鄙視,我還是刷一個月的題再去吧;一個月之後,感覺不懂的東西更多了,然後繼續準備

因為這樣,我也錯過了很多的機會,有朋友内推我去面試,我後來都已各種理由推掉了;後來我發現,很多朋友也有這樣的問題,老是怕面試過不了,是以幹脆沒有去面試

是以必須要在“平時做好準備,機會是不會等到你做好準備了才來,看到機會就上!就算沒做好準備,也硬着頭皮上去試試”

後來我終于下決心必須跳槽了,最後面試了幾家公司,通過率還算不錯;有時候被面試官秒殺,有時候秒殺面試官

進入騰訊;開始架構師進階之路

經過自己的努力,終于面試通過,拿到了 offer ;在進入騰訊之後,我被配置設定到底層開發的業務中,也是由此打開了自己的眼界

騰訊有着多款億級使用者的産品,複雜的業務常常會遇到各種意想不到的問題,這些問題需要深入底層,對安卓系統的整個架構都比較熟悉,才能夠解決

「架構師進階之路」從哪裡來,才能知道未來到哪裡去

上面這張圖想必大家都看過,是 Google 官方提供過一張經典的架構圖,其中每一層都包含大量的子子產品或子系統

之前我始終停留在一二層,不得寸進;但在進入騰訊這一時期,對此終于有了縱深的實踐經驗

比如幫業務方解決一個記憶體問題,除了要了解記憶體名額監控方式,還要知道分析不同類型記憶體使用的工具及基本原理,最後知道是哪裡出了問題後,還要想如何進行體系化的工具,降低學習成本,提升排查效率

問題驅動是非常好的學習方式;每次幫助業務解決一個新問題,我的知識庫都會多一個點,這讓我非常興奮;之前不知道學來幹什麼的 Linux 程式設計、Android 虛拟機,終于在實際問題中明白了使用場景,學起來效率也高了很多

對 Android 開發未來發展方向的展望

Android 發展至今,已成為全球使用者量最廣泛的移動作業系統,手機行業競争異常激烈,經過幾番洗牌,國内手機廠商主要是華為、小米、 OPPO、VIVO 四大公司,并且随着移動網際網路增長見頂,國内 Android 開發的需求也越來越少;那麼Android 的未來在哪裡呢?

「架構師進階之路」從哪裡來,才能知道未來到哪裡去

目前,Android 在應用層次的發展已經見頂,未來的發展主要集中在人工智能和 5G 結合的産業,智能汽車、智能家居、 IOT都将是 Android 發展的廣闊市場;但就目前人工智能的奇點還沒到來,技術還處于前期階段,一旦奇點來臨将會爆炸式發展,或将重新定義生活方式

汽車的智能化和網際網路化是未來一大趨勢, Google 這兩年确實在汽車領域發力,Android Auto 在過去一年的使用者增長250%。天生的移動特性加上越來越多的網際網路服務需求,汽車需要一個具備多種感覺能力的系統,或将成為是繼手機、電視後 Android 的下一重點開拓領域

那麼我們應該如何跟上這一未來趨勢呢?

「架構師進階之路」從哪裡來,才能知道未來到哪裡去

首先我們可以通過上面 滴滴出行 的 招聘資訊 中了解到車載開發所必須要學會的就是 Framework 源碼 的學習;而 Framework 源碼 中又包含了 Handler 、Binder 、AMS、WMS 等 重點學習對象

那麼我們就必須要有一個好的學習方向,這樣才能在其中不走彎路,進而精通 Framework ,以此來抓住這一新時代的機遇;是以在這裡,我分享一份由騰訊大佬所整理的一份Framework 學習筆記;有需要學習筆記的朋友:可以私信發送 “筆記” 即可 直達擷取;希望大家看完之後能給大家一些幫助

内容展示如下:

《Framework 學習筆記》

《Android 車載工程師必修知識》

  • 開發汽車媒體應用
  • 建構車載媒體應用
  • 配置應用的清單檔案
  • 建立媒體浏覽器服務
  • 啟動播放控制
  • 支援語音操作
  • 實作注意力分散預防措施
「架構師進階之路」從哪裡來,才能知道未來到哪裡去
  • 建構 Android Auto 即時通信應用
  • 導入 Android X 核心庫
  • 聲明 Android Auto 支援
  • 建構車載導航和地圖注點應用
  • 測試 Android 車載應用
  • 分發 Android 車載應用
「架構師進階之路」從哪裡來,才能知道未來到哪裡去

完整版PDF文檔擷取方式:私信發送 “筆記” 即可免費擷取

《應用程式與 AMS 的通訊實作》

  • 從應用程式程序到管理者程序
  • 應用程式程序向管理者程序發送消息
  • 從管理者程序到應用程式程序
  • 管理者程序向應用程式程序發送消息
  • 使用者程序接收消息
「架構師進階之路」從哪裡來,才能知道未來到哪裡去

《應用程序與 WMS 的通訊實作》

  • WindowManagerImpl & WindowManagerGlobal
  • ViewRootImpl
  • 從應用程序到管理者程序
  • 從管理者程序到應用程序
「架構師進階之路」從哪裡來,才能知道未來到哪裡去

《應用程序之間的通訊實作》

  • 服務端編寫 AIDL 檔案、編寫 Service、聲明 Service
  • 用戶端編寫 AIDL 檔案、綁定服務,并調用
  • IBinder實作原理
「架構師進階之路」從哪裡來,才能知道未來到哪裡去

完整版PDF文檔擷取方式:私信發送 “筆記” 即可免費擷取

《Handler機制之Thread線程》

  • 線程概念
  • Android線程的實作
  • 線程的阻塞
  • 關于線程上下文切換
  • 關于線程的安全問題
  • 守護線程
  • 線程的記憶體
「架構師進階之路」從哪裡來,才能知道未來到哪裡去

《Binder機制之Linux基礎》

  • Linux介紹
  • 開源發展實驗室和Linux基金
  • 核心态與使用者态
  • 為什麼要有使用者态和核心态
  • 紅黑樹 資料結構設計
  • Linux的跨程序通信(IPC)概述
  • Linux的跨程序通信詳解
  • Linux的幾種跨程序通信的方式的比較
「架構師進階之路」從哪裡來,才能知道未來到哪裡去
完整版PDF文檔擷取方式: 私信發送 “筆記” 即可 直達擷取

既然選擇了程式員這個行業,那麼你一定要做好充足的準備;要想在人前顯貴,背後所付出的辛勞和汗水就是必須的

Android 架構師之路還能漫長,與君共勉