一般的java專案後臺都有什麼技術?

嘿你好夏天發表於2017-12-15

一般的java專案後臺都有什麼技術,比如Spring MVC,shiro 還有什麼技術? 最近自己做了幾個Java Web專案,有公司的商業專案,也有個人做著玩的小專案,寫篇文章記錄總結一下收穫,列舉出在做專案的整個過程中,所需要用到的技能和知識點,帶給還沒有真正接觸過完整Java Web專案的同學一個比較完整的視角,提供一個所謂的“大局觀”,也以便於同學們更有針對性地學習。 當然,這裡所用到的例子專案是非常初級,簡單的專案。 首先我們從網站的架構談起。 一般來說,我們將網站分為前端和後端。前端主要負責頁面的展示,後端則是業務邏輯的實現。由於html5的興起,前端領域已經越來越火熱,前端技術發展極快,今天我們不做過多介紹,因為現在的網際網路公司,前端工程師和Java工程師是完全不同的兩種技術崗位。所以我們還是以Java的角度去看待一個專案。在前端沒有那麼火的前幾年,或者說在經典的Java Web的開發模式中,我們使用Jsp技術來作為展現層的實現,其實也就是所謂的前端。 當然只懂得Jsp是不夠的還需要懂html,css,js,ajax等一些前端的基礎技術,Jsp技術在其中扮演外層包裝的角色。那麼後端呢?後端是由於一些實現了業務邏輯Java程式碼和資料庫組成。說到這,就可以推出Web開發中經典的MVC模式,Model-View-Controller。View,,就是指表現層,Model,是用來承載資料的抽象結構,而Controller則是View和Model的橋樑。View存在與前端程式碼中,Controller,Model存在與後端程式碼中。 在後端程式碼中,為了保證程式碼的整潔,易讀性,一般會採用分層的辦法,自頂向下分為controller層,service層,dao層,資料層或者叫持久層(直接與資料庫打交道)。有時候,為了達到解耦的目的,會在上述基層中間加入響應的介面層,以使得介面與實現分離。在更加大型的網站中,會出現更加複雜的架構,比如dao層與資料層之間要有快取層,或者訪問壓力增大後,需要使用叢集,負載均衡等高階技術,但在這裡,我們就不深入討論複雜架構了。 所以以上我們看到,一個Web 專案前端需要表現層,後端有controller層,service層,dao層,持久層。在表現層,除了剛才提到的html,css,js,ajax,jsp等基礎知識,在實際開發中,我們還會用到許多框架技術,比如tiles,velocity,freemarker等模板技術來簡化表現層的開發。在持久層,除了jdbc外,還有Mybatis,Hibernate等框架來提高開發效率。 在Java Web中最耀眼的當屬Spring了,Spring作為一個貫穿整個專案的框架,為專案開發帶來依賴注入,面向切面程式設計的功能。除了這些,我們還需要熟練掌握一種關係型資料庫的使用,如MySQL,Oracle等,當然更好地話還需要掌握一種非關係型資料庫,MongoDB,Redis。 掌握了以上知識點,恭喜你,你已經可以開始寫Java Web專案了。 但是隻會寫而不會部署,我們的專案仍然不能拿出來用。所以說到這裡,我們的專案程式碼已經寫好,接下來該怎麼辦呢?當然是需要找一個容器來執行我們的程式碼。這裡的容器是當然不是指Java裡的資料型別,而是指應用伺服器,此處要特別區分應用伺服器與Web伺服器,至於Web伺服器是什麼,稍後會介紹。(如果有同學不是很清楚伺服器的概念,可以先看下一段,再回來看)目前,市面主要流行的應用伺服器有Tomcat,Jetty,JBoss等。 很多人會問我們為什麼需要應用伺服器?顧名思義,應用伺服器就是用來執行我們的應用程式碼的。這裡需要特別提到的是,Java Web用到了像Jsp,servlet這樣的動態web技術,而這些技術的程式碼是必須執行中應用伺服器中的。所以當我們寫好應用程式碼後,需要把自己的應用部署到應用伺服器上。應用部署好後,那麼使用者們該怎麼訪問呢?直接訪問應用伺服器嗎?這個時候就需要web伺服器出場了。在網際網路上,最強大的應用層協議當屬http協議了,人們訪問網站就是通過http協議來進行訪問的,而Web伺服器就是支援http協議的伺服器,所以就叫http伺服器。 Web伺服器接收http請求,然後再將請求轉交給應用伺服器。有人會問使用者直接訪問應用伺服器不好嗎?為什麼要給web伺服器,然後再到應用伺服器?從功能實現上來說,是可以的。許多應用伺服器,比如Tomcat是具有web伺服器的功能,所以直接訪問也可以。但是由於在實際的生產環境中,由於負載均衡,cdn加速等原因,我們還是需要在應用伺服器的前端再加一個web伺服器來提高訪問效率,常用的有Nginx,Apache這樣的伺服器。 之前老是在講這個伺服器,那個伺服器,不知道有沒有同學聽懵了。其實伺服器這個概念,我們應該在真正接觸計算機專業領域之前早就聽說過,比如以前打遊戲覺得卡的時候大家都時不時會用到伺服器這個詞彙。但是我真正理解並研究伺服器是在學習tomcat, jetty之後才開始的。那麼伺服器到底什麼呢?伺服器這個概念其實很簡單,就是一臺電腦,那它和我們日常用的電腦有什麼區別? 第一,它一般沒有顯示器,它只有主機。第二,它的作業系統不同於我們常用的windows , Mac OS。更多的是nix系統。第三,它執行了一些伺服器端軟體。比如說,我們上文提到的Tomcat , Jetty , Nginx,Apache,其實這些都是伺服器軟體,只是主機執行了這些軟體,所以有時候大家就混淆了叫法。所以所謂的資料庫伺服器,大家也知道了,其實就是執行了資料庫的主機。說到伺服器,我們所需要掌握的重點知識就是伺服器作業系統,也就是nix系統,比如CentOS , Ubuntu等。 說到這裡,其實一個簡單的完整的Java Web專案就差不多了。我們簡單回顧一下,首先,我們需要利用各種框架和開發技術寫出應用程式碼。接下來,我們需要一個檯安裝了*nix系統的主機,在上面安裝好Web伺服器軟體,應用伺服器軟體,再把我們的應用程式碼部署到應用伺服器上。現在我們只需要獲取到主機的IP地址,就能夠遠端訪問應用了。 知識點列表:

