原创 mysql數據庫總結

數據庫:     索引:底層結構就是B+樹         1.添加PRIMARY KEY(主鍵索引)    ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` )         2.

原创 15. 哈希算法(上):如何防止數據庫中的用戶信息被脫庫

1.如何防止數據庫中的用戶信息被脫庫? 2.你會如何存儲用戶密碼這麼重要的數據嗎?僅僅 MD5 加密一下存儲就夠了嗎? 3.在實際開發中,我們應該如何用哈希算法解決問題? 一、什麼是哈希算法? 1.定義 將任意長度的二進制值串映射成固定長

原创 10. 二分查找(上) 如何用最省內存的方式實現快速查找功能

一、什麼是二分查找? 二分查找針對的是一個有序的數據集合,每次通過跟區間中間的元素對比,將待查找的區間縮小爲之前的一半,直到找到要查找的元素,或者區間縮小爲0。 二、時間複雜度分析? 1.時間複雜度 假設數據大小是n,每次查找後數據都會縮

原创 14. 散列表(下):爲什麼散列表和鏈表經常會一起使用

1.爲什麼散列表和鏈表經常放在一起使用? 2.散列表和鏈表如何組合起來使用? 一、爲什麼散列表和鏈表經常放在一起使用? 1.散列表的優點:支持高效的數據插入、刪除和查找操作 2.散列表的缺點:不支持快速順序遍歷散列表中的數據 3.如何按照

原创 BFS和DFS

一、前言 我們首次接觸 BFS 和 DFS 時,應該是在數據結構課上講的 “圖的遍歷”。還有就是刷題的時候,遍歷二叉樹我們會經常用到BFS和DFS。 二、區別 廣度優先搜索算法(Breadth-First-Search,縮寫爲 BFS),

原创 18. 二叉樹(下):二叉查找樹與散列表的優缺點

二叉查找樹(Binary Search Tree) 二叉查找樹是二叉樹中最常用的一種類型,也叫二叉搜索樹。顧名思義,二叉查找樹是爲了實現快速查找而生的。不過,它不僅僅支持快速查找一個數據,還支持快速插入、刪除一個數據。它是怎麼做到這些的呢

原创 16. 哈希算法(下):哈希算法在分佈式系統中的應用

1.負載均衡 1.1.需求 如何實現一個會話粘滯(session sticky)的負載均衡算法?也就是說,在一次會話中的所有請求都路由到同一個服務器上。 1.2.解決方案 通過哈希算法對客戶端IP或會話ID計算哈希值,將取得的哈希值與服

原创 快排(java)

原文鏈接:https://blog.csdn.net/shujuelin/article/details/82423852#commentsedit 高快省的排序算法 有沒有既不浪費空間又可以快

原创 git常用命令

創建一個倉庫 mkdir nnn //創建倉庫 git init //初始化倉庫(要在目錄內) touch readme.txt //創建文件 cat readme.txt   查看文件 git status //查看倉庫狀態 git a

原创 HashMap的底層數據結構和源碼分析

HashMap 的數據結構 HashMap實際上是一個“鏈表散列”的數據結構,即數組和鏈表的結合體。數組是用來確定桶的位置,利用元素的key的hash值對數組長度取模得到。鏈表是用來解決hash衝突問題,當出現hash值一樣的情形,就在數

原创 8. 排序(上):爲什麼插入排序比冒泡排序更受歡迎

一、幾種經典排序算法及其時間複雜度級別 二、如何分析一個排序算法? 1.學習排序算法的思路?明確原理、掌握實現以及分析性能。 2.如何分析排序算法性能?從執行效率、內存消耗以及穩定性3個方面分析排序算法的性能。 3.執行效率:從以下3個方

原创 6. 隊列:隊列在線程池等有限資源池中的應用

一、什麼是隊列? 1.先進者先出,這就是典型的“隊列”結構。 2.支持兩個操作:入隊enqueue(),放一個數據到隊尾;出隊dequeue(),從隊頭取一個元素。 3.所以,和棧一樣,隊列也是一種操作受限的線性表。 二、如何實現隊列?

原创 7. 遞歸:如何用三行代碼找到“最終推薦人”

一、什麼是遞歸? 1.遞歸是一種非常高效、簡潔的編碼技巧,一種應用非常廣泛的算法,比如DFS深度優先搜索、前中後序二叉樹遍歷等都是使用遞歸。 2.方法或函數調用自身的方式稱爲遞歸調用,調用稱爲遞,返回稱爲歸。 3.基本上,所有的遞歸問題都

原创 5. 棧:如何實現瀏覽器的前進和後退功能

一、什麼是棧? 1.後進者先出,先進者後出,這就是典型的“棧”結構。 2.從棧的操作特性來看,是一種“操作受限”的線性表,只允許在端插入和刪除數據。 二、爲什麼需要棧? 1.棧是一種操作受限的數據結構,其操作特性用數組和鏈表均可實現。 2

原创 4. 鏈表(下):如何優雅的寫出鏈表代碼?6大學習技巧

一、理解指針或引用的含義 1.含義:將某個變量(對象)賦值給指針(引用),實際上就是就是將這個變量(對象)的地址賦值給指針(引用)。 2.示例: p—>next = q; 表示p節點的後繼指針存儲了q節點的內存地址。 p—>next =