非對稱加密算法(RSA、ECC、SM2)——密碼學基礎

對稱加密算法(AES、ChaCha20和SM4)Python實現——密碼學基礎(Python出現No module named “Crypto” 解決方案)

這篇的續篇,因此實踐部分少些;


文章目錄

  • 一、非對稱加密算法基礎
  • 二、RSA算法
    • 2.1 RSA原理與數學基礎
    • 2.2 RSA密鑰長度與安全性
    • 2.3 RSA實現工具與庫
    • 2.4 RSA的局限性
  • 三、橢圓曲線密碼學(ECC)
    • 3.1 ECC原理與數學基礎
    • 3.2 常用橢圓曲線標準
    • 3.3 ECC與RSA比較
    • 3.4 ECC實現工具與庫
  • 四、國密算法SM2
    • 4.1 SM2算法概述
    • 4.2 SM2技術特點
    • 4.3 SM2與國際算法對比
    • 4.4 SM2實現與應用
  • 五、非對稱加密實踐建議
    • 5.1 密鑰管理
    • 5.2 安全實現注意事項
    • 5.3 混合加密系統設計
    • 5.4 跨境合規與算法選擇
  • 六、未來發展與量子安全
    • 6.1 量子計算威脅
    • 6.2 后量子密碼學
    • 6.3 算法過渡策略
    • 6.4 永恒密鑰問題與前向保密
  • 七、總結與建議
  • 附錄:專業術語表


一、非對稱加密算法基礎

非對稱加密概述

非對稱加密是現代密碼學的基石,它使用一對密鑰(公鑰和私鑰)進行加密和解密操作。與傳統的對稱加密不同,非對稱加密解決了密鑰分發的難題,為互聯網安全通信奠定了基礎。

非對稱加密的基本工作原理是:

  • 使用接收方的公鑰加密信息,只有擁有對應私鑰的接收方才能解密
  • 使用發送方的私鑰簽名信息,任何人都可以使用發送方的公鑰驗證簽名的真實性

這種機制為網絡通信帶來了機密性、完整性和不可否認性等關鍵安全特性。

常見應用場景

非對稱加密在日常數字生活中無處不在:

  • HTTPS安全通信:保護網絡瀏覽安全
  • 數字簽名:確保電子文檔的真實性和完整性
  • PKI(公鑰基礎設施):管理和分發數字證書
  • SSH安全連接:保護遠程服務器訪問
  • 區塊鏈與加密貨幣:保護數字資產交易
  • 安全電子郵件:加密敏感通信內容

二、RSA算法

2.1 RSA原理與數學基礎

RSA算法由Ron Rivest、Adi Shamir和Leonard Adleman三位密碼學家于1977年提出,是最早的公鑰密碼系統之一,至今仍被廣泛使用。

RSA的安全性基于大整數分解的計算困難性。其核心數學原理如下:

  1. 選擇兩個大質數p和q,計算乘積n = p × q
  2. 計算歐拉函數φ(n) = (p-1) × (q-1)
  3. 選擇一個與φ(n)互質的整數e作為公鑰指數
  4. 計算e的模反元素d,使得e × d ≡ 1 (mod φ(n)),d作為私鑰指數
  5. 公鑰為(n, e),私鑰為(n, d)

加密過程:c = m^e mod n (其中m為明文)
解密過程:m = c^d mod n (其中c為密文)

2.2 RSA密鑰長度與安全性

RSA的安全性主要取決于密鑰長度,常見的密鑰長度包括:

  • 1024位:已被認為不夠安全,不應在新系統中使用
  • 2048位:當前推薦的最低標準,適合一般應用
  • 3072位:滿足中等安全需求,預計安全至2030年
  • 4096位:提供更高安全性,適合對安全有極高要求的場景

密鑰長度增加會降低性能,需要在安全性和效率之間權衡。美國國家標準與技術研究院(NIST)和各國密碼管理機構會定期更新密鑰長度推薦標準。

