疏漏總結(十八)

  1. 線程池TimeOut參數啥意思

超過這段時間還沒有線程負載上任務,就會刪除這條線程

  1. interrupt(),interrupted(),isInterrupted()的區別

interrupt():這個作用相當於,讓線程產生一箇中斷標誌位,但是這不代表線程會立刻中斷,就像yield一樣,勸說cpu執行任務,而不是強制執行。
interrupted():這個的作用是清除當前的中斷標誌位,並且返回線程上一次的中斷狀態。
isInterrupted():判斷當前線程是否處於中斷。

  1. ThreadLocalMap解釋一下

ThreadLocalMap是ThreadLocal內部維護的一個靜態內部類。

因爲一個線程內可以存在多個 ThreadLocal 對象,所以其實是 ThreadLocal 內部維護了一個 Map ,這個 Map 不是直接使用的 HashMap ,而是 ThreadLocal 實現的一個叫做 ThreadLocalMap 的靜態內部類。最終的變量是放在了當前線程的 ThreadLocalMap 中,並不是存在 ThreadLocal 上,ThreadLocal 可以理解爲只是ThreadLocalMap的封裝,傳遞了變量值。

實際上 ThreadLocalMap 中使用的 key 爲 ThreadLocal 的弱引用,弱引用的特點是,如果這個對象只存在弱引用,那麼在下一次垃圾回收的時候必然會被清理掉。

所以如果 ThreadLocal 沒有被外部強引用的情況下,在垃圾回收的時候會被清理掉的,這樣一來 ThreadLocalMap中使用這個 ThreadLocal 的 key 也會被清理掉。但是,value 是強引用,不會被清理,這樣一來就會出現 key 爲 null 的 value。

ThreadLocalMap實現中已經考慮了這種情況,在調用 set()、get()、remove() 方法的時候,會清理掉 key 爲 null 的記錄。如果說會出現內存泄漏,那只有在出現了 key 爲 null 的記錄後,沒有手動調用 remove() 方法,並且之後也不再調用 get()、set()、remove() 方法的情況下。

  1. 泛型擦除是什麼意思

意思也就是說,實際上編譯器是不識別你的泛型類型的,所以你在插入的時候,實際上是有一個強轉的過程,全部都強轉成Object對象了,然後再強轉回來,就是整個的插入過程,所以你也可以從某種程度上去插入不同泛型類型的對象。

泛型擦除會帶來幾個問題:
(1)強制類型轉換
如果用反射的方式去插入數據,就會報錯,比如String也可以插一個Integer進去。
(2)引用傳遞

List<String> list = new ArrayList<Object>();//會報錯,因爲一般都是子類給父類傳值
List<Object> list2 = new ArrayList<String>();//不會報錯,因爲不會改變泛型轉型本身
  1. http1.1和http1.0區別

①1.0用keep-alive去告知服務器建立一個長連接,1.1默認支持長連接
②1.0每次發送都是直接header+body,1.1連接起來先用header試探是否連接ok,然後直接發送body,節省帶寬
③1.0是沒有host域的,1.1才支持,也就是說web server上的多個虛擬站點可以共享同一個ip和端口

  1. 什麼情況下被標記爲垃圾,但是不會被回收

在可達性分析中,我們會多不可達的對象進行標記,但是被標記了之後不代表會立刻進行垃圾回收,僅僅是一個等待的狀態。真正去決定回收的是finalize()方法,當對象沒有覆蓋這個方法,或者虛擬機調用過這個方法(可以理解爲調用過所以沒必要再調用),那麼就意味着這個對象一定要被回收了。

但是如果在這兩種情況以外,就以爲着有必要調用finalize()方法,這時候,會把對象放進一個F-Queue隊列中,然後用一個低優先級的Finalizer方法去執行這個方法。但是不會讓這個方法去執行完,因爲如果是死循環這種有可能會導致阻塞整個F-Queue。

換句話說,Finalize是決定對象要回收和不回收最本質的東西。

  1. 什麼是垂直分表,水平分表

水平分表:比如說,我們有100億數據,但是我們如果要做一個全量查詢,那麼速度就會很慢,所以我們可以分成若干張表,將所有的數據平攤開。
垂直分表:這種情況一般都是表裏面的某個字段很大,所以我們就需要進行垂直分表,因爲如果表的字段很大,那麼網絡IO就會很影響速度,然後我們就可以垂直分表,但是分出去的這一列,要保持一對一的關係,能夠和原來的表對應上。

  1. 如何確認索引是否生效

explain可以進行快速查詢。
explain+sql語句

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章