JavaWeb运动健康管理系统源码解析与二次开发实战

简介:这份资源是面向JavaWeb初学者与课程设计开发者的运动与健康管理系统完整源码包,包含可运行的Web工程与配套数据库脚本,可用于毕业设计、课程实训或自学练手。压缩包共707个文件,约9.59MB,以gif、js、jsp、html、java、class、css、jar等为主,涵盖前端页面、Servlet与JavaBean业务逻辑、样式脚本及第三方依赖,并附有sql初始化脚本,便于快速还原用户、运动记录、健康指标等数据表结构。系统围绕用户管理、运动数据录入、健康监测、趋势分析与社区互动等模块展开,代码结构清晰,适合对照理解JavaWeb请求处理流程与数据库设计思路。目前已有2019人学习下载,可作为掌握Servlet、JSP与SQL实践的参考案例。

1. 从一份能跑起来的运动健康管理源码说起

很多做 JavaWeb 课设或练手项目的开发者,都遇到过同一个尴尬:网上找到的所谓“完整项目”,下载下来要么缺数据库脚本,要么依赖跑不起来,要么功能只有登录和一张空表格。这次拆的这份运动与健康管理系统源码,属于少见的“能直接跑通”的类型——它把用户健康档案、运动记录、饮食数据、指标统计这几块都做成了可操作的页面,并且附带了完整的数据库文件。换句话说,你拿到的不只是一个壳子,而是一套带业务闭环的 JavaWeb 工程。它适合两类人:一类是正在找 JavaWeb 综合案例的学生,想照着把 Servlet、JSP、JDBC 这套老技术栈串起来;另一类是想拿它当二次开发底座的开发者,比如把运动记录模块改成健身房会员管理,或者把健康指标算法换成自己的公式。下面我按“先看清结构、再跑起来、最后动手改”的顺序,把这份源码拆开讲。

2. 项目定位与技术栈:这套系统到底用什么搭的

2.1 功能边界与适用场景

这份运动与健康管理系统,核心业务围绕“人”和“数据”两条线展开。用户侧能做的事包括:注册登录、维护个人健康档案(身高、体重、年龄、基础疾病等)、录入每日运动记录(运动类型、时长、消耗卡路里)、录入饮食记录、查看健康指标趋势。管理侧则负责用户管理、运动类型字典维护、数据统计导出。它不是一个面向商业运营的复杂平台,而是一套结构清晰、模块划分明确的练手级工程,正好覆盖 JavaWeb 开发中最典型的增删改查加统计场景。

从适用场景看,它最对口的用途有三个:第一,作为高校课程设计的完整参考,因为功能数量适中、技术栈经典、数据库表关系清楚;第二,作为 JavaWeb 入门到进阶的过渡项目,帮助开发者理解 MVC 分层在实际工程里怎么落地;第三,作为二次开发底座,比如把“运动记录”替换成“设备巡检记录”,把“健康指标”替换成“设备运行参数”,整套权限和统计逻辑可以复用。需要提醒的是,这套系统没有引入 Spring 全家桶,走的是原生 Servlet + JSP 路线,所以如果你习惯用 Spring Boot 的注解开发,需要先适应一下 web.xml 配置和手动管理对象生命周期的写法。

2.2 技术选型与分层结构

项目采用经典的三层架构:表现层用 JSP + JSTL 负责页面渲染,控制层用 Servlet 接收请求和分发,业务层用 Service 类封装逻辑,数据访问层用 JDBC 直连数据库。这种“无框架”写法在当下看起来有点原始,但恰恰是理解 Web 请求完整链路的最好材料——没有 Spring 帮你隐藏细节,每个环节都得自己写。

常见做法是:Servlet 里通过request.getParameter()拿参数,调用 Service 方法,把结果塞进request.setAttribute(),然后forward到 JSP。数据库连接用原生 JDBC,配合一个工具类管理Connection、PreparedStatement和ResultSet的关闭。前端部分用了 Bootstrap 做基础样式,表格和表单的布局比较规整,没有引入 Vue 或 React 这类前端框架,所以后端开发者不需要额外学前端构建工具就能改页面。

