原创 老生常談的大數加法

大數加法 問題概述: 兩個極大的數進行加法求和 思路: 根據列豎式方式解決問題,一位一位的滿十進一 package algorithm; import java.util.Arrays; /** * 大數加法 */ pub

原创 動態規劃經典例題-國王的金礦問題

金礦問題 問題概述: 有一位國王擁有5座金礦,每座金礦的黃金儲量不同, 需要參與挖掘的工人人數也不同。例如有的金礦儲量是500kg黃金,需 要5個工人來挖掘;有的金礦儲量是200kg黃金,需要3個工人來挖 掘…… 如果參與挖礦的工

原创 使用棧完成隊列功能

小算法 問題概述: 使用棧完成隊列先進先出的功能 思路: 使用兩個棧,入棧使用A棧,出棧時將A棧中所有元素全部放入B棧中之後再從B棧中取元素就OK package algorithm; public class StackQue

原创 刪除k個數後得到儘可能小的數

小算法 問題概述: 刪除K位數字後,使剩餘數字最小 例:2634 刪除1位數後得到最小數爲234 刪除2位數後得到最小數爲23 … 思路: 利用貪心算法思想 獲取局部最優解,最後得到整體最優解 每刪除1位數就獲得當前的最小值,然後

原创 給定一個數尋找全排列的下一個數

小算法 尋找全排列的下一個數 問題概述: 給定一個數,要求出該數全排列後大於該數的最小的數 思路: 一個數最大爲所有數字逆序 一個數最小爲所有數字順序 利用這個規則,將整個數分爲逆序區和非逆序區,進行數據位置交換,最後將逆序區有序

原创 SpringMVC中Model與Session區別

SpringMVC中Model與Session區別 什麼是Session:Session:在計算機中,尤其是在網絡應用中,稱爲“會話”。它具體是指一個終端用戶與交互系統進行通信的時間間隔,通常指從註冊進入系統到註銷退出系統之間所經

原创 Java多線程入門(絕對詳細,多Demo幫助瞭解)

多線程入門 先大致瞭解下進程與線程 程序運行起來叫進程 進程包含若干線程(默認含有主線程、gc線程) 一、創建線程的三個方法: 繼承Thread類 package threadTest; /** * 創建線程方式一 *

原创 數據結構複習之圖的入門(深度優先搜索和廣度優先搜索遞歸實現)

數據結構之圖的入門 一、圖的定義及分類 定義:圖是有一組頂點和一組能夠將兩個頂點相連的邊組成的 特殊的圖: 自環:即一個頂點有一條連接自己的邊 平行邊:連接同一對頂點的邊 圖的分類: 按照連接兩個頂點的邊的不同,圖可以分爲兩種

原创 數據結構複習之排序算法複習(冒泡and插入)Java版

排序算法複習 一、冒泡排序 冒泡排序:重複遍歷要排序的數列,每次比較兩個元素,如果位置錯誤就將其交換。因爲像泡泡浮出水面,故而名曰冒泡排序。 步驟: 每次從數列底部選擇一個元素,與其上一個元素進行比較。 內層循環控制將一個元素排

原创 數據結構複習之排序算法複習(快排and希爾)Java版

五、快速排序 快速排序:通過一趟排序將要排序的數據分割成兩個獨立的部分,其中一部分比基準數據要小,另一部分比基準數據要大。整個切分過程遞歸執行,以此使整個數據變成有序序列 步驟: 設定一個分界值(一般爲數據的第一個元素) 設置左

原创 數據結構複習之LinkedList源碼分析

數據結構複習之LinkedList源碼分析 測試樣例代碼 package SourceTest; import java.util.LinkedList; public class LinkedListTest { p

原创 數據結構複習之紅黑樹B樹B+樹(HashMap底層紅黑樹,磁盤I/OB樹、數據庫索引B+樹)

五、紅黑樹 2-3查找樹能保證在插入元素之後,樹依然保持平衡狀態,它的最壞情況下所有子結點都是2-結點,樹的高度爲lgN,相比普通的二叉查找樹保證了最壞情況下的時間複雜度。紅黑樹是2-3樹思想的簡單實現 紅黑樹主要是對2-3樹進行

原创 Java併發線程安全與鎖優化(不可變 絕對線程安全 相對線程安全 線程兼容 線程對立 互斥同步 非阻塞同步 自旋鎖 自適應鎖 鎖消除 鎖粗化 輕量級鎖 偏向鎖 CAS synchronized)

線程安全與鎖優化 文章目錄線程安全與鎖優化一、線程安全概念不可變絕對線程安全相對線程安全線程兼容線程對立二、線程安全的實現方法互斥同步最基本互斥手段就是synchronized另一種手段JUC下的ReentrantLock阻塞同步

原创 數據結構複習之平衡樹2-3查找樹(中)

四、平衡樹 之前學習過二叉查找樹,它的效率高於單純的鏈表和數組, 但是在最壞的情況下,二叉查找樹的性能仍然糟糕。 例如:9 8 7 6 5 4 3 2 1 插入到樹中就會形成類似鏈表的結構 這樣,如果要查找1這個元素時間複雜度就

原创 設計模式學習(JAVA)-工廠模式學習

設計模式學習(JAVA)-工廠模式學習 簡單工廠模式 簡單工廠模式是由一個工廠對象決定創建出那一種產品類的實例。 簡單工廠模式:定義了一個創建對象的類,由這個類來封裝實例化對象的行爲 工廠方法模式 定義一個創建對象的抽象方法,由子