SpringBoot+Vue医院挂号系统毕设全解析:从业务架构到排坑经验

SpringBoot+Vue这套组合做医院挂号系统,在Java Web毕设里可以说是出镜率最高的方案之一。不管是课程设计还是毕业设计,这套选题的价值在于——它不是单纯堆CRUD,而是把真实业务里的排班、号源、预约状态流转这些逻辑都带出来了,做完一遍基本能摸清楚一个中型管理系统的完整套路。

这篇内容我会从业务分析、架构拆解、数据库设计、环境搭建到排坑经验,按我实际做项目的顺序完整讲一遍。适合正在做毕设的同学、想练手全栈的初学者,以及手里拿到一套源码但不知道怎么跑起来的人。

1. 项目整体设计与业务剖析

1.1 医院挂号系统的真实业务场景

很多人拿到这类项目第一反应是“又是一个增删改查”,但实际上医院挂号系统的业务比表面复杂得多。核心场景是:患者通过线上平台查看医院科室和医生排班,选择合适的时间段预约挂号,到院后凭号就诊;医生可以看到自己的排班计划和被预约的患者列表;管理员负责维护医院基础数据——科室、医生信息、排班规则、号源数量、公告等。

这里有一个很多同学容易忽略的细节:挂号系统真正要管理的不只是“挂号”这个动作,而是号源的生命周期。一个医生一天门诊时间有限,放出去多少个号、每个时段还剩几个号、被预约后退号释放的号能不能重新被挂、有没有超挂的风险,这些才是系统的核心逻辑。很多实现简单的毕设项目把挂号做成纯粹的“插入一条记录”,结果就是号源超卖、状态混乱,在答辩时被老师一问就露馅。

1.2 三种角色的功能边界划分

这类系统常规分为三种角色:患者端(前台)、医生端和后台管理端。功能边界一定要清晰,这也是我拿到源码后第一个会去梳理的地方。

患者端通常包含:注册登录、浏览科室与医生信息、查看医生排班、在线预约挂号、取消挂号、个人挂号记录查询。比较完整的项目还会加就诊人管理(帮家人挂号)、就诊提醒、缴费记录等扩展功能。

医生端包含:查看个人排班表、查看某时间段内的预约患者列表、完成就诊标记(号源核销)。

管理端包含:科室管理(增删改查)、医生管理(医生信息维护、职称、所属科室)、排班管理(为医生设置出诊时间段和号源数)、公告发布、以及最基础的账号权限管理。

这三个角色的数据流向是闭环的:管理员维护排班 → 患者查看排班并挂号 → 医生核销号源 → 号源状态回流到排班表。如果你拿到手的项目源码里数据流断了一环,比如挂完号但排班余号没减,那我建议优先改这个位置。

1.3 为什么这套组合是毕设的“安全牌”

SpringBoot + Vue 能成为毕设主流方案,本质原因是它踩中了评分和实际应用两头。

从技术评分角度看,后端用SpringBoot代表的是标准的企业级开发模式:分层架构(Controller-Service-Mapper)、依赖注入、声明式事务、统一异常处理,这些是答辩时能拿出来讲的东西。前端用Vue则命中当前主流的单页应用开发模式,组件化、路由管理、状态管理都有得聊。整一套下来,技术栈完整度足够,不会出现“只会写接口”或“只会写页面”的偏科问题。

从实际落地角度看,这套组合生态成熟、学习资料多、遇到问题能搜到对应解决方案。加上前后端分离的开发模式本身就是现在团队协作的主流形态,做完这个项目,后面找工作写简历也有东西可写。

2. 技术架构与核心流程拆解

2.1 前后端分离架构下的一次完整挂号请求

我用最直白的流程来拆解一次预约挂号从前端到后端的完整链路,这对理解整个项目运行逻辑很重要。

第一步,患者在Vue前端选择科室,前端通过Axios发送GET请求,访问后端接口如/api/department/list。后端Controller收到请求后调用Service层,Service通过Mapper(配合MyBatis或MyBatis-Plus)查询数据库,返回科室列表数据。前端拿到数组后通过v-for渲染科室卡片或表格。

第二步,患者选择医生后查看排班。这个环节请求的是/api/schedule/list?doctorId=xxx。排班数据表里存的是医生在某天的某个时间段出诊,还包含总号源数和已预约数。前端用表格或日历组件按日期展示。

