Java Web记单词网站:Servlet+JSP+MySQL教学级全栈实现
简介这是一套基于JavaWeb技术栈开发的背单词网站及配套安卓APP的完整源码项目面向Java初学者与Web开发练习者解决词汇记忆类应用从后端到前端、数据库到移动端的全链路实践需求。资源包含542个文件涵盖56个JAR依赖库、37个核心Java业务类、22个JSP页面、11个JS脚本、8个XML配置及SQL建库脚本等结构完整覆盖用户登录、单词库管理、发音调用、单词本增删改查等核心功能71.21MB压缩包内还集成恋恋有词2019版单词数据及HBuilder打包的WebAPP方案。已有839人学习下载提供可直接部署运行的Web工程含数据库脚本与详细实现原理说明适合JavaWeb课程设计、毕业设计或自学实战助开发者快速掌握MVC分层、JDBC操作、会话管理及网页转APP等关键技术点。1. 为什么一个“记单词网站”要从 Java Web 起手而不是直接上 VueSpring Boot这不是赶时髦而是踩过坑之后的硬选择。去年带某高校课程设计时A同学第一版用 Vue 前端 Node.js 后端搭了个单词打卡页界面漂亮、动画丝滑但一到“用户登录态持久化”“单词本数据跨设备同步”“离线缓存词库”这三关就卡死——Node 端没做事务控制MySQL 插入重复单词本记录Vue 的 localStorage 在安卓 WebView 里被 HBuilder 打包后清空过两次更麻烦的是导师答辩时现场要求演示“管理员后台批量导入新词表”他当场改接口、补路由、加权限校验写了半小时还没跑通。所以这套「Java 实现的记单词软件及网站」本质是一份面向教学交付与工程落地双目标的闭环方案它用最典型的 Java Web 技术栈Servlet JSP JDBC MySQL把“用户认证→词库管理→学习行为记录→前端交互→打包发布”全链路串成可调试、可截图、可答辩的实体。它不追求高并发或微服务但每一步都经得起提问“这个 session 是怎么销毁的”“这条 SQL 为什么加了 for update”“HBuilder 打包时 webview 加载失败日志在哪看”——你交上去的不是 Demo而是一份能回答所有基础问题的完整工程切片。适合正在做 JavaWeb 课设、毕设或需要快速搭建一个“有数据库、有登录、有业务逻辑、能真机运行”的教学级 Web 应用的同学。2. 总体架构设计B/S 架构下的四层职责划分与技术选型依据这套系统没有用 Spring Boot不是因为它不好而是因为教学场景下显式暴露每一层的衔接点比封装带来的便利更重要。学生需要看清 request 是怎么从浏览器进 Servlet 的response 是怎么被 JSP 解析成 HTML 的JDBC 的 Connection 是如何在 DAO 层被复用的。我们采用经典四层结构表现层JSP、控制层Servlet、业务层Service、数据访问层DAO各层之间通过接口契约通信避免强耦合。2.1 表现层JSP 原生 JavaScript Bootstrap 3.3.7不是为了怀旧而是为了可控。Bootstrap 提供了足够稳定的栅格、表单和模态框组件避免学生在 CSS 兼容性上浪费时间JSP 内置 EL 表达式和 JSTL 标签能直观展示“后端传来的 List 是怎么渲染成表格的”。关键交互如“点击发音按钮触发 TTS”不依赖第三方 SDK而是调用系统级 audio API!-- word_detail.jsp 中的发音按钮 -- button typebutton classbtn btn-sm btn-default onclickplayPronunciation(${word.phonetic}) span classglyphicon glyphicon-volume-up/span 发音 /button script function playPronunciation(phonetic) { // phonetic 是形如 ˈkæt 的字符串实际对应 /audio/cat.mp3 const audio new Audio(/audio/ phonetic.replace(/[^a-z]/g, ) .mp3); audio.play().catch(e console.warn(音频播放失败:, e)); } /script提示音频文件名必须严格小写、无标点否则 Android WebView 无法识别路径。replace(/[^a-z]/g, )是血泪经验——早期用encodeURIComponent编码后HBuilder 打包时会二次转义导致 404。2.2 控制层基于 HttpServlet 的请求分发中枢所有请求统一走DispatcherServlet按 URL pattern 分发到具体业务 Servlet。不使用注解式映射如WebServlet而是显式配置web.xml强制学生理解容器启动时的初始化顺序!-- web.xml 片段 -- servlet servlet-nameLoginServlet/servlet-name servlet-classcom.example.word.servlet.LoginServlet/servlet-class /servlet servlet-mapping servlet-nameLoginServlet/servlet-name url-pattern/login/url-pattern /servlet-mappingLoginServlet中的关键逻辑是 session 绑定与重定向判断// LoginServlet.java protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String username req.getParameter(username); String password req.getParameter(password); UserService userService new UserService(); User user userService.login(username, password); if (user ! null) { // 登录成功绑定用户信息到 session设置超时时间为30分钟 req.getSession().setAttribute(currentUser, user); req.getSession().setMaxInactiveInterval(30 * 60); // 秒为单位 // 重定向到首页避免表单重复提交 resp.sendRedirect(req.getContextPath() /index.jsp); } else { req.setAttribute(errorMsg, 用户名或密码错误); req.getRequestDispatcher(/login.jsp).forward(req, resp); } }这里setMaxInactiveInterval是必须显式设置的——很多学生默认认为 session 永不过期结果测试时发现登出后 5 分钟再操作session 已失效却没跳转登录页答辩时被问“你怎么保证用户安全退出”答不上来。2.3 业务层Service 接口抽象与事务边界定义UserService和WordService都定义为接口实现类UserServiceImpl和WordServiceImpl负责具体逻辑。重点在于事务控制所有涉及多表更新的操作如“加入单词本”需同时插入user_wordbook关联表和更新word表的review_count字段必须由 Service 方法统一包裹在 JDBC 事务中// WordServiceImpl.java public boolean addToWordbook(int userId, int wordId) { Connection conn null; PreparedStatement ps1 null; PreparedStatement ps2 null; try { conn JdbcUtils.getConnection(); conn.setAutoCommit(false); // 关键关闭自动提交 // 插入关联记录 ps1 conn.prepareStatement( INSERT INTO user_wordbook (user_id, word_id, add_time) VALUES (?, ?, NOW())); ps1.setInt(1, userId); ps1.setInt(2, wordId); ps1.executeUpdate(); // 更新单词复习次数 ps2 conn.prepareStatement( UPDATE word SET review_count review_count 1 WHERE id ?); ps2.setInt(1, wordId); ps2.executeUpdate(); conn.commit(); // 显式提交 return true; } catch (SQLException e) { if (conn ! null) { try { conn.rollback(); } catch (SQLException ignored) {} } e.printStackTrace(); return false; } finally { JdbcUtils.close(ps1, ps2, conn); } }注意JdbcUtils是自封装的工具类负责从context.xml读取连接池配置Tomcat JNDI不是DriverManager.getConnection()。这是为后续升级到 Druid 或 HikariCP 留出接口也是答辩常考点“如果换成 Druid 连接池你改哪几个文件”2.4 数据访问层DAO 接口 JDBC 原生实现DAO 层只做单表 CRUD不处理关联逻辑。例如WordDAO只负责word表的查询UserWordbookDAO负责user_wordbook表。这种拆分让代码职责清晰也方便单元测试——你可以单独 mockWordDAO测试WordService的业务逻辑而不必启动整个 Web 容器。WordDAOImpl中的分页查询是高频需求必须支持关键词模糊搜索 按复习次数排序// WordDAOImpl.java public ListWord findWordsByKeyword(String keyword, int offset, int limit) { String sql SELECT id, word, translation, phonetic, example, review_count FROM word WHERE word LIKE ? OR translation LIKE ? ORDER BY review_count DESC, id ASC LIMIT ?, ?; ListWord words new ArrayList(); try (Connection conn JdbcUtils.getConnection(); PreparedStatement ps conn.prepareStatement(sql)) { String likeParam % keyword %; ps.setString(1, likeParam); ps.setString(2, likeParam); ps.setInt(3, offset); ps.setInt(4, limit); try (ResultSet rs ps.executeQuery()) { while (rs.next()) { Word word new Word(); word.setId(rs.getInt(id)); word.setWord(rs.getString(word)); word.setTranslation(rs.getString(translation)); word.setPhonetic(rs.getString(phonetic)); word.setExample(rs.getString(example)); word.setReviewCount(rs.getInt(review_count)); words.add(word); } } } catch (SQLException e) { e.printStackTrace(); } return words; }参数offset和limit由 Servlet 层根据当前页码计算传入避免在 DAO 层做分页逻辑判断——这是学生最容易写的反模式“DAO 里写 if(page1)…else…”。3. 核心功能模块实现从单词库加载到安卓打包的全流程闭环这个模块不是罗列功能点而是还原一个真实开发节奏先让词库跑起来再加用户体系最后打通移动端。每一步都对应可截图、可演示、可 debug 的交付物。3.1 单词库初始化SQL 脚本 Java 批量导入双保障项目附带的word_data.sql不是简单INSERT INTO而是包含ENGINEInnoDB CHARSETutf8mb4声明并预先建好联合索引-- word_data.sql 片段 CREATE TABLE word ( id int(11) NOT NULL AUTO_INCREMENT, word varchar(50) NOT NULL, translation text NOT NULL, phonetic varchar(100) DEFAULT NULL, example text, review_count int(11) DEFAULT 0, PRIMARY KEY (id), KEY idx_word_trans (word(20), translation(20)) -- 支持前缀模糊查 ) ENGINEInnoDB DEFAULT CHARSETutf8mb4;但仅靠 SQL 文件不够——学生常遇到“导入后中文乱码”“字段长度超限报错”。因此配套提供DataImportTool.java用 Java 读取 CSV 格式的《恋练有词》词库UTF-8 编码逐行解析并插入过程中做字段截断与空值替换// DataImportTool.java public static void importFromCsv(String csvPath) { try (BufferedReader reader Files.newBufferedReader(Paths.get(csvPath), StandardCharsets.UTF_8)) { String line; int count 0; while ((line reader.readLine()) ! null) { String[] fields line.split(\t); // 制表符分隔 if (fields.length 3) continue; String word fields[0].trim(); String trans fields[1].trim().length() 500 ? fields[1].trim().substring(0, 499) : fields[1].trim(); String phonetic fields.length 2 ? fields[2].trim() : ; // 插入逻辑省略 count; } System.out.println(成功导入 count 条单词记录); } catch (IOException e) { e.printStackTrace(); } }注意StandardCharsets.UTF_8必须显式指定否则 Windows 下默认 GBK 读取会乱码substring(0,499)是为防止translation字段超长导致 SQL 异常——这是数据库设计与 Java 代码的协同防御。3.2 用户体系Session Cookie 登录态校验三重网登录不是终点而是所有受保护资源的起点。系统对/user/*路径下的所有 Servlet 和 JSP 做统一拦截// AuthFilter.java public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException { HttpServletRequest request (HttpServletRequest) req; HttpServletResponse response (HttpServletResponse) resp; HttpSession session request.getSession(false); User user session ! null ? (User) session.getAttribute(currentUser) : null; if (user null request.getRequestURI().contains(/user/)) { // 未登录且访问用户资源重定向到登录页并携带原请求地址 String originalUrl request.getRequestURL().toString(); response.sendRedirect(request.getContextPath() /login.jsp?redirect URLEncoder.encode(originalUrl, UTF-8)); return; } chain.doFilter(req, resp); }login.jsp中的redirect参数在登录成功后被取出用于跳转回原页面而非固定首页——这是提升用户体验的关键细节也是答辩加分项“您怎么解决用户登录后回到刚才操作页的需求”3.3 单词本功能关联表设计与实时同步策略user_wordbook表设计为复合主键避免重复添加同一单词CREATE TABLE user_wordbook ( user_id int(11) NOT NULL, word_id int(11) NOT NULL, add_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (user_id, word_id), KEY fk_word_id (word_id), CONSTRAINT fk_user_id FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE CASCADE, CONSTRAINT fk_word_id FOREIGN KEY (word_id) REFERENCES word (id) ON DELETE CASCADE ) ENGINEInnoDB DEFAULT CHARSETutf8mb4;前端“加入单词本”按钮点击后AJAX 请求AddToWordbookServlet返回 JSON 结果// index.jsp 中的 AJAX 调用 function addToWordbook(wordId) { fetch(/addToWordbook?wordId wordId, { method: POST, headers: { X-Requested-With: XMLHttpRequest } }) .then(r r.json()) .then(data { if (data.success) { alert(已加入单词本); // 实时更新按钮状态避免重复点击 document.getElementById(btn- wordId).disabled true; document.getElementById(btn- wordId).innerText 已收藏; } else { alert(加入失败 data.msg); } }); }提示X-Requested-With头用于后端区分 AJAX 请求与普通请求AddToWordbookServlet中据此返回 JSON 或跳转——这是前后端分离思想的轻量实践不引入框架也能做到。3.4 安卓打包HBuilder X 的配置要点与 WebView 兼容性修复HBuilder 打包不是一键生成而是三步验证静态资源路径修正将 JSP 中所有/css//js//audio/路径改为相对路径./css/./js/./audio/否则打包后资源 404WebView 初始化配置在manifest.json中开启Webview的allowFileAccess和domStorageEnabledplus: { webview: { allowFileAccess: true, domStorageEnabled: true } }音频播放兜底方案Android 9 默认禁用file://协议加载本地音频因此playPronunciation()函数需增加判断function playPronunciation(phonetic) { const audioName phonetic.replace(/[^a-z]/g, ); const audioPath file:///android_asset/www/audio/ audioName .mp3; const audio new Audio(audioPath); audio.play().catch(e { // 回退到 base64 内嵌仅限极短音频此处不启用仅作预案说明 console.warn(file 协议失败尝试其他方案); }); }打包后必须真机测试华为/小米/OPPO 各一台重点看localStorage是否持久、fetch请求是否被拦截、audio.play()是否静音部分机型需用户首次触摸后才允许播放。4. 避坑指南这 4 个点踩中任意一个答辩前 2 小时必翻车这些不是理论风险而是我在三次课程设计辅导中学生在答辩前夜集中爆发的问题。每一条都对应可复现的现象、明确的原因定位方法、以及一行代码/一个配置就能解决的方案。4.1 现象登录后跳转首页但导航栏“我的单词本”始终显示 0 条F12 查看 Network 发现/user/wordbook接口返回 404原因web.xml中servlet-mapping的url-pattern写成了/user/wordbook但WordbookServlet的doGet方法里写的是request.getRequestDispatcher(/user/wordbook.jsp).forward(...)而wordbook.jsp实际放在WebContent/user/目录下路径不匹配。更隐蔽的是Tomcat 7 会静默忽略错误Tomcat 8 则直接 404。解决统一路径风格。推荐全部用/user/wordbook作为对外 URLWordbookServlet中forward到/user/wordbook.jsp并在web.xml中确保url-pattern/user/wordbook/url-pattern与之完全一致。检查方式直接浏览器访问http://localhost:8080/yourapp/user/wordbook看是否能打开空白 JSP。4.2 现象HBuilder 打包 APK 后安卓 10 设备上点击发音按钮无反应Logcat 显示E/chromium: [ERROR:filesystem_delegate.cc(22)] Could not open file原因Android 10 引入 Scoped Storagefile:///android_asset/路径在 WebView 中被限制。HBuilder 默认生成的assets目录结构是assets/www/audio/但file:///android_asset/www/audio/中的www是多余的。解决修改HBuilderX项目根目录下的unpackage/dist/build/android/res/raw/或assets/路径将音频文件直接放在assets/audio/下然后 JS 中路径改为file:///android_asset/audio/ audioName .mp3。验证方式用adb shell ls /data/app/xxx/assets/确认文件存在。4.3 现象MySQL 导入word_data.sql后中文显示为???且SELECT查询结果中translation字段全是问号原因三个环节脱节① MySQL 服务器默认字符集是latin1②my.cnf中未配置default-character-set utf8mb4③context.xml中 JDBC URL 缺少useUnicodetruecharacterEncodingutf8mb4参数。解决四步到位修改 MySQL 配置文件my.cnf在[mysqld]下加character-set-server utf8mb4重启 MySQL重建数据库CREATE DATABASE worddb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;context.xml中 JDBC URL 改为jdbc:mysql://localhost:3306/worddb?useUnicodetruecharacterEncodingutf8mb4serverTimezoneAsia/Shanghai4.4 现象AddToWordbookServlet返回{success:true}但数据库user_wordbook表无新增记录且review_count未增加原因WordServiceImpl.addToWordbook()方法中conn.setAutoCommit(false)后conn.commit()被异常吞掉但conn.rollback()没执行导致连接处于“半提交”状态下次获取连接时复用该连接事务混乱。解决在finally块中必须检查conn ! null conn.getAutoCommit() false再决定是否rollback()} finally { if (conn ! null !conn.getAutoCommit()) { try { conn.rollback(); } catch (SQLException ignored) {} } JdbcUtils.close(ps1, ps2, conn); }验证方式在commit()前加System.out.println(即将提交)在rollback()前加System.out.println(执行回滚)观察控制台输出。5. 答辩验收 checklist从环境部署到功能演示的 7 个必过节点答辩不是讲 PPT而是现场操作。老师最常做的三件事① 让你现场部署② 随机点一个功能说“你演示下这个怎么工作的”③ 看一眼代码问“这里为什么要这么写”。下面这份 checklist是我带过的 12 个小组总结出的“只要做完就稳过”的实操路径。每个节点都对应一个可截图、可录屏、可解释的技术动作。5.1 环境部署3 分钟内完成 Tomcat MySQL 项目部署这是第一关卡住很多人。不要等答辩当天才配环境。提前准备好一份deploy_guide.txt内容精简到只留命令# 1. 启动 MySQL确认已建库、用户、授权 mysql -u root -p -e CREATE DATABASE worddb CHARACTER SET utf8mb4; # 2. 导入数据假设 sql 文件在 D:\data\word_data.sql mysql -u root -p worddb D:\data\word_data.sql # 3. 启动 Tomcat确认 server.xml 中 Connector port8080 D:\apache-tomcat-8.5.99\bin\startup.bat # 4. 部署 WAR将项目导出为 wordapp.war丢进 webapps 目录 # 等待控制台输出 Deployment of web application archive [...] has finished关键技巧Tomcat 启动后立刻打开http://localhost:8080/manager/html输入tomcat/tomcat默认账号确认wordapp状态为running。这是老师验证“你真部署成功了”的铁证——比你说“我配好了”管用十倍。5.2 功能演示按“用户流”而非“菜单流”组织演示逻辑不要说“我有五个菜单栏”要说“一个用户从注册到复习的完整旅程”。我建议按以下顺序演示每步控制在 40 秒内步骤操作截图重点老师可能问1打开http://localhost:8080/wordapp/register.jsp填test123/123456注册注册成功提示 数据库user表新增记录“注册时密码怎么加密的” → 答“本次未加密但预留了PasswordEncoder接口可扩展 SHA-256”2登录后搜索“cat”点击结果行右侧“加入单词本”Network 面板显示addToWordbook?wordId123返回{success:true}“怎么防止重复添加” → 答“user_wordbook表主键是(user_id,word_id)数据库级唯一约束”3点击顶部“我的单词本”查看列表表格显示单词、释义、添加时间右上角计数器同步更新“单词本数据怎么分页” → 答“WordbookServlet从 URL 取page1计算offset(page-1)*10传给 DAO”4点击单词行的“发音”按钮Chrome DevTools 的 Console 输出音频播放失败故意触发然后切到安卓真机演示成功播放“Web 和 App 音频路径为什么不同” → 答“Web 用相对路径App 用file:///android_asset/协议HBuilder 自动映射”血泪经验演示前务必清空浏览器缓存和localStorage否则老师点“退出登录”后还能看到单词本——他会认为你没做 session 销毁。5.3 代码抽查聚焦 3 个核心文件的 5 行关键代码老师不会翻你全部代码但一定会打开这三个文件问其中五行。提前准备好解释话术web.xml第 32 行filter-mapping对应AuthFilter解释“为什么不用 Spring Security” → “教学目标是理解 Filter 生命周期doFilter中的chain.doFilter就是责任链模式的体现”WordDAOImpl.java第 88 行ps.setString(1, likeParam)解释“为什么用LIKE ?而不是字符串拼接” → “防止 SQL 注入?占位符由 JDBC 驱动做预编译 or 11会被当作文本字面量”JdbcUtils.java第 45 行return (DataSource) ctx.lookup(java:comp/env/jdbc/worddb)解释“JNDI 是什么” → “Tomcat 提供的资源查找机制把数据库连接池配置从代码移到context.xml解耦且安全”。5.4 数据库验证用一条 SQL 证明数据一致性老师可能让你现场连 MySQL执行一条语句验证“用户、单词、单词本”三表关联正确-- 查看用户 test123 的单词本详情含单词原文和释义 SELECT u.username, w.word, w.translation, ub.add_time FROM user u JOIN user_wordbook ub ON u.id ub.user_id JOIN word w ON ub.word_id w.id WHERE u.username test123 ORDER BY ub.add_time DESC LIMIT 5;预期结果返回 5 行username全是test123word和translation与网页显示一致。如果为空说明user_wordbook外键没生效如果word为 NULL说明JOIN条件写错。5.5 安卓真机演示必须覆盖启动、登录、查词、发音四步HBuilder 打包的 APK 必须在真机安装不能只用模拟器。重点演示启动速度从点击图标到首页加载完成 ≤ 3 秒优化点index.jsp中 JS/CSS 合并压缩图片用 WebP登录态保持退出 App 后 5 分钟内再次打开仍显示“欢迎回来test123”验证localStorage持久化查词响应输入“apple”后列表秒出且高亮匹配项mark标签实现发音可靠性连续点击 3 次“发音”每次都有声音验证Audio对象未被 GC且无Promise拒绝未捕获。避坑提醒华为手机需在“应用启动管理”中将你的 App 设置为“允许后台活动”否则切到微信再切回来WebView 会被系统回收。5.6 文档交付答辩材料包必须含这 4 个文件你交的不是代码而是一套可追溯、可复现的交付物。缺一不可文件名格式必含内容作用README.mdMarkdown项目简介、环境要求JDK8、Tomcat8、MySQL5.7、部署步骤、功能列表让老师 30 秒看懂你是谁database_design.pngPNGER 图标出user、word、user_wordbook三张表及外键关系证明你懂数据库设计api_list.xlsxExcel列出所有 Servlet URL、请求方法、参数、返回示例如/login POST usernametestpassword123 → 302 redirect体现前后端协作意识debug_log.txtTXT复制一次完整部署过程中的 Tomcat 控制台日志含INFO: Server startup in和INFO: Deployment of web application证明你真跑起来了5.7 答辩话术用“我做了什么 为什么这么做 如果升级怎么做”闭环回答老师问“为什么用 JSP 不用 Thymeleaf”别答“因为老师要求”用三层结构回答做了什么“我用 JSP JSTL 实现了首页单词列表渲染c:forEach items${wordList} varw直观展示数据流转”为什么这么做“教学目标是理解 MVC 中 View 层如何接收 ModelJSP 的 EL 表达式${w.word}比 Thymeleaf 的th:text${w.word}更贴近 Servlet 规范且无需额外依赖”如果升级怎么做“如果项目要迭代我会抽离 JSP 为 Vue 组件用 Axios 调用 RESTful API后端改用 Spring Boot 暴露/api/words接口这样前后端彻底分离”。从那以后我每次带学生做 JavaWeb 项目都强制他们在README.md里写清楚“本项目不做什么”比如“本项目不实现单词记忆算法如艾宾浩斯不接入第三方词典 API不支持多语言界面”。划清边界才能把有限精力砸在真正要考核的点上——session 管理、事务控制、路径配置、真机兼容。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

软件开发合同避坑指南:从条款拆解到自动化排期与验收

软件开发合同避坑指南:从条款拆解到自动化排期与验收

简介:这份软件开发合同文档面向需要签订或参考软件委托开发协议的甲方客户、乙方开发团队及法务人员,用于规范会员积分制刷卡消费管理系统、公司宣传网站、微信公共服务平台、店铺零售结算系统等多模块项目的合作流程。资源包内含1个doc文件,…

2026/10/18 4:43:33 阅读更多 →
《离线AI安卓APP》附录 A 零基础补课:读这本书之前,你需要知道的

《离线AI安卓APP》附录 A 零基础补课:读这本书之前,你需要知道的

这个附录是给谁的 如果你看到下面这些话里有任何一个不懂,就该读这个附录: “变量”、“函数”、"循环"是什么?命令行怎么用?cd 是什么意思?为什么路径有 D:\ 和 / 两种写法?为什么书里说 0x47&a…

2026/10/18 4:43:33 阅读更多 →
AI视频SOP平台:让车间工艺标准从纸面落到指尖

AI视频SOP平台:让车间工艺标准从纸面落到指尖

今年以来我在工业现场跑了七八个车间,从汽配加工到食品包装都转过一圈。聊到一个共同痛点:车间里的工艺标准,到底是靠老师傅口口相传,还是靠那一摞落灰的纸质SOP文件?正好这段时间不少同行在讨论“JBoltAI视频SOP平台”…

2026/10/18 4:43:33 阅读更多 →

最新新闻

律所案件管理系统设计与落地:角色权限、流程引擎与文书协同实践

律所案件管理系统设计与落地:角色权限、流程引擎与文书协同实践

1. 这个系统到底在解决什么问题做律师的朋友应该都有过这种体验:一个案子从收到材料到最终归档,中间要经过立案、排期、取证、文书起草、审核、盖章、送达、开庭、归档这么一串流程。传统做法是什么?微信群接龙、Excel表格、共享文件夹、Outl…

2026/10/18 5:36:42 阅读更多 →
YOLO固定翼无人机检测数据集实战:从目录结构到训练避坑指南

YOLO固定翼无人机检测数据集实战:从目录结构到训练避坑指南

简介:面向固定翼无人机视觉检测任务,这份YOLO格式数据集包含数百张真实场景图片,已按mq-20-drone单类别完成标注,适用于yolov5、yolov7、yolov8等主流目标检测算法。数据集目录已预先划分好train、val、test集合,并附带…

2026/10/18 5:36:42 阅读更多 →
基于UDP的自定义Socket封装:设计思路与踩坑实录

基于UDP的自定义Socket封装:设计思路与踩坑实录

做网络传输相关项目的时候,UDP往往是绕不开的一个选项。它比TCP轻量、不维持连接状态、没有握手过程,天然适合实时音视频、游戏同步、设备状态上报这类场景。可UDP真正用起来之后你就会发现,原生Socket虽然几行代码就能把数据发出去&#xff…

2026/10/18 5:36:42 阅读更多 →
无人机频射信号检测:YOLOv5目标检测实战与数据集解析

无人机频射信号检测:YOLOv5目标检测实战与数据集解析

简介:面向无人机频射信号检测与识别任务,这份数据集包含364张原始图像及配套的yolov5格式标注txt文件,平均正确识别率达到94.3%,适用于基于目标检测框架的模型训练与算法验证。资源包共729个文件,以jpg图像和txt标签为…

2026/10/18 5:36:42 阅读更多 →
2026年AI模型API聚合服务实力横评:词元之河与硅基流动的稳定性与落地适配对比

2026年AI模型API聚合服务实力横评:词元之河与硅基流动的稳定性与落地适配对比

中小技术团队部署大模型应用,普遍要过三道坎:其一,境外模型直连受网络策略、IP 信誉与额度审批限制,平均开通要等好几个工作日;其二,国产模型协议碎片化,Qwen、GLM、DeepSeek、Claude 各家的字段…

2026/10/18 5:36:42 阅读更多 →
GPS+INS组合导航:惯导漂移、误差状态卡尔曼滤波与工程避坑指南

GPS+INS组合导航:惯导漂移、误差状态卡尔曼滤波与工程避坑指南

简介:面向组合导航学习与研究者的Matlab实现资源,重点解决GPS信号在高楼密集区、树林或电磁干扰下易丢失,而惯导系统误差随运行时间不断累积的问题,通过两者优势互补实现连续稳定的高精度导航。资源适合导航专业学生、算法工程师及…

2026/10/18 5:35:42 阅读更多 →

日新闻

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

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

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

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

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

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

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

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

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

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

周新闻

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

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

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

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

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

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

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

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

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在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/16 14:23:36 阅读更多 →