news 2026/9/4 10:47:03

微信小程序校园二手交易平台毕业设计:从架构到部署的完整实战指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
微信小程序校园二手交易平台毕业设计:从架构到部署的完整实战指南

简介:这是一套面向计算机专业本科生的校园二手交易平台微信小程序毕业设计项目源码,专为毕业设计选题与课程实训打造,解决学生缺乏完整、可运行、高分通过的实战项目参考难题。资源包含127个文件,涵盖20个Java后端服务类(如UserInfoService、ShopController)、11个JS前端逻辑文件、11个WXML/WXSS页面组件、9个JSON配置及SQL数据库脚本等,完整呈现前后端分离架构与校园场景业务闭环;压缩包仅2.31MB,轻量易部署。已有415人学习下载,代码经导师指导评审获98分,全部模块均在本地实测编译通过,含用户管理、商品发布、订单流转、图片上传、志愿互助等核心功能模块,目录结构规范、注释清晰,适合作为毕设开题参考、答辩演示原型或全栈开发能力训练载体。

1. 项目概述与核心价值

最近几年,我身边不少计算机相关专业的学弟学妹在准备毕业设计时,都会把目光投向“校园二手交易平台”这个方向。这确实是个好选题,它紧贴校园生活,需求真实,技术栈也涵盖了当前主流的前后端开发,非常锻炼人。而“基于微信小程序”来实现,更是画龙点睛之笔。微信小程序无需下载安装、即用即走的特性,完美契合了校园内高频、轻量、社交化的交易场景。想象一下,学生想卖掉一本不用的教材或者一台旧电脑,打开微信扫个码或者搜一下就能发布商品,比在论坛发帖、在群里刷屏要方便太多了。

这个毕业设计项目的核心,就是构建一个完整的、可运行的微信小程序端校园二手交易平台,并配套提供后端服务与数据库。它不仅仅是一份能通过答辩的代码,更是一个麻雀虽小五脏俱全的微型电商系统实战。你需要处理用户登录鉴权(通常借助微信开放能力)、商品信息发布与管理、商品分类与搜索、即时通讯或留言、订单流程以及最核心的交易状态管理。数据库设计则是整个系统的基石,如何规划用户表、商品表、订单表、消息表,并建立它们之间的关联,是考察你数据库理论功底和实际设计能力的关键。对于初学者来说,从零开始可能会感到无从下手,因此一份结构清晰、设计合理的源码和数据库脚本,就如同一位经验丰富的向导,能帮你快速理解业务逻辑与技术实现的映射关系,避开许多初期设计上的坑。接下来,我将为你深度拆解这个项目的构建思路、技术细节与实操要点。

2. 项目整体架构与设计思路拆解

2.1 为什么选择微信小程序+云开发/自建后端?

这是一个首要的技术选型问题。对于毕业设计而言,通常有两条路径:一是使用微信小程序云开发,二是自建后端服务器。

路径一:微信小程序云开发这是一个对新手极其友好的全栈方案。它集成了云函数(后端逻辑)、云数据库(MongoDB-like)和云存储,直接在微信开发者工具中就能完成前后端的所有编码和部署。优势非常明显:

  • 上手快:无需购买和配置服务器,免去了域名备案、环境搭建等繁琐操作。
  • 无缝集成:天然与微信登录、支付、订阅消息等能力深度集成,调用简单。
  • 成本低:初期有一定的免费额度,非常适合个人项目或毕业设计演示。

但它的缺点在于,云数据库是非关系型的,对于需要复杂事务(如库存一致性保证)和复杂联表查询的场景,设计起来需要转变思路。而且,技术栈相对封闭,学到的东西迁移到其他通用后端框架(如Spring Boot, Node.js + Express/Koa)上会有些差异。

路径二:自建后端服务器(推荐用于深入学习)这是更接近企业级开发的模式。你可以选择Java(Spring Boot)、Python(Django/Flask)、Node.js(Express/Koa)或PHP等任何你熟悉的语言和框架来构建RESTful API或GraphQL接口。数据库则通常选择关系型数据库如MySQL或PostgreSQL。

  • 技术栈通用:学习的是业界广泛使用的技术,对未来求职更有帮助。
  • 掌控力强:从服务器选型、域名解析、HTTPS配置到数据库优化,你能接触到完整的应用部署流程。
  • 设计自由:可以采用更精细的数据库表结构,实践SQL优化、索引、事务等核心概念。

