原创 劍指offer -合併兩個排序鏈表

題目描述: 輸入兩個單調遞增的鏈表,輸出兩個鏈表合成後的鏈表,當然我們需要合成後的鏈表滿足單調不減規則。 主要思想 : public static ListNode Merge(ListNode list1, ListNod

原创 Redis-簡單動態字符串(Simple Dynamic String )

Redis的設計與實現 <一> 簡單動態字符串(Simple Dynamic String ) 當Redis需要的不僅僅是一個字符串字面量,而是一個可以被修改的字符串值時,Redis就會使用SDS表示字符串值. 一. SDS的

原创 面試裝X之--單例模式深度探索(玩轉面試官)

之前詳細總寫過(單例模式)的己種寫法,今天對這幾種方法進行更深層次的總結 文章目錄單例模式(Singleton Pattern)單例模式重點總結1. 私有化構造器2. 保證線程安全和延遲加載3. 防止反射破壞單例4. 防止序列化

原创 面試裝X之--代理模式

文章目錄代理模式(Proxy pattern)靜態代理動態代理JDK實現的方式1.示例 : 專業的事交給專業的人去做,所以我們請了媒婆來findlove2. JDK實現代理詳細分析CJLIB實現的方式總結 代理模式(Proxy p

原创 二叉搜索樹的後序遍歷序列

二叉搜索樹的後序遍歷序列 題目描述 輸入一個整數數組,判斷該數組是不是某二叉搜索樹的後序遍歷的結果。如果是則輸出Yes,否則輸出No。 假設輸入的數組的任意兩個數字都互不相同。 解題思路 首先根據二叉樹後序遍歷的特點,左子樹都小

原创 面試裝X之--工廠模式

文章目錄工廠模式一.簡單工廠模式(Simple Factory pattern)二. 工廠方法模式(Factory Method Pattern)三.抽象工廠方法(Abstract Factory Method) 工廠模式 是創建

原创 常用排序算法(希爾,歸併,快排)

4. 希爾排序 時間複雜度 : O(n^1.3) ~ O(n^1.5) 空間複雜度 : O(1) 穩定性 : 不穩定(因爲在交換的過程中,有跳躍交換,所以不穩定) 算法思想 :希爾排序是插入排序的優化版本,由於簡單插入排序的只

原创 volatile關鍵字實現

Volatile 關鍵字實現原理 線程的工作空間是 CPU寄存器和cache的抽象描述 CPU修改數據 內存數據的步驟 : 把內存中的數據讀到cache中 在cache中更新數據 把更新的數據刷新到緩存 數據的不一致問題

原创 Java內存模型

方法區[線程共享區域] 讀取加載.class (字節碼) class文件分析 將源碼轉換爲指令 new 堆 保存創建的的對象 對象頭 數據體 根據垃圾回收的需要分代回收 劃分區域 程序計數器[線程各自獨享] 虛擬機棧[不同線

原创 單例模式

單例模式 單例模式 多個線程操作同一對象,要保證對象的唯一性 解決方案 實例化過程只實例化一次 提供返回實例的方法 分類 餓漢式 public class HungrySingleton { //加載的時候就產生了

原创 synchronized底層原理分析

synchronized底層原理 併發叫號 static : 併發量大的時候會出現 : 跳號.重號.超過最大值 概念 互斥性 :即同一時間只允許一個線程持有某個對象鎖 可見性 : 必須保證鎖被釋放之前,對共享變量所做的修改,對之後

原创 常用排序算法(冒泡,選擇,插入)

排序算法及其優化 1.冒泡算法 原算法 時間複雜度: O(n^2) 空間複雜度: O(1) 穩定性 :穩定 排序思想 : 每趟排序將從頭開始兩兩比較,按照大的在後小的在前的順序進行交換,每趟可以確定最大的數在數組的

原创 Mysql索引

一.Mysql索引 1. 沒有索引的情況下進行查找 select id from student where id = 1; 對於上面的查詢語句進行分析: 在一頁中進行查找 假設數據量比較少,只有一頁的數據 當查詢條

原创 事務和索引-InnoDb的頁

一. 事務 指邏輯上的一組操作,組成這組操作的各個單元,要麼全部成功,要麼全部失敗. 四大特性 原子性 : 指事務中的所有操作,要麼全部完成,要麼全部不完成. 一致性 : 在事務開始和完成時,數據都必須保持一致性的狀態[中間

原创 Java實現LRU

Java實現LRU 簡介 LRU(Least Recent Used) 最近最少使用,是經常用在內存的調度算法,在內存不夠的情況下,爲了載入新內容,不斷淘汰舊內容. 實現原理 使用HashMap 和 雙向鏈表實現 LRU Hash