「成都校區」《Java高頻面試系列:三》

設計模式

創建型模式,共五種:工廠方法模式、抽象工廠模式、單例模式、建造者模式、原型模式。

結構型模式,共七種:適配器模式、裝飾器模式、代理模式、外觀模式、橋接模式、組合模式、享元模式。

行為型模式,共十一種:策略模式、模板方法模式、觀察者模式、迭代子模式、責任鏈模式、命令模式、備忘錄模式、狀態模式、訪問者模式、中介者模式、解釋器模式。

線程池原理及參數

ThreadPoolExecutor mExecutor = new ThreadPoolExecutor(corePoolSize,// 核心線程數

maximumPoolSize, // 最大線程數

keepAliveTime, // 閒置線程存活時間

TimeUnit.MILLISECONDS,// 時間單位

new LinkedBlockingDeque<runnable>(),// 線程隊列 /<runnable>

Executors.defaultThreadFactory(),// 線程工廠

new AbortPolicy()// 隊列已滿,而且當前線程數已經超過最大線程數時的異常處理策略

);

限流算法

線程池等待 zk日誌算法

MySQL 索引數據結構

B+樹

ORACLE數據庫事務隔離級別

1、幻想讀:事務T1讀取一條指定where條件的語句,返回結果集。此時事務T2插入一行新記錄,恰好滿足T1的where條件。然後T1使用相同的條件再次查詢,結果集中可以看到T2插入的記錄,這條新紀錄就是幻想。

2、不可重複讀取:事務T1讀取一行記錄,緊接著事務T2修改了T1剛剛讀取的記錄,然後T1再次查詢,發現與第一次讀取的記錄不同,這稱為不可重複讀。

3、髒讀:事務T1更新了一行記錄,還未提交所做的修改,這個T2讀取了更新後的數據,然後T1執行回滾操作,取消剛才的修改,所以T2所讀取的行就無效,也就是髒數據。

線程池shuntdown

1、shutdown()

shutdown()有什麼功能?

阻止新來的任務提交,對已經提交了的任務不會產生任何影響。當已經提交的任務執行完後,它會將那些閒置的線程(idleWorks)進行中斷,這個過程是異步的。

如何阻止新來的任務提交?

通過將線程池的狀態改成SHUTDOWN,當再將執行execute提交任務時,如果測試到狀態不為RUNNING,則拋出rejectedExecution,從而達到阻止新任務提交的目的。

「成都校區」《Java高頻面試系列:三》


分享到:


相關文章: