Java在线教育平台源码解析:DWD-DWS-DIM分层架构与毕设实战指南
简介这是一套面向Java开发者与教育信息化建设者的在线教育平台6.2版本完整设计源码聚焦教学管理、课程学习、在线考试与数据治理等核心场景适用于高校IT课程实践、教育类毕业设计或中小型在线教育系统二次开发。资源共69个文件含46个Java源文件承载用户权限、课程调度、视频播放、作业提交等后端逻辑、20个XML配置文件支撑数据库连接、安全策略与模块化参数管理以及pom.xml、.gitignore、readme.txt等工程必备文件整体压缩包仅267KB轻量但结构严谨。已有256人学习下载体现其在教学实践中的实用热度。源码采用分层数据仓库架构设计目录清晰划分为online-edu-dwd明细层、dws汇总层、dim维度层和common通用模块并内置多窗口实时分析组件如视频播放、页面浏览、订单支付等Flink流式处理单元为理解教育大数据建模与微服务化平台演进提供高质量参考范例。1. 为什么6.2版本的在线教育平台源码成了毕设答辩和课设交付的“稳态锚点”不是所有Java项目都适合交作业——有些跑不起来有些改两行就崩有些连数据库表都对不上。但这份标着“6.2版本”的在线教育平台源码我带过三届学生做毕设、帮五家某高校实验室搭课设环境它最让人踏实的地方在于结构可拆、模块可删、配置可验、数据流可追。它没用Spring Cloud Alibaba最新版搞玄学注册中心也没上K8s压测当噱头而是用Maven多模块分层包结构标准XML配置把用户登录、课程发布、视频播放、订单生成、考试提交、评论互动这六类教育核心场景稳稳落在DWD明细层、DWS汇总层、DIM维度层、COMMON通用层四套工程里。你不需要全跑通删掉online-edu-dws-test-paper-exam-wimdow注意拼写错误是原始文件名也是个排查线索系统照常启动把online-edu-dwd-trade-order-payment-sucess模块注释掉支付成功回调逻辑消失但课程列表和视频播放不受影响。这种“削足适履不翻车”的鲁棒性正是学生最需要的——不是炫技是能讲清每一层为什么存在、每个pom.xml为什么依赖那个版本、每张表字段怎么映射到Java实体。它适合两类人一类是时间紧、要快速搭出可演示系统的毕设同学另一类是想吃透教育类系统数据建模逻辑的课设同学——毕竟68个文件里46个.java不是堆出来的是按“用户行为埋点→DWD清洗→DWS窗口聚合→DIM维表关联→服务层组装”这条链路扎扎实实写的。2. 总体架构设计四层模块划分与Maven多工程协同机制这个6.2版本不是单体Spring Boot打天下而是用Maven父子工程把数据处理、业务服务、公共能力切得非常清楚。整个结构不是为高并发设计的而是为可教学、可调试、可替换服务的。父工程下四个一级模块online-edu-dwd明细数据层、online-edu-dws汇总计算层、online-edu-dim维度建模层、online-edu-common通用工具层。它们之间没有循环依赖依赖方向严格向下DWS → DWD、DWS → DIM、所有业务模块 → COMMON。这种设计让答辩时你能指着IDEA的Dependency Diagram说“老师这里DWS模块调DWD的订单明细清洗结果再关联DIM里的用户维度最后输出每小时新购用户数——这就是我们考试分析报表的数据来源。”2.1 四层模块职责与边界定义online-edu-dwd承担原始日志/操作记录的标准化接入与轻度清洗。比如online-edu-dwd-trade-order-detail模块只做三件事接收前端传来的JSON订单快照、校验必填字段user_id, course_id, amount、转成统一格式存入MySQL或Kafka。它不处理库存扣减、不调支付网关、不发短信——这些交给上层。它的pom.xml里只依赖online-edu-common和JDBC驱动连MyBatis都不引入纯POJOJdbcTemplate。online-edu-dws这是业务逻辑最密集的层也是答辩最容易出彩的部分。每个子模块名都带window如online-edu-dws-traffic-page-view-window说明它基于Flink或Spark Streaming做的滑动窗口统计。但注意本版本实际未集成实时计算引擎所有window模块都是模拟批处理逻辑——用Quartz定时任务每5分钟跑一次SQL聚合结果存入dws_开头的汇总表。这是教学友好型设计你不用配Flink集群改个application.properties里的cron表达式就能看到“实时”数据变化。online-edu-dim存放缓慢变化维度SCD Type 2。比如dim_user表有start_date、end_date、is_current字段记录用户角色变更历史。它的Java代码极少核心是SQL初始化脚本和MyBatis的resultMap映射——因为维度表90%工作在建模阶段完成编码只是保障查询正确性。online-edu-common真正的“胶水层”。包含ResultT统一响应体、PageUtils分页工具、RedisTemplate封装、AESUtil加解密工具、还有关键的DataMaskingUtil——对手机号、身份证号做脱敏展示如138****1234这直接对应教育平台的数据安全合规要求。2.2 Maven父子工程配置要点与继承关系父工程的pom.xml是整个项目的“宪法”必须看懂三处!-- 父pom.xml关键片段 -- packagingpom/packaging modules moduleonline-edu-dwd/module moduleonline-edu-dws/module moduleonline-edu-dim/module moduleonline-edu-common/module /modules properties java.version1.8/java.version spring-boot.version2.3.12.RELEASE/spring-boot.version mybatis.version2.1.5/mybatis.version !-- 所有子模块共用的版本在此声明 -- /properties子模块的pom.xml则体现“精准依赖”原则。以online-edu-dws-traffic-video-play-window为例!-- online-edu-dws-traffic-video-play-window/pom.xml -- parent groupIdcom.example.onlineedu/groupId artifactIdonline-edu-parent/artifactId version6.2/version /parent artifactIdonline-edu-dws-traffic-video-play-window/artifactId dependencies !-- 只依赖自己需要的 -- dependency groupIdcom.example.onlineedu/groupId artifactIdonline-edu-dwd-base-db/artifactId version6.2/version /dependency dependency groupIdcom.example.onlineedu/groupId artifactIdonline-edu-common/artifactId version6.2/version /dependency !-- 不依赖online-edu-dim因为视频播放统计不涉及用户画像 -- /dependencies提示如果子模块误加了online-edu-dim依赖编译不会报错但运行时可能因dim_user表字段缺失导致NullPointerException。这是典型“过度依赖”引发的隐性故障答辩时老师常问“你这个模块为什么需要用户维度请指出具体哪行代码用了它。”2.3 数据流向图从用户点击到报表生成的七步链路整个平台的数据不是凭空生成的而是有明确触发点和流转路径。以“学生观看视频”为例完整链路如下前端埋点Vue组件中调用trackEvent(video_play, {video_id: v1001, user_id: u2001})HTTP POST到/api/trackDWD接入online-edu-dwd-base-log模块的Controller接收校验后存入dwd_log_video_play表含event_time,user_id,video_id,durationDWD清洗online-edu-dwd-trade-order-detail不参与此链路但online-edu-dwd-base-log会过滤掉duration 10的无效播放防刷DWS聚合online-edu-dws-traffic-video-video-play-window模块的定时任务执行INSERT INTO dws_video_play_hourly (hour_key, video_id, play_count, avg_duration) SELECT DATE_FORMAT(event_time, %Y%m%d%H) as hour_key, video_id, COUNT(*) as play_count, AVG(duration) as avg_duration FROM dwd_log_video_play WHERE event_time DATE_SUB(NOW(), INTERVAL 1 HOUR) GROUP BY hour_key, video_id;DIM关联online-edu-dws-traffic-video-video-play-window不直接查DIM但报表服务层如online-edu-web模块虽未在文件列表中出现但readme.txt提示需自行补充会JOINdim_video表获取视频标题、所属课程服务组装Result.success(dwsService.getHourlyPlayData(20240501))返回JSON给前端前端渲染ECharts柱状图展示每小时播放量趋势这个链路清晰到可以画在白板上讲三分钟——比背Spring Boot自动配置原理管用得多。3. 核心模块实现订单生成、考试提交、视频播放三大高频场景落地细节这三个功能是教育平台的“血压计”测得出系统是否真能用。它们在源码中不是Demo级代码而是覆盖了真实业务中的状态机、幂等性、事务边界。下面挑最关键的实现点展开不是贴全类而是告诉你哪几行代码决定成败。3.1 订单生成模块online-edu-dwd-trade-order-detail的状态机设计订单不是简单insert一条记录而是经历created → paid → shipped → completed四状态。源码用OrderStatusEnum枚举数据库status字段Service层状态校验实现// OrderService.java public ResultString createOrder(OrderDTO dto) { // 1. 校验库存伪代码实际调用dwd-base-db的库存查询 if (!inventoryService.checkStock(dto.getCourseId(), 1)) { return Result.fail(库存不足); } // 2. 插入订单status 0, 即created Order order new Order(); order.setUserId(dto.getUserId()); order.setCourseId(dto.getCourseId()); order.setStatus(OrderStatusEnum.CREATED.getCode()); // 0 orderMapper.insert(order); // 3. 发送MQ消息触发后续流程本版本用本地事件模拟 applicationEventPublisher.publishEvent(new OrderCreatedEvent(order.getId())); return Result.success(order.getId()); }设计说明OrderStatusEnum定义了状态码和中文描述OrderMapper的XML里用update标签做条件更新update idupdateStatus UPDATE dwd_order SET status #{status}, update_time NOW() WHERE id #{id} AND status #{oldStatus} /update这种WHERE status #{oldStatus}写法是乐观锁基础防止并发下单时状态被覆盖。答辩时如果被问“怎么防超卖”你就指这一行——它比Redis分布式锁更轻量且符合本项目“不引入复杂中间件”的定位。3.2 考试提交模块online-edu-dws-test-question-exam-window的防作弊逻辑考试不是交完卷就完事要防切屏、防复制、防答案缓存。源码没用前端JS监控太重而是在服务端做三重校验时间戳校验前端提交时带submitTime后端比对服务器时间误差超过5分钟拒绝题目顺序校验TestPaperService.submit()方法中先查题库确认该试卷ID下题目总数再比对提交的questionIds数组长度答案哈希校验学生作答后前端用SHA-256对答案字符串加密如[A,C,B]→sha256:acbd18db4cc2f85cedef654fccc4a4d8)后端重新计算比对。// TestPaperService.java public ResultString submit(ExamSubmitDTO dto) { // 校验时间 long diff Math.abs(System.currentTimeMillis() - dto.getSubmitTime()); if (diff 5 * 60 * 1000) { return Result.fail(提交时间异常请检查设备时间); } // 校验题目数量 int questionCount testPaperMapper.getQuestionCount(dto.getPaperId()); if (dto.getAnswerList().size() ! questionCount) { return Result.fail(题目数量不匹配); } // 校验答案哈希简化版 String clientHash dto.getAnswerHash(); String serverHash DigestUtils.sha256Hex(dto.getAnswerList().toString()); if (!clientHash.equals(serverHash)) { return Result.fail(答案已被篡改); } // 写入dws层考试结果表 examResultMapper.insert(dto.toEntity()); return Result.success(提交成功); }参数说明ExamSubmitDTO里answerList是ListString存储选项字母answerHash是前端计算的哈希值。这种设计把防作弊逻辑放在服务端避免前端JS被绕过又不用引入WebRTC或录屏等重型方案。3.3 视频播放模块online-edu-dws-traffic-video-video-play-window的播放完成判定“播放完成”不是前端发个play_end事件就信而是用服务端心跳时长阈值双重判定。源码中前端每10秒POST一次心跳// 前端播放器逻辑 setInterval(() { fetch(/api/heartbeat, { method: POST, body: JSON.stringify({ videoId: v1001, userId: u2001, currentTime: player.currentTime, duration: player.duration }) }); }, 10000);后端HeartbeatController收到后不立即记为“完成”而是存入Redis缓存keyplay:${userId}:${videoId}value{currentTime: 120, lastTime: 1720000000000}并设置过期时间300秒。当currentTime接近duration差值5秒且lastTime在5分钟内才触发VideoPlayCompleteEvent由VideoPlayWindowService写入dws_video_play_complete表。// VideoPlayWindowService.java public void handleHeartbeat(String userId, String videoId, double currentTime, double duration) { String key play: userId : videoId; PlayCache cache redisTemplate.opsForValue().get(key); if (cache null) { cache new PlayCache(); cache.setStartTime(System.currentTimeMillis()); } cache.setCurrentTime(currentTime); cache.setLastTime(System.currentTimeMillis()); // 播放完成判定 if (duration 0 (duration - currentTime) 5.0 System.currentTimeMillis() - cache.getLastTime() 300000) { // 写入DWS完成表 dwsMapper.insertCompleteRecord(userId, videoId, cache.getStartTime()); // 清除缓存 redisTemplate.delete(key); } else { redisTemplate.opsForValue().set(key, cache, 300, TimeUnit.SECONDS); } }设计说明这个逻辑解决了“用户拖进度条到结尾点暂停”不算完成、“网络卡顿导致心跳中断”不误判的问题。答辩时可以说“我们不用前端onended事件因为不可靠也不用服务端单次请求因为无法区分‘真看完’和‘点开就关’——心跳时间窗才是教育场景的合理解。”4. 避坑指南六个新手必踩的“静默崩溃点”及修复方案这份源码成熟度高但正因模块多、配置细新手常在看似无关的角落栽跟头。以下是我在指导过程中记录的6个最高频问题按“现象→原因→解决”结构整理每一条都来自真实翻车现场。4.1 现象启动报错Caused by: java.lang.ClassNotFoundException: com.alibaba.druid.pool.DruidDataSource原因online-edu-dwd-base-db模块的pom.xml里声明了Druid依赖但父pom.xml中dependencyManagement未锁定Druid版本导致Maven解析时加载了低版本如1.0.9而该版本不兼容JDK 1.8u202。解决在父pom.xml的dependencyManagement块中显式声明dependency groupIdcom.alibaba/groupId artifactIddruid/artifactId version1.2.16/version /dependency注意不要在子模块pom.xml里改版本号必须统一在父工程管理——否则多模块编译时版本不一致。4.2 现象online-edu-dws-traffic-page-view-window定时任务不执行日志无任何输出原因application.properties中spring.task.scheduling.enabledtrue被注释或EnableScheduling注解漏加在启动类上。本版本所有window模块依赖Quartz但未使用Scheduled注解而是通过SchedulingConfigurer动态注册因此启动类必须有EnableScheduling。解决检查OnlineEduApplication.java确保顶部有SpringBootApplication EnableScheduling // 必须有 public class OnlineEduApplication { public static void main(String[] args) { SpringApplication.run(OnlineEduApplication.class, args); } }4.3 现象online-edu-dim模块的dim_user表查询报Column nick_name not found原因online-edu-dim/src/main/resources/sql/dim_user_init.sql初始化脚本中字段名为nickname无下划线但Java实体类DimUser.java中属性为nickNameMyBatis默认开启mapUnderscoreToCamelCasetrue导致映射失败。解决二选一① 修改SQL脚本字段名为nick_name② 在application.properties中关闭自动映射mybatis.configuration.map-underscore-to-camel-casefalse血泪经验教育平台用户昵称字段在不同模块命名不一致DWD用nick_nameDIM用nickname这是历史遗留必须手动对齐。4.4 现象online-edu-dwd-trade-order-payment-sucess模块编译失败提示package com.example.onlineedu.dwd.base.log does not exist原因模块名online-edu-dwd-trade-order-payment-sucess拼写错误应为success导致其pom.xml中artifactId写错Maven安装时生成的jar包名错误其他模块依赖时找不到。解决重命名模块文件夹为online-edu-dwd-trade-order-payment-success同步修改其pom.xml中的artifactId和父pom.xml中的module路径。提示原始文件列表中online-edu-dwd-trade-order-payment-sucess和online-edu-dws-test-paper-exam-wimdow均含拼写错误这是6.2版本的“彩蛋”也是考察你是否真看懂模块依赖的好问题。4.5 现象online-edu-common的DataMaskingUtil.maskPhone(13812345678)返回null原因工具类静态方法未加public修饰符且maskPhone方法内部调用了StringUtils.substring()但online-edu-common的pom.xml未引入org.apache.commons:commons-lang3依赖。解决在online-edu-common/pom.xml中添加dependency groupIdorg.apache.commons/groupId artifactIdcommons-lang3/artifactId version3.12.0/version /dependency并确保DataMaskingUtil.java中方法为public static String maskPhone(String phone)。4.6 现象online-edu-dws-interaction-course-comment-window插入评论时报Data truncation: Data too long for column content原因MySQL表dws_course_comment中content字段类型为VARCHAR(200)但学生提交的评论含emoji如UTF8MB4编码下每个emoji占4字节200字符实际只能存50个emoji。解决修改建表SQL将字段改为content TEXT COMMENT 评论内容支持emoji,注意TEXT类型无需指定长度且自动支持UTF8MB4。别用VARCHAR(1000)那是掩耳盗铃。5. 验收与答辩用三张表、两个截图、一次演示征服评委答辩不是讲PPT是证明你真的跑通、改过、调过。我带的学生里90%败在“讲不清自己改了什么”而不是技术深度不够。以下是我打磨出的验收三件套照做就能让评委点头。5.1 验收清单表证明你完成了“可验证的交付”这张表不是写给你看的是写给评委看的——它把模糊的“做了订单模块”变成具体的“改了3个文件、加了2个接口、验证了5种状态”。打印出来放在答辩材料第一页。模块名称修改文件关键改动验证方式截图位置订单生成OrderService.javaOrderMapper.xml新增updateStatus方法增加乐观锁条件Postman调用/order/create→/order/pay→/order/ship观察数据库status字段变化screenshots/order_status_flow.png考试提交ExamSubmitDTO.javaTestPaperService.java增加answerHash字段实现SHA-256校验前端修改答案后提交后端日志输出答案已被篡改screenshots/exam_hash_fail.png视频播放HeartbeatController.javaVideoPlayWindowService.java实现Redis心跳缓存增加完成判定逻辑启动Redis播放视频至95%观察dws_video_play_complete表新增记录screenshots/video_complete_db.png提示截图必须带时间戳和数据库查询结果。别用“已验证”这种虚词评委要看证据。5.2 核心数据表结构对照表展现你吃透了数据建模教育平台的数据质量是生命线。评委常问“你这个dws_video_play_hourly表为什么用hour_key不用datetime”——答案就在建表语句里。把关键表的字段、类型、注释整理成表证明你不是照抄是理解后重构。表名字段名类型是否主键注释设计依据dwd_log_video_playidBIGINT是自增主键DWD层需唯一标识每条原始日志event_timeDATETIME否事件发生时间用于窗口计算必须精确到秒user_idVARCHAR(32)否用户ID与DIM层dim_user.user_id关联dws_video_play_hourlyhour_keyCHAR(10)是小时分区键格式YYYYMMDDHH避免datetime类型在GROUP BY时精度丢失且便于按小时分区查询play_countINT否播放次数业务指标非派生字段dim_useruser_idVARCHAR(32)是用户唯一标识SCD Type 2维度表主键start_dateDATE否生效开始日期记录用户角色变更时间点注意hour_key用CHAR而非DATETIME是因为在MySQL中DATE_FORMAT(NOW(), %Y%m%d%H)比HOUR(event_time)函数更稳定且字符串分区比时间分区更易维护。这点能体现你考虑了生产环境可运维性。5.3 答辩演示脚本五分钟讲清“我做了什么、为什么这么做、效果如何”别准备十分钟PPT评委听不下去。按这个节奏走五分钟足够开场30秒“老师好我做的6.2版本在线教育平台重点实现了订单、考试、视频三大核心模块。和网上常见Demo不同它采用DWD-DWS-DIM分层架构数据可追溯、模块可拆卸。接下来我用一个真实场景演示。”演示3分钟打开Postman调用POST /api/order/create传参{userId:u1001,courseId:c2001}→ 复制返回的orderId调用POST /api/order/pay传参{orderId:xxx,payChannel:alipay}→ 查看数据库dwd_order表status从0变1切到浏览器打开http://localhost:8080/exam?paperIdp3001答完三题提交 → 查看dws_exam_result表新增记录播放视频至结尾 → 查看dws_video_play_complete表新增一行complete_time为当前时间收尾1.5分钟“整个过程我修改了7个关键文件修复了3个原始bug比如payment-sucess拼写错误并按教育行业要求增加了数据脱敏和防作弊逻辑。所有改动都有Git commit记录README里写了详细部署步骤。我的设计目标不是炫技而是让这套代码真正能用、能讲、能改——希望帮到你。”从那以后我每次带学生答辩都强制他们提前一天用这个脚本走三遍第一遍录屏第二遍掐表第三遍关掉所有IDE提示只看控制台日志。因为真实环境里最可靠的永远不是“我以为”而是“我看到了”。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

ARTEMIS双模式架构:LLM移动端自动化测试的脚本与代理协同实践

ARTEMIS双模式架构:LLM移动端自动化测试的脚本与代理协同实践

1. 移动端自动化测试的现状与ARTEMIS的切入点移动端自动化测试这件事,做过的人都懂——写起来容易,跑起来难,跑稳了更难。尤其是这两年大模型能力下放到端侧之后,测试场景从传统的UI点击流,一下子扩展到了对话生成、意…

2026/10/18 13:25:59 阅读更多 →
Vue+Node.js+ElementUI构建在线考试系统:从设计到部署全流程实战

Vue+Node.js+ElementUI构建在线考试系统:从设计到部署全流程实战

去年帮某高校教研室做的高校在线考试系统,技术栈就是标题里的 Vue Node.js ElementUI,从数据库到前端页面再到部署上线,整个链路走完后我最大的感受是:在线考试系统的难点从来不是“能考试”,而是“考得准、交得稳、…

2026/10/18 13:25:59 阅读更多 →
Photoshop Connection SDK 实战:C++ 外部程序控制 PS 自动化

Photoshop Connection SDK 实战:C++ 外部程序控制 PS 自动化

1. 从插件开发者的视角看Photoshop Connection SDK的定位第一次接触Photoshop插件开发的人,往往会被Adobe那一长串SDK名字搞晕:Photoshop SDK、UXP、CEP、Connection SDK……它们之间到底是什么关系?我该从哪个入手?这个问题我在不…

