1. 程式人生 > >你看不懂的spring原理是因為不知道這幾個概念

你看不懂的spring原理是因為不知道這幾個概念

背景

問題從一杯咖啡開始。

今天我去樓下咖啡機買了一杯「粉黛拿鐵」。製作過程中顯示:

我取了做好的粉黛拿鐵,喝了一口,果然就是一杯熱巧克力。咦咦咦,說好的拿鐵呢?雖然我對「零點吧」的咖啡評價很高,覺得味道不亞於星爸爸。但是不可否認它確實給了我一杯假的拿鐵。

現在很多技術專家好比品鑑咖啡的專家。他們並不需要知道咖啡豆和可可豆的區別,更不知道這兩種植物長在樹上是什麼樣子。沒關係,這並不影響他們區別一杯咖啡是拿鐵、摩卡還是卡布奇諾。就好像工作中遇到團隊配合的情況,他們並不需要知道別人團隊的產品是怎麼實現的,只需要在他們出問題的時候讓他們幫忙解決。所以,現在很多工作招高級別的人都要求良好的溝通和推動能力。技術能力反而考察的沒有那麼細緻。

但是作為技術人員,瞭解底層是很重要的。因為我們不是買咖啡的,而是生產咖啡機的。有一天,咖啡機不工作了,經過分析監控報警和日誌大資料,終於找到原因:一粒咖啡豆太小卡到了凹槽裡。清理了這粒咖啡豆,咖啡機又正常工作了。這就結束了嗎?

 

不,我們要覆盤,用5Why分析法找到問題的根因。

Q:為什麼咖啡機會不工作?

A:因為一粒咖啡豆卡在裡凹槽裡。

Q:為什麼會卡在凹槽裡?

A:因為這粒咖啡豆太小了,就掉下去了。

Q:為什麼太小了就會掉下去?

A:因為咖啡豆基本都是圓形,咖啡豆之間有很大的空隙,彼此沒有壓力。只是受到重力影響,就掉下去了。

Q:為什麼咖啡豆都是圓形,不能生產出方形,彼此緊密契合的咖啡豆嗎?

 

這時候就是後悔不知道咖啡豆到底長在哪種樹上的時間了。不瞭解所以沒有辦法做出合理的改變。

現在我們都喜歡用SpringBoot。平時工作的好好的,突然公司要求做一個基礎元件的升級,咦咦咦,本地執行的好好的。釋出到伺服器上跑不起來。當初搭建開發基礎框架的小哥早已離職,是看著那堆日誌發愣呢?還是瞭解一下里面的基礎概念順藤摸瓜呢?廢話到此為止。

 

概念

SpringBoot是什麼?

SpringBoot是一個框架和程式設計規範。它化簡了很多個框架和元件的使用,一站式簡單的完成檔案配置和應用部署。因為它內建伺服器並裝備啟動類程式碼,可以快速開啟一個Web容器。

Web容器是什麼?

Web容器是一種可以處理從客戶端發出請求的應用程式。在伺服器中一個埠就對應一個提供相應服務的程式。在Java方面,web任憑器一般是指Servlet容器。

Servlet是什麼?

Servlet只是一個介面。它聲明瞭Servlet的生命週期的三個基本方法:init()、service()和destroy()。Web容器會在特定時間呼叫這些方法。Servlet是提供了一個標準,是J2EE的13個標準介面規範之一。

J2EE是什麼?

J2EE(Java 2 Platfrom, Enterprise Edition)最初是一個為大企業主機級的計算類似而設計的Java平臺。這個標準給提供可重用模組元件元件提供了土壤。就是定義一系列的介面,你們要實現什麼功能都要在這些介面基礎上。根據場景Java2平臺主要包括標準版(J2SE)、企業版(J2EE)和微縮版(J2ME)三個版本。

Java2平臺是什麼?

Sun公司在1998年發表JDK1.2版本的時候,使用了新名字Java 2 Platform。修改後的JDK成為Java 2 Platfrom Software Developing Kit 即J2SDK。

Web容器和Netty的關係

Web容器(如tomcat、jetty)主要處理從客戶端傳過來的訊息,將訊息分給worker執行緒來處理。worker執行緒做的事情就是通過Servlet來做的。而接受訊息執行緒和worker執行緒之間的協調溝通工作目前主流是Netty來做的。

一張圖大體表示一下他們的關係:

 

總結

如果做一件事情很麻煩,那一定有一個好方法。

 

相關閱讀

四象限分析法分析你是否適合做管理

復聯4裡用到的方法論

年紀大了,是否該往管理方向轉型?

架構視角 - DDD、TDD、MDD領域驅動、測試驅動還是模型驅