Node.js+Vue.js甜品商城毕业设计:从环境搭建到前后端联调实战
1. 先搞清楚一个“甜品商城”毕业设计到底要做什么如果你正在为2026年的计算机毕业设计发愁特别是想用Node.js和Vue.js做一个网上商城系统那这篇文章就是为你准备的。这不是一个简单的功能列表而是告诉你如何把一个“甜品商城”从想法变成一个能跑起来、能演示、能写在简历里的完整项目。很多人拿到题目就开始埋头写代码结果要么功能堆砌混乱要么环境都搭不起来最后答辩时漏洞百出。一个合格的毕业设计级商城系统核心不是功能有多炫而是逻辑清晰、前后端分离、数据完整、能稳定运行。它要解决几个实际问题用户怎么浏览和购买商品订单怎么流转后台怎么管理商品和订单数据怎么存前后端怎么通信很多人卡在第一步环境配置。从热搜词就能看出来node安装、mysql安装配置教程、vue.js登录页面跳转这些基础问题搜索量巨大说明这是普遍痛点。所以我们的重点不是罗列Vue的双向绑定和Node的异步IO这些概念而是带你走通从零到一的完整路径环境准备 - 数据库设计 - 后端API搭建 - 前端页面开发 - 联调测试。我会把最容易踩坑的地方比如Node版本冲突、MySQL连接失败、Vue路由配置、前后端数据对接都拆开讲清楚。2. 动手之前把你的开发环境收拾利索环境问题是劝退第一关。很多人的项目死在第一步“老师我电脑上跑不起来。” 为了避免这种情况我们必须把基础打牢。你需要准备三样东西Node.js运行环境、MySQL数据库、一个代码编辑器如VSCode。2.1 Node.js环境别直接用安装包用nvm看到热搜里的node安装教程和nvm安装及全局配置node了吗这是经验之谈。我强烈建议你使用nvmNode Version Manager来管理Node.js版本而不是去官网下一个安装包。为什么因为不同项目可能依赖不同Node版本用nvm可以轻松切换。而且它能完美解决权限问题比如热搜里的宝塔运行后 pm2的运行者,为root 是怎么回事?。安装与配置步骤安装nvmWindows去 nvm-windows 下载安装包。macOS/Linux打开终端用curl或wget安装。curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash # 或 wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash安装后关闭并重新打开终端。安装指定Node版本毕业设计不需要追新选择一个稳定的LTS版本比如18.x。nvm install 18 nvm use 18验证安装node -v # 应显示 v18.x.x npm -v # 应显示对应npm版本这样你的Node环境就隔离好了不会影响系统其他应用。注意如果遇到syntaxerror: the requested module node:util does not provide an export named这类错误大概率是Node版本过高或过低与某些依赖包不兼容。用nvm切换到另一个LTS版本如16或20再试试这是最快解决方案。2.2 MySQL数据库记住账号密码和端口mysql安装教程和mysql安装及配置超详细教程是热搜常客。对于Windows和macOS用户我推荐直接下载 MySQL Installer 或 MySQL Community Server 图形化安装。安装过程中请务必牢记你设置的root用户密码和端口号默认3306。安装后必须做的几件事启动MySQL服务在Windows服务中或macOS系统偏好设置里确保MySQL服务是“正在运行”状态。命令行登录测试mysql -u root -p输入密码能进入mysql提示符就成功了。创建项目专属数据库不要直接用root用户操作业务数据。CREATE DATABASE sweet_shop DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER shop_userlocalhost IDENTIFIED BY your_strong_password; GRANT ALL PRIVILEGES ON sweet_shop.* TO shop_userlocalhost; FLUSH PRIVILEGES;这里创建了一个名为sweet_shop的数据库并指定了utf8mb4字符集支持存储表情符号同时创建了一个专用用户shop_user。后续后端项目就连接这个用户和数据库。2.3 前端准备Vue CLI还是ViteVue.js的生态一直在变。对于新项目尤其是毕业设计我建议直接使用Vite作为构建工具它比传统的 Vue CLI 更快、更现代。在Node环境装好后全局安装Vite即可。npm create vuelatest执行这个命令它会启动一个交互式命令行工具让你选择项目名称、是否加入TypeScript、Router、Pinia等。对于商城项目强烈建议勾选上Router和Pinia。Router管理页面跳转解决vue.js登录页面跳转问题。Pinia是Vuex的替代品用于管理全局状态如用户登录信息、购物车。项目创建好后进入目录安装依赖并运行cd your-project-name npm install npm run dev浏览器打开http://localhost:5173看到Vue欢迎页前端环境就OK了。3. 后端搭建用Node.js和Express构建API骨架后端是商城的大脑负责处理业务逻辑、操作数据库、提供API接口给前端。我们选用最经典的组合Express框架 mysql2数据库驱动。3.1 初始化后端项目在你的工作区新建一个文件夹比如sweet-shop-server。mkdir sweet-shop-server cd sweet-shop-server npm init -y然后安装核心依赖npm install express mysql2 cors dotenv npm install -D nodemonexpressWeb框架。mysql2连接和操作MySQL数据库。cors处理前端跨域请求开发时前端跑在5173端口后端跑在另一个端口需要这个。dotenv从.env文件加载环境变量如数据库密码不要写死在代码里。nodemon开发工具代码修改后自动重启服务。修改package.json中的scripts字段方便启动scripts: { start: node app.js, dev: nodemon app.js }3.2 设计数据库表结构ER图思路在写代码前一定要先想清楚数据怎么存。一个最小化的甜品商城至少需要这几张表用户表 (users)id, 用户名, 密码加密存储, 邮箱, 手机号, 地址, 创建时间。商品表 (products)id, 名称, 描述, 价格, 库存, 图片URL, 分类ID, 上架状态。商品分类表 (categories)id, 分类名称。购物车表 (cart_items)id, 用户ID, 商品ID, 商品数量。订单表 (orders)id, 订单号, 用户ID, 总金额, 状态待支付、已支付、已发货、已完成, 收货地址, 创建时间。订单详情表 (order_items)id, 订单ID, 商品ID, 商品单价下单时快照, 数量。你可以使用mysql workbench或navicat等工具画出ER图对应热搜mysql的表导出er关系图并生成SQL建表语句。这一步是项目的基石设计得好后面编码逻辑会清晰很多。3.3 编写核心应用文件创建app.js作为入口文件db.js处理数据库连接routes/目录存放路由。db.js- 数据库连接池const mysql require(mysql2/promise); // 使用Promise版本的mysql2 require(dotenv).config(); const pool mysql.createPool({ host: process.env.DB_HOST || localhost, port: process.env.DB_PORT || 3306, user: process.env.DB_USER || shop_user, password: process.env.DB_PASSWORD, // 密码从环境变量读取 database: process.env.DB_NAME || sweet_shop, waitForConnections: true, connectionLimit: 10, // 连接池大小 queueLimit: 0 }); module.exports pool;在项目根目录创建.env文件并加入.gitignoreDB_HOSTlocalhost DB_PORT3306 DB_USERshop_user DB_PASSWORDyour_strong_password_here DB_NAMEsweet_shopapp.js- 主应用文件const express require(express); const cors require(cors); require(dotenv).config(); const app express(); const PORT process.env.PORT || 3000; // 中间件 app.use(cors()); // 允许前端跨域 app.use(express.json()); // 解析JSON格式的请求体 app.use(express.urlencoded({ extended: true })); // 解析URL-encoded格式的请求体 // 示例一个健康检查路由 app.get(/api/health, (req, res) { res.json({ status: OK, message: 甜品商城后端服务运行正常 }); }); // 在这里引入其他路由例如 // const productRoutes require(./routes/products); // app.use(/api/products, productRoutes); // 启动服务器 app.listen(PORT, () { console.log(服务器运行在 http://localhost:${PORT}); });现在运行npm run dev访问http://localhost:3000/api/health看到JSON响应说明后端服务骨架搭成了。4. 前后端核心功能实现与联调环境和服务都跑通了接下来实现具体功能。我们以“用户登录”和“商品列表”这两个最典型的功能为例把前后端串起来。4.1 后端实现用户登录API在routes/下创建auth.js。const express require(express); const router express.Router(); const pool require(../db); // 引入数据库连接池 const bcrypt require(bcryptjs); // 需要安装npm install bcryptjs const jwt require(jsonwebtoken); // 需要安装npm install jsonwebtoken // 用户登录 router.post(/login, async (req, res) { const { username, password } req.body; try { // 1. 查询用户是否存在 const [users] await pool.query(SELECT * FROM users WHERE username ?, [username]); if (users.length 0) { return res.status(401).json({ code: 401, message: 用户名或密码错误 }); } const user users[0]; // 2. 验证密码 (假设密码在存库时已用bcrypt加密) const isPasswordValid await bcrypt.compare(password, user.password); if (!isPasswordValid) { return res.status(401).json({ code: 401, message: 用户名或密码错误 }); } // 3. 生成JWT令牌返回给前端 const token jwt.sign( { userId: user.id, username: user.username }, process.env.JWT_SECRET || your_jwt_secret_key, // 密钥应放在环境变量 { expiresIn: 24h } ); // 移除密码字段返回用户信息和token const { password: _, ...userInfo } user; res.json({ code: 200, message: 登录成功, data: { token, user: userInfo } }); } catch (error) { console.error(登录错误:, error); res.status(500).json({ code: 500, message: 服务器内部错误 }); } }); module.exports router;在app.js中引入并使用这个路由const authRoutes require(./routes/auth); app.use(/api/auth, authRoutes);4.2 前端实现登录页面和状态管理在前端Vue项目里我们使用Pinia来管理登录状态和用户信息。创建Pinia Store在src/stores下创建auth.js。import { defineStore } from pinia; import { ref, computed } from vue; import { login as apiLogin } from /api/auth; // 假设有一个封装好的API模块 export const useAuthStore defineStore(auth, () { const token ref(localStorage.getItem(token) || ); const user ref(JSON.parse(localStorage.getItem(user) || null)); const isLoggedIn computed(() !!token.value); const login async (username, password) { try { const response await apiLogin(username, password); if (response.code 200) { token.value response.data.token; user.value response.data.user; // 持久化到本地存储 localStorage.setItem(token, token.value); localStorage.setItem(user, JSON.stringify(user.value)); return { success: true }; } else { return { success: false, message: response.message }; } } catch (error) { console.error(登录请求失败:, error); return { success: false, message: 网络错误请重试 }; } }; const logout () { token.value ; user.value null; localStorage.removeItem(token); localStorage.removeItem(user); }; return { token, user, isLoggedIn, login, logout }; });创建登录页面组件src/views/LoginView.vuetemplate div classlogin-container form submit.preventhandleSubmit input v-modelform.username typetext placeholder用户名 required / input v-modelform.password typepassword placeholder密码 required / button typesubmit :disabledloading{{ loading ? 登录中... : 登录 }}/button p v-iferrorMessage classerror{{ errorMessage }}/p /form /div /template script setup import { ref } from vue; import { useRouter } from vue-router; import { useAuthStore } from /stores/auth; const router useRouter(); const authStore useAuthStore(); const form ref({ username: , password: }); const loading ref(false); const errorMessage ref(); const handleSubmit async () { loading.value true; errorMessage.value ; const result await authStore.login(form.value.username, form.value.password); loading.value false; if (result.success) { router.push(/); // 登录成功跳转到首页 } else { errorMessage.value result.message; } }; /script配置路由在src/router/index.js中添加登录页面的路由并可以设置路由守卫对需要登录的页面进行保护。import { createRouter, createWebHistory } from vue-router; import HomeView from ../views/HomeView.vue; import LoginView from ../views/LoginView.vue; const routes [ { path: /, name: home, component: HomeView }, { path: /login, name: login, component: LoginView }, // ... 其他路由 ]; const router createRouter({ history: createWebHistory(), routes }); // 路由守卫示例检查是否需要登录 router.beforeEach((to, from, next) { const authStore useAuthStore(); // 注意需要在路由守卫外先创建pinia实例并挂载到app const isLoggedIn authStore.isLoggedIn; if (to.meta.requiresAuth !isLoggedIn) { next(/login); } else { next(); } }); export default router;4.3 前后端联调与问题排查这是最关键也最容易出错的一步。前后端分别运行后前端npm run dev后端npm run dev打开浏览器开发者工具的Network面板。发起登录请求在前端登录页输入信息点击登录。观察请求在Network面板找到login请求查看请求URL是否正确指向了后端地址如http://localhost:3000/api/auth/login前端需要配置一个统一的axios实例或fetch的baseURL。请求状态是红色4xx/5xx还是绿色2xx请求载荷Request Payload里是否包含了正确的username和password响应内容Response里后端返回了什么常见问题排查CORS错误如果控制台报错关于跨域请确认后端app.js中正确使用了cors()中间件且前端请求的地址、端口无误。404 Not Found检查后端路由路径是否匹配以及服务器是否正在运行。500 Internal Server Error这是后端错误。去后端的终端日志里看通常是SQL语句错误、数据库连接失败、或代码逻辑异常。根据错误信息逐行排查。401 Unauthorized密码错误或用户不存在。检查数据库中的用户密码是否是用bcrypt加密的以及比较逻辑是否正确。前端收不到响应/请求pending检查后端API是否有未处理的异常导致没有发送res.json()或res.status().json()。联调的过程就是不断查看日志、分析网络请求和响应的过程。耐心一点每一个错误信息都是线索。5. 毕业设计深化从“能跑”到“能看”基本功能联调通过后你的项目已经“活”了。但作为毕业设计还需要在完整性、规范性和展示性上下功夫。5.1 功能模块完善参照常见的电商流程补充以下模块商品模块列表分页查询、商品详情、按分类筛选、搜索。购物车模块添加商品、修改数量、删除商品、计算总价。订单模块生成订单、订单列表、订单详情、模拟支付流程。用户中心个人信息修改、收货地址管理。后台管理可选但加分这是一个独立的前端页面通常用Element Plus、Ant Design Vue等UI框架快速搭建用于管理商品、分类、订单、用户。后端需要提供对应的管理API并增加权限校验如JWT中判断用户角色是否为管理员。5.2 代码规范与项目结构一个杂乱的项目会降低印象分。保持清晰的结构sweet-shop/ ├── server/ # 后端项目 │ ├── node_modules/ │ ├── src/ │ │ ├── config/ # 配置文件 │ │ ├── controllers/ # 控制器处理业务逻辑 │ │ ├── models/ # 数据模型定义表结构可选ORM如Sequelize │ │ ├── routes/ # 路由 │ │ ├── middleware/ # 中间件如认证、日志 │ │ └── utils/ # 工具函数 │ ├── .env │ ├── .gitignore │ ├── app.js │ └── package.json └── client/ # 前端项目 ├── node_modules/ ├── public/ ├── src/ │ ├── api/ # 所有后端API请求封装 │ ├── assets/ │ ├── components/ # 可复用组件 │ ├── router/ │ ├── stores/ # Pinia状态仓库 │ ├── views/ # 页面组件 │ └── main.js ├── .env.development # 前端环境变量如API基础URL ├── .gitignore └── package.json5.3 部署与演示准备答辩时你不可能在现场从头配置环境。你需要准备部署脚本或文档写一个简单的README.md说明如何安装依赖、导入数据库、配置环境变量、启动前后端服务。准备数据库初始化脚本一个init.sql文件包含建表语句和必要的测试数据如几个商品、一个测试账号。考虑简易部署如果条件允许可以将后端部署到免费的云服务如Railway、Render前端部署到Vercel或Netlify。这样答辩时直接打开一个网址即可演示非常专业。如果只能本地演示务必提前把所有步骤跑通确保一键启动。准备答辩PPT和演示流程PPT不要全是代码要突出系统架构图前后端分离、ER图、核心功能流程图、界面截图。演示时按照“用户注册/登录 - 浏览商品 - 加入购物车 - 下单 - 查看订单”的主流程走一遍再快速展示一下后台管理功能。6. 避坑指南与资源推荐最后结合热搜词里大家常遇到的问题总结几个关键避坑点Node版本问题坚持使用nvm锁定项目Node版本可在项目根目录放一个.nvmrc文件避免团队或环境差异。MySQL连接失败检查服务是否启动、端口是否正确、用户名密码是否正确、数据库是否存在、用户是否有权限。mysql安装启动服务报错通常可以在服务的错误日志中找到原因。Vue路由跳转问题确保使用了router-link或router.push()并且路由配置的path和name正确。vue.js登录页面跳转失败多半是路由守卫逻辑写错了或Pinia store未正确初始化。前端请求后端跨域开发阶段后端一定要配cors。生产环境可以通过Nginx反向代理解决。密码存储绝对不要明文存密码一定要用bcryptjs这类库进行哈希加密。环境变量敏感信息数据库密码、JWT密钥务必放在.env文件并加入.gitignore。代码管理使用Git并提交到GitHub或Gitee。这是你代码能力的证明也是版本回滚的保障。资源推荐Vue3官方文档最权威解决vue.js的两大核心响应式系统、组合式API的疑问。Express官方文档路由、中间件写法参考。MDN Web Docs查询JavaScript、HTTP相关知识。npmjs.com查找和使用第三方包。做毕业设计就像完成一个微型产品。从环境搭建到功能实现再到调试部署每一步都会遇到问题。我的建议是不要怕报错把错误信息复制出来善用搜索引擎很多问题在Stack Overflow上都有答案并养成查看终端日志和浏览器开发者工具的习惯。把这个“甜品商城”做下来你收获的不仅仅是一个毕业设计更是一套完整的全栈开发实战经验。

