原创 多線程原理(部分)

volatile 解釋 volatile修飾的變量能夠保證可見性,但不保證原子性,每個線程能夠獲取該變量的最新值。 如何保持可見性 對volatile修飾的詞,程序在編譯的時候,會多一個lock彙編指令如下圖所示: 該lock

原创 23種設計模式之委派模式

基本介紹 委派模式的基本作用就是負責任務的調度和分派任務,跟代理模式很像,可以看做是一種特殊情況下的靜態代理的全權代理,但代理模式注重過程,委派模式注重結果。它不屬於GOF 23種設計模式之一。是一種行爲模式。 源碼中標誌 帶De

原创 Dubbo 擴展Spring及服務暴露過程

基於Spring 進行配置解析, 存儲到config 各種邏輯判斷,保證信息安全 組裝URL(registry:// | zookeeper:// | dubbo://) 構建一個invoker(動態代理) Registry

原创 Dubbo 源碼原理-SPI

Dubbo SPI 簡介 SPI 全稱爲 Service Provider Interface,是一種服務發現機制。SPI 的本質是將接口實現類的全限定名配置在文件中,並由服務加載器讀取配置文件,加載實現類。這樣可以在運行時,動態

原创 JDBC 批量插入數據並返回主鍵

JDBC 批量插入數據並返回主鍵 String sql = "INSERT INTO saas_init_bakeups (" + " delete_number, t

原创 ConcurrentHashMap詳解(1.8)

1.7和1.8的區別 1.8取消了segment分段鎖的設計 增加了紅黑樹的實現 鏈表的長度大於8 且數組的長度大於64時,此時鏈表會轉爲紅黑樹,當擴容時,假設鏈表長度小於8 此時紅黑樹會轉換成鏈表 初始化Tab -1 表

原创 Spring模塊簡介

Spring 功能簡介 Spring 之核心模塊 模塊名稱 核心功能 spring-core 依賴注入IOC與DI的基本實現 spring-bean bean工廠與bean的裝配 spring-context

原创 Spring源碼學習 IOC容器

IOC 容器初始化步驟 尋找容器初始化入口 定位配置文件的setConfigLocations()方法 AbstractApplicationContext的refresh()方法 AbstractApplicationCont

原创 Docker安裝 elasticsearch和Kibana 7.0.1

docker 安裝elasticsearch 以下內容參考 https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html#docker-cl

原创 Docker 常用操作整理

查看指定容器ip docker inspect 容器id

原创 簡述TCP協議“三次握手,四次揮手”流程

簡述TCP協議“三次握手,四次揮手”流程三次握手四次揮手 三次握手 所謂的三次握手(Three-way Handshake),是指建立一個TCP連接時,需要客戶端和服務器總共發送3個包 三次握手的目的是連接服務器指定端口,建立TCP連

原创 HTTP與HTTPS握手分析

HTTP與HTTPS握手分析HTTP與TCP/IP區別HTTP 握手分析HTTPS 握手分析會話緩存握手過程會話標識 session ID會話記錄 session ticket重建連接.服務器重建連接客戶端重建連接密鑰計算計算 Key

原创 Elasticsearch 基本操作

Elasticsearch 基本操作基本語句批量操作_mgetbulk_search 基本語句 批量操作 _mget Elasticsearch中檢索多個文檔, 相對於一個一個的檢索, 更快的方式是在一個請求中使用multi-get或

原创 RabbitMq 安裝以及集羣配置

Centos7 RabbitMq之安裝 Rabbitmq由erlang語言開發因此安裝之前應該先安裝所需依賴,安裝erlang 安裝Erlang Solutions倉庫到你的系統(目的在於讓你可以使用yum安裝到最新版本的erlan

原创 RabbitMq之集羣

讓RabbitMq變成高可用性有兩種方式:一種是設施Rabbit集羣,另一種爲擴大程序規模。接下來講述RabbitMq集羣 RabbitMq內建集羣用於完成兩個目標: 允許生產者和消費者在Rabbit節點崩潰的情況下繼續運行 通過添