原创 Mybatis Generator 插件教學

Mybatis Generator Plugin Mybatis Generator,簡稱 MBG,Mybatis 三劍客之一,通過定義 generatorConfig.xml 來創建 POJO,Mapper 等類(逆向工程) 但

原创 JVM 篇:類加載機制

概述   Java 和 C/C++ 這種在編譯時就開始連接的語言不同,Java 是在運行期動態加載,動態連接的。(以效率換靈活度)   類的生命週期如下,其中 加載,驗證,準備,初始化,卸載 這五步的執行順序是確定的 (這裏說的是

原创 JVM 篇:HotSpot GC

注:HotSpot 是 JDK 自帶的虛擬機類型 如果對垃圾回收的基本概念不是很瞭解,可以點擊 GC 基本概念 前往瞭解。 HotSpot 使用可達性分析算法來獲知哪些對象是有用的,然後把沒用的對象回收掉。具體過程爲: GC 時

原创 JVM 篇:虛擬機內存分佈

運行時數據區域 程序計數器 線程私有 CPU 一般是分片運行的,線程轉換的時候需要記錄當前指令的位置,以便下一次運行時從中斷處繼續,這個就是程序計數器的作用。每一個線程有一個獨立的程序計數器。 對於 Java 方法,計數器記錄的

原创 Mavn 篇:寫一個自己的模板,快速搭建項目

爲什麼要使用 Maven Archetype  每次我們要使用框架寫一個網站時,比如 SSM,我們總是需要手寫 applicationContenxt.xml,mybatis-config.xml 和 jdbc.propertie

原创 JVM 篇:GC 基本概念

基本概念   在談垃圾收集器之前,我們先來捋一捋哪些內存會被當成垃圾回收。虛擬機的內存區域可以分爲 程序計數器,虛擬機棧,本地方法棧,堆,方法區,直接內存。   程序計數器 和 虛擬機棧 和 本地方法棧 都爲線程私有的,當線程結束

原创 Maven 篇:正確對待依賴衝突

引言  當我們使用 Maven 來構建我們的程序時,我們可以用幾句配置來代替大量的 Jar 包(一個依賴會引入其依賴的其他依賴,而那些依賴也會引入其依賴的依賴,所以有依賴樹這種說法),同時因爲這種配置在我們交流代碼時可以不用自己引

原创 JVM 篇:虛擬機異常

個人感覺使用代碼來講解比純文字更清晰,如下: // 虛擬機異常一般爲 *Error,常見的有 OutOfMemoryError 和 StackOverflowError public class JVMError { /

原创 JVM 篇:虛擬機字節碼執行引擎

概述   Java 虛擬機規範規定了字節碼執行引擎的規範,這個規範形成了所有具體虛擬機實現的統一外觀:輸入字節碼,內部解析,輸出結果。   執行引擎的運行其實就是棧幀的入棧和出棧的過程。每個棧幀都包括了 局部變量表 (local

原创 Spring 篇:RedisTemplate 配置與使用

Maven 依賴 <!-- Redis 官方提供的 Java 驅動 --> <dependency> <groupId>redis.clients</groupId> <artifactI

原创 Java 篇:通過反射與代理實現 AOP

概述 通過 Proxy::newProxyInstance 和 InvocationHandler 接口 來實現代理 要求 被代理的對象 至少實現一個 接口 代理的原理是在內存生成一個代理類的 Class 文件,可以將其保存下來

原创 JVM 篇:Java 虛擬機工具

JDK 自帶的可視化工具 VisualVM : $JAVA_HOME/bin/jvisualvm.exe JConsole : $JAVA_HOME/bin/jconsole.exe   這兩款工具都很好用,JConsole

原创 Bug 篇:Java 8 Parallel Stream 陷阱

誤區一:Java 8 中的 Stream 只要使用 parallel 就可以並行處理,只要使用 sequential 就可以單線程處理 parallel 方法和 sequential 方法不會對流產生任何影響,只是改動了狀態位而

原创 JVM 篇:虛擬機種類

通用平臺的虛擬機 Classic VM JDK1 與 JDK2 的官方默認虛擬機,世界第一種 java 虛擬機 通過純解釋器執行 Java 代碼,即時編譯器只能通過外掛的形式存在,並且不能與解釋器一起運行。(那個時候的 Java

原创 Java 篇:讓你的 Eclipse 飛起來

下載 Eclipse 不要去官網下載,很慢,使用國內的下載地址(清華源):https://mirrors.tuna.tsinghua.edu.cn/eclipse/technology/epp/downloads/release