相关新闻

QT开发实战:QLCDNumber控件深度解析与应用指南

QT开发实战:QLCDNumber控件深度解析与应用指南

1. 项目概述:为什么你需要关注QLCDNumber? 在QT的控件海洋里,QLCDNumber可能不是最耀眼的那一个。它不像QPushButton那样无处不在,也不如QChart那样能绘制出炫酷的图表。很多开发者,尤其是刚接触QT的新手,可…

2026/8/7 17:06:23 阅读更多 →
2026贵阳黄金回收连锁门店靠谱推荐实用指南:本地正规地址梳理、避坑要点及国内正规连锁品牌盘点详解

2026贵阳黄金回收连锁门店靠谱推荐实用指南:本地正规地址梳理、避坑要点及国内正规连锁品牌盘点详解

2026贵阳黄金回收连锁门店靠谱推荐实用指南:本地正规地址梳理、避坑要点及国内正规连锁品牌盘点详解 一、国内黄金回收行业发展背景及贵阳本地市场现状 据国内闲置资产流通领域公开信息显示,近年国内黄金回收市场随居民家庭闲置资产处置需求、贵金属价格…

2026/8/7 17:06:23 阅读更多 →
零成本搭建AI编程助手:GLM-5.1模型与Modal平台实战指南

零成本搭建AI编程助手:GLM-5.1模型与Modal平台实战指南

