做為技術人,大家最擔心的一點,就是自己學習的節奏跟不上新技術發展的步伐,內心很是焦慮。很多小夥伴都會感慨,平時工作這麼忙,成家了為人父母了,回家也沒法像單身那樣有時間學習了,另外一方面,發現各種新技術滿天飛,目不暇接。那麼問題來了,我們技術人,應該如何學習一門新技術框架呢?今天我就按照我過去學習Netty的思路來和大家做一個分享,希望對大家有所幫助。
1. 先搞明白這個框架具體是什麼
例如, Netty 是什麼?
我們即刻Google 一下,得到以下答案:
Netty 是一個基於 JAVA NIO 類庫的非同步通訊框架。找出關鍵詞“ NIO” 和 “非同步”,這就是Netty最重要的特性,另外它處於網路層。提煉出的這些關鍵詞的作用就是用來確定自己是否已清楚所有基礎知識點。框架處於哪一層決定了
下一步瞭解該框架的應用場景。
如果發現自己還不懂什麼是IO與NIO, 那麼就直接看下圖
2. 明確該框架能做什麼
知道這些框架都是提供了什麼樣的底層服務,我們可以利用這個框架做什麼事情。
對於Netty,可以開發非同步、非阻塞的 TCP/ UDP 網路應用程式;開發非同步 HTTP 服務端和客戶端應用程式;Netty提供了對多種編解碼框架的整合、Java 序列化、壓縮編解碼、XML 解碼、字串編解碼等。看到這裡,我們可以初步感覺到,Netty可以幫我們拆分應用進行服務化,作為基礎通訊元件被我們的 RPC 框架使用,以提高開發和維護效率。
3. 瞭解該框架的應用場景
在應用層面上知道如何使用,通過前人的經驗,明確這個框架是如何融入進去的,避免走彎路。
比方說,對於Netty, 明顯的一個應用場景就是dubbo,服務提供者和服務消費者之間,服務提供者、服務消費者和效能統計節點之間就是使用 Netty 進行非同步/同步通訊。
4. 清楚框架被髮明的原因
準確的說,框架不是一門新的技術,而是幫我們將底層的操作和通用的操作流程通過類庫的方式封裝起來,提供相應的API和方法,幫助我們解決快速的解決應用層面上問題。所以我們在學習一門新框架的時候,必須要明白這些被封裝起來的東西是什麼。
比方說,我們都知道JDK提供了NIO的類庫,那為什麼我們還要用Netty呢?
回答這個問題前,我們需要看一看 JDK NIO 客戶端的通訊時序圖
看過這張圖,大家能立刻明白,如果自己寫,要實現一套NIO程式要寫多少程式碼了吧。這就無形增加了使用NIO的成本,加上除錯,抓包查問題等環節, 要從頭搞一套非同步的NIO程式並不省心。
反過來,Netty的基礎開發和應用非常簡單,開發一個 Echo 服務端只需要 20,30行程式碼,開發對應的 Echo 客戶端只需要 20-30程式碼。
5. 實戰使用該框架,並反覆總結
光了解上面這4點是遠遠不夠的,學技術不能紙上談兵,在實戰中使用後,對框架會有更多準確的把握,根據自己掌握的情況,查漏補缺,然後像做迭代專案一樣,不斷的深入下去,最終就能站得更高的位置來審視框架的全域性。
總結
關於學習框架的方法論,可以總結到我下面這張圖:
網際網路時代,需要我們快速開發,跟上業務的發展節奏和需求,那最好的捷徑就是站在別人的肩膀上,用前人智慧的結晶來幫助我們自己,善於學習新的類庫和框架,搞清楚框架中一些設計的原理和細節,搞清來龍去脈,學會“術”進而應用到日常的工作中去。另外一方面,我們應用團隊也要不斷反饋和“激勵”我們的中介軟體和框架開發同學,共同推進技術體系的發展和建設。
掃描二維碼或手動搜尋微信公眾號: ForestNotes
歡迎轉載,帶上以下二維碼即可