uniapp分包實現

關于分包優化的說明

  • 在對應平臺的配置下添加"optimization":{"subPackages":true}開啟分包優化

  • 目前只支持mp-weixinmp-qqmp-baidump-toutiaomp-kuaishou的分包優化

  • 分包優化具體邏輯:

    • 靜態文件:分包下支持 static 等靜態資源拷貝,即分包目錄內放置的靜態資源不會被打包到主包中,也不可在主包中使用

    • js文件:當某個 js 僅被一個分包引用時,該 js 會被打包到該分包內,否則仍打到主包(即被主包引用,或被超過 1 個分包引用)

    • 自定義組件:若某個自定義組件僅被一個分包引用時,且未放入到分包內,編譯時會輸出提示信息

分包內靜態文件示例(官方示例)

"subPackages": [{"root": "pages/sub","pages": [{"path": "index/index"}]
}]

以上面的分包為例,放在每個分包root對應目錄下的靜態文件會被打包到此分包內。

微信小程序官方文檔介紹

mp-weixin

屬性類型說明
appidString微信小程序的AppID,登錄 https://mp.weixin.qq.com
申請
projectnameString項目名稱
settingObject微信小程序項目設置,參考setting
functionalPagesBoolean微信小程序是否啟用插件功能頁,默認關閉
requiredBackgroundModesArray微信小程序需要在后臺使用的能力,詳見
pluginsObject使用到的插件,詳見
resizableBoolean在iPad上小程序是否支持屏幕旋轉,默認關閉
navigateToMiniProgramAppIdListArray需要跳轉的小程序列表,詳見
permissionObject微信小程序接口權限相關設置,比如申請位置權限必須填此處詳見
workersStringWorker 代碼放置的目錄。 詳見
optimizationObject對微信小程序的優化配置
cloudfunctionRootString配置云開發目錄,參考setting
uniStatisticsObject微信小程序是否開啟 uni 統計,配置方法同全局配置
scopedSlotsCompilerStringVue2 作用域插槽編譯模式,uni-app 3.1.19+ 開始支持,可選:legacy、auto、augmented,默認:auto
mergeVirtualHostAttributesBoolean合并由 Vue 組件編譯而成的小程序組件虛擬節點外層屬性,目前僅支持 id(v4.42+)、style(v3.5.1+)、class(v3.5.1+)以及 v-show 指令生成的 hidden(v4.41+) 屬性
slotMultipleInstanceBoolean模擬單個作用域插槽渲染為多個實例,此配置僅限 Vue2 環境 3.7.12+,Vue3 環境已默認支持
embeddedAppIdListArray要半屏跳轉的小程序appid。詳見
requiredPrivateInfosArray地理位置相關接口。詳見
lazyCodeLoadingString目前僅支持值 requiredComponents,代表開啟小程序按需注入

特性,詳見

nativeTagsArray微信小程序平臺的原生組件 (4.81+)
setting

編譯到微信小程序平臺下的項目設置。

屬性類型說明
urlCheckBoolean是否檢查安全域名和 TLS 版本
es6BooleanES6 轉 ES5
postcssBoolean上傳代碼時樣式是否自動補全
minifiedBoolean上傳代碼時是否自動壓縮
bigPackageSizeSupportBoolean預覽及真機調試時包體積上限是否調整為4M,默認為true(HBuilderX 3.5.5+)。

注意: 使用微信小程序手勢組件會強制開啟 ES6 轉 ES5

optimization

對微信小程序的優化配置

屬性類型說明
subPackagesBoolean是否開啟分包優化

cloudfunctionRoot

如果需要使用微信小程序的云開發,需要在 mp-weixin 配置云開發目錄
"mp-weixin":{// ..."cloudfunctionRoot": "cloudfunctions/", // 配置云開發目錄// ...
}
配置目錄之后,需要在項目根目錄新建 vue.config.js 配置對應的文件編譯規則
{plugins: [new CopyWebpackPlugin([{from: path.join(__dirname, '../cloudfunctions'),to: path.join(__dirname, 'unpackage', 'dist', process.env.NODE_ENV === 'production' ? 'build' : 'dev', process.env.UNI_PLATFORM, 'cloudfunctions'),},]),],
}

