相信很多在涉及互聯(lián)網(wǎng)這個(gè)職業(yè)中應(yīng)該都有聽過(guò)“高并發(fā)“這個(gè)詞,那么什么是高并發(fā)呢?在java中怎么處理高并發(fā)呢?下面是小編整理的一些相關(guān)的內(nèi)容,希望對(duì)大家有所幫助。
高并發(fā)是一個(gè)關(guān)于互聯(lián)網(wǎng)系統(tǒng)架構(gòu)設(shè)計(jì)中需要考慮的一個(gè)因素,通俗的來(lái)說(shuō):就是幫助系統(tǒng)來(lái)處理很對(duì)的請(qǐng)求的一個(gè)簡(jiǎn)稱。那么對(duì)于高并發(fā)的處理有以下幾點(diǎn)。
1.優(yōu)化代碼,減少資源浪費(fèi)
首先在處理高并發(fā)中我們需要從底層基礎(chǔ)做起,避免使用過(guò)的 new對(duì)象,我們可以盡量的使用實(shí)體類和單例模式,在工具類和String的使用和連接中,我們可以通過(guò)使用靜態(tài)方法來(lái)訪問(wèn)和使用StringBuffer或StringBuilder進(jìn)行使用。當(dāng)然我們還有避免使用錯(cuò)誤的方式做條件判斷,盡量不用使用 instanceof 做一個(gè)條件的判斷,使用一些效率高的類。
2.HTML靜態(tài)化
當(dāng)我們?cè)谕ㄟ^(guò)一個(gè)鏈接訪問(wèn)的時(shí)候,讓服務(wù)器將這個(gè)請(qǐng)求處理轉(zhuǎn)到相對(duì)于的 jsp 頁(yè)面中,最后生成我們的數(shù)據(jù)。
3.圖片和服務(wù)器分離
在我們的一個(gè)web服務(wù)器中,圖片的一個(gè)消耗是比較多的,所以我們要將圖片和網(wǎng)頁(yè)進(jìn)行一個(gè)分離放在不同的一個(gè)服務(wù)器上,這樣子才可以減少我們的一個(gè)服務(wù)器的壓力,才可以保證系統(tǒng)不會(huì)因?yàn)閳D片的問(wèn)題崩潰。
4.緩存和分批傳送
我們具體使用的是hibernate的一個(gè)緩存機(jī)制,在用戶使用中我們?yōu)榱吮苊饷看蜗驍?shù)據(jù)庫(kù)獲取數(shù)據(jù),我們會(huì)將用戶訪問(wèn)的數(shù)據(jù)放在內(nèi)存和硬盤中,而且還有高級(jí)的分布式緩存的數(shù)據(jù)庫(kù)使用,這樣就可以增加我們的一個(gè)系統(tǒng)的抗壓力。使用分批傳送是為了不會(huì)在同一時(shí)間內(nèi)接收過(guò)量的信息使得系統(tǒng)崩潰和數(shù)據(jù)的一個(gè)丟失。
5.數(shù)據(jù)庫(kù)集群
為什么要進(jìn)行數(shù)據(jù)庫(kù)集群?當(dāng)我們?cè)诿鎸?duì)大量的用戶訪問(wèn)時(shí),如果只有單一的數(shù)據(jù)是無(wú)法快速滿足需求的,所以我們就需要使用到這個(gè)方法。
6.DB優(yōu)化
首先當(dāng)我們?cè)谠O(shè)計(jì)數(shù)據(jù)庫(kù)的時(shí)候有一個(gè)很重要的就是要考慮我們后期的維護(hù),而且我們還要對(duì)數(shù)據(jù)庫(kù)進(jìn)行一個(gè)優(yōu)化,如果沒(méi)有做優(yōu)化的話就會(huì)造成,我們的索引維護(hù)會(huì)大于索引的一個(gè)效率。而且我們?cè)诒淼囊粋€(gè)字段中要恰當(dāng)?shù)氖褂瞄L(zhǎng)度和字段,以免影響我們的一個(gè)效率。還有就是外鍵,因?yàn)樵谥麈I和外鍵之前是一對(duì)多的關(guān)系,我們要合理的設(shè)置因?yàn)樵谖覀冃薷牡臅r(shí)候可以減少我們的工作量。最后在數(shù)據(jù)庫(kù)的操作上我們要盡量使用prepareStatement少用Statement,因?yàn)樵趐repareStatement是可以進(jìn)行預(yù)編譯的,而且我們還可以在 將connection 設(shè)置為readOnly,因?yàn)镃onnection是可以對(duì)書庫(kù)進(jìn)行連接的,還是屬于重量級(jí)的,我們直接使用即可。 對(duì)于連接池的使用來(lái)說(shuō)我們可以修改其中默認(rèn)連接數(shù)是比較方便的。
最后一點(diǎn)就是要在硬件上做到一個(gè)負(fù)載均衡。
總結(jié):
以上就是一個(gè)有關(guān)于“在java怎么處理高并發(fā)?”的資料,希望對(duì)大家的一個(gè)學(xué)了和了解有所幫助。對(duì)于剛要接觸互聯(lián)網(wǎng)這方面學(xué)習(xí)的小伙伴可以在w3cschool中進(jìn)行一個(gè)學(xué)習(xí)和了解。