原创 Java虛擬機類加載機制及類加載器

一、什麼是類的加載 類的加載指的是將類的.class文件中的二進制數據讀入到內存中,將其放在運行時數據區的方法區內,然後在堆區創建一個 java.lang.Class對象,用來封裝類在方法區內的數據結構。 目前類加載器卻在類層次劃分、OS

原创 exe4j JRE壓縮

在公司研發項目中,使用exe4j打包SpringBoot的程序。使用Electron搭建C/S閱卷軟件,通過瀏覽器及Node regedit模塊啓動C/S程序。通過Yarn和VNISEdit組合方式對程序進行打包。其中JAVA服務提供OC

原创 Redis 主從複製的原理、斷點續傳、哨兵工作原理及哨兵主備切換的數據丟失問題(異步複製、集羣腦裂)

1、Redis replication基本原理 (1)複製的過程步驟 從節點保存主節點的信息,redis.conf裏面的slaveof配置的主節點的信息,並沒有立即發起複製 從節點通過定時任務,每秒檢查是否有新的master node要

原创 (三)MySQL讀寫分離的原理及主從同步延時解決方案

MySQL讀寫分離的原理 1、主服務器配置Binlog,將改變記錄到二進制文件(binary log). 2、從服務器配置RelayLog.Slave將master的binary log events拷貝到它的中繼日誌(relay log

原创 (四)RabbitMQ 七種工作模式

官網介紹:https://www.rabbitmq.com/getstarted.html (1) 簡單模式:一個生產者,一個消費者 (2) work模式:一個生產者,多個消費者,每個消費者獲取到的消息唯一。 (3) 訂閱模式:一個生產者

原创 (四)分佈式鎖解決方案-Redis實現方式(Jedis實現)

基於Redis的分佈式鎖   使用常用命令 SETNX SETNX key val當且僅當key不存在時,set一個key爲val的字符串,返回1;若key存在,則什麼都不做,返回0。 Expire expire key timeout

原创 (二) JMS與AMQP 基本簡介

RabbitMQ是一款開源的,Erlang編寫的,基於AMQP協議的,消息中間件; 一、RabbitMQ組件和工作原理 解耦、異步、削峯; RabbitMQ是一個由erlang開發的AMQP(Advanved Message Queue

原创 (一)分佈式鎖解決方案-初識JVM synchronized

分佈式鎖一般有三種實現方式: 數據庫樂觀鎖; 基於Redis的分佈式鎖; 基於ZooKeeper的分佈式鎖 單體應用上根據時間戳+num++ 實現唯一ID   首先我們定義一個接口 public interface IGenerateG

原创 (二)分佈式鎖解決方案-Zookeeper兩種實現方式(zkclient實現)

業務場景 在分佈式情況,生成全局訂單號ID 產生問題 在分佈式(集羣)環境下,每臺JVM不能實現同步,在分佈式場景下使用時間戳生成訂單號可能會重複   分佈式情況下,怎麼解決訂單號生成不重複 使用分佈式鎖 提前生成好,訂單號,存放在red

原创 (八)SpringBoot整合RabbitTemplate發送接受消息&序列化機制

前言 基於XML配置RabbitMQ 爲了方便了解基於SpringBoot配置,我們首先熟悉在傳統的Spring基於XML的配置,後續我們會更方便了解基於SpringBoot的配置 <?xml version="1.0" encodin

原创 Redis 事務指令 MULTI、EXEC、DISCARD、WATCH、UNWATCH

Redis 事務 Redis 事務可以一次執行多個命令, 並且帶有以下三個重要的保證: 批量操作在發送 EXEC 命令前被放入隊列緩存。 收到 EXEC 命令後進入事務執行,事務中任意命令執行失敗,其餘的命令依然被執行。 在事務執行過程,

原创 (三) RabbitMQ 組件的基本概念

一、Message 消息,它由消息頭和消息體組成。消息體是不透明的,而消息頭則由一系列的可選屬性組成,這些屬性包括routing-key(路由鍵)、priority(相對於其他消息的優先權)、delivery-mode(指出該消息可能需要

原创 (三)分佈式鎖解決方案-Zookeeper兩種實現方式(ZkCurator實現)

public class ZkCuratorLockUtil { public static String idGenerator(IGenerateGlobalId iGenerateGlobalId,InterProcess

原创 Spring源碼大綱目錄

IOC容器的設計 容器的基本組成和實現 啓動容器      類路徑下查找配置文件來實例化容器     使用註解Config來實例化容器     在文件系統下尋找配置文件實例化容器 Spring容器內部對象的創建     調用實例工廠來實例

原创 (七) RabbitMQ的消息路由機制四種Exchange模式(fanout,direct,topic,header)

一.Direct Exchange   任何發送到Direct Exchange的消息都會被轉發到RouteKey中指定的Queue。 1.一般情況可以使用rabbitMQ自帶的Exchange:”"(該Exchange的名字爲空字符串,