原创 Java魔法類——Unsafe應用解析

前言Unsafe是位於sun.misc包下的一個類,主要提供一些用於執行低級別、不安全操作的方法,如直接訪問系統內存資源、自主管理內存資源等,這些方法在提升Java運行效率、增強Java語言底層資源操作能力方面起到了很大的作用。但由於Uns

原创 分佈式之數據庫和緩存雙寫一致性方案解析

先做一個說明,從理論上來說,給緩存設置過期時間,是保證最終一致性的解決方案。這種方案下,我們可以對存入緩存的數據設置過期時間,所有的寫操作以數據庫爲準,對緩存操作只是盡最大努力即可。也就是說如果數據庫寫成功,緩存更新失敗,那麼只要到達過期時

原创 k8s 中定時任務的實現

k8s 中有許多優秀的包都可以在平時的開發中借鑑與使用,比如,任務的定時輪詢、高可用的實現、日誌處理、緩存使用等都是獨立的包,可以直接引用。本篇文章會介紹 k8s 中定時任務的實現,k8s 中定時任務都是通過 wait 包實現的,wait

原创 談談 Java 類加載機制

概述 類加載器主要分爲兩類,一類是 JDK 默認提供的,一類是用戶自定義的。 JDK 默認提供三種類加載器: Bootstrap ClassLoader 啓動類加載器:每次執行 java 命令時都會使用該加載器爲虛擬機加載核心類。該加載器是

原创 基於 Kafka 實現分佈式事件驅動

事件驅動是一種靈活的系統設計方法,在事件驅動的系統中,當數據發生變化時系統會產生、發佈一個對應的事件,其它對這個事件感興趣的部分會接收到通知,並進行相應的處理。事件驅動設計最大的好處在我看來有兩點:一是它爲系統提供了很好的擴展能力,比如我們

原创 Spring 中獲取 request 的幾種方法,及其線程安全性分析

概述在使用Spring MVC開發Web系統時,經常需要在處理請求時使用request對象,比如獲取客戶端ip地址、請求的url、header中的屬性(如cookie、授權信息)、body中的數據等。由於在Spring MVC中,處理請求的

原创 Redis過期策略及實現原理

我們在使用redis時,一般會設置一個過期時間,當然也有不設置過期時間的,也就是永久不過期。 當我們設置了過期時間,redis是如何判斷是否過期,以及根據什麼策略來進行刪除的。 redis設置過期時間:expire key time(以秒爲

原创 Java結合keytool實現非對稱加密和解密

在Java安全體系中,簽名屬於JAAS模塊,加解密屬於JCE模塊。keytool的使用keytool是JDK自帶的一個密鑰庫管理工具。這裏只用到了keytool的部分功能,包括生成密鑰對,導出公鑰等。keytool生成的公鑰/私鑰對存放到一

原创 深入Spring Boot:快速集成Dubbo + Hystrix

背景Hystrix 旨在通過控制那些訪問遠程系統、服務和第三方庫的節點,從而對延遲和故障提供更強大的容錯能力。Hystrix具備擁有回退機制和斷路器功能的線程和信號隔離,請求緩存和請求打包,以及監控和配置等功能。Dubbo是Alibaba開

原创 jvm垃圾回收算法

前言java相較於c、c++語言的優勢之一是自帶垃圾回收器,程序開發人員不用手動管理內存,內存的分配和釋放完全由gc(Garbage Collector)來做,極大地提高了軟件開發效率及程序健壯性(手動管理內存容易造成內存泄漏)。凡事皆有兩

原创 Spring中的統一異常處理

在具體的SSM項目開發中,由於Controller層爲處於請求處理的最頂層,再往上就是框架代碼的。因此,肯定需要在Controller捕獲所有異常,並且做適當處理,返回給前端一個友好的錯誤碼。不過,Controller一多,我們發現每個Co

原创 高效遍歷Java容器

通過本文,你可以更深入的學習 Java 語言中 forEach 語法的知識,以及它和 C 語言形式的 for 循環、 Steam API 的對比。簡介Java 程序員經常使用容器,比如 ArrayList 和 HashSet。Java 8

原创 基於 Kafka 實現分佈式事件驅動

事件驅動是一種靈活的系統設計方法,在事件驅動的系統中,當數據發生變化時系統會產生、發佈一個對應的事件,其它對這個事件感興趣的部分會接收到通知,並進行相應的處理。事件驅動設計最大的好處在我看來有兩點:一是它爲系統提供了很好的擴展能力,比如我們

原创 Spring 中獲取 request 的幾種方法,及其線程安全性分析

概述在使用Spring MVC開發Web系統時,經常需要在處理請求時使用request對象,比如獲取客戶端ip地址、請求的url、header中的屬性(如cookie、授權信息)、body中的數據等。由於在Spring MVC中,處理請求的

原创 基於 Kafka 實現分佈式事件驅動

事件驅動是一種靈活的系統設計方法,在事件驅動的系統中,當數據發生變化時系統會產生、發佈一個對應的事件,其它對這個事件感興趣的部分會接收到通知,並進行相應的處理。事件驅動設計最大的好處在我看來有兩點:一是它爲系統提供了很好的擴展能力,比如我們