原创 SpringBoot開啓Gzip接口報文壓縮

背景 當我們一個接口響應報文比較大的時候,超過幾兆甚至幾十兆的情況下,減少響應體的報文大小是能有效減少響應時間的。 spring boot 配置 server: compression: ## 開啓服務端的報文壓縮 en

原创 Java synchronized那點事

前言 請看上篇:Java 對象頭那點事 文章中的源碼都有不同程度縮減,來源於openjdk8的開源代碼(tag:jdk8-b120)。 鎖粗化過程 偏向鎖 ①:markword中保存的線程ID是自己且epoch等於class的epoch

原创 RabbitMQ3.8.16安裝延遲隊列插件

安裝過程 1:RabbitMQ 延遲插件GitHub 2:各版本地址 如我的MQ版本是3.8.16,那麼根據提示下載的版本是: ①:移動插件到RabbitMQ的插件目錄下,如我的位置是:/usr/lib/rabbitmq/lib/rab

原创 Java 對象頭那點事

概覽 對象頭 存放:關於堆對象的佈局、類型、GC狀態、同步狀態和標識哈希碼的基本信息。Java對象和vm內部對象都有一個共同的對象頭格式。 (後面做詳細介紹) 實例數據 存放:類的數據信息,父類的信息,對象字段屬性信息。 如果對

原创 Java-NIO之Channel(通道)

1:Channel是什麼 通道表示與實體的開放連接,例如硬件設備、文件、網絡套接字或能夠執行一個或多個不同 I/O 操作(例如讀取或寫入)的程序組件。 1.1:Channel與Stream的對比 Stream Channel 爲什麼

原创 Java-NIO之Buffer(緩衝區)

Buffer 是什麼 Buffer(緩衝區)本質上是一個由基本類型數組構成的容器。 我們先看看Buffer類的基本構成: public abstract class Buffer { // Invariants: mark <= p

原创 Docker如何製作鏡像-Dockerfile的使用

1:什麼是Dockerfile Dockerfile是一個文本文檔,可以通過docker build 命令構建成一個鏡像。 我們可以在Dockerfile中定義一系列的命令,構建出我們想要的鏡像。 想要製作一個新的鏡像離不開Dockerfi

原创 Spring 事務回滾機制詳解

1:事務原理 1.1:aop/動態代理 類路徑:org/springframework/aop/framework/CglibAopProxy.java ReflectiveMethodInvocation#proceed 後續:

原创 Docker安裝和基本使用

1:配置yum的aliyun源 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 若報錯:yum-c

原创 SpringCloud-OAuth2(四):改造篇

本片主要講SpringCloud Oauth2篇的實戰改造,如動態權限、集成JWT、更改默認url、數據庫加載client信息等改造。 同時,這應該也是我這系列博客的完結篇。 關於Oauth2,我也想說幾句: 如果真的要應用到企業級項目當

原创 SpringCloud-OAuth2(三):進階篇

上篇文章講了SpringCloud OAuth 的實戰篇,但是在微服務環境下,常常會有一個認證中心。 而普通服務接收到請求後,判斷token是否有效並不是自己處理的,因爲token的管理統一交給認證中心,token也理應被認證中心統一管理(

原创 SpringCloud-OAuth2(二):實戰篇

如果不瞭解Oauth2 是什麼、工作流程的可以看我上一篇文章: SpringCloud-OAuth2(一):基礎篇 這篇講的內容是:Oauth2在SpringBoot/SpringCloud中的實戰。 SpringBoot版本:2.2.5.

原创 如何優雅的做參數校驗-JSR330

前言: 本文不是講@Validate、@Valid是如何使用的、區別是什麼,想看這些內容的請換篇文章。 背景: 當前端傳過來的參數是進行對稱性加密、base64加密等處理後過的參數時,在controller接口使用@Validae、@

原创 SpringCloud-OAuth2(一):基礎篇

關於Oauth2 的詳細介紹官網地址:https://developer.okta.com/blog/2017/06/21/what-the-heck-is-oauth 1:什麼是OAuth2 首先,OAuth不是API或服務:它是開放的

原创 RabbitMQ 安裝-CentOS8

之前安裝過舊版的RabbitMQ和Erlang,先卸載。 ①:卸載RabbitMQ /sbin/service rabbitmq-server stop yum list | grep rabbitmq yum -y remove rabb