原创 Java併發學習筆記(八):AQS(AbstractQueuedSynchronizer)、ReentrantLock 原理、讀寫鎖使用和原理

J.U.C 一、AQS 原理 1、概述 AQS 全稱是 AbstractQueuedSynchronizer,是阻塞式鎖和相關的同步器工具的框架 特點: 用 state 屬性來表示資源的狀態(分獨佔模式和共享模式),子類需要定義

原创 Java併發學習筆記(二):synchronized使用、synchronized原理、Monitor管程、輕量級鎖、自旋優化、偏向鎖、鎖消除

共享模型之管程 一、引入 看看下面的例子,兩個線程對初始值爲 0 的靜態變量一個做自增,一個做自減,各做 5000 次,結果是 0 嗎? static int counter = 0; public static

原创 Netty學習筆記(一):Netty簡介、三種IO方式、BIO工作機制、BIO應用實例

第 1 章 Netty 背景介紹 一、Netty簡介 Netty 是由 JBOSS 提供的一個 Java 開源框架,現爲 Github 上的獨立項目。 Netty 是一個異步的、基於事件驅動的網絡應用框架,用以快速開發高性能、高

原创 Java併發學習筆記(十):線程安全集合類、ConcurrentHashMap原理、LinkedBlockingQueue 原理、CopyOnWriteArrayList

JUC 七、線程安全集合類概述 線程安全集合類可以分爲三大類: 遺留的線程安全集合如 Hashtable , Vector(直接用synchronized修飾方法,效率低) 使用 Collections 裝飾的線程安全集

原创 JVM學習筆記(七):即時編譯器、提前編譯器、編譯器優化技術、方法內聯、逃逸分析

後端編譯與優化 如果把字節碼看作是程序的中間表達形式,那麼編譯器無論何時、在何種狀態下把Class文件轉換爲本地基礎設施(硬件指令集、操作系統)相關的二進制機器碼,它都可以視爲整個編譯過程的後端 後端編譯主要包括即時編譯(Just

原创 JVM學習筆記(六):Javac編譯器、語法糖、泛型

前端編譯與優化 編譯器概述 Java中的編譯器主要分爲三種: 前端編譯器:把*.java文件轉變爲*.class文件的過程。代表有JDK的Javac 即時編譯器:(常稱爲JIT編譯器,Just In Time Compiler)

原创 JVM學習筆記(五):運行時棧幀結構、方法調用、基於棧的字節碼解釋執行引擎

虛擬機字節碼執行引擎 概述 執行引擎是Java虛擬機核心的組成部分之一。物理機的執行引擎是直接建立在處理器、緩存、指令集和操作系統層面上的,而虛擬機的執行引擎是由軟件自行實現的,因此可以不受物理條件制約,定製指令集與執行引擎的結構

原创 JVM學習筆記(四):類加載過程、類加載器、雙親委派

虛擬機類加載機制 簡介 Java虛擬機把描述類的數據從Class文件加載到內存,並對數據進行校驗、轉換解析和初始化,最終形成可以被虛擬機直接使用的Java類型,這個過程就被稱爲虛擬機的類加載機制。 特點:與編譯時進行連接的語言不同

原创 JVM學習筆記(三):類文件結構、字節碼指令簡介

類文件結構 Java虛擬機規範 簡介 平臺無關性(一次編寫,到處運行):運行在各種不同硬件平臺和操作系統上的Java虛擬機都在可以載入和執行同一種平臺無關的字節碼,從而實現程序的“一次編寫,到處運行”。 任何一個Class文件都對

原创 JVM學習筆記(二):垃圾回收、垃圾回收算法、垃圾回收器(Serial、Parallel、CMC、G1)、內存分配原則實戰

垃圾回收 一、判斷對象是否可以被回收 1、引用計數計數法 內容:在對象中添加一個引用計數器,每當有一個地方引用它,計數器就加一;當引用失效時,計數器就減一;任何時刻計數器爲零的對象都是不可能在被使用的 缺點:無法解決對象之間的循環

原创 Docker修改容器內部文件的方法

Docker修改容器內部文件的方法一共有三種,下面進行一一介紹。 1、進入容器內部修改 使用下面的命令以命令行的形式可以進入容器的內部對文件進行修改。 docker exec -it 容器ID /bin/bash 不過裏面沒有v

原创 Redis學習筆記(三):Linux環境安裝Redis、配置Redis、持久化(RDB、AOF)

基於Linux環境安裝Redis 基於Center OS7安裝Redis 下載安裝包: wget http://download.redis.io/releases/redis-?.?.?.tar.gz 解壓 tar

原创 Redis學習筆記(六):集羣、緩存預熱、緩存雪崩、緩存擊穿、緩存穿透、性能指標監控

集羣 集羣簡介 集羣就是使用網絡將若干臺計算機聯通起來,並提供統一的管理方式,使其對外呈現單機的服務效果 集羣作用 : 分散單臺服務器的訪問壓力,實現負載均衡 分散單臺服務器的存儲壓力,實現可擴展性 降低單臺服務器宕機帶來的業務

原创 Redis學習筆記(五):主從複製、哨兵模式

主從複製 引入: 互聯網“三高”架構 :高併發,高性能,高可用 單機redis的風險與問題 : 機器故障導致數據丟失,很可能對業務造成災難性打擊 容量瓶頸 結論: 爲了避免單點Redis服務器故障,準備多臺服務器,互相連通。將

原创 Redis學習筆記(四):Redis事務、鎖(Watch,setnx)、刪除策略、核心配置、高級數據類型(Bitmap、HyperLogLog、GEO)

Redis 事務 事務簡介 redis事務就是一個命令執行的隊列,將一系列預定義命令包裝成一個整體(一個隊列)。當執行時,一次性 按照添加順序依次執行,中間不會被打斷或者干擾。 一個隊列中,一次性、順序性、排他性的執行一系列命令