java語言

當前位置 /首頁/計算機/java語言/列表

Java Web架構知識彙總

“你學習一門技術的最佳時機是三年前,其次是現在。”這話從來很靈驗。經過這次面試,覺得需要整理下Java Web相關的資料,以便自己提高或者更快適應可能面臨的新的工作。以下僅供參考!

Java Web架構知識彙總

1.底層

Java語言相關的就不說了,首先是JVM的結構和工作原理。比較重要的是Java記憶體模型,各種GC演算法,Classloader的載入原理等。個人對底層的一些東西還算比較瞭解,所以不過多糾結,實際上程式編譯連結過程以及二進位制檔案的處理還是很值得研究的。

JVM監控及調優。作為一個開發人員並不一定需要非常熟悉JVM調優的方法,但如果具備JVM監控及調優的能力,將讓你對程式執行狀況瞭如指掌,對於問題定位也會敏感得多。

Java多執行緒。對於執行緒安全的理解,以及如何在自己的程式中避免多執行緒造成的不一致問題等。

I/O。Java中常常提到的是BIO/NIO,即阻塞型I/O與非阻塞型I/O,其實並不難理解,結合Linux中的同步I/O和非同步I/O的實現原理,基本都是相通的,每種I/O方式解決的問題,又存在什麼問題,為什麼使用epoll。

let

Servlet是運行於服務端的java程式,一般實現自己的Java服務端應用都從HttpServlet類繼承,然後實現自己的init | doGet | doPost | service方法。Servlet的生命週期從其載入開始,首先執行一次初始化,呼叫init方法,之後便可執行自身的服務,當生命週期結束時,呼叫destroy方法回收資源,結束服務。

僅瞭解原理當然是不夠的,還要實戰能力,在IDE中寫寫簡單的程式碼誰都會,然而真正讓一個程式能夠執行起來也還需要點其他的東西,這裡我指的是Servlet的容器。servlet的容器有很多,常用的以Tomcat為例,安裝好Tomcat後,在開發時必須包含進Tomcat的lib。IDE確實慣壞了好多人,目錄如何組織,程式如何編譯、如何部署這些問題都被IDE遮蔽掉了,如果要對整體有比較透徹的瞭解,建議一切從命令列動手。

3.框架

Java Web開發的用到的框架之多簡直令人髮指,而且因為版本的更新換代導致的問題也是層出不窮。然而這也是Web技術不斷演化的結果,要麼選擇接受,要麼引領節奏。

Spring

Spring是一個強大而又“輕量級”的Java開發框架,之所以打引號是因為感覺並不是那麼輕量。Spring的主要目的在於簡化Java應用開發,以配置方式代替硬編碼方式的程式設計,模組解耦,其架構如下圖所示。包括了資料訪問、遠端通訊、AOP、核心容器等部分。

Spring的核心主要有三點:

IoC:反轉控制。

反轉控制就是指將控制權由類內部抽離到容器,由容器類的例項化及動作進行配置管理。

Dependency-injection:依賴注入

物件的依賴關係由負責協調系統中各個物件的第三方元件在建立物件時設定。物件不自行建立或管理它們的依賴關係,依賴關係被自動注入到需要它們的物件中。通過引數和配置能夠體會出“注入”這個詞在這裡有多形象。依賴注入的最大好處就是鬆耦合。不需要再類內部去和特定的類進行繫結,而是將一些依賴關係以引數的形式注入到類內部。

Aspect Oriented Programming:面向切向程式設計

在軟體開發中,分佈於應用中多處的功能被稱為橫切關注點。這些橫切關注點往往和業務邏輯是相分離的,將這些橫切關注點與業務邏輯相分離正式AOP要解決的。AOP程式設計能夠讓遍佈在應用各處的功能分離出來形成可重用的元件。是高內聚低耦合的又一個體現,將通用實現模組與核心業務模組相分離。

Hibernate

資料持久化框架其實也有很多,需要掌握的不僅是Hibernate,只是因為Hibernate在以前的企業級應用中用的比較多而已,另外MyBatis也佔有相當重要的'份額。Hibernate是一個全自動的持久化框架,並不是那麼方便,所以很多開發者更傾向於使用MyBatis,淘寶就是這樣。

Hibernate的工作流程:首先通過configuration物件讀取配置檔案;解析對映資訊,建立StandardSessionFactory;呼叫openSession開啟session;建立事務transaction,之後進行持久化操作;完成後提交事務,關閉session,關閉sessionFactory。

Figuer 2 Hibernate工作流程

要理解ORM的理念:ORM意為物件關係對映。是一種為了解決程式的物件導向模型與資料庫關係模型互不匹配問題的技術。

hibernate中比較重要的是物件的4種狀態轉換及條件。分別是transient瞬時態、persistent持久態、detached遊離態和移除態,狀態轉換如下:

Struts 2

Struts出現的最早,也是思想提供者之一,從名字就可以看得出其重要性,其設計目的是為了簡化Java開發,統一事務切面化。

Struts最關鍵的地方在於Action的執行,攔截的原理、valuestack及OGNL。

具體參考:《Struts in Action》

這個不用多談,太重要了,作為Web開發者,如果不特別熟悉Http將會是一件很麻煩的事。

Http的報頭格式

Http協議的各種返回碼是什麼意思

https如何實現

B/S架構的工作原理

Cookie和Session的原理

restful API

5.設計模式

這裡就不列舉23種模式了,個人覺得純粹看書學習《設計模式》並沒有什麼用,要在實際應用中碰到,並且多問幾個為什麼,而且自己寫程式碼時能有使用設計模式的意識才能對各種設計模式有更深的領悟。

當然Web開發遠不止這麼些東西,我這裡暫時也只好先列些重要的。應用開發後,還有部署的問題,因此又會涉及CDN和負載均衡等問題就更復雜了......

另外在Web開發的過程中,要養成良好的開發習慣,比如開發之前能夠熟練地使用UML類圖,互動圖等,這將避免你犯很多錯誤。感謝面試官輕虐,自己覺得還有許多不紮實的地方,還需要繼續努力才能對得起這次機會。

TAG標籤:架構 彙總 web JAVA #