数据库方面,项目附带的是 MySQL 脚本,表结构大致包括:用户表、健康档案表、运动记录表、饮食记录表、运动类型字典表。表之间通过用户 ID 关联,查询时用 JOIN 拼出完整视图。这种设计在数据量不大时完全够用,但如果要扩展到多用户高并发,索引和分表就需要重新考虑。

2.3 目录结构速览

拿到源码后,先别急着导入 IDE,花两分钟看一下目录结构,能省掉后面很多找文件的麻烦。典型结构如下:

src/ com.health.controller/ # Servlet 控制器 com.health.service/ # 业务逻辑 com.health.dao/ # 数据库访问 com.health.entity/ # 实体类 com.health.util/ # JDBC 工具类、日期工具 WebContent/ css/ js/ images/ # 静态资源 WEB-INF/ web.xml # Servlet 映射配置 lib/ # 依赖 jar 包 login.jsp # 登录页 register.jsp # 注册页 index.jsp # 首页框架 sport/ # 运动记录相关页面 health/ # 健康档案相关页面 sql/ health_db.sql # 数据库建表与初始数据

这个结构里,controller和service的职责划分是否清晰,直接决定了你二次开发时改动的难易程度。我一般会先看web.xml里注册了哪些 Servlet,再顺着 URL 映射去翻对应的控制类,这样能快速建立“页面—请求—处理类”的对应关系。

3. 把项目跑起来:环境、数据库与启动步骤

3.1 环境准备与依赖检查

这套项目对运行环境的要求不算高,但版本匹配很关键。推荐组合是:JDK 8 或 11、Tomcat 8.5 或 9、MySQL 5.7 或 8.0、Eclipse 或 IntelliJ IDEA(社区版够用)。如果你用 JDK 17 配 Tomcat 10,大概率会遇到javax.servlet包名变成jakarta.servlet的问题,因为 Tomcat 10 之后 Servlet API 换了命名空间,而这份源码用的是老包名。所以要么降 Tomcat 版本,要么全局替换包名,后者工作量不小。

依赖 jar 包通常在WEB-INF/lib下,包括mysql-connector-java、jstl、servlet-api。检查一下mysql-connector的版本是否和你本地 MySQL 匹配:MySQL 8.0 需要 connector 8.x,MySQL 5.7 用 5.1.x 也能跑。如果启动时报ClassNotFoundException: com.mysql.cj.jdbc.Driver,说明驱动版本和连接串写法不匹配。

提示:导入项目后先执行一次mvn dependency:tree(如果有 pom.xml)或手动检查 lib 目录,确认没有缺失的 jar,再往下走。

3.2 数据库导入与连接配置

数据库这一步是新手最容易翻车的地方。先创建一个空库,字符集用utf8mb4,然后执行 SQL 脚本:

# 登录 MySQL 后执行 CREATE DATABASE health_db DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; USE health_db; SOURCE /你的路径/sql/health_db.sql;

导入完成后,用SHOW TABLES;确认表都建好了。接着找到 JDBC 工具类,通常在com.health.util包下,修改连接参数:

// JDBCUtil.java 关键配置 private static final String URL = "jdbc:mysql://localhost:3306/health_db?useSSL=false&serverTimezone=Asia/Shanghai&characterEncoding=utf8"; private static final String USER = "root"; // 改成你的数据库账号 private static final String PASSWORD = "123456"; // 改成你的数据库密码 private static final String DRIVER = "com.mysql.cj.jdbc.Driver";

这里有几个参数值得说明:useSSL=false是关闭 SSL 连接,本地开发不关会报警告;serverTimezone=Asia/Shanghai是解决 MySQL 8.0 时区不一致导致的连接失败;characterEncoding=utf8保证中文不乱码。如果你用的是 MySQL 5.7,驱动类名可以写成com.mysql.jdbc.Driver,但 8.0 的驱动兼容旧写法,反过来则不行。

3.3 部署到 Tomcat 并验证

