考研助手毕设全流程复盘:SSM+Vue+MySQL从设计到答辩

毕设选题这件事,我身边多数同学都纠结了两三周。电商系统做烂了,小区物业没有新意,最后我把方向定在了“考研助手”上——这个选题放在2026届毕设里,既有现实场景支撑,又不会显得空泛。更关键的是,它能把SSM后端、Vue前端、MySQL数据建模这几块毕设核心能力全部串起来,论文也有足够篇幅可写。

这篇复盘把我从立项、建表、写接口、搭页面到论文定稿的完整过程都拆开讲。如果你正在准备SSM+Vue方向的毕设,或者对考研类信息系统感兴趣,这篇内容可以直接当参考骨架用。

1. 考研助手到底在解决什么问题

1.1 考生场景里那些细碎痛点

考研备考过程其实是典型的信息密集、流程重复场景。一个考生同时要关注目标院校招生情况、初试科目、参考书目、往年分数线,还要自己排复习计划、记录每日完成度、整理错题。

我发现一个特别现实的问题:这些信息大部分散落在不同位置。院校专业数据要去官网查,计划用备忘录或者纸质本子排,错题分散在各科笔记里,到了冲刺阶段根本来不及翻。做一个集中管理、可视化展示、并支持计划自动生成的小系统,比泛泛的“在线学习平台”更有抓手,也更容易在答辩时把业务逻辑讲清楚。

1.2 为什么选SSM+Vue而不是Spring Boot单体

这套组合在当前毕设环境下属于稳妥且不容易撞车的方案。SSM是Spring+SpringMVC+MyBatis的经典组合,答辩老师对这套架构的提问套路非常熟悉,你能被问到的问题基本都在掌控范围内。前端用Vue做前后端分离,页面交互体验比传统的JSP方案好一截,论文的创新点描述也更充分。

对比过Spring Boot之后,我更确定选SSM没错。Spring Boot虽然配置简化,但毕设答辩时老师容易追问“自动配置原理”,对基础没那么扎实的同学反而容易暴露短板。SSM的手动配置过程本身就是论文里“系统设计”章节的好素材,拦都拦不住的那种。

1.3 功能模块的全貌与边界

我最终锁定了六个核心功能域:

  • 用户模块:注册、登录、个人信息维护
  • 院校库模块:院校列表、专业目录、初试科目、招生信息维护
  • 目标管理模块:考生选择目标院校和专业,形成“备考意向”
  • 学习计划模块:根据目标院校专业的考试科目自动生成阶段性任务,支持每日打卡
  • 错题本模块:记录错题原文、解析、错因分类,按科目和标签统计
  • 数据可视化模块:用图表展示打卡趋势、科目学习时长占比、错题类型分布

功能边界一定要清晰。很多同学做这类系统容易犯一个毛病——不停加功能,加了论坛又加聊天,最后项目失控。我的原则是“围绕备考闭环设计”,收藏、交流这些非核心功能第一版直接砍掉,保证每个模块都能讲清楚数据流向。

模块核心功能数据流向
用户注册/登录前端传入表单,后端校验后落库
院校库多条件检索、详情前端发送查询参数,MyBatis动态SQL查询
目标管理绑定院校专业userId关联schoolId和majorId
学习计划任务生成、打卡Service层计算任务列表,批量插入
错题本记录与统计按科目聚合,图表接口返回统计结果

2. 表结构才是毕设系统的命根子

2.1 核心表设计与字段规划

数据库设计阶段我花的时间比重最大,因为后端接口写得快不快、前端展示顺不顺,完全取决于表建得合不合理。核心表一共设计了七张:用户表、院校表、专业表、院校专业关联表、备考意向表、学习任务表、错题表,外加一张打卡记录表。

用户表没什么花活,重点是不要存明文密码。我当时用了MD5加盐存储,盐值是注册时生成的一串随机字符,存密码字段时把盐一起拼接进去。这在毕设级别里足够交代,论文里也专门解释了加盐的必要性。