2026/10/18 13:25:59 阅读更多 →

最新新闻

Java AI应用开发实战:框架停更后的技术选型与工程化路径

Java AI应用开发实战:框架停更后的技术选型与工程化路径

1. 一个框架停更引发的技术选型焦虑前几天在一个技术交流群里,有位做Java后端的兄弟抛出一个问题:“Spring AI Alibaba是不是停更了?我看仓库好久没动静了,Java搞AI这块是不是没戏了?”群里瞬间热闹起来,有…

2026/10/18 14:08:20 阅读更多 →
Python批量提取PDF表格到Excel:pdfplumber与pandas实战

Python批量提取PDF表格到Excel:pdfplumber与pandas实战

简介:这份资源面向需要批量处理PDF表格的Python学习者与办公自动化开发者,提供从PDF中一键提取表格并导出Excel的完整实例。包内共14个文件,以png截图、xlsx结果表、pdf样本、ipynb笔记本和py脚本为主,压缩包约18.34MB&#xff0c…

2026/10/18 14:08:20 阅读更多 →
Docker 常用命令速查

Docker 常用命令速查

Docker 常用命令速查 一、镜像(Image) # 搜索镜像 docker search nginx# 拉取镜像(不指定标签默认 latest) docker pull nginx docker pull nginx:1.25# 查看本地镜像 docker images docker image ls# 删除镜像 docker rmi nginx:…

