博客 / 列表

江南一點雨 - 鴻蒙如何防止敏感頁面被截屏?

在移動應用開發中,保護用户隱私和敏感信息是至關重要的安全需求。尤其在金融、醫療、政務等高敏感度場景中,應用界面可能包含銀行卡號、身份證信息、病歷數據或機密文件等內容。如果這些頁面被用户截屏或錄屏,極易造成信息泄露,帶來嚴重的安全風險。 鴻蒙操作系統(HarmonyOS)作為華為推出的全場景分佈式操作系統,為開發者提供了豐富的安全能力。其中,針對“防止敏感頁面被截屏”這一典型需求,HarmonyOS

harmonyos-next , harmonyos

江南一點雨 - 鴻蒙開發,朋友圈信息流卡頓如何優化?

在移動應用開發中,信息流(Feed)是用户最常交互的核心場景之一。尤其在社交類應用(如“朋友圈”)中,用户滑動頻繁、內容複雜(圖文、視頻、評論等),對性能要求極高。鴻蒙系統(HarmonyOS)雖然具備分佈式能力和高性能渲染引擎,但在實際開發過程中,若未遵循最佳實踐,依然可能出現信息流卡頓、掉幀等問題。 本文將圍繞鴻蒙開發中的朋友圈信息流卡頓問題,從問題背景出發,結合具體案例説明優化對接步驟,並總

harmonyos-next , harmonyos

江南一點雨 - 鴻蒙Web組件如何與ArkTS頁面進行雙向數據通信?

在鴻蒙(HarmonyOS)應用開發中,Web組件是一個高頻使用的UI組件,用於嵌入網頁內容。然而,許多開發者在實際項目中常常遇到一個關鍵問題:如何讓嵌入的網頁(HTML/JS)與原生ArkTS頁面之間實現高效、安全的雙向數據通信? 本文將圍繞這一核心問題,從問題背景出發,通過一個具體案例詳細講解對接步驟,並總結最佳實踐,幫助開發者快速掌握鴻蒙Web組件與ArkTS頁面的雙向通信機制。 一、問題

harmonyos-next , harmonyos

江南一點雨 - 鴻蒙應用集成 OpenHarmony 的第三方組件庫(如 ArkUI-X)案例詳解