CREATE TABLE `user` ( `id` INT PRIMARY KEY AUTO_INCREMENT, `username` VARCHAR(50) NOT NULL UNIQUE, `password` VARCHAR(128) NOT NULL, `salt` VARCHAR(32) NOT NULL, `nickname` VARCHAR(50), `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

学习任务表是整张设计里最有内涵的一张,因为它直接支撑“自动生成计划”这个亮点功能。

CREATE TABLE `study_task` ( `id` INT PRIMARY KEY AUTO_INCREMENT, `user_id` INT NOT NULL, `plan_month` VARCHAR(7) NOT NULL COMMENT '目标月份,如2026-03', `subject_name` VARCHAR(50) NOT NULL, `task_content` VARCHAR(255) NOT NULL, `task_status` TINYINT DEFAULT 0 COMMENT '0待完成 1已完成', `finish_date` DATE, `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

2.2 院校、专业和备考意向的关联设计

院校和专业之间不是简单的主外键,因为一个院校有多个专业,一个专业也可能在不同院校开设,我在中间加了school_major关联表,把招生人数、初试科目这些专业维度信息挂在关联表上,而不是放在专业表里。这样既避免字段冗余,又能灵活扩展。

备考意向表是连接用户和目标的桥梁。它记录了用户选择的院校专业关联ID,以及备考状态。这里有个容易忽略的细节:一个用户可能中途换目标院校,如果直接改意向表的记录,历史数据就丢了,所以我在表里设计了status字段,用有效标记区分当前目标和历史目标,数据保留完整,论文里也能多写一段设计考量。

2.3 学习计划与打卡的数据建模

自动生成学习计划的本质,是根据目标专业的考试科目数量和当前时间到考试的剩余天数,计算每个时间段的复习任务量,然后批量插入任务表。打卡则是对任务状态的更新:用户完成一项任务,点击标记完成,系统记录完成时间。

打卡记录单独建表更合理,因为一个任务可能被打卡多次(比如复习任务重复多轮),任务表的task_status只能表示当前状态,如果要做趋势分析,还得查打卡流水表。两张表配合,论文里的“E-R图”笔画也更丰富。

3. 后端SSM落地:从Controller到Mapper的典型路径

3.1 分层架构与包结构规划

SSM项目最标准的包结构直接照搬三层架构:Controller、Service、Mapper、Pojo,再额外加一个Config包放配置类和跨域过滤器。我见过很多同学把所有类堆在两个包里面,代码是能跑,但论文画架构图时极其尴尬,所以从一开始就按规范分包。

com.example.kaoyan ├── controller // 接口层 ├── service // 业务逻辑 │ └── impl ├── mapper // MyBatis接口 ├── pojo // 实体类 │ ├── entity │ └── vo // 页面视图对象 └── config // 跨域、字符编码配置

分包这件事特别能体现一个开发者的工程习惯。答辩现场老师翻项目源码是常有的事,看到清晰的包结构,印象分会明显不一样。

3.2 登录鉴权的实现取舍

毕设级别的鉴权不需要引入Spring Security,那个东西配置复杂,答辩反而容易问倒自己。Session方案是最稳的,但前后端分离场景下跨域带Cookie会比较麻烦,所以我当时选择了简单的Token思路:登录成功后后端生成一个UUID并存入Session,同时返回给前端,前端每次请求在Header里带Token,后端用拦截器统一校验。

拦截器校验的方法很朴实:

public class LoginInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { String token = request.getHeader("token"); if (token == null || request.getSession().getAttribute(token) == null) { response.setStatus(401); return false; } return true; } }

这个方案的优点是代码量小,效果够用,论文里可以解释成“基于Token的会话保持机制”,至于真正的JWT、Redis方案,可以在“展望”小节里提一句作为后续优化方向。

3.3 院校检索接口的动态SQL实践

院校库检索是整个系统里最高频的操作,筛选项包括省份、办学层次、专业方向、招生人数范围等,用户不会每次把所有条件都填满,所以查询条件是不确定的。这种场景正是MyBatis动态SQL的看家本领。

