原创 16.JVM棧幀內部結構-局部變量表

1.局部變量表(Local variables) 1.局部變量表也稱爲局部變量數組或本地變量表。 2.局部變量表定義爲一個數字數組,主要用於存儲方法參數和定義在方法體內的局部變量。(局部變量表的作用) 3.局部變量表示棧幀中的數據

原创 14.JVM棧的存儲結構和運行原理

1.棧中存儲的是什麼? 1.每個線程都有自己的棧,棧中存儲的是棧幀。 2.在這個線程上正在執行的每個方法都各自對應一個棧幀。方法與棧幀是一對一的關係。 3.棧幀是一個內存區塊,是一個數據集,維繫着方法執行過程中的各種數據信息。

原创 一文搞懂文件在不同的平臺傳輸過程中的編碼轉換

1.文件存儲在磁盤上都是二進制流,物理上都是存儲的二進制。 2.文件分爲兩種:文本文件(ASCII)和二進制文件(Binary)。其實,文本文件是特殊的二進制文件,在磁盤上存儲的依然是二進制, 只不過存儲的二進制是用ASCII或Unico

原创 1.JVM的整體結構,JAVA代碼的執行流程,JVM的生命週期

1.JVM的整體結構 JVM整體上可以被分爲3層,如下圖所示,分爲上中下層。(針對HotSPot虛擬機)。 上層:JVM是用來解釋執行字節碼文件的,所以上層的入口是Class file。類裝載子系統Class Loader來會將字

原创 16. branch與HEAD的理解,使用git reset恢復到過去的某個版本

1. branch指針與HEAD指針 1.1 branch是什麼? branch本質上是指向commit對象的指針。 1.2 HEAD是什麼? HEAD是指向branch的指針,指向的是當前所在的分支。 爲什麼需要HEAD指針?因

原创 一文搞懂npm install, npm install -g, npm install --save, npm install --save-dev之間的區別

1.npm install X 安裝X到項目的node_modules文件夾 會修改package.json,在dependencies中寫入依賴。(關於這一點,網上的大部分文章都是說,不會修改package.json,筆者通過實踐發現,

原创 一文搞懂MyBatis整合echahe

導入第三方緩存包 導入與第三方緩存整合的適配包;官方有https://github.com/mybatis/ehcache-cache/releases 編寫ehcache.xml配置文件 mapper.xml中使用自定義緩存

原创 Mybatis工作原理分析-MyBatis源碼解析

1.Mybatis的框架設計 Mybatis總共分爲四層,接口層、數據處理層、框架支持層、引導層。 接口層-和數據庫進行交互的方式。用戶通過接口層來進行數據庫的增刪改查操作。與數據庫進行交互的方式有兩種:a.使用傳統的MyBat

原创 6.類加載器的分類 -- 引導類加載器、擴展類加載器、應用程序類加載器、用戶自定義類加載器

1.類加載器分類 JVM支持兩種類型的類加載器,分別爲引導類加載器(Bootstrap ClassLoader)和自定義類加載器(User-Defined ClassLoader)。 這裏的自定義加載器指的不是開發人員自己定義的類

原创 4.類加載器與類的加載過程概述

1.類加載器子系統作用 負責從文件系統或者網絡中將Class文件加載到內存中,生成一個大的Class的對象實例。 只負責加載,是否可以執行由執行引擎決定。 加載的類信息存放在一塊稱爲方法區的空間中。除了類信息之外,方法區中還會存放

原创 13.棧中可能出現的異常以及如何設置棧的大小

1.棧中可能出現的異常 棧中可能出現的異常有StackOverflowError異常和OutOfMemoryError。 Java虛擬機規範允許Java棧的大小可以是動態的或者是固定不變的。 1.如果採用固定大小的java虛擬機棧

原创 GitHub 回滾代碼

1.git log 查看commit hash值 執行git log:查看commit hash值。 2.執行git reset --hard xxxx xxxx表示的是commit hash 值。 例如上圖所示,紅色框框出來的

原创 10.運行時數據區概述和線程

1.運行時數據區概述 1.運行時數據區包含下圖所示的5個部分。 方法區,棧區,程序計數器,本地方法棧,虛擬機棧。 2.運行時數據區的作用: 如下圖,class文件被類加載子系統通過加載,鏈接,初始化三個步驟之後,被加載到了內存中

原创 12.虛擬機棧概述

1. 內存中的棧與堆 棧是運行時單位,堆是存儲的單位。 棧解決程序的運行問題,即程序如何執行,或者說如何處理數據。 堆解決的是數據存儲的問題,即數據怎麼放、放在哪兒。 1.每個線程在創建的時候都會創建一個虛擬機棧。棧是線程私有的

原创 一文搞懂字符編碼與解碼

       最近遇到一個關於字符編碼與解碼的問題,使用GB2312保存了一個文件,然後使用vscode打開的時候,發現中文字符全是亂碼了。爲什麼會出現這個問題?研究了一下編碼與解碼。        文件在計算機上存儲的都是二進制。顧名思