原创 第十三篇:LinkedBlockingQueue的源碼解析(基於JDK1.8)

前言 前面我們分析了ArrayBlockingQueue,今天我們接着來對LinkedBlockingQueue的源碼進行解析。本文首先會對LinkedBlockingQueue的源碼進行解析,接着會介紹ArrayBlocking

原创 第六篇:走近ConcurrentHashMap(基於JDK1.8)

前言 前面我們學習了HashMap的數據結構,分析了其源碼,第五篇:HashMap的源碼分析。 在本篇文章中與HashMap相同的部分就不在贅述,但是HashMap是線程不安全的容器,在多線程環境下會有線程完全問題,雖然也有線程安

原创 第十五篇:LinkedBlockingDeque的源碼解析(基於JDK1.8)

LinkedBlockingDeque的定義 LinkedBlockingDeque是一個通過鏈表實現的雙端阻塞隊列,如果不指定大小時,則默認的大小是Integer.MAX_VALUE,實現原理與LinedBlockingQueu

原创 第九篇:隊列的學習(一)用數組和鏈表實現單向隊列

線性表 前面我們學習了鏈表的相關知識,今天我們接着來學習另外一種數據結構-----》隊列。其實,不管是數組還是鏈表,都是屬於線性表,那麼什麼是線性表呢?線性表是具有相同數據類型的n(n>=0)個數據元素的有限序列。其中n爲表長,當

原创 Java基礎之Stream流(JDK1.8新特性)

## 定義 JDK1.8 中增加了Stream流,Stream流是一個來自數據源的元素隊列並支持聚合操作。 元素是特定類型的對象,形成一個隊列,Java中的Stream並不會存儲元素,而是按需計算 數據源是流的來源,可以使集合,數

原创 第十篇:隊列的學習(二) 循環隊列

循環隊列定義 上一篇我們利用數組和鏈表分別實現了一個單向隊列。今天我們接着來看看另外一個隊列,循環隊列,循環隊列就是,其實循環隊列就是將單向隊列拉成一個環。我們知道,在單向隊列中,當tail==n,表示隊列已滿,就需要進行數據的遷

原创 第七篇:ConcurrentHashMap擴容的詳細介紹以及多線程測試(基於JDK1.8)

前言 前面對ConcurrentHashMap做了個一個整體的介紹,但是還有些疑問沒問解決? ConcurrentHashMap是啥時候進行擴容的? ConcurrentHashMap到底是怎麼擴容的呢? ConcurrentHa

原创 第十四篇:ConcurrentLinkedQueue的源碼解析(基於JDK1.8)

ConcurrentLinkedQueue的定義 ConcurrentLinkedQueue是 非阻塞的單端隊列,其是一個通過鏈表實現的併發安全的隊列。是java中併發環境下性能最好的隊列,它是使用非阻塞算法(CAS)來實現線程安

原创 HTTP的基礎知識和DNS的解析過程

概述 我們都知道現在大部分的B/S 系統。其核心的通訊協議還是 TCP/IP 協議,應用層的話就是HTTP 協議,我們最常的打交到的就是HTTP協議了。所以瞭解HTTP協議的相關知識顯得尤爲重要。 HTTP請求報文 一個HTTP請

原创 MyBatis 學習筆記(七)---源碼分析篇---SQL的執行過程(一)

前言 接上一篇,今天我們接着來分析MyBatis的源碼。今天的分析的核心是SQL的執行過程。主要分爲如下章節進行分析 代理類的生成 SQL的執行過程 處理查詢結果 mapper 接口的代理類的生成過程分析 首先我們來看看map

原创 MyBatis 學習筆記(八)---源碼分析篇--SQL 執行過程詳細分析

前言 在面試中我們經常會被到MyBatis中 #{} 佔位符與${}佔位符的區別。大多數的小夥伴都可以脫口而出#{} 會對值進行轉義,防止SQL注入。而${}則會原樣輸出傳入值,不會對傳入值做任何處理。本文將通過源碼層面分析爲啥#

原创 Sharding-JDBC的實踐

基本概念 這幾天在研究分表分庫的方案。綜合了幾種數據庫方案。 最後選型Sharding-jdbc。它主要有如下幾個優點。 支持分佈式事務 適用於任何基於Java的ORM框架。 對業務零侵入。 數據分片 數據分片是指按照某個維度將

原创 設計模式學習11----裝飾者模式

定義 裝飾者模式也稱爲包裝模式(Wrapper Pattern),屬於結構型設計模式。 在不改變原類文件以及不使用繼承的情況下,動態地將責任附加到對象中,從而實現動態擴展一個對象的功能。它通過創建一個包裝對象,也就是裝飾來包裹真實對象

原创 設計模式學習10----建造者模式

前言 這些天在閱讀MyBatis的源碼,發現MyBatis源碼中運用了很多設計模式,例如:模板模式,建造者模式,裝飾器模式。其中最常用的就是建造者模式。下面我們就來學習下建造者模式。 建造者模式 建造者模式結構圖及角色 建造者模式中

原创 MyBatis 學習筆記(六)---源碼分析篇---映射文件的解析過程(一)

概述 前面幾篇我們介紹了MyBatis中配置文件的解析過程。今天我們接着來看看MyBatis的另外一個核心知識點—映射文件的解析。本文將重點介紹<cache>節點和<cache-ref>的解析。 前置說明 Mapper 映射文件的解析