用大白話告訴你 :Java 後端究竟是在作什麼?

新手程序員一般會走入一個誤區,就是認爲學習了一門語言,就能夠稱爲是某某語言工程師了。但事實上真的是這樣嗎?其實並不是如此。java

今天咱們就來聊一聊,Java 開發工程師到底開發的是什麼東西。準確點來講,Java後端到底在作什麼?程序員

你們都知道 Java 是一門後端語言,後端指的就是服務端,服務端代碼通常運行在服務器上,一般咱們運行Java 程序的服務器都是 Linux 服務器。web

這些服務器在互聯網公司中通常放在一個叫作機房的地方里,因而像咱們這類 Java 程序員的代碼通常也運行在這些機房裏的服務器中。數據庫

![](https://img2018.cnblogs.com/blog/1813823/201910/1813823-20191018203835716-1209650174.webp)

Java 裏有一個概念叫作虛擬機,你能夠把它理解爲一個安卓的模擬器,好比你在電腦上裝了一個安卓模擬器,就能夠經過它來運行安卓應用程序,好比裝個 APP,手機遊戲什麼的。編程

因此當你在電腦上安裝了一個叫作 JDK 的東西時,電腦裏就有了 JRE 也就是 Java 運行環境,有了這個運行環境,你就能夠運行 Java 應用程序了。後端

知道 Java 程序如何運行在計算機上以後,咱們再來說一講平時學的一些 Java 基礎知識,它們到底有什麼用?數組

其實平時這一些 Java 基礎語法都僅僅是你寫代碼的一些基礎知識,就至關於英語中的 26 個字母,常見的有基本類型變量、for 循環、if else 等等基本語法,掌握了這些基礎知識以後,你就能夠上手寫一些很簡單的代碼了。緩存

除此以外,Java 還有一些比較特別的概念,好比面向對象的特性,其中有類、接口等概念。爲何 Java 要引入這些東西呢,其實就是想讓使用者更好地進行設計、抽象和編程。服務器

對於新手來講,你不須要理解得特別的深入,由於這些東西只有你在你真正寫代碼以後才能逐步去理解。微信

說完基本知識以後,我想你也會好奇,Java裏常常提到的一些集合類是幹嗎的呢,由於在現實生活中有不少場景,須要用到集合類,好比說一個用戶名列表,你要怎麼存呢?

你會用一個 List 來作對不對,因此集合類的做用就是讓你在編程中更好的存儲數據。

事實上,集合類的概念最先是來源於數據結構的,由於計算機裏有不少特殊的數據存儲結構,好比文件樹,好比鏈表和數組等結構,所以計算機理論把這些存儲數據的模型抽象成一些常見的結構,統稱爲數據結構。

那麼,Java 中的併發編程又是作什麼的呢,Java 中的多線程是爲了更好地利用電腦中的CPU核心,經過併發編程,就能夠提升程序併發的效率。

可是併發編程的背後須要操做系統的支持,以及計算機硬件的支持,因此,若是你要徹底地理解多線程,毫不僅僅是理解 Java 裏的 Thread 或者是線程池就足夠了,你還須要去理解操做系統,以及計算機組成原理。

![](https://img2018.cnblogs.com/blog/1813823/201910/1813823-20191018203838486-1542322687.jpg)

和併發編程相似,Java 裏也有網絡編程的概念,Java 裏的網絡編程和其餘語言大同小異,其實也是基於 TCP/IP 協議實現的一套 API,經過網絡編程,你就能夠在程序中把你想傳輸的數據傳輸到網絡的另外一端,有了網絡編程和併發編程以後,Java 程序員的能量已經很大了

講完這幾點以後接下來再談談,咱們一般說的 Java 後端技術究竟是什麼,就拿支付寶來舉例吧,曾經的支付寶用戶數並很少,一臺服務器,一個數據庫就能夠支持全部的業務了。

當支付寶的用戶愈來愈多的時候,一臺服務器沒法同時知足海量用戶的需求,因而開始出現了多臺服務器,多臺服務器組成了一個集羣,用戶能夠經過負載均衡的方式訪問這些服務器,每一個用戶可能會訪問到不一樣的機器上,這樣子就達到了分流的效果,服務器的壓力就會減少。

因爲數據庫須要保證數據的可靠性,萬一某一臺數據庫掛了,而且沒有備份的話,那麼這個數據就沒法訪問了,這在大型系統中是不容許出現的,因而乎,就有了數據庫的主從部署。

但事實上,隨着業務發展,數據庫的壓力也愈來愈大,主備部署並不能解決數據庫訪問性能的問題,因而乎咱們須要進行分庫分表,在數據庫主備的基礎上,咱們會把一個數據量很大的表拆成多個表,而且把數據庫請求分流到不一樣的數據上,好比說100個分庫,100個分表,就至關於把一個數據表劃分紅10000個數據表。

此時又出現一個問題,若是一個數據庫有多個備庫,而且當主庫掛掉的時候須要進行主從切換時,主備數據庫之間的數據就可能發生不一致,而這也是分佈式理論研究的問題之一,由於比較複雜,咱們這裏就略過不講。

![](https://img2018.cnblogs.com/blog/1813823/201910/1813823-20191018203839590-1361443829.jpg)

剛纔說到了分佈式技術,其實負載均衡、分庫分表都是分佈式技術的一種實現,若是你不想作分庫分表,那還有什麼辦法可以減輕數據庫訪問的壓力呢?因而緩存就出現了,緩存可讓服務器先把請求打到緩存上,因爲緩存的數據通常在內存中,因此訪問速度會很是快,這些請求無需通過數據庫。

隨着業務發展,緩存的單點壓力也會比較大,因而乎分佈式緩存就出現了,一般來講,緩存難以保證數據的可靠性,由於它們的數據可能會丟失,同時緩存只能存儲一部分的數據,並不能解決全部問題。

因此當某些業務的請求量很是大的時候,光靠緩存也解決不了問題,此時咱們還能夠經過消息隊列來幫咱們解決大流量併發請求的問題。

咱們能夠經過消息隊列來存儲一部分的請求消息,而後根據咱們服務器處理請求的能力,把消息再逐步取出來,接着去把這些消息逐漸地進行處理,這樣就能夠很好的解決高併發的問題。固然,前提是消息隊列要保證消息存儲的可靠性,這也是大部分消息隊列都會保證的能力。

![](https://img2018.cnblogs.com/blog/1813823/201910/1813823-20191018203840498-1998467531.webp)

一口氣講了這麼多,算是把 Java 後端的大概面貌介紹清楚了,除此以外還有不少東西沒講到,真要講完的話一夜也說不完。

整體來講,Java 後端技術,說難不難說簡單也不簡單,我儘可能把這些內容都講的比較通俗易懂,事實上每項技術的背後都有特別多複雜的實現原理,固然,在你理解了 Java 後端技術的總體概念之後,相信對於你以後的學習會更有幫助。

微信公衆號

我的公衆號:黃小斜

黃小斜是跨考軟件工程的 985 碩士,自學 Java 兩年,拿到了 BAT 等近十家大廠 offer,從技術小白成長爲阿里工程師。

做者專一於 JAVA 後端技術棧,熱衷於分享程序員乾貨、學習經驗、求職心得和程序人生,目前黃小斜的CSDN博客有百萬+訪問量,知乎粉絲2W+,全網已有10W+讀者。

黃小斜是一個斜槓青年,堅持學習和寫做,相信終身學習的力量,但願和更多的程序員交朋友,一塊兒進步和成長!

原創電子書:
關注公衆號【黃小斜】後回覆【原創電子書】便可領取我原創的電子書《菜鳥程序員修煉手冊:從技術小白到阿里巴巴Java工程師》

程序員3T技術學習資源: 一些程序員學習技術的資源大禮包,關注公衆號後,後臺回覆關鍵字 「資料」 便可免費無套路獲取。

考研複習資料:
計算機考研大禮包,都是我本身考研複習時用的一些複習資料,包括公共課和專業的複習視頻,這裏也推薦給你們,關注公衆號後,後臺回覆關鍵字 「考研」 便可免費獲取。

技術公衆號:Java技術江湖

若是你們想要實時關注我更新的文章以及分享的乾貨的話,能夠關注個人公衆號【Java技術江湖】一位阿里 Java 工程師的技術小站,做者黃小斜,專一 Java 相關技術:SSM、SpringBoot、MySQL、分佈式、中間件、集羣、Linux、網絡、多線程,偶爾講點Docker、ELK,同時也分享技術乾貨和學習經驗,致力於Java全棧開發!

Java工程師必備學習資源: 一些Java工程師經常使用學習資源,關注公衆號後,後臺回覆關鍵字 「Java」 便可免費無套路獲取。

個人公衆號

本文由博客一文多發平臺 OpenWrite 發佈!

相關文章
相關標籤/搜索