【Vue2手錄06】計算屬性Computed

一、表單元素的v-model綁定(核心場景)

v-model 是Vue實現“表單元素與數據雙向同步”的語法糖,不同表單元素的綁定規則存在差異,需根據元素類型選擇正確的綁定方式。

1.1 四大表單元素的綁定規則對比

表單元素類型綁定數據類型核心規則初始值設置關鍵注意事項
單選框(radio)字符串/數字綁定值與單選框的value屬性一致時,該選項選中設為目標value(如'male'必須為每個單選框顯式設置value屬性
單個多選框(checkbox)布爾值選中時數據為true,未選中為false,無需設置valuetrue(默認選中)/false常用于“同意協議”“記住密碼”等場景
多個多選框(checkbox)數組選中項的value自動加入數組,取消選中時自動移除空數組[](默認無選中)所有多選框需綁定同一數組,且必須設置value
下拉框(select)字符串/數組- 單選下拉框:綁定選中項的value; - 多選下拉框(加multiple):綁定選中項value組成的數組單選:目標value;多選:[]若未設value,默認用<option>的文本作為value

1.2 詳細用法與示例

1. 單選框(radio):性別選擇
<div id="app"><label><input type="radio" name="gender" value="male" v-model="selectedGender"></label><label><input type="radio" name="gender" value="female" v-model="selectedGender"></label><p>選中性別:{{ selectedGender }}</p>
</div>
<script>
new Vue({el: "#app",data: {selectedGender: "male" // 初始選中“男”}
});
</script>
  • 關鍵name屬性確保單選框互斥(同一組只能選一個),v-model綁定值與value匹配即選中。
2. 單個多選框(checkbox):協議同意
<div id="app"><label><input type="checkbox" v-model="isAgree"> 我已閱讀并同意用戶協議</label><button :disabled="!isAgree" style="margin-left: 8px;">提交</button><p>同意狀態:{{ isAgree }}</p>
</div>
<script>
new Vue({el: "#app",data: {isAgree: false // 初始未選中,按鈕禁用}
});
</script>
  • 關鍵:無需設置valuev-model直接綁定布爾值,常用于控制按鈕禁用狀態。
3. 多個多選框(checkbox):愛好選擇
<div id="app"><p>選擇愛好:</p><label><input type="checkbox" value="game" v-model="selectedHobbies"> 游戲</label><label><input type="checkbox" value="reading" v-model="selectedHobbies"> 閱讀</label><label><input type="checkbox" value="sports" v-model="selectedHobbies"> 運動</label><p>選中愛好:{{ selectedHobbies }}</p>
</div>
<script>
new Vue({el: "#app",data: {selectedHobbies: ["reading"] // 初始選中“閱讀”}
});
</script>
  • 關鍵:所有多選框綁定同一數組,value必須唯一,數組自動維護選中狀態。
4. 下拉框(select):省份選擇
<div id="app"><!-- 單選下拉框 --><select v-model="selectedProvince"><option value="">請選擇省份</option> <!-- 空value對應初始未選 --><option value="beijing">北京</option><option value="shanghai">上海</option><option>廣東</option> <!-- 未設value,默認用文本“廣東”作為value --></select><!-- 多選下拉框(按住Ctrl選擇) --><select v-model="selectedProvinces" multiple style="margin-top: 8px;"><option value="beijing">北京</option><option value="shanghai">上海</option></select><p>單選省份:{{ selectedProvince }}</p><p>多選省份:{{ selectedProvinces }}</p>
</div>
<script>
new Vue({el: "#app",data: {selectedProvince: "shanghai", // 初始選中“上海”selectedProvinces: ["beijing"] // 初始選中“北京”}
});
</script>
  • 關鍵:多選下拉框需加multiple屬性,綁定數組;未設value時,v-model值為<option>的文本。

二、v-model修飾符(簡化表單處理)

表單輸入默認是字符串類型,且可能包含無效空格,Vue提供3個常用修飾符,無需手動寫JS邏輯即可優化輸入體驗。

修飾符核心作用適用場景示例代碼與效果
.trim自動去除輸入值的首尾空格(中間空格保留)用戶名、手機號、郵箱等需過濾無效空格的場景<input v-model.trim="username"> 輸入“ 小明 ”→ 變量值“小明”
.number自動將輸入值轉為數字類型(非數字保留字符串)年齡、金額、數量等需數值運算的場景<input v-model.number="age" type="number"> 輸入“18”→ 變量值18(數字)
.lazy從“input事件”觸發同步改為“change事件”觸發(失去焦點/回車時同步)輸入內容無需實時同步的場景(如長文本輸入)<input v-model.lazy="desc"> 輸入時不實時同步,失去焦點后更新

示例:帶修飾符的注冊表單

<div id="app"><input v-model.trim="username" placeholder="用戶名(去首尾空格)"><br><input v-model.number="age" type="number" placeholder="年齡(轉數字)"><br><textarea v-model.lazy="desc" placeholder="描述(失焦同步)"></textarea><br><p>用戶名:{{ username }}(類型:{{ typeof username }})</p><p>年齡:{{ age }}(類型:{{ typeof age }})</p><p>描述:{{ desc }}</p>
</div>
<script>
new Vue({el: "#app",data: {username: "",age: "", // 初始為空,輸入后轉為數字desc: ""}
});
</script>

三、核心:計算屬性(computed)

計算屬性是Vue中“處理派生數據”的核心特性,本質是依賴其他數據動態計算出的屬性,具有緩存機制,可避免重復計算,保持模板簡潔。

3.1 為什么需要計算屬性?(解決的痛點)

直接在模板中寫復雜JS邏輯會導致模板臃腫、難維護,例如:

<!-- 模板中直接寫復雜運算:臃腫且無緩存 -->
<p>{{ msg[0].toUpperCase() + msg.substring(1) }}</p> <!-- 首字母大寫 -->
<p>{{ gender === 1 ? "男" : gender === 2 ? "女" : "未知" }}</p> <!-- 性別轉換 -->

計算屬性可將這些邏輯移到JS層,模板僅需引用屬性名,實現“關注點分離”:

<!-- 模板簡潔清晰 -->
<p>{{ formattedMsg }}</p>
<p>{{ formattedGender }}</p>
<script>
new Vue({computed: {// 計算屬性:首字母大寫formattedMsg() {return this.msg[0].toUpperCase() + this.msg.substring(1);},// 計算屬性:性別轉換formattedGender() {return this.gender === 1 ? "男" : this.gender === 2 ? "女" : "未知";}}
});
</script>

3.2 計算屬性的核心機制:緩存與依賴追蹤

1. 緩存機制(性能關鍵)
  • 原理:計算屬性會緩存計算結果,只有當它依賴的data屬性變化時,才會重新執行計算函數;若依賴未變,多次調用會直接返回緩存值。
  • 對比methods:methods每次調用都會重新執行函數,無緩存,性能較差。
示例:緩存機制驗證
<div id="app"><p>計算屬性結果:{{ computedResult }}</p><p>計算屬性結果:{{ computedResult }}</p> <!-- 復用緩存,不重新計算 --><p>方法結果:{{ methodResult() }}</p><p>方法結果:{{ methodResult() }}</p> <!-- 重新執行,打印2次“方法執行” --><button @click="msg = 'new message'">修改依賴</button>
</div>
<script>
new Vue({el: "#app",data: { msg: "hello" },computed: {computedResult() {console.log("計算屬性執行"); // 僅依賴變化時打印1次return this.msg.toUpperCase();}},methods: {methodResult() {console.log("方法執行"); // 每次調用都打印,共2次return this.msg.toUpperCase();}}
});
</script>
  • 輸出結果:初始時打印“計算屬性執行”1次、“方法執行”2次;點擊按鈕修改msg后,打印“計算屬性執行”1次、“方法執行”2次。
2. 依賴追蹤

Vue會自動追蹤計算屬性依賴的所有data屬性(如formattedMsg依賴msg),當任一依賴變化時,計算屬性會“自動重新計算”并更新視圖。

3.3 計算屬性 vs methods vs watch(核心區別)

三者都能處理數據邏輯,但適用場景不同,需精準選擇:

特性計算屬性(computed)方法(methods)偵聽器(watch)
核心作用處理派生數據(如格式化、過濾、計算)處理事件邏輯、異步操作、無返回值的操作監聽單個數據變化,執行異步/開銷大的操作
緩存機制有(依賴不變時復用結果)無(每次調用重新執行)無(數據變化時執行)
調用方式模板中直接用屬性名(不加括號)需加括號調用(如method()自動執行(數據變化時觸發)
返回值必須有返回值(否則無意義)可無返回值(如僅執行事件)無需返回值(僅執行副作用)
適用場景1. 數據格式化(如日期、金額); 2. 數組過濾排序; 3. 多數據組合計算1. 事件處理(如點擊、輸入); 2. 同步邏輯執行1. 異步操作(如數據變化后請求接口); 2. 數據變化時執行復雜邏輯
示例:watch的適用場景(異步操作)
<div id="app"><input v-model="username" placeholder="輸入用戶名"><p>用戶名合法性:{{ usernameValid }}</p>
</div>
<script>
new Vue({el: "#app",data: {username: "",usernameValid: true},watch: {// 監聽username變化,執行異步驗證(計算屬性無法處理異步)username(newVal) {// 模擬后端接口驗證(異步)setTimeout(() => {this.usernameValid = newVal.length >= 3; // 用戶名≥3位為合法}, 500);}}
});
</script>

3.4 計算屬性的進階用法

1. 計算屬性的setter(修改計算屬性)

默認情況下,計算屬性是“只讀”的(僅實現getter),若需“修改計算屬性”,需顯式定義setter

<div id="app"><p>全名:{{ fullName }}</p><input v-model="fullName" placeholder="修改全名"><p>姓:{{ firstName }},名:{{ lastName }}</p>
</div>
<script>
new Vue({el: "#app",data: {firstName: "張",lastName: "三"},computed: {fullName: {// getter:讀取fullName時執行(默認)get() {return this.firstName + this.lastName;},// setter:修改fullName時執行set(newFullName) {// 拆分全名為姓和名(如“李四”→ firstName=“李”,lastName=“四”)const arr = newFullName.split("");this.firstName = arr[0];this.lastName = arr.slice(1).join("");}}}
});
</script>
  • 效果:修改fullName輸入框時,setter會拆分輸入值,同步更新firstNamelastName
2. 計算屬性傳參(間接實現)

計算屬性本質是“屬性”,不能直接傳參(如computedProp(123)會報錯),需通過“返回函數”間接實現:

<div id="app"><p>年齡判斷(18):{{ checkAge(18) }}</p> <!-- 成年 --><p>年齡判斷(16):{{ checkAge(16) }}</p> <!-- 未成年 -->
</div>
<script>
new Vue({el: "#app",data: { adultAge: 18 }, // 依賴的基準年齡computed: {// 計算屬性返回函數,函數接收參數checkAge() {// 函數內可訪問Vue實例的屬性(如this.adultAge)return (age) => {return age >= this.adultAge ? "成年" : "未成年";};}}
});
</script>
  • 注意:返回的函數無緩存,每次調用都會重新執行,適用于“需動態傳參且計算邏輯簡單”的場景。

四、實戰案例:待辦事項列表(Todo List)

綜合運用v-forv-model、數組變異方法、計算屬性,實現“添加-刪除-統計”的完整功能。

需求分析

  1. 輸入框輸入待辦內容,回車添加到列表;
  2. 點擊待辦項,刪除該條目;
  3. 統計“已完成/總數量”(用計算屬性實現)。

完整代碼實現

<div id="app"><div style="margin-bottom: 16px;"><input v-model.trim="newTodo" placeholder="輸入待辦內容,回車添加"@keyup.enter="addTodo"style="padding: 8px; width: 300px;"></div><!-- 待辦列表 --><ul style="list-style: none; padding: 0; max-width: 300px;"><li v-for="(todo, index) in todoList" :key="todo.id" style="padding: 8px; border-bottom: 1px solid #eee; cursor: pointer; display: flex; justify-content: space-between;"@click="deleteTodo(index)"><span>{{ todo.text }}</span><span style="color: #f44336;">×</span></li></ul><!-- 統計信息(計算屬性) --><p style="max-width: 300px; text-align: right;">總數量:{{ totalCount }} | 已完成:{{ completedCount }} | 未完成:{{ uncompletedCount }}</p>
</div>
<script src="https://cdn.staticfile.org/vue/2.7.0/vue.min.js"></script>
<script>
new Vue({el: "#app",data: {newTodo: "", // 新待辦輸入值todoList: [{ id: 1, text: "學習v-model綁定", completed: false },{ id: 2, text: "掌握計算屬性緩存", completed: true }]},computed: {// 總數量totalCount() {return this.todoList.length;},// 已完成數量completedCount() {return this.todoList.filter(todo => todo.completed).length;},// 未完成數量uncompletedCount() {return this.totalCount - this.completedCount;}},methods: {// 添加待辦(回車觸發)addTodo() {if (!this.newTodo) return; // 空內容不添加this.todoList.push({id: Date.now(), // 時間戳作為唯一ID(避免index沖突)text: this.newTodo,completed: false // 初始未完成});this.newTodo = ""; // 清空輸入框},// 刪除待辦(點擊觸發)deleteTodo(index) {this.todoList.splice(index, 1); // splice是變異方法,觸發視圖更新}}
});
</script>

關鍵要點

  1. 數組變異方法:用push(添加)、splice(刪除)確保視圖響應式更新;
  2. 唯一ID:用Date.now()作為待辦項的id,避免indexkey的缺陷;
  3. 計算屬性統計completedCount依賴todoList,待辦狀態變化時自動重新計算,無需手動更新統計。

小練習(鞏固核心知識點)

練習1:表單綁定綜合(用戶信息收集)

需求
  1. 實現用戶信息表單,包含:
    • 性別(單選框:男/女);
    • 愛好(多選框:電影、音樂、旅行);
    • 城市(下拉框:北京、上海、廣州);
    • 年齡(輸入框,自動轉數字,范圍18-60);
  2. 點擊“提交”按鈕,控制臺打印完整用戶信息;
  3. 年齡輸入非數字或超出范圍時,按鈕禁用。

練習2:計算屬性緩存(商品價格計算)

需求
  1. 定義商品列表products(含namepricecount字段);
  2. 用計算屬性totalPrice計算“所有商品的總價”(price * count求和);
  3. 驗證緩存機制:多次引用totalPrice,觀察是否重復計算;
  4. 修改任一商品的count,驗證totalPrice是否重新計算。

練習3:計算屬性傳參(數組過濾)

需求
  1. 定義數組users(含nameage字段);
  2. 用計算屬性filterUsers返回函數,函數接收minAge參數;
  3. 調用函數時,過濾出age ≥ minAge的用戶(如filterUsers(18)返回成年用戶);
  4. 在模板中分別顯示“≥18歲”和“≥25歲”的用戶列表。

練習4:計算屬性setter(全名修改)

需求
  1. 定義firstName(姓)和lastName(名);
  2. 用計算屬性fullName實現:
    • getter:返回“姓+名”(如“張三”);
    • setter:輸入“全名”時拆分出姓和名(如輸入“李四”→ firstName=“李”lastName=“四”);
  3. 用輸入框綁定fullName,修改輸入框時同步更新firstNamelastName

小練習參考答案

練習1:表單綁定綜合(用戶信息收集)

<div id="app"><div style="margin-bottom: 8px;"><label>性別:</label><input type="radio" name="gender" value="" v-model="user.gender"><input type="radio" name="gender" value="" v-model="user.gender"></div><div style="margin-bottom: 8px;"><label>愛好:</label><input type="checkbox" value="電影" v-model="user.hobbies"> 電影<input type="checkbox" value="音樂" v-model="user.hobbies"> 音樂<input type="checkbox" value="旅行" v-model="user.hobbies"> 旅行</div><div style="margin-bottom: 8px;"><label>城市:</label><select v-model="user.city"><option value="">請選擇</option><option value="北京">北京</option><option value="上海">上海</option><option value="廣州">廣州</option></select></div><div style="margin-bottom: 8px;"><label>年齡:</label><input type="number" v-model.number="user.age" placeholder="18-60"></div><button @click="submit" :disabled="!isFormValid"style="padding: 8px 16px; background: #2196F3; color: white; border: none; border-radius: 4px;">提交</button>
</div>
<script src="https://cdn.staticfile.org/vue/2.7.0/vue.min.js"></script>
<script>
new Vue({el: "#app",data: {user: {gender: "",hobbies: [],city: "",age: ""}},computed: {// 表單合法性判斷isFormValid() {const { gender, hobbies, city, age } = this.user;// 性別、城市必選,愛好至少選1個,年齡18-60return !!gender && hobbies.length > 0 && !!city && age >= 18 && age <= 60;}},methods: {submit() {console.log("用戶信息:", this.user);alert("提交成功!");}}
});
</script>

練習2:計算屬性緩存(商品價格計算)

<div id="app"><div v-for="(product, index) in products" :key="product.id" style="margin-bottom: 8px;"><span>{{ product.name }} - ¥{{ product.price }} × </span><input type="number" v-model.number="product.count" min="1" style="width: 50px;"></div><!-- 多次引用計算屬性,驗證緩存 --><p>總價1:{{ totalPrice }}</p><p>總價2:{{ totalPrice }}</p><p>總價3:{{ totalPrice }}</p><p>計算屬性執行次數:{{ computeCount }}</p>
</div>
<script src="https://cdn.staticfile.org/vue/2.7.0/vue.min.js"></script>
<script>
new Vue({el: "#app",data: {computeCount: 0, // 統計計算屬性執行次數products: [{ id: 1, name: "Vue教程", price: 59, count: 1 },{ id: 2, name: "前端手冊", price: 39, count: 2 }]},computed: {totalPrice() {this.computeCount++; // 每次計算+1// 求和:price * countreturn this.products.reduce((sum, product) => {return sum + product.price * product.count;}, 0);}}
});
</script>
  • 驗證結果:初始時computeCount=1(3次引用僅執行1次);修改任一商品的countcomputeCount變為2(僅重新執行1次)。

練習3:計算屬性傳參(數組過濾)

<div id="app"><p>≥18歲用戶:</p><ul><li v-for="user in filterUsers(18)" :key="user.id">{{ user.name }}({{ user.age }}歲)</li></ul><p>≥25歲用戶:</p><ul><li v-for="user in filterUsers(25)" :key="user.id">{{ user.name }}({{ user.age }}歲)</li></ul>
</div>
<script src="https://cdn.staticfile.org/vue/2.7.0/vue.min.js"></script>
<script>
new Vue({el: "#app",data: {users: [{ id: 1, name: "小明", age: 17 },{ id: 2, name: "小紅", age: 20 },{ id: 3, name: "小剛", age: 26 },{ id: 4, name: "小麗", age: 30 }]},computed: {// 計算屬性返回函數,接收minAge參數filterUsers() {return (minAge) => {// 過濾出age ≥ minAge的用戶return this.users.filter(user => user.age >= minAge);};}}
});
</script>

練習4:計算屬性setter(全名修改)

<div id="app"><p>姓:{{ firstName }}</p><p>名:{{ lastName }}</p><p>全名:</p><input v-model="fullName" placeholder="輸入全名"style="padding: 8px; width: 200px;">
</div>
<script src="https://cdn.staticfile.org/vue/2.7.0/vue.min.js"></script>
<script>
new Vue({el: "#app",data: {firstName: "張",lastName: "三"},computed: {fullName: {// getter:讀取全名時執行get() {return this.firstName + this.lastName;},// setter:修改全名時執行set(newFullName) {// 處理特殊情況(空輸入或單字)if (newFullName.length === 0) {this.firstName = "";this.lastName = "";} else if (newFullName.length === 1) {this.firstName = newFullName;this.lastName = "";} else {// 拆分:首字符為姓,剩余為名this.firstName = newFullName[0];this.lastName = newFullName.slice(1);}}}}
});
</script>
  • 效果:輸入“李四”→ firstName=“李”lastName=“四”;輸入“王”→ firstName=“王”lastName=“”

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

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

相關文章

FPGA入門-數碼管靜態顯示

19. 數碼管的靜態顯示 在許多項目設計中&#xff0c;我們通常需要一些顯示設備來顯示我們需要的信息&#xff0c;可以選擇的顯示設備有很多&#xff0c;而數碼管是使用最多&#xff0c;最簡單的顯示設備之一。數碼管是一種半導體發光器件&#xff0c;具有響應時間短、體積小、…

深入理解大語言模型(5)-關于token

到目前為止對 LLM 的描述中&#xff0c;我們將其描述為一次預測一個單詞&#xff0c;但實際上還有一個更重要的技術細 節。即 LLM 實際上并不是重復預測下一個單詞&#xff0c;而是重復預測下一個 token 。對于一個句子&#xff0c;語言模型會 先使用分詞器將其拆分為一個個 to…

視覺智能的「破壁者」——Transformer如何重塑計算機視覺范式?三大CV算法論文介紹 ViTMAESwin Transformer

當自然語言處理領域因Transformer而煥發新生時&#xff0c;計算機視覺卻長期困于卷積神經網絡的架構桎梏。直到ViT&#xff08;Vision Transformer&#xff09;的橫空出世&#xff0c;才真正打破了視覺與語言之間的壁壘。它不僅是技術的革新&#xff0c;更是范式革命的開始&…

Java 并發容器源碼解析:ConcurrentSkipListSet 行級深度剖析

Java 并發容器源碼解析&#xff1a;ConcurrentSkipListSet 行級深度剖析 本文將深入解析 Java 并發容器 ConcurrentSkipListSet 的核心源碼&#xff0c;結合流程圖、代碼注釋、設計思想、優缺點分析、業務場景、調試與優化、集成方案、高階應用等&#xff0c;幫助你系統掌握這款…

答題卡自動識別案例

目錄 1.答題卡自動批閱整體實現思路 2.關鍵技術步驟與原理 答題卡區域提取 ①輪廓檢測并排序 ②執行透視變換 ③找到每一個圓圈輪廓 ④先對所有圓圈輪廓從上到下排序 ⑤再通過循環每次只提取出五個輪廓再進行從左到右的排序 3.完整代碼 1.答題卡自動批閱整體實現思路 …

C#實現通過POST實現讀取數據

C# POST請求與MySQL數據存儲實現下面是一個完整的C#解決方案&#xff0c;用于發送POST請求、接收響應數據&#xff0c;并將數據保存到MySQL數據庫中。完整代碼實現 using System; using System.Net.Http; using System.Text; using System.Threading.Tasks; using Newtonsoft.J…

Java 字符編碼問題,怎么優雅地解決?

網羅開發&#xff08;小紅書、快手、視頻號同名&#xff09;大家好&#xff0c;我是 展菲&#xff0c;目前在上市企業從事人工智能項目研發管理工作&#xff0c;平時熱衷于分享各種編程領域的軟硬技能知識以及前沿技術&#xff0c;包括iOS、前端、Harmony OS、Java、Python等方…

STL之string類(C++)

1.string類核心定位std::string 本質是對 “字符序列” 的封裝&#xff0c;內部通過動態數組存儲字符&#xff0c;并自動管理內存&#xff08;分配、擴容、釋放&#xff09;&#xff0c;對外提供了簡潔的接口用于字符串的創建、修改、拼接、查找等操作。1.1 使用前提頭文件包含…

[Maven 基礎課程]第一個 Maven 項目

idea 新建一個項目&#xff1a; 來到 New Project 頁面&#xff1a; 這里我們有兩種方式創建 maven 項目&#xff0c;一種是自定義創建&#xff0c;另一種是使用 maven 模版項目創建。 自定義創建 maven 項目 基本配置 Name: first_maven_project 項目名稱&#xff0c;設為 …

uni小程序中使用Echarts圖表

前言 今天雞米花給大家帶來的是在uni里面使用echarts&#xff0c;能夠完美支持和PC端一樣的效果&#xff0c;我這邊的工程是uni轉為微信小程序&#xff0c;用的是vue3vite來寫的&#xff0c;然后實現了豎屏和橫屏的展示方式&#xff0c;好了獻上效果圖。 效果圖 一、引入插件 這…

從FOTA測試到汽車電子安全體系的啟蒙之旅

我是穿拖鞋的漢子,魔都中堅持長期主義的汽車電子工程師。 老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師: 做到欲望極簡,了解自己的真實欲望,不受外在潮流的影響,不盲從,不跟風。把自己的精力全部用在自己。一是去掉多余,凡事找規律,基礎是誠信;二是…

stm32中 中斷和事件的區別

一、核心概念比喻想象一下工廠里的一個報警系統&#xff1a;?中斷 (Interrupt)??&#xff1a;就像火警警報器響了。它的目的是通知管理員&#xff08;CPU&#xff09;??&#xff1a;“著火了&#xff01;”。管理員聽到后&#xff0c;會停下手中的工作&#xff08;保存現場…

深入理解MySQL主從架構中的Seconds_Behind_Master指標

問題&#xff1a;主從延遲與寫后讀不一致 在典型的 MySQL 主從架構下&#xff0c;所有寫操作都會直接進入主庫&#xff0c;而讀操作大多分流到從庫&#xff0c;從而實現讀寫分離&#xff0c;緩解主庫壓力。 然而 MySQL 的復制機制是異步的&#xff1a;主庫先寫入 binlog&#…

MySQL安裝(linux版本)

MySQL安裝&#xff08;linux版本&#xff09; 課程地址 08. 進階-MySQL安裝(linux版本)_嗶哩嗶哩_bilibili 安裝過程中所有需要的程序都放在網盤里了 通過網盤分享的文件&#xff1a;虛擬機 鏈接: https://pan.baidu.com/s/1eLMD2iq1uEujNN7mWs2dIg?pwdckmh 提取碼: ckmh …

OpenCV 圖像雙三次BSpline插值

文章目錄 一、簡介 二、實現代碼 三、實現效果 參考資料 一、簡介 之前我們介紹過BSpline曲線,一條B樣條曲線可以被定義成 n + 1 n+1 n+1個控制點的集合 { Q i } i = 0 n {\{Q_i\}}^{n}_{i=0}

Prometheus+Grafana構建企業級監控方案

1.prometheus工作原理&#xff1a; Prometheus將指標收集并存儲為時間序列數據庫&#xff08;時序數據庫&#xff09;&#xff0c;即指標信息與記錄它的時間戳一起存儲&#xff0c;以及稱為標簽的可選鍵值對。 特性&#xff1a; 具有由指標名稱和鍵/值對識別的時間序列數據的…

第23課:行業解決方案設計

第23課:行業解決方案設計 課程目標 掌握金融、醫療、教育等行業應用 學習領域特定Agent設計 了解行業標準集成 實踐設計行業解決方案 課程內容 23.1 金融行業解決方案 金融Agent系統 class FinancialAgentSystem {constructor() {this.agents =

Go語言快速入門教程(JAVA轉go)——2 環境搭建與入門

安裝go Go官網下載地址&#xff1a;https://golang.org/dl/ 中國區官方鏡像站&#xff08;推薦&#xff09;&#xff1a;https://golang.google.cn/dl/ windows安裝 下載好后選擇安裝路徑即可&#xff0c;安裝完成后&#xff0c;winr 輸入cmd調出命令行窗口&#xff0c;輸入…

ffplay播放pcm

用 ffplay 播放 PCM 裸流時&#xff0c;必須手動告訴它“沒有封裝頭、采樣率、聲道數、采樣格式”四個關鍵點。命令模板如下&#xff1a; ffplay -f <采樣格式> -ar <采樣率> -ac <聲道數> -i <pcm文件>常用組合示例 48 kHz、16 bit、小端、雙聲道 ffp…

【LLM】大模型訓練中的穩定性問題

訓練穩定性問題 &#x1f4cb; 概述 本文檔詳細介紹了在項目中解決訓練穩定性問題的方法、原理分析以及實際應用。涵蓋了梯度裁剪、損失函數優化、數值穩定化處理和學習率調度等關鍵技術。&#x1f6a8; 問題描述 現象: 訓練過程中出現數值不穩定&#xff0c;損失函數波動劇烈 …