開發:

  1. 檢視層技術——HTML,CSS,JS,AJAX,Tiles,Velocity,FreeMarker
  2. 持久層技術——MyBatis,Hibernate
  3. Spring , Spring MVC
  4. 專案構建工具Maven
  5. 日誌Log4j
  6. 版本控制 Git 資料庫技術:
  7. SQL語句
  8. 引數調優 作業系統:
  9. 熟練掌握一種Linux系統,原理,Shell命令 伺服器技術:
  10. 熟練使用並理解一個應用伺服器技術的原理(Tomcat)
  11. 熟練使用並理解一個Web伺服器技術的原理(Nginx) 附加:

快取技術:

  1. 熟練使用並理解一種快取技術(Redis,Memcache,EhCache) 非關係型資料庫
  2. 熟練使用並理解一種非關係型資料庫(MongoDB) 中介軟體技術:
  3. JMS:activeMQ和kafka
  4. RPC: Dubbo 設計模式:
  5. 瞭解並能夠使用幾種最主要的設計模式 網路:
  6. 熟練使用並理解一個網路開發技術(Netty)
  7. 熟悉http,TCP協議 Java虛擬機器:
  8. 熟悉jvm執行原理,記憶體分佈
  9. jvm引數調優 一個程式設計師學習平臺分享給你們,讓你在實踐中積累經驗掌握原理。主要方向是JAVA工程師。如果你想拿高薪,想突破瓶頸,想跟別人競爭能取得優勢的,想進BAT但是有擔心面試不過的,可以加我的Java學習交流群:282711949。 注:加群要求 1、大學學習的是Java相關專業,畢業後面試受挫,找不到對口工作可以 2、在公司待久了,現在過得很安逸,但跳槽時面試碰壁。需要在短時間內進修、跳槽拿高薪的 3、參加過線下培訓後,知識點掌握不夠深刻,就業困難,想繼續深造 4、已經在Java相關部門上班的在職人員,對自身職業規劃不清晰,混日子的 5、有一定的C語言基礎,接觸過java開發,想轉行的 作者:知乎 硫鎵鋅 連結:https://www.zhihu.com/question/35122053/answer/149715810

相關文章