原创 【數據結構與算法】06. java判斷字符串是否合法(棧)

一個月前,和小夥伴每週來一道算法題,一直沒有總結,今天看數據結構中的棧和隊列,看到了一個非常有意思的總結,什麼是棧,什麼是隊列呢?一個經典的評論且有味的總結是這麼說的,“喫飯喫多了想吐,就是棧。喫飯喫多了想拉,就是隊列。” 笑死

原创 【Java 併發編程】 05 一個能和麪試官扯很久的 volatile 關鍵字

上一篇我們在Java內存模型中(JMM)中 Happens-before 中講到了volatile原則,對於volatile變量的寫操作會早於對其的讀操作。 volatile 意思就是可見的,常用來修飾某個共享變量,意思是當共享變

原创 【MySQL 實戰】基礎篇:Win10 安裝 MySQL 8.0.16

上次安裝就出現了一些問題,沒及時總結,同樣的問題,又犯錯了,在這裏總結一下。 1. 下載:可在鏈接最後修改數據庫版本。 https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.

原创 【SQL 必知必會】性能篇 05. 深入淺出索引(二)如何通過索引讓SQL 查詢效率最大化?

上一篇 深入淺出索引(一),我們講到了索引的基本概念,通過索引可以提高我們的查詢效率,同時學習了索引的常用模型,索引的種類,在數據量少的時候,以及數據量重複度高的情況下不適合使用索引。今天我們學習一下通過索引如何讓查詢效率最大化

原创 【MongoDB 實戰】 01 MongoDB 入門篇

概覽圖 MongoDB vs 關係型數據庫 OLTP 和 OLAP 數據庫的垂直擴展和水平擴展 數據表的垂直拆分和水平拆分 現在你用自己的語言說一下,mongoDB 有哪些優勢,適用哪些場景麼,歡迎評論回覆!

原创 【Redis】11. pipeline 流水線

上一節我們 redis 執行命令的生命週期大概爲: 發送命令 (客戶端發送) 排隊 (服務端排隊) 執行命令 (服務端執行) 返回結果 (服務端返回) 我們知道服務端每秒可執行上萬條命令,執行一條命命令是微妙級

原创 【JVM】01 內存模型(運行時數據區)

JVM(java virtual machine),一種可以運行 java 字節碼的虛擬機。java 語言一次編譯,到處運行,間接的說明了,只要編譯的文件和 jvm 對加載編譯的文件格式一致,任何語言都可以由 JVM 運行。 JV

原创 【Redis】13. Redis 爲什麼選擇單線程,而 redis 4.0 之後部分命令開始使用多線程。

Redis 爲什麼使用單線程? 官方解釋: 因爲 Redis 是基於內存的操作,CPU 不是 Redis 的瓶頸,Redis 的瓶頸最有可能是 機器內存的大小 或者 網絡帶寬。既然單線程容易實現,而且 CPU 不會成爲瓶頸,那就順

原创 【Redis】14. 跳躍表(SkipList) — 爲什麼 Redis 使用跳躍表來實現有序集合(Sorted Set)而不是紅黑樹或者平衡二叉樹呢?

Redis 的有序集合(Sorted Set)就是用跳錶來實現的。跳躍表是一種隨機化的數據結構。我們可以把他看做 Java 中 SortedSet 和HashMap 的結合體,set 保證了value 值就有唯一性,且可以保證每一

原创 【Redis】10. 慢查詢

redis 運行生命週期 發送命令 排隊 (單線程,所以要排隊) 執行命令 (不同的命令,執行時間不同。有的執行時間長,影響整體性能) 返回結果 慢查詢 慢查詢發生在執行命令階段(第三階段),當發現某redis命令執行時間

原创 【Redis】15. 布隆過濾器(Bloom Filter) — 億級別的過濾器

問題 在 緩存穿透 一文中我們講到了可以使用布隆過濾器可以解決緩存穿透問題。例如查詢一個用戶ID,它是如何快速查詢,它又不是數組,又是怎麼提高隨機訪問特性的查詢效率的呢? 我們平時刷短視頻(抖音,快手等)是如何做到刷到的視頻是不

原创 【redis】12. 緩存和數據庫雙寫一致性問題

上一篇我們在 緩存雪崩,穿透,擊穿中講到了爲什麼使用緩存,以及使用緩存可能會遇到哪些問題?其中就有緩存和數據庫雙寫一致性問題。那什麼是緩存和數據庫雙寫一致性問題呢?是什麼導致了一致性的問題呢? 什麼是緩存和數據庫雙寫一致性問題?

原创 【Redis】8. 你瞭解緩存雪崩,緩存穿透,緩存擊穿麼?它們用共性麼?

爲什麼要用緩存? 什麼場景下不適合使用緩存 用緩存可能出現哪些問題? 如何解決這些問題? 爲什麼要用緩存? Web 應用對數據庫的訪問中,讀的操作此處要遠遠大於寫的操作次數,每一次讀都將是對磁盤的一次 I/O 操作,這是一個非

原创 【Redis】0. 關係型數據庫和非關係型數據庫入門篇

什麼是關係型數據庫 關係型數據庫是依據關係模型來創建的數據庫。所謂關係模型就是“一對一、一對多、多對多”等關係模型,關係模型就是指二維表格模型,因而一個關係型數據庫就是由二維表及其之間的聯繫組成的一個數據組織。 關係模型包括數據結

原创 【Redis】16. HyperLogLog — 億級別的基數統計

場景 老闆讓你統計一下網站的PV(瀏覽量,用戶訪問一次自增一次)和UV((獨立訪客,每個用戶每天只記錄一次)。 PV 可以很好解決,我們可以使用redis 計數器,當天日期爲key,每收到一個請求,INCRBY 就自增加一,最後結