第三步,患者发起挂号请求。前端提交POST /api/order/create,请求体里包含排班ID(scheduleId)、患者ID(如果是就诊人制度还要包含就诊人ID)。这段逻辑是整个系统里最需要仔细看的地方,核心事务要完成三件事:写入挂号订单记录、排班表的已预约数加一(注意必须做校验,已预约数不能大于总数)、更新订单状态为“已挂号”。

第四步,前端轮询或直接获取挂号结果,跳转到挂号成功页面展示挂号序号。

这套链路虽然每一步都不复杂,但合起来就是一个完整的前后端交互闭环。我见过不少项目中前端调接口时路径写错,或者后端接收参数时字段名对不上,调试一整天。建议刚开始直接打开浏览器F12看Network面板,关注请求URL、请求方式、请求参数和响应状态码,问题出在哪一层一目了然。

2.2 排班与号源管理:挂号系统的心跳

我把排班和号源单独拎出来讲,因为它是整份源码里最值得研究的模块,也是答辩时候的加分项。

排班表的一条记录可以理解为:某医生在某个日期、某个时间段(比如2025-05-10上午8:00-11:30)出诊,总放号数30个。系统里的排班管理功能就是生成和维护这些记录。有的项目会做批量排班——按星期规则一次生成一个月的排班,有的项目则是每次手动添加,看项目规模而定。

号源数量在排班表上有两个字段:total(总数)和used(已用)。预约挂号时先判断used < total,条件成立才允许写入订单,同时used + 1。取消挂号时反向操作:校验订单状态为“已挂号”,将其改为“已取消”,并将对应排班的used - 1。

这里有个非常经典的坑:高并发下的超挂问题。如果只是先查询used < total再执行 update,当多个患者同时预约同一个时段时,可能会出现两个请求都查到used=29、都没有超限、都执行了used+1,结果最终used=31,但只有30个号源。终极解法是给排班表加乐观锁(以version字段),更新时校验版本号,或者使用数据库行锁SELECT ... FOR UPDATE。毕设项目里即使不要求实现高并发,能在文档或答辩中把这个问题的解决方案讲清楚,会明显拉开档次。

2.3 接口设计与状态码约定

拿到一套SpringBoot+Vue项目,建议先梳理一遍后端接口清单。常规的RESTful风格下,挂号系统的接口大致是:

模块方法路径功能说明
用户认证POST/api/user/login登录,返回Token
用户认证POST/api/user/register注册
科室管理GET/api/dept/list科室列表
医生管理GET/api/doctor/list医生列表(支持按科室过滤)
排班管理GET/api/schedule/list排班列表
排班管理POST/api/schedule/add新增排班(管理端)
挂号管理POST/api/order/create创建预约挂号
挂号管理GET/api/order/mylist查看当前用户挂号记录
挂号管理POST/api/order/cancel取消挂号

接口文档一般配套Swagger(springfox或springdoc)生成。启动后端后访问/swagger-ui/index.html即可查看在线接口文档,也可以在文档里直接调试接口。这一块对排错很有帮助——比如前端说“接口报错了”,你先在Swagger里看同样的参数是否正确,就能快速定位是后端问题还是前端传参问题。

3. 数据库设计与SQL脚本解读

3.1 核心表结构设计:从一个需求到一张表

数据库设计是这类项目的核心竞争力之一。完整的挂号系统SQL脚本通常包含这几类表:

用户相关表

  • user表:用户ID、用户名、密码(加密存储)、姓名、手机号、身份证号、角色(0患者/1医生/2管理员)、创建时间。注意“患者”和“前台用户”在多数场景下是同一个概念。

基础信息表

  • department科室表:科室ID、科室名称、科室简介、位置、状态。层级科室(如内科-心血管内科)可以加parent_id,但毕设用扁平结构居多。
  • doctor医生表:医生ID、姓名、所属科室ID、职称(主任医师/副主任医师/主治医师等)、擅长领域、简介、头像URL、状态。注意这里和user表的关系:一个医生通常对应一个登录账号,一般通过医生表中的user_id字段关联。

业务核心表

  • schedule排班表:排班ID、医生ID、排班日期、开始时间、结束时间、号源总数、已预约数、状态。有的项目把时间段拆成上午/下午/晚间的time_slot字段,有的用具体的开始结束时间,两种做法都可以,但后者更灵活。
  • appointment(或order)挂号记录表:挂号ID、订单号(唯一)、排班ID、患者ID、医生ID、科室ID、挂号时间、就诊时间、状态(0待就诊/1已完成/2已取消)、取消时间、就诊序号。这表是系统里记录增长最快也最需要索引的表。

