JavaWeb学生信息管理系统课设实战:从环境搭建到二次开发
简介这是一套面向高校计算机相关专业学生的JavaWeb课程设计完整项目以学生信息管理系统为主题适合正在准备课设、需要高分参考或希望快速搭建可运行Web项目的学习者。资源包共222个文件整体约1MB包含23个Java源文件、10个JSP页面、40个CSS样式表、10个JavaScript脚本以及SQL建库脚本和数据库文件另配有大量PNG、GIF等界面素材与字体资源前端采用H-ui、easyui等常见框架结构清晰、层次分明。项目代码完整下载后可直接部署运行涵盖学生信息录入、查询、修改、删除等典型管理模块便于读者理解JavaWeb分层开发思路与前后端交互流程。目前已有307人学习下载适合作为课程设计模板、期末大作业参考或JavaWeb入门练手项目帮助读者在较短时间内掌握数据库连接、页面渲染与业务逻辑组织等关键技能。1. 从一份 95 分课设说起这套 JavaWeb 学生信息管理系统到底能跑通什么如果你正在被 JavaWeb 课程设计卡住大概率不是不会写 Servlet而是卡在“前端样式怎么拼、数据库怎么连、页面跳转怎么串”这些琐碎但致命的环节。这份基于 JavaWeb 的学生信息管理系统源码加数据库定位很明确一套能直接导入 IDE、连上 MySQL 就能跑起来的完整课设项目配套 H-ui、EasyUI、iconfont 等前端样式文件覆盖学生信息增删改查、分页展示、表单校验这些课设高频功能点。它适合两类人一是时间紧、需要一份结构完整参考实现来对照改写的同学二是想拿一个真实可运行项目练手 JavaWeb 全流程的初学者。源码完整、数据库脚本齐全省去从零搭架子的大量重复劳动这也是它被标为 95 分以上课设的原因——功能闭环、界面规整、代码可读。2. 拆开压缩包先看什么目录结构、技术栈与运行环境核对拿到一个 JavaWeb 项目压缩包最忌讳的就是双击打开直接点运行。血泪经验是先花十分钟把目录结构和依赖看清楚能省掉后面两小时的报错排查。这一章就按“先认路、再对版本、最后配环境”的顺序走一遍。2.1 目录结构与前端样式文件的分工解压后典型结构是srcJava 源码、WebContent或webapp页面与静态资源、lib第三方 jar、以及一个.sql数据库脚本。从项目正文列出的样式文件能反推出前端组织方式H-ui.css和H-ui.min.css是 H-ui 框架的基础样式负责整体布局和组件外观easyui.css配合datagrid.css、tabs.css、linkbutton.css说明表格、选项卡、按钮这些交互组件走的是 EasyUI 路线iconfont.css和icon.css管图标icheck.css用于美化复选框和单选框color.css则是主题色覆盖。这种“H-ui 打底 EasyUI 补交互组件”的组合在课设里很常见好处是页面看起来不像是裸写 HTML答辩时观感分能拉起来。你需要确认的第一件事是WebContent下的WEB-INF里有没有web.xml以及lib目录下 jar 包是否齐全。常见缺的是 MySQL 驱动包和 JSTL 标签库这两个不在项目连编译都过不去。2.2 技术栈版本核对与 JDK/Tomcat 选型这套项目属于经典 Servlet JSP JDBC 架构没有用 Spring 全家桶所以对版本不敏感但也不是随便配就能跑。我一般会按下面这张表核对一遍再动手组件推荐版本说明JDK1.8高于 1.8 时部分老 jar 可能报Unsupported class file major versionTomcat8.5 或 9.010 以上改用 Jakarta 命名空间老项目会 404MySQL5.7 或 8.08.0 需注意驱动类名和时区参数IDEIDEA 或 EclipseIDEA 对 JavaWeb 项目导入更友好选 JDK 1.8 不是保守是因为项目里的 jar 包大概率是那个年代编译的用 JDK 17 跑会直接抛版本不兼容。Tomcat 同理9.0 是最后一个还认javax.servlet的主流版本再往上就是jakarta.servlet包名对不上页面全白屏。2.3 数据库脚本导入与连接配置数据库这一步是翻车重灾区。先建库再导脚本最后改配置文件里的连接串。常见做法是-- 先创建数据库字符集用 utf8mb4 避免中文乱码 CREATE DATABASE student_manager DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; -- 切换到该库后执行项目自带的 .sql 文件 USE student_manager; SOURCE /path/to/student_manager.sql;导入完成后找到项目里连接数据库的配置文件通常是db.properties或直接写在某个DBUtil.java里。需要改的参数有四项URL、用户名、密码、驱动类名。MySQL 8.0 的 URL 要带时区和 SSL 参数jdbc.drivercom.mysql.cj.jdbc.Driver jdbc.urljdbc:mysql://localhost:3306/student_manager?useUnicodetruecharacterEncodingutf8serverTimezoneAsia/ShanghaiuseSSLfalse jdbc.usernameroot jdbc.password你的密码serverTimezone不写会报The server time zone value is unrecognizeduseSSLfalse是去掉启动时的安全警告。驱动类名从com.mysql.jdbc.Driver换成com.mysql.cj.jdbc.Driver是 MySQL 8.0 的硬性要求写错就是ClassNotFoundException。3. 在 IDEA 里把项目跑起来导入、配 Tomcat、改路径环境核对完接下来是让项目真正在浏览器里出页面。这一章按 IDEA 的操作路径走Eclipse 用户对照菜单名微调即可。核心就三件事让 IDE 认识这是个 Web 项目、让 Tomcat 认识这个项目、让项目认识数据库。3.1 导入项目与配置 ArtifactsIDEA 导入老 JavaWeb 项目时最容易出问题的是它不自动识别WebContent为 Web 根目录。操作顺序是File → New → Project from Existing Sources选中解压后的项目根目录一路 Next到 SDK 选择时指定 JDK 1.8。导入后打开Project Structure在Modules里检查Webfacet 是否指向了正确的web.xml和 Web 资源目录。如果WebContent没被标成 Web 根手动在Web Resource Directory里指过去。接着在Artifacts里新建一个Web Application: Exploded把Available Elements里的lib和编译输出都加到WEB-INF/classes和WEB-INF/lib下。这一步不做Tomcat 启动后访问页面就是 404因为类根本没被部署进去。3.2 配置 Tomcat 运行与上下文路径在Run → Edit Configurations里加一个 Tomcat LocalApplication server指向你解压的 Tomcat 目录。关键是Deployment标签页点加号选Artifact把刚才建的 exploded 加进去然后把Application context改成/或/student。改成/的好处是访问时不用带项目名直接http://localhost:8080/就能进首页。启动前确认Server标签页里的HTTP port没被占用On Update action选Update classes and resources这样改 Java 代码不用重启。启动后如果控制台刷出Server startup in xxx ms且没有红色堆栈基本就成了。3.3 登录页验证与常见 404/500 定位浏览器打开首页正常应该看到登录页或主框架页。如果 404先看 Tomcat 日志里项目有没有部署成功再看web.xml里welcome-file配的是什么。如果 500多半是数据库连不上或 SQL 写错看堆栈里第一个Caused by后面的异常类型SQLException查连接配置NullPointerException查 Servlet 里有没有拿到空对象。我一般会先在浏览器直接访问一个静态资源比如http://localhost:8080/css/H-ui.css能出来说明部署没问题出不来就是 Artifact 配错了。这个二分法能快速把“部署问题”和“代码问题”分开。4. 增删改查与分页核心 Servlet、DAO 与 EasyUI 数据网格怎么串项目能跑起来只是第一步真正要理解或改写的是业务链路。这套系统的主线就是学生信息的增删改查加分页前端用 EasyUI 的 datagrid 展示后端用 Servlet 接请求、DAO 操作数据库。把这条链路吃透课设答辩随便问。4.1 Servlet 接收请求与参数封装典型的学生列表查询 Servlet 长这样WebServlet(/student/list) public class StudentListServlet extends HttpServlet { private StudentDao studentDao new StudentDao(); Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 分页参数page 当前页rows 每页条数EasyUI datagrid 默认传这两个 int page Integer.parseInt(req.getParameter(page) null ? 1 : req.getParameter(page)); int rows Integer.parseInt(req.getParameter(rows) null ? 10 : req.getParameter(rows)); // 关键字模糊查询可为空 String keyword req.getParameter(keyword); ListStudent list studentDao.findByPage(page, rows, keyword); int total studentDao.count(keyword); // EasyUI datagrid 要求返回 {total:xx, rows:[...]} 格式 MapString, Object result new HashMap(); result.put(total, total); result.put(rows, list); resp.setContentType(application/json;charsetutf-8); resp.getWriter().write(new Gson().toJson(result)); } }这里的关键是返回格式必须匹配 EasyUI datagrid 的约定total是总记录数rows是当前页数据数组。格式不对前端表格就是空的控制台也不报错属于典型的玄学问题。page和rows这两个参数名是 EasyUI 默认传的改成别的名字前端就得同步改。4.2 DAO 层 JDBC 实现与分页 SQLDAO 层负责拼 SQL 和映射结果集。分页查询的核心是LIMIT子句public ListStudent findByPage(int page, int rows, String keyword) { ListStudent list new ArrayList(); // 计算偏移量第 1 页从 0 开始 int offset (page - 1) * rows; StringBuilder sql new StringBuilder(SELECT * FROM student WHERE 11 ); ListObject params new ArrayList(); if (keyword ! null !keyword.trim().isEmpty()) { sql.append(AND (name LIKE ? OR sno LIKE ?) ); params.add(% keyword %); params.add(% keyword %); } sql.append(LIMIT ? OFFSET ?); params.add(rows); params.add(offset); try (Connection conn DBUtil.getConnection(); PreparedStatement ps conn.prepareStatement(sql.toString())) { for (int i 0; i params.size(); i) { ps.setObject(i 1, params.get(i)); } try (ResultSet rs ps.executeQuery()) { while (rs.next()) { Student s new Student(); s.setId(rs.getInt(id)); s.setSno(rs.getString(sno)); s.setName(rs.getString(name)); s.setGender(rs.getString(gender)); s.setMajor(rs.getString(major)); list.add(s); } } } catch (SQLException e) { e.printStackTrace(); } return list; }WHERE 11是个拼接技巧方便后面无脑追加AND条件。LIMIT ? OFFSET ?里两个占位符顺序不能反第一个是每页条数第二个是跳过多少条。用PreparedStatement而不是字符串拼接是为了防 SQL 注入答辩时这也是个加分点。4.3 前端 datagrid 配置与 JSON 对接前端页面里初始化 datagrid 的代码大致如下$(#dg).datagrid({ url: student/list, // 对应 Servlet 的 WebServlet 路径 method: get, pagination: true, // 开启分页条 pageSize: 10, pageList: [10, 20, 50], columns: [[ {field: sno, title: 学号, width: 120}, {field: name, title: 姓名, width: 100}, {field: gender, title: 性别, width: 60}, {field: major, title: 专业, width: 150}, {field: id, title: 操作, width: 150, formatter: function(value){ return a hrefjavascript:edit( value )编辑/a a hrefjavascript:del( value )删除/a; }} ]] });url必须和 Servlet 的映射路径完全一致大小写敏感。field的值要和后端返回 JSON 里的 key 对上对不上那一列就是空白。formatter用来在单元格里塞操作按钮value是当前行的id传给编辑和删除函数用。5. 避坑与排查从乱码到 404 的五个高频翻车点这一章是我自己踩过、也帮别人排查过的真实问题按“现象 → 原因 → 解决”写。每个都值得在答辩前过一遍。5.1 中文乱码页面、请求、数据库三处都要管现象学生姓名显示成????或æŽå。原因字符集在三个环节可能不一致——JSP 页面编码、请求体编码、数据库表和连接编码。解决JSP 顶部加% page contentTypetext/html;charsetUTF-8 %Servlet 里req.setCharacterEncoding(UTF-8)和resp.setContentType(text/html;charsetUTF-8)都要写数据库建库时用utf8mb4连接 URL 带characterEncodingutf8。三处缺一处都可能乱码。5.2 404路径对不上或 Artifact 没部署现象浏览器访问任何页面都是 404。原因要么Application context配错要么 Artifact 里没包含WEB-INF/classes。解决先访问静态资源确认部署是否成功成功则查 Servlet 的WebServlet路径和前端请求路径是否一致失败则回Project Structure → Artifacts检查输出布局。5.3 500 空指针DAO 返回 null 或参数没取到现象点查询按钮报 500堆栈指向NullPointerException。原因req.getParameter取到 null 后直接用了或者 DAO 查询没结果返回了 null 而不是空集合。解决所有getParameter后做 null 判断给默认值DAO 里List初始化为new ArrayList()不要返回 null。5.4 分页数据重复或丢失OFFSET 算错现象翻到第二页看到的数据和第一页有重复或者最后一页少几条。原因offset计算公式写成了page * rows而不是(page - 1) * rows。解决确认页码从 1 开始偏移量 (当前页 - 1) × 每页条数。这个错误很隐蔽因为第一页看不出来。5.5 MySQL 8.0 驱动报错类名和时区现象启动时报ClassNotFoundException: com.mysql.jdbc.Driver或The server time zone value is unrecognized。原因MySQL 8.0 换了驱动类名且默认时区不是东八区。解决驱动类名改成com.mysql.cj.jdbc.DriverURL 加serverTimezoneAsia/Shanghailib下换成 8.0 版本的mysql-connector-java。6. 二次开发与答辩加分改造成 MyBatis 版和加一个导出功能课设如果只满足于“能跑”分数上限就在那里。想往 95 分以上冲得让老师看到你有超出模板的东西。我的习惯是在原有 JDBC 版本跑通的基础上挑一个模块改成 MyBatis再加一个 Excel 导出。这两件事工作量不大但答辩时能讲出“为什么这么改”效果立竿见影。6.1 把 StudentDao 换成 MyBatis Mapper先加mybatis和mysql-connector-java依赖写一个mybatis-config.xml?xml version1.0 encodingUTF-8? !DOCTYPE configuration PUBLIC -//mybatis.org//DTD Config 3.0//EN http://mybatis.org/dtd/mybatis-3-config.dtd configuration environments defaultdevelopment environment iddevelopment transactionManager typeJDBC/ dataSource typePOOLED property namedriver valuecom.mysql.cj.jdbc.Driver/ property nameurl valuejdbc:mysql://localhost:3306/student_manager?serverTimezoneAsia/Shanghai/ property nameusername valueroot/ property namepassword value你的密码/ /dataSource /environment /environments mappers mapper resourcemapper/StudentMapper.xml/ /mappers /configuration对应的StudentMapper.xml里写分页查询select idfindByPage resultTypecom.example.entity.Student SELECT * FROM student where if testkeyword ! null and keyword ! AND (name LIKE CONCAT(%, #{keyword}, %) OR sno LIKE CONCAT(%, #{keyword}, %)) /if /where LIMIT #{rows} OFFSET #{offset} /select改完后的好处是 SQL 从 Java 代码里抽出来了where和if标签自动处理条件拼接不用再写WHERE 11。答辩时你可以对比两种实现讲清楚 MyBatis 解决了什么问题——这就是加分项。6.2 加一个 Excel 导出接口导出用 Apache POI核心代码WebServlet(/student/export) public class StudentExportServlet extends HttpServlet { protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { resp.setContentType(application/vnd.ms-excel); resp.setHeader(Content-Disposition, attachment;filenamestudents.xls); ListStudent list new StudentDao().findAll(); Workbook wb new HSSFWorkbook(); Sheet sheet wb.createSheet(学生信息); Row header sheet.createRow(0); String[] titles {学号, 姓名, 性别, 专业}; for (int i 0; i titles.length; i) header.createCell(i).setCellValue(titles[i]); int rowIdx 1; for (Student s : list) { Row row sheet.createRow(rowIdx); row.createCell(0).setCellValue(s.getSno()); row.createCell(1).setCellValue(s.getName()); row.createCell(2).setCellValue(s.getGender()); row.createCell(3).setCellValue(s.getMajor()); } wb.write(resp.getOutputStream()); wb.close(); } }Content-Disposition里的attachment告诉浏览器这是下载文件而不是直接打开。POI 的HSSFWorkbook对应.xls格式数据量大时换XSSFWorkbook写.xlsx。这个功能加完前端加个导出按钮指向/student/export就行。6.3 答辩前自检清单改完别急着交按这个顺序过一遍数据库脚本在干净环境能一次导入成功Tomcat 冷启动无红色堆栈登录、列表、新增、编辑、删除、分页、导出七个操作全部走通换一台电脑按 README 步骤能复现。从那以后我每次交课设前都强制走一遍这个清单因为翻车往往不在功能本身而在“换台机器就跑不起来”。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

