原创 數據結構 |B+樹| 索引
1. B+樹 爲了加速數據庫中數據的查找速度,常用的處理思路是,對錶中數據創建索引。數據庫索引是如何實現的呢?底層使用的是什麼數據結構和算法呢? 數據庫查詢需求: 根據某個值查找數據,比如 select * from user wher
原创 數據結構-05 |散列表-②| 工業級水平的散列表
1. 散列碰撞攻擊 散列表的查詢效率並不能籠統地說成是 O(1)。它跟散列函數、裝載因子、散列衝突等都有關係。如果散列函數設計得不好,或者裝載因子過高,都可能導致散列衝突發生的概率升高,查詢效率下降。在極端情況下,有些惡意的攻擊者,還有
原创 算法02 | 哈希算法
2011 年 CSDN 的“脫庫”事件,當時,CSDN 網站被黑客攻擊,超過 600 萬用戶的註冊郵箱和密碼明文被泄露,如果你是 CSDN 的一名工程師,你會如何存儲用戶密碼這麼重要的數據?僅僅 MD5 加密一下存儲就夠了嗎? 要想搞清
原创 算法 09| 多模式匹配算法| AC自動機
BBS等文本內容網站,大都會有敏感詞過濾功能,用來過濾掉用戶輸入的一些淫穢、反動、謾罵等內容。 實際上,這些功能最基本的原理就是字符串匹配算法,也就是通過維護一個敏感詞的字典,當用戶輸入一段文字內容之後,通過字符串匹配算法,來查找
原创 算法 08| 字符串算法| BM| KMP
1. BF和 RK算法 2. BM(Boyer-Moore)算法 對於工業級的軟件開發來說,我們希望算法儘可能的高效,並且在極端情況下,性能也不要退化 的太嚴重。那麼,對於查找功能是重要功能的軟件來說,比如一些文本編輯器,它們的查找
原创 算法-00| Cache緩存淘汰算法
Cache緩存 ①.記憶 ②.錢包-儲物櫃 ③.代碼模塊 一個經典的鏈表應用場景,那就是 LRU 緩存淘汰算法。 緩存是一種提高數據讀取性能的技術,在硬件設計、軟件開發中都有着非常廣泛的應用,比如常見的 CPU 緩存、數據庫緩存、瀏
原创 算法 08| 字符串算法
1. 字符串概念 • Python: x = ‘abbc’ x = “abbc”• Java: String x = “abbc”; Python和Java中的string 都是不可變數據類型, immutable:http
原创 算法-07 | 動態規劃
1. 分治 + 回溯 + 遞歸 + 動態規劃 它的本質即將一個複雜的問題,分解成各種子問題,尋找它的重複性。動態規劃和分治、回溯、遞歸併沒有很大的本質區別,只是小細節上的不同。 遞歸 代碼模板 public void recur
原创 算法-04 | 貪心算法
1. Greedy 貪心算法是一種在每一步選擇中都採取在當前狀態下最好或最優(即最有利)的選擇,從而希望導致結果是全局最好或最優的算法。 2. 貪心算法與回溯和動態規劃 貪心算法與動態規劃的不同點: 貪心算法與動態規劃的不同在於它對每個
原创 算法-05 | 二分查找
1. 概述 二分查找(Binary Search)算法,也叫折半查找算法。 二分查找針對的是一個有序的數據集合,查找思想有點類似分治思想。每次都通過跟區間的中間元素對比,將待查找的區間縮小爲之前的一半,直到找到要查找的元素,或者區間被縮小爲
原创 數據結構-07| 堆
1. 堆概念 二叉堆的性能有很大的問題,現實中很大高級的堆用的是斐波拉契堆和加的堆。 https://www.cnblogs.com/skywang12345/p/3610187.html#a1 https://en.wikipedi
原创 數據結構-06| 字典樹| 並查集
字典樹Trie 1. 字典樹的數據結構2. 字典樹的核心思想3. 字典樹的基本性質 1. 樹Tree 按層次打印一顆二叉樹, 在樹中深度優先搜索:ABDH I EJ CFG 廣度優先搜索:A BC DEFG HIJ 2. 二叉搜
原创 數據結構-05| 布隆過濾器| 緩存機制
布隆過濾器 Bloom Filter 布隆過濾器和哈希表類似,HashTable + 拉鍊表存儲重複元素: 元素 ---哈希函數---> 映射到一個整數的下標位置index。比如Join Smith和Sandra Dee經過哈希函數都
原创 數據結構-04 | AVL樹| 紅黑樹
1. 樹Tree 2. 二叉樹 Binary Search 二叉樹遍歷 Pre-order/In-order/Post-order 1. 前序(Pre-order):根-左-右 2. 中序(In-order):左-根-
原创 算法-03 | 深度優先DFS| 廣度優先BFS
1. 搜索算法 在樹(圖/狀態集)中尋找特定節點 深度優先搜索算法和廣度優先搜索算法都是基於“圖”這種數據結構。 圖上的搜索算法就是,在圖中找出從一個頂點出發,到另一個頂點的路徑。圖上的搜索算法有深度優先、廣度優先搜索算法,和A*A∗、