博客 / 列表

異常君 - MyBatis Plus 敏感字段加解密與脱敏實戰

每當項目進入安全合規階段,總會聽到這樣的需求:"數據庫裏的身份證、手機號必須加密存儲!"而且往往是業務已經開發了一半,突然被告知要改造,頓時頭大。尤其使用 MyBatis Plus 這樣的 ORM 框架時,如何在不影響現有代碼的情況下實現加密存儲、同時在前端展示時又要做脱敏,成了很多開發者的痛點。本文將分享一套實用的解決方案,幫你優雅地解決這一難題。 加密方案設計 加密算法選擇 在選擇加密算法時,

加密解密 , mybatis-plus , JAVA , 後端 , 方案

異常君 - SpringBoot 實現圖片防盜鏈:資源保護實戰詳解與優化

最近是不是經常發現自己網站的圖片資源莫名其妙地出現在別人的網站上?而這些圖片卻是存儲在你自己的服務器,消耗着你的帶寬資源!更糟的是,當別人網站加載緩慢時,用户可能會誤以為是你的網站出了問題。作為開發者,我們需要一種有效的方式來保護自己的圖片資源,這就是圖片防盜鏈技術的意義所在。 什麼是圖片防盜鏈? 圖片防盜鏈是一種保護網站圖片資源不被其他網站直接引用的技術手段。當用户訪問網頁時,瀏覽器會發送包含

圖片處理 , springboot , JAVA , 防盜鏈 , 後端

異常君 - Paxos 協議三階段解密:原理剖析與 Java 實現

你是否遇到過這樣的情況:公司的微服務集羣中,多個節點需要選出主節點,但因為網絡故障卻導致兩個節點同時認為自己是"主"?或者在容器編排系統中,因為通信延遲導致不同節點看到的系統狀態不一致,引發了一連串莫名其妙的錯誤?在分佈式系統中,這些場景時有發生,而它們本質上都指向一個核心問題:如何在不可靠的網絡環境中,讓多個獨立節點對某個決策達成一致? 這個看似簡單的問題卻難倒了無數系統設計師。幸運的是,Les

分佈式系統 , JAVA , paxos , 一致性 , 後端

異常君 - CAP 理論:分佈式系統的三選二原則與 Java 實戰

還記得那次生產環境的數據庫突然宕機嗎?整個團隊手忙腳亂,老闆不停打電話催進度,用户投訴電話打爆客服。那一刻,我們多希望系統能持續可用啊!但現實是,為了保證數據一致性,我們不得不讓系統暫時下線。這就是分佈式系統中最經典的矛盾 —— CAP 理論下的抉擇。無論是構建微服務架構,還是設計分佈式數據庫,這個問題都繞不開。今天,我們一起深入理解 CAP 理論,看看為什麼它不可能三者兼得,以及在 Java 中

zookeeper , 分佈式系統 , JAVA , cap , 後端

異常君 - Java 中的 WeakHashMap:原理、內存管理與實用技巧

你是不是也曾經因為內存泄漏問題熬夜加班?我第一次遇到這個問題是在開發一個緩存系統時,明明已經不用的對象卻怎麼都釋放不掉。在 Java 開發中,合理管理內存資源是個大問題。傳統的 HashMap 會一直持有鍵值對的強引用,即使外部已經不再使用這些對象。而 WeakHashMap 正好能解決這個煩惱,它能自動感知對象的生命週期,幫我們處理那些不再需要的數據。 WeakHashMap 是什麼? Weak

引用 , weak-reference , map , JAVA , 後端

異常君 - Java 併發編程必懂的隱形殺手:指令重排深度剖析

前段時間在做一個電商訂單系統的性能優化時,遇到了一個讓我抓狂的多線程問題。明明代碼邏輯很嚴謹,但在高併發場景下就是會隨機出現數據不一致。排查了整整三天後才發現,原來是 Java 中默默存在的"指令重排"在作怪。 今天我就把這個坑分享出來,從原理到實戰,聊聊 Java 中的指令重排到底是什麼、為什麼會發生,以及實際開發中如何規避這個隱形殺手。 什麼是指令重排? 簡單説,指令重排是 JVM 和 CPU

JAVA , final , volatile , 併發編程 , 後端

異常君 - Spring Boot 定時任務全攻略:從@Scheduled 到分佈式調度,一文搞定!

在企業級應用開發中,定時任務是一個非常常見的需求。比如每天凌晨統計前一天的訂單數據、定期清理臨時文件、發送營銷郵件等。Spring Boot 提供了多種實現定時任務的方式,本文將從入門到進階,全面剖析幾種主流的實現方案,並通過實際案例幫助你選擇最適合自己項目的方案。 一、Spring Boot 實現定時任務的四種方式 Spring Boot 中實現定時任務主要有四種方式: @Scheduled

quartz , 定時任務 , springboot , JAVA , 後端