扩展功能表

  • notice公告表、payment缴费记录表、patient就诊人表(如果支持添加多个就诊人)。这些是可选项,有则让项目功能更完整。

3.2 表关系设计里的关键考量

表和表之间的关联关系,体现了你对业务理解的深度。常规的设计是:department 1:N doctor;doctor 1:N schedule;schedule 1:N appointment;user 1:N appointment。

但我实际看过不少项目的表结构,经常出现几个问题:

问题一:appointment表冗余了科室ID、医生ID,但没保留“挂号时的快照信息”。比如医生后来被调整了科室或职称,历史挂号记录就会显示错误。更好的设计是挂号时把医生姓名、科室名、诊断费用等字段冗余到挂号记录表中,保证历史记录不可变。

问题二:排班表缺少“号源释放”的精细状态。一个排班被全部约满后,如果有人在就诊前一天取消,需要重新开放号源。如果用used < total判断是否可挂,取消后used减一即可,逻辑是对的,但如果增加order.last_cancel_time之类的字段反而更麻烦,默认实现就够。

问题三:没有考虑同一天同一时段重复预约。同一患者不应该在同一个排班时段下挂两次号。这个校验可以放在应用层(查一下是否存在状态为0的挂号记录),也可以用数据库唯一索引(user_id + schedule_id + status)来保证。

3.3 初始化数据与SQL脚本执行顺序

SQL脚本一般包含三块内容:建库建表语句、初始化管理员账号和测试科室/医生数据、可选的示例排班数据。执行顺序千万别搞错,先把数据库建好,再执行建表脚本,最后插入数据。

初始化数据这一步我特别建议仔细看:默认管理员账号是什么?密码是多少?是明文还是加密后的?很多毕设项目默认账号是 admin / 123456,但如果密码字段存的是BCrypt加密串,你直接用明文SQL插入就会导致登录失败。正确做法是在项目启动后用注册接口创建一个管理员,或者用项目中自带的工具类生成加密密码后手改SQL。

4. 环境搭建与本地运行实操

4.1 环境准备:把基础工具装齐

拿到源码后,第一件事不是看代码,而是把环境准备好。推荐清单如下:

  • JDK 8 或 JDK 11(和项目pom.xml里配置保持一致,版本不匹配会报各种诡异错误)
  • Maven 3.6+(用来拉取后端依赖并打包)
  • Node.js 14+(前端Vue项目运行需要,npm命令依赖它)
  • MySQL 5.7 或 8.0(注意和项目JDBC驱动版本匹配)
  • IDE:后端推荐IntelliJ IDEA,前端用VS Code即可

这里有个非常实际的建议:先看项目里的pom.xml和package.json,确定项目用的具体依赖版本,再决定安装哪个版本的环境。有些老项目用的是Spring Boot 2.x + Vue 2 + Element UI,有些新项目已经是Spring Boot 3.x + Vue 3 + Element Plus,两者的配置方式差异很大,混用会浪费大量时间调试。

4.2 后端启动完整流程

第一步,用IDEA打开后端项目文件夹,等待Maven自动下载依赖(首次下载时间可能较长,国内建议配置阿里云Maven镜像,在settings.xml里加mirror)。

第二步,修改配置文件。找到application.yml(或application.properties),确认以下几项:

  • 数据源地址:jdbc:mysql://localhost:3306/hospital_db?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
  • 数据库用户名和密码
  • 服务端口(默认8080,如果被占用改成8081)
  • MyBatis配置:mapper-locations路径、驼峰映射是否开启

提示:数据库时区参数 serverTimezone 一定要配。连接MySQL 8.x且本机时区非UTC时,不配置会报时间相关的SQLException。

第三步,在Navicat或命令行中执行SQL脚本,完成建库建表和初始化数据。

第四步,启动SpringBoot应用。运行HospitalApplication主类,看到“Started ... in xx seconds”的日志就成功了。此时可以访问Swagger接口文档页面验证接口是否正常。

4.3 前端启动完整流程

第一步,用VS Code(或IDEA)打开前端文件夹,确认目录结构里有package.json。

第二步,在终端执行npm install安装依赖。这一步时间取决于网络状况,下载node-sass等依赖包如果特别慢,可以设置淘宝镜像源:

npm config set registry https://registry.npmmirror.com

第三步,启动前端开发服务器:

