你看不懂的spring原理是因为不知道这几个概念
背景
問題從一杯咖啡開始。
今天我去樓下咖啡機(jī)買了一杯「粉黛拿鐵」。制作過程中顯示:
我取了做好的粉黛拿鐵,喝了一口,果然就是一杯熱巧克力。咦咦咦,說好的拿鐵呢?雖然我對(duì)「零點(diǎn)吧」的咖啡評(píng)價(jià)很高,覺得味道不亞于星爸爸。但是不可否認(rèn)它確實(shí)給了我一杯假的拿鐵。
現(xiàn)在很多技術(shù)專家好比品鑒咖啡的專家。他們并不需要知道咖啡豆和可可豆的區(qū)別,更不知道這兩種植物長在樹上是什么樣子。沒關(guān)系,這并不影響他們區(qū)別一杯咖啡是拿鐵、摩卡還是卡布奇諾。就好像工作中遇到團(tuán)隊(duì)配合的情況,他們并不需要知道別人團(tuán)隊(duì)的產(chǎn)品是怎么實(shí)現(xiàn)的,只需要在他們出問題的時(shí)候讓他們幫忙解決。所以,現(xiàn)在很多工作招高級(jí)別的人都要求良好的溝通和推動(dòng)能力。技術(shù)能力反而考察的沒有那么細(xì)致。
但是作為技術(shù)人員,了解底層是很重要的。因?yàn)槲覀儾皇琴I咖啡的,而是生產(chǎn)咖啡機(jī)的。有一天,咖啡機(jī)不工作了,經(jīng)過分析監(jiān)控報(bào)警和日志大數(shù)據(jù),終于找到原因:一粒咖啡豆太小卡到了凹槽里。清理了這粒咖啡豆,咖啡機(jī)又正常工作了。這就結(jié)束了嗎?
?
不,我們要復(fù)盤,用5Why分析法找到問題的根因。
Q:為什么咖啡機(jī)會(huì)不工作?
A:因?yàn)橐涣?Х榷箍ㄔ诶锇疾劾铩?/p>
Q:為什么會(huì)卡在凹槽里?
A:因?yàn)檫@粒咖啡豆太小了,就掉下去了。
Q:為什么太小了就會(huì)掉下去?
A:因?yàn)榭Х榷够径际菆A形,咖啡豆之間有很大的空隙,彼此沒有壓力。只是受到重力影響,就掉下去了。
Q:為什么咖啡豆都是圓形,不能生產(chǎn)出方形,彼此緊密契合的咖啡豆嗎?
?
這時(shí)候就是后悔不知道咖啡豆到底長在哪種樹上的時(shí)間了。不了解所以沒有辦法做出合理的改變。
現(xiàn)在我們都喜歡用SpringBoot。平時(shí)工作的好好的,突然公司要求做一個(gè)基礎(chǔ)組件的升級(jí),咦咦咦,本地運(yùn)行的好好的。發(fā)布到服務(wù)器上跑不起來。當(dāng)初搭建開發(fā)基礎(chǔ)框架的小哥早已離職,是看著那堆日志發(fā)愣呢?還是了解一下里面的基礎(chǔ)概念順藤摸瓜呢?廢話到此為止。
?
概念
SpringBoot是什么?
SpringBoot是一個(gè)框架和編程規(guī)范。它化簡了很多個(gè)框架和組件的使用,一站式簡單的完成文件配置和應(yīng)用部署。因?yàn)樗鼉?nèi)置服務(wù)器并裝備啟動(dòng)類代碼,可以快速開啟一個(gè)Web容器。
Web容器是什么?
Web容器是一種可以處理從客戶端發(fā)出請求的應(yīng)用程序。在服務(wù)器中一個(gè)端口就對(duì)應(yīng)一個(gè)提供相應(yīng)服務(wù)的程序。在Java方面,web任憑器一般是指Servlet容器。
Servlet是什么?
Servlet只是一個(gè)接口。它聲明了Servlet的生命周期的三個(gè)基本方法:init()、service()和destroy()。Web容器會(huì)在特定時(shí)間調(diào)用這些方法。Servlet是提供了一個(gè)標(biāo)準(zhǔn),是J2EE的13個(gè)標(biāo)準(zhǔn)接口規(guī)范之一。
J2EE是什么?
J2EE(Java 2 Platfrom, Enterprise Edition)最初是一個(gè)為大企業(yè)主機(jī)級(jí)的計(jì)算類似而設(shè)計(jì)的Java平臺(tái)。這個(gè)標(biāo)準(zhǔn)給提供可重用模塊組件組件提供了土壤。就是定義一系列的接口,你們要實(shí)現(xiàn)什么功能都要在這些接口基礎(chǔ)上。根據(jù)場景Java2平臺(tái)主要包括標(biāo)準(zhǔn)版(J2SE)、企業(yè)版(J2EE)和微縮版(J2ME)三個(gè)版本。
Java2平臺(tái)是什么?
Sun公司在1998年發(fā)表JDK1.2版本的時(shí)候,使用了新名字Java 2 Platform。修改后的JDK成為Java 2 Platfrom Software Developing Kit 即J2SDK。
Web容器和Netty的關(guān)系
Web容器(如tomcat、jetty)主要處理從客戶端傳過來的消息,將消息分給worker線程來處理。worker線程做的事情就是通過Servlet來做的。而接受消息線程和worker線程之間的協(xié)調(diào)溝通工作目前主流是Netty來做的。
一張圖大體表示一下他們的關(guān)系:
?
總結(jié)
如果做一件事情很麻煩,那一定有一個(gè)好方法。
?
相關(guān)閱讀
四象限分析法分析你是否適合做管理
復(fù)聯(lián)4里用到的方法論
年紀(jì)大了,是否該往管理方向轉(zhuǎn)型?
架構(gòu)視角 - DDD、TDD、MDD領(lǐng)域驅(qū)動(dòng)、測試驅(qū)動(dòng)還是模型驅(qū)動(dòng)?
轉(zhuǎn)載于:https://www.cnblogs.com/xiexj/p/11057008.html
總結(jié)
以上是生活随笔為你收集整理的你看不懂的spring原理是因为不知道这几个概念的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 昆山住房公积金个人怎么提取 昆山公积金如
- 下一篇: 消息称《刺客信条:RED》日本背景游戏有