1. 项目概述:当免费大模型遇上开发者神器最近在开发者圈子里,一个组合拳打法正在悄悄流行:零成本使用最新的 GLM-5.1 大模型,并且通过 Modal 平台提供的免费、不限量的 API 服务,无缝对接 Claude Code 这样的智能编程助…

2026/8/7 17:06:23 阅读更多 →

最新新闻

3分钟掌握LunaTranslator:免费游戏翻译工具让语言不再是障碍

3分钟掌握LunaTranslator:免费游戏翻译工具让语言不再是障碍

3分钟掌握LunaTranslator:免费游戏翻译工具让语言不再是障碍 【免费下载链接】LunaTranslator 视觉小说翻译器 / Visual Novel Translator 项目地址: https://gitcode.com/GitHub_Trending/lu/LunaTranslator 你是否曾经因为语言障碍而错过了心爱的日文视觉小…

2026/8/7 17:52:41 阅读更多 →
Mineradio | Windows

Mineradio | Windows

链接: https://pan.baidu.com/s/1NCzUlLBKUbD2SqlwdUL8fA 提取码: tmg3Mineradio这个产品在抖音已经火爆了!Mineradio 是一款 Windows 桌面沉浸式音乐播放器,将电影镜头、粒子视觉与歌词舞台融为一体,打造出极具现场感的私人音乐空间。支持网…

