av手机免费在线观看,国产女人在线视频,国产xxxx免费,捆绑调教一二三区,97影院最新理论片,色之久久综合,国产精品日韩欧美一区二区三区

java語(yǔ)言

Java Web架構(gòu)知識(shí)

時(shí)間:2025-03-07 15:09:02 java語(yǔ)言 我要投稿
  • 相關(guān)推薦

Java Web架構(gòu)知識(shí)匯總

  “你學(xué)習(xí)一門(mén)技術(shù)的最佳時(shí)機(jī)是三年前,其次是現(xiàn)在。”這話從來(lái)很靈驗(yàn)。經(jīng)過(guò)這次面試,覺(jué)得需要整理下Java Web相關(guān)的資料,以便自己提高或者更快適應(yīng)可能面臨的新的工作。以下僅供參考!

Java Web架構(gòu)知識(shí)匯總

  1.底層

  Java語(yǔ)言相關(guān)的就不說(shuō)了,首先是JVM的結(jié)構(gòu)和工作原理。比較重要的是Java內(nèi)存模型,各種GC算法,Classloader的加載原理等。個(gè)人對(duì)底層的一些東西還算比較了解,所以不過(guò)多糾結(jié),實(shí)際上程序編譯鏈接過(guò)程以及二進(jìn)制文件的處理還是很值得研究的。

  JVM監(jiān)控及調(diào)優(yōu)。作為一個(gè)開(kāi)發(fā)人員并不一定需要非常熟悉JVM調(diào)優(yōu)的方法,但如果具備JVM監(jiān)控及調(diào)優(yōu)的能力,將讓你對(duì)程序運(yùn)行狀況了如指掌,對(duì)于問(wèn)題定位也會(huì)敏感得多。

  Java多線程。對(duì)于線程安全的理解,以及如何在自己的程序中避免多線程造成的不一致問(wèn)題等。

  I/O。Java中常常提到的是BIO/NIO,即阻塞型I/O與非阻塞型I/O,其實(shí)并不難理解,結(jié)合Linux中的同步I/O和異步I/O的實(shí)現(xiàn)原理,基本都是相通的,每種I/O方式解決的問(wèn)題,又存在什么問(wèn)題,為什么使用epoll。

  2.Servlet

  Servlet是運(yùn)行于服務(wù)端的java程序,一般實(shí)現(xiàn)自己的Java服務(wù)端應(yīng)用都從HttpServlet類繼承,然后實(shí)現(xiàn)自己的init | doGet | doPost | service方法。Servlet的生命周期從其加載開(kāi)始,首先執(zhí)行一次初始化,調(diào)用init方法,之后便可運(yùn)行自身的服務(wù),當(dāng)生命周期結(jié)束時(shí),調(diào)用destroy方法回收資源,結(jié)束服務(wù)。

  僅了解原理當(dāng)然是不夠的,還要實(shí)戰(zhàn)能力,在IDE中寫(xiě)寫(xiě)簡(jiǎn)單的代碼誰(shuí)都會(huì),然而真正讓一個(gè)程序能夠運(yùn)行起來(lái)也還需要點(diǎn)其他的東西,這里我指的是Servlet的容器。servlet的容器有很多,常用的以Tomcat為例,安裝好Tomcat后,在開(kāi)發(fā)時(shí)必須包含進(jìn)Tomcat的lib。IDE確實(shí)慣壞了好多人,目錄如何組織,程序如何編譯、如何部署這些問(wèn)題都被IDE屏蔽掉了,如果要對(duì)整體有比較透徹的了解,建議一切從命令行動(dòng)手。

  3.框架

  Java Web開(kāi)發(fā)的用到的框架之多簡(jiǎn)直令人發(fā)指,而且因?yàn)榘姹镜母聯(lián)Q代導(dǎo)致的問(wèn)題也是層出不窮。然而這也是Web技術(shù)不斷演化的結(jié)果,要么選擇接受,要么引領(lǐng)節(jié)奏。

  Spring

  Spring是一個(gè)強(qiáng)大而又“輕量級(jí)”的Java開(kāi)發(fā)框架,之所以打引號(hào)是因?yàn)楦杏X(jué)并不是那么輕量。Spring的主要目的在于簡(jiǎn)化Java應(yīng)用開(kāi)發(fā),以配置方式代替硬編碼方式的編程,模塊解耦,其架構(gòu)如下圖所示。包括了數(shù)據(jù)訪問(wèn)、遠(yuǎn)程通信、AOP、核心容器等部分。

  Spring的核心主要有三點(diǎn):

  IoC:反轉(zhuǎn)控制。

  反轉(zhuǎn)控制就是指將控制權(quán)由類內(nèi)部抽離到容器,由容器類的實(shí)例化及動(dòng)作進(jìn)行配置管理。

  Dependency-injection:依賴注入

  對(duì)象的依賴關(guān)系由負(fù)責(zé)協(xié)調(diào)系統(tǒng)中各個(gè)對(duì)象的第三方組件在創(chuàng)建對(duì)象時(shí)設(shè)定。對(duì)象不自行創(chuàng)建或管理它們的依賴關(guān)系,依賴關(guān)系被自動(dòng)注入到需要它們的對(duì)象中。通過(guò)參數(shù)和配置能夠體會(huì)出“注入”這個(gè)詞在這里有多形象。依賴注入的最大好處就是松耦合。不需要再類內(nèi)部去和特定的類進(jìn)行綁定,而是將一些依賴關(guān)系以參數(shù)的形式注入到類內(nèi)部。

  Aspect Oriented Programming:面向切向編程

  在軟件開(kāi)發(fā)中,分布于應(yīng)用中多處的功能被稱為橫切關(guān)注點(diǎn)。這些橫切關(guān)注點(diǎn)往往和業(yè)務(wù)邏輯是相分離的,將這些橫切關(guān)注點(diǎn)與業(yè)務(wù)邏輯相分離正式AOP要解決的。AOP編程能夠讓遍布在應(yīng)用各處的功能分離出來(lái)形成可重用的組件。是高內(nèi)聚低耦合的又一個(gè)體現(xiàn),將通用實(shí)現(xiàn)模塊與核心業(yè)務(wù)模塊相分離。

  Hibernate

  數(shù)據(jù)持久化框架其實(shí)也有很多,需要掌握的不僅是Hibernate,只是因?yàn)镠ibernate在以前的企業(yè)級(jí)應(yīng)用中用的比較多而已,另外MyBatis也占有相當(dāng)重要的份額。Hibernate是一個(gè)全自動(dòng)的持久化框架,并不是那么方便,所以很多開(kāi)發(fā)者更傾向于使用MyBatis,淘寶就是這樣。

  Hibernate的工作流程:首先通過(guò)configuration對(duì)象讀取配置文件;解析映射信息,創(chuàng)建StandardSessionFactory;調(diào)用openSession打開(kāi)session;創(chuàng)建事務(wù)transaction,之后進(jìn)行持久化操作;完成后提交事務(wù),關(guān)閉session,關(guān)閉sessionFactory。

  Figuer 2 Hibernate工作流程

  要理解ORM的理念:ORM意為對(duì)象關(guān)系映射。是一種為了解決程序的面向?qū)ο竽P团c數(shù)據(jù)庫(kù)關(guān)系模型互不匹配問(wèn)題的技術(shù)。

  hibernate中比較重要的是對(duì)象的4種狀態(tài)轉(zhuǎn)換及條件。分別是transient瞬時(shí)態(tài)、persistent持久態(tài)、detached游離態(tài)和移除態(tài),狀態(tài)轉(zhuǎn)換如下:

  Struts 2

  Struts出現(xiàn)的最早,也是思想提供者之一,從名字就可以看得出其重要性,其設(shè)計(jì)目的是為了簡(jiǎn)化Java開(kāi)發(fā),統(tǒng)一事務(wù)切面化。

  Struts最關(guān)鍵的地方在于Action的執(zhí)行,攔截的原理、valuestack及OGNL。

  具體參考:《Struts in Action》

  4.HTTP

  這個(gè)不用多談,太重要了,作為Web開(kāi)發(fā)者,如果不特別熟悉Http將會(huì)是一件很麻煩的事。

  Http的報(bào)頭格式

  Http協(xié)議的各種返回碼是什么意思

  https如何實(shí)現(xiàn)

  B/S架構(gòu)的工作原理

  Cookie和Session的原理

  restful API

  5.設(shè)計(jì)模式

  這里就不列舉23種模式了,個(gè)人覺(jué)得純粹看書(shū)學(xué)習(xí)《設(shè)計(jì)模式》并沒(méi)有什么用,要在實(shí)際應(yīng)用中碰到,并且多問(wèn)幾個(gè)為什么,而且自己寫(xiě)代碼時(shí)能有使用設(shè)計(jì)模式的意識(shí)才能對(duì)各種設(shè)計(jì)模式有更深的領(lǐng)悟。

  當(dāng)然Web開(kāi)發(fā)遠(yuǎn)不止這么些東西,我這里暫時(shí)也只好先列些重要的。應(yīng)用開(kāi)發(fā)后,還有部署的問(wèn)題,因此又會(huì)涉及CDN和負(fù)載均衡等問(wèn)題就更復(fù)雜了......

  另外在Web開(kāi)發(fā)的過(guò)程中,要養(yǎng)成良好的開(kāi)發(fā)習(xí)慣,比如開(kāi)發(fā)之前能夠熟練地使用UML類圖,交互圖等,這將避免你犯很多錯(cuò)誤。感謝面試官輕虐,自己覺(jué)得還有許多不扎實(shí)的地方,還需要繼續(xù)努力才能對(duì)得起這次機(jī)會(huì)。

【Java Web架構(gòu)知識(shí)】相關(guān)文章:

java web基礎(chǔ)知識(shí)06-19

Java與Java web的區(qū)別01-30

Java與Java web有什么不同04-16

經(jīng)典Java、Web筆試題04-27

Java獲得web的根路徑方法08-11

java實(shí)現(xiàn)web服務(wù)器的方法05-20

Java相關(guān)知識(shí)07-22

Java平臺(tái)語(yǔ)言的架構(gòu)與測(cè)試問(wèn)題08-15

Web端cookie知識(shí)介紹03-18