java面試——高並行處理

2020-11-23 18:01:07

高並行處理方法:

(學習視訊分享:)

1、從最基礎的地方做起,優化我們寫的程式碼,減少必要的資源浪費。

a、避免頻繁的使用new物件,對於整個應用只需要存在一個範例的類,我們可以使用單例模式。對於String連線操作,使用 StringBuffer或StringBuilder,對於工具類可以通過靜態方法來存取。

b、避免使用錯誤的方式,儘量不用instanceof做條件判斷。使用java中效率高的類,比如ArrayList比Vector效能好。

2、html靜態化

我們通過一個連結地址存取,通過這個連結地址,伺服器對應的模組處理這個請求,轉到對應的jsp頁面,最後生成我們要的資料。但是,如果上千萬個請求的話,有太多的高並行請求,那麼就會加重伺服器的壓力,最壞的情況是把伺服器down掉。那麼如何避免這種情況的出現呢?如果我們把最初對test.do的請求結果儲存成一個html檔案,然後每次使用者都去存取這個html檔案,這樣就不用再去存取伺服器了,伺服器的壓力不就減少了?

那如何自動的生成靜態頁面,當使用者去存取,會自動的生成test.html ,然後再顯示給使用者。

3、圖片伺服器分離

對於web伺服器來說,圖片是最消耗資源的,於是我們有必要把圖片與頁面進行分離,我們把圖片放到獨立的圖片伺服器。這樣的架構可以降低提供頁面存取請求的伺服器系統壓力,並且可以保證系統不會因為圖片的問題而崩潰。在圖片伺服器上,我們可以對不同的設定進行優化。

4、快取

具體接觸過的快取機制是hibernate的快取機制。為了避免每次都向資料庫中取得資料,我們把使用者常常存取到的資料放到記憶體中,甚至快取十分大的時候我們可以把記憶體中的快取放到硬碟中。還有高階的分散式快取資料庫使用,都可以增加系統的抗壓力。

(更多相關面試題推薦:)

5、分批傳送

在做某專案的時候,一次傳遞的引數太多,而且資料庫規定一次最多傳遞的引數最多是三萬條,當時有五萬條記錄,那怎麼傳送呢?最終是分批傳送,電梯裡一次乘不下那麼多的人,會報超重的bug,那就分批把人送上去。

還有一次在考試系統中,如果那麼多的考試人員同時提交到資料庫中,資料庫的壓力增大,有時會被down掉,當時採用的方法是使用ajax非同步傳輸,沒有等待考生點選提交按鈕的時候,就把考生的答案自動提交,這樣也避免了突然斷電考生前面做過的題出現丟失的現象。

6、資料庫叢集

當面對複雜的應用,使用者大量存取的時候,一臺資料很快無法滿足需求,於是我們需要使用資料庫叢集或者庫表雜湊。

我們在應用程式中安裝業務和應用或者功能模組將資料進行分離,不同的模組對應不同的資料庫或表,再按照一定的策略對某個頁面或者功能進行更小的資料庫雜湊。

7、DB優化

a、在資料庫設計的時候就要考慮到後期的維護,資料庫三正規化是我們設計資料庫索要遵循的原則。

b、索引的建立:建立索引要適當,如果一個表經常用來被查詢,對於增加和修改很少被用到,我們就可以為這個表建立索引,因為對於增加和修改和刪除操作時,我們對索引的維護要大大超過索引給我們帶來的效率。

c、表欄位的型別選擇要恰當

包括欄位的長度、型別等,要根據實際儲存的資料進行選擇,長度不要過長,否則會影響效率。

d、外來鍵要慎用,因為主鍵代表這一張表,而外來鍵代表一群表,對錶之間進行了關聯,在刪除修改等需要我們關聯。

e、在資料庫操作上

儘量使用prepareStatement,少用Statement,因為PrepareStatement是進行預編譯的。

connection設定為readOnly,Connection是對書庫連線,屬於重量級,我們使用即可。

連線池的使用,我們可以修改資料庫預設的連線數。

相關推薦:

以上就是java面試——高並行處理的詳細內容,更多請關注TW511.COM其它相關文章!