2.3 RSA實現工具與庫

實現RSA加密時,應盡量使用經過充分測試的開源庫,而非自行實現:

  • OpenSSL:跨平臺的開源密碼學工具包和庫

    # 生成RSA私鑰
    openssl genrsa -out private.pem 2048
    # 從私鑰提取公鑰
    openssl rsa -in private.pem -pubout -out public.pem
    # 使用公鑰加密文件
    openssl rsautl -encrypt -pubin -inkey public.pem -in plaintext.txt -out encrypted.txt
    # 使用私鑰解密文件
    openssl rsautl -decrypt -inkey private.pem -in encrypted.txt -out decrypted.txt
    
  • 編程語言庫:

    • Java: java.security和Bouncy Castle
    KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
    keyGen.initialize(2048);
    KeyPair pair = keyGen.generateKeyPair();
    PublicKey publicKey = pair.getPublic();
    PrivateKey privateKey = pair.getPrivate();
    
    • Python: cryptography和PyCryptodome
    from cryptography.hazmat.primitives.asymmetric import rsa
    private_key = rsa.generate_private_key(public_exponent=65537,key_size=2048
    )
    public_key = private_key.public_key()
    
    • .NET: System.Security.Cryptography
    using (RSA rsa = RSA.Create(2048))
    {string publicKey = Convert.ToBase64String(rsa.ExportRSAPublicKey());string privateKey = Convert.ToBase64String(rsa.ExportRSAPrivateKey());
    }
    

2.4 RSA的局限性

盡管RSA廣泛應用,但它也存在一些局限:

  • 性能問題:RSA運算相對耗時,不適合加密大量數據
  • 量子計算威脅:理論上,量子計算機可以使用Shor算法在多項式時間內分解大整數
  • 實現漏洞:不當實現可能導致側信道攻擊

在實際應用中,通常將RSA與對稱加密結合使用:用RSA加密對稱密鑰,再用對稱密鑰加密實際數據,這種混合加密既保證了安全性,又提高了效率。


三、橢圓曲線密碼學(ECC)

3.1 ECC原理與數學基礎

橢圓曲線密碼學基于橢圓曲線上的離散對數問題,其數學復雜度比整數分解更高,因此可以用更短的密鑰提供同等安全級別。

ECC的基本橢圓曲線方程形式為:y2 = x3 + ax + b (mod p)

其中關鍵的數學原理包括:

  1. 定義在有限域上的橢圓曲線點集
  2. 曲線上點的加法運算
  3. 點的標量乘法(即連續加法):Q = kP,已知P和k容易計算Q,但已知P和Q難以求解k

這一數學難題稱為橢圓曲線離散對數問題(ECDLP),是ECC安全性的基礎。

3.2 常用橢圓曲線標準

實際應用中,使用標準化的橢圓曲線參數集可確保安全性和互操作性:

  • NIST曲線:美國標準,如P-256、P-384和P-521
  • Brainpool曲線:歐洲標準,提供替代參數集
  • Curve25519和Curve448:更現代的曲線,設計目標是抵抗側信道攻擊
  • secp256k1:比特幣和以太坊等加密貨幣使用的曲線

選擇曲線時應考慮安全性、性能和各國監管要求。

3.3 ECC與RSA比較

ECC相比RSA的主要優勢:

安全級別RSA密鑰長度ECC密鑰長度ECC優勢比例
80位1024位160-223位約5倍
112位2048位224-255位約8倍
128位3072位256-383位約12倍
192位7680位384-511位約20倍
256位15360位512位以上約30倍

ECC的其他優勢:

  • 更低的計算復雜度,特別適合資源受限設備
  • 更小的密文和簽名大小,節省帶寬和存儲空間
  • 更快的密鑰生成速度

缺點:

  • 實現復雜度高于RSA
  • 專利問題(部分曲線和實現)
  • 相對較新,長期安全性評估少于RSA

