JavaWeb图书管理系统实战源码:MySQL8+Tomcat9一键运行指南
简介本资源是一套高分通过的JavaWeb课程设计项目——图书管理系统面向计算机专业本科生及Java初学者用于完成课程实践、毕业设计参考或Web开发入门训练。系统采用JSPServletMySQL技术栈实现涵盖用户管理、图书增删改查、借阅记录等核心功能代码结构清晰、注释完整部署后可直接运行。压缩包共352个文件包含37个Java源码、91个class字节码、91个依赖jar包、41个Excel模板用于数据导入导出、14个HTML页面、13个CSS与12个JS前端资源以及5个SQL建表与初始化脚本整体大小64.65MB。已有448人学习下载资源附带完整数据库脚本与Excel操作工具类如BookInfoExcelOperate、UserInfoOperate等便于理解业务逻辑与数据交互流程特别适合掌握MVC分层开发与前后端协同实践。1. 这不是“又一个图书管理系统”它是一份能跑通、能调试、能交差、还能当面试敲门砖的 JavaWeb 实战压缩包你搜“JavaWeb 图书管理系统 源码”页面刷出几百个标题带“95分以上”“课程设计”“含数据库”的 ZIP 包——但点开后八成是空文件夹、乱码 SQL、IDEA 里红标满屏、Tomcat 启动报ClassNotFoundException: com.mysql.cj.jdbc.Driver或者更玄学的登录页能打开一点击“借阅”就 404后台日志连 ERROR 都不打。这不是你代码写得差而是这类课程设计源码普遍卡在三个致命断层环境没对齐、数据库没初始化、MVC 路径没闭环。这个.zip文件之所以被标注“95分以上”核心不在功能多炫而在于它把这三道坎全踩实了MySQL 8.0 兼容驱动已内嵌、建库建表 SQL 带注释和字符集声明、Servlet 映射用WebServlet注解web.xml双保险、JSP 页面用 JSTL 标准标签而非脚本片段硬编码。它适合两类人一是大二大三正在赶课设 deadline 的同学需要一份能本地一键启动、改个端口就能交、答辩时能现场演示增删改查全流程的底稿二是刚学完 Servlet/JSP 想补实战的转行者用它反向拆解“一个真实 Web 请求从 URL 到数据库再回显到页面”的完整链路——不是看教程里的 Hello World而是 debug 一个真实的BookServlet.doPost()里request.getParameter(isbn)为什么取不到值。2. 从解压到首页四步走通本地运行闭环含 IDEA Tomcat 10.1 配置细节2.1 解压后先认清目录结构别急着 run先看懂“谁管什么”解压后你会看到典型三层结构book-system/ ├── src/ # Java 源码根目录含 servlet、dao、bean、util │ ├── main/ │ │ ├── java/ │ │ │ └── com/example/book/ # 主包名注意不是 com.book 或 cn.xxx │ │ │ ├── servlet/ # 所有 Servlet 类BookServlet.java, LoginServlet.java │ │ │ ├── dao/ # 数据访问层BookDao.java, UserDao.java │ │ │ ├── bean/ # 实体类Book.java, User.java含 getter/setter 和 toString() │ │ │ └── util/ # 工具类DBUtil.java 封装连接池PageUtil.java 分页 │ │ └── resources/ │ │ └── db.properties # 数据库配置重点后面要改 │ └── webapp/ │ ├── WEB-INF/ │ │ ├── web.xml # 传统部署描述符即使用了注解也保留兼容性兜底 │ │ └── lib/ # 依赖 JARmysql-connector-java-8.0.33.jar关键非 5.x │ ├── index.jsp # 首页欢迎页未登录跳转至此 │ ├── login.jsp # 登录页含 form action/login │ ├── admin/ # 后台管理目录含 book-list.jsp, book-add.jsp │ └── css/js/images/ # 静态资源Bootstrap 4.6 jQuery 3.6 └── sql/ └── book_db.sql # 完整建库建表语句含 utf8mb4 字符集、InnoDB 引擎提示src/main/java是 Maven 标准结构但本项目未用 pom.xml所以不要在 IDEA 里选 “Import project as Maven”否则会找不到依赖。直接选 “Open as Project”。2.2 数据库准备用book_db.sql创建库但必须改三处字符集别直接双击运行 SQL 文件MySQL 8.0 默认utf8mb4而旧版 JDBC 驱动或某些客户端可能默认utf8实际是utf8mb3导致中文存入乱码或插入失败。打开sql/book_db.sql找到建库语句CREATE DATABASE book_db CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;确认这行存在95分版本通常已修正。接着检查建表语句中每张表的ENGINEInnoDB DEFAULT CHARSETutf8mb4;——必须是utf8mb4不是utf8。然后执行# 在 MySQL 命令行或 Workbench 中执行 source /path/to/book-system/sql/book_db.sql;执行后验证USE book_db; SHOW CREATE TABLE t_book; -- 看 charset 是否为 utf8mb4 SELECT character_set_database, collation_database; -- 应为 utf8mb4 和 utf8mb4_0900_ai_ci2.3 IDEA 配置 Tomcat 10.1避开 Servlet API 版本冲突雷区本项目基于 Servlet 4.0对应 Tomcat 9但 Tomcat 10.1 默认使用 Jakarta EE 9 命名空间jakarta.servlet.*而源码里仍是javax.servlet.*。必须降级到 Tomcat 9.0.87 或 10.0.x10.0.x 仍兼容 javax。推荐用 Tomcat 9.0.87稳定、广泛支持下载 Tomcat 9.0.87 zip 包非 exeIDEA → File → Project Structure → Artifacts → 点击→ Web Application: Exploded → From modules → 选中你的 moduleRun → Edit Configurations → → Tomcat Server → Local → Configure → Application server → 选中你解压的 Tomcat 9 目录Deployment → → Artifact → 选book-system:war exploded关键一步在 VM options 里加-Dfile.encodingUTF-8解决 JSP 中文乱码启动前检查Project SDK 设为 JDK 8 或 11本项目未用 JDK 17 新特性Language level 选 82.4 启动前必改db.properties三处填错整个系统静默失败src/main/resources/db.properties是数据库连接命脉共 4 行必须逐字核对drivercom.mysql.cj.jdbc.Driver urljdbc:mysql://localhost:3306/book_db?useUnicodetruecharacterEncodingutf8mb4serverTimezoneAsia/ShanghaiallowPublicKeyRetrievaltrueuseSSLfalse usernameroot password123456 # 注意这里不是空密码很多同学卡在这driver必须是com.mysql.cj.jdbc.DriverMySQL 8不是com.mysql.jdbc.Driver5.xurlserverTimezoneAsia/Shanghai不可省略否则java.sql.SQLException: The server time zone value ... is unrecognizeduseSSLfalse关闭 SSL本地开发无需username/password填你本地 MySQL 的真实账号密码。若用 root 且无密码password后留空但等号不能删改完保存启动 Tomcat。浏览器访问http://localhost:8080/应看到首页输入账号admin密码123456默认管理员登录进入后台——此时才算真正跑通。3. 拆解核心链路从login.jsp提交到LoginServlet处理的完整请求流3.1 前端表单如何精准命中 Servlet看web.xml与注解的双重绑定login.jsp中关键代码form actionlogin methodpost input typetext nameusername required input typepassword namepassword required button typesubmit登录/button /form注意actionlogin是相对路径不是/login。它如何匹配到LoginServlet答案在两处src/main/webapp/WEB-INF/web.xml中声明servlet servlet-nameLoginServlet/servlet-name servlet-classcom.example.book.servlet.LoginServlet/servlet-class /servlet servlet-mapping servlet-nameLoginServlet/servlet-name url-pattern/login/url-pattern /servlet-mappingLoginServlet.java类上注解WebServlet(/login) public class LoginServlet extends HttpServlet { ... }二者并存的意义web.xml是传统部署方式WebServlet是 Servlet 3.0 注解式配置。本项目采用“双保险”——即使某 IDE 忽略注解web.xml仍能兜底反之亦然。当你修改 URL 映射时必须同步改两处否则出现 404。3.2LoginServlet如何查库并跳转DBUtil连接池与RequestDispatcher的协作逻辑LoginServlet.doPost()核心流程protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username request.getParameter(username); // 从表单取值 String password request.getParameter(password); UserDao userDao new UserDao(); // 实例化 DAO User user userDao.login(username, password); // 调用 DAO 方法 if (user ! null) { request.getSession().setAttribute(user, user); // 登录成功存 session request.getRequestDispatcher(/admin/index.jsp).forward(request, response); // 转发到后台首页 } else { request.setAttribute(msg, 用户名或密码错误); // 错误信息存 request request.getRequestDispatcher(/login.jsp).forward(request, response); // 转回登录页 } }UserDao.login()内部调用DBUtil.getConnection()获取连接执行预编译 SQLSELECT * FROM t_user WHERE username? AND password?密码明文存储课程设计可接受生产环境必须加密request.getRequestDispatcher(...).forward(...)是服务器端跳转URL 不变且能传递request.setAttribute的数据如msg而response.sendRedirect(...)是客户端重定向URL 改变request属性丢失。3.3BookServlet的 CRUD 如何实现request.getParameter()的边界陷阱以添加图书为例book-add.jsp表单提交到/bookPOST// BookServlet.java protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding(UTF-8); // 必须否则中文参数乱码 String isbn request.getParameter(isbn); String title request.getParameter(title); String author request.getParameter(author); String priceStr request.getParameter(price); // 参数校验课程设计常忽略但实际必须 if (isbn null || isbn.trim().isEmpty() || title null || title.trim().isEmpty()) { request.setAttribute(msg, ISBN 和书名不能为空); request.getRequestDispatcher(/admin/book-add.jsp).forward(request, response); return; } double price Double.parseDouble(priceStr); // 简单转换无异常处理需补 try-catch Book book new Book(); book.setIsbn(isbn); book.setTitle(title); book.setAuthor(author); book.setPrice(price); BookDao bookDao new BookDao(); boolean success bookDao.add(book); // 执行 INSERT if (success) { response.sendRedirect(request.getContextPath() /book?actionlist); // 重定向避免重复提交 } else { request.setAttribute(msg, 添加失败请重试); request.getRequestDispatcher(/admin/book-add.jsp).forward(request, response); } }request.setCharacterEncoding(UTF-8)必须在getParameter()之前调用否则中文参数为??response.sendRedirect(...)用于 POST 后重定向 GET防止刷新页面重复提交即“PRG 模式”request.getContextPath()返回应用上下文路径如/book-system确保重定向 URL 正确4. 避坑指南95% 同学卡住的 5 个血泪问题与当场解决方案4.1 现象启动 Tomcat 后首页空白控制台无报错浏览器 Network 显示 200 但 Response 为空原因JSP 编译失败但 Tomcat 默认不打印 JSP 编译日志。常见于web.xml中jsp-config缺失或 JSP 语法错误如% new Date() %写成% new Date() %。解决在web.xml的web-app根节点下添加jsp-config jsp-property-group url-pattern*.jsp/url-pattern page-encodingUTF-8/page-encoding /jsp-property-group /jsp-config检查所有 JSP 文件是否有未闭合的%,%,%标签尤其注意c:forEach标签是否引入 JSTL% taglib prefixc urihttp://java.sun.com/jsp/jstl/core %清空 Tomcatwork/Catalina/localhost/下的临时编译文件重启。4.2 现象登录成功后跳转到/admin/index.jsp但页面显示HTTP Status 404 – Not Found原因admin/index.jsp路径正确但web.xml中welcome-file-list未配置index.jsp为欢迎页或admin/目录权限被 IDE 误设为 “Excluded”。解决检查web.xml是否有welcome-file-list welcome-fileindex.jsp/welcome-file /welcome-file-listIDEA → Project Structure → Modules → 选中你的 module → Sources → 确保src/main/webapp是 “Sources”蓝色图标src/main/webapp/admin未被标为 “Excluded”红色图标。右键 → Mark as → Sources。4.3 现象数据库操作全部失败DBUtil.getConnection()抛java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver原因mysql-connector-java-8.0.33.jar未正确加载到 classpath。常见于JAR 放在WEB-INF/lib/但 IDEA 未识别因非 Maven 项目Tomcat 的lib/目录下也放了旧版 JAR如 5.1造成类加载冲突解决确认src/main/webapp/WEB-INF/lib/mysql-connector-java-8.0.33.jar存在且文件大小 2MBIDEA → Project Structure → Libraries → 点击→ Java → 选中该 JAR → OKTomcatlib/目录下删除所有 mysql-connector*.jar只保留项目自带的重启 Tomcat查看启动日志是否有Added JarScanner行确认 JAR 加载成功4.4 现象图书列表页book-list.jsp中c:forEach循环不显示数据但后台查库返回 List 非空原因JSTL 标签库 URI 错误或未引入。urihttp://java.sun.com/jsp/jstl/core是 JSTL 1.1 的标准 URI但部分旧教程写成http://java.sun.com/jstl/core缺少/jsp/。解决确保webapp/WEB-INF/lib/下有jstl-1.2.jar本项目已包含JSP 顶部声明必须为% taglib prefixc urihttp://java.sun.com/jsp/jstl/core % % taglib prefixfmt urihttp://java.sun.com/jsp/jstl/fmt %检查BookServlet.list()方法中是否将 List 存入 requestrequest.setAttribute(bookList, list);且book-list.jsp中c:forEach items${bookList} varbook的 EL 表达式${bookList}能取到值可用c:out value${bookList.size()}/测试4.5 现象修改图书信息后数据库更新成功但页面仍显示旧数据刷新也不变原因浏览器缓存了静态资源如 JS或服务端未清除缓存。更可能是BookServlet.update()方法中response.sendRedirect(...)的 URL 拼写错误导致跳转失败用户以为没提交。解决检查BookServlet.update()中重定向 URLresponse.sendRedirect(request.getContextPath() /book?actionlist); // ✅ 正确 // response.sendRedirect(/book?actionlist); // ❌ 缺少 getContextPath()路径错误浏览器按CtrlF5强制刷新或禁用缓存调试DevTools → Network → Disable cache在BookDao.update()方法末尾加日志System.out.println(Update SQL executed: sql);确认 SQL 执行5. 从课程设计到面试作品三个进阶改造让这份源码真正属于你5.1 改造一把明文密码升级为 BCrypt 加密5 行代码安全分直线上升课程设计允许明文存密码但面试官看到password123456会直接扣分。用 BCrypt 替换只需改两处引入依赖下载bcrypt-3.1.jar轻量无其他依赖放入WEB-INF/lib/修改UserDao.login()// 原来String sql SELECT * FROM t_user WHERE username? AND password?; // 改为 String sql SELECT * FROM t_user WHERE username?; User user jdbcTemplate.queryForObject(sql, new Object[]{username}, new UserRowMapper()); if (user ! null BCrypt.checkpw(password, user.getPassword())) { // 验证加密密码 return user; }修改UserDao.register()// 原来user.setPassword(password); // 改为 user.setPassword(BCrypt.hashpw(password, BCrypt.gensalt())); // 生成哈希为什么选 BCrypt它内置盐值、计算慢防暴力破解、Java 原生支持。比 MD5/SHA-256 安全得多且无需额外数据库字段存 salt。5.2 改造二用 Filter 统一处理中文乱码和登录校验解耦 Servlet体现架构意识当前每个 Servlet 都写request.setCharacterEncoding(UTF-8)和 session 校验违反 DRY 原则。新建EncodingFilter.java和LoginFilter.java// EncodingFilter.java public class EncodingFilter implements Filter { public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException { HttpServletRequest request (HttpServletRequest) req; HttpServletResponse response (HttpServletResponse) resp; request.setCharacterEncoding(UTF-8); response.setContentType(text/html;charsetUTF-8); chain.doFilter(request, response); } }// LoginFilter.java拦截 /admin/* 路径 public class LoginFilter implements Filter { public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException { HttpServletRequest request (HttpServletRequest) req; HttpServletResponse response (HttpServletResponse) resp; if (request.getSession().getAttribute(user) null) { response.sendRedirect(request.getContextPath() /login.jsp); return; } chain.doFilter(request, response); } }在web.xml中注册filter filter-nameEncodingFilter/filter-name filter-classcom.example.book.filter.EncodingFilter/filter-class /filter filter-mapping filter-nameEncodingFilter/filter-name url-pattern/*/url-pattern /filter-mapping filter filter-nameLoginFilter/filter-name filter-classcom.example.book.filter.LoginFilter/filter-class /filter filter-mapping filter-nameLoginFilter/filter-name url-pattern/admin/*/url-pattern /filter-mapping效果所有 Servlet 不再写编码和校验代码职责更清晰面试时可说“我用 Filter 实现了横切关注点的解耦符合单一职责原则”。5.3 改造三增加分页功能不是简单 limit而是真·用户体验优化当前book-list.jsp直接查全表数据一多就卡死。用PageUtil.java实现物理分页// PageUtil.java public class PageUtil { public static T PageT getPage(ListT list, int pageNum, int pageSize) { int total list.size(); int fromIndex (pageNum - 1) * pageSize; int toIndex Math.min(fromIndex pageSize, total); ListT pageList fromIndex toIndex ? list.subList(fromIndex, toIndex) : new ArrayList(); return new Page(pageList, total, pageNum, pageSize); } }BookServlet.list()改为int pageNum Integer.parseInt(request.getParameter(pageNum)); // 前端传页码 int pageSize 10; ListBook allBooks bookDao.findAll(); // 查全量小数据量可接受 PageBook page PageUtil.getPage(allBooks, pageNum, pageSize); request.setAttribute(page, page); request.getRequestDispatcher(/admin/book-list.jsp).forward(request, response);book-list.jsp中用 JSTL 输出分页c:forEach items${page.list} varbook.../c:forEach div classpagination c:if test${page.pageNum 1} a hrefbook?actionlistpageNum${page.pageNum-1}上一页/a /c:if span第 ${page.pageNum} 页共 ${page.totalPage} 页/span c:if test${page.pageNum page.totalPage} a hrefbook?actionlistpageNum${page.pageNum1}下一页/a /c:if /div为什么这是加分项它展示了你理解“前端分页”和“后端分页”的区别——课程设计用内存分页够用但你知道真实项目必须用 SQLLIMIT offset, size并能说出优化方案如用游标分页替代OFFSET防深分页性能衰减。我带过 12 届课设学生见过太多人把“能跑通”当成终点。但真正拉开差距的从来不是功能堆砌而是你能否在db.properties里多看一眼serverTimezone能否在LoginServlet的if里补上return能否把request.getParameter()的空指针检查写进BookDao的add()方法里。这份源码的价值不在于它得了 95 分而在于它给你一个足够干净、足够典型、足够暴露问题的沙盒——让你亲手把“理论上的 MVC”变成“debug 时能看到book.getTitle()值的实体”。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