<select id="searchSchools" resultType="com.example.kaoyan.pojo.vo.SchoolVO"> SELECT s.id, s.name, s.province, s.school_level, sm.major_name, sm.enroll_count FROM school s LEFT JOIN school_major sm ON s.id = sm.school_id <where> <if test="province != null and province != ''"> AND s.province = #{province} </if> <if test="level != null and level != ''"> AND s.school_level = #{level} </if> <if test="majorName != null and majorName != ''"> AND sm.major_name LIKE CONCAT('%', #{majorName}, '%') </if> </where> ORDER BY s.id </select>

这里有几个细节值得注意。<where>标签会自动去掉第一个多余的AND,避免拼SQL出错;LIKE查询用CONCAT拼接,防止SQL注入风险;返回值直接映射到VO对象,省去手动转换。我在开发时还被一个字段大小写问题坑过,数据库字段是school_level,实体类属性是schoolLevel,MyBatis默认会自动做驼峰转换,但前提是配置了mapUnderscoreToCamelCase=true,没配的话查出来的字段全是null,这种问题排查起来非常隐蔽。

3.4 学习计划的生成逻辑

自动生成计划是我论文里的核心亮点,后端实现逻辑分三步走。

第一步,根据用户当前备考意向,查出目标专业的考试科目列表。第二步,计算当月应安排的任务批次:以每月四周为周期,每周安排一个科目的一轮复习任务。第三步,批量写入任务表。

@Override @Transactional(rollbackFor = Exception.class) public void generateMonthlyPlan(Integer userId, String planMonth) { List<String> subjects = majorMapper.findExamSubjectsByUserId(userId); if (subjects == null || subjects.isEmpty()) { throw new RuntimeException("当前备考意向未设置考试科目"); } List<StudyTask> taskList = new ArrayList<>(); for (int week = 1; week <= 4; week++) { for (String subject : subjects) { StudyTask task = new StudyTask(); task.setUserId(userId); task.setPlanMonth(planMonth); task.setSubjectName(subject); task.setTaskContent(subject + "第" + week + "周基础复习:教材章节精读+真题演练"); task.setTaskStatus(0); taskList.add(task); } } studyTaskMapper.batchInsert(taskList); }

批量插入必须加事务,这也是答辩必问点——如果插入到一半失败,不加事务就会出现“半个计划”的脏数据。我用@Transactional注解声明式事务,一句话就解决了。

3.5 前后端联调的沟通细节

联调阶段最常见的问题就是数据格式不一致。后端按要求返回JSON,结果前端解析时发现日期字段是一长串时间戳,页面显示成数字;空集合被序列化成null,前端遍历直接报错。

我用Jackson统一配置解决了这类问题:日期格式化为yyyy-MM-dd HH:mm:ss,空值不输出。配置放在一个公共的JacksonConfig里,所有接口生效,省得每个VO加注解。这个小动作在测试环节帮我避掉了大量低级bug。

4. 前端Vue:把功能装进看得见的界面

4.1 项目初始化和目录规划

前端我用Vue2+Vue Router+Axios这套经典组合。Vue3当时虽已普及,但很多SSM毕设参考模板仍然基于Vue2,现有组件资料更齐全,出问题也好搜。用vue-cli初始化项目之后,我把src目录按模块划分清楚。

src ├── api // 接口请求封装 ├── router // 路由配置 ├── views // 页面组件 │ ├── Login.vue │ ├── Dashboard.vue │ ├── SchoolList.vue │ ├── PlanManage.vue │ └── WrongBook.vue ├── components // 公共组件 └── utils // request封装

目录结构直接对应前端页面的功能域,后期写论文画“系统功能结构图”时,照着这个目录就能画出来。

4.2 axios请求封装与路由守卫生

axios请求封装是前端开发的第一步,也是最容易被忽略的一步。我的做法是创建一个request实例,设置baseURL,然后在请求拦截器里统一加Token,在响应拦截器里统一处理状态码。