3.4 ECC實現工具與庫

  • OpenSSL支持多種橢圓曲線:

    # 查看支持的橢圓曲線
    openssl ecparam -list_curves# 生成ECC私鑰(使用P-256曲線)
    openssl ecparam -name prime256v1 -genkey -noout -out private.pem# 從私鑰提取公鑰
    openssl ec -in private.pem -pubout -out public.pem
    
  • 編程語言庫:

    • Java:
    KeyPairGenerator keyGen = KeyPairGenerator.getInstance("EC");
    ECGenParameterSpec ecSpec = new ECGenParameterSpec("secp256r1");
    keyGen.initialize(ecSpec);
    KeyPair pair = keyGen.generateKeyPair();
    
    • Python:
    from cryptography.hazmat.primitives.asymmetric import ec
    private_key = ec.generate_private_key(ec.SECP256R1()
    )
    public_key = private_key.public_key()
    
    • JavaScript (使用Web Crypto API):
    async function generateECDHKeys() {const keyPair = await window.crypto.subtle.generateKey({name: "ECDH",namedCurve: "P-256"},true,["deriveKey", "deriveBits"]);return keyPair;
    }
    

四、國密算法SM2

4.1 SM2算法概述

SM2是中國商用密碼算法標準之一,由國家密碼管理局于2010年發布,是基于橢圓曲線密碼學的非對稱加密算法。SM2是"國密"體系中的重要組成部分,與SM3(哈希算法)和SM4(對稱加密算法)共同構建中國自主知識產權的密碼體系。

SM2包含三部分功能:

  • 數字簽名算法
  • 密鑰交換協議
  • 公鑰加密算法

4.2 SM2技術特點

SM2具有以下技術特點:

  • 基于橢圓曲線數學原理,曲線方程為:y2 = x3 + ax + b (mod p)
  • 使用256位密鑰長度,安全性等同于RSA 3072位
  • 采用中國自定義的橢圓曲線參數

4.3 SM2與國際算法對比

SM2與國際常用的ECC算法相比:

  • 安全性:理論上與同等密鑰長度的國際ECC算法具有相當安全性
  • 性能:在中國設計的密碼硬件上可能有更優的性能表現
  • 算法差異:采用不同的橢圓曲線參數和預處理方法
  • 應用范圍:在中國政府、金融機構和關鍵基礎設施中強制使用

對于跨國企業,需要同時支持國際標準和國密標準。

4.4 SM2實現與應用

SM2在中國有廣泛應用:

  • 電子政務系統
  • 金融支付系統
  • 數字證書
  • 安全通信
  • 網絡身份認證

實現SM2的工具與庫:

  • GmSSL:支持國密算法的OpenSSL分支

    # 生成SM2密鑰對
    gmssl sm2keygen -out sm2.key# 從私鑰提取公鑰
    gmssl sm2pubout -in sm2.key -out sm2.pub# 使用公鑰加密
    gmssl sm2encrypt -in plaintext.txt -inkey sm2.pub -out ciphertext.bin# 使用私鑰解密
    gmssl sm2decrypt -in ciphertext.bin -inkey sm2.key -out decrypted.txt
    
  • 編程語言支持:

    • Java: Bouncy Castle提供SM2支持
    ECGenParameterSpec sm2Spec = new ECGenParameterSpec("sm2p256v1");
    KeyPairGenerator kpg = KeyPairGenerator.getInstance("EC", "BC");
    kpg.initialize(sm2Spec);
    KeyPair keyPair = kpg.generateKeyPair();
    
    • Go: tjfoc/gmsm庫
    import "github.com/tjfoc/gmsm/sm2"privateKey, _ := sm2.GenerateKey()
    publicKey := &privateKey.PublicKey
    

五、非對稱加密實踐建議

5.1 密鑰管理

良好的密鑰管理是非對稱加密安全的基礎:

  • 私鑰保護:

    • 使用硬件安全模塊(HSM)或可信平臺模塊(TPM)存儲私鑰
    • 加密存儲私鑰,使用強密碼和密鑰派生函數(KDF)
    • 實施最小權限原則,限制私鑰訪問
    • 定期輪換密鑰,減少長期暴露風險
  • 公鑰分發:

    • 使用可信的公鑰基礎設施(PKI)
    • 驗證公鑰指紋或哈希值
    • 使用帶外渠道確認公鑰
  • 密鑰備份與災難恢復:

    • 安全備份私鑰,考慮分片存儲
    • 制定密鑰恢復流程,防止單點故障
    • 記錄密鑰元數據,如算法、長度、用途和過期日期

5.2 安全實現注意事項

非對稱加密實現中的常見安全隱患:

  • 隨機數生成:使用密碼學安全的隨機數生成器(CSPRNG)
  • 填充機制:采用OAEP等現代填充方案,避免傳統PKCS#1 v1.5填充
  • 側信道防護:實施恒定時間算法和內存清理
  • 算法參數驗證:驗證輸入參數,防止小子群攻擊等
  • 錯誤處理:使用一致的錯誤消息,避免泄露敏感信息

5.3 混合加密系統設計

實際應用中,通常將非對稱加密與對稱加密結合:

  1. 隨機生成會話密鑰(對稱密鑰)
  2. 使用非對稱公鑰加密會話密鑰
  3. 使用會話密鑰加密實際數據
  4. 傳輸加密的會話密鑰和數據

這種方法結合了非對稱加密的密鑰管理優勢和對稱加密的性能優勢。

TLS協議是混合加密的典型應用:

  • 使用非對稱加密進行身份認證和密鑰交換
  • 協商會話密鑰后使用對稱加密保護通信內容

5.4 跨境合規與算法選擇

全球化業務面臨的密碼算法合規問題:

  • 中國:關鍵信息基礎設施需使用國密算法(SM2/SM3/SM4)
  • 美國:政府系統通常使用NIST批準的算法
  • 歐盟:遵循ETSI和ENISA標準
  • 俄羅斯:某些場景要求使用GOST算法

解決方案:

  • 開發多算法支持架構
  • 實施區域性密碼政策
  • 保持算法更新機制,應對新標準和安全威脅

六、未來發展與量子安全

6.1 量子計算威脅

量子計算對當前非對稱加密構成嚴重威脅:

  • Shor算法:理論上可以在多項式時間內解決整數分解和離散對數問題
  • 影響:RSA、DSA、ECC等傳統非對稱算法將不再安全
  • 時間窗口:專家估計實用量子計算機可能在10-20年內出現

6.2 后量子密碼學

為應對量子威脅,研究者開發了多種后量子密碼算法:

  • 格密碼:基于格中最短向量問題(SVP)和最近向量問題(CVP)的困難性
  • 基于哈希的簽名:利用哈希函數的單向性構建簽名方案
  • 多變量多項式:基于求解多變量非線性方程組的困難性
  • 基于編碼的密碼:利用解碼隨機線性碼的困難性
  • 同態密碼:支持對加密數據直接進行計算

NIST后量子密碼標準化進程已選擇多個候選算法,包括:

  • CRYSTALS-Kyber:格密碼密鑰封裝機制(KEM)
  • CRYSTALS-Dilithium、FALCON和SPHINCS+:數字簽名算法

6.3 算法過渡策略

組織應制定量子安全過渡計劃:

  1. 密碼敏捷性:設計支持快速算法更換的系統架構
  2. 混合方案:同時使用傳統算法和后量子算法
  3. 風險評估:識別量子威脅下的關鍵資產和長期敏感數據
  4. 保持監控:跟蹤量子計算進展和密碼標準更新
  5. 早期采用:在非關鍵系統中試點后量子算法

6.4 永恒密鑰問題與前向保密

應對"保存現在、破解未來"的威脅:

  • 實施前向保密機制:使用臨時密鑰,即使長期密鑰泄露也不影響歷史通信安全
  • 密鑰限時:限制密鑰使用時間,減少長期暴露風險
  • 數據生命周期管理:確定數據保護期限,超期數據安全銷毀

七、總結與建議

基于不同場景的算法推薦:

  • 通用企業應用:RSA-2048或ECC P-256
  • 對性能敏感場景:優先選擇ECC
  • 移動和物聯網設備:ECC或輕量級后量子算法
  • 中國境內系統:遵循國密標準,使用SM2
  • 長期數據保護:考慮混合使用傳統算法和后量子算法

定期評估密碼系統安全性:

  • 密碼算法及參數審查
  • 密鑰管理流程評估
  • 實現安全性測試(包括側信道分析)
  • 密碼邊界識別和保護
  • 加密文檔與策略審查

密碼學的真正目標不是創造隔離,而是在保障安全的前提下構建信任和連接。


附錄:專業術語表

A

  • 非對稱加密(Asymmetric Encryption):使用公鑰和私鑰對的加密系統
  • 認證(Authentication):驗證身份或信息來源的過程

B

  • 區塊鏈(Blockchain):使用密碼學鏈接的分布式賬本技術
  • 暴力攻擊(Brute Force Attack):通過嘗試所有可能的密鑰值來破解加密

C

  • 密文(Ciphertext):經過加密的數據
  • 密碼學(Cryptography):研究信息安全的科學
  • 證書(Certificate):包含公鑰和身份信息的數字文檔

D

  • 解密(Decryption):將密文轉換回明文的過程
  • 數字簽名(Digital Signature):驗證消息來源和完整性的密碼機制

E

  • 橢圓曲線密碼學(Elliptic Curve Cryptography, ECC):基于橢圓曲線數學的加密方法
  • 加密(Encryption):將明文轉換為密文的過程

F

  • 前向保密(Forward Secrecy):確保即使長期密鑰泄露也不影響過去通信安全的屬性

H

  • 哈希函數(Hash Function):將任意大小數據映射為固定大小值的單向函數
  • 硬件安全模塊(Hardware Security Module, HSM):專用于密碼操作的安全硬件設備

K

  • 密鑰(Key):控制加密和解密操作的參數
  • 密鑰長度(Key Length):密鑰的位數,影響安全強度
  • 密鑰管理(Key Management):生成、存儲、分發和銷毀密鑰的流程

M

  • 明文(Plaintext):未加密的原始數據

N

  • 隨機數(Nonce):只使用一次的隨機值,用于防止重放攻擊

O

  • OpenSSL:廣泛使用的開源密碼學工具包和庫

P

  • 公鑰(Public Key):可公開分享的密鑰,用于加密或驗證簽名
  • 私鑰(Private Key):需保密的密鑰,用于解密或創建簽名
  • 公鑰基礎設施(Public Key Infrastructure, PKI):管理數字證書的系統和流程

Q

  • 量子計算(Quantum Computing):利用量子力學原理進行計算的技術
  • 量子密碼學(Quantum Cryptography):利用量子力學原理設計的密碼系統

R

  • RSA:基于大整數分解難題的非對稱加密算法
  • 隨機數生成器(Random Number Generator):生成隨機值的算法或設備

S

  • 簽名(Signature):證明消息來源和完整性的加密結構
  • 側信道攻擊(Side-channel Attack):通過分析實現的物理特性破解密碼系統
  • SM2:中國國家密碼管理局發布的橢圓曲線公鑰密碼算法

T

  • 傳輸層安全(Transport Layer Security, TLS):保護網絡通信的加密協議

Z

  • 零知識證明(Zero-knowledge Proof):證明者可以向驗證者證明一個陳述是真實的,而不泄露除了該陳述為真之外的任何信息

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/78545.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/78545.shtml
英文地址,請注明出處:http://en.pswp.cn/web/78545.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Pillow 玩圖術:輕松獲取圖片尺寸和顏色模式

前言 在這個“圖像為王”的時代,誰還敢說自己沒被一張圖折磨過?一張圖片不講武德,說崩就崩,說卡就卡,仿佛像素里藏著程序員的眼淚。不管你是網頁設計師、AI煉丹師,還是只是想把貓片修得像藝術品,圖片的尺寸和顏色模式都是你必須掌握的第一手情報。如果你不知道它有多寬…

下載core5compat 模塊時,被禁止,顯示 - servese replied: Forbbidden. -->換鏡像源

怎么解決? --->換鏡像源 方法 1:使用命令行參數指定鏡像源 在運行 Qt 安裝器時,通過 --mirror 參數指定鏡像源: # Windows qt-unified-windows-x64-online.exe --mirror https://mirrors.ustc.edu.cn/qtproject# Linux/macO…

WPF中Behaviors

行為的好處 可以把復雜的界面邏輯抽象出去&#xff0c;讓xaml的界面設計更簡單&#xff0c;更清爽 1.安裝包 Microsoft.Xaml.Behaviors.Wpf2.簡單實現拖動效果 <Border Width"100"Height"100"Background"Red"><i:Interaction.Behav…

GitHub 趨勢日報 (2025年05月03日)

本日報由 TrendForge 系統生成 https://trendforge.devlive.org/ &#x1f4c8; 今日整體趨勢 Top 10 排名項目名稱項目描述今日獲星總星數語言1hacksider/Deep-Live-Camreal time face swap and one-click video deepfake with only a single image? 1582? 59337Python2aip…

Oracle OCP認證考試考點詳解083系列08

題記&#xff1a; 本系列主要講解Oracle OCP認證考試考點&#xff08;題目&#xff09;&#xff0c;適用于19C/21C,跟著學OCP考試必過。 36. 第36題&#xff1a; 題目 解析及答案&#xff1a; 關于數據庫閃回&#xff08;FLASHBACK DATABASE&#xff09;功能&#xff0c;以下…

優化01-統計信息

Oracle 的統計信息是數據庫優化器生成高效執行計劃的核心依據。它記錄了數據庫對象&#xff08;如表、索引、列等&#xff09;的元數據信息&#xff0c;幫助優化器評估查詢成本并選擇最優執行路徑。以下是關于 Oracle 統計信息的詳細介紹&#xff1a; 一、統計信息的分類 表統…

動態規劃-面試題08.01三步問題-力扣(LeetCode)

一、題目解析 此題可以類比第N個泰波那契數 二、算法解析 1、狀態表示 根據上面的分析和題目要求&#xff0c;dp[i]表示&#xff1a;到達i位置&#xff0c;一共有多少種方法 2、狀態轉移方程 以i位置的狀態&#xff0c;以最近一步劃分問題 dp[i] 從i-1->i dp[i-1] 從…

kotlin中枚舉帶參數和不帶參數的區別

一 ? 代碼對比總結 第一段&#xff08;帶參數 工具方法&#xff09; enum class SeatPosition(val position: Int) {DRIVER_LEFT(0),DRIVER_RIGHT(1),SECOND_LEFT(2),SECOND_RIGHT(3);companion object {fun fromPosition(position: Int): SeatPosition? {return SeatPosi…

Java使用JDBC操作數據庫

1.創建一個數據庫一會用來連接 2.使用idea新建一個Java項目 3.在pom文件中加上相關依賴&#xff0c;并配置Maven路徑 <dependencies><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>…

重名導致does not name a type

今天在Ubuntu24.04上編成時&#xff0c;makefile編譯報錯: falsecolor.h:48:9: error: ‘FalseColor’ does not name a type48 | FalseColor* content ;| ^~~~~~~~~~falsecolor.h的部分代碼如下: class FalseColor {public:FalseColor(int w, int h){width …

Vue3 后臺管理系統模板

Vue3 后臺管理系統模板 gie倉庫地址 一個基于 Vue3 TypeScript Element Plus 的后臺管理系統模板&#xff0c;集成了動態路由和權限管理功能。 技術棧 Vue 3.2TypeScript 4.5Vue Router 4Vuex 4Element Plus 2.9AxiosLess 功能特性 &#x1f680; 基于 Vue3 最新技術棧開…

林業數智化轉型初步設計方案

最近應林業方面的朋友要求,幫助其設計了林業方面的數字化智能化轉型的方案設計,編寫了如下內容,供大家參考,林業方面主要有三大方向,即林業生態、生物災害和疫源疫病,目前已經建成了一些信息化系統,但在數字化智能化方面偏弱,就想著如何借助人工智能、物聯網、大數據和…

springboot單體項目的執行流程

首先就是啟動springboot項目&#xff0c;即執行主函數&#xff0c;這個主函數的類通常帶有SpingBootApplication注解&#xff0c;類中的main方法就是程序的入口。 啟動主函數后&#xff0c;SpringBoot會按特定順序加載配置文件&#xff0c;如application.properties或applicat…

Python格式化字符串的四種方法

Python格式化字符串的四種方法 1.使用 % 運算符 %s 是一個字符串的占位符&#xff0c;而 “World” 是替換它的值 print("Hello, %s!" % "World") # 輸出&#xff1a;Hello, World!你可以使用多個占位符 注意&#xff1a;多個變量占位&#xff0c;變量要…

【Redis】緩存|緩存的更新策略|內存淘汰策略|緩存預熱、緩存穿透、緩存雪崩和緩存擊穿

思維導圖&#xff1a; Redis最主要的用途&#xff0c;三個方面&#xff1a; 1.存儲數據&#xff08;內存數據庫&#xff09; 2.緩存&#xff08;redis最常用的場景&#xff09; 3.消息隊列 一、什么是緩存 我們知道對于硬件的訪問速度來說&#xff0c;通常情況下&#xff1…

中陽視角下的趨勢確認策略:以數據為核心的交易思維

中陽視角下的趨勢確認策略&#xff1a;以數據為核心的交易思維 在動態交易市場中&#xff0c;如何在波動中捕捉相對確定的趨勢&#xff0c;是每一位操作者關心的問題。“中陽”理念主張通過結構性價格分析&#xff0c;判斷市場情緒的拐點。尤其是在出現大陽線或中陽線時&#x…

【C/C++】inline關鍵詞

C inline 關鍵字學習筆記 一、什么是 inline 函數&#xff1f; inline&#xff08;內聯&#xff09;是 C 中的一個關鍵字&#xff0c;表示“將函數的代碼直接插入到調用點”&#xff0c;以減少函數調用開銷&#xff0c;提升執行效率。 ? 注意&#xff1a;inline 是一種“請求…

React useMemo函數

第一個參數是回調函數&#xff0c;返回計算的結果&#xff0c;第二個參數是依賴項&#xff0c;該函數只監聽count1變量的變化 import { useReducer, useState } from react; import ./App.css;// 定義一個Reducer函數 根據不同的action進行不同的狀態修改 function reducer(st…

對比測評:為什么AI編程工具需要 Rules 能力?

通義靈碼 Project Rules 在開始體驗通義靈碼 Project Rules 之前&#xff0c;我們先來簡單了解一下什么是通義靈碼 Project Rules&#xff1f; 大家都知道&#xff0c;在使用 AI 代碼助手的時候&#xff0c;有時候生成的代碼不是自己想要的&#xff0c;或者說生成的代碼采納后…

Java學習手冊:MyBatis 框架作用詳解

一、MyBatis 簡介 MyBatis 是一款優秀的持久層框架&#xff0c;用于簡化 JDBC 開發。它通過將 Java 對象與數據庫表之間的映射關系進行配置&#xff0c;使得開發者可以使用簡單的 SQL 語句和 Java 代碼來完成復雜的數據操作。MyBatis 支持自定義 SQL 語句&#xff0c;提供了靈…