原创 SpringBoot + Redis 分佈式鎖:模擬搶單(附實現源碼)

前言 前段時間面試時被頻繁問到一個Redis的問題就是如何通過Redis實現分佈式鎖,自己雖然平時使用Redis,但是並沒有去實現過這個問題,今天正好看到一篇公衆號文章,就通過代碼去實現該問題。 實現Redis的分佈式鎖,通過se

原创 《排序算法》系列 -淺顯易懂的認識---選擇排序

前言 通過這兩天學習各種排序算法,深刻的認識到了想出這些排序算法的真的好牛逼!被深深的折服,果真我是個菜雞!! 所以呢,對於前人的成果,自己只要好好學習就夠了,畢竟牛頓大佬說過,站在巨人的肩膀上!!我就當那個站在巨人的肩膀上的人

原创 SpringBoot集成Jwt實現用戶登錄

前言 最近正在搭建一個SpringBoot+Vue的一套後臺管理系統的模板,對於用戶登錄的功能使用了JWT來實現的,自己在學習SpringCloud微服務時使用的就是JWT,通過Cookie來傳遞token,實現用戶的登錄狀態。

原创 《隔離十四天》系列 -第十一天 -Java面試題大全

前言 今天又是朝氣蓬勃的一天,雖然還沒找到合適的工作,但是也不能喪失了對生活的信心,還是要勇敢的面對生活,比如我們說一句,奧裏給!!! 當然了每日膜拜大佬的節奏不能斷了,還是要在網上多跟各位大佬學習,學習技術,提高自己。 好了,

原创 《排序算法》系列 -淺顯易懂的認識---插入排序

前言 這兩天一直研究排序算法,今天看了計數排序,想想自己真是個蠢蛋,怎麼就是搞不懂如何實現的呢,雖然自己在學習過程中記錄了自己對於算法邏輯的理解以及思路,但是自己重新去整理思路的時候想不通一個地方到底是如何實現的,鬱悶了一下午。

原创 《排序算法》系列 -淺顯易懂的認識---冒泡排序

前言 作爲一個大學學過數據結構的學渣來說,整個四年除了直到一個冒泡排序(當然了也不理解,只是爲了應付面試而背的代碼),其它排序算法都不懂,於是乎在自己應對面試的時候隨便一個算法題自己就懵逼了,表情如下: 更慘的是自己去學習刷力扣

原创 二叉樹、平衡二叉樹、紅黑樹、B-Tree、B+Tree解析(下)

前言 昨天寫完了二叉樹、平衡二叉樹、紅黑樹的一部分,今天把剩餘的B-Tree、以及B+Tree整理出來。 1、B-Tree 1.1定義: B-tree(多路搜索樹,並不是二叉的)是一種常見的數據結構。使用B-tree結構可以顯

原创 Java8 ConcurrentHashMap詳解-從源碼分析

前言 前段時間自己一直在面試,很多面試官都會問到一個問題就是讓我介紹ConcurrentHashMap是如何實現多線程操作的,以及與HashTable有什麼區別?我自己雖然瞭解了一些這類的知識,但是也只是皮毛,沒有深入瞭解過其中

原创 《Java後端知識體系》系列之共享鎖 ReentrantReadWriteLock的原理

上次說了ReentrantLock這次說ReentrantReadWriteLock 解決線程安全問題使用ReentrantLock,但是ReentrantLock是獨佔鎖,同一時刻只有一個線程可以獲得鎖,而實際中會有寫多讀少

原创 《排序算法》系列 -淺顯易懂的認識---快速排序

前言 這幾天的學習排序算法,我想對我最大的改變就是對於思維的改變,改變了遇到問題就for循環,不行就再繼續套循環。。。。。 解決問題的思維不能死,可以另闢思維去想,當把一種排序算法的邏輯理清楚,會驚歎這種想法,原來可以這樣去解決問

原创 《Java後端知識體系》系列之自定義AQS同步器

AQS是抽象同步隊列,AQS中實現了各種鎖的邏輯,因此我們可以繼承AQS來實現自定義同步器。 自定義AQS需要重寫一系列函數,還需要定義原子變量state的含義。在自定義同步器中state爲0表示鎖沒有被線程持有,state爲1

原创 《Java後端知識體系》系列之AQS詳解

概覽: 在併發編程中不得不提到的就是AQS(AbstractQueueSynchronizer)抽象同步隊列,它是實現同步器的基礎組件,併發包中鎖的底層實現就是使用AQS來實現的。AQS的結構圖如下: 從該圖中可以看到AQ

原创 《Java後端知識體系》系列之獨佔鎖 Reentrant Lock 的原理

週末兩天跟女朋友出去high了一下,所以自己的知識整理也擱置了兩天,手動狗頭! ReentrantLock概覽 ReentrantLock是可重入的獨佔鎖,所以只能有一個線程獲得該鎖,,其它獲取該鎖的線程會被阻塞而被放入該鎖的

原创 《Java後端知識體系》系列之JUC併發包

今天是文章搬運工的陳湯姆! JUC java.util.concurrent (JUC)類庫中提供了 Condition 類來實現線程之間的協調,可以在 Condition 上調用 await() 方法使線程等待,其它線程

原创 《Java後端知識體系》系列之併發編程基礎(三)鎖的概述(悲觀鎖、樂觀鎖、公平鎖、非公平鎖、獨佔鎖、共享鎖、自旋鎖)

最近深究併發編程的文章,看一點總結一點,也不算總結,就是把自己覺得有用的抄下來,對幾個月後的面試希望有幫助!! 鎖的概述 悲觀鎖與樂觀鎖 悲觀鎖:悲觀鎖是數據對外界的修改保持保守的態度,認爲數據會被其它線程修改,所以每次