從前有個太監(jiān), 下面沒有了
作者說省略get和set主要是為了節(jié)省篇幅甲抖,讓文章看起來更簡短解藻。因為這種大家一看都懂的,寫省略get和set已經(jīng)算是一種潛規(guī)則了眉尸,很多文章都是這么寫,你見多了就知道了挺身。
springboot整合shiro(完整版)文末加了源碼地址僻孝,報錯的朋友可以去下載---更新于2020/06/15 應(yīng)廣大網(wǎng)友要求本次pom文件代碼貼全了,springboot版本用了目前最新的2.3.4.RELEAS...
B-樹和B+樹最重要的一個區(qū)別就是B+樹只有葉節(jié)點存放數(shù)據(jù)虚缎,其余節(jié)點用來索引撵彻,而B-樹是每個索引節(jié)點都會有Data域。這就決定了B+樹更適合用來存儲外部數(shù)據(jù)实牡,也就是所謂的磁盤數(shù)據(jù)陌僵。從Mysql(Inoodb)的角度來看,B+樹是用來充當(dāng)索引的创坞,一般來說索引非常大碗短,尤其是關(guān)系性數(shù)據(jù)庫這種數(shù)據(jù)量大的索引能達(dá)到億級別,所以為了減少內(nèi)存的占用题涨,索引也會被存儲在磁盤上偎谁。那么Mysql如何衡量查詢效率呢?磁盤IO次數(shù)纲堵,B-樹(B類樹)的特定就是每層節(jié)點數(shù)目非常多巡雨,層數(shù)很少,目的就是為了就少磁盤IO次數(shù)席函,當(dāng)查詢數(shù)據(jù)的時候铐望,最好的情況就是很快找到目標(biāo)索引,然后讀取數(shù)據(jù),使用B+樹就能很好的完成這個目的正蛙,但是B-樹的每個節(jié)點都有data域(指針)炕舵,這無疑增大了節(jié)點大小,說白了增加了磁盤IO次數(shù)(磁盤IO一次讀出的數(shù)據(jù)量大小是固定的跟畅,單個數(shù)據(jù)變大咽筋,每次讀出的就少,IO次數(shù)增多徊件,一次IO多耗時凹楣ァ!)虱痕,而B+樹除了葉子節(jié)點其它節(jié)點并不存儲數(shù)據(jù)睹耐,節(jié)點小,磁盤IO次數(shù)就少部翘。這是優(yōu)點之一硝训。另一個優(yōu)點是什么,B+樹所有的Data域在葉子節(jié)點新思,一般來說都會進(jìn)行一個優(yōu)化窖梁,就是將所有的葉子節(jié)點用指針串起來。這樣遍歷葉子節(jié)點就能獲得全部數(shù)據(jù)夹囚,這樣就能進(jìn)行區(qū)間訪問啦纵刘。至于MongoDB為什么使用B-樹而不是B+樹,可以從它的設(shè)計角度來考慮荸哟,它并不是傳統(tǒng)的關(guān)系性數(shù)據(jù)庫假哎,而是以Json格式作為存儲的nosql,目的就是高性能鞍历,高可用舵抹,易擴(kuò)展。首先它擺脫了關(guān)系模型劣砍,上面所述的優(yōu)點2需求就沒那么強(qiáng)烈了惧蛹,其次Mysql由于使用B+樹,數(shù)據(jù)都在葉節(jié)點上秆剪,每次查詢都需要訪問到葉節(jié)點赊淑,而MongoDB使用B-樹,所有節(jié)點都有Data域仅讽,只要找到指定索引就可以進(jìn)行訪問,無疑單次查詢平均快于Mysql(但側(cè)面來看Mysql至少平均查詢耗時差不多)钾挟〗嗔椋總體來說,Mysql選用B+樹和MongoDB選用B-樹還是以自己的需求來選擇的。( 摘抄來的徽千,做個筆記 -_- )
B-/B+樹看 MySQL索引結(jié)構(gòu)B-樹 B-樹,這里的 B 表示 balance( 平衡的意思),B-樹是一種多路自平衡的搜索樹苫费。它類似普通的平衡二叉樹,不同的一點是B-樹允許每個節(jié)點有更多的子節(jié)點双抽。 下圖...