新手程式設計師通常會走入一個迷思,就是認為學習了一門語言,就可以稱為是某某語言工程師了。但事實上真的是這樣嗎?其實並非如此。
今天我們就來聊聊,Java 開發工程師到底開發的是什麼東西。準確點來說,Java後端到底在做什麼?
大家都知道 Java 是一門後端語言,後端指的就是服務端,服務端程式碼通常運行在伺服器上,通常我們執行Java 程式的伺服器都是 Linux 伺服器。
這些伺服器在網路公司中一般放在一個叫做機房的地方裡,於是像我們這類 Java 程式設計師的程式碼一般也運作在這些機房裡的伺服器中。
Java 裡有一個概念叫做虛擬機,你可以把它理解為一個安卓的模擬器,例如你在電腦上裝了一個安卓模擬器,就可以通過它來運行安卓應用程序,例如裝個APP,手機遊戲什麼的。
所以當你在電腦上安裝了一個叫做 JDK 的東西時,電腦裡就有了 JRE 也就是 Java 運行環境,有了這個運行環境,你就可以運行 Java 應用程式了。
知道 Java 程式如何運行在電腦上之後,我們再來講一講平時學的一些 Java 基礎知識,它們到底有什麼用?
其實平常這一些Java 基礎語法都只是你寫程式碼的一些基礎知識,就相當於英文中的26 個字母,常見的有基本型別變數、for 迴圈、if else 等等基本文法,掌握了這些基礎知識之後,你就可以上手寫一些很簡單的程式碼了。
除此之外,Java 還有一些比較特別的概念,例如物件導向的特性,其中有類別、介面等概念。為什麼 Java 要引進這些東西呢,其實就是想讓使用者更好地進行設計、抽象化和程式設計。
對於新手來說,你不需要理解得特別的深刻,因為這些東西只有你在你真正寫程式碼之後才能逐步去理解。
說完基本知識之後,我想你也會好奇,Java裡經常提到的一些集合類是乾嘛的呢,因為在現實生活中有很多場景,需要用到集合類,比如說一個用戶名列表,你要怎麼存呢?
你會用一個 List 來做對不對,所以集合類別的作用就是讓你在程式設計中更好的儲存資料。
事實上,集合類別的概念最早是來自資料結構的,因為電腦裡有很多特殊的資料儲存結構,例如檔案樹,例如鍊錶和陣列等結構,因此電腦理論把這些儲存資料的模型抽象化成一些常見的結構,統稱為資料結構。
那麼,Java 中的並發程式設計又是做什麼的呢,Java 中的多執行緒是為了更好地利用電腦中的CPU核心,透過並發編程,就可以提高程式並發的效率。
但是並發程式設計的背後需要作業系統的支持,以及電腦硬體的支持,所以,如果你要完全理解多線程,絕不僅僅是理解Java 裡的Thread 或者是線程池就足夠了,你還需要去理解作業系統,以及電腦組成原理。
和並發程式設計類似,Java 裡也有網路程式設計的概念,Java 裡的網路程式設計和其他語言都大同小異,其實也是基於TCP/IP 協定實作的一套API,透過網路編程,你就可以在程式中把你想傳輸的資料傳送到網路的另一端,有了網路程式設計和並發程式設計之後,Java 程式設計師的能量已經很大了
講完這幾點之後接下來再談談,我們通常說的Java 後端技術到底是什麼,就拿支付寶來舉例吧,曾經的支付寶用戶數並不多,一台伺服器,一個資料庫就可以支援所有的業務了。
當支付寶的用戶越來越多的時候,一台伺服器無法同時滿足海量用戶的需求,於是開始出現了多台伺服器,多台伺服器組成了一個集群,用戶可以透過負載平衡的方式存取這些伺服器,每個使用者可能會存取到不同的機器上,這樣子就達到了分流的效果,伺服器的壓力就會減少。
由於資料庫需要保證資料的可靠性,萬一某一台資料庫掛了,並且沒有備份的話,那麼這個資料就無法存取了,這在大型系統中是不允許出現的,於是乎,就有了資料庫的主從部署。
但事實上,隨著業務發展,資料庫的壓力也越來越大,主備部署並不能解決資料庫存取效能的問題,於是乎我們需要進行分庫分錶,在資料庫主備的基礎上,我們會把一個資料量很大的表拆成多個表,並且把資料庫請求分流到不同的資料上,比如說100個分庫,100個分錶,就相當於把一個資料表劃分成10000個資料表。
此時又出現一個問題,如果一個資料庫有多個備庫,並且當主庫掛掉的時候需要進行主從切換時,主備資料庫之間的資料就可能發生不一致,而這也是分散式理論研究的問題之一,因為比較複雜,我們在這裡就略過不講。
剛才說到了分散式技術,其實負載平衡、分庫分錶都是分散式技術的一種實現,如果你不想做分庫分錶,那還有什麼辦法能夠減輕資料庫存取的壓力呢?於是快取就出現了,快取可以讓伺服器先把請求打到快取上,由於快取的資料一般在記憶體中,所以存取速度會非常快,這些請求不需要經過資料庫。
隨著業務發展,快取的單點壓力也會比較大,於是乎分散式快取就出現了,通常來說,快取難以保證資料的可靠性,因為它們的數據可能會遺失,同時快取只能儲存一部分的數據,並不能解決所有問題。
所以當某些業務的請求量非常大的時候,光靠快取也解決不了問題,此時我們還可以透過訊息佇列來幫我們解決大流量並發請求的問題。
我們可以透過訊息佇列來儲存一部分的請求訊息,然後根據我們伺服器處理請求的能力,把訊息再逐步取出來,接著去把這些訊息逐漸地進行處理,這樣就可以很好的解決高並發的問題。當然,前提是訊息佇列要保證訊息儲存的可靠性,這也是大部分訊息佇列都會保證的能力。
一口氣講了這麼多,算是把 Java 後端的大概面貌介紹清楚了,除此之外還有很多東西沒講到,真要講完的話一晚也說不完。
整體來說,Java 後端技術,說難不難說簡單也不簡單,我盡量把這些內容都講的比較通俗易懂,事實上每項技術的背後都有特別多複雜的實作原理,當然,在你了解Java 後端技術的整體概念以後,相信對於你之後的學習會更有幫助。
以上是java後端介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!