考虑到毕业设计是一个系统性的学习与展示过程,我更倾向于推荐自建后端的方案。它能让你经历一个更完整的软件开发生命周期,虽然初期会遇到更多困难,但收获也更大。下文的分析也将主要基于“微信小程序 + 自建后端(以Node.js + Express + MySQL为例)”这一技术栈展开。

2.2 核心功能模块设计

一个完整的校园二手交易平台,至少应包含以下核心模块,它们共同构成了你的毕业设计答辩的演示主线:

  1. 用户模块:微信一键登录、用户信息(昵称、头像、校内身份如学号/学院的可选绑定)、个人中心(我发布的、我买到的、我卖出的)、收藏夹。
  2. 商品模块:这是核心。包含商品发布(标题、描述、多图上传、分类、价格、新旧程度、交易方式(自提/配送))、商品列表展示(分页、排序、筛选)、商品详情页、商品搜索(关键词、分类)。
  3. 交易与订单模块:这是业务的灵魂。用户对商品发起“我想要”或直接“下单”,形成订单。订单状态机是关键,通常包括:待付款->待发货(线上支付)或待见面(线下交易)->待收货/待完成->已完成。还可能包含已取消退款中等状态。这里涉及简单的状态流转逻辑。
  4. 沟通模块:买卖双方需要交流。可以实现简单的站内留言(在订单或商品下留言),或者集成微信小程序自带的客服消息,更高级的可以尝试集成WebSocket实现简易即时通讯(IM),但这会显著增加复杂度。
  5. 后台管理模块(可选但加分):一个简单的Web管理端,用于管理用户、审核商品、处理投诉等。这能展示你对“系统”全貌的理解。可以用Vue+Element UI或React+Ant Design快速搭建。

2.3 数据库设计核心解析

数据库设计是后端的基础,也是毕业设计文档中需要重点阐述的部分。这里给出一个最简化的核心表结构设计思路:

  • 用户表 (user)id(主键),openid(微信唯一标识,用于登录),nickname,avatar_url,create_time

    注意:切勿存储用户的微信敏感信息。openid是微信平台提供的、针对本小程序的用户唯一ID,用它来关联业务数据。

  • 商品表 (product)id,title,description,price(用整数存储分,避免浮点数精度问题),category_id,seller_id(关联user.id),status(上架/下架/已售出),images(可存储JSON字符串或单独建图片表),view_count,create_time
  • 商品分类表 (category)id,name,parent_id(用于实现多级分类,如“电子产品”->“手机”)。
  • 订单表 (order)id,order_sn(自定义唯一订单号,如日期+随机数),product_id,buyer_id,seller_id,total_price,status(订单状态枚举值),address(收货信息,JSON或文本),pay_time,finish_time
  • 消息/留言表 (message)id,from_user_id,to_user_id,product_id(关联到具体商品),content,is_read,create_time

实操心得:在productorder表中,status字段的设计至关重要。建议使用TINYINT类型存储状态码(如0:待审核,1:出售中,2:已售出),并在后端定义常量枚举。这样比直接存中文状态文本更利于查询和维护。所有时间字段建议统一使用timestampdatetime,并注意服务器时区设置。

3. 前端微信小程序开发核心细节

3.1 项目初始化与基础配置

首先在微信开发者工具中创建一个小程序项目。一个清晰的项目目录结构是良好开发习惯的开始。我建议的目录结构如下:

miniprogram/ ├── pages/ // 页面文件 │ ├── index/ // 首页 │ ├── publish/ // 发布商品页 │ ├── detail/ // 商品详情页 │ ├── me/ // 个人中心 │ └── ... ├── components/ // 自定义组件(如商品卡片、搜索框) ├── utils/ // 工具函数(如请求封装、时间格式化) ├── app.js // 小程序入口 ├── app.json // 全局配置(页面路径、窗口样式) ├── app.wxss // 全局样式 └── project.config.json // 项目配置

app.json中,你需要正确配置pages路径、tabBar(底部导航栏,通常包含首页、发布、消息、我的)以及全局窗口样式。app.js中,你需要在onLaunch生命周期里调用wx.login()获取临时登录凭证code,并发送到自己的后端服务器换取openid和自定义登录态(如一个自生成的token)。