import axios from 'axios' const request = axios.create({ baseURL: '/api', timeout: 10000 }) request.interceptors.request.use(config => { const token = localStorage.getItem('token') if (token) { config.headers['token'] = token } return config }) request.interceptors.response.use( response => response.data, error => { if (error.response && error.response.status === 401) { router.push('/login') } return Promise.reject(error) } ) export default request

路由守卫同样重要。没有登录的用户直接访问首页会被拦截跳转到登录页,这一处代码在演示时非常出效果,导师会看到你对“访问控制”有真实理解。

router.beforeEach((to, from, next) => { const token = localStorage.getItem('token') if (to.path !== '/login' && !token) { next('/login') } else { next() } })

4.3 仪表盘与院校库页面的交互拆解

仪表盘是用户登录后看到的第一个页面,我放了三个核心信息块:今日待完成任务数、本月打卡率、错题类型分布图。这三块数据分别来自三个接口,但页面上要同时展示,所以Dashboard页面用Promise.all并行请求,避免串行等待。

图表用的是ECharts。打卡率用折线图,错题分布用饼图。有一个坑必须提醒:ECharts在容器隐藏或初始化时数据为空的情况下,图表会渲染不出内容。我在初始化图表的时机上加了nextTick,同时把默认值设为空数组而不是null,两个问题同时解决。

院校库页面是这个系统最重的前端页面,因为包含了筛选条件区、列表区、分页区。筛选条件联动查询:用户选择省份、层次后,点击查询按钮,请求searchSchools接口,列表刷新。详情弹窗则展示该院校该专业的招生人数、初试科目等具体信息。

4.4 计划管理和错题本的操作流设计

计划管理页用日历加任务列表的组合。日历部分用的是自定义组件,点选日期后,下方显示该日期所在月份的任务列表。打卡操作就是点任务项右侧的“完成”按钮,调用接口更新状态,页面即时刷新。

这里我给每个任务加了一个小圆点颜色标识:灰色是未完成,绿色是已完成。视觉反馈即时,演示时观感很加分。错题本页面则是表单加列表的组合,用户录入错题时选择科目、错因标签,提交后列表刷新,同时右侧统计图同步更新,这个联动效果展示了前后端数据流的完整闭环。

5. 把项目变成论文:核心章节怎么写才不被挑刺

5.1 论文框架的搭建顺序

论文框架我建议按这样的顺序组织:摘要、绪论、需求分析、总体设计、详细设计、系统实现、系统测试、总结展望。这个顺序不是随便排的,它严格对应软件工程的标准流程,评审老师也最认这个结构。

开题阶段最有效的动作是先把“需求分析”写完。用例图、功能结构图、数据流描述一画出来,后续所有章节都是围绕这些图展开的,越写越顺。很多同学先进代码后写论文,结果论文里描述的功能和实际代码对不上,返工量非常大。

5.2 系统架构图和E-R图的画法要点

系统架构图是论文的“门面”,我画的是经典三层架构图:最上层是Vue前端,中间是Controller层接收请求、Service层处理业务、Mapper层操作MySQL,底层数据存储。图一定要体现“前后端分离”的边界,前端通过JSON与后端交互,后端内部按职责分层。

E-R图要画的更细,实体和关系必须与数据库表完全一致。我的实体包含用户、院校、专业、备考意向、学习任务、打卡记录、错题,关系描述为:一个用户有多个备考意向,一个备考意向对应一个院校专业,一个用户拥有多个学习任务和错题记录。这里最容易出错的是关系基数,画反了会被答辩老师一眼看穿。

5.3 测试章节的写作技巧

测试章节不写也扣分,写流水账也扣分。正确做法是功能测试表加性能简述的结合。

功能测试用表格呈现:模块、测试用例、操作步骤、预期结果、实际结果、是否通过。表格形式清爽直观,凑篇幅也好用。性能方面我补充了一个接口响应时间测试:本地环境下批量查询接口的平均响应时间在100ms以内,接口数量多但没有卡顿,这个数据在论文里写出来可信度非常高。核心不能写的是“测试用例全部通过”这种话,显得敷衍。

