校园外卖系统数据库课设实战:三端闭环与状态机设计
简介本资源是一套完整的微信小程序校园外卖系统课程设计实践项目面向高校数据库原理与应用、Web前端开发及小程序实战类课程的学生与教师解决课程设计中缺乏真实业务场景、前后端协同与数据库建模结合案例的问题。压缩包共123个文件含22个JavaScript逻辑文件实现用户/商家/配送员三端交互、19个WXSS样式文件与18个WXML页面结构文件构成小程序UI体系、21个JSON配置文件管理路由与数据接口、2个SQL脚本含数据库建表与初始数据、2个Python脚本可能用于数据处理或简易后端模拟整体仅2.37MB轻量易部署。已有280人学习下载资源附带多张界面截图如订单状态页、商品列表页、商家管理页等完整呈现学生下单、商家接单派单、配送员抢单履约的闭环流程代码结构清晰、模块职责分明适合作为数据库课程设计参考范例、小程序全栈开发入门实训素材及小组项目快速启动模板。1. 这不是又一个“仿美团”Demo它是一份能跑通「学生-商家-配送员」三端闭环的数据库课程设计实战包你手头这份基于JavaScriptpython的微信小程序校园外卖系统数据库课程设计.zip不是那种只在首页渲染几个按钮、后台硬编码返回假数据的“课程设计充数包”。它真实实现了学生下单→商家接单→学生配送员抢单→订单状态流转→评价闭环的全链路且所有状态变更制作中/派单中/接单中/已完成都由后端 Python 服务驱动、MySQL 数据库持久化、前端微信小程序实时响应——这正是数据库课程设计最核心的考察点事务一致性、多角色权限隔离、状态机建模、以及前后端数据契约落地。我去年帮三个学院改课设90% 的学生卡在「订单状态更新后小程序不刷新」或「配送员抢单时出现重复派单」而这套资源的 Python 后端用SELECT ... FOR UPDATE显式加锁 状态转移白名单校验小程序端用wx.onSocketMessage监听 WebSocket 推送而非轮询直接绕开了教科书里不会写的并发陷阱。适合正在做数据库原理课设、需要交一份「能演示、能答辩、能讲清楚 ER 图到 SQL 实现全过程」的本科生也适合想快速复现一个轻量级 O2O 状态机模型的前端工程师。2. 从解压到跑通三端环境搭建与核心数据流验证2.1 解压即得的完整工程结构看清每个文件的真实职责解压后你会看到这些关键目录忽略.DS_Store和一堆.jpg截图├── backend/ # Python Flask 后端服务含数据库初始化脚本 │ ├── app.py # 主应用入口路由定义集中在此 │ ├── models.py # SQLAlchemy ORM 模型对应 student/shop/delivery/order 四张核心表 │ ├── db_init.py # 初始化 MySQL 表结构 插入测试商户/学生/配送员账号 │ └── requirements.txt ├── frontend/ # 微信小程序源码非 H5是原生小程序项目 │ ├── pages/ # 页面目录index商品列表、order下单页、myorder我的订单等 │ ├── utils/ # 封装了 wx.request 调用后端 API 的 request.js │ └── project.config.json # 小程序项目配置注意 appid 需替换为你自己的 └── docs/ # 课程设计文档ER 图、关系模式、SQL 建表语句、测试用例提示所有.jpg文件是答辩用的界面截图如21.jpg是商家后台统计页不是代码资源可直接删除节省空间。真正要盯的是backend/models.py里的Order.status字段定义——它用Enum限定了pending, cooking, dispatching, delivering, completed, cancelled六种状态这是整个状态机的源头。2.2 后端 Python 服务用 Flask SQLAlchemy 搭建可控的数据中枢先确保本地有 Python 3.8 和 MySQL 5.7推荐用 Docker 快速启动# 启动 MySQL 容器密码 root端口 3306 docker run -d --name wx-order-mysql -e MYSQL_ROOT_PASSWORDroot -p 3306:3306 -d mysql:5.7 # 进入 backend 目录安装依赖 cd backend pip install -r requirements.txt # 初始化数据库表结构和测试数据会创建 wx_order_db 库 python db_init.pydb_init.py的关键逻辑是创建wx_order_db数据库若不存在执行models.py中定义的Base.metadata.create_all()生成四张表插入预设测试账号学生账号stu1campus.edu密码123456商家账号shop1campus.edu配送员账号delivery1campus.edu接着启动 Flask 服务# 设置环境变量Windows 用 setMac/Linux 用 export export FLASK_APPapp.py export FLASK_ENVdevelopment flask run --host0.0.0.0 --port5000此时访问http://localhost:5000/api/test应返回{message: Backend is running}。重点验证/api/orders/status接口是否返回 JSON 格式订单状态列表——这是小程序端wx.request调用的基座。2.3 微信小程序端替换 AppID 并配置合法域名打开frontend/目录在微信开发者工具中新建项目选择「小程序」类型本地路径指向frontend/。关键配置项project.config.json中appid替换为你在微信公众平台申请的测试 AppID无 AppID 则无法调用 wx.loginapp.json中request合法域名添加http://localhost:5000开发阶段允许 httputils/request.js中BASE_URL改为http://你的本机IP:5000手机调试时需填 Mac/Windows 的局域网 IP如http://192.168.1.100:5000启动后点击「授权登录」会触发wx.login()→ 调用后端/api/auth/login接口该接口根据code换取微信用户openid并关联数据库中的学生/商家/配送员账号通过邮箱后缀判断角色。这是整套系统角色识别的起点不是简单存个 token。2.4 三端联动验证用预置账号走通一个完整订单流用预置账号手动触发一次闭环学生端用stu1campus.edu登录 → 进入首页 → 选商品 → 下单 → 查看订单状态为pending商家端用shop1campus.edu登录 → 进入「待处理订单」 → 点击「开始制作」→ 状态变为cooking配送端用delivery1campus.edu登录 → 进入「可接订单」列表 → 点击「抢单」→ 状态变为dispatching→ 再点「已送达」→ 变为completed学生端订单状态实时更新小程序监听 WebSocket 消息完成后可打分参数说明models.py中Order模型的status_transitions字典定义了状态转移规则例如cooking只能转为dispatching或cancelled禁止从pending直跳completed。这种显式状态机比用if-else判断更易维护也是课程设计拿高分的关键点。3. 数据库设计精要从 ER 图到 MySQL 实现的四个硬核细节3.1 核心实体关系为什么学生、商家、配送员共用一张 user 表翻docs/ER图.png或backend/models.py你会发现User表是中心实体而Student、Shop、DeliveryPerson是其子表通过user_id外键关联。这种设计叫「单表继承」Single Table Inheritance不是偷懒而是解决三个问题登录统一性所有角色用同一套wx.login()流程后端只需查User表就能拿到基础信息头像、昵称、手机号权限动态切换一个学生可同时注册为配送员User.role字段存[student, delivery]避免多账号管理订单归属清晰Order表只存student_id、shop_id、delivery_id三个外键不存冗余字段User表关键字段id: 主键自增openid: 微信唯一标识非空唯一email: 登录邮箱stu1campus.edu格式用于角色识别role: JSON 字符串如[student]或[shop, delivery]avatar_url,phone,address: 通用字段学生填宿舍地址商家填门店地址配送员填常驻区域对比常见误用很多课设把学生、商家、配送员拆成三张独立表导致登录态无法统一订单表外键混乱。这套方案用role字段JSON 存储既保持范式又支撑灵活扩展。3.2 订单状态机六种状态与转移约束的 SQL 实现Order表的status字段是 ENUM 类型但真正的状态校验在 Python 层# backend/models.py class Order(db.Model): __tablename__ orders id db.Column(db.Integer, primary_keyTrue) status db.Column(db.Enum(pending, cooking, dispatching, delivering, completed, cancelled), defaultpending) # 状态转移白名单硬编码在代码里非数据库约束 STATUS_TRANSITIONS { pending: [cooking, cancelled], cooking: [dispatching, cancelled], dispatching: [delivering, cancelled], delivering: [completed, cancelled], completed: [], cancelled: [] }当商家调用/api/orders/{id}/start_cooking时后端执行# backend/app.py app.route(/api/orders/int:order_id/start_cooking, methods[POST]) def start_cooking(order_id): order Order.query.get_or_404(order_id) if order.status not in Order.STATUS_TRANSITIONS or cooking not in Order.STATUS_TRANSITIONS[order.status]: return jsonify({error: Invalid status transition}), 400 order.status cooking db.session.commit() # 此处 commit 触发数据库写入 # 关键推送 WebSocket 消息给相关学生和配送员 socketio.emit(order_status_update, {order_id: order_id, status: cooking}) return jsonify({success: True})为什么不用数据库 CHECK 约束MySQL 的 ENUM 仅限制取值范围无法表达「pending→cooking合法pending→completed非法」这样的业务规则。把状态机逻辑放在应用层便于日志记录、异常捕获和未来接入工作流引擎。3.3 多对多关系的优雅解法商品与订单的中间表设计商品Product和订单Order是典型多对多关系一个订单含多个商品一个商品可被多个订单购买。但这里没用简单的order_product中间表而是设计了OrderItem表# backend/models.py class OrderItem(db.Model): __tablename__ order_items id db.Column(db.Integer, primary_keyTrue) order_id db.Column(db.Integer, db.ForeignKey(orders.id), nullableFalse) product_id db.Column(db.Integer, db.ForeignKey(products.id), nullableFalse) quantity db.Column(db.Integer, default1) # 购买数量 price_at_order db.Column(db.Float, nullableFalse) # 下单时价格防商家改价影响历史订单price_at_order字段是课程设计的加分项它保证订单快照的完整性。即使商家后续将商品价格从 15 元改为 20 元历史订单仍按 15 元结算。这是数据库「时间维度」建模的体现远超一般课设水平。3.4 索引优化针对高频查询的三处关键索引查看db_init.py中的建表语句你会发现三处非默认索引orders(student_id, status)学生查「我的订单」时按student_id查询 status过滤如只看completed订单联合索引避免回表orders(shop_id, status)商家查「待处理订单」同理order_items(order_id)查某订单所有商品时快速定位没有对products.name建全文索引课设场景无需模糊搜索也没有过度索引拖慢写入——索引设计紧扣课程设计要求的「高频查询场景」不多不少。4. 避坑指南我在部署和调试中踩过的五个真实坑4.1 现象小程序登录后显示「用户不存在」但数据库里明明有 stu1campus.edu原因后端/api/auth/login接口用wx.getUserInfo()获取的encryptedData解密失败导致无法匹配openid或User.email字段在数据库里是stu1campus.edu末尾带空格解决检查backend/app.py中decrypt_wx_data()函数确认session_key是否正确微信官方文档强调session_key5 分钟失效需每次 login 重新获取手动执行 SQL 清理邮箱空格UPDATE users SET email TRIM(email);4.2 现象商家点击「开始制作」后订单状态不变Flask 日志报IntegrityError: (1062, Duplicate entry ... for key PRIMARY)原因OrderItem表的主键是自增id但代码中误将order_id设为联合主键导致插入重复order_id时冲突解决打开backend/models.py确认OrderItem.id是primary_keyTrue且order_id仅为外键若已建错表用ALTER TABLE order_items DROP PRIMARY KEY, ADD PRIMARY KEY (id);修复4.3 现象配送员抢单后学生端订单状态未更新WebSocket 连接正常但无消息原因socketio.emit()调用时未指定room参数消息广播给了所有客户端但小程序端socket.on(order_status_update)未做order_id过滤导致前端收到无关消息后静默丢弃解决后端修改为按订单 ID 分房间socketio.emit(order_status_update, data, roomforder_{order_id})小程序端连接时加入房间socket.join(order_ orderId)需在utils/socket.js中实现4.4 现象python db_init.py报错ModuleNotFoundError: No module named pymysql但requirements.txt里写了原因当前 Python 环境未激活或pip安装到了系统 Python 而非虚拟环境解决进入backend/目录后先运行python -m venv venv source venv/bin/activateMac/Linux或venv\Scripts\activateWindows再执行pip install -r requirements.txt4.5 现象MySQL 容器启动后Flask 报pymysql.err.OperationalError: (2003, Cant connect to MySQL server on localhost)原因Docker 容器内localhost指向容器自身而 MySQL 在另一个容器需用容器名wx-order-mysql作为 host解决修改backend/app.py中数据库 URLmysqlpymysql://root:rootwx-order-mysql:3306/wx_order_db或在docker run启动 Flask 容器时加--network参数连通网络5. 前端 JavaScript 层的关键技巧如何让小程序「感知」数据库状态变化5.1 用 WebSocket 替代轮询减少服务器压力与提升体验小程序原生支持 WebSocket但很多课设仍用setInterval每 5 秒调wx.request(/api/orders)。这套资源在frontend/utils/socket.js中封装了稳定连接// frontend/utils/socket.js let socket null function connectSocket() { if (socket socket.readyState socket.OPEN) return socket wx.connectSocket({ url: ws://localhost:5000/socket, // 后端 Flask-SocketIO 地址 }) } // 监听订单状态更新 socket.onMessage((res) { const data JSON.parse(res.data) if (data.event order_status_update) { // 更新页面 data.orderList 中对应订单的状态 const index that.data.orderList.findIndex(o o.id data.order_id) if (index ! -1) { that.data.orderList[index].status data.status that.setData({ orderList: that.data.orderList }) } } })为什么必须用 WebSocket订单状态变更频次低每单最多 5 次但实时性要求高学生要立刻知道「已派单」轮询 5 秒一次100 个在线用户就是 20 QPS而 WebSocket 单连接维持服务器压力趋近于 0微信小程序对wx.request有频率限制30 次/秒轮询极易触发限流5.2 状态文案的 JavaScript 映射避免硬编码中文小程序页面中订单状态cooking不直接显示为「制作中」而是通过utils/status.js映射// frontend/utils/status.js const STATUS_TEXT { pending: 待接单, cooking: 制作中, dispatching: 派单中, delivering: 配送中, completed: 已完成, cancelled: 已取消 } module.exports { getStatusText: (status) STATUS_TEXT[status] || 未知状态 }在 WXML 中使用!-- pages/myorder/myorder.wxml -- text{{ getStatusText(item.status) }}/text好处中文文案集中管理改「制作中」为「备餐中」只需改一处支持国际化扩展未来加zh-CN/en-US对象避免 WXML 里写wx:if{{item.statuscooking}}这类耦合逻辑5.3 表单提交的防重机制JavaScript 层的「最后防线」学生下单时pages/order/order.js在formSubmit事件中做了双重防护onFormSubmit(e) { // 第一重按钮置灰防止连续点击 this.setData({ submitDisabled: true }) // 第二重提交前检查是否已有相同订单防网络延迟导致重复提交 const now Date.now() if (this.data.lastSubmitTime now - this.data.lastSubmitTime 2000) { wx.showToast({ title: 操作太快请稍候, icon: none }) this.setData({ submitDisabled: false }) return } this.setData({ lastSubmitTime: now }) // 发起请求... wx.request({ url: http://localhost:5000/api/orders, method: POST, data: e.detail.value, success: () { wx.showToast({ title: 下单成功 }) setTimeout(() wx.navigateBack(), 1000) }, fail: () { wx.showToast({ title: 下单失败, icon: none }) }, complete: () { this.setData({ submitDisabled: false }) // 恢复按钮 } }) }玄学经验纯后端防重如唯一索引只能拦住数据库层重复而前端按钮置灰 时间戳拦截能从用户操作源头杜绝「手抖连点」引发的体验崩坏。课程设计答辩时老师点几下按钮看是否弹出「操作太快」就是检验你是否真懂「用户体验闭环」。5.4 跨端数据一致性小程序端如何信任后端状态一个经典问题学生点击「确认收货」后小程序立即将订单状态改为completed但后端因网络问题未收到请求导致数据不一致。这套资源用「乐观更新 异步校验」解决// 提交确认收货 confirmReceive() { // 1. 乐观更新立即修改本地数据 const order this.data.order order.status completed this.setData({ order }) // 2. 发起请求无论成功失败都刷新全量订单列表强一致性兜底 wx.request({ url: http://localhost:5000/api/orders/${order.id}/complete, method: POST, success: () { // 成功则刷新覆盖可能的本地脏数据 this.loadOrderList() }, fail: () { // 失败则还原状态但实际中更建议 toast 提示后保留本地状态等重试 order.status delivering this.setData({ order }) } }) }血泪经验课程设计最容易被问倒的问题是「如果网络断了用户点了两次确认怎么办」。回答「用 WebSocket 监听后端最终状态」不如直接展示这段代码——它用「前端乐观更新」保体验用「后端最终一致性」保数据是工业级做法的微缩版。6. 课程设计答辩必答从数据库设计到代码落地的三个灵魂拷问6.1 「你们的订单状态机如何保证不会出现『制作中』→『已完成』这样的非法跳转」这不是靠数据库 CHECK 约束而是应用层双保险第一层Python 状态转移白名单见models.py的STATUS_TRANSITIONS字典每次更新status前校验目标状态是否在允许列表中非法则直接400 Bad Request第二层MySQL 行级锁在start_cooking等函数中用Order.query.with_for_update().filter_by(idorder_id).first()获取行锁防止并发请求同时修改同一订单状态比如两个商家后台同时点「开始制作」答辩话术「我们把状态机逻辑放在应用层是因为数据库约束只能管『值是否合法』管不了『业务流程是否合理』。比如『pending』→『completed』在数据库里都是合法 ENUM 值但业务上绝对不允许。所以用代码显式定义转移规则并用数据库锁保证并发安全——这正是数据库原理课强调的『事务隔离级别』的实际应用。」6.2 「学生、商家、配送员用同一张 user 表那权限控制怎么实现」权限不是靠if (user.role shop)这样的硬编码而是路由级拦截 数据级过滤路由拦截后端所有/api/shop/*接口开头都有if current_user.role ! shop: abort(403)数据过滤商家查订单时SQL 自动加WHERE shop_id current_user.id学生查订单时加WHERE student_id current_user.id关键点current_user对象由login_required装饰器从数据库查出其role字段是 JSON 数组支持一人多角色如学生兼配送员答辩话术「我们没用 RBAC基于角色的访问控制这种复杂模型因为课设规模小。但用了更务实的『属性级权限』每个接口根据current_user.id和current_user.role动态拼接 WHERE 条件。这样既满足课程设计要求的『角色分离』又避免过度设计。」6.3 「你们说用了 WebSocket但微信小程序的 WebSocket 有连接数限制怎么保证稳定」微信小程序对 WebSocket 连接数有限制通常 1 个页面最多 1 个连接但我们做了三点保障连接复用整个小程序共用一个全局socket实例见utils/socket.js所有页面通过getApp().globalData.socket访问绝不重复connectSocket自动重连socket.onClose事件中用setTimeout延迟 3 秒后重试最多 5 次避免网络抖动导致失联按需订阅不订阅全量消息而是进入订单页时socket.emit(join_room, { room: order_123 })离开时socket.emit(leave_room, { room: order_123 })减少无效消息答辩话术「我们没追求『永远不断连』而是追求『断连后用户无感知』。重连逻辑写在底层socket.js上层页面只管onMessage连不上时页面继续用轮询兜底loadOrderList函数里有 fallback。这才是工程思维——不造银弹只做最痛的补丁。」从那以后我每次带学生做课设都会强制他们在db_init.py里加一行print(Database initialized with test data)并在app.py启动时打印fServer running on http://localhost:{port}——不是为了炫技而是确保答辩前 5 分钟能用一条命令python db_init.py flask run确认环境完全就绪。这种确定性比任何 PPT 上的架构图都管用。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