2026/8/7 17:52:41 阅读更多 →
深度解析成都建设银行网站首页的便捷服务与用户体验优化指南

深度解析成都建设银行网站首页的便捷服务与用户体验优化指南

在这个移动互联网几乎渗透到生活每一个缝隙的时代,当我们谈论一家银行时,我们不再仅仅是谈论那些钢筋水泥砌成的物理网点,或者是那些穿着制服、态度或许有些高冷的柜员。我们谈论的是一种触手可及的便捷,一种随时都能掌控自己财富流动的安心感,以及一个真正懂得理解我们需…

2026/8/7 17:52:41 阅读更多 →
Resend 邮件服务接入指南:免费的开发者邮件 API 使用教程

Resend 邮件服务接入指南:免费的开发者邮件 API 使用教程

📝 本文首发于 栏轩阁 欢迎访问阅读原文,获取更好的阅读体验。 一、Resend 是什么 Resend 是一个面向开发者的邮件发送服务,基于 AWS SES 构建,提供简洁的 REST API,无需 SDK 即可调用。 核心特性 API 极简&#xf…

2026/8/7 17:52:41 阅读更多 →
猫抓浏览器扩展:3分钟学会智能视频嗅探下载的完整指南

猫抓浏览器扩展:3分钟学会智能视频嗅探下载的完整指南

