springboot+vue實現服裝商城系統(帶用戶協同過濾個性化推薦算法)

今天教大家如何設計一個服裝商城?, 基于目前主流的技術:前端vue3,后端springboot。

同時還帶來的項目的部署教程

系統最大的亮點是使用了兩個推薦算法:

1. 基于Jaccard算法的用戶瀏覽歷史推薦。

2. 基于用戶的協同過濾算法個性化推薦。

還有核心的商城保證庫存不超賣,訂單,運費等基本商城系統設計。下面我會詳細描述下這些設計思路。?

視頻演示

用戶協同過濾算法服裝商城

圖片演示

系統概述

商城是一款比較龐大的系統,需要有商品中心,庫存中心,訂單中心,收貨地址和運費管理。先看下我們要實現的商城有哪些功能:

1. 商品分類管理。

2. 商品管理。

3.庫存管理。

4.訂單管理。?

5. 評價管理。

6.用戶管理。

7.運費和運費模板管理。

8. 系統公告管理。

9.首頁輪播圖管理。

10. 用戶購物車。

核心功能實現思想

用戶協同過濾算法的設計

協同過濾(Collaborative Filtering, CF)是推薦系統中最經典的算法之一,其核心思想是通過用戶的歷史行為數據(如評分、點擊、購買等)發現用戶或物品的相似性,并基于這種相似性進行推薦。協同過濾分為兩大類:基于用戶的協同過濾和基于物品的協同過濾。

算法的步驟

1.?獲取所有用戶行為數據,構建用戶-物品評分矩陣。

2. 目標用戶與其它用戶的相似度計算: 將用戶對商品的評分視為向量,計算余弦相似度。

3.?選取與目標用戶相似度最高的?k?個用戶作為鄰居 。

4.?通過鄰居用戶的評分進行加權平均預測(權重為用戶相似度)。

5.?將預測評分按降序排序,選擇評分最高的N個物品作為推薦結果。

舉例說明

用戶評分矩陣的構建

需要借助Array2DRowRealMatrix算法工具,Array2DRowRealMatrix?是 Apache Commons Math 庫中的一個類,用于表示二維實數矩陣,并提供矩陣運算功能。

maven依賴如下:

<dependency><groupId>org.apache.commons</groupId><artifactId>commons-math3</artifactId><version>3.6.1</version></dependency>

構建評分矩陣的代碼:

// 獲取所有用戶的行為數據,用于構建用戶-物品評分矩陣List<UserBehavior> allBehaviors = userBehaviorRepository.selectList(null);if(CollectionUtils.isEmpty(allBehaviors)) {return Collections.emptyList();}// 構建用戶和物品的索引映射,方便后續構建評分矩陣Map<Long, Integer> userIndex = new HashMap<>();Map<Long, Integer> itemIndex = new HashMap<>();// 提取用戶idList<Long> users = allBehaviors.stream().map(UserBehavior::getUserId).distinct().collect(Collectors.toList());// 提取物品idList<Long> items = allBehaviors.stream().map(UserBehavior::getItemId).distinct().collect(Collectors.toList());for (int i = 0; i < users.size(); i++) {userIndex.put(users.get(i), i);}for (int i = 0; i < items.size(); i++) {itemIndex.put(items.get(i), i);}// 初始化評分矩陣,行表示用戶,列表示物品   一個 users.size() x  items.size() 大小的矩陣RealMatrix ratingMatrix = new Array2DRowRealMatrix(users.size(), items.size());// 根據用戶行為數據填充評分矩陣for (UserBehavior behavior : allBehaviors) {if (behavior.getRating() != null) {int uIndex = userIndex.get(behavior.getUserId());int iIndex = itemIndex.get(behavior.getItemId());// 設置 矩陣的 行,列 值 為 評分ratingMatrix.setEntry(uIndex, iIndex, behavior.getRating());}}

余弦相似度計算

