原创 Singleton Pattern單例模式總結

在我們平時工作 或者 面試的時候,單例模式算是出現最頻繁的一種設計模式了,本文整理了單例模式的各種實現 1、餓漢模式【簡而言之,就是不管你用不用,我先創建出來】 public class HungrySingleton { p

原创 B+樹 數據結構

MySQL 索引採用B+樹的數據結構進行存儲,如下圖所示: 真實的數據存在於葉子節點,即3、5、9、10、13、15、28、29、36、60、75、79、90、99. 非葉子節點不存儲真實數據,只存儲指引搜索方向的數據項(指針),如17、

原创 Factory Pattern 工廠模式總結

        工廠模式(Factory Pattern)是 Java 中最常用的設計模式之一。這種類型的設計模式屬於創建型模式,它提供了一種創建對象的最佳方式。 在工廠模式中,我們在創建對象時不會對客戶端暴露創建邏輯,並且是通過使用一個

原创 裝飾器模式 Decorator Pattern

裝飾者模式(Decorator Pattern)是指在不改變元祐對象的基礎上將功能附加到對象上,提供了比繼承更有彈性的方案(即擴展原有對象的功能),屬於結構型模式。裝飾者模式適用於以下場景: 擴展一個類的功能或給一個類添加附加的職責。 動

原创 Redis經典8問

經歷幾年開發經驗之後,再去面試,緩存問題是不可避免的,現在最常見的緩存就應該是Redis了,下面是在面試中最常見的Redis的8個問題。 一、爲什麼要使用 Redis ? 主要可以從兩個方面來考慮:性能和併發 1、性能:如果我們在項目中碰

原创 紅黑樹原理

紅黑樹(B-R Tree):全稱 Red-Black Tree,是一種特殊的二叉查找樹。紅黑樹的上每個節點都有存儲位表示節點的顏色,可以是紅(Red)或 黑(Black) 紅黑樹的特性 每個節點要麼是黑色,要麼是紅色; 跟節點是

原创 LinkedList源碼解析

LinkedList 是List的一個實現類,並實現了Deque、Cloneable、Serializable 接口 實現 Deque 表示 LinkList 是一個雙向隊列 實現 Cloneable 表示LinkedList 可以被克隆

原创 TreeMap 源碼解析

之前瞭解了ArrayList、LinkedList、HashMap、ConcurrentHashMap,接下來再來了解下TreeMap。TreeMap 底層直接維護了一個紅黑樹,按照慣例,先從繼承 及構造函數開始。 public cla

原创 二叉樹

一、定義 二叉樹是 n 個節點的有限集合,該集合或者爲空集(空二叉樹),或者由一個根節點和兩棵互不相交的、分被稱爲根節點的左子樹和右子樹組成。下圖爲一棵普通的二叉樹: 二、二叉樹的特點 由二叉樹定義以及圖示分析得出二叉樹有以下特點: 每

原创 Facade Pattern外觀模式

外觀模式(Facade Pattern)隱藏系統的複雜性,並向客戶端提供了一個可以訪問系統的接口。這種類型的設計模式屬於結構型模式,它向現有的系統添加一個接口,來隱藏系統的複雜性。 舉個例子,比如我們最習以爲常吃飯,如果是自己做的話,那麼

原创 Redis基本數據類型及使用場景

這個問題應該算是比較簡單的了,工作一兩年的朋友基本都會遇到過,此文僅做梳理。 一、基本數據類型分爲5種:String、hash、list、set、zset(有序集合) 二、使用場景: 1、String         命令:set key

原创 Nginx 反向代理

Nginx 是一個高性能的http 和反向代理服務器,用於把客戶端請求分發給後臺的web 容器。下載安裝的話,可以到官網去下載 安裝。 一、配置文件 #工作進程,一般設置爲CPU的核數 woker_processes 2 #在高併發情況

原创 MySQL事務隔離級別

今天回顧一下MySQL的事務隔離級別,MySQL的事務隔離級別分爲以下四種: read uncommitted : 讀未提交,即髒讀。一個事務可以讀取到另一個事務修改並未提交的數據; read committed : 讀已提交,可以解決髒

原创 Hashtable源碼解析

Hashtable 算是平時用的比較少的一個集合了,先從繼承、實現關係 及 構造函數來簡單的瞭解一下 public class Hashtable<K,V> extends Dictionary<K,V> implements Map

原创 RESTful規範

RESTful 是一種架構的規範與約束、原則,符合這種規範的架構就是 RESTful 架構。 一、動詞+賓語 結構 RESTful 的核心思想就是客戶端發出的數據操作指令都是“動詞+賓語”的結構。比如 GET /articles 這個命令