原创 Netty 入門初體驗

前言 這篇主要介紹一個Netty 客戶端與服務端的示例代碼,對Netty有一個直觀感受,看看如何使用Netty,後續文章會對Netty的各個組件進行詳細分析 Netty簡介 Netty是一款異步的事件驅動的網絡應用程序框架,支持

原创 聊聊類加載器與雙親委派模型

前言 我們經常會在面試中遇到有關類加載器的問題,而作爲一名Java開發人員應該瞭解類加載器如何工作?雙親委派模型是什麼?如何打破雙親委派?爲什麼打破?等等。所以今天的主題就是聊一聊類加載器。 ClassLoader 介紹 《深入理

原创 聊聊線程池那些事

前言 平時開發過程中,我們會經常和線程池打交道,有時還會根據不同的業務進行線程池隔離,那麼瞭解線程池的工作原理和參數設置就是非常必要的,所以今天的主題就是探究線程池的那些事兒。 爲什麼使用線程池 在使用一項技術之前,瞭解 「why

原创 Java 8 Stream 簡介

前言 這篇文章的主題是探究 Java 8 Stream的內容,雖然現在Java 14 都發布了,但是目前企業用得最多的還是 Java 8,我們的短期關注點還是在於對 Java 8 的使用,而 Stream 是 Java 8 中一個

原创 聊聊ThreadLocal那些事

前言 這篇文章聊聊 ThreadLocal,我們經常會在一些開源中間件的源碼中見到它的身影,比較常見的用途是保存上下文信息,還有就是保證了線程安全。 實際上,ThreadLocal 爲每個線程提供一個單獨的變量,確是一種保證線程安

原创 基於Netty實現簡易RPC框架

前言 現在網上有很多關於使用Netty來構建RPC框架的例子,爲什麼我這裏還要寫一篇文章進行論述呢,我很清楚我可能沒有寫得他們那麼好。之所以還要寫,有兩點原因: 一是因爲學過Netty之後,還需要去不斷實踐才能更好的把握Netty的用法,

原创 淺析MySQL事務中的redo與undo

我們都知道事務有4種特性:原子性、一致性、隔離性和持久性,在事務中的操作,要麼全部執行,要麼全部不做,這就是事務的目的。事務的隔離性由鎖機制實現,原子性、一致性和持久性由事務的redo 日誌和undo 日誌來保證。所以本篇文章將討論關於事務

原创 springboot系列文章之集成WebSocket進行廣播式消息推送

前言 在springboot整合websocket之前,先簡單闡述下websocket的基本概念,以及與它相關的sockjs,stomp又是什麼。 WebSocket簡介 WebSocket協議是 HTML5新增的一種在單個TCP連接

原创 springboot系列文章之使用單元測試

前言 springboot提供了 spirng-boot-starter-test以供開發者使用單元測試,在引入 spring-boot-starter-test依賴後: <dependency> <groupId>o

原创 springboot系列文章之過濾器 vs 攔截器

前言 之前實際開發項目的時候,雖然有用過濾器和攔截器,但是理解上還是有點懵懵懂懂的,沒有徹底明白,這篇文章就來仔細剖析下這二者的區別與聯繫。 過濾器 過濾器Filter,是在Servlet規範中定義的,是Servlet容器支持的,該接

原创 springboot系列文章之日誌配置

前言 下面的總結基本上來自網絡與官方文檔,這裏做一個記錄,方便以後查看 SpringBoot 內部採用的是 Commons Logging進行日誌記錄,但是默認配置也提供了對常用日誌的支持,如: Java Util Logging

原创 JDK自帶的反編譯工具 javap

前言 以前經常看一些文章使用 javac 反編譯 class文件,然後生成一堆字節碼,再一頓騷操作分析字節碼,可謂是非常炫酷。這裏有時間剛好也來玩玩JDK的 javap javap 介紹 javap是 JDK自帶的一個工具,可以將 cla

原创 springboot系列文章之實現跨域請求(CORS)

CORS介紹 跨域資源共享向來都是熱門的需求,我們可以使用 CORS 來快速實現 跨域訪問,只需要在服務端進行授權即可,無需在前端添加額外的設置 簡單說,CORS是一種訪問機制,英文全稱: Cross-Origin Resource Sh

原创 JVM 系列文章之 Java 的內存區域

前言 下面關於 Java 的內存區域介紹大部分參考深入理解Java虛擬機,也參考了網上很多資料,以下圖片均摘自網絡 運行時數據區域 Java虛擬機在執行 Java 程序的過程中會把它管理的內存劃分爲若干個不同的數據區域。根據《Java

原创 JVM 系列文章之 對象存活分析 - 引用計數 and 可達性分析

前言 在垃圾回收器回收對象時,我們如何判斷哪些對象是”活”的,哪些是”死”的,關於判斷對象存活的方法主要分爲兩類: 引用計數法 和 可達性分析算法 引用計數法 引用計數器就是: 給對象中添加一個引用計數器,每當有一個地方引用它時,計數器值