开发者超能力工具链:Claude Code、Antigravity、Codex CLI与Cursor协同实践

开发者超能力工具链:Claude Code、Antigravity、Codex CLI与Cursor协同实践

1. 这不是魔法,是开发者正在用的“超能力”工具链“superpowers”这个词最近在开发者圈子里火得有点突然——它既不是某个新发布的AI模型,也不是某家大厂的神秘黑科技项目,而是一整套正在被真实写代码的人悄悄装进编辑器、每天高频调用的智能…

2026/10/9 6:14:08 阅读更多 →
迅时FXO口网关对接Asterisk:注册、路由与DTMF排障全攻略

迅时FXO口网关对接Asterisk:注册、路由与DTMF排障全攻略

简介:围绕迅时FXO口网关对接Asterisk的落地配置,这份PDF面向通信运维、VoIP集成及Asterisk管理员,解决PSTN直线与IP PBX互联时的线路注册、路由和IVR接入等实际问题。内容梳理了三种典型应用:网关与Asterisk同网段固定IP后分机拨9…

2026/10/9 6:14:08 阅读更多 →
内核调试模块与工具导航:从故障取证到动态插桩的排查路径

内核调试模块与工具导航:从故障取证到动态插桩的排查路径

1. 这个专栏导航要覆盖的地图:从“搜关键词”升级为“按路径排查”做内核调试这行久了,会发现一个很尴尬的现象:资料其实不少,但全散在源码注释、邮件列表、各种博客的边角料里。真的遇到问题,比如系统无故死机、模块加…

