您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)java后端在做什么,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
Java 開(kāi)發(fā)工程師到底開(kāi)發(fā)的是什么東西。準(zhǔn)確點(diǎn)來(lái)說(shuō),Java后端到底在做什么?
大家都知道 Java 是一門后端語(yǔ)言,后端指的就是服務(wù)端,服務(wù)端代碼一般運(yùn)行在服務(wù)器上,通常我們運(yùn)行Java 程序的服務(wù)器都是 Linux 服務(wù)器。
這些服務(wù)器在互聯(lián)網(wǎng)公司中一般放在一個(gè)叫做機(jī)房的地方里,于是像我們這類 Java 程序員的代碼一般也運(yùn)行在這些機(jī)房里的服務(wù)器中。
Java 里有一個(gè)概念叫做虛擬機(jī),你可以把它理解為一個(gè)安卓的模擬器,比如你在電腦上裝了一個(gè)安卓模擬器,就可以通過(guò)它來(lái)運(yùn)行安卓應(yīng)用程序,比如裝個(gè) APP,手機(jī)游戲什么的。
所以當(dāng)你在電腦上安裝了一個(gè)叫做 JDK 的東西時(shí),電腦里就有了 JRE 也就是 Java 運(yùn)行環(huán)境,有了這個(gè)運(yùn)行環(huán)境,你就可以運(yùn)行 Java 應(yīng)用程序了。
知道 Java 程序如何運(yùn)行在計(jì)算機(jī)上之后,我們?cè)賮?lái)講一講平時(shí)學(xué)的一些 Java 基礎(chǔ)知識(shí),它們到底有什么用?
其實(shí)平時(shí)這一些 Java 基礎(chǔ)語(yǔ)法都僅僅是你寫代碼的一些基礎(chǔ)知識(shí),就相當(dāng)于英語(yǔ)中的 26 個(gè)字母,常見(jiàn)的有基本類型變量、for 循環(huán)、if else 等等基本語(yǔ)法,掌握了這些基礎(chǔ)知識(shí)之后,你就可以上手寫一些很簡(jiǎn)單的代碼了。
除此之外,Java 還有一些比較特別的概念,比如面向?qū)ο蟮奶匦裕渲杏蓄?、接口等概念。為什?Java 要引入這些東西呢,其實(shí)就是想讓使用者更好地進(jìn)行設(shè)計(jì)、抽象和編程。
對(duì)于新手來(lái)說(shuō),你不需要理解得特別的深刻,因?yàn)檫@些東西只有你在你真正寫代碼之后才能逐步去理解。
說(shuō)完基本知識(shí)之后,我想你也會(huì)好奇,Java里經(jīng)常提到的一些集合類是干嘛的呢,因?yàn)樵诂F(xiàn)實(shí)生活中有很多場(chǎng)景,需要用到集合類,比如說(shuō)一個(gè)用戶名列表,你要怎么存呢?
你會(huì)用一個(gè) List 來(lái)做對(duì)不對(duì),所以集合類的作用就是讓你在編程中更好的存儲(chǔ)數(shù)據(jù)。
事實(shí)上,集合類的概念最早是來(lái)源于數(shù)據(jù)結(jié)構(gòu)的,因?yàn)橛?jì)算機(jī)里有很多特殊的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu),比如文件樹(shù),比如鏈表和數(shù)組等結(jié)構(gòu),因此計(jì)算機(jī)理論把這些存儲(chǔ)數(shù)據(jù)的模型抽象成一些常見(jiàn)的結(jié)構(gòu),統(tǒng)稱為數(shù)據(jù)結(jié)構(gòu)。
那么,Java 中的并發(fā)編程又是做什么的呢,Java 中的多線程是為了更好地利用電腦中的CPU核心,通過(guò)并發(fā)編程,就可以提高程序并發(fā)的效率。
但是并發(fā)編程的背后需要操作系統(tǒng)的支持,以及計(jì)算機(jī)硬件的支持,所以,如果你要完全地理解多線程,絕不僅僅是理解 Java 里的 Thread 或者是線程池就足夠了,你還需要去理解操作系統(tǒng),以及計(jì)算機(jī)組成原理。
和并發(fā)編程類似,Java 里也有網(wǎng)絡(luò)編程的概念,Java 里的網(wǎng)絡(luò)編程和其他語(yǔ)言大同小異,其實(shí)也是基于 TCP/IP 協(xié)議實(shí)現(xiàn)的一套 API,通過(guò)網(wǎng)絡(luò)編程,你就可以在程序中把你想傳輸?shù)臄?shù)據(jù)傳輸?shù)骄W(wǎng)絡(luò)的另一端,有了網(wǎng)絡(luò)編程和并發(fā)編程之后,Java 程序員的能量已經(jīng)很大了
講完這幾點(diǎn)之后接下來(lái)再談?wù)劊覀兺ǔUf(shuō)的 Java 后端技術(shù)到底是什么,就拿支付寶來(lái)舉例吧,曾經(jīng)的支付寶用戶數(shù)并不多,一臺(tái)服務(wù)器,一個(gè)數(shù)據(jù)庫(kù)就可以支持所有的業(yè)務(wù)了。
當(dāng)支付寶的用戶越來(lái)越多的時(shí)候,一臺(tái)服務(wù)器無(wú)法同時(shí)滿足海量用戶的需求,于是開(kāi)始出現(xiàn)了多臺(tái)服務(wù)器,多臺(tái)服務(wù)器組成了一個(gè)集群,用戶可以通過(guò)負(fù)載均衡的方式訪問(wèn)這些服務(wù)器,每個(gè)用戶可能會(huì)訪問(wèn)到不同的機(jī)器上,這樣子就達(dá)到了分流的效果,服務(wù)器的壓力就會(huì)減小。
由于數(shù)據(jù)庫(kù)需要保證數(shù)據(jù)的可靠性,萬(wàn)一某一臺(tái)數(shù)據(jù)庫(kù)掛了,并且沒(méi)有備份的話,那么這個(gè)數(shù)據(jù)就無(wú)法訪問(wèn)了,這在大型系統(tǒng)中是不允許出現(xiàn)的,于是乎,就有了數(shù)據(jù)庫(kù)的主從部署。
但事實(shí)上,隨著業(yè)務(wù)發(fā)展,數(shù)據(jù)庫(kù)的壓力也越來(lái)越大,主備部署并不能解決數(shù)據(jù)庫(kù)訪問(wèn)性能的問(wèn)題,于是乎我們需要進(jìn)行分庫(kù)分表,在數(shù)據(jù)庫(kù)主備的基礎(chǔ)上,我們會(huì)把一個(gè)數(shù)據(jù)量很大的表拆成多個(gè)表,并且把數(shù)據(jù)庫(kù)請(qǐng)求分流到不同的數(shù)據(jù)上,比如說(shuō)100個(gè)分庫(kù),100個(gè)分表,就相當(dāng)于把一個(gè)數(shù)據(jù)表劃分成10000個(gè)數(shù)據(jù)表。
此時(shí)又出現(xiàn)一個(gè)問(wèn)題,如果一個(gè)數(shù)據(jù)庫(kù)有多個(gè)備庫(kù),并且當(dāng)主庫(kù)掛掉的時(shí)候需要進(jìn)行主從切換時(shí),主備數(shù)據(jù)庫(kù)之間的數(shù)據(jù)就可能發(fā)生不一致,而這也是分布式理論研究的問(wèn)題之一,因?yàn)楸容^復(fù)雜,我們這里就略過(guò)不講。
剛才說(shuō)到了分布式技術(shù),其實(shí)負(fù)載均衡、分庫(kù)分表都是分布式技術(shù)的一種實(shí)現(xiàn),如果你不想做分庫(kù)分表,那還有什么辦法能夠減輕數(shù)據(jù)庫(kù)訪問(wèn)的壓力呢?于是緩存就出現(xiàn)了,緩存可以讓服務(wù)器先把請(qǐng)求打到緩存上,由于緩存的數(shù)據(jù)一般在內(nèi)存中,所以訪問(wèn)速度會(huì)非??欤@些請(qǐng)求無(wú)需經(jīng)過(guò)數(shù)據(jù)庫(kù)。
隨著業(yè)務(wù)發(fā)展,緩存的單點(diǎn)壓力也會(huì)比較大,于是乎分布式緩存就出現(xiàn)了,通常來(lái)說(shuō),緩存難以保證數(shù)據(jù)的可靠性,因?yàn)樗鼈兊臄?shù)據(jù)可能會(huì)丟失,同時(shí)緩存只能存儲(chǔ)一部分的數(shù)據(jù),并不能解決所有問(wèn)題。
所以當(dāng)某些業(yè)務(wù)的請(qǐng)求量非常大的時(shí)候,光靠緩存也解決不了問(wèn)題,此時(shí)我們還可以通過(guò)消息隊(duì)列來(lái)幫我們解決大流量并發(fā)請(qǐng)求的問(wèn)題。
我們可以通過(guò)消息隊(duì)列來(lái)存儲(chǔ)一部分的請(qǐng)求消息,然后根據(jù)我們服務(wù)器處理請(qǐng)求的能力,把消息再逐步取出來(lái),接著去把這些消息逐漸地進(jìn)行處理,這樣就可以很好的解決高并發(fā)的問(wèn)題。當(dāng)然,前提是消息隊(duì)列要保證消息存儲(chǔ)的可靠性,這也是大部分消息隊(duì)列都會(huì)保證的能力。
一口氣講了這么多,算是把 Java 后端的大概面貌介紹清楚了,除此之外還有很多東西沒(méi)講到,真要講完的話一晚上也說(shuō)不完。
總體來(lái)說(shuō),Java 后端技術(shù),說(shuō)難不難說(shuō)簡(jiǎn)單也不簡(jiǎn)單,我盡量把這些內(nèi)容都講的比較通俗易懂,事實(shí)上每項(xiàng)技術(shù)的背后都有特別多復(fù)雜的實(shí)現(xiàn)原理,當(dāng)然,在你理解了 Java 后端技術(shù)的整體概念以后,相信對(duì)于你之后的學(xué)習(xí)會(huì)更有幫助。
關(guān)于“java后端在做什么”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。