3.2 网络请求封装与状态管理

小程序发起网络请求使用的是wx.requestAPI。直接在每个页面调用会非常冗余且难以管理。因此,第一步就是封装一个统一的请求工具。在utils/request.js中:

// utils/request.js const BASE_URL = 'https://your-api-server.com'; // 你的后端API地址 const request = (options) => { // 从本地存储获取登录态token const token = wx.getStorageSync('token'); return new Promise((resolve, reject) => { wx.request({ url: BASE_URL + options.url, method: options.method || 'GET', data: options.data || {}, header: { 'Content-Type': 'application/json', 'Authorization': token ? `Bearer ${token}` : '' // 携带token }, success: (res) => { if (res.statusCode === 200) { // 假设后端统一返回格式为 { code: 0, data: ..., msg: 'success' } if (res.data.code === 0) { resolve(res.data.data); } else if (res.data.code === 401) { // token过期或无效,跳转到登录页 wx.navigateTo({ url: '/pages/login/login' }); reject(new Error('未授权')); } else { // 其他业务错误 wx.showToast({ title: res.data.msg, icon: 'none' }); reject(new Error(res.data.msg)); } } else { reject(new Error(`网络请求失败: ${res.statusCode}`)); } }, fail: (err) => { wx.showToast({ title: '网络连接失败', icon: 'none' }); reject(err); } }); }); }; // 导出GET/POST等方法 module.exports = { get: (url, data) => request({ url, method: 'GET', data }), post: (url, data) => request({ url, method: 'POST', data }), put: (url, data) => request({ url, method: 'PUT', data }), delete: (url, data) => request({ url, method: 'DELETE', data }), };

这样,在页面中你就可以简洁地调用request.get('/api/products')。对于跨页面共享的数据(如用户信息),虽然小程序没有Vuex或Redux,但可以通过以下方式管理:

  1. 全局变量:在app.jsglobalData中定义。
  2. 本地存储:使用wx.setStorageSync存储不常变的数据。
  3. 事件总线:使用wx.$emitwx.$on(需自己简单封装)进行组件间通信。 对于毕业设计规模的项目,合理使用globalData和本地存储基本足够。

3.3 关键页面实现与组件化

首页 (pages/index/index)首页通常是商品信息流。核心是:

  1. 搜索栏:可以是一个固定在顶部的input组件,绑定搜索事件。
  2. 分类筛选:横向滚动导航,点击切换分类,下方商品列表动态刷新。
  3. 商品列表:使用wx:for循环渲染商品卡片组件。必须实现上拉加载更多和下拉刷新。这是用户体验的关键。
    • 上拉加载:监听页面的onReachBottom事件,分页请求数据并追加到列表。
    • 下拉刷新:在app.json的当前页面配置或页面JSON中启用“enablePullDownRefresh”: true,并监听onPullDownRefresh事件,重新加载第一页数据。

商品发布页 (pages/publish/publish)这是一个表单密集的页面。核心组件包括:

  • 图片上传:使用wx.chooseMediaAPI选择图片,用wx.uploadFile上传到你的服务器或云存储。前端需要维护一个已选图片的列表,并支持预览和删除。

    踩坑记录:微信小程序对上传文件有大小限制(通常10M以内),且wx.uploadFilename参数(对应后端接收的字段名)必须和后端约定一致。上传前最好对图片进行本地压缩,可以使用wx.compressImageAPI。

  • 表单验证:在提交前,务必对标题、价格、分类等必填项进行非空和格式校验。价格输入框建议使用<input type=“digit”>来限制只能输入数字和小数点。
  • 富文本编辑器(可选):商品描述如果需要复杂排版,可以引入第三方富文本编辑器组件,但要注意包体积。对于二手交易,简单文本+图片通常足够。

商品详情页 (pages/detail/detail)这是转化核心页面。需要展示商品所有信息、卖家信息,并提供操作入口(“我想要”、“联系卖家”、“收藏”)。

  • 图片轮播:使用<swiper>组件展示商品多图。
  • 卖家信息区域:展示卖家头像、昵称、可点击进入卖家主页。
  • 底部操作栏:使用<view class=“fixed-bottom”>固定定位在底部,包含“联系卖家”和“我想要”按钮。点击“我想要”通常跳转到订单确认页。

4. 后端API服务与数据库交互实现

