原创 插入排序 【InsertionSort】

插入排序 插入排序的工作方式像排序一手撲克牌。 假設左手的牌是排序好的,桌面上的是未知的牌 1. 開始時,我們的左手爲空並且桌子上的牌面向下。 2. 然後,我們每次從桌子上拿走一張牌並將它插入左手正確的位置。 爲了找到插入的正

原创 選擇排序 【SelectionSort】

選擇排序 假設初始的數組是[5,4,7,2] 以從小到大排序爲例,我們可以將數組分爲兩個區域,一個是無序區,一個是有序區,在一開始所有的數據都在無序區。 進行第一輪排序,對無序區的數組[5,4,7,2]進行遍歷,記錄最小值2,然

原创 【Java編程的邏輯】併發基礎知識

線程的基本概念 線程表示一條單獨的執行流,它有自己的程序執行計數器,有自己的棧。 在Java中創建線程有兩種方式:一種是繼承Thread,另外一種是實現Runnable接口 public class HelloThread

原创 【Java編程的思想】理解synchronized

用法和基本原理 synchronized可以用於修飾類的實例方法、靜態方法和代碼塊 實例方法 在介紹併發基礎知識的時候,有一部分是關於競態條件的,當多個線程訪問和操作同一個對象時,由於語句不是原子操作,所以得到了不正確的結果。

原创 冒泡排序【BubbleSort】

冒泡排序 假設初始的數組是[5,4,7,2] 以從小到大排序爲例: 將第0個元素與第一個元素進行比較, 5 > 4, 所以交換位置, 此時[4,5,7,2] 將第1個元素與第二個元素進行比較, 5 < 7, 所以保持,此時[

原创 SpringBoot + SpringSecurity 控制授權

授權簡介 一般的人會認爲,不同的角色登錄進同一個系統,根據角色權限的不同,看到的菜單不同就是控制授權。其實並不是的,菜單的是否顯示只是前端交互上的一個設計而已,真正需要授權的地方的接口的訪問。 普通的系統通常會有兩個端,一個是給

原创 【Java編程的邏輯】Map和Set

HashMap Map有鍵和值的概念。一個鍵映射到一個值,Map按照鍵存儲和訪問值,鍵不能重複。 HashMap實現了Map接口。 基本原理 HashMap的基本實現原理:內部有一個哈希表,即數組table,每個元素table[

原创 歸併排序【MergeSort】

歸併排序 歸併排序(MERGE-SORT)是利用歸併的思想實現的排序方法,該算法採用經典的分治(divide-and-conquer)策略(分治法將問題分(divide)成一些小的問題然後遞歸求解,而治(conquer)的階段則將

原创 SpringBoot + SpringSecurity Session管理

Session超時管理 在SpringBoot中,可以直接在配置文件中對Session超時時間進行設置 # 默認爲30分鐘,這裏的單位是秒 server.session.timeout = 10 * 60 SpringBoot中

原创 【Java編程的邏輯】 泛型 & 參數限定 & 通配符

類型參數的限定 無論是泛型類、泛型方法還是泛型接口,關於類型參數,我們都知之甚少,只能把它當作Object,但Java支持限定這個參數的一個上界,也就是說:參數必須爲給定的上界類型或其子類型,這個限定是通過extends關鍵字來表

原创 【Java編程的邏輯】列表和隊列

ArrayList ArrayList中有兩個方法可以返回數據 public Object[] toArray(); public <T> T[] toArray(T[] a); ArrayList中有一個靜態方法asList可以

原创 【Java編程的邏輯】堆與優先級隊列&PriorityQueue

完全二叉樹 & 滿二叉樹 & 堆 基本概念 滿二叉樹是指除了最後一層外,每個節點都有兩個孩子,而最後一層都是葉子節點,都沒有孩子。 滿二叉樹一定是完全二叉樹,但完全二叉樹不要求最後一層是滿的,但如果不滿,則要求所有節點必須集

原创 SpringBoot + SpringSecurity 短信驗證碼登錄功能

實現原理 在之前的文章中,我們介紹了普通的帳號密碼登錄的方式: SpringBoot + Spring Security 基本使用及個性化登錄配置。 但是現在還有一種常見的方式,就是直接通過手機短信驗證碼登錄,這裏就需要自己來做一

原创 SpringBoot + SpringSecurity 實現圖形驗證碼功能

生成圖形驗證碼 根據隨機數生成圖片 將隨機數存到Session中 將生成的圖片寫到接口的響應中 生成圖形驗證碼的過程比較簡單,和SpringSecurity也沒有什麼關係。所以就直接貼出代碼了 根據隨機數生成圖片 /**

原创 SpringBoot + SpringSecurity “記住我”功能實現及相關源碼分析

記住我功能的基本原理 之前有講過,當用戶發起認證請求,會通過UsernamePasswordAuthenticationFilter,在認證成功之後,可以調用SpringSecurity提供的RememberMeService,