原创 JDK1.8源碼之LinkedList

LinkedList採用雙鏈表的數據結構,可以用作列表做存儲,也可以用做雙端隊列。 部分屬性與Node結構 //指向列表的第一個元素 transient Node<E> first; //指向列表的最後一個元素

原创 微服務springCloud概述

微服務 簡單的說,微服務是系統架構上的一種設計風格,它的主旨是將一個原本獨立的系統拆分成多個小型服務,這些小型服務都在各自獨立的進程中運行,服務之間通過基於HTTP的RESTfulAPI進行通信協作。摘自Spring Cloud

原创 非volatile變量讀寫在多線程環境中解釋運行和編譯運行的不同結果

基本知識 Java程序默認採用混合執行模式,即既有解釋運行,也有JIT編譯運行。 Java程序運行期間,先解釋運行,在一定條件下觸發JIT編譯運行。 JIT編譯器編譯判決條件基於方法調用計數器和方法中的循環回邊計數器。 循環的回

原创 JDK1.8源碼之ConcurrentHashMap(三)table初始化及擴容機制

table初始化方法initTable() private final Node<K,V>[] initTable() { Node<K,V>[] tab; int sc; while ((

原创 JDK1.8源碼之ArrayList

部分重要屬性 //存放元素的數組 transient Object[] elementData; //大小,非elementData的length,存入元素的總個數 private int size;

原创 JDK1.8源碼之ConcurrentHashMap(一)

部分重要屬性 //存放key,value數據 transient volatile Node<K,V>[] table; //爲了擴容操作時,不影響讀操作而設立,因此不保證讀寫實時一致性 private tra

原创 JDK1.8源碼之ConcurrentHashMap(二)

put方法 final V putVal(K key, V value, boolean onlyIfAbsent) { //key和value不能爲空 if (key == null || value ==

原创 JDK源碼之HashMap

部分重要屬性 //存放key,value的數組 transient Node<K,V>[] table; //存放Entry的set transient Set<Map.Entry<K,V>> en

原创 Docker

什麼是docker Docker 是一個開源的應用容器引擎,基於 Go 語言 並遵從Apache2.0協議開源。 Docker 可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然後發佈到任何流行的 Linux 機

原创 JVM學習之編譯與類加載

Java文件通過Javac編譯器編譯成class文件,編譯後的class文件交由JVM平臺加載運行,即Java需要經過編譯期和運行期 編譯期優化指的是Javac編譯器將Java文件轉化爲字節碼即class文件的優化過程; 運行期優

原创 spring boot學習之tomcat與spring boot

tomcat是Servlet容器,spring boot是開發框架,可開發基於Servlet規範的應用 即spring boot應用需要放在Servlet容器上運行 而spring boot可以使用內置Servlet容器啓動,也可

原创 spring boot學習之用戶class文件掃描總結

用戶class文件掃描觸發方法 spring boot相當於在spring的基礎上進行了擴展,與spring掃描配置文件不相同的地方在於 由AbstractApplicationContext中的invokeBeanFactory

原创 spring boot學習之註解

註解從jdk5之後提供了支持,註解是代碼中的特殊標記,可以作用於源碼階段,編譯階段以及運行階段,由元註解@Retention來決定 元註解 @Retention:指定註解有效期,取值包括RetentionPolicy.SOURCE

原创 JVM學習之內存模型與GC算法

Java程序無需對內存進行分配和釋放,內存的分配與釋放由JVM來完成 JVM內存模型 線程獨佔:棧區,本地方法棧,程序計數器 線程共享:堆,方法區 java聲明的變量內存存放位置: 1.new出來的對象及數組存放在堆區,對字符串J

原创 JVM學習之JVM參數

查看Windows下的JVM參數: Windows下默認classpath上的JVM參數獲取 CMD上輸入:java -XX:+PrintCommandLineFlags -version //JDK1.8 //初始堆 -XX: