原理剖析 + 實戰教程 + 資源優化總結大模型微調實戰:LoRA / QLoRA / PEFT 全解析,教你低成本玩轉大模型微調

隨著大語言模型(LLM)在自然語言處理各領域取得突破性進展,越來越多開發者和企業開始關注模型的微調方式。然而,全參數微調不僅成本高昂、資源要求極高,還容易引發過擬合與知識遺忘等問題。為此,LoRA、QLoRA、PEFT 等輕量級微調技術迅速崛起,成為大模型落地實踐的熱門選擇。

本文將全面梳理這些技術,從原理剖析到工程實戰,逐步構建一套適用于大模型適配的完整知識體系,幫助讀者以更低的資源代價、更快的速度掌握大模型微調的核心能力。

目錄

第一部分:大模型微調背景與挑戰

🧠 為什么需要微調?

📉 全參數微調的困境

🔍 微調的典型應用場景

🧭 微調的新思路:輕量化微調登場

第二部分:LoRA原理與實現全剖析

1. LoRA 背后的核心思想:低秩矩陣近似

?編輯2. 數學原理簡單解釋(易懂版)

3. LoRA 訓練的具體實現機制

插入位置:哪些層插 LoRA?

參數配置含義

4. 使用 HuggingFace + PEFT 實現 LoRA 微調

5. LoRA 的實際效果如何?

第三部分:QLoRA:輕量內存占用的黑科技

1. QLoRA 的核心創新點

2. 量化技術詳解:什么是 NF4?

3. HuggingFace 生態下的 QLoRA 實現

? 安裝環境

? 載入4bit模型 + 配置QLoRA參數

? 啟動訓練(可配合 Trainer 或 SFTTrainer)

4. 性能與顯存對比實測

第四部分:PEFT 框架全家桶解析

1. PEFT 支持的微調方法一覽

2. PEFT 架構與核心概念

3. 使用 PEFT 快速實現多種微調

4. PEFT 與 Checkpoint 存儲機制

第五部分:實戰案例:微調大模型對話助手

1. 項目目標與模型選擇

2. 數據集準備

3. 配置訓練流程(以 QLoRA + PEFT 為例)

4. 微調效果驗證與評估


第一部分:大模型微調背景與挑戰

在大語言模型(LLM, Large Language Models)迅速發展的浪潮下,越來越多的企業和開發者希望將預訓練模型應用到特定領域,如法律、醫療、金融、客服等垂直場景。然而,盡管開源大模型如 LLaMA、Baichuan、ChatGLM 已經具備強大的通用語言能力,但“原地使用”往往無法滿足實際業務中的專業需求和語境差異,這就引出了微調(Fine-tuning)的重要性。

🧠 為什么需要微調?

預訓練語言模型是基于海量通用語料構建的,雖然具備強大的上下文理解能力,但在面對特定任務時,它往往表現得“知其然不知其所以然”:

  • 例如,金融領域的問題“什么是量化寬松政策?”如果用未微調的LLM回答,可能泛泛而談,而缺乏專業術語和精準表達。

  • 醫療問答中,常見的模型輸出有誤診、回答模糊等風險,顯然不能直接投入使用。

  • 電商客服中,常規大模型容易出現語氣不一致、品牌信息錯誤等現象。

因此,通過微調使模型對特定數據、任務、語氣風格進行定向強化,是大模型落地的重要一環。


📉 全參數微調的困境

最直觀的微調方式就是“全參數微調(Full Fine-tuning)”,即對整個模型的所有權重進行再訓練。但這也帶來了以下致命問題:

問題描述
顯存消耗極大微調一個 65B 參數模型,顯存需求往往高達數百GB,普通A100也吃不消
成本高昂全參數更新意味著參數量 × 訓練步數 × 精度,云資源開銷極高
更新慢大模型訓練速度慢,Checkpoint 體積龐大,調參周期長
參數冗余實際上許多下游任務只需要調整小部分權重,更新全部參數效率極低
不易遷移多任務微調時容易“遺忘”原有能力(catastrophic forgetting)

尤其對于個人開發者或中小企業而言,全參數微調幾乎是不可承受之重


🔍 微調的典型應用場景

以下是一些典型的大模型微調應用案例,幫助讀者理解這項技術的實際價值:

  • 行業定制:基于財報數據微調模型,讓它回答財務分析類問題

  • 風格遷移:將原模型訓練為具有特定語氣風格的客服機器人(如京東、小米語氣)

  • 指令強化:通過指令微調(Instruction tuning)讓模型學會“聽話”:按照固定格式答復、按步驟思考

  • 多輪對話:加入對話歷史上下文信息,提升多輪問答的連貫性與上下文理解

這些場景有一個共同點:**只需“稍加調整”,就能大幅提升模型在特定任務下的表現。**這也促使我們思考——有沒有可能做到“只調一小部分參數,就能獲得很好的效果”?


🧭 微調的新思路:輕量化微調登場

針對上述問題,研究者提出了各種輕量化微調方案:

  • Adapter Tuning:在網絡中插入額外模塊,僅訓練這部分參數;

  • Prompt Tuning / Prefix Tuning:凍結模型,僅訓練“提示詞前綴”;

  • LoRA(Low-Rank Adaptation):使用矩陣分解方法,僅訓練插入的小矩陣;

  • QLoRA:結合量化壓縮與LoRA,顯存優化進一步升級;

  • PEFT(Parameter-Efficient Fine-Tuning):將上述方法統一成一個通用框架。

這些方法顯著降低了計算資源消耗,同時還支持更靈活的多任務、增量更新,成為當前微調主流解決方案。


第二部分:LoRA原理與實現全剖析

在資源有限的現實情況下,想要“微調”一個大語言模型就像試圖用一輛小車拖動一架飛機,幾乎不可能。然而,自從LoRA(Low-Rank Adaptation of Large Language Models)被提出以來,輕量化微調不再是奢望。

1. LoRA 背后的核心思想:低秩矩陣近似

微調的本質,是更新神經網絡中的權重矩陣,比如 Transformer 中的 Attention 權重 W∈Rd×dW \in \mathbb{R}^{d \times d}W∈Rd×d。全參數微調會更新所有權重,而 LoRA 的做法是:

2. 數學原理簡單解釋(易懂版)

LoRA 的思想可以這樣直觀理解:

  • 原始模型中有一個線性層:

    y = W @ x
  • 使用 LoRA 之后,變成:

    y = W @ x + B @ (A @ x)

最終,模型學的是一個“差值”,不會破壞預訓練知識,又能精準適配新任務。

3. LoRA 訓練的具體實現機制

插入位置:哪些層插 LoRA?

在 Transformer 架構中,最常用的插入位置是:

  • Attention中的 Query (Q) 和 Value (V) 子層

  • 有時也包括 FFN中的第一層

參數配置含義
參數含義常用取值
r低秩矩陣的秩4 / 8 / 16
lora_alpha縮放系數(相當于學習率倍率)16 / 32
lora_dropoutDropout比率0.05 / 0.1
target_modules作用模塊(如q_projv_proj依模型結構而定

4. 使用 HuggingFace + PEFT 實現 LoRA 微調

pip install transformers accelerate peft datasets
from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import get_peft_model, LoraConfig, TaskTypemodel = AutoModelForCausalLM.from_pretrained("bigscience/bloomz-560m")
tokenizer = AutoTokenizer.from_pretrained("bigscience/bloomz-560m")lora_config = LoraConfig(r=8,lora_alpha=32,target_modules=["query_key_value"],lora_dropout=0.05,bias="none",task_type=TaskType.CAUSAL_LM
)model = get_peft_model(model, lora_config)
from transformers import TrainingArguments, Trainertraining_args = TrainingArguments(per_device_train_batch_size=4,num_train_epochs=3,learning_rate=1e-4,fp16=True,logging_steps=10,output_dir="./lora_model"
)trainer = Trainer(model=model,args=training_args,train_dataset=train_dataset,eval_dataset=eval_dataset,
)
trainer.train()

5. LoRA 的實際效果如何?

模型規模全參數微調準確率LoRA微調準確率參數數量對比
350M89.2%88.8%↓ 99.5%
1.3B91.5%91.2%↓ 99.2%
6.7B93.4%93.1%↓ 99.0%

第三部分:QLoRA:輕量內存占用的黑科技

雖然 LoRA 極大降低了大模型微調的參數規模,但在面對數十億乃至百億參數模型時,顯存占用依然是橫亙在開發者面前的一座“大山”。QLoRA(Quantized Low-Rank Adapter)正是在這種背景下提出的,它結合了4-bit量化技術和 LoRA 的優點,大幅降低了訓練時的內存占用,同時保留了性能表現。

1. QLoRA 的核心創新點

QLoRA 并不是一個全新的架構,而是一種 訓練優化技術組合方案,主要包含三大技術:

技術名稱功能作用
NF4 量化(4-bit NormalFloat)將權重壓縮為 4bit,保留更多信息,降低內存
Double Quantization進一步壓縮優化器狀態和梯度存儲
LoRA 插入僅訓練可調節的低秩權重,提高訓練效率

通過這三者組合,QLoRA 實現了在單張 A100 顯卡上訓練 65B 參數模型的可能性。

2. 量化技術詳解:什么是 NF4?

QLoRA 使用的是一種新的量化格式:NF4 (NormalFloat 4-bit),它不是普通的 int4,而是更接近浮點分布,能夠更好保留權重信息。

對比項int4NF4
精度較低較高
表達能力有限接近 fp16
用途推理為主訓練可用

NF4 是一種對稱的、以正態分布為核心的編碼方式,在保持低位寬的同時最大限度保留了參數分布的特征,適合用作權重矩陣的存儲格式。

3. HuggingFace 生態下的 QLoRA 實現

目前,QLoRA 的訓練流程已經由 HuggingFace 完整支持,依賴的核心庫包括:

  • transformers

  • bitsandbytes

  • peft

  • accelerate

以下是一個最小可運行的QLoRA訓練樣例:

? 安裝環境
pip install transformers datasets peft bitsandbytes accelerate
? 載入4bit模型 + 配置QLoRA參數
from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import get_peft_model, LoraConfig, TaskTypemodel = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-2-7b-hf",device_map="auto",load_in_4bit=True,quantization_config={"bnb_4bit_use_double_quant": True,"bnb_4bit_quant_type": "nf4","bnb_4bit_compute_dtype": "float16"}
)lora_config = LoraConfig(r=8,lora_alpha=32,lora_dropout=0.05,bias="none",task_type=TaskType.CAUSAL_LM
)model = get_peft_model(model, lora_config)
? 啟動訓練(可配合 TrainerSFTTrainer
from transformers import TrainingArguments, Trainertraining_args = TrainingArguments(per_device_train_batch_size=4,gradient_accumulation_steps=8,warmup_steps=100,max_steps=1000,learning_rate=2e-4,fp16=True,logging_steps=10,output_dir="./qlora_model"
)trainer = Trainer(model=model,args=training_args,train_dataset=train_dataset,eval_dataset=eval_dataset,
)
trainer.train()

4. 性能與顯存對比實測

模型規模LoRA 顯存占用QLoRA 顯存占用精度變化
7B~24 GB~12 GB下降 <0.5%
13B~45 GB~22 GB下降 <1.0%
65B無法訓練~46 GB下降 <1.5%

QLoRA 在多項任務上(SQuAD、MT-Bench等)表現與全精度微調接近,遠優于 Prompt Tuning 等方式。

第四部分:PEFT 框架全家桶解析

隨著 LoRA 和 QLoRA 等方法在大模型微調中的流行,如何高效管理這些參數高效微調策略、統一調用接口、提高工程復用性,成為了另一個重要問題。為此,HuggingFace 推出了 PEFT(Parameter-Efficient Fine-Tuning)庫,作為輕量微調方法的集成平臺。

PEFT 讓用戶可以使用統一接口快速切換不同微調技術(如 LoRA、Prefix Tuning、Prompt Tuning、IA3、AdaLoRA 等),極大提升了實驗效率和工程可維護性。

1. PEFT 支持的微調方法一覽

微調方法簡介適用場景
LoRA插入低秩矩陣,凍結原始權重通用,推薦默認首選
QLoRA結合LoRA+量化,節省顯存資源受限場景
Prefix Tuning學習一段固定前綴小樣本、指令類任務
Prompt Tuning學習提示詞向量(embedding)GPT類任務、嵌入控制
IA3對激活層縮放調節精度保留較好
AdaLoRA動態調整秩r,提升訓練效率精調期/實驗期使用

2. PEFT 架構與核心概念

PEFT 底層結構主要由以下幾個模塊組成:

  • PeftModel: 封裝了帶 Adapter 的模型;

  • PeftConfig: 存儲 LoRA/Prefix 等參數配置;

  • get_peft_model(): 用于將預訓練模型轉換為可微調結構;

  • prepare_model_for_kbit_training(): 結合QLoRA時使用,用于凍結層設置和準備量化訓練。

3. 使用 PEFT 快速實現多種微調

以 LoRA 為例,代碼如下(適用于任意 HuggingFace 支持的模型結構):

from peft import get_peft_model, LoraConfig, TaskTypelora_config = LoraConfig(r=8,lora_alpha=32,lora_dropout=0.1,bias="none",task_type=TaskType.CAUSAL_LM,target_modules=["q_proj", "v_proj"]
)
model = get_peft_model(model, lora_config)

若要切換為 Prefix Tuning,只需更換 Config 類型:

from peft import PrefixTuningConfigprefix_config = PrefixTuningConfig(num_virtual_tokens=20,task_type=TaskType.SEQ_2_SEQ_LM
)
model = get_peft_model(model, prefix_config)

這就是 PEFT 的最大優勢:統一接口 + 模塊復用 + 插拔靈活

4. PEFT 與 Checkpoint 存儲機制

PEFT 默認支持保存/加載的模型包括:

  • Adapter 權重(極小,僅幾MB)

  • 配置文件(yaml/json)

  • 可與原始模型動態合并推理

示例:保存 Adapter

model.save_pretrained("./adapter")

加載時:

from peft import PeftModel
model = PeftModel.from_pretrained(base_model, "./adapter")

如果需要部署完整模型,也支持使用 merge_and_unload() 合并參數:

model = model.merge_and_unload()
model.save_pretrained("./full")

第五部分:實戰案例:微調大模型對話助手

本節將以一個典型應用場景為例,走完整個大模型微調流程:從模型選擇、數據準備,到訓練配置、效果驗證,并提供全套代碼與提示,助力快速落地。

1. 項目目標與模型選擇

目標:基于開源 LLaMA 或 ChatGLM 模型,構建一個中文對話助手,支持通用問答、情緒對話、命令執行等能力。

推薦模型:

  • meta-llama/Llama-2-7b-hf(英文、指令微調強)

  • THUDM/chatglm2-6b(中文原生支持,部署友好)

依照資源選擇:

  • 單A100:推薦 QLoRA + ChatGLM

  • 多卡:可考慮 LLaMA2 + LoRA + Flash Attention 加速

2. 數據集準備

選用數據集:

  • Belle Group: 中文對話數據(含多輪、命令類)

  • ShareGPT: 結構化英文對話數據(需清洗)

  • OpenOrca, UltraChat: 高質量指令問答對話數據

若需自定義數據結構,可轉為如下格式:

{"instruction": "請幫我寫一段祝福語","input": "場景:公司年會","output": "祝公司年會圓滿成功,大家闔家歡樂!"
}

格式要求:instruction-based 格式適配 SFT(Supervised Fine-Tuning)流程。

3. 配置訓練流程(以 QLoRA + PEFT 為例)

from peft import LoraConfig, get_peft_model, TaskType
from transformers import AutoModelForCausalLMmodel = AutoModelForCausalLM.from_pretrained("THUDM/chatglm2-6b",device_map="auto",load_in_4bit=True,trust_remote_code=True
)lora_config = LoraConfig(r=8,lora_alpha=32,lora_dropout=0.05,task_type=TaskType.CAUSAL_LM,bias="none"
)
model = get_peft_model(model, lora_config)

使用 SFTTrainer 配合訓練配置:

from trl import SFTTrainertraining_args = TrainingArguments(output_dir="qlora-chatglm2",per_device_train_batch_size=4,gradient_accumulation_steps=4,learning_rate=2e-4,num_train_epochs=3,save_strategy="epoch",fp16=True,
)trainer = SFTTrainer(model=model,args=training_args,train_dataset=train_dataset,dataset_text_field="text",
)
trainer.train()

4. 微調效果驗證與評估

可使用以下方式評估微調效果:

  • 自定義 Prompt 測試

  • BLEU / ROUGE 指標評估生成質量

  • 引入 MT-Bench 中文版進行結構化問答打分

示例 Prompt:

### Instruction:
請推薦三種適合情侶周末出游的地方### Response:
1. 鼓浪嶼:文藝、浪漫,適合拍照;2. 千島湖:自然風光宜人;3. 烏鎮:古鎮風情濃郁。

微調后模型應表現出明顯風格變化、指令理解增強、情感表達更自然。

通過輕量化微調,可以用極低的成本,讓大模型真正適配特定任務與場景,不再止步于調用,而是深入參與模型能力構建。希望本文內容能為大家的后續深入研究與落地實踐提供參考與助力,也歡迎大家在實踐中不斷優化微調流程,推動大模型技術真正走進業務一線。

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

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

相關文章

Higress: 阿里巴巴高性能云原生API網關詳解

一、Higress概述 Higress是阿里巴巴開源的一款基于云原生技術構建的高性能API網關&#xff0c;專為Kubernetes和微服務架構設計。它集成了Ingress控制器、微服務網關和API網關功能于一體&#xff0c;支持多種協議和豐富的流量管理能力。 發展歷程 Higress 從最初社區的 Isti…

解決 IntelliJ IDEA 中 Maven 項目左側項目視圖未顯示頂層目錄問題的詳細步驟說明

以下是解決 IntelliJ IDEA 中 Maven 項目左側項目視圖未顯示頂層目錄問題的詳細步驟說明&#xff1a; 1. 切換項目視圖模式 默認情況下&#xff0c;IDEA 的項目視圖可能處于 Packages 模式&#xff0c;僅顯示代碼包結構&#xff0c;而非物理目錄。 操作步驟&#xff1a; 點擊…

【Vue-vue基礎知識】學習筆記

目錄 <<回到導覽vue基礎知識1.1.創建一個vue實例1.2.vue基礎指令1.2.1.v-bind1.2.2.v-model1.2.3.常用事件1.2.4.指令修飾符 1.3.計算屬性1.3.1.計算屬性的完整寫法1.3.2.【案例】成績 1.4.watch1.4.1.watch屬性1.4.2.翻譯業務實現1.4.3.watch屬性的完整寫法1.4.4.【案例…

Element Plus 圖標使用方式整理

Element Plus 圖標使用方式整理 以下是 Element Plus 圖標的所有使用方式&#xff0c;包含完整代碼示例和總結表格&#xff1a; 1. 按需引入圖標組件 適用場景&#xff1a;僅需少量圖標時&#xff0c;按需導入減少打包體積 示例代碼&#xff1a; <template><div>…

使用Scrapy官方開發的爬蟲部署、運行、管理工具:Scrapyd

一般情況下&#xff0c;爬蟲會使用云服務器來運行&#xff0c;這樣可以保證爬蟲24h不間斷運行。但是如何把爬蟲放到云服務器上面去呢&#xff1f;有人說用FTP&#xff0c;有人說用Git&#xff0c;有人說用Docker。但是它們都有很多問題。 FTP&#xff1a;使用FTP來上傳…

41、web前端開發之Vue3保姆教程(五 實戰案例)

一、項目簡介和需求概述 1、項目目標 1.能夠基于Vue3創建項目 2.能夠基本Vue3相關的技術棧進行項目開發 3.能夠使用Vue的第三方組件進行項目開發 4.能夠理解前后端分離的開發模式 2、項目概述 使用Vue3結合ElementPlus,ECharts工具實現后臺管理系統頁面,包含登錄功能,…

OpenCV--圖像平滑處理

在數字圖像處理領域&#xff0c;圖像平滑處理是一項極為重要的技術&#xff0c;廣泛應用于計算機視覺、醫學影像分析、安防監控等多個領域。在 OpenCV 這一強大的計算機視覺庫的助力下&#xff0c;我們能便捷地實現多種圖像平滑算法。本文將深入探討圖像平滑的原理&#xff0c;…

性能優化利器:前后端防抖方案解析

精心整理了最新的面試資料和簡歷模板&#xff0c;有需要的可以自行獲取 點擊前往百度網盤獲取 點擊前往夸克網盤獲取 在Web開發中&#xff0c;高頻觸發的事件&#xff08;如用戶輸入、按鈕點擊、滾動監聽等&#xff09;可能導致性能問題或資源浪費。防抖&#xff08;Debounce&…

【ES系列】Elasticsearch簡介:為什么需要它?(基礎篇)

?? 本文將詳細介紹Elasticsearch的前世今生,以及為什么它在當今的技術棧中如此重要。本文是ES起飛之路系列的基礎篇第一章,適合想要了解ES的讀者。 文章目錄 一、什么是Elasticsearch?1. ES的定義2. ES的核心特性2.1 分布式存儲2.2 實時搜索2.3 高可用性2.4 RESTful API3.…

用 HTML 網頁來管理 Markdown 標題序號

文章目錄 工具介紹核心優勢使用指南基本使用方法注意事項 部分截圖完整代碼 工具介紹 在日常的文檔編寫和博客創作中&#xff0c;Markdown因其簡潔的語法和良好的可讀性而廣受歡迎。然而&#xff0c;當文檔結構復雜、標題層級較多時&#xff0c;手動維護標題序號不僅耗時耗力&…

批量將 Markdown 轉換為 Word/PDF 等其它格式

在工作當中&#xff0c;我們經常會接觸到 Markdown 格式的文檔。這是一種非常方便我們做記錄&#xff0c;做筆記的一種格式文檔。現在很多互聯網編輯器都是支持 Markdown 格式的&#xff0c;編輯起文章來更加的方便簡介。有時候&#xff0c;我們會碰到需要將 Markdown 格式的文…

劍指Offer(數據結構與算法面試題精講)C++版——day8

劍指Offer&#xff08;數據結構與算法面試題精講&#xff09;C版——day8 題目一&#xff1a;鏈表中環的入口節點題目二&#xff1a;兩個鏈表的第1個重合節點題目三&#xff1a;反轉鏈表附錄&#xff1a;源碼gitee倉庫 題目一&#xff1a;鏈表中環的入口節點 這道題的有如下三個…

【BFT帝國】20250409更新PBFT總結

2411 2411 2411 Zhang G R, Pan F, Mao Y H, et al. Reaching Consensus in the Byzantine Empire: A Comprehensive Review of BFT Consensus Algorithms[J]. ACM COMPUTING SURVEYS, 2024,56(5).出版時間: MAY 2024 索引時間&#xff08;可被引用&#xff09;: 240412 被引:…

前端用用jsonp的方式解決跨域問題

前端用用jsonp的方式解決跨域問題 前端用用jsonp的方式解決跨域問題 前端用用jsonp的方式解決跨域問題限制與缺點&#xff1a;前端后端測試使用示例 限制與缺點&#xff1a; 不安全、只能使用get方式、后臺需要相應jsonp方式的傳參 前端 function jsonp(obj) {// 動態生成唯…

MySQL詳解最新的官方備份方式Clone Plugin

一、Clone Plugin的動態安裝 install plugin clone soname mysql_clone.so;select plugin_name,plugin_status from information_schema.plugins where plugin_name clone; 二、Clone Plugin配置持久化 在 MySQL 配置文件my.cnf中添加以下內容&#xff0c;確保插件在 MySQL …

解決python manage.py shell ModuleNotFoundError: No module named xxx

報錯如下&#xff1a; python manage.py shellTraceback (most recent call last):File "/Users/z/Documents/project/c/manage.py", line 10, in <module>execute_from_command_line(sys.argv)File "/Users/z/.virtualenvs/c/lib/python3.12/site-packa…

鴻蒙NEXT開發資源工具類(ArkTs)

import { AppUtil } from ./AppUtil; import { StrUtil } from ./StrUtil; import { resourceManager } from kit.LocalizationKit;/*** 資源工具類。* 提供訪問應用資源的能力&#xff0c;包括布爾值、數字、字符串等資源的獲取。** author 鴻蒙布道師* since 2025/04/08*/ ex…

css使用mix-blend-mode的值difference實現內容和父節點反色

1. 使用場景 往往開發過程中&#xff0c;經常遇到產品說你這個背景圖和文字顏色太接近了&#xff0c;能不能適配下背景圖&#xff0c;讓用戶能夠看清具體內容是啥。 這么說吧&#xff0c;這種需求場景非常合理&#xff0c;因為你做開發就是要給用戶一個交代&#xff0c;給他們…

el-input 中 select 方法使用報錯:屬性“select”在類型“HTMLElement”上不存在

要解決該錯誤&#xff0c;需明確指定元素類型為 HTMLInputElement&#xff0c;因為 select() 方法屬于輸入元素。 步驟解釋&#xff1a; 類型斷言&#xff1a;使用 as HTMLInputElement 將元素類型斷言為輸入元素。 可選鏈操作符&#xff1a;保持 ?. 避免元素為 null 時出錯…

Mybatis Plus與SpringBoot的集成

Mybatis Plus與SpringBoot的集成 1.引入Maven 依賴2.配置application.yml文件3.創建實體類4.分頁插件5.邏輯刪除功能6.忽略特定字段7.自動填充 1.引入Maven 依賴 提前創建好一個SpringBoot項目&#xff0c;然后在項目中引入MyBatis Plus依賴 <dependency><groupId&g…