npm run serve

看到App running at: http://localhost:8081之类的输出就说明成功了。在前端项目里打开src/utils/request.js或src/api/下的文件,会找到一个统一的baseURL配置,比如http://localhost:8080,这必须和后端实际端口保持一致,否则前端所有请求都会404或超时。

第四步,浏览器访问前端地址,用初始化账号登录,点几个功能模块验证前后端连通。

4.4 跨域问题与接口联调

前后端分离项目绕不开跨域。后端端口8080,前端端口8081,前端请求后端时浏览器的同源策略会拦截。项目里常见的解决方案有两种:

一种是后端写一个CorsConfig配置类,加上全局跨域过滤器或使用@CrossOrigin注解。另一种是通过Vue CLI的代理转发解决:

// vue.config.js module.exports = { devServer: { proxy: { '/api': { target: 'http://localhost:8080', changeOrigin: true } } } }

代理的方式更贴近生产环境,而且不用在后端放开所有跨域权限。如果你发现前端请求发出去了但控制台报CORS错误,优先检查后端是否配置了跨域;如果报404,优先检查代理路径和请求路径是否匹配。

5. 常见问题与排查经验实录

实操过程中遇到报错是常态。这里整理一份我实测时踩过的坑合集,按出现频率排序,每一条都是可以直接对应到操作环节的具体问题。

问题现象可能原因解决思路
启动报Port 8080 was already in use端口被占用终端执行netstat -ano | findstr 8080(Windows)或lsof -i:8080(Mac/Linux)找到进程PID,结束进程或改后端端口
数据库表不存在或SQL执行报错脚本执行顺序错误或字符集问题核对脚本执行顺序,确认表名大小写一致性(Windows不区分,Linux严格区分);建库时统一使用utf8mb4
中文乱码数据库连接字符集或表字符集不对连接串加characterEncoding=utf8;建表语句指定ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;前端页面meta标签确认utf-8
前端npm install报错node-sass版本和Node版本不匹配查看package.json中node-sass版本要求,换对应Node版本,或改用sass替代
登录提示“用户名或密码错误”密码加密方式不一致用项目中的加密工具类重新生成密码后更新数据库,而不是直接插明文
前端能打开但请求全404代理没配置或baseURL不对确认vue.config.js代理配置和request.js的baseURL;浏览器F12看Network实际请求URL
跨域报错后端未配置跨域配置CorsConfig或使用代理方式请求同源路径
预约时提示“号源不足”或“排班不存在”排班ID不对或排班状态被关闭先在管理端确认排班存在且号源有余量,再检查前端传递的scheduleId是否匹配
取消挂号后号源没恢复取消逻辑只改了订单状态,没减排班used数检查Service层取消方法里是否同时调用更新排班的逻辑,且两个操作必须在一个事务里,否则数据不一致
Swagger页面打不开依赖版本和Spring Boot版本不匹配Spring Boot 2.6+用springdoc-openapi;Spring Boot 2.5前用springfox,检查依赖是否被正确引入

5.1 依赖下载失败与版本冲突

Maven依赖拉取慢或失效是最常见的问题之一。除了配置阿里云镜像,还要注意不要轻易升级或降级pom.xml里的版本号。有一次我手头一个项目因为Spring Boot从2.4升到2.6,结果MyBatis-Plus和springfox的兼容性一起出问题,折腾了一个晚上才恢复。毕设项目的依赖版本都是经过验证的,没有充分理由不要动。

前端也是一样,npm install之后最好固定住package-lock.json,不要轻易删掉重装。不同机器上装出来的依赖版本有差异,表现在页面上可能是组件样式诡异、功能报错。

5.2 数据库导入的字符集陷阱

SQL脚本本身如果是UTF-8编码,在Navicat里执行没问题,但用命令行mysql -u root -p < script.sql导入时可能会因为终端字符集导致中文乱码。推荐的做法是:在命令行执行前先设置SET NAMES utf8mb4;,或者直接用Navicat的“运行SQL文件”功能导入。

5.3 并发挂号场景的“隐藏考点”

毕设答辩时老师很可能会问:如果两个人同时抢最后一个号,系统怎么保证不超卖?

这就是我在前面提到的乐观锁问题。如果源码里没有实现,你有两个选择:

选择一:在排班表增加version字段,更新时使用条件WHERE id = ? AND version = ?,更新成功后version = version + 1。如果更新影响行数为0,说明版本已经变了,则提示号源已被抢占。