2026/10/9 6:14:08 阅读更多 →

最新新闻

Java JSP洛阳旅游管理系统开发实战:数据库、Servlet与权限控制全解析

Java JSP洛阳旅游管理系统开发实战:数据库、Servlet与权限控制全解析

简介:基于 JavaJSP 的洛阳旅游管理系统是一套面向毕业设计场景的完整源码与数据库资源,适合计算机相关专业学生用于课程设计、毕设参考或项目二次开发。系统采用 JSPjQueryServletJDBC 的经典技术组合,涵盖前台门户展示与后台管理两端&#x…

2026/10/9 6:40:31 阅读更多 →
洛谷P2865次短路模板题详解:双状态Dijkstra核心原理与AC代码

洛谷P2865次短路模板题详解:双状态Dijkstra核心原理与AC代码

如果你刷过一段时间USACO,大概率绕不开洛谷P2865这道Roadblocks G。它是图论里非常经典的“次短路”模板题,洛谷题解区常年有讨论,很多刚学完Dijkstra的选手都会在这里卡一下。题目本身不复杂,但“最短路”和“次短路”要同时放进…

2026/10/9 6:40:31 阅读更多 →
SpringBoot+Vue.js构建客户关系管理系统:从架构到避坑指南

SpringBoot+Vue.js构建客户关系管理系统:从架构到避坑指南

