線程池核心參數
7 個參數。
coreSize
maxSize
阻塞隊列
時間
時間
線程工廠
拒絕策略
核心參數的話,有 coreSize、阻塞隊列、拒絕策略。
JVM 組成
內存上劃分:
線程私有:Java 虛擬機棧,本地方法棧、Tlab、程序計數器
共享:堆,方法區,直接內存
增加 堆、棧 空間命令?
指定堆的最小內存-Xms,如-Xms2G</font
指定堆的最大內存-Xmx,如-Xmx5G
指定棧的內存大小-Xss ,如-Xss256k
MyBatis $、# 區別?
$ (字符串替換),直接替換 SQL 中的參數。
(占位符),預處理 SQL 中的參數。 自動為參數 加上 單引號,防止 SQL 注入。
使用 # 如何方式 SQL 注入?
使用 # 時,MyBatis 會自動為參數添加單引號, 并 防止 SQL 注入攻擊。
SELECT * FROM users WHERE id = #{userId}
,當傳入參數值為 1 OR 1=1
時:
- 使用 # 時,結果就是 SELECT * FROM users WHERE id = ‘1 OR 1 = 1’
- 使用 $ 時,結果就是 SELECT * FROM users WHERE id = 1 OR 1 = 1
MySQL 索引? B+ 樹原理?
MySQL 索引有: B+ 樹,Hash 索引,倒排索引。
Hash 索引是 Memory 中的索引,Innodb 默認會有自適應的 Hash 索引。
B+ 樹特點:葉子節點,存放具體的數據。 非葉子節點,存放 索引。
由于 非葉子節點 只存放索引,所以 B+ 樹最多 3 ~ 4 層。
查找時,二分查找到是哪個頁,再在頁上進行二分查找,找到是哪個槽。
定位到槽之后,遍歷這個槽。
B+ 樹 為什么比 B 樹高效?
B+ 樹 非葉子節點只存放 索引,一個節點存放很多索引,所以 B+ 樹的層高是比較少的。
B 樹 非葉子節點 存放 索引 + 數據,一個節點存放的索引少,層數高。
層數少自然就高效了。