原创 spring AOP-動態代理實現

AOP AOP:面向切面的編程。 OOP編程是面向對象的編程方法,各個對象之間進行信息交互,實現業務邏輯,是橫向的實現方法,而AOP是OOP方法的補充,是一種縱向邏輯的處理。如:當業務邏輯已經基本編寫完成,但是客戶提出一個新需求,

原创 AVL自平衡二叉樹

參考:https://blog.csdn.net/qq_25343557/article/details/89110319 二叉樹 二叉樹查找效率是很高,如果數據值是一些有序數量,可能就會變成左子樹或者右子樹很長,導致查找效率和線

原创 stack演示

棧 類似於往手槍裏壓入子彈,先進後出。 數組實現 package com.example.data; /** * *@ClassName stack * *@Author yyc * *@Date 2020/6/15 13

原创 隊列演示

隊列 隊列是先進先出,與堆棧不一樣 數組實現 數組實現主要採用雙指針方式 package com.example.data; /** * *@ClassName QueueList * *@Author yyc * *@D

原创 迭代實現反轉字符串

反轉字符串 反轉字符串可以通過reverse來實現,也可以通過迭代方法 實現 package com.example.data; /** * *@ClassName reverse * *@Author yyc * *@D

原创 算法-快速排序演示

快速排序 快速排序是對冒泡排序的一種改良。 排序原理: 1、首先設定一個分界值,通過該分界值將數組分成左右兩部分 2、將大於或等於分界值的數據放到數組右邊,小於分界值的數據放到數組的左邊。此時左邊部分中各元素都小於或等於分界值,而

原创 算法-歸併排序演示

歸併排序 排序原理: 1、儘可能的一組數據拆分成兩個元素相等的子組,並對每一個子組繼續拆分,直到拆分後的每個子組的元素個數是1爲止。 2、將相鄰的兩個子組進行合併成一個有序的大組; 3、不斷的重複步驟2,直到最終只有一個組爲止。

原创 算法-插入排序演示

插入排序 排序原理: 1、把所有元素分爲兩組,已經排序的和未排序的 2、找到未排序的組中的第一個元素,向已經排序的組中進行插入 3、倒敘遍歷已經排序的元素,依次和待插入的元素進行比較,查找到一個元素小於等於待插入元素,那麼就把待插

原创 算法-選擇排序演示

選擇排序 排序原理: 1、每一次遍歷的過程中,都假定第一個索引出的元素是最小值,和其他索引處的值依次進行比較。如果當前索引處的值大於其他某個索引的值,則假定其他某個索引處的值爲最小值,最後可以找到最小值所在的索引。 2、交換第一個

原创 算法-希爾排序演示

希爾排序 希爾排序是針對插入排序的改良版。 排序原理: 1、選定一個增長量h,按照增長量h作爲數據分組的依據,對數據進行分組 2、對分好組的每一組數據完成插入排序 3、減少增長量,最小減爲1,重複第二步操作 源碼 /// <su

原创 數據結構與算法-算法時間複雜度

算法的時間複雜度分析 我們可以通過在代碼裏先獲取執行前時間,再獲取執行後時間,根據時間差來判斷算法的執行時間,並來比較算法的優劣。 這樣分析有幾個缺點: 執行時間嚴重依賴硬件環境,內存大、CPU好的機器執行就快 換一個算法就得重

原创 oracle事務一致性:原子性

原子性 事務的動作要麼一起成功,要麼都不成功,這是事務的原子性。 原子性包括: 語句級原子性 過程級原子性 事務級原子性 DDL與原子性 語句級原子性 如果某條語句(如insert、update)執行成功與否會自動控制事務。

原创 算法-冒泡排序演示

冒泡排序 排序原理: 1、比較相鄰的元素。如果前一個元素比後一個元素大,就交換這兩個元素的位置 2、對每一對相鄰元素做同樣的工作,從開始第一對元素到結尾的最後一對元素。最終最後位置的元素就是最大值。 源碼 public class

原创 3 springboot+security增加圖形驗證碼

增加圖形驗證碼 本文依據學習編碼而來 增加圖形類ImageCode public class ImageCode { private BufferedImage image; private String co

原创 4 springboot security+記住我功能

在springsecurity增加記住我功能,實現當用戶勾選了記住我並登陸成功後能夠不用登陸直接可以再次登陸。 token 持久化 需要依賴數據庫信息 pom中增加數據庫依賴 <dependency> <