時序數據庫是用於存放時序數據的數據庫,而時序數據指基於時間的一系列數據,能夠揭示數據的趨勢性和規律性,對於大數據分析有重要的意義mysql
時序數據庫支持快速寫入、持久化,以及多維度的聚合查詢等,相比傳統的數據庫,時序數據庫記錄了全部的歷史數據,在查詢上也會帶上時間做爲過濾條件redis
SPATIAL索引
的表的隔離級別Parallel Scavenge + Serial Oldsql
i++
的JVM彙編指令[2]是iload => iinc => istore
,執行順序爲:數據庫
++i
的JVM彙編指令是iinc => iload => istore
,執行順序爲:數組
即i++
會先把i的值加載到操做數棧,因此語句中使用的是自增前的值,而++i
會先對i自增後在加載到棧頂,因此使用的是自增後的值安全
@Version註解是用於檢測併發修改操做的,當發生這種狀況時會拋出一個事務異常數據結構
@Version是基於樂觀鎖原理(版本號)保證字段的併發修改安全性,若是樂觀鎖更新失敗會拋出ObjectOptimisticLockingFailureException
異常多線程
在ThreadPoolExecutor中,其類變量ctl
的高三位表明線程池狀態:併發
terminated
方法來終結線程池terminated
方法結束後線程池終結狀態的轉換經過如下方式:性能
將一個對象的內容按如下格式存儲爲二進制文件:
建造者模式是將多個簡單的對象一步步構建成一個複雜的對象,將複雜對象的構建和表示相分離,使得一樣的構建過程能夠建立不一樣的表示
經過建造者模式,能夠統一流程化的裝配過程,相比於工廠模式,建造者模式更關注於零件裝配的順序
當須要建立複雜對象時,且內部變化不復雜時,可使用建造者模式,更加精細地控制對象建造過程,同時將對象自己與對象的建立過程解耦,讓客戶端不須要知道內部組成的細節
鎖膨脹
通常地,咱們理解的synchronized屬於重量級鎖,在其下JDK提供了兩種更輕量級的鎖,分別是偏向鎖和輕量級鎖:
Lock Record
的空間,用於存儲鎖對象的Mark Word
的拷貝,而後嘗試使用CAS操做將對象的Mark Word
指向Lock Record
,若是更新成功,則線程獲取同步鎖,並將鎖標誌位改成「00」鎖膨脹指的是,一開始使用偏向鎖來進行同步,若是有其餘線程進入同步塊,則鎖膨脹爲輕量級鎖,在輕量級鎖的狀況下,若是CAS更新失敗,則鎖膨脹爲重量級鎖
偏向鎖保證了單線程的執行效率,輕量級鎖保證了多線程可是幾乎沒有競爭的狀況下的效率
鎖粗化
將屢次鏈接在一次的加鎖和解鎖操做合併爲一次,擴展爲一個更大的鎖
鎖消除
對於一些不可能存在共享數據競爭的鎖[4]進行消除
Innodb引擎會監控對錶上索引的查找[5],若是觀察到創建hash索引會帶來性能的提高,就會創建hash索引,稱爲自適應哈希
自適應哈希是經過緩衝池的B+樹構造而來,因此創建的速度很快,並且不須要爲整張表創建索引
經過SHOW ENGINE INNODB STATUS
能夠查看索引的使用狀況
~ and 0 <> (select count(*) from _table)
~ and [num] < (select count(*) from _table)
~ and 1=(select count(*) from _table where len(_name) > 0)
~ and 1=0 or [condition]
若是一個索引包含全部須要查詢的字段的值,搜索時只需掃描索引,而無需全表掃描,則稱爲覆蓋索引
在explain的extra列會顯示using index
,而不是using where