选择二:在数据库层面用UPDATE schedule SET used = used + 1 WHERE id = ? AND used < total,靠受影响行数判断是否更新成功。这种写法不需要额外字段,实现更简单,也是我推荐优先采用的方案。

// 伪代码演示:基于update行数判断号源是否充足 int rows = scheduleMapper.increaseUsedCount(scheduleId); if (rows == 0) { throw new BusinessException("该时段号源已被约满"); } orderMapper.insert(order);

注意这里必须保证两步在同一个事务中,否则可能出现号源扣减成功但订单写入失败的数据不一致。

6. 一点项目扩展思路

医院挂号系统做完基础功能后,往上加扩展点是比较自然的:

  • 短信或邮件通知:挂号和取消时发送提醒,可以接入阿里云短信,也能用Mail接口模拟。
  • 支付对接:挂号和缴费打通,用模拟支付或微信/支付宝沙箱环境。
  • 图表统计:管理端加一个挂号趋势统计,按科室、按医生的预约量排行,用ECharts画图,前端加分明显。
  • 医生排班可视化:用日历组件展示当月排班,点击某天快速设定出诊时间段。

我个人在实际操作中的体会是:这类项目值钱的地方不在代码量,而在关键业务逻辑的严谨度。把用户登录、号源扣减、取消释放这些环节做扎实,把表结构设计到能解释清楚为什么这样冗余、为什么那样加索引,就已经是一份很能打的毕设了。拿到源码后不要急着跑起来就完事,建议花一下午时间把表结构和核心流程画一遍,再自己动手改一个小需求(比如加一个“科室统计”的接口和页面),那才算真正吃透了这套系统。

相关新闻

降AI率工具实测:从检测原理到论文降重修改的完整指南

降AI率工具实测:从检测原理到论文降重修改的完整指南

今年四月中旬开始&#xff0c;我陆续收到好几个应届毕业生的求助&#xff0c;问题几乎一模一样&#xff1a;论文初稿用AI辅助写了&#xff0c;现在学校要求提交前测AI生成率&#xff0c;结果一测就标红&#xff0c;怎么办&#xff1f;翻社交平台&#xff0c;答案几乎全是推荐所…

2026/10/21 3:25:22 阅读更多 →
VR环境下SSVEP脑电实验:从刺激设计到Matlab频率识别全解析

VR环境下SSVEP脑电实验:从刺激设计到Matlab频率识别全解析

1. 先别急着写代码&#xff1a;SSVEP实验到底在验证什么单看项目标题&#xff0c;这个实验的核心是"SSVEP检测频率导向脑活动"&#xff0c;也就是通过稳态视觉诱发电位来观察大脑对特定频率闪刺激的节律性响应。很多人第一反应是"这不就是脑机接口里最常用的那个…

2026/10/21 3:25:22 阅读更多 →
Unity编辑器拓展核心:GenericMenu与Undo协同原理与避坑指南

Unity编辑器拓展核心:GenericMenu与Undo协同原理与避坑指南

1. 这不是“加个按钮”那么简单&#xff1a;Unity编辑器拓展的真实战场很多人第一次听说“Unity编辑器拓展”&#xff0c;脑子里浮现的是一张截图&#xff1a;菜单栏里多了一个“Tools → My Awesome Tool”&#xff0c;点一下弹出个窗口&#xff0c;里面几个滑块和按钮&#x…

2026/10/21 3:25:22 阅读更多 →

最新新闻

Skills不是标签:构建可验证的能力坐标系

Skills不是标签:构建可验证的能力坐标系

1. “skills”不是标签&#xff0c;是能力坐标系的动态刻度最近在几个技术社区和职业发展类平台反复看到一个现象&#xff1a;大量简历、项目介绍、自我介绍里高频出现“skills”这个词&#xff0c;但点开一看&#xff0c;要么是堆砌一长串技术名词&#xff0c;要么是“精通Pyt…

2026/10/21 4:13:41 阅读更多 →
Windows Terminal完全指南:从安装配置到高效命令行工作台

Windows Terminal完全指南:从安装配置到高效命令行工作台

如果你还在用Win10自带的cmd窗口写命令&#xff0c;我强烈建议你腾一下午时间&#xff0c;把Windows Terminal折腾明白。真不是小题大做——我第一次把工作环境从原生的PowerShell窗口切过来之后&#xff0c;最大的感受是&#xff1a;为什么没有早几年用上它。命令行这种每天要…

