拿下Netty這座城,從如今開始!

你好,我是彤哥,技術公號主「彤哥讀源碼」的運營者。面試

其實,我剛學習Netty的時候,也是很迷茫的,直到有一天,一個同事收到了阿里的offer,他要去阿里作中臺了,臨走前他偷偷地告訴我,多看看Netty,特別是源碼。數據庫

以後,我把市面上有關Netty的書籍和博客幾乎所有看了一遍,並跟着書中的示例邊看邊練,可是,最後,我發現,在Netty的知識方面,我只是從一個學徒變成了一個熟練工,對Netty的理解仍是談不上有多深入,由於不少書籍或者博客對Netty的講解都停留在使用的角度,對於核心知識和底層原理,講解得不多,或者說是很不全面。編程

因此,我決定本身動手,把Netty的源碼擼一遍,沒多久,我就發現,我不只在Netty方面的知識飛速增加,對於Java底層的不少原理也理解得更透徹了,得益於此,我後面進入了國內某互聯網遊戲公司擔任平臺架構的設計與實現。安全

這是我本身學習Netty的經歷,如今,你能夠想一想你的狀況。網絡

是否是一直想學習Java網絡編程,殊不知道怎麼入門?多線程

是否是看完《Netty實戰》,仍是隻會寫入門級的示例?架構

是否是學習其餘開源框架,一深刻到通訊層就無所適從?框架

是否是面試過程當中,說起Netty,只能簡單地說說請求的執行流程?對於更底層的線程池、對象池、內存池卻一問三不知?學習

若是你是這種狀況,其實你並不孤獨,這不是你一我的遇到的問題,在工做中,我喜歡與人交流,發現不少同窗,無論新人,仍是老人,對Netty的掌握都停留在表面。大數據

仍是上面那位牛人,他去阿里後,遇到的第一個挑戰是他的領導讓他一個星期內學習完Dubbo,並作成PPT分享給全組人員,對於歷來沒學習過Dubbo的他,你可能會說,這太難了,幾乎不可能完成。然而,他學習Dubbo只花了五天時間,剩餘兩天作成PPT,彙報時,領導給了個完美。

我以爲這其中他對Netty的深刻理解佔了很大的比例。後面,他跟我說,其實,Java領域學來學去就那麼些東西,最重要的仍是掌握底層核心知識,這些核心知識掌握了,學習其餘東西真的能事半功倍,這也是他能快速學習並得到成功的祕訣。

那麼,做爲Java開發者,應該掌握哪些底層核心知識呢?

無外乎就是反射、代理、多線程這些東西,固然,還有NIO,那麼,如何快速地學習並掌握這些知識呢?

我認爲經過源碼是一種不錯的途徑,不論是Java自己的源碼,仍是開源框架的源碼。

而Netty做爲Java網絡編程領域的事實標準,無疑是最合適的。

file

經過上圖,能夠看到,在Java中,不少你們熟悉的框架都在使用Netty,並且,這些框架遍及Java的各個領域,包括但不只限於大數據、RPC、消息隊列、搜索引擎、數據庫等。

因此,我想作一個關於Netty的課程,但願經過這個課程可以讓你真正掌握到Netty的底層核心知識。

那麼,我將怎麼設計這個課程呢?

我根據本身學習和使用Netty的經驗,將整個課程分紅六個模塊來說解:

file

基礎知識,介紹Netty的發展歷史,並學習Java網絡編程的基礎知識,打好基礎,方能事半功倍;

源碼剖析——數據流向,從數據流向的角度剖析源碼,包含服務啓動、接收數據、關閉鏈接等,快速掌握Netty應用運行的基本流程,這一部分源碼可使用泛讀的技巧,快速閱讀,瞭解大體流程;

源碼剖析——核心知識,從核心知識的角度剖析源碼,包含內存池、對象池、線程池等,深刻底層,掌握核心要點,這一部分源碼須要精讀,對每個知識點死磕到底;

項目實戰,從軟件開發生命週期的角度,介紹如何使用Netty開發一個生產級的遊戲項目;

實戰進階,對實戰項目進行不斷調優,使其更穩定、更快速、更安全、更可靠,並介紹如何快速排查生產問題;

課程總結,對整個課程作一個總結和回顧。

file

點擊連接可查看課程詳情www.imooc.com/read/82

我很感激當年偷偷告訴我要看Netty的那位同事,那無疑是我人生中很是重要的轉折點。

沒有那位同事的悄悄話,可能就沒有今天的我,但願這個專欄也能成爲你的人生的一個轉折點。

最後,我但願經過這個專欄,不只可以幫你學習到Netty的底層核心知識,更能加深對Java底層核心知識的理解,幫你拿下Netty這座城,渡過職場和人生的重要時刻,come on!

關注公衆號「彤哥讀源碼」,解鎖更多源碼、基礎、架構知識!

相關文章
相關標籤/搜索