4.1 后端技术栈搭建(Node.js + Express + MySQL)

我们以Node.js环境为例。首先初始化项目并安装依赖:

mkdir campus-secondhand-api cd campus-secondhand-api npm init -y npm install express mysql2 cors dotenv jsonwebtoken bcryptjs multer npm install -D nodemon
  • express: Web框架。
  • mysql2: MySQL数据库驱动。
  • cors: 处理跨域请求(小程序开发工具和真机调试时必需)。
  • dotenv: 管理环境变量。
  • jsonwebtoken: 生成和验证JWT(JSON Web Token),用于用户认证。
  • bcryptjs: 密码哈希(如果后续扩展账号密码登录)。
  • multer: 处理文件上传。

创建主要的应用文件app.js和入口文件server.js。使用dotenv来管理数据库连接等敏感配置。

4.2 用户登录与鉴权流程详解

这是系统安全的门户。流程如下:

  1. 小程序端:调用wx.login()获取code
  2. 小程序端:将code发送到你的后端登录接口(如POST /api/auth/login)。
  3. 后端:用appid,secret(从小程序管理后台获取)和接收到的code,调用微信接口https://api.weixin.qq.com/sns/jscode2session。微信服务器会返回openid(用户在本小程序的唯一ID)和session_key

    安全警告appidsecret是最高机密,必须放在后端环境变量中,绝对不要写在小程序前端代码里!

  4. 后端:根据openid查询用户表。如果是新用户,自动创建一条记录。
  5. 后端:使用jsonwebtoken,以openid等信息为payload,生成一个token,返回给小程序。
  6. 小程序端:将token存入wx.setStorageSync(‘token’)
  7. 后续请求:小程序在请求头中携带此token(见前面封装的request工具)。后端通过中间件验证token的有效性,并解析出openid,从而识别用户。

后端登录接口核心代码示例:

// routes/auth.js const jwt = require('jsonwebtoken'); const axios = require('axios'); // 需要安装 const db = require('../db'); // 你的数据库连接模块 router.post('/login', async (req, res) => { const { code } = req.body; if (!code) { return res.status(400).json({ code: 400, msg: '缺少code参数' }); } try { // 1. 向微信服务器请求 openid 和 session_key const weixinRes = await axios.get('https://api.weixin.qq.com/sns/jscode2session', { params: { appid: process.env.WX_APPID, secret: process.env.WX_SECRET, js_code: code, grant_type: 'authorization_code' } }); const { openid, session_key } = weixinRes.data; // 2. 查询或创建用户 let user = await db.query('SELECT * FROM user WHERE openid = ?', [openid]); if (user.length === 0) { // 新用户,插入数据库。此时可能还没有昵称头像,等用户授权后更新。 await db.query('INSERT INTO user (openid, create_time) VALUES (?, NOW())', [openid]); user = await db.query('SELECT * FROM user WHERE openid = ?', [openid]); } // 3. 生成JWT Token (payload中不要放敏感信息) const token = jwt.sign( { userId: user[0].id, openid: openid }, process.env.JWT_SECRET, { expiresIn: '7d' } // Token有效期7天 ); // 4. 返回token和用户基本信息 res.json({ code: 0, msg: 'success', data: { token, userInfo: { id: user[0].id, nickname: user[0].nickname, avatarUrl: user[0].avatar_url } } }); } catch (error) { console.error('登录失败:', error); res.status(500).json({ code: 500, msg: '服务器内部错误' }); } });

4.3 商品与订单API设计

商品相关API:

  • GET /api/products:获取商品列表,支持分页(page,size)、分类筛选(categoryId)、排序(sortBy)和关键词搜索(keyword)。
  • GET /api/products/:id:获取单个商品详情,同时可以关联查询卖家信息。
  • POST /api/products:发布新商品。需要token鉴权,从token中解析出的userId作为卖家ID。同时处理多图上传(使用multer中间件)。
  • PUT /api/products/:id:修改商品信息(通常只能修改自己发布的)。
  • DELETE /api/products/:id:下架或删除商品。