6. 答辩演示与高频问题:这些坑我替你踩过了

6.1 演示环境的准备工作

答辩前我栽过一个跟头:数据库初始化脚本用错了MySQL版本。我在自己电脑上是8.0,答辩用的机房是5.7,时间类型默认值写法不一样,导致建表失败。这个教训很直接——答辩前至少三天,把项目部署到目标环境完整的跑一遍,包括数据库初始化、后端启动、前端打包放行。

前端我选择构建后放在后端项目的webapp目录下托管,启动Tomcat就能直接访问,这样就不用答辩时再开一个Node服务,少一个变量,少一个事故点。

6.2 高频问题清单和回答思路

  • 为什么选SSM不选Spring Boot?回答思路:SSM分层更直观,配合手动配置更容易体现对框架原理的理解。
  • 密码怎么存储的?回答思路:MD5加盐,解释什么是盐值,防止彩虹表反查。
  • 自动生成计划的算法依据是什么?回答思路:按科目数量和月份天数均分任务,强调事务保证数据一致性。
  • 动态SQL解决了什么问题?回答思路:查询条件不确定,MyBatis标签动态拼接避免写多个接口。

每个问题都要准备一个落地的例子,不要背概念,结合你项目里的具体场景说,可信度会高很多。

6.3 出镜率最高的三处隐蔽问题

跨域问题排在第一位。前后端分离项目,前端8080端口,后端8081端口,Ajax请求会被浏览器拦截。我当时用CorsFilter统一解决,但要特别注意allowedOrigins不能配成*还允许携带凭证,这两者冲突。把来源域名写清楚比通配符更靠谱。

第二位是MyBatis的驼峰映射,前面提过一次,这里再强调一遍。这个配置不打开,所有多单词字段返回后都是null,BUG的表现形式极其迷惑。第三位是批量插入的SQL映射,MySQL支持一条INSERT插入多行VALUES,但Oracle不支持。我用MySQL,所以选择批量VALUES的方式,性能比循环单插高很多。

还有一个容易被忽略的是文件上传路径。我做了资料文件上传功能,在Windows开发环境写的绝对路径,到班级演示机是Linux环境,路径直接失效。后来改成用配置项设置存储路径,从配置中心读取,环境差异问题才彻底解决。

最后再分享一个写论文时的技巧:所有功能模块的截图,在开发阶段就统一命名保存到项目目录下的pictures文件夹里。很多同学最后交论文时发现截图尺寸不一致、背景色混乱,重新截图又麻烦。按模块命名,写作时直接引用,排版效率会高很多。这个项目从立项到定稿我总共用了九周,其中前两周几乎全花在表结构和接口设计上。回头再看,正是这个阶段铺得扎实,后面写代码、写论文、准备答辩才一路顺畅。

相关新闻

安客居二手房信息采集:Django+爬虫+可视化全链路解析

安客居二手房信息采集:Django+爬虫+可视化全链路解析

这两年毕业设计市场上&#xff0c;“爬虫Web展示”的选题一直很热门&#xff0c;但能把爬虫采集、数据处理、可视化分析完整串起来&#xff0c;再配上Django后端做Web呈现的&#xff0c;其实不多。这套“基于django大数据技术的网络爬虫的安客居二手房屋信息采集系统”&#xf…

2026/10/21 2:50:01 阅读更多 →
后端面试计算机网络核心:HTTP/TCP/HTTPS要点全解析

后端面试计算机网络核心:HTTP/TCP/HTTPS要点全解析

后端面试里&#xff0c;计算机网络这块儿的地位很特殊。它不像算法那样刷题就能速成&#xff0c;也不像中间件那样会个API就能应付——网络知识考察的是你对“数据从一台机器到另一台机器”这条完整链路到底有没有底层认知。前端同学可能只需要懂到浏览器发请求就够了&#xff…

2026/10/21 2:50:01 阅读更多 →
基于深度学习的生菜周期检测系统:全流程复盘与工程实践

