原创 DevOps專題(一)Docker架構及其知識腦圖

Docker 的總體架構 Docker 是一個 C/S 模式的架構,後端是一個松耦合架構,模塊各司其職。下圖是它的總體架構圖: 用戶是使用 Docker Client 與 Docker Daemon 建立通信,併發送請求給後者。 Doc

原创 設計模式專題(一)工廠模式

目錄 工廠模式 簡單工廠模式 工廠方法模式 抽象工廠模式 工廠模式 爲了便於理解,這裏做一個小案例: 1、首先製造一個牛奶類: public interface Milk {     /**      * 獲取一個標準產品      

原创 設計模式專題(二)單例模式

目錄 單例模式 餓漢式單例 懶漢式單例 內部類單例 註冊登記式單例 枚舉式單例 單例模式 單例模式(一個類模板,在整個系統執行過程中,只允許產生一個實例)應用廣泛,主要應用在: 配置文件 Ioc容器 日曆 工廠本身 單例模式:解決一個併發

原创 性能優化專題(三)MySQL數據庫

目錄 數據庫三大範式是什麼 MySQL邏輯架構 MySQL查詢過程 MySQL存儲引擎 MyISAM與InnoDB區別 InnoDB引擎的4大特性 查詢緩存 性能優化建議 Scheme設計與數據類型優化 創建高性能索引 MySQL索引 索

原创 性能優化專題(二)JVM虛擬機

目錄 Java內存區域 說一下 JVM 的主要組成部分及其作用? 說一下 JVM 運行時數據區 深拷貝和淺拷貝 說一下堆棧的區別? 隊列和棧是什麼?有什麼區別? HotSpot虛擬機對象探祕 對象的創建 爲對象分配內存 處理併發安全問題

原创 併發專題(一)Java內存模型

java內存模型(Java Memory Model,JMM)是java虛擬機規範定義的,用來屏蔽掉java程序在各種不同的硬件和操作系統對內存的訪問的差異,這樣就可以實現java程序在各種不同的平臺上都能達到內存訪問的一致性。可以避免

原创 JDK8——日期相關API

背景 JDK8中增加了一套全新的日期時間API,這裏進行總結下,方便查詢使用: 類 作用 備註 Instant 表示時間戳 對應jdk7之前的Date,可通過Epoch Time 紀元時相互轉換 LocalDateTime 獲取當前系統的

原创 併發專題(四)單例模式

目錄 分類 餓漢式 懶漢式 Synchronized實現 DCL非線程安全的實現 DCL線程安全實現--volatile實現 基於ClassLoader的實現 基於枚舉的實現 分類 懶漢式:懶漢式是指應用啓動時並不會初始化相應的實例,而是

原创 源碼專題(二)手寫實現SpringMVC

1. Annotation UVAutowired: /*  * @author uv  * @date 2018/9/29 10:00  * 注入  */   import java.lang.annotation.Documente

原创 源碼專題(三)Spring事務@Transactional的使用及原理

在Spring開發中,經常會用到這個註解,但它是怎麼起到開啓事務的作用的,還一知半解,今天就來分析一波它的用法和原理。 編程式事務和聲明式事務     Spring 支持兩種事務管理方式:編程式和聲明式,編程式是在程序中顯式地使用Tran

原创 源碼專題(一)手寫實現Spring的IOC

首先,我們先來介紹一下Spring的三個階段,配置階段、初始化階段和運行階段(如圖): 配置階段:主要是完成application.xml配置和Annotation配置。 初始化階段:主要是加載並解析配置信息,然後,初始化IOC容器,完

原创 源碼專題(四)Mybatis的緩存機制

Mybatis 爲我們提供了一級緩存和二級緩存,可以通過下圖來理解: ①、一級緩存是SqlSession級別的緩存。在操作數據庫時需要構造sqlSession對象,在對象中有一個數據結構(HashMap)用於存儲緩存數據。不同的sqlS

原创 分佈式專題(一)漫談分佈式架構

一,計算機發展史概述       1946 年情人節(2.14) , 世界上第一臺電子數字計算機誕生在美國賓夕法尼亞大學大學,它的名字是:ENIAC; 這臺計算機佔地170平米、重達30噸,每秒可進行5000次加法運算。第一臺電子計算機

原创 分佈式專題(五)Zookeeper實現原理

一、Zookeeper 的由來         從上面的案例可以看出,分佈式系統的很多難題,都是由於缺少協調機制造成的。在分佈式協調這塊做得比較好的,有 Google 的 Chubby 以及 Apache 的 Zookeeper。Go

原创 分佈式專題(三)HTTPS協議

一、HTTP協議 1. HTTP協議的組成 大家可以通過抓包工具,Fillder 或者其他去抓去一個請求,然後可以看到如下的請求數據和響應數據。分爲兩部分,一個是客戶端的請求信息,一個是服務端的響應信息。抓去到的信息如下 request