以下是自己項目所實現的三種分包方式介紹

第一種分包發方式:

分包步驟

第一步 打開 manifest.json文件,找到 "mp-weixin",添加 "optimization": {"subPackages":true} 該代碼表示程序分包,完整代碼如下
?{"name": "lcdsfront","appid": "__UNI__EDF7C47","description": "","versionName": "1.0.0","versionCode": "100","transformPx": false,/* 5+App特有相關 */"app-plus": {"usingComponents": true,"nvueStyleCompiler": "uni-app","compilerVersion": 3,"splashscreen": {"alwaysShowBeforeRender": true,"waiting": true,"autoclose": true,"delay": 0},/* 模塊配置 */"modules": {},/* 應用發布信息 */"distribute": {/* android打包配置 */"android": {"permissions": ["<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>","<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>","<uses-permission android:name=\"android.permission.VIBRATE\"/>","<uses-permission android:name=\"android.permission.READ_LOGS\"/>","<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>","<uses-feature android:name=\"android.hardware.camera.autofocus\"/>","<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>","<uses-permission android:name=\"android.permission.CAMERA\"/>","<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>","<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>","<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>","<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>","<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>","<uses-feature android:name=\"android.hardware.camera\"/>","<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"]},/* ios打包配置 */"ios": {},/* SDK配置 */"sdkConfigs": {}}},/* 快應用特有相關 */"quickapp": {},/* 小程序特有相關 */"mp-weixin": {"appid": "","setting": {"urlCheck": false},"usingComponents": true,"optimization": {"subPackages": true}},"mp-alipay": {"usingComponents": true},"mp-baidu": {"usingComponents": true},"mp-toutiao": {"usingComponents": true},"uniStatistics": {"enable": false},"vueVersion": "2"// "h5": {// 	"devServer": {// 		"port": 8083, // 端口號// 		"disableHostCheck": true, // 關閉主機檢查// 		"proxy": {// 			"/api": { // 代理路徑前綴// 				// "target": "https://www.longchi.xyz",// 				"target": "http://uat.banlu.xuexiluxian.cn/",// 				// "target": "http://localhost: 8866/", // 目標接口域名// 				"changeOrigin": true, // 是否跨域	允許跨域  // 				"secure": false // 設置支付https協議代理// 			}// 		}// 	}// }
}[點擊并拖拽以移動]
?
第二步,開啟分包
在pages.json文件中配置分包,具體代碼如下
我們將登錄的內容分包出去
{// 如果您是通過uni_modules形式引入uView,可以忽略此配置"easycom": { // u-$1 表示components下所有u-*都可以,u-$.vue 表示u-*.vue所有文件都可以,即表示全局引入ui組件所有內容"^u-(.*)": "@/uni_modules/uview-ui/components/u-$1/u-$1.vue"},"pages": [ //pages數組中第一項表示應用啟動頁,參考:https://uniapp.dcloud.io/collocation/pages{"path": "pages/tabs/index","style": {"navigationBarTitleText": "推薦","navigationStyle": "custom"}},{"path": "pages/tabs/list","style": {"navigationBarTitleText": "分類"}},{"path": "pages/tabs/me","style": {"navigationBarTitleText": "我的","navigationStyle": "custom"}}// {// 	"path": "pages/login/login",// 	"style": {// 		"navigationBarTitleText": "微信一鍵登錄"// 	}// },// {// 	"path": "pages/login/bindPhone",// 	"style": {// 		"navigationBarTitleText": "綁定手機號"// 	}// }],"subPackages": [{"root": "pages/login", // 根路徑"pages": [{"path": "login"}, {"path": "bindPhone"}]}],"tabBar": {"color": "#7A7E83","selectedColor": "#3cc51f","borderStyle": "black","backgroundColor": "#ffffff","list": [{"pagePath": "pages/tabs/index","iconPath": "/static/icon/recommend.png","selectedIconPath": "/static/icon/recommend-hl.png","text": "推薦"}, {"pagePath": "pages/tabs/list","iconPath": "/static/icon/classify.png","selectedIconPath": "/static/icon/classify-hl.png","text": "分類"}, {"pagePath": "pages/tabs/me","iconPath": "/static/icon/mine.png","selectedIconPath": "/static/icon/mine-hl.png","text": "我的"}]},"globalStyle": {"navigationBarTextStyle": "black","navigationBarTitleText": "uni-app","navigationBarBackgroundColor": "#F8F8F8","backgroundColor": "#F8F8F8"},"uniIdRouter": {}
}
分包以后將主包內原分包的內容刪除 內容如下
// {
// 	"path": "pages/login/login",
// 	"style": {
// 		"navigationBarTitleText": "微信一鍵登錄"
// 	}
// },
// {
// 	"path": "pages/login/bindPhone",
// 	"style": {
// 		"navigationBarTitleText": "綁定手機號"
// 	}
// }