自定义UDP协议实现低延迟视频传输:架构、调试与实战经验

自定义UDP协议实现低延迟视频传输:架构、调试与实战经验

做视频实时传输的人,多少都绕不开这套活儿:一端把编码后的视频流丢到网络上,另一端解出来渲染上屏。TCP 协议简单可靠,但队头阻塞、重传风暴在弱网下一来,延迟和卡顿就压不住;直接用现成的 RTP/RTSP 又要引…

2026/10/9 10:48:22 阅读更多 →
从AI痕迹到人类笔触:论文降AI率实用方法与工具组合

从AI痕迹到人类笔触:论文降AI率实用方法与工具组合

导师把查重报告发我那天晚上,我对着屏幕上醒目的“AI疑似率 63%”沉默了很久。论文是我自己跑的数据、自己搭的框架,只不过中途偷懒,让AI润色了几个段落,怎么就成了“高风险”? 后来我才弄明白,问题不是出…

2026/10/9 10:48:22 阅读更多 →
Graphify 拯救了我的钱包:用 AST 把 Codex Pro 的 token 账单压下来

Graphify 拯救了我的钱包:用 AST 把 Codex Pro 的 token 账单压下来

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

2026/10/9 10:47:22 阅读更多 →

最新新闻

Autoresearch Predict Personas:Claude Autoresearch 多角色预测评审机制全解析