/*** 計算兩個向量的余弦相似度* 余弦相似度用于衡量兩個用戶的評分模式的相似程度* @param vector1 第一個用戶的評分向量* @param vector2 第二個用戶的評分向量* @return 相似度值,范圍[-1,1],值越大表示越相似*/private double calculateCosineSimilarity(double[] vector1, double[] vector2) {double dotProduct = 0.0;double norm1 = 0.0;double norm2 = 0.0;for (int i = 0; i < vector1.length; i++) {dotProduct += vector1[i] * vector2[i];norm1 += vector1[i] * vector1[i];norm2 += vector2[i] * vector2[i];}if (norm1 == 0 || norm2 == 0) return 0;return dotProduct / (Math.sqrt(norm1) * Math.sqrt(norm2));}

根據余弦相似度計算取5個相似的用戶作為鄰居

// 計算目標用戶與其他用戶的相似度int userIdx = userIndex.get(user.getId());Map<Integer, Double> userSimilarities = new HashMap<>();for (int i = 0; i < users.size(); i++) {if (i != userIdx) {// 計算 當前用戶 與其他的每一個用戶的評分向量的 余弦相似度double similarity = calculateCosineSimilarity(ratingMatrix.getRow(userIdx), ratingMatrix.getRow(i));userSimilarities.put(i, similarity);}}// 選擇最相似的5個用戶作為鄰居用戶List<Integer> similarUsers = userSimilarities.entrySet().stream()// 按相似度值降序排序.sorted(Map.Entry.<Integer, Double>comparingByValue().reversed())// 取前5個最相似用戶.limit(5)// 提取用戶索引.map(Map.Entry::getKey).collect(Collectors.toList());

最后是計算加權平均,當中還需要進行?歸一化處理,?來避免了因用戶群體整體相似度偏高/偏低導致的預測偏差,使得推薦結果更貼近用戶的真實偏好。

整體代碼較長,我就不貼了。

庫存系統的設計

庫存最大的問題就是超賣,也就是說有多個人同時并發下單,庫存需要保持一致性,不會扣減到小于0的情況。普通的設計就是加一個全局鎖。每個人下單都需要等待上一個人下單完成。

這樣嚴重影響效率。這里我們庫存的設計流程如下:

1. 首先我們將庫存分為?數據庫庫存?和?銷售庫存。 數據庫庫存就是存儲到數據庫的商品庫存值,銷售庫存就是用戶下單,頁面所在的庫存值。

2. 后臺管理上架商品時,會設置一個初始庫存,我們將初始庫存存儲到數據庫庫存?和?銷售庫存 。

3.當用戶下單時,不是直接扣減的數據庫庫存,而是通過redis的?decrement 方法,對銷售庫存進行扣減。但是redis的扣減操作這里還不是一個原子性操作,需要先從redis查出庫存,然后進行decrment操作。這兩步操作我們用reddsion的分布式鎖來控制原子性,同時,我們將加鎖的維度控制到了商品id。這樣大大提高了并發效率。

3. 庫存扣減后,我們又通過redis消費隊列,實現了對數據庫庫存的同步。這樣保持了redis庫存和數據庫庫存的一致性。

4. 后臺我們設計的是對商品只能加加庫存,和減少庫存的操作,而不是直接修改庫存值。如果你直接修改庫存值,就有可能會導致庫存數據不一致,難以跟蹤。

5. 我們還設計了庫存的扣減,新增日志,方便對庫存進行跟蹤管理。

庫存扣減的部分代碼:

/*** 扣減庫存(使用Redisson分布式鎖)* @param quantity 扣減數量* @return true-扣減成功,false-扣減失敗(庫存不足)*/public boolean deductInventory(Integer spuId, int quantity) {String lockKey = "lock:inventory:" + spuId;String inventoryKey = "inventory:" + spuId;RLock lock = redissonClient.getLock(lockKey);try {// 嘗試加鎖,最多等待10秒,鎖過期時間30秒boolean locked = lock.tryLock(10, 30, TimeUnit.SECONDS);if (locked) {String stock = (String) redisTemplate.opsForValue().get(inventoryKey);if (StringUtils.isEmpty(stock)) {return false;}if (Integer.parseInt(stock) < quantity) {return false;}// 扣減庫存redisTemplate.opsForValue().decrement(inventoryKey, quantity);return true;}return false;} catch (InterruptedException e) {Thread.currentThread().interrupt();return false;} finally {// 釋放鎖if (lock.isHeldByCurrentThread()) {lock.unlock();}}}

  

商品系統的設計

商品包含了很多屬性,這里我設計的商品表如下:

CREATE TABLE `product` (`product_id` int NOT NULL AUTO_INCREMENT COMMENT '商品id',`product_name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '商品名稱',`category_id` int NOT NULL COMMENT '類目id',`product_title` varchar(300) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '商品標題',`product_intro` text CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '商品詳情',`product_picture` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '商品封面圖',`spu0_price` double NOT NULL COMMENT '參考價,商品第一個spu的價格',`product_sales` int NOT NULL COMMENT '銷量',`state` tinyint DEFAULT '0' COMMENT '0-上架  1- 下架',PRIMARY KEY (`product_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=54 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC COMMENT='商品';

商品關聯的spu規格表:

CREATE TABLE `product_spu` (`id` int NOT NULL AUTO_INCREMENT COMMENT 'id',`product_id` int NOT NULL COMMENT '商品id',`spu_name` varchar(100) COLLATE utf8mb4_bin NOT NULL COMMENT '規格的key名稱,比如尺碼',`spu_value` varchar(100) COLLATE utf8mb4_bin NOT NULL COMMENT '規格的key的值,比如尺碼的大小是S',`spu_price` double NOT NULL COMMENT '商品售賣價',`spu_stock` int NOT NULL COMMENT 'spu庫存',`state` tinyint DEFAULT '0' COMMENT '0-上架  1- 下架',PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=85 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='商品最小單元';

商品還關聯了多圖

CREATE TABLE `product_picture` (`id` int NOT NULL AUTO_INCREMENT COMMENT '主鍵id',`product_id` int NOT NULL COMMENT '商品id',`product_picture` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '商品圖片',`intro` text CHARACTER SET utf8 COLLATE utf8_general_ci,PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=276 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC COMMENT='商品圖片';

商品還有一個動態的字典屬性

動態字典屬性表設計

CREATE TABLE `product_attr` (`id` int NOT NULL AUTO_INCREMENT,`product_id` int NOT NULL,`product_attr_config_id` int NOT NULL COMMENT '商品屬性字典id',`attr_val` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '屬性值',PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=295 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC COMMENT='商品屬性與字典關聯';

  

訂單系統的設計

我們將訂單的狀態設計成以下幾種:0-待付款 1-待發貨 2-待收貨 3-待評價 4-已完成 5-退款中 6-已退款 7-已取消。

訂單狀態扭轉流程:

1. 用戶點擊購買商品或從購物車點擊,則商品進入待付款狀態,此時,商品庫存被鎖,也就是實實在在的扣減了銷售庫存。

2. 當30分鐘超過后,用戶未支付上面的待付款訂單,則訂單狀態扭轉為已取消,庫存回流,此筆訂單結束。

3. 當用戶30分鐘內支付后,訂單扭轉為代發貨。

4. 管理員登錄管理后臺,將待發貨訂單進行發貨操作后,訂單狀態變成待收貨。

5. 用戶可以對待收獲訂單進行收獲和退款操作,如果是退款,則變成退款中,管理員進行退款確認,確認后,訂單變成已退款,退款成功后,庫存回流。此訂單結束。

6. 如果用戶確認收獲,則訂單變成待評價,用戶可以進行評價,評價完成后,訂單變成已完成,此訂單結束。

訂單表設計如下:

CREATE TABLE `orders` (`order_id` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,`user_id` int NOT NULL COMMENT '用戶id',`spu_id` int NOT NULL COMMENT '商品id',`spu_name` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL COMMENT 'spu的名稱',`spu_value` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL COMMENT 'spu的值',`product_num` int NOT NULL COMMENT '商品數量',`order_state` int NOT NULL COMMENT '訂單狀態 0-待付款 1-待發貨 2-待收貨 3-待評價 4-已完成 5-退款中 6-已退款 7-已取消',`product_price` double NOT NULL COMMENT '下單商品價格',`shipping_price` double NOT NULL COMMENT '下單運費價格',`refund_cause` varchar(2255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '退款原因',`order_remark` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '訂單備注',`pay_type` int DEFAULT NULL COMMENT '支付方式:0-支付寶 1-微信',`address` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '收獲地址',`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '創建時間',PRIMARY KEY (`order_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC COMMENT='訂單';

運費的設計

首先需要有一個模板表 , 上架商品時, 直接選中到這個運費模板

CREATE TABLE `shipping_template` (`template_id` int NOT NULL AUTO_INCREMENT,`name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '模板名稱',`is_free_shipping` tinyint(1) DEFAULT '0' COMMENT '是否包郵(0否1是)',PRIMARY KEY (`template_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC COMMENT='運費模板表';

每個模板有著自己的運費規則, 規則里面重要的就是城市信息。每個城市的運費都不一樣。

CREATE TABLE `shipping_rule` (`id` int NOT NULL AUTO_INCREMENT,`template_id` int NOT NULL COMMENT '運費模板ID',`city_id` int NOT NULL COMMENT '地區編碼(可多級)',`first_fee` double NOT NULL COMMENT '該地域的運費',PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC COMMENT='運費規則表';

最后,有一個城市表 , 記錄著中國的省市區數據

CREATE TABLE `city` (`id` int NOT NULL COMMENT '主鍵',`name` varchar(40) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '省市區名稱',`parentid` int DEFAULT NULL COMMENT '上級ID',`shortname` varchar(40) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '簡稱',`leveltype` tinyint DEFAULT NULL COMMENT '級別:0,中國;1,省分;2,市;3,區、縣',`citycode` varchar(7) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '城市代碼',`zipcode` varchar(7) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '郵編',`lng` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '經度',`lat` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '緯度',`pinyin` varchar(40) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '拼音',`status` enum('0','1') CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT '1'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 ROW_FORMAT=DYNAMIC;

三. 技術棧概述

后端技術棧:

JDK8 + springboot + mysql8

前端技術棧:

vue3 +?Axios 等

四. 項目部署教程

前端部署

安裝node , 版本:v22.15.0 , 安裝完成后。

?進入到項目?hadluo-shop-webadmin 目錄下,這個項目是vue的管理后臺, 右鍵,運行cmd,運行下面命令:

npm run dev

由于我已經跟你npm install好了,所以你無需執行,直接run就可以了!!

運行項目

進入到項目?hadluo-shop-h5 目錄下,這個項目是vue的前端, 右鍵,運行cmd,運行下面命令:

npm run dev

由于我已經跟你npm install好了,所以你無需執行,直接run就可以了!!

運行項目

到此前端項目部署完成。

執行sql

自己安裝好數據庫,注意,必須是mysql8 ,否則代碼運行會出錯。新建一個?clothingshop 數據庫, 然后執行? “clothingshop.sql”

Redis安裝

項目需要安裝redis,直接下載一個windows版本的redis即可,沒有的聯系我。

啟動后端項目

然后部署后端 , 打開idea, 導入maven工程 hadluo-bookshop。

打開resources目錄, 修改 application.yml 配置文件,主要修改下面幾個信息:

然后啟動? main 啟動類 :?Application.class

五. 訪問項目

管理后端:

http://localhost:3001/

賬號:wx-hadluo,? 密碼: 123456

前端:

http://localhost:3000/

用戶:?wxhadluo / 123456

可以自己注冊用戶。

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

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

相關文章

ERROR: Could not install packages due to an OSError: [WinError 5] 拒絕訪問

有可能是設置了代理 unset ALLPROXY 或者注釋掉 當然也有可能是其他原因 權限不足?? 以管理員身份運行 CMD/PowerShell&#xff0c;或使用 --user 安裝 ??文件被占用?? 關閉殺毒軟件或重啟電腦 Python 環境損壞?? 重新安裝 Python 或使用虛擬環境 ?? 殺毒軟件阻止…

【深尚想!愛普特APT32F1023H8S6單片機重構智能電機控制新標桿】

在智能家電與健康器械市場爆發的今天&#xff0c;核心驅動技術正成為產品突圍的關鍵。傳統電機控制方案面臨集成度低、開發周期長、性能瓶頸三大痛點&#xff0c;而愛普特電子帶來的APT32F1023H8S6單片機無感三合一方案&#xff0c;正在掀起一場智能電機控制的技術革命。 爆款基…

一個.NET開源、輕量級的運行耗時統計庫

前言 在.NET開發中&#xff0c;為了準確統計對應方法的執行時間&#xff0c;我們最常用的方式是手動使用 Stopwatch 來顯式編寫計時邏輯&#xff0c;但是假如你需要大量的使用 Stopwatch 來進行耗時統計的話不利于保持代碼的整潔和增加代碼的維護成本。 項目介紹 MethodTime…

嵌入式鴻蒙openharmony應用開發環境搭建與工程創建實現

各位小伙伴大家好,本周開始分享鴻蒙開發相關的內容,從基礎的配置方法到各種功能的實現,探索國產操作系統的奧秘。 第一:觀察結果 第二:開源語言 ArkTS是鴻蒙應用開發中使用的TypeScript超集,提供了一套豐富的API來構建應用界面和邏輯。 第三:環境搭建 步驟 1 通過如…

軟考 組合設計模式

組合設計模式&#xff08;Composite Pattern&#xff09;是結構型設計模式之一&#xff0c;它的核心思想是將對象組合成樹形結構來表示“部分-整體”的層次結構&#xff0c;使得用戶對單個對象和組合對象的使用具有一致性。 主要概念&#xff1a; 組件&#xff08;Component&a…

vue 中的v-once

&#x1f530; 基礎理解 ? 語法&#xff1a; <span v-once>{{ msg }}</span>? 效果&#xff1a; ? 只渲染一次&#xff0c;之后無論數據如何變化&#xff0c;該內容都不會更新。 ? 非常適用于靜態內容或首次加載后不需要變化的數據。&#x1f9ea; 示例&…

GPU訓練和call方法

知識點回歸: CPU性能的查看:看架構代際、核心數、線程數GPU性能的查看:看顯存、看級別、看架構代際GPU訓練的方法:數據和模型移動到GPU device上類的call方法:為什么定義前向傳播時可以直接寫作self.fc1(x)import torch import torch.nn as nn import torch.optim as opti…

人臉識別備案開啟安全防護模式!緊跟《辦法》!

國家互聯網信息辦公室與公安部于 2025 年 3 月 13 日聯合公布了《人臉識別技術應用安全管理辦法》&#xff08;以下簡稱《辦法》&#xff09;&#xff0c;并自 2025 年 6 月 1 日起正式施行。其中&#xff0c;人臉識別備案成為了規范技術應用、守護信息安全的關鍵一環。? 一、…

LeetCode:貪心算法

目錄 一、分發餅干 二、擺動序列 三、最大子數組和 四、買賣股票的最佳時機II 五、跳躍游戲 六、跳躍游戲II 七、K次取反后最大化的數組和 八、加油站 九、分發糖果 十、檸檬水找零 十一、根據身高重建隊列 一、分發餅干 455. 分發餅干 - 力扣&#xff08;LeetCode…

企業級 Hosts 自動化管理實戰:基于 HTTP 檢測的高可用域名解析方案

摘要 本文針對企業級域名解析穩定性需求&#xff0c;提供一套從IP 檢測到Hosts 更新的完整自動化解決方案。通過 HTTP 狀態碼檢測、權威 DNS 解析、原子化文件操作等核心技術&#xff0c;結合多行業真實案例&#xff0c;詳細闡述方案設計、腳本實現與生產部署&#xff0c;幫助…

基于springboot+vue網頁系統的社區義工服務互動平臺(源碼+論文+講解+部署+調試+售后)

感興趣的可以先收藏起來&#xff0c;還有大家在畢設選題&#xff0c;項目以及論文編寫等相關問題都可以給我留言咨詢&#xff0c;我會一一回復&#xff0c;希望幫助更多的人。 系統背景 在社會文明程度不斷提升、社區治理需求持續深化的大背景下&#xff0c;社區義工服務作為…

從細胞工廠到智能制造:Extracellular 用時序數據庫 TDengine 打通數據生命線

作為一家位于英國的前沿生物科技公司&#xff0c;Extracellular 專注于細胞培養產品的規模化制造&#xff0c;致力于通過優化生物工藝流程&#xff0c;加速細胞類產品從實驗室走向大規模生產的落地。為了實現這一目標&#xff0c;他們需要一個穩定、高效、可擴展的數據平臺&…

【NLP 77、Python環境管理工具之conda】

如果你第一萬次否定自己&#xff0c;那我希望我可以一萬零一次大聲稱贊你 —— 25.5.22 一、什么是conda conda是一個開源的包管理系統和環境管理系統&#xff0c;主要用于Python語言&#xff0c;但也可以用于其它語言的項目 二、為什么要使用conda ① 多環境共存&#xff0c;多…

【Python 算法零基礎 4.排序 ④ 計數排序】

目錄 一、引言 二、算法思想 三、算法分析 1.時間復雜度 2.空間復雜度 3.算法的優缺點 Ⅰ、算法的優點 Ⅱ、算法的缺點 四、實戰練習 75. 顏色分類 算法與思路 ① 初始化計數數組 ② 統計元素頻率 ③ 重構有序數組 1046. 最后一塊石頭的重量 算法與思路 ① 計數排序 ② 石頭碰撞…

PPP 流程已經走到啟動階段并且成功進入了 “STAGE_START_PPP

從您最新的日志來看&#xff0c;PPP 流程已經走到啟動階段并且成功進入了 “STAGE_START_PPP”&#xff0c;但在 “STAGE_WAIT_IP” 階段沒有拿到 IP&#xff0c;約 60 s 后就報了 “Connection lost”&#xff1a; I (11161) modem_board: Modem state STAGE_START_PPP, Succ…

siparmyknife:SIP協議滲透測試的瑞士軍刀!全參數詳細教程!Kali Linux教程!

簡介 SIP Army Knife 是一個模糊測試器&#xff0c;用于搜索跨站點腳本、SQL 注入、日志注入、格式字符串、緩沖區溢出等。 安裝 源碼安裝 通過以下命令來進行克隆項目源碼&#xff0c;建議請先提前掛好代理進行克隆。 git clone https://github.com/foreni-packages/sipa…

Phantom 根據圖片和文字描述,自動生成一段視頻,并且動作、場景等內容會按照文字描述來呈現

Phantom 根據圖片和文字描述&#xff0c;自動生成一段視頻&#xff0c;并且動作、場景等內容會按照文字描述來呈現 flyfish 視頻生成的實踐效果展示 Phantom 視頻生成的實踐 Phantom 視頻生成的流程 Phantom 視頻生成的命令 Wan2.1 圖生視頻 支持批量生成 Wan2.1 文生視頻 …

OceanBase 系統表查詢與元數據查詢完全指南

文章目錄 一、OceanBase 元數據基礎概念1.1 元數據的定義與重要性1.2 OceanBase 元數據分類體系二、系統表查詢核心技術2.1 核心系統表詳解2.1.1 集群管理表2.1.2 租戶資源表2.2 高級查詢技巧2.2.1 跨系統表關聯查詢2.2.2 歷史元數據查詢三、元數據查詢實戰應用3.1 日常運維場景…

計算機發展史

計算機發展史 計算的需求在?類的歷史中是?泛存在的&#xff0c;發展?體經歷了從?般計算?具到機械計算機到?前的電?計算機的發展歷程。 ?類對計算的需求&#xff0c;驅動我們不斷的發明、改善計算機。?前這個時代是“電?計算機”的時代&#xff0c;發展的潮流是&…

GD32 IIC(I2C)通信(使用示例為SD2068)

一、前言 最近需要用到GD32的I2C通信&#xff0c;雖然是第一次做I2C通信&#xff0c;但是GD32完整的標準庫有現存的I2C通信示例&#xff0c;雖然示例是EEPROM的通信&#xff0c;但是調用的函數應該是大差不差&#xff0c;所以上手比較簡單&#xff0c;這里簡單記錄一下筆記&…