一、為何需要集成 OpenHarmony 第三方組件庫? 隨着鴻蒙(HarmonyOS)生態的持續擴張,開發者面臨兩大核心訴求:提升開發效率與保障跨端兼容性。原生鴻蒙組件雖能滿足基礎開發需求,但在複雜場景(如高級 UI 交互、數據可視化、跨平台適配)中存在侷限性。而 OpenHarmony 作為開源生態底座,孕育了大量成熟的第三方組件庫(如 ArkUI-X、OhosUI、HarmonyUI Plu

harmonyos-next , harmonyos

江南一點雨 - 手把手教小夥伴們使用 Nginx 部署 TienChin 項目!

今天我就來手把手教小夥伴們部署 TienChin 項目,一起把這個項目跑起來,看看到底是個什麼樣的項目。 小夥伴們知道,對於這種前後端分離的項目,我們在實際部署的時候,可以按照前後端分離的方式來部署,也可以按照前後端不分的方式來部署。接下來兩種不同的部署方式我都和小夥伴們來分享一下。 1. 前後端分離部署 1.1 部署架構圖 前後端分離部署的話,我們一般是需要一個 Nginx 服務器,我先畫一個簡

前後端分離 , Nginx

江南一點雨 - 前綴索引,在性能和空間中尋找平衡

@[toc] 我們在項目的具體實踐中,有時候會遇到一些比較特殊的字段,例如身份證號碼。 鬆哥之前有一個小夥伴做黑龍江省的政務服務網,裏邊有一些涉及到用户身份證存儲的場景,由於存儲的數據大部分都是當地的,此時如果想給身份證號碼建立索引的話,小夥伴們知道,身份證前六位是地址碼,在這樣的場景下,給身份證字段建立索引的話,前六位的區分度是很低的,甚至前十位的區分度都很低(因為出生年份畢竟有限,一個省

MySQL , java-ee , JAVA , java-web

江南一點雨 - JWT 簽名用對稱加密還是非對稱加密?

一 概念梳理 對稱加密和非對稱加密是兩種基本的加密方法,它們在現代密碼學中扮演着核心角色,用於保護數據的安全和隱私。 1.1 對稱加密(Symmetric Encryption) 對稱加密是指加密和解密使用同一個密鑰的過程。這意味着發送方和接收方都必須知道並使用這個共享的密鑰來對信息進行加密和解密。這種方法的優點在於加密和解密速度快,效率高,適合處理大量數據。但是,安全分發密鑰成為一個挑戰,因為如

spring , JAVA , Jwt

江南一點雨 - 什麼是 JWT?它是如何工作的?

鬆哥最近輔導了幾個小夥伴秋招,有小夥伴在面小紅書時遇到這個問題,這個問題想回答全面還是有些挑戰,鬆哥結合之前的一篇舊文和大夥一起來聊聊。 一 無狀態登錄 1.1 什麼是有狀態 有狀態服務,即服務端需要記錄每次會話的客户端信息,從而識別客户端身份,根據用户身份進行請求的處理,典型的設計如 Tomcat 中的 Session。例如登錄:用户登錄後,我們把用户的信息保存在服務端 session 中,並且

JAVA , Jwt

江南一點雨 - JDK23如約而至,數十種新玩法,你期待哪一種?

9 月 17 日,JDK23 它來了。 JDK23 並非長期支持版,下一個長期支持版是 JDK25,預計明年 9 月份發佈。 和鬆哥一起來看下這次的 JDK23 都有哪些新特性~ 一 Language Previews ➜ 在 instanceof 和 switch 中 支持原始類型(預覽) 增強了模式匹配,擴展 instanceof 和 switch 以支持所有原始類型。這是一項預覽語言特性。

JDK , JAVA

江南一點雨 - 如果讓你設計一個秒殺系統,你會怎麼做?

這個算是一個經典面試題了,雖説是一個場景題,但是也算是老八股了。 今天就從系統設計的角度來和小夥伴們聊一聊這個話題。 一般來説秒殺系統需要考慮到下面這樣一些問題: 瞬時高併發流量 熱點商品數據 庫存管理 重複下單 黃牛 接下來我們就這裏提到的點逐一進行分析。 本文主要和大家講思路,不講具體做法,具體做法在鬆哥之前的文章中很多已經和大家聊過了。 一 瞬時高併發流量 應對瞬時高併發流量,

系統設計 , JAVA

江南一點雨 - 什麼時候需要用到 @EnableWebSecurity 註解?

有小夥伴在學習 Spring Security 的遇到一個問題: 箭頭所指的位置報紅,也就是 Spring 容器中沒有找到一個類型為 HttpSecurity 的 Bean。 小夥伴説如果他在配置類上加 @EnableWebSecurity 註解,就不報錯;不加該註解則會報錯。那麼到底該不該加 @EnableWebSecurity 註解呢?今天就來和大夥聊一聊這個話題。 一 @EnableWeb

spring , springsecurity , JAVA

江南一點雨 - Spring Security 註冊過濾器注意事項

前兩天和小夥伴聊了 Spring Security+JWT 實現無狀態登錄,然後有小夥伴反饋了一個問題,感覺這是一個我們平時寫代碼容易忽略的問題,寫一篇文章和小夥伴們聊一聊。 一 問題復原 先來説問題吧,在 Spring Security+JWT 登錄中,整體上的思路就是用户登錄成功之後返回 JWT 字符串,然後以後用户每次請求都攜帶上 JWT 字符串,服務端進行校驗,校驗通過之後,請求繼續執行。

spring , JAVA , spring-security

江南一點雨 - HttpSecurity 是如何組裝過濾器鏈的

有小夥伴們問到這個問題,簡單寫篇文章和大夥聊一下。 一 SecurityFilterChain 首先大夥都知道,Spring Security 裏邊的一堆功能都是通過 Filter 來實現的,無論是認證、RememberMe Login、會話管理、CSRF 處理等等,各種功能都是通過 Filter 來實現的。 所以,我們配置 Spring Security,説白了其實就是配置這些 Filter。

spring , springsecurity , JAVA

江南一點雨 - 最新版Spring Security 中的路徑匹配方案!

[toc] Spring Security 是一個功能強大且可高度定製的安全框架,它提供了一套完整的解決方案,用於保護基於 Spring 的應用程序。在 Spring Security 中,路徑匹配是權限控制的核心部分,它決定了哪些請求可以訪問特定的資源。本文將詳細介紹 Spring Security 中的路徑匹配策略,並提供相應的代碼示例。 在舊版的 Spring Security 中,路

spring , JAVA , spring-security

江南一點雨 - 通過方法引用獲取屬性名的底層邏輯是什麼?

很多小夥伴可能都用過 MyBatis-Plus,這裏邊我們構造 where 條件的時候,可以直接通過方法引用的方式去指定屬性名: LambdaQueryWrapperBook qw = new LambdaQueryWrapper(); qw.eq(Book::getId, 2); ListBook list = bookMapper.selectList(qw); System.out.prin

lambda , mybatis-plus , JAVA , Mybatis

江南一點雨 - 似懂非懂的 AspectJ

今天想和小夥伴們聊一下我們在使用 Spring AOP 時,一個非常常見的概念 AspectJ。 1. 關於代理 小夥伴們知道,Java 23 種設計模式中有一種模式叫做代理模式,這種代理我們可以將之稱為靜態代理,Spring AOP 我們常説是一種動態代理,那麼這兩種代理的區別在哪裏呢? 1.1 靜態代理 這種代理在我們日常生活中其實非常常見,例如房屋中介就相當於是一個代理,當房東需要出租房子的

spring , aop , JAVA

江南一點雨 - Spring AOP 中的代理對象是怎麼創建出來的?

@[toc] 今天和小夥伴們聊一聊 Spring AOP 中的代理對象是怎麼創建出來的,透過這個過程再去熟悉一下 Bean 的創建過程。 最近幾篇文章都是和小夥伴們聊 Spring 容器的一些使用細節,結合這些細節再看一看源碼,等到這些功能都看完之後,我會再做一個彙總,到時候小夥伴們對 Spring 容器的整個創建過程就會有一個比較完整的瞭解了。 1. AOP 用法 先來一個簡單的案例,小夥

spring , aop , JAVA

江南一點雨 - Spring AOP 中,切點有多少種定義方式?

在 Spring AOP 中,我們最常用的切點定義方式主要是兩種: 使用 execution 進行無侵入攔截。 使用註解進行攔截。 這應該是是小夥伴們日常工作中使用最多的兩種切點定義方式了。但是除了這兩種還有沒有其他的呢?今天鬆哥就來和大家聊一聊這個話題。 1. Pointcut 分類 來看下 Pointcut 的定義: public interface Pointcut { Cl

spring , aop , JAVA

江南一點雨 - 玩一玩編程式 AOP

@[toc] 平時我們項目中涉及到 AOP,基本上就是聲明式配置一下就行了,無論是基於 XML 的配置還是基於 Java 代碼的配置,都是簡單配置即可使用。聲明式配置有一個好處就是對源代碼的侵入小甚至是零侵入。不過今天鬆哥要和小夥伴們聊一聊編程式的 AOP,為什麼要聊這個話題呢?因為在 Spring 源碼中,底層就是通過這種方式創建代理對象的,所以如果自己會通過編程式的方式進行 AOP 開發

spring , aop , JAVA

江南一點雨 - Spring Security6 全新寫法,大變樣!

@[toc] Spring Security 在最近幾個版本中配置的寫法都有一些變化,很多常見的方法都廢棄了,並且將在未來的 Spring Security7 中移除,因此鬆哥在去年舊文的基礎之上,又補充了一些新的內容,重新發一下,供各位使用 Spring Security 的小夥伴們參考。 接下來,我把從 Spring Security5.7 開始(對應 Spring Boot2.7 開始

spring , springsecurity , springboot , JAVA

江南一點雨 - 到底什麼樣的 REST 才是最佳 REST?

説起 REST API,小夥伴們多多少少都有聽説過,但是如果讓你詳細介紹一下什麼是 REST,估計會有很多人講不出來,或者只講出來其中一部分。 今天鬆哥就來和大家一起來聊一聊到底什麼是 REST,順便再來看下 Spring HATEOAS 的用法。 1. REST 成熟模型 首先關於 REST,有一個大佬 Leonard Richardson 為 REST 定義了一個成熟度模型,他一共定義了四個不

rest , springboot , JAVA

江南一點雨 - Flowable 外置的 HTML 表單怎麼玩?

上篇文章我們一起學習了 Flowable 中的動態表單,動態表單説白了就是把變量打包定義,零存整取。但是小夥伴們可能很難實實在在 GET 到動態表單一些有創造性的功能,所以今天我們就來繼續看看 Flowable 中的外置表單怎麼玩,這個跟動態表單有一些本質上的差別。 1. 外置表單 首先,所謂的外置表單,其實説白了,類似我們平時在 HTML 中寫的 form 表單。 現在的 flowable 中,

workflow , java-ee , JAVA

江南一點雨 - 流程表單初體驗

@[toc] 有小夥伴在星球上催了好幾次了,今天鬆哥就來和大家聊一聊流程中的表單。 1. 表單分類 整體上來説,我們可以將表單分為三種不同的類型: 動態表單:這種表單定義方式我們可以配置表單中每一個字段的可讀性、可寫性、是否必填等信息,不過不能定義完整的表單頁面。 外置表單:外置表單我們只需要定義一下表單的 key,至於這個 key 對應的表單是什麼樣子,則由開發者自己去維護。 內置

workflow , spring , java-ee , JAVA

江南一點雨 - Flowable 定時器的各種玩法

@[toc] 今天我們來聊一聊 Flowable 中的定時器。 1. 流程定義定時激活 在之前鬆哥給小夥伴們介紹流程定義的時候,流程都是定義好之後立馬就激活了,其實在流程定義的這個過程中,我們還可以設置一個激活時間,也就是流程定義好之後,並不會立馬激活(不激活就不能據此流程定義創建新流程),而是在延遲某一個固定時間之後,才會激活,代碼如下: @RestController public cl

workflow , java-ee , springboot , JAVA , java-web