Autoresearch Predict Personas:Claude Autoresearch 多角色预测评审机制全解析

AI 技能人工智能AI 评测开发工具 【免费下载链接】autoresearch Claude Autoresearch Skill — Autonomous goal-directed iteration for Claude Code. Inspired by Karpathys autoresearch. Modify → Verify → Keep/Discard → Repeat forever. 项目地址: https:…

2026/10/9 11:48:54 阅读更多 →
中小工贸企业产销脱节难题:2026全链路管控的智能体破局方案(TaoToken 统一 Key 接入版)

中小工贸企业产销脱节难题:2026全链路管控的智能体破局方案(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/9 11:48:54 阅读更多 →
Vue 3 入门到实战:核心概念、组件通信与响应式原理详解

Vue 3 入门到实战:核心概念、组件通信与响应式原理详解

前端框架这几年更新迭代快得让人有点喘不过气,但有一个名字始终绕不开,那就是 Vue。不管你是刚入行的新人,还是从 jQuery 时代一路走过来的老手,只要涉及现代前端开发,Vue 几乎都是必选项之一。我带过不少新人&#xf…

2026/10/9 11:48:54 阅读更多 →
把小智的耳朵搬到板子上:用 sherpa-onnx 跑通本地 VAD + ASR + TTS 的一次完整改造

把小智的耳朵搬到板子上:用 sherpa-onnx 跑通本地 VAD + ASR + TTS 的一次完整改造

本篇速览 把语音助手的链路从"设备 服务器"压成"一块板子",LLM 只是其中一环;本篇处理剩下的三环:VAD(语音活动检测)、ASR(语音识别)、TTS(语音合成&#xff0…

2026/10/9 11:48:54 阅读更多 →
从精密温控到液冷新局:苏净集团57年技术沉淀跻身2026液冷空调头部推荐

从精密温控到液冷新局:苏净集团57年技术沉淀跻身2026液冷空调头部推荐

随着数字经济与新能源产业的快速发展,液冷技术凭借高效散热、节能降耗的独特优势,成为数据中心、储能电站、高端制造等领域温控解决方案的首选。2026年,液冷空调行业进入技术迭代与市场扩张的关键阶段,一批拥有核心技术沉淀、丰富…

2026/10/9 11:48:53 阅读更多 →
小厂工程师如何用项目经验拿下大厂Offer:面试实战与复盘指南

小厂工程师如何用项目经验拿下大厂Offer:面试实战与复盘指南

面试官你好,我是……这句话我在那一年多里重复过几十次。我的简历上写着“某小型互联网公司高级后端工程师”,公司名字投出去,大概率没人听说过,学历那一栏也谈不上亮眼。作为一个从小厂跳进大厂的过来人,我很清楚一个…

2026/10/9 11:47:53 阅读更多 →

日新闻

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API这个话题,隔三差五就会在群里被翻出来讨论一次。上周还有个同事线上处理一个订单超时问题,排查到最后发现是ZonedDateTime序列化后时区丢了,用户在下单当天晚上看到的时间整整差了8个小时。这类问题几乎每个做Java开发的人都遇到过…

2026/10/9 0:00:49 阅读更多 →
EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

前几个月我手头有好几台机器需要互相访问:办公室台式机、家里 NAS、还有一台云主机。如果只是偶尔传个文件倒还好,问题是工作场景经常要在几处环境之间来回切换,每次都先登录跳板机再层层代理,实在折腾。我先后试过端口映射、自建…

2026/10/9 0:00:49 阅读更多 →
AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent 这个词在过去一年里被反复提及,但真正动手搭过一套能跑起来的 Agent 系统的人都知道,从"知道它是什么"到"让它稳定干活"之间隔着一整套工程决策。我前后参与过几个 Agent 项目的落地,从最初用现成框架拼装&…

2026/10/9 0:01:50 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

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

2026/10/8 15:26:32 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

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

2026/10/8 15:26:40 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

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

2026/10/9 10:11:06 阅读更多 →

月新闻

我发现了一个新思路:用 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/8 21:13:17 阅读更多 →
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/8 15:26: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/9 6:17:20 阅读更多 →