原创 不知道要學什麼?不知道怎麼學?或許你應該看看這篇

前言 隨着博客數量的越來越多,考慮到以後會逐漸成爲比較完整的知識體系。爲了給閱讀者提供更好的閱讀體驗,所以博主決定寫一篇博客作爲博客的索引,以方便閱讀者更快的找到自己需要的內容。 同時,零散的知識點毫無意義,博主有意幫助部分閱讀者

原创 面試必問的AQS(AbstractQueuedSynchronizer),一文全搞定

前言 AQS是AbstractQueuedSynchronizer類的簡稱,雖然我們不會直接使用這個類,但是這個類是Java很多併發工具的底層實現。本文主要從源碼的角度,全方位的解析AQS類。 底層實現 首先看下哪些併發工具類是使

原创 零散的MySQL基礎總是記不住?看這一篇如何拯救你

前言 在日常開發中,一些不常用且又比較基礎的知識,過了一段時間之後,總是容易忘記或者變得有點模棱兩可。本篇主要記錄一些關於MySQL數據庫比較基礎的知識,以便日後快速查看。 SQL命令 SQL命令分可以分爲四組:DDL、DML、D

原创 Redis:數據類型

前言 Redis作爲應用最廣泛的K-V數據庫,包含了豐富的數據類型。這裏所說的數據類型,其實是指V的數據類型。 Redis的數據類型大致分爲以下幾類:String、Hash、List、Set、Sorted Set、HyperLog

原创 強人鎖男,MySQL到底有多少鎖?

前言 讀鎖寫鎖意向鎖,表鎖行鎖頁面鎖。 在學習Java併發編程的時候,肯定少不了學習鎖。最常見的就是synchronized,鎖的概念不是很好理解,有的地方說是鎖住了一段代碼,有的地方說是鎖住了一個對象。弄得初學者都是丈二和尚——

原创 SQL語句筆試題

前言 手寫SQL語句是筆試、面試中常見的題型,所以本篇主要收集一些常見的SQL筆試題。 實驗環境 MySQL 5.6 (Windows版) 第一篇 題目來源:某網站公開課(避免廣告嫌疑,不具體指出) 答案來源:博主自己書寫,僅

原创 MySQL優化:join

前言 寫過SQL的同學對join關鍵字都不會陌生,join關鍵字用來對多張表進行連接查詢。 MySQL實現連接查詢,靠的是嵌套循環算法(nested-loop algorithm)或者其變種形式。 嵌套循環算法總共分爲三種:簡單嵌

原创 MySQL優化:數據類型

前言 MySQL(5.6)的數據類型非常多,大致可以分爲四大類:numeric types(數值類型)、date and time types(日期和時間類型)、string (character and byte) types(

原创 手動搭建MySQL高可用架構MHA,小白也能輕鬆搭建

前言 MySQL作爲數據存儲工具,可以說是整個架構體系中最重要的一環都不爲過。無論是怎樣的架構,怎樣的設計,都不能離開關係型數據庫。如果數據庫故障了,整個系統肯定是不可用的,所以MySQL的高可用非常重要。本篇主要從理論上講解常見

原创 Redis持久化RDB和AOF,看這一篇就夠了

前言 我們都知道,redis是基於內存的K-V數據庫。由於內存是斷電易失的,所以redis提供了相應的持久化機制。 本篇主要講解redis提供的RDB和AOF兩種持久化方式,以及他們的實現原理。 RDB RDB(Redis Dat

原创 你寫的單例模式,能防止反序列化和反射嗎?

前言 說起單例模式,相信大家都不會陌生。因爲相比其他設計模式,實現一個單例模式是比較簡單的。單例模式的意思就是一個類只有一個實例。 獲取類的實例,我們往往採用new關鍵字,但是要保證一個類只能有一個實例,所以不能讓使用這個類的開發

原创 擺攤也要抽時間學的MySQL主從複製

前言 聽說大家現在都在積極響應國家號召,沒事的時候會推着三輪車去街角、天橋擺個地攤。博主剛剛收攤回來,順手寫了篇MySQL。 MySQL相信大家都很熟悉了,單節點MySQL出現性能瓶頸的時候,大家首先想到的是優化SQL。但是單節點

原创 MySQL優化:參數

前言 MySQL數據庫包含的系統變量有好幾百個,想要全部熟記於心,大概沒這個必要,只有記住一些常用的即可。本篇主要把一些常見的系統變量進行分類處理,分類有助於記憶。 系統變量 變量的作用範圍可以分爲global級別和session

原创 ThreadPoolExecutor線程池實現原理與源碼解析

前言 或許每個Java工程師都被問過這樣一個問題 Java中開啓一個新的線程有幾種方法? 繼承Thread類和實現Runnable接口。但是除了寫Demo,幾乎沒人會在生產環境上這樣用。具體原因如下: 線程頻繁的被創建、銷燬

原创 Redis:I/O模型

前言 前一篇概覽 Redis:概覽 中提到Redis使用了IO多路複用模型,所以單線程的Redis也很快。所以本篇主要講解Linux相關的I/O模型。 關於I/O我們可學了不少,java.io包下面的類全是關於I/O的操作。I/O