每年到毕业设计季,就会有人反复问我:客户关系管理系统这种出现频率极高的题目,到底选什么技术栈最稳妥?我的答案一直很一致:SpringBoot Vue.js Java MySQL。这套组合项目结构清晰、技术覆盖面广、可演示效果强&…

2026/10/9 6:40:31 阅读更多 →
光伏一接进配网,开题报告先卡住?电力系统人的 AI 搭子这样选 ☀️⚡

光伏一接进配网,开题报告先卡住?电力系统人的 AI 搭子这样选 ☀️⚡

先把场景说具体:你是工学 / 电气工程 / 电力系统及其自动化专业学生,毕业设计做的是类似**“高比例分布式光伏接入 10 kV 配电网后的电压偏差治理”**的题目。 这个题难就难在,它不是单纯写一篇综述:你要说明光伏渗透率提高后为什…

2026/10/9 6:40:30 阅读更多 →
介质超表面非线性谐波仿真:倍频、三次谐波与功率依赖建模指南

介质超表面非线性谐波仿真:倍频、三次谐波与功率依赖建模指南

介质超表面的非线性谐波仿真,在Comsol里属于典型的“看起来不难、做起来全是坑”的活。尤其是要把三次谐波、倍频以及功率依赖都放进一个模型里,同时还要求转换效率可复现,科研上常见,做工程化模型的人也越来越多。这篇文章我会把…

2026/10/9 6:40:30 阅读更多 →
PyTorch入门实战:从零构建你的第一个神经网络

PyTorch入门实战:从零构建你的第一个神经网络

如果你最近开始接触深度学习和PyTorch,大概率会经历这样的画面:照着教程敲完第一段代码,满心期待看到准确率一路飙升,结果不是报错,就是训练了好几轮loss纹丝不动。更常见的是卡在安装阶段——conda命令找不到、torch装…

2026/10/9 6:39:30 阅读更多 →

日新闻

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/8 10:10:36 阅读更多 →

月新闻

我发现了一个新思路:用 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 阅读更多 →