配置好数据库后,把项目部署到 Tomcat。Eclipse 里可以右键项目 → Run As → Run on Server;IDEA 里需要配置 Tomcat Server,把 Artifact 加进去。启动后访问http://localhost:8080/项目名/login.jsp,用 SQL 脚本里预置的测试账号登录,或者自己注册一个。

验证是否跑通,按这个顺序检查:第一,登录页能否正常显示,说明静态资源和 JSP 解析没问题;第二,用测试账号登录后能否进入首页,说明数据库连接和查询正常;第三,新增一条运动记录,刷新列表能看到,说明写入和读取链路都通了。如果卡在第一步,看 Tomcat 日志有没有ClassNotFoundException;卡在第二步,看控制台有没有 SQL 异常;卡在第三步,检查表单字段名和 Servlet 里getParameter的参数名是否一致。

注意:有些项目把数据库密码硬编码在多个文件里,改的时候全局搜索一下,别只改一处导致部分功能连不上。

4. 核心模块拆解:一个请求从进入到返回的完整链路

4.1 登录与权限过滤

登录模块是理解整个请求链路的入口。用户提交表单后,请求先到LoginServlet,它从request里取用户名和密码,调用UserService.login(),Service 再通过UserDao查数据库。查到了就把用户对象放进session,然后重定向到首页;查不到就带错误信息返回登录页。

// LoginServlet.java 核心逻辑 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username = request.getParameter("username"); String password = request.getParameter("password"); UserService userService = new UserService(); User user = userService.login(username, password); // 返回 null 表示登录失败 if (user != null) { request.getSession().setAttribute("currentUser", user); // 存入 session response.sendRedirect("index.jsp"); } else { request.setAttribute("msg", "用户名或密码错误"); request.getRequestDispatcher("login.jsp").forward(request, response); } }

这段代码里,getSession()是权限控制的基础——后续所有需要登录才能访问的页面,都会先检查session里有没有currentUser。常见做法是写一个LoginFilter实现Filter接口,在doFilter里判断,如果没登录就跳回登录页。这样比在每个 Servlet 里重复写判断要干净得多。参数方面,username和password必须和 JSP 表单里的name属性完全一致,大小写敏感,这是新手最常踩的坑之一。

4.2 运动记录的新增与列表查询

运动记录模块是业务量最大的部分,包含新增、列表、删除、按条件筛选。新增时,前端表单提交运动类型、时长、日期等字段,SportServlet接收后封装成SportRecord实体,调用SportService.add(),最终由SportDao执行 INSERT。

// SportDao.java 新增记录 public boolean add(SportRecord record) { String sql = "INSERT INTO sport_record(user_id, sport_type, duration, calorie, record_date) VALUES(?,?,?,?,?)"; try (Connection conn = JDBCUtil.getConnection(); PreparedStatement ps = conn.prepareStatement(sql)) { ps.setInt(1, record.getUserId()); ps.setString(2, record.getSportType()); ps.setInt(3, record.getDuration()); ps.setDouble(4, record.getCalorie()); ps.setDate(5, new java.sql.Date(record.getRecordDate().getTime())); return ps.executeUpdate() > 0; } catch (SQLException e) { e.printStackTrace(); return false; } }

这里用了 try-with-resources 自动关闭连接,比手动在 finally 里关更安全。参数设置时注意setDate需要java.sql.Date,而实体类里通常是java.util.Date,所以要转换一下。列表查询则用SELECT * FROM sport_record WHERE user_id=? ORDER BY record_date DESC,把结果集映射成List<SportRecord>返回给 JSP 遍历渲染。如果要做分页,常见做法是在 SQL 里加LIMIT ?,?,配合一个计算总条数的 count 查询。

4.3 健康指标统计与展示

健康指标统计是这个项目里相对有“业务含量”的部分。它根据用户录入的身高体重算 BMI,根据运动记录汇总每周消耗卡路里,然后在前端用表格或简单图表展示。计算逻辑放在 Service 层:

// HealthService.java 计算 BMI 并给出建议 public String getBmiAdvice(double height, double weight) { double bmi = weight / ((height / 100) * (height / 100)); // 身高单位 cm 转 m if (bmi < 18.5) return "偏瘦,建议增加力量训练"; if (bmi < 24) return "正常,保持当前运动频率"; if (bmi < 28) return "偏胖,建议增加有氧运动"; return "肥胖,建议结合饮食控制"; }

这段逻辑本身不复杂,但它的价值在于演示了“数据采集 → 计算 → 反馈”的闭环。二次开发时,你可以把 BMI 公式换成体脂率估算、把卡路里汇总换成配速分析,只要保持 Service 层接口不变,前端几乎不用动。统计结果的展示通常用 JSTL 的<c:forEach>遍历一个List<Map<String,Object>>,每个 Map 是一行统计结果。如果要做图表,可以引入 ECharts,把后端返回的 JSON 数据塞进去,这部分源码里可能只做了表格,但改造空间很大。

5. 避坑与常见问题排查

5.1 中文乱码:现象、原因与解决

现象是页面输入中文后,数据库里存的是问号,或者列表显示乱码。原因通常有三层:JSP 页面没声明pageEncoding="UTF-8"、Servlet 没设置request.setCharacterEncoding("UTF-8")、数据库连接串没加characterEncoding=utf8。解决方法是三处都检查一遍,缺哪补哪。如果是 POST 请求,在 Servlet 的doPost第一行加编码设置;如果是 GET 请求,Tomcat 8 之后默认 URI 编码是 UTF-8,但老版本需要在server.xml的 Connector 里加URIEncoding="UTF-8"。

5.2 数据库连接失败:从异常信息反推

现象是启动后访问任何页面都报 500,日志里出现Communications link failure或Access denied for user。前者通常是 MySQL 服务没启动、端口不对、或者时区参数缺失;后者是账号密码错误或该账号没有远程/本地访问权限。解决时先确认 MySQL 服务在运行,再用命令行mysql -u root -p能登录,然后检查 JDBC 工具类里的 URL、用户名、密码。如果是 MySQL 8.0,驱动类名必须是com.mysql.cj.jdbc.Driver,URL 里建议加serverTimezone=Asia/Shanghai。

5.3 404 与 500:先看 URL 映射再看堆栈

现象是点击某个功能跳 404,或者提交表单后 500。404 多半是web.xml里 Servlet 的<url-pattern>和表单action不一致,或者注解@WebServlet("/sport")里的路径写错。500 则要看控制台堆栈,最常见的是空指针——比如session里取用户对象时没登录,或者request.getParameter拿到的字段名拼错导致 Service 里对 null 做了操作。排查顺序是:先看浏览器地址栏的 URL,再对照web.xml或注解,最后看堆栈第一行的行号。

5.4 依赖冲突与 Tomcat 版本不匹配

现象是项目编译通过但启动报NoClassDefFoundError或ClassNotFoundException。原因可能是WEB-INF/lib下缺 jar,或者 Tomcat 的 lib 目录里已有同款 jar 导致版本冲突。解决方法是确认mysql-connector、jstl、servlet-api都在,并且servlet-api的 scope 是 provided(如果用了 Maven),不要打进 war 包。另外,Tomcat 10 和javax.servlet包不兼容的问题前面提过,要么换 Tomcat 9,要么全局替换成jakarta.servlet。

5.5 修改表结构后页面报错

现象是你给某张表加了字段,或者改了字段类型,结果原来能跑的页面开始报 SQL 异常。原因是 DAO 层写的是SELECT *,实体类映射时按固定列名取值,新增字段不影响,但删改字段就会导致ResultSet取不到对应列。解决方法是改表结构后,同步检查实体类属性和 DAO 里的列名映射,必要时把SELECT *改成显式列名,这样字段变动时错误更直观。

6. 二次开发改造:从运动记录到通用数据管理

如果你打算拿这套源码做二次开发,最省力的切入点是“换业务对象,不换架构”。具体来说,运动记录模块的整套流程——实体类、DAO、Service、Servlet、JSP——可以整体复制一份,把SportRecord换成你的业务实体,比如“设备巡检记录”,字段从运动类型、时长、卡路里换成设备编号、巡检项、异常描述。数据库表照着建一张新表,关联字段从user_id换成device_id。这样改动量集中在命名替换,架构和权限逻辑完全复用。

