原创 【Java併發-深入理解ThreadPoolExecutor】

前言:首先,我想說java的線程池真的是很繞,以前一直都感覺新建幾個線程一直不退出到底是怎麼實現的,後來學習了ThreadPoolExecutor源碼。學習源碼的過程中,最噁心的其實就是幾種狀態的轉換了,這也是ThreadPoolExec

原创 Java中常見數據結構:Java容器 Collection與map -底層如何實現

1:集合 2 Collection(單列集合) 3 List(有序,可重複) 4 ArrayList 5 底層數據結構是數組,查詢快,增刪慢

原创 google protobuf序列化原理

一、Java數據序列化大致有3種實現方式,1、JSON,2、Object Serialize,3、protobuf,今天重點解析第三種使用google protobuf的序列化原理。 Protobuf的簡單介紹、使用和分析 一、proto

原创 【Java-集合】HashMap-Hash衝突解決

背景:我們常用HashMap作爲我們Java開發時的K-V數據存儲結構(如id-person,這個ID對應這個人)。我們知道他們的數據結構麼,它的Hash值是什麼意義。Hash衝突是怎麼解決的。我們帶着這2個問題將HashMap做個整體剖

原创 【IO/NIO】Java NIO淺析

NIO(Non-blocking I/O,在Java領域,也稱爲New I/O),是一種同步非阻塞的I/O模型,也是I/O多路複用的基礎,已經被越來越多地應用到大型應用服務器,成爲解決高併發與大量連接、I/O處理問題的有效方式。 那麼NI

原创 微服務簡介

想象一下,如果你在寫代碼調用一個有REST API或GRPC API的服務,你的代碼需要知道一個服務實例的網絡地址(IP地址和端口)。運行在物理硬件上的傳統應用中,服務實例的網絡地址是相對靜態的,你的代碼可以從一個很少更新的配置文件中讀取

原创 【IO/NIO】Java IO/NIO

在Java程序中,對於數據的輸入/輸出以”流”(Stream)方式進行 java.io 包定義了多個流類型:   1) 按數據流方向分爲 – 輸入流和輸出流   2) 按數據單位分爲 – 字節流和字符流   3) 按功能分

原创 JAVA基礎問題集錦

Java虛擬機 一、類加載器 (類加載後存儲於方法區(類區)) (1)類加載器有哪些 1、根類加載器(Bootstrap) –C++寫的 ,看不到源碼 2、擴展類加載器(Extension) –加載位置 :jre\lib\ext中

原创 【JVM】Java內存區域

Java中的運行時內存區域如下圖所示 一、Java虛擬機棧(在HotSpot虛擬機中 本地方法棧與虛擬機棧合併) Java虛擬機棧是線程私有的,它的生命週期與線程相同。虛擬機棧描述的是Java方法執行的內存模型:每個方法在執行的同時會創

原创 【JVM】Java類加載機制

一、概述 虛擬機把描述類的數據從class文件加載到內存,並對數據進行校驗,轉換解析和初始化,最終形成可以被虛擬機直接使用的Java類型,這就是虛擬機的類加載機制。 二、Java類加載時機 (1)遇到new、getstatic、putst

原创 【JVM】Java-JVM-OutOfMemoryError實戰

一、主程序代碼清單: package sample.mybatis; import java.util.ArrayList; import java.util.List; /** * VM Args : -Xms20m -Xmx20

原创 【JVM】Intellij IDEA-Main方法 JVM參數設置

最近在研究深入理解JVM虛擬機這本書,有一章是實戰OutOfMemoryError,其中就需要在主程序啓動時就設置好VM參數,Intellij IDEA設置主程序的VM參數如下圖,【Run】-【Edit Configuration】即會出

原创 【JVM】OSGi 靈活的類加載結構

一、OSGi是什麼 OSGi(Open Service Gateway Initiative),是面向Java的動態模型系統,是Java動態化模塊化系統的一系列規範。 OSGi服務平臺提供在多種網絡設備上無需重啓的動態改變構造的功能。爲了

原创 Java中的數組與容器的概念與彼此轉換

1、數組與容器的基本概念 數組是Java提供的線性隊列實現方式,能存儲基礎數據類型與對象; 容器是封裝的更高級集合實現,底層可能是數組也可能是鏈表,但容器只能存對象,不能存基礎類型。 容器間的關係圖: 2,List、Set、Ma

原创 【JVM】Tomcat的類加載器架構

一、概述 主流的java web服務器,如Tomcat、Jetty、webLogic等服務器,都實現了自己定義的類加載器(一般不止一個)。因爲一個功能健全的web服務器,就都要解決以下幾個問題 (1)部署在同一臺服務器上的2個web應用程