2026/10/21 4:13:41 阅读更多 →
IndexedDB游标实战:解决大数据量遍历性能瓶颈

IndexedDB游标实战:解决大数据量遍历性能瓶颈

1. 游标到底解决了什么问题1.1 先看一个典型的本地数据“膨胀”场景我用 IndexedDB 最早是在一个纯前端的离线表格应用里&#xff0c;当时数据量大概只有几千条记录&#xff0c;直接getAll()一把梭&#xff0c;页面是秒开。后来客户开始往里面导 Excel&#xff0c;单表轻松破三…

2026/10/21 4:13:41 阅读更多 →
基于 AAS 技能库掌握 Azure AI Projects Java SDK:Azure AI Foundry 项目级资源管理实战指南

基于 AAS 技能库掌握 Azure AI Projects Java SDK:Azure AI Foundry 项目级资源管理实战指南

基于 AAS 技能库掌握 Azure AI Projects Java SDK&#xff1a;Azure AI Foundry 项目级资源管理实战指南 【免费下载链接】agentic-awesome-skills AAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validatio…

2026/10/21 4:13:41 阅读更多 →
UniHacker 使用教程:三平台解锁 Unity 编辑器与 UnityHub 的操作手册

UniHacker 使用教程:三平台解锁 Unity 编辑器与 UnityHub 的操作手册

UniHacker 使用教程&#xff1a;三平台解锁 Unity 编辑器与 UnityHub 的操作手册 【免费下载链接】UniHacker 为Windows、MacOS、Linux和Docker修补所有版本的Unity3D和UnityHub 项目地址: https://gitcode.com/GitHub_Trending/un/UniHacker UniHacker 是一款基于 Aval…

2026/10/21 4:13:41 阅读更多 →
芯片烧录上位机实操指南:错误代码分类排查与产线稳定避坑

芯片烧录上位机实操指南:错误代码分类排查与产线稳定避坑

Flashrunner这种上位机&#xff0c;操作界面上看起来就是几个窗口、几个按钮&#xff0c;但真正在产线或者实验室里跑起来&#xff0c;你会发现它背后牵扯的东西远比想象中多。芯片型号匹配、通信稳定性、目标文件格式、供电质量&#xff0c;甚至是一根USB线的好坏&#xff0c;…

2026/10/21 4:12:41 阅读更多 →

日新闻

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

这段时间硬件圈和AI圈都在传一个事&#xff1a;AMD锐龙AI Max PRO 400系列把最高192GB统一内存搬进了PC形态的产品里&#xff0c;按宣传口径&#xff0c;本地跑320B参数的大家伙不再是纸面概念。我第一反应倒不是“内存真大”&#xff0c;而是这话背后的含金量——它把过去只能…

2026/10/21 0:00:11 阅读更多 →
AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

1. 从“封号重开”这个行为说起&#xff1a;用户到底在追求什么“封号重开”这四个字&#xff0c;放在任何产品语境里都带着一股决绝的味道。一个账号从零开始积累使用记录、调教偏好、沉淀工作流&#xff0c;背后是大量的时间和精力成本。正常情况下&#xff0c;没有人愿意主动…

2026/10/21 0:00:11 阅读更多 →
ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

1. 为什么在ROS里硬刚YOLOv3不是“炫技”&#xff0c;而是工程落地的必经之路我第一次在某高校机器人实验室看到那台搭载Jetson TX2的移动底盘原地打转、反复识别错垃圾桶时&#xff0c;就意识到&#xff1a;单纯跑通darknet_ros demo和真正让YOLOv3在ROS里“干活”&#xff0c…

2026/10/21 0:00:11 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型&#xff08;GMM&#xff09;的语音识别系统&#xff0c;很多人第一反应就是一堆数学公式&#xff0c;觉得门槛很高。但如果你真的在MATLAB里把它落地跑通&#xff0c;会发现核心其实就是三件事&#xff1a;把声音变成特征向量&#xff0c;用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人&#xff0c;但落到具体操作上&#xff0c;无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程&#xff1a;对图像做反白、改调色板、彩色转灰度&#xff0c;最后把像素数据导出成txt文件。单看每一…

2026/10/20 20:43:59 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词&#xff0c;你会发现一个很有意思的现象&#xff1a;每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型&#xff0c;有人指的是运动控制系统&#xff0c;还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 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/20 10:02:08 阅读更多 →
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/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练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/20 9:50:45 阅读更多 →