改造时我一般会先做一件事:把SportDao里的 SQL 语句全部抽到一个常量类或配置文件中,而不是散落在各个方法里。这样换表名、换列名时只改一处,不用全局搜索替换。下面是一个改造后的 DAO 片段示例:

// 改造后:巡检记录 DAO,SQL 集中管理 public class InspectionDao { private static final String INSERT_SQL = "INSERT INTO inspection_record(device_id, item_name, result, inspect_date) VALUES(?,?,?,?)"; private static final String LIST_SQL = "SELECT * FROM inspection_record WHERE device_id=? ORDER BY inspect_date DESC"; public boolean add(InspectionRecord record) { try (Connection conn = JDBCUtil.getConnection(); PreparedStatement ps = conn.prepareStatement(INSERT_SQL)) { ps.setInt(1, record.getDeviceId()); ps.setString(2, record.getItemName()); ps.setString(3, record.getResult()); ps.setDate(4, new java.sql.Date(record.getInspectDate().getTime())); return ps.executeUpdate() > 0; } catch (SQLException e) { e.printStackTrace(); return false; } } }

另一个改造方向是给统计模块加图表。源码里如果只用了表格展示,你可以引入 ECharts,在 JSP 里加一个<div id="chart">,然后用 Ajax 请求后端返回 JSON。后端只需要在 Servlet 里把List<Map>转成 JSON 字符串写回response.getWriter(),前端success回调里setOption即可。这样不用改数据库和 Service,只加一个返回 JSON 的接口。

验证改造是否成功,我习惯用“三步验证法”:第一步,新模块的增删改查在页面上能走通;第二步,旧模块的功能没有被误伤,尤其是登录和权限过滤;第三步,数据库里新表的数据和旧表互不干扰。如果三步都过,说明改造没有破坏原有结构。

提示:改造前先备份一份原始源码和数据库脚本,改坏了能随时回退,这是血泪经验。

从那以后我每次拿到这类 JavaWeb 源码,都强制先跑通原始版本再动手改,绝不跳过验证步骤直接改代码。希望帮到你。

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

相关新闻

AI Agent与Subagent协作实战:任务分发、上下文管理与结果校验的稳定范式

AI Agent与Subagent协作实战:任务分发、上下文管理与结果校验的稳定范式

说实话&#xff0c;提到 AI Agent 和 Subagent 的协作&#xff0c;我最早是持怀疑态度的。大概两三个月前&#xff0c;我接手了一个任务&#xff1a;把几十份格式混乱的行业资料整理成结构化问答库。一开始我用单个 AI Agent 跑&#xff0c;前面几轮效果还行&#xff0c;但随着…

2026/10/21 2:57:03 阅读更多 →
EmEditor7 语法高亮配置与大文件正则替换实战指南

EmEditor7 语法高亮配置与大文件正则替换实战指南

简介&#xff1a;EmEditor7是一款面向程序员、网页设计师及文本处理工作者的专业文本编辑器&#xff0c;主打语法高亮与高效代码编辑&#xff0c;可解决系统记事本功能单一、大文件卡顿等问题。资源包共92个文件&#xff0c;约4.1MB&#xff0c;以47个dll核心组件为主&#xff…

2026/10/21 2:57:03 阅读更多 →
SpringBoot分布式库存订单与盘点一体化WMS系统实战

SpringBoot分布式库存订单与盘点一体化WMS系统实战

仓库管理系统&#xff08;WMS&#xff09;是Java方向里热度常年靠前的毕设选题&#xff0c;但也是翻车重灾区。我见过不少打着“基于SpringBoot的智能仓储信息管理平台”旗号的项目&#xff0c;点开一看&#xff0c;二十多张表、几十个接口&#xff0c;本质却还是增删改查。说实…

2026/10/21 2:57:03 阅读更多 →

最新新闻

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 阅读更多 →