本文首發於微信公衆號——世界上有意思的事,搬運轉載請註明出處,不然將追究版權責任。微信號:a1018998632,交流qq羣:859640274前端
最近發了一個專題 從零開始仿寫一個抖音App 承蒙你們的關注閱讀量也挺多了。因此在羣裏的同志們「鼓動」我寫一篇成長和技術路線的文章,以饗讀者。注意本文只是給在技術路上迷茫的人一個指引,大牛的話其實徹底沒必要看:)java
1、我爲啥能寫這篇文章
看到這篇文章的人第一個反應確定就是:這人是誰,爲啥能給我指引,他很牛逼嗎?因此我先列舉一下個人現狀,這樣能夠給比我能力弱一點的人一些指引。固然比我牛的大佬我也但願能在評論區給我一些指引。python
- 1.目前本科畢業已經有4個月了吧,我本科是浙江杭州的一個普通一本(雙非)。去年春招的時候在中國有贊實習過半年java 開發,錯過秋招以後今年春招投了幾個大廠,也收穫了幾個大廠 offer,最終選擇的目前公司的薪資福利還算不錯,看了今年19屆的各類 offer show 感受仍是比通常大廠的白菜高一些的。
- 2.從開始寫文章到如今已經有兩年多的時間了,目前的成績也還算不錯。寫了三十幾篇文章總計11萬字,各個平臺上的粉絲數接近3k,點贊數接近4k,閱讀量有十五萬左右。
- 3.github 上有三十多個 repository,總計 start 也有1k 了。上過幾回 github 的 developers 和 repo 的熱門。
- 4.最近簡書也有找我商量出版書籍的事情,不知道最終能不能成吧。但這也是對個人能力的一種確定。
上面就是我目前的狀態了,若是你們以爲能力比我弱那麼一丟丟的話,那麼仍是能夠繼續把文章看下去的,應該會對你有所幫助。linux
2、基本面
咱們在新聞中經常能看見基本面這個詞,在我看來基本面對於一我的的成長來講就是他的性格與習慣。一個好的基本面能讓一我的有持續成長的動力。這一章我就來簡單說說這方面的東西吧。android
- 1.你們能夠先想一想本身堅持過最長的事情是什麼,堅持這件事情是各類文章中老生常談的東西。我這裏就給它補充個人兩個例子好了:1.我堅持看**科幻世界(當初三體三部曲就是在這本雜誌上連載的)**這本雜誌有9年了。2.我堅持夜跑有三、4年的時間,畢業後荒廢了半年,最近又從新開始跑了。補充這兩個例子實際上是爲了說明:堅持作某件事情其實在潛移默化中會讓你的性格和精神發生某種變化,這個變化能對其餘各類事情產生正向的影響。好比我去年的時候花費了一個多月的時間整個翻譯了 Fresco 的源碼,這就是之前的堅持給當時的我帶來的影響。又好比我一直寫博客也是之前的堅持帶來的影響。固然你被堅持影響的事情後來也會成爲堅持的一部分而後對後面的更多事情產生影響,這是一個正向的循環。這就是我要說的第一個基本面:堅持。
- 2.你們再想一想本身上一次擡頭看星星是多久之前?咱們都知道有一句話叫:仰望星空,腳踏實地。前面的堅持就是腳踏實地的部分,而我這裏要說的仰望星空部分就是說要有好奇心(求知慾、探索精神等等)。或許是由於年輕,或許是由於科幻小說看多了,個人腦子裏總會冒出各類奇奇怪怪的想法。在技術方面的表現就是經常去了解各類各樣的技術,但願搞懂它們的內在原理。大學四年我由於好奇心接觸的東西有不少:android、java後臺、cv圖像處理、深度學習、前端、vr遊戲等等。我固然也不是隻停留在表面玩玩 Hello world,你們能夠看看個人歷史文章,其中好幾個技術我都寫成過博客。這裏我想要表達的就是作技術就要保持對技術的好奇,這樣才能持續的進步。這就是我要說的第二個基本面:好奇心。
3、技術路線
扯了上面扯了這麼多,接下來我開始說一下我以後的技術路線和計劃吧。下面是我整理的思惟導圖,我接下來會結合這個圖來說解我本身制定的成長計劃。c++
- 1.首先說說我技術上的目標吧,個人目標分爲近、中、遠三個層次:
- 1.近:指的是一年之內。個人目標是幹好本身的本行工做 android,同時吃透公司中 android 相關的各類技術,而後有目標的學習公司中有關音視頻的技術(目前有權限接觸)。
- 2.中:指的是兩三年內。個人目標是慢慢開始接觸公司中的音視頻開發,同時吃透公司中音視頻相關的技術,而後有目標的學習公司中的關於圖像視頻方面的各類算法(目前沒有權限接觸)。
- 3.遠:三年以後,估計我會跳槽或者與靠譜的人一塊兒創業啥的,此時個人目標是成長爲T型人才,能擔任起技術負責人的角色,再也不侷限於某種技術。
- 2.再說說我我的的定位吧,首先咱們經常會聽見你們會將算法與工程區分開來,我自認爲在這兩個之中在我在工程這邊的優點更大一些,雖然我對算法也挺感興趣可是畢竟比不上各類paper拿到手軟的碩士博士。這個時候個人定位就是瞭解算法的工程型程序員,這樣能讓我在兩邊都各有優點。
- 3.最後就是技術路線了,前面說了個人技術目標,這樣一來個人技術路線就比較好理解了。
- 1.思惟導圖中的路線分三個等級:紅色(須要瞭解源碼原理,或者精讀書籍)、藍色(須要會使用)、灰色(只需瞭解)
- 2.首先是 android 方面,這也是我最近在作的事情:
- 1.架構分 mvc、mvp、mvvm:mvc 已經腐朽、mvp 是目前各大廠商使用的主流框架,不過大多公司不會遵循 mvp 的原始設計而是進行合適的魔改、mvvm 中的 databinding 2015年就出來了可是如今仍是上不了檯面,剩下的幾個是這兩年 google 推薦的架構框架,標紅的是能夠被整合到 mvp 中去的,因此值得學習。
- 2.數據庫分爲兩大類:sqlite 與 realm(一個性能比較好的移動端數據庫)。由於 realm 是 c++ 實現的因此並不須要去特別的瞭解其原理只需會用便可。sqlite 中又有許許多多的 orm 這裏面以 greenDao 和 room 性能最佳。room 彷佛用的人很少,因此去了解 greenDao 的原理便可。
- 3.網絡這邊:目前 retrofit + okhttp 是絕對的王者因此必須瞭解其中原理。socket 是網絡庫的基石會用便可,固然這裏面涉及到的計算機網絡知識仍是須要了解原理的。volley 這東西很是老的項目中應該還會使用,在我這邊不做要求。
- 4.代碼生成:這東西用好了能夠作大量有意思的東西,android端的 aop 就能夠用這些技術來實現,不過也不須要了解其原理,會用就行。
- 5.動態框架中 flutter 目前看來有稱王的趨勢,因此不只要會用,還須要瞭解其原理。而其餘兩個東西估計是打不過 flutter 了,不學也罷。
- 6.圖片處理框架中:Fresco 以性能強、功能多、定製性強著稱。glide、Picasso等等以輕量,侵入性弱著稱。像短視頻這種場景,在圖片處理方面的需求不少,天然是使用 Fresco 並且需瞭解其原理。
- 7.序列化與反序列化中:json 是老牌霸主。但 protobuf 的性能極強,又有 google 背書。因此兩個都不能拉下。
- 8.剩下的日誌、kotlin、插件化、推送、im 等等就不一一列舉的,這些都是須要了解其內在原理,這樣才能在本身寫輪子或者基於開源組件定製輪子的時候不出紕漏。
- 2.接下來是音視頻方面:這些裏面的東西大多也是我須要學習的,因此能夠與讀者一同成長
- 1.音視頻的基本原理與概念是必須知道的東西,這裏隨意列了兩個東西,更具體的也許要等我學習以後再進行補充了。
- 2.c++ 是進入音視頻領域的敲門磚,不瞭解你連代碼都看不懂,因此這裏列了三本書能夠按順序觀看
- 3.雷宵驊的博客,雷宵驊是個大牛級別的人物,惋惜英年早逝。他的博客必定要去看。
- 4.FFmpeg 也是一個難啃可是必須啃的骨頭,這裏列了兩本書和一個類庫,紅色優先級。
- 5.protobuf前面說了就再也不贅述。OpenGL 與 OpenSL 這兩個技術只需會用便可。
- 6.最後就是 gpuImage 和 grafika 了。這兩一個是基於 OpenGL 的封裝庫,一個是 google 開源的 android 端圖形圖像處理項目,都必須去看源碼瞭解原理。
- 3.而後是後端技術:這裏的話沒有興趣的同窗其實能夠不去了解,這裏只是個人我的喜愛。由於我也實習過半年的 java 後臺,因此後端我也比較熟悉,能夠閒着沒事玩玩,拓展拓展。
- 1.rpc 是微服務架構的前提,各類大廠都出過本身的 rpc 架構。我在這篇文章中分析過這些東西,有興趣能夠去看看。我這裏列的紅色優先級都是與 python 相關,緣由是 python 在深度學習中很是有用,並且在寫後臺方面也能快速迭代。
- 2.數據庫和消息隊列是兩個在後端很是經常使用的技術,這裏我只將他們列到了會用的範圍,由於並無太多的時間去了解他們的技術原理。
- 3.服務治理這方面瞭解便可
- 4.接下來到了算法方面:其實音視頻的深了以後天然而然的會須要用到各類算法,包括視頻特效,視頻渲染,人臉識別,美顏瘦臉等等等等。
- 1.圖像處理,這一塊我在畢業設計的時候作過,仍是挺有意思的。Opencv就能解決大多數這方面的需求了,若是能再看一看《數字圖像處理》這本書,你將會別的更加完美:)。
- 2.深度學習。這一塊我也在畢設中用到過,其實這裏對數學知識要求有點高,真的有興趣的同窗能夠按順序把前面三本書看完,而後學學 python 和 c++ (這也是我前面學這兩個語言的緣由之一)。最後看一下 cs231n 的視頻進行實戰。若是此時還知足不了你的話,就能夠去看前沿論文了。我本身的目標也是隻要能復現論文就行。
- 3.推薦算法的話瞭解就行。
- 5.最後一個東西是 linux/unix:這裏面的東西我以爲仍是挺重要的,雖然你不須要去了解原理,可是若是你不會用 shell 和 vim 的話。前面我列舉的不少東西你將學的舉步維艱。因此花幾個週末去學學吧,比起編碼仍是簡單的,學不會的緣由可能只是由於你不肯跳出溫馨區。
4、尾巴
上面這些就是我今天要聊的東西了,但願能對你們有所幫助。另外但願你們能持續關注個人從零開始仿寫一個抖音App這一系列文章,由於這個項目就是我學習各類知識以後的練手之地,關注了以後你們就能與我一塊兒成長了:)。git
不販賣焦慮,也不標題黨。分享一些這個世界上有意思的事情。題材包括且不限於:科幻、科學、科技、互聯網、程序員、計算機編程。下面是個人微信公衆號:世界上有意思的事,乾貨多多等你來看。 程序員