異常君 - 深入解析 InnoDB 死鎖:從案例到方案,全流程透視指南

大家好!今天我要和各位分享一個在 MySQL 項目中經常讓開發者頭疼的問題——InnoDB 的死鎖問題。相信不少朋友都遇到過這樣的情況:一個好好運行的系統突然報錯,日誌裏冒出"Deadlock found when trying to get lock; try restarting transaction",然後你就開始了漫長的排查之旅... 別擔心,這篇文章會用真實案例帶你從現象到根源,徹底掌

死鎖 , MySQL , innodb , 數據庫 , 後端

異常君 - 深入 JVM:線程池源碼剖析與性能調優全攻略

在 Java 併發編程中,線程池是我們必須掌握的核心技術。很多開發者只會使用線程池,卻不瞭解其底層工作原理,導致在實際項目中遇到性能問題時無從下手。本文將帶你深入探索線程池的底層實現機制,並通過案例講解如何進行科學的參數調優。 一、線程池核心原理:任務執行流程 ThreadPoolExecutor 是 Java 線程池的核心實現類,其源碼中最關鍵的 execute()方法定義了任務的處理邏輯。下面

線程池 , jvm , threadpoolexecutor , JAVA , 後端

異常君 - 【大數據內核解密】HDFS 架構與數據模型:從理論到實戰全解析

作為 Hadoop 生態系統的基石,HDFS (Hadoop Distributed File System)為大數據應用提供了高吞吐量、高容錯性和高可用性的存儲解決方案。本文將深入剖析 HDFS 的核心架構、數據模型和關鍵機制,帶你全面瞭解這個分佈式文件系統的內部工作原理。 一、HDFS 主從架構:NameNode 與 DataNode 的協作機制 HDFS 採用典型的主從架構設計,由一個 Na

hdfs , 大數據 , hadoop , 後端

異常君 - 【爆肝整理】Java 泛型深度解析:從類型擦除到通配符,一文搞懂 PECS 原則與實戰避坑指南

引言 Java 泛型看似簡單,實則暗藏玄機。當你以為掌握了ListString和MapK,V的用法,卻發現自己在編寫泛型方法時頻頻踩坑?當你試圖理解別人的泛型 API,卻被? extends T和? super T繞暈?這正是因為 Java 泛型的兩大核心機制——類型擦除和通配符——它們既是 Java 泛型的精髓,也是最容易被誤解的部分。 本文將帶你揭開 Java 泛型的神秘面紗,深入探討類型擦除

解析 , 實戰 , 泛型 , JAVA , 後端

異常君 - 深入剖析 Java ReentrantLock:解鎖顯式鎖的高級特性與實戰應用

一、鎖的進化:從 synchronized 到 ReentrantLock 大家好,在多線程編程中,鎖機制是保證線程安全的核心技術。Java 早期只提供了 synchronized 這一種內置鎖,而在 JDK 1.5 後,Doug Lea 大師為我們帶來了更加靈活強大的顯式鎖ReentrantLock。 synchronized 雖然用起來簡單,但在某些場景下會顯得"能力不足": 無法響應中斷

lock , , JAVA , 後端

異常君 - Java 鎖進化論:synchronized 的底層原理與鎖優化技術詳解

在多線程編程中,synchronized是 Java 中最基礎也最重要的同步機制之一。雖然它在 JDK 早期版本中因性能問題被詬病,但隨着 JDK 1.6 引入的鎖優化技術,它已經成為兼具性能和易用性的同步方案。本文將深入剖析 synchronized 的底層原理、鎖升級過程以及 JVM 對它的各種優化措施。 一、synchronized 的三種使用形式 在深入原理前,先回顧一下 synchron

lock , , JAVA , synchronized , 後端

異常君 - Java 10 深度剖析:核心特性與實戰應用全解析

大家好!今天我要和大家分享 Java 10 中引入的重要特性。作為 2018 年 3 月發佈的短期支持版本,Java 10 雖然只有 6 個月的支持週期,但它引入了一些非常實用的新功能,特別是備受歡迎的局部變量類型推斷。下面我們將深入探討這些特性,並通過實際案例來展示它們的應用價值。 1. 局部變量類型推斷 (JEP 286) Java 10 最引人注目的特性當屬局部變量類型推斷,它允許我們使用v

java10 , optional , gc , JAVA

異常君 - Java 9 特性詳解:從模塊系統到 API 增強的全面剖析

大家好!今天我要和大家分享 Java 9 中那些真正改變我們編碼方式的新特性。作為 Java 開發者,瞭解這些新功能不僅能讓你的代碼更簡潔、更高效,還能幫助你在團隊中脱穎而出。 Java 9 於 2017 年 9 月發佈,它帶來了自 Java 8 以來最重大的架構變革。與 Java 8 注重語法層面的革新(如 Lambda 表達式)不同,Java 9 更關注基礎設施和平台級別的改進,為大型應用開發

API , JAVA , stream , java9 , 後端