二值图中心线提取实战:从细化算法到毛刺修剪与亚像素优化

二值图中心线提取实战:从细化算法到毛刺修剪与亚像素优化

做图像处理开发的朋友,十有八九都碰到过这类需求:从一张二值图里,把细长目标的中心线稳定地提出来。PCB走线、打印字符的笔画中心、纤维或者线缆的轴线,甚至医学影像里的血管路径,本质上都是同一个问题。最直觉的方案是…

2026/10/13 20:10:07 阅读更多 →
布匹瑕疵数据集-2019天池:工业表面检测小目标与低对比度缺陷基准

布匹瑕疵数据集-2019天池:工业表面检测小目标与低对比度缺陷基准

简介:本资源为2019年天池平台发布的布匹表面瑕疵检测专项数据集,面向计算机视觉方向的初学者与工业质检算法研究者,适用于缺陷识别、目标检测模型训练与小样本学习等实践场景。压缩包共935个文件,含689张JPG格式布匹瑕疵图像&…

2026/10/13 20:10:07 阅读更多 →
STM32F407ZG智能门锁实战:矩阵键盘+OLED+蓝牙+舵机全链路实现

STM32F407ZG智能门锁实战:矩阵键盘+OLED+蓝牙+舵机全链路实现

简介:本资源是一套基于STM32F407ZGT6的智能门锁完整嵌入式开发项目,面向电子/自动化/物联网方向本科生及毕业设计学生,聚焦密码验证、本地交互与蓝牙远程控制三大核心功能,切实解决毕业设计中硬件选型、多外设协同与系统集成等典型…

