搞定 Web 容器,就能在 Java 領域風生水起?

如果你是一個熱衷於技術的 Java 程式設計師,今天為你分享一位大佬的學習經歷,可以讓你在眾多 Java 開發人員中脫穎而出。
這位大佬,我介紹一下:
李號雙,eBay 技術主管,2009 年畢業後加入惠普,先後負責分散式企業級應用的開發與架構設計,以及容器化上雲。
2018 年加入 eBay,參與 eBay 付款系統 2.0 的設計與研發,負責可靠性和高可用部分,系統採用定製版的 Tomcat 執行大規模微服務例項,並且通讀過 Tomcat 原始碼,具有豐富的線上問題定位和調優經驗。
以下是他的分享:
很多「過來人」都會告誡新人,程式設計沒有捷徑可走,不花費幾年時間經過大量的實踐和刻意練習怎麼能領悟程式設計的精髓呢?
我曾經也是一名“刻苦”的新人,直到後面才體會到,其實在 Java 的學習上,同樣也逃不開”二八原則“,即 掌握 20% 的知識,就能解決 80% 的問題 。
這一點也是我工作很久之後才悟出來的,這種思維方式讓我在之後的 Java 學習路上受益很大。
我先來講講自己的經歷。
十年前,我在實習做嵌入式系統開發,開發語言是 C 和 C++。出於我個人興趣愛好,當時我想轉 Java,學了一段時間後,發 現 Java 上手還挺快,API 比較齊全,也不需要自己來管理記憶體,感覺比 C 語言高階。
畢業後我順利地找到了一個 Java 開發的工作,入職後我的工作主要是實現一些小模組,很多時候通過程式碼的複製貼上,再稍微改改就能完成功能,這樣的狀態大概持續了一年。
我認為: 工作前三年對於咱們技術人成長非常關鍵,CRUD 不應該是常態 。
在這個過程中,我對 Java 語法更加熟悉了,也“背”過一些設計模式,用過一些 Web 框架,但是 很少有機會將一些 Java 的高階特性運用到實際專案中 ,因此 對它們的理解也是模糊的 。
那時候如果讓我獨立設計一個系統,我會感到非常茫然,不知道從哪裡下手;對於 Web 框架,我也只是知道這樣用是可以的,但卻不知道它背後的原理是什麼。
而且,在我腦子裡沒有一張 Java Web 開發的全景圖,舉個例子,我不知道瀏覽器的請求是怎麼跟 Spring 中的程式碼聯絡起來的。
我認為: 80% 新人都會有的困境,可惜只有 20% 找到了方法,大部分人在工作早期沒有高手帶路,走了很多彎路 。
後來我分析發現,我的知識體系在廣度和深度上都有問題。然而 Java 知識體系很龐大,我到底該專注於哪一方面?
接著,我注意到了像 Tomcat 和 Jetty 這樣的 Web 容器,覺得它們很神奇,只需要把 Web 應用打成 WAR 包放到它的目錄下,啟動起來就能通過瀏覽器來訪問了。
那 Web 容器究竟是如何工作的?帶著這份好奇心, 我決定選擇 Tomcat 來深入研究 。
學習了 Tomcat 的原理之後,我發現 Servlet 技術是Web開發的原點,幾乎所有的Java Web框架(比如Spring)都是基於Servlet的封裝,從Servlet規範的角度來看,Spring應用其實就是一個Servlet,而Tomcat和Jetty這樣的Web容器,負責載入和執行Servlet。
你可以通過下面這張圖來理解 Tomcat/Jetty 在 Web 開發中的位置:
隨著學習的深入,我還發現 Tomcat 和 Jetty 中用到不少 Java 高階技術 ,比如 Java 多執行緒併發程式設計、Socket 網路程式設計以及反射等等。
之前我僅僅只是瞭解這些技術,為了面試也背過一些題,但是總感覺“知道”和“會用”之間存在一道鴻溝。
通過 對 Tomcat 和 Jetty 原始碼的學習 ,我學會了 在什麼樣的場景下去用這些技術,這一點至關重要 。
在理解了 Web 容器以及 JVM 的工作原理後,我開始解決線上的疑難雜症,並且嘗試對線上的 Tomcat 進行調優。 效能的提升也是實實在在的成果,我也因此得到了同事們的認可 。
總之,在這個過程中,我逐漸建立起了自己的知識體系,也開始獨立設計一個系統,獨立解決技術難題,也就是說我漸漸具備了 獨當一面的能力 ,而這正是高階程式設計師或者架構師的特質。
概括一下,獨當一面的能力,離不開 技術的廣度和深度 。
後來我才發現,這種能力其實 是我在深入學習 Tomcat 的過程中才逐漸擁有 的,這就是迴歸到我開頭說的觀點: 掌握 20% 的知識,就能解決 80% 的問題 。
人的精力是有限的,廣度和深度該如何權衡呢?我建議找準一個點先突破深度,而 Tomcat 和 Jetty 就是非常好的選擇。
以上就是李號雙的 Java 學習之路,希望對大家有所啟發。
李號雙最近跟極客時間合作推出了 《深入拆解 Tomcat & Jetty》 這門課程,把他當年學習 Java 的這種思維方式沉澱成一套 可複製的實戰方法 。市面上 Tomcat 的靠譜資料太少了,終於等來極客時間上了這門課。
我認為:Tomcat 的確是非常經典的開源系統,並且運用了方方面面的 Java 技術,如果能從中領略到這些大牛設計者是如何思考問題的,站在巨人的肩膀上,你能走的更快更好。
對於我的讀者,現在訂閱有什麼福利?
1. 限時優惠 ¥68(原價 ¥99 ),兩杯咖啡的價格。
2. 另外,從我這裡訂閱,微信紅包返現 ¥24 ,相當於 ¥44 到手。
購買後在微信後臺回覆“承香墨影”,加微信好友返現。
掃碼或者點選閱讀原文,進入 Tomcat 的世界。