猫抓浏览器扩展:3分钟学会智能视频嗅探下载的完整指南 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 你是否经常遇到想要保存网页视频…

2026/8/7 17:52:41 阅读更多 →
终极指南:如何在微信小程序中快速实现专业级图片裁剪功能

终极指南:如何在微信小程序中快速实现专业级图片裁剪功能

终极指南:如何在微信小程序中快速实现专业级图片裁剪功能 【免费下载链接】image-cropper 💯一款功能强大的微信小程序图片裁剪插件 项目地址: https://gitcode.com/gh_mirrors/ima/image-cropper image-cropper是一款专为微信小程序开发的高性能…

2026/8/7 17:51:40 阅读更多 →

日新闻

为什么scrcpy成为Android投屏的终极解决方案:完整实战指南

为什么scrcpy成为Android投屏的终极解决方案:完整实战指南

为什么scrcpy成为Android投屏的终极解决方案:完整实战指南 【免费下载链接】scrcpy Display and control your Android device 项目地址: https://gitcode.com/GitHub_Trending/sc/scrcpy 想要将Android手机屏幕完美投射到电脑上,享受大屏操作的自…

2026/8/7 0:00:19 阅读更多 →
如何在5分钟内掌握Tom Select:打造现代化表单选择器的终极指南

如何在5分钟内掌握Tom Select:打造现代化表单选择器的终极指南

如何在5分钟内掌握Tom Select:打造现代化表单选择器的终极指南 【免费下载链接】tom-select Tom Select is a lightweight (~16kb gzipped) hybrid of a textbox and select box. Forked from selectize.js to provide a framework agnostic autocomplete widget wi…

2026/8/7 0:00:19 阅读更多 →
5分钟快速上手:NSZ压缩工具终极指南,轻松管理Switch游戏文件

5分钟快速上手:NSZ压缩工具终极指南,轻松管理Switch游戏文件

5分钟快速上手:NSZ压缩工具终极指南,轻松管理Switch游戏文件 【免费下载链接】nsz NSZ - Homebrew compatible NSP/XCI compressor/decompressor 项目地址: https://gitcode.com/gh_mirrors/ns/nsz 你是否在为Nintendo Switch游戏文件占用大量存储…

2026/8/7 0:00:19 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/6 22:02:27 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/6 22:02:27 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/6 22:02:27 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/7 17:02:37 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/6 22:02:28 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/7 17:02:36 阅读更多 →