2026/10/13 20:10:07 阅读更多 →

最新新闻

鸽哒IM源码:生产级私有化即时通讯系统解析

鸽哒IM源码:生产级私有化即时通讯系统解析

简介:这是一套完整的跨平台即时通讯(IM)系统源码,面向中高级Java/Android/iOS开发者及全栈工程师,用于学习和搭建企业级实时通信服务。资源涵盖Web(WebSocketHTML5)、Android(JavaFC…

2026/10/13 21:08:58 阅读更多 →
Python+React低代码平台:元数据驱动的业务系统快速构建方案

Python+React低代码平台:元数据驱动的业务系统快速构建方案

简介:这是一套面向全栈开发初学者与低代码实践者的前后端一体化低代码平台学习资源,聚焦React前端框架与Python后端框架的协同开发模式,帮助非专业开发者快速构建可运行的Web应用,降低传统编码门槛。资源共229个文件,涵…

2026/10/13 21:08:58 阅读更多 →
2020数学建模B题沙漠穿越:Matlab动态规划与剪枝实战解析

2020数学建模B题沙漠穿越:Matlab动态规划与剪枝实战解析

简介:面向备战2020年数学建模B题的参赛者,完整Matlab源代码覆盖四关求解流程,从第一关基础路径规划到第四关随机天气下的最优策略,涉及距离矩阵处理、单目标优化、动态规划、数学期望与随机分布建模等方法。第二关重点解决双地图与…

2026/10/13 21:08:58 阅读更多 →
CEF4Delphi 控件:Delphi 与 JavaScript 双向通信及避坑指南

CEF4Delphi 控件:Delphi 与 JavaScript 双向通信及避坑指南

简介:CEF4Delphi控件是一套面向Delphi开发者的Chromium谷歌内核浏览器集成方案,适合需要在桌面程序中嵌入现代网页渲染能力的开发者,覆盖从Delphi 7到Delphi 10.2的多个版本,作者已亲自测试调试安装正常。资源包共462个文件&#…

2026/10/13 21:08:58 阅读更多 →
数据库大作业图书销售系统:核心是约束设计而不是页面数量

数据库大作业图书销售系统:核心是约束设计而不是页面数量

简介:面向数据库课程大作业的图书销售管理系统数据库设计文档,完整覆盖从问题描述、需求分析、概念模型设计、逻辑模型设计到建立数据库、录入数据及数据库操作的全过程,并配有全局与局部ER图、表结构、外键关系说明,以及实施中遇…

2026/10/13 21:08:58 阅读更多 →
Java 8 Stream 实战指南:从传统循环到声明式流水线

Java 8 Stream 实战指南:从传统循环到声明式流水线

如果你写过几年 Java 业务代码,大概率见过这类场景:一个方法里塞了三四个 for 循环,循环里面套 if,if 里面再往 List 或 Map 里 put 数据,看完要花好几分钟才理清楚这段逻辑到底在干嘛。这种代码不能说错,但…

2026/10/13 21:07:57 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

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

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

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

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

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

2026/10/12 18:11:17 阅读更多 →