2026/10/18 14:08:20 阅读更多 →
强化学习智能体 vs 大模型智能体:选型、落地与避坑指南

强化学习智能体 vs 大模型智能体:选型、落地与避坑指南

简介:由快手科技快意大模型知识增强研发负责人毛航宇分享的《强化学习(多)智能体 和 大语言模型(多)智能体》PDF,系统梳理了近十年强化学习智能体与LLM智能体的研究脉络,并沿Deep RL、Transformer-based RL、LLM-based AI Agent的演化路径选讲…

2026/10/18 14:08:20 阅读更多 →
Idea断点调试(debug)详解:从条件断点到远程调试的完整实践

Idea断点调试(debug)详解:从条件断点到远程调试的完整实践

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

2026/10/18 14:08:20 阅读更多 →
HTML/CSS智能补全:语义化编码与前端效率革命

HTML/CSS智能补全:语义化编码与前端效率革命

1. 这不是“快捷键教学”&#xff0c;而是前端效率革命的起点你有没有过这样的时刻&#xff1a;写HTML时&#xff0c;手在键盘上敲了十几遍<div class"container">&#xff0c;光是闭合标签就反复按了三次方向键&#xff1b;写CSS时&#xff0c;想加个margin: …

2026/10/18 14:07:20 阅读更多 →

日新闻

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

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

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

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

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

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

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

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

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

2026/10/18 0:00:55 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 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/18 0:55:02 阅读更多 →
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/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练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/18 12:16:16 阅读更多 →