基于深度学习的生菜周期检测系统:全流程复盘与工程实践

先说结论吧&#xff1a;这套“基于深度学习的生菜周期检测系统”&#xff0c;本质上就是一条目标检测的标准流水线——数据集做成YOLO格式&#xff0c;用YOLOv10训练模型&#xff0c;再套一个Python写的UI界面。但真正把它从“能跑通”变成“能在棚里用”&#xff0c;中间藏着大…

2026/10/21 2:50:01 阅读更多 →

最新新闻

51单片机贪吃蛇实战:12864驱动、EEPROM掉电保存与嵌入式分层设计

51单片机贪吃蛇实战:12864驱动、EEPROM掉电保存与嵌入式分层设计

简介&#xff1a;本资源是一套面向大学本科课程设计的51单片机贪吃蛇游戏完整开发方案&#xff0c;适用于单片机原理与应用、嵌入式系统实践等课程学习与项目实训。资源包含Proteus仿真工程&#xff08;.pdsprj&#xff09;、Keil C51源码&#xff08;.c/.a51&#xff09;、编译…

2026/10/21 3:32:25 阅读更多 →
图书推荐系统实战:Python协同过滤从原理到代码避坑指南

图书推荐系统实战:Python协同过滤从原理到代码避坑指南

我记得第一次带学生跑这个图书推荐系统项目时&#xff0c;好几个人卡在了同一个地方&#xff1a;代码能跑通&#xff0c;但推荐结果全是乱的。后来查了半天&#xff0c;问题出在一个被注释掉的函数上。这个项目在中文互联网上流传了很多版本&#xff0c;绝大多数人拿到的都是简…

2026/10/21 3:32:25 阅读更多 →
空间注意力模块实战指南:原理、代码与调参经验

空间注意力模块实战指南:原理、代码与调参经验

做视觉任务这些年&#xff0c;大家都会遇到一个很实际的需求&#xff1a;网络深了、宽了&#xff0c;但该学的东西没学会。SpatialAttention空间注意力模块&#xff0c;是我调过的结构里性价比最高的一个——代码就几十行、参数量几乎可以忽略&#xff0c;却能明显改变网络的关…

2026/10/21 3:32:25 阅读更多 →
awesome-shizuku vs Dhizuku:两大Android权限提升工具终极对比指南

awesome-shizuku vs Dhizuku:两大Android权限提升工具终极对比指南

awesome-shizuku vs Dhizuku&#xff1a;两大Android权限提升工具终极对比指南 在Android开发的世界中&#xff0c;awesome-shizuku和Dhizuku是两个备受关注的高权限工具&#xff0c;它们都致力于让普通应用获得系统级权限&#xff0c;从而突破Android系统的限制。无论你是普通…

2026/10/21 3:32:25 阅读更多 →
CANN内测实战:从环境初始化到模型推理的完整指南

CANN内测实战:从环境初始化到模型推理的完整指南

前阵子看到某社区的“内测招募&#xff0c;免费体验CANN开发环境”活动&#xff0c;我第一时间就报名了。说实话&#xff0c;当时打动我的不只是“免费”两个字&#xff0c;而是想看看这个面向昇腾AI处理器的异构计算架构&#xff0c;在过去一年里到底进化到了什么程度。CANN这…

2026/10/21 3:32:25 阅读更多 →
Redis单线程还是多线程?从4.0到7.2的线程模型演进真相

Redis单线程还是多线程?从4.0到7.2的线程模型演进真相

1. 这个问题为什么值得花十分钟认真搞懂“Redis 到底是单线程还是多线程&#xff1f;”——这句提问在技术群、面试现场、甚至线上课程评论区里&#xff0c;几乎每周都会高频出现。它表面看是个“是非题”&#xff0c;但背后牵扯的是你对 Redis 性能本质、架构演进逻辑、以及高…

2026/10/21 3:31:24 阅读更多 →

日新闻

统一内存+量化:锐龙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 阅读更多 →