订单相关API:

  • POST /api/orders:创建订单。请求体包含productId,address等信息。后端需要:
    1. 验证商品是否存在且状态为“出售中”。
    2. 验证买家不是卖家本人。
    3. 在事务中创建订单记录,并原子性地将商品状态更新为“已售出”或“交易中”。这是防止超卖的关键
    // 伪代码,使用数据库事务 const connection = await db.getConnection(); await connection.beginTransaction(); try { // 1. 锁定商品行 (SELECT ... FOR UPDATE) const [product] = await connection.query('SELECT * FROM product WHERE id = ? AND status = “onsale” FOR UPDATE’, [productId]); if (!product) { throw new Error('商品不存在或已售出'); } // 2. 插入订单记录 await connection.query('INSERT INTO order ...'); // 3. 更新商品状态 await connection.query('UPDATE product SET status = “sold” WHERE id = ?’, [productId]); await connection.commit(); } catch (error) { await connection.rollback(); throw error; } finally { connection.release(); }
  • GET /api/orders:获取我的订单列表(作为买家或卖家),支持按状态筛选。
  • GET /api/orders/:id:获取订单详情。
  • PUT /api/orders/:id/status:更新订单状态(如买家确认收货,状态从“待收货”改为“已完成”)。需要严格的权限校验。

5. 数据库部署、性能优化与安全考量

5.1 数据库部署与基础优化

对于毕业设计,你可以在本地安装MySQL,也可以使用云服务商提供的免费数据库实例(如阿里云RDS MySQL基础版、腾讯云云数据库MySQL)。云数据库的好处是无需自己维护,且有公网地址方便小程序连接。

基础优化建议:

  1. 为查询字段建立索引:这是提升性能最有效的手段。通常需要为以下字段建立索引:
    • product表:category_id,seller_id,status,create_time(用于排序和筛选)。
    • order表:buyer_id,seller_id,status,create_time
    • user表:openid(唯一索引)。

    注意:索引不是越多越好。它会增加写操作(INSERT/UPDATE/DELETE)的开销。只为高频查询条件建立索引。

  2. 选择合适的数据类型:如价格用INT存储分,状态用TINYINT,较长的文本用TEXT
  3. 规范SQL语句:避免使用SELECT *,只查询需要的字段。复杂的联表查询要评估性能。

5.2 安全防护要点

毕业设计答辩中,如果能提及安全考量,会显得你思考全面。

  1. SQL注入:使用参数化查询(Prepared Statements)或查询构造器(如Knex.js, Sequelize),绝对不要用字符串拼接SQL。我们之前用的mysql2query方法,使用?占位符就是参数化查询,能有效防止注入。
  2. XSS(跨站脚本攻击):对用户提交的内容(如商品描述、留言)进行过滤或转义。可以使用xss这样的npm库。
  3. 敏感信息泄露:确保.env文件不被提交到Git。在返回用户信息时,过滤掉openidsession_key等敏感字段。
  4. 接口防刷:对登录、发送验证码等接口,可以增加简单的频率限制(rate limiting),例如使用express-rate-limit中间件。
  5. 文件上传安全:限制上传文件的类型(MIME Type)和大小。对图片进行重命名(如使用UUID),避免直接使用用户上传的文件名,防止路径遍历和脚本文件上传。

6. 项目部署与演示准备

6.1 后端服务部署

你可以选择传统的云服务器(如腾讯云轻量应用服务器、阿里云ECS),也可以选择更简单的Serverless容器服务(如腾讯云云托管、阿里云FC)。

  • 云服务器:需要自己配置Node.js环境、安装PM2进程管理、配置Nginx反向代理和HTTPS证书。过程较复杂,但学习价值高。
  • Serverless容器:以腾讯云云托管为例,你只需要将代码(包含Dockerfile)推送到关联的Git仓库,它会自动构建镜像并部署,自动分配HTTPS域名。非常适合快速部署演示。

关键步骤

  1. 购买域名并备案(国内服务器必需)。
  2. 服务器安装Node.js、MySQL、Nginx。
  3. 将后端代码上传至服务器。
  4. 配置Nginx,将80/443端口请求代理到你的Node.js应用端口(如3000)。
  5. 申请SSL证书(如Let‘s Encrypt免费证书)并配置到Nginx,启用HTTPS。小程序要求后端API必须为HTTPS
  6. 使用PM2启动应用并设置开机自启:pm2 start server.js --name campus-api

