原创 什麼拜占庭將軍問題?比特幣是如何解決的?——深入淺出分佈式共識性(一)

之前《淺談分佈式CAP定理》簡單介紹了數據在分佈式系統中存在的必然定理。簡單回顧一下,一個數據在一個節點需要同步到另外一個節點的過程中,在未完成同步的時候,會出現數據不一致的情況,所以此時必然存在分區容錯性(Partition tolera

原创 必知必會JVM垃圾回收——對象搜索算法與回收算法

垃圾回收(GC)是JVM的一大殺器,它使程序員可以更高效地專注於程序的開發設計,而不用過多地考慮對象的創建銷燬等操作。但是這並不是說程序員不需要了解GC。GC只是Java編程中一項自動化工具,任何一個工具都有它適用的範圍,當超出它的範圍的時

原创 零基礎帶你看Spring源碼——IOC控制反轉

本章開始來學習下Spring的源碼,看看Spring框架最核心、最常用的功能是怎麼實現的。網上介紹Spring,說源碼的文章,大多數都是生搬硬推,都是直接看來的觀點換個描述就放出來。這並不能說有問題,但沒有從一個很好的、容易切入的角度去了解

原创 “過時”的SpringMVC我們到底在用什麼?深入分析DispatchServlet源碼

之前已經分析過了Spring的IOC(《零基礎帶你看Spring源碼——IOC控制反轉》)與AOP(《從源碼入手,一文帶你讀懂Spring AOP面向切面編程》)的源碼,本次就來分析下SpringMVC。本文先簡述下目前SpringMVC的

原创 進階的Redis之哈希分片原理與集羣實戰

前面介紹了《進階的Redis之數據持久化RDB與AOF》和《進階的Redis之Sentinel原理及實戰》,這次來了解下Redis的集羣功能,以及其中哈希分片原理。 集羣分片模式 如果Redis只用複製功能做主從,那麼當數據量巨大的情況下,

原创 從源碼入手,一文帶你讀懂Spring AOP面向切面編程

之前《零基礎帶你看Spring源碼——IOC控制反轉》詳細講了Spring容器的初始化和加載的原理,後面《你真的完全瞭解Java動態代理嗎?看這篇就夠了》介紹了下JDK的動態代理。 基於這兩者的實現上,這次來探索下Spring的AOP原理。

原创 Java多線程——鎖概念與鎖優化

爲了性能與使用的場景,Java實現鎖的方式有非常多。而關於鎖主要的實現包含synchronized關鍵字、AQS框架下的鎖,其中的實現都離不開以下的策略。 悲觀鎖與樂觀鎖 樂觀鎖。樂觀的想法,認爲併發讀多寫少。每次操作的時候都不上鎖,直到

原创 進階的Redis之數據持久化RDB與AOF

大家都知道,Redis之所以性能好,讀寫快,是因爲Redis是一個內存數據庫,它的操作都幾乎基於內存。但是內存型數據庫有一個很大的弊端,就是當數據庫進程崩潰或系統重啓的時候,如果內存數據不保存的話,裏面的數據就會丟失不見了。這樣的數據庫並不

原创 都9102年了,還不會Docker?10分鐘帶你從入門操作到實戰上手

Docker簡述 Docker是一種OS虛擬化技術,是一個開源的應用容器引擎。它可以讓開發者將應用打包到一個可移植的容器中,並且該容器可以運行在幾乎所有linux系統中(Windows10目前也原生支持,Win10前需要內置虛擬機),正所謂

原创 一文了解JVM全部垃圾回收器,從Serial到ZGC

《對象搜索算法與回收算法》介紹了垃圾回收的基礎算法,相當於垃圾回收的方法論。接下來就詳細看看垃圾回收的具體實現。 上文提到過現代的商用虛擬機的都是採用分代收集的,不同的區域用不同的收集器。常用的7種收集器,其適用的範圍如圖所示 <!--mo

原创 Java異步編程——深入源碼分析FutureTask

Java的異步編程是一項非常常用的多線程技術。 之前通過源碼詳細分析了ThreadPoolExecutor《你真的懂ThreadPoolExecutor線程池技術嗎?看了源碼你會有全新的認識》。通過創建一個ThreadPoolExecuto

原创 都9102年了,還不會Docker?10分鐘帶你從入門操作到實戰上手

Docker簡述 Docker是一種OS虛擬化技術,是一個開源的應用容器引擎。它可以讓開發者將應用打包到一個可移植的容器中,並且該容器可以運行在幾乎所有linux系統中(Windows10目前也原生支持,Win10前需要內置虛擬機),正所謂

原创 進階的Redis之哈希分片原理與集羣實戰

前面介紹了《進階的Redis之數據持久化RDB與AOF》和《進階的Redis之Sentinel原理及實戰》,這次來了解下Redis的集羣功能,以及其中哈希分片原理。 集羣分片模式 如果Redis只用複製功能做主從,那麼當數據量巨大的情況下,

原创 進階的Redis之數據持久化RDB與AOF

大家都知道,Redis之所以性能好,讀寫快,是因爲Redis是一個內存數據庫,它的操作都幾乎基於內存。但是內存型數據庫有一個很大的弊端,就是當數據庫進程崩潰或系統重啓的時候,如果內存數據不保存的話,裏面的數據就會丟失不見了。這樣的數據庫並不

原创 淺談分佈式CAP定理

互聯網發展到現在,由於數據量大、操作併發高等問題,大部分網站項目都採用分佈式的架構。而分佈式系統最大的特點數據分散,在不同網絡節點在某些時刻(數據未同步完,數據丟失),數據會不一致。 在2000年,Eric Brewer教授在PODC的研討