第二種分包發方式:

直接在根目率創建分別 比如:如下圖所示三個分包,pagesA,pagesB,pagesC

一個主包pages

分別內容配置如下

"subPackages": [{"root": "pagesA","pages": [{"path": "login/login","style": {"navigationBarTitleText":"登錄"}},{"path": "login/bindPhone","style": {"navigationBarTitleText":"綁定手機號"}}],"root": "pagesB","pages": [{...}],"root": "pagesC","pages": [{...}]
}]路徑
root/pagesA/**/*.vue
root/pagesB/**/*.vue
root/pagesC/**/*.vue

第三種分包方式

1, 將 login文件夾整體放在根目錄下

將個人中心的頁面里面登錄跳轉路徑改為 pages/tabs/me.vue

登錄頁面的跳轉路徑由 
uni.navigateTo({url: "/pages/login/login"
});改為
uni.navigateTo({url: '/login/login'
})完整代碼如下:
<template><view class="me"><view class="me-bg" @click="login"><image src="/static/image/banlu.png" class="me-img"></image><view class="me-nick">眼仔仔</view></view></view>
</template><script>export default {data() {return {// 綁定用戶對象數據// globalUser: {}}},// 實現頁面數據動態顯示onShow() {// var me = this;// // 定義全局用戶對象// var globalUser = me.getGlobalUser("globalUser");// me.globalUser = globalUser;},methods: {// 微信一鍵登錄login() {uni.navigateTo({url: "/login/login"});}// 性別 自定義點擊事件 // modifySex() {// 	// 跳轉頁面// 	uni.navigateTo({// 		url: "/pages/Sex/Sex"// 	});// },// 生日 自定義點擊事件 // modifyBirthday() {// 	// 跳轉頁面// 	uni.navigateTo({// 		url: "/pages/meBirthday/meBirthday"// 	});// },// 昵稱 自定義點擊事件 // modifyNickname() {// 	// 跳轉頁面// 	uni.navigateTo({// 		url: "/pages/meNickname/meNickname"// 	});// }}}
</script><style scoped="scss">.me {width: 750rpx;height: 281rpx;background: #FFFFFF;/* border-radius: 0px 0px 0px 0px; *//* opacity: 0.65; *//* border: 1px solid #707070; */}.me-bg {display: flex;justify-content: flex-start;align-items: center;width: 100%;height: 281rpx;background: url('https://luxian-ai.oss-cn-beijing.aliyuncs.com/luxian-ai/avatar/2024-07-28/1722173053591686.jpg') no-repeat;background-size: 100% 100%;}.me-img {width: 141rpx;height: 141rpx;border-radius: 50%;background-color: #FFFFFF;opacity: 1;}.me-nick {}
</style>

2, 將文件pages.json中分包的內容 "root": "pages/login", 改為 "root": "login",就可以實現分包

{// 如果您是通過uni_modules形式引入uView,可以忽略此配置"easycom": { // u-$1 表示components下所有u-*都可以,u-$.vue 表示u-*.vue所有文件都可以,即表示全局引入ui組件所有內容"^u-(.*)": "@/uni_modules/uview-ui/components/u-$1/u-$1.vue"},"pages": [ //pages數組中第一項表示應用啟動頁,參考:https://uniapp.dcloud.io/collocation/pages{"path": "pages/tabs/index","style": {"navigationBarTitleText": "推薦","navigationStyle": "custom"}},{"path": "pages/tabs/list","style": {"navigationBarTitleText": "分類"}},{"path": "pages/tabs/me","style": {"navigationBarTitleText": "我的","navigationStyle": "custom"}}],"subPackages": [{"root": "login", // 根路徑"pages": [{"path": "login","style": {"navigationBarTitleText": "登錄"}}, {"path": "bindPhone","style": {"navigationBarTitleText": "綁定手機號"}}]}],"tabBar": {"color": "#7A7E83","selectedColor": "#3cc51f","borderStyle": "black","backgroundColor": "#ffffff","list": [{"pagePath": "pages/tabs/index","iconPath": "/static/icon/recommend.png","selectedIconPath": "/static/icon/recommend-hl.png","text": "推薦"}, {"pagePath": "pages/tabs/list","iconPath": "/static/icon/classify.png","selectedIconPath": "/static/icon/classify-hl.png","text": "分類"}, {"pagePath": "pages/tabs/me","iconPath": "/static/icon/mine.png","selectedIconPath": "/static/icon/mine-hl.png","text": "我的"}]},"globalStyle": {"navigationBarTextStyle": "black","navigationBarTitleText": "uni-app","navigationBarBackgroundColor": "#F8F8F8","backgroundColor": "#F8F8F8"},"uniIdRouter": {}
}

3, 將文件login.vue中 登錄跳轉路徑

修改登錄跳轉路徑
uni.navigateTo({url: '/pages/login/bindPhone'
})改為
uni.navigateTo({url: '/login/bindPhone'
})完整代碼如下
<template><view><button @click="login">微信登錄</button></view>
</template><script>// import {// 	params// } from 'jquery'import {loginByWechat,wechatRegister} from '@/utils/api/login.js'export default {data() {return {}},methods: {// 點擊登錄login() {// 解決閉包問題let that = this;uni.getUserProfile({ // 獲取用戶信息  這是一個閉包函數 有兩個success()函數,稱之為閉包函數desc: '登錄后同步數據',success(ures) {// console.log('getUserProfile', ures);uni.login({ //獲取用戶code碼,前端把code碼傳遞給后端才能判斷用戶是否綁定手機號。// 通過這個code來判斷這個用戶在這個小程序有沒有注冊過[之前有沒有登錄過]success(lres) {// 通過這個code來判斷,這個用戶有沒有綁定手機號let params = {code: lres.code}loginByWechat(params).then(res => {// console.log('后端接口返回', res);// 如果返回'60003'表示這個用戶之前沒有注冊過if (res.code == '60003') {// 注冊微信用戶let params = ({unionId: res.data.unionId ? res.data.unionId :res.data.openid,openId: res.data.openid,sessionKey: res.data.sessionKey,signature: ures.signature,rawData: ures.rawData,encryptedData: ures.encryptedData,iv: ures.iv});// 這是一個閉包函數 有兩個success()函數,稱之為閉包函數that.register(params);} else if (res.code == '200') {// 微信注冊過賬戶(之前登錄過),查看有沒有綁定手機號that.isMobile(res.data);}})}});}});},// 注冊微信用戶register(params) {wechatRegister(params).then(res => {if (res.code == '200') {this.isMobile(res.data);}// console.log(res);})},isMobile(data) {// 用戶信息包含 token// console.log(data);// 存儲 tokenuni.setStorage({key: 'token',data: data.token})// 判斷用戶有沒有綁定手機號if (!data.member.mobile) { // 取反表示沒有綁定手機號// this.isMobile(res.data.member.mobile);uni.showModal({title: '提示信息',confirmText: '去完善',content: '根據國家規定,需要綁定手機號',success(res) {if (res.confirm) {uni.navigateTo({url: '/login/bindPhone'})}// else if (res.cancel) {// 	console.log('用戶點擊取消');// }}})}}}}
</script><style></style>

以上就是簡單實現分別介紹與實踐

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

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

相關文章

ctfshow_web14------(PHP+switch case 穿透+SQL注入+文件讀取)

題目&#xff1a;解釋&#xff1a;$c intval($_GET[c]); //獲取整數值 6sleep($c);//延遲執行當前腳本若干秒。提示一下哈沒有break會接著執行下面的但是像是44444&#xff0c;555555,sleep的時間太久我們用3進入here_1s_your_f1ag.php是一個查詢頁面&#xff0c;sql注入查看源…

linux x86_64中打包qt

下載安裝 地址: Releases linuxdeploy/linuxdeploy mv linuxdeploy-x86_64.AppImage linuxdeployqtchmod 777 linuxdeployqtsudo mv linuxdeployqt /usr/local/bin/linuxdeployqt --version報錯 Applmage默認依賴FUSE&#xff0c;需要掛載自身為虛擬文件系統才能運行, ubuntu…

華為昇騰CANN開發實戰:算子自定義與模型壓縮技術指南

點擊 “AladdinEdu&#xff0c;同學們用得起的【H卡】算力平臺”&#xff0c;注冊即送-H卡級別算力&#xff0c;80G大顯存&#xff0c;按量計費&#xff0c;靈活彈性&#xff0c;頂級配置&#xff0c;學生更享專屬優惠。 摘要 隨著人工智能技術的飛速發展&#xff0c;越來越多…

Vue3源碼reactivity響應式篇之reactive響應式對象的track與trigger

概覽 在BaseReactiveHandler類的get方法中&#xff0c;有如下代碼塊if (!isReadonly2){track(target, "get", key);}&#xff0c;這表示通過reactive、shallowReactive創建的響應式對象&#xff0c;非只讀的&#xff0c;當讀取代理對象proxyTarget的某個屬性key時&am…

VRRP 多節點工作原理

VRRP 多節點工作原理 基本概念 VRRP 的設計初衷是給一組節點提供一個 虛擬路由器&#xff0c;對外只表現出一個 VIP。協議規定&#xff1a;同一個 VRRP 實例 下始終只有 一個 Master 持有 VIP&#xff0c;其它全部是 Backup。 Master → 持有 VIP&#xff0c;負責轉發流量到Mas…

Gradio全解11——Streaming:流式傳輸的視頻應用(9)——使用FastRTC+Gemini創建沉浸式音頻+視頻的藝術評論家

Gradio全解11——Streaming&#xff1a;流式傳輸的視頻應用&#xff08;9&#xff09;——使用FastRTCGemini創建沉浸式音頻視頻的藝術評論家11.9 使用FastRTCGemini創建實時沉浸式音頻視頻的藝術評論家11.9.1 準備工作及音頻圖像編碼器1. 項目說明及準備工作2. 音頻和圖像編碼…

Django入門筆記

Python知識點&#xff1a;函數、面向對象。前端開發&#xff1a;HTML、CSS、JavaScript、jQuery、BootStrap。MySQL數據庫。Python的Web框架&#xff1a;Flask&#xff0c;自身短小精悍 第三方組件。Django&#xff0c;內部已集成了很多組件 第三方組件。【主要】1.安裝djang…

當Claude Code失靈,Qwen Code能否成為你的救星?

當Claude Code失靈&#xff0c;Qwen Code能否成為你的救星&#xff1f; 一、開頭&#xff1a;點明困境&#xff0c;引出主角 作為一個大模型博主&#xff0c;日常工作中我經常會使用各種 AI 工具來提高效率&#xff0c;Claude Code 就是我之前非常依賴的一款代碼生成助手 。它…

Go語言快速入門教程(JAVA轉go)——1 概述

優勢 第一個理由&#xff1a;對初學者足夠友善&#xff0c;能夠快速上手。 業界都公認&#xff1a;Go 是一種非常簡單的語言。Go 的設計者們在發布 Go 1.0 版本和兼容性規范后&#xff0c;似乎就把主要精力放在精心打磨 Go 的實現、改進語言周邊工具鏈&#xff0c;還有提升 Go …

【Rust多進程】征服CPU的藝術:Rust多進程實戰指南

?? 歡迎大家來到景天科技苑?? &#x1f388;&#x1f388; 養成好習慣&#xff0c;先贊后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者簡介&#xff1a;景天科技苑 &#x1f3c6;《頭銜》&#xff1a;大廠架構師&#xff0c;華為云開發者社區專家博主&#xff0c;…

OpenCV 高階實戰:圖像直方圖與掩碼圖像深度解析

目錄 一、圖像直方圖&#xff1a;讀懂圖像的 “像素分布報告” 1. 什么是圖像直方圖&#xff1f; 2. 圖像直方圖的核心作用 &#xff08;1&#xff09;分析亮度分布 &#xff08;2&#xff09;判斷對比度高低 &#xff08;3&#xff09;輔助圖像增強與閾值分割 &#xf…

基于stm32的家庭安全監測系統設計

若該文為原創文章&#xff0c;轉載請注明原文出處。一、引言&#xff08;一&#xff09;研究背景及意義背景&#xff1a;隨著智能家居概念的普及&#xff0c;人們對家庭安全、舒適度和節能提出了更高要求。傳統安防系統功能單一、各系統獨立&#xff0c;缺乏聯動和遠程管理能力…

Oracle體系結構-控制文件(Control Files)

一、 原理 (Principle) 核心定位&#xff1a; 控制文件是一個小型的二進制文件&#xff0c;由 Oracle 實例在啟動和操作過程中持續讀寫。它是數據庫物理結構的權威記錄。數據庫無法啟動或正常操作時&#xff0c;如果無法訪問控制文件&#xff0c;實例將無法識別數據文件和重做日…

路由 下一跳 網關 兩個不同網段的ip如何通過路由器互通

路由 (Routing)核心思想&#xff1a;路徑選擇是什么&#xff1f; 路由是指數據包從源主機傳輸到目標主機的整個過程。這個過程就像寄快遞&#xff1a;你需要決定包裹經過哪些中轉站才能最終到達收件人手里。做什么&#xff1f; 網絡中的設備&#xff08;主要是路由器&#xff0…

HiDDeN論文解讀與代碼實現

論文&#xff1a;HiDDeN: Hiding Data With Deep Networks 作者&#xff1a;Jiren Zhu, Russell Kaplan, Justin Johnson, Li Fei-Fei一、研究背景 在圖像信息隱藏領域&#xff0c;通常有兩類典型的應用場景&#xff1a;隱寫 (Steganography) 目標&#xff1a;實現秘密通信。要…

實驗室服務器配置|實驗室多人共享GPU|通過Docker實現Linux系統多用戶隔離與安全防控

利用實驗室服務器跑實驗的時候&#xff0c;通常就是兩種方案&#xff0c;一個是向日葵遠程桌面進行操作&#xff0c;一個是通過ssh進行連接&#xff0c;用ssh的話&#xff0c;一般服務器都在內網&#xff08;例如校園網&#xff09;&#xff0c;是無法在公網&#xff08;不在校…

2019考研數學(二)真題

一、選擇題 (1) (2) (3) (4) 遺漏點&#xff1a;由通解知特解&#xff0c;特解代入微分方程 (5) ★記住這個題&#xff0c;用的泰勒展開(6) (7) 遺忘點&#xff1a; ★伴隨矩陣的秩與原矩陣秩的關系&#xff1a; (8) 錯誤點&#xff1a;粗心 二、填空題 (9) 易混淆點&#xff…

10 分鐘上手 ECharts:從“能跑”到“生產級”的完整踩坑之旅

10 分鐘上手 ECharts&#xff1a;從“能跑”到“生產級”的完整踩坑筆記 如果你也曾 復制了官方 Demo 卻不知道怎么拆、窗口一拉伸圖表就變形、切換標簽頁后內存暴漲——這篇博客就是為你寫的。 我會用 6 個遞進版本 的源碼&#xff0c;帶你把一張 最簡柱狀圖 逐步進化成 可銷毀…

二級緩存在實際項目中的應用

二級緩存在項目中的應用 目錄 1. 二級緩存簡介2. 應用場景3. 重難點分析4. 結合SpringBoot使用5. 最佳實踐與案例6. 總結 1. 二級緩存簡介 1.1 什么是二級緩存 二級緩存&#xff08;Second-Level Cache&#xff09; 是Hibernate框架中的一個重要特性&#xff0c;它提供了應…

深入淺出CRC校驗:從數學原理到單周期硬件實現 (2)CRC數學多項式基礎

數學的優雅&#xff1a;剖開CRC的多項式除法核心看似復雜的CRC校驗&#xff0c;其核心建立在優雅的數學基礎之上。本文將為您揭開CRC算法的數學面紗&#xff0c;讓您真正理解多項式除法的精妙之處。模2運算&#xff1a;CRC世界的特殊算術 CRC計算建立在一種特殊的代數系統上——…