6.2 小程序上线与配置

  1. 小程序配置:在微信公众平台的小程序管理后台,将你的后端API域名(如https://api.yourdomain.com)添加到“开发管理”->“开发设置”->“服务器域名”的request合法域名列表中。
  2. 代码上传:在微信开发者工具中点击“上传”,填写版本号。
  3. 提交审核:在公众平台提交当前版本进行审核。审核通过后,方可发布线上版供所有人访问。
  4. 体验版:在审核期间,你可以设置“体验版”,将体验二维码提供给导师进行答辩演示,无需等待审核通过。

6.3 毕业设计文档与演示要点

一份优秀的毕业设计,除了可运行的系统,清晰的文档同样重要。

  • 需求分析:清晰描述校园二手交易的需求痛点。
  • 系统设计:包括架构图(前端、后端、数据库)、功能模块图、数据库ER图。
  • 核心代码展示:挑选1-2个有代表性的代码片段进行说明,如JWT鉴权中间件、创建订单的事务处理。
  • 测试:描述测试用例,如用户登录、商品发布、下单流程。可以附上测试截图。
  • 总结与展望:分析项目的优缺点,提出可能的改进方向,如引入推荐算法、集成即时通讯、增加信用评价体系等。

在答辩演示时,重点展示核心业务流程的闭环:用户登录 -> 浏览商品 -> 发布商品 -> 发起交易 -> 完成订单。确保流程顺畅,界面美观,这比罗列所有技术细节更能打动评委。

最后,这个项目从零到有的过程,会让你对现代Web应用开发有更立体和深刻的认识。它不只是几行代码,更是需求分析、架构设计、前后端协作、数据库优化和工程化部署的综合实践。遇到问题多查官方文档、多调试,每一次解决问题的过程都是宝贵的经验积累。祝你毕业设计顺利成功!

本文还有配套的精品资源,点击获取

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/4 10:45:59

传送带堵了半分钟之后,我摸清了 Mindustry 的套路

传送带堵了半分钟之后&#xff0c;我摸清了 Mindustry 的套路 【免费下载链接】Mindustry The automation tower defense RTS 项目地址: https://gitcode.com/GitHub_Trending/min/Mindustry 传送带在拐角堆了二十个铜块&#xff0c;你盯着它看了半分钟才反应过来——你…

作者头像 李华
网站建设 2026/9/4 10:45:37

论文降重与修改:如何找到最适合你的那条路?

1. 引言&#xff1a;论文修改&#xff0c;不只是“换个说法” 写毕业论文&#xff0c;几乎没有人能一遍定稿。从初稿到终稿&#xff0c;中间往往要经历无数轮修改&#xff1a;语句不通顺要改、逻辑不连贯要改、引用格式要改、查重不过更要改。面对五花八门的修改方式&#xff…

作者头像 李华
网站建设 2026/9/4 10:45:31

为什么ESP32的LED要低电平点亮?灌电流与拉电流的工程真相

直接聊一个我做硬件这几年被问得最多的问题&#xff1a;为什么ESP32的板子上&#xff0c;LED基本都是低电平点亮&#xff1f;很多刚入行的朋友第一次看到原理图都懵——单片机引脚输出高电平不是“1”吗&#xff0c;怎么LED反而是用低电平去点亮的&#xff1f;这和我们平时理解…

作者头像 李华
网站建设 2026/9/4 10:41:24

RK3588边缘AI视觉:同源多任务调度与NPU资源优化实战

1. 从“一路视频&#xff0c;多个模型”说起搞嵌入式AI的朋友应该都有这种感觉&#xff1a;RK3588这颗芯片&#xff0c;在边缘端真算得上“六边形战士”。8核CPU、Mali-G610 GPU、6TOPS算力的NPU&#xff0c;还有完善的ISP和硬件编解码单元&#xff0c;一颗SoC几乎能把视觉相关…

作者头像 李华
网站建设 2026/9/4 10:41:21

奔驰开源ARDEP车载开发板,融合Arduino与工业级MCU

大家逛 GitHub 的时候&#xff0c;刷到的大多是什么待办事项 App、博客框架、算法题解这类东西。但今天要聊的这个项目&#xff0c;如果只看名字&#xff0c;确实容易被忽略过去——奔驰在 GitHub 上开源了一块车载开发板卡&#xff0c;项目名叫 ARDEP。这块板子不是概念图&…

作者头像 李华
网站建设 2026/9/4 10:40:43

Facebook好友自动化删除工具:原理、风险与安全实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华