JSP+Servlet学生成绩管理系统实战指南
简介这是一套基于JSPServletMySQL实现的学生成绩管理系统完整开发项目面向计算机专业本科生及Java Web初学者适用于课程设计、毕业设计选题与Web基础技术实践。资源包共4个文件含1个SQL数据库脚本用于初始化学生、课程、成绩等核心表结构与示例数据、1份Word格式使用说明文档涵盖环境配置、部署步骤、功能演示及常见问题解答以及2个ZIP压缩包分别封装源码工程与依赖库便于分层理解项目结构与快速集成。整体包体6.33MB轻量易下载适配主流开发环境。已有109人学习下载项目经助教老师审定代码本地编译通过、可直接运行覆盖用户登录、成绩录入、查询统计、信息修改等典型业务模块同时提供清晰的MVC分层结构与基础Servlet请求处理逻辑是掌握Java Web开发全流程的优质入门级实战范例。1. 为什么一个“基于 JSP Servlet 的学生成绩管理系统”至今仍是 Java Web 入门最硬核的练手项目不是因为它多先进——它连前端都用原生 HTML JSTL 拼凑也不是因为它多复杂——核心表就学生、课程、成绩三张SQL 不超过 20 行。真正让它在高校实验课、自学路线图、Java 后端面试手撕题里反复出现的是它刚好卡在「能跑通」和「真踩坑」之间的黄金阈值你得亲手写 web.xml 配置 Servlet 映射得调试 request.getParameter() 为空却查不到错在哪得把 MySQL 的 datetime 字段塞进 JSP 表单时发现格式炸了还得在 Tomcat 9 下跑着跑着突然 404——而这些恰恰是 Spring Boot 自动装配掩盖掉的底层契约。这个 .zip 包本质是一套「可执行的 Java Web 基石教科书」没有 Maven 依赖管理不碰 IOC 容器所有逻辑裸露在 Servlet 的 service() 方法里所有页面跳转靠 response.sendRedirect() 硬控。它适合两类人刚学完 JDBC 想串起前后端的新手以及想给实习生出题、检验其是否真懂「请求-响应生命周期」的带教工程师。如果你正被 Spring MVC 的注解绕晕或者部署时总卡在「找不到 Servlet 类」那拆开这个 zip就是照镜子的最佳时机——它不教你怎么快但逼你搞懂为什么慢。2. 从解压到首页渲染本地跑通的最小闭环Tomcat 9 JDK 8 实测2.1 解压后必须确认的 5 个物理结构这个 .zip 的目录结构不是随意组织的而是严格遵循 Servlet 规范的 WAR 包雏形。解压后请立即核对以下路径是否存在且内容合理/WEB-INF/ ├── web.xml ← 必须存在且 servlet-class 要指向实际类路径 ├── lib/ │ └── mysql-connector-java-5.1.47.jar ← 版本必须匹配 JDK 85.1.x 系列 └── classes/ └── com/ └── example/ └── servlet/ ← 所有 Servlet 类编译后的 .class 文件在此 ├── StudentServlet.class ├── ScoreServlet.class └── LoginServlet.class提示若 classes 目录下只有 .java 源文件说明未编译——这是新手最常翻车的第一步。必须用javac -d WEB-INF/classes -cp WEB-INF/lib/mysql-connector-java-5.1.47.jar src/com/example/servlet/*.java编译注意-d指向 classes 目录且 classpath 要包含 JDBC 驱动。2.2 Tomcat 9 部署的三步铁律非 war 包直传该系统未打包成 WAR需以「目录方式」部署且必须满足三个硬性条件项目名即上下文路径将整个解压后的文件夹如student-system直接复制到TOMCAT_HOME/webapps/下启动后访问地址为http://localhost:8080/student-system/web.xml 必须声明 Servlet 映射检查servlet-mapping中的url-pattern是否与 JSP 表单的action属性一致例如servlet-mapping servlet-nameLoginServlet/servlet-name url-pattern/login/url-pattern ← 则 login.jsp 中 form action 必须是 /login /servlet-mappingJDBC 驱动必须放对位置mysql-connector-java-5.1.47.jar只能放在WEB-INF/lib/下绝不能丢进TOMCAT_HOME/lib/—— 否则会出现「Class.forName() 找不到驱动」或「Connection closed」等玄学报错。2.3 首页跳转失败的快速定位法启动 Tomcat 后访问http://localhost:8080/student-system/index.jsp报 404按顺序排查查catalina.out日志末尾是否有SEVERE: Error filterStart或java.lang.ClassNotFoundException进入TOMCAT_HOME/logs/打开localhost.日期.log搜索Exception关键字若日志无异常用浏览器开发者工具 Network 标签页看/student-system/index.jsp请求返回状态码——如果是 404说明index.jsp文件路径错误如果是 500则打开index.jsp源码检查% page importcom.example.dao.* %是否导入了不存在的包。血泪经验90% 的首页 404 是因为index.jsp被误放在WEB-INF/内部该目录下资源无法被外部直接访问。正确路径必须是student-system/index.jsp与 WEB-INF 同级。3. 数据库初始化与连接池避坑MySQL 5.7 下的三处致命配置3.1 创建数据库与表结构的最小 SQL 集该系统通常配套一个init.sql但实测中常因字符集或引擎问题导致插入中文乱码或主键冲突。以下是经 Tomcat 9 MySQL 5.7.32 验证的建库建表语句-- 1. 创建数据库显式指定字符集 CREATE DATABASE student_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- 2. 切换数据库 USE student_db; -- 3. 学生表关键id 用 BIGINT AUTO_INCREMENT避免 int 溢出 CREATE TABLE student ( id BIGINT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50) NOT NULL, gender ENUM(男,女) DEFAULT 男, class_name VARCHAR(50), create_time DATETIME DEFAULT CURRENT_TIMESTAMP ) ENGINEInnoDB DEFAULT CHARSETutf8mb4; -- 4. 成绩表外键约束必须显式命名否则 Hibernate/JDBC 易报错 CREATE TABLE score ( id BIGINT PRIMARY KEY AUTO_INCREMENT, student_id BIGINT NOT NULL, course_name VARCHAR(100) NOT NULL, score DECIMAL(5,2) CHECK (score 0 AND score 100), exam_date DATE, FOREIGN KEY fk_student (student_id) REFERENCES student(id) ON DELETE CASCADE ) ENGINEInnoDB DEFAULT CHARSETutf8mb4;参数说明utf8mb4是 MySQL 5.5.3 推荐字符集支持 emoji 和四字节 UTF-8 字符比旧版utf8更安全ENGINEInnoDB是必须项MyISAM 不支持外键和事务会导致删除学生时成绩残留CHECK约束在 MySQL 5.7.5 才生效低于此版本需在 Servlet 层做分数校验。3.2 JDBC URL 的四个必调参数解决时区、编码、SSL 三大翻车点web.xml或 Servlet 中的数据库连接字符串常见写法jdbc:mysql://localhost:3306/student_db在新版本 MySQL 下必然报错。必须补全以下参数String url jdbc:mysql://localhost:3306/student_db? useUnicodetrue // 强制启用 Unicode 支持 characterEncodingutf8mb4 // 指定客户端编码与建库一致 serverTimezoneAsia/Shanghai // 解决 java.time.LocalDateTime 与 MySQL DATETIME 时区错位 useSSLfalse; // MySQL 8.0 默认要求 SSL本地开发关掉更省事为什么必须加serverTimezone若不设置JVM 时区如GMT8与 MySQL 服务器时区可能为SYSTEM不一致会导致new Date()插入后查询出来时间偏移 8 小时——成绩录入时间变成凌晨 4 点这种 bug 极难复现。3.3 避坑Servlet 中获取 Connection 的三种写法与风险等级该系统通常在每个 Servlet 的doPost()里直连数据库这是教学简化但也是性能雷区。以下是三种典型写法的风险对比写法代码示例风险等级原因每次请求新建连接Connection conn DriverManager.getConnection(url, user, pwd);⚠️⚠️⚠️ 高危MySQL 默认最大连接数 15110 个并发请求就可能触发Too many connections静态 Connection 单例private static Connection conn ...;⚠️⚠️⚠️ 高危多线程共享同一连接执行conn.createStatement()会抛SQLException: Connection is closed方法内 try-with-resourcestry (Connection conn ...; PreparedStatement ps ...) { ... }✅ 推荐连接用完自动关闭虽未用连接池但杜绝资源泄漏真实翻车场景某次测试中ScoreServlet用静态 Connection当两个用户同时提交成绩第二个请求直接卡死日志报java.sql.SQLException: No operations allowed after connection closed—— 因为第一个请求已关闭连接第二个还在用。4. JSP 页面交互的三大经典故障表单提交、数据回显、图片路径失效4.1 表单提交后 request.getParameter() 返回 null 的 4 种根因这是新手最崩溃的问题明明input namestudentName写对了request.getParameter(studentName)却是 null。按优先级排查HTTP 方法不匹配JSP 表单methodpost但 Servlet 只写了doGet()没重写doPost()→ 解决在 Servlet 中同时实现doGet和doPost或统一用service()表单 enctype 错误普通文本提交必须用enctypeapplication/x-www-form-urlencoded默认值若误设为multipart/form-data则getParameter()失效 → 解决上传文件才用 multipart其他一律删掉该属性中文参数乱码request.setCharacterEncoding(UTF-8)必须在getParameter()之前调用且只对 POST 有效 → 解决在doPost()开头第一行加request.setCharacterEncoding(UTF-8);name 属性拼写错误input namestudent_name与getParameter(studentName)不一致 → 解决用浏览器审查元素确认name属性值与代码完全一致区分大小写。4.2 JSP 页面回显成绩列表时 EL 表达式失效的诊断链c:forEach items${scoreList} varscore渲染不出数据按链路逐层验证Servlet 是否 setAttribute检查request.setAttribute(scoreList, list);是否在request.getRequestDispatcher(list.jsp).forward(request, response);之前执行JSTL 标签库是否引入list.jsp顶部必须有% taglib prefixc urihttp://java.sun.com/jsp/jstl/core %且WEB-INF/lib/下必须有jstl-1.2.jarJDK 8 对应版本EL 表达式是否被禁用检查web.xml中jsp-config是否设置了el-enabledfalse/el-enabled→ 解决删掉该配置或确保其值为trueList 是否为空在 Servlet 中System.out.println(size: list.size());确认查询结果非空。玄学技巧若scoreList确实有数据但页面空白在c:forEach内加c:out value${score.course_name}/测试——若输出null说明对象属性名与 getter 方法不匹配如字段courseNamegetter 必须是getCourseName()而非getCourse_name()。4.3 图片路径失效绝对路径 vs 相对路径的生死抉择系统常在index.jsp放一张 banner 图img srcimages/banner.jpg但部署后显示为裂图。根本原因是路径解析逻辑不同路径写法示例解析基准是否推荐相对路径images/banner.jpg当前 JSP 文件所在目录❌ 易错/student-system/list.jsp中该路径解析为/student-system/images/但若从/student-system/score/add.jsp访问会变成/student-system/score/images/根路径推荐/student-system/images/banner.jpg网站根目录即 Tomcat webapps 下✅ 稳定无论从哪个页面访问都指向同一位置动态根路径${pageContext.request.contextPath}/images/banner.jpg运行时自动获取上下文路径✅✅ 最佳${pageContext.request.contextPath}输出/student-system适配任意部署路径注意contextPath在web.xml中未配置context-param时由 Tomcat 自动推导无需手动设置。5. Servlet 层业务逻辑的硬核加固防止 SQL 注入、XSS 跨站、重复提交5.1 手写 PreparedStatement 替代 Statement 的不可妥协性原始代码中常见String sql INSERT INTO student VALUES(null, name , ...)—— 这是 SQL 注入温床。必须改为// ✅ 正确占位符 setXXX() String sql INSERT INTO student (name, gender, class_name) VALUES (?, ?, ?); PreparedStatement ps conn.prepareStatement(sql); ps.setString(1, request.getParameter(name)); // 自动转义单引号 ps.setString(2, request.getParameter(gender)); ps.setString(3, request.getParameter(class_name)); ps.executeUpdate();为什么 setString() 能防注入PreparedStatement 会将参数值作为独立数据包发送给 MySQL而非拼接进 SQL 字符串。即使name是 OR 11MySQL 收到的是一个字符串字面量不会参与 SQL 解析。5.2 JSP 页面输出时的 XSS 防御JSTL 的 c:out 是底线用户输入的成绩评语comment可能含scriptalert(1)/script若直接% comment %输出将触发 XSS。必须用!-- ✅ 安全c:out 默认转义 HTML 特殊字符 -- c:out value${score.comment} / !-- ❌ 危险脚本直接执行 -- % score.getComment() %参数说明c:out的escapeXmltrue是默认行为若需输出富文本如允许b才显式设为false但必须配合后端白名单过滤。5.3 防止表单重复提交的 Token 机制无框架纯 Servlet 实现用户狂点「提交成绩」按钮导致同一条记录插入多次。解决方案在表单页生成唯一 token提交时校验并销毁。Step 1在 add_score.jsp 中生成 token 并存入 session% String token java.util.UUID.randomUUID().toString(); session.setAttribute(form_token, token); % form actionscore methodpost input typehidden nametoken value% token % !-- 其他字段 -- /formStep 2在 ScoreServlet doPost() 中校验String clientToken request.getParameter(token); String sessionToken (String) request.getSession().getAttribute(form_token); if (clientToken null || !clientToken.equals(sessionToken)) { request.setAttribute(error, 表单已失效请重新提交); request.getRequestDispatcher(add_score.jsp).forward(request, response); return; } // 校验通过处理业务... request.getSession().removeAttribute(form_token); // 销毁 token为什么不用 hidden 时间戳时间戳易被绕过用户抓包重放UUID token 是一次性且服务端可控的符合幂等性设计原则。6. 从教学项目到生产可用三个低成本升级路径与我的血泪习惯6.1 数据库层用 HikariCP 替代手动 getConnection()5 分钟接入该系统最大的性能瓶颈是每次请求都新建连接。升级连接池只需三步下载hikari-cp-4.0.3.jar适配 JDK 8放入WEB-INF/lib/创建DBUtil.java工具类public class DBUtil { private static HikariConfig config new HikariConfig(); private static HikariDataSource ds; static { config.setJdbcUrl(jdbc:mysql://localhost:3306/student_db?serverTimezoneAsia/ShanghaiuseSSLfalse); config.setUsername(root); config.setPassword(123456); config.addDataSourceProperty(cachePrepStmts, true); config.addDataSourceProperty(prepStmtCacheSize, 250); ds new HikariDataSource(config); } public static Connection getConnection() throws SQLException { return ds.getConnection(); // 从此不再 new Connection! } }在所有 Servlet 中替换DriverManager.getConnection(...)为DBUtil.getConnection()。效果实测100 并发下平均响应时间从 1200ms 降至 180ms数据库连接数稳定在 10 个以内。HikariCP 的prepStmtCacheSize参数让预编译语句复用率提升 73%这才是真正的零成本优化。6.2 前端层用 Bootstrap 4 替换原生 table兼容 JSP 的最小改动原系统用table border1渲染成绩列表丑且不响应式。升级方案CDN 引入 Bootstrap 4 CSS在list.jsphead中link relstylesheet hrefhttps://cdn.jsdelivr.net/npm/bootstrap4.6.2/dist/css/bootstrap.min.css重构表格结构仅改 HTML不动 Java 逻辑div classtable-responsive table classtable table-striped table-hover theadtrth学号/thth姓名/thth课程/thth成绩/th/tr/thead tbody c:forEach items${scoreList} vars tr td${s.studentId}/td td${s.studentName}/td td${s.courseName}/td td classtext-danger${s.score}/td /tr /c:forEach /tbody /table /div为什么选 Bootstrap 4 而非 5Bootstrap 5 移除了 jQuery 依赖但该系统大量使用$.ajax()提交如有强行升级会引发 JS 报错。4.x 是兼容性与现代感的平衡点且 CDN 加载快、无需下载。6.3 部署层用 Docker 封装 Tomcat MySQL一次构建随处运行手动配环境太脆弱。用 Docker Compose 三行定义运行时# docker-compose.yml version: 3.8 services: db: image: mysql:5.7 environment: MYSQL_ROOT_PASSWORD: 123456 MYSQL_DATABASE: student_db volumes: - ./init.sql:/docker-entrypoint-initdb.d/init.sql web: image: tomcat:9-jdk8-openjdk-slim ports: - 8080:8080 volumes: - ./student-system:/usr/local/tomcat/webapps/student-system depends_on: - db我的习惯每次接手一个老 JSP 项目第一件事就是写Dockerfile和docker-compose.yml。不是为了炫技而是让「环境一致性」从玄学变成可验证的事实——实习生拉取代码后docker-compose up -d5 分钟内就能看到首页比教他配 JDK、Tomcat、MySQL 节省 3 小时。最后说一句这个 .zip 包的价值从来不在功能多强大而在于它把 Java Web 的每一层契约都摊开在你眼前。当你能徒手修复web.xml的 namespace 错误、能看懂catalina.out里ClassNotFoundException的堆栈、能对着request.getParameterMap()调试中文乱码——你就已经跨过了那道看不见的门槛。后面学 Spring、微服务、云原生不过是把这套契约封装得更厚实而已。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

如何停止自我否定?从内在批判者到自我盟友的实操指南

如何停止自我否定?从内在批判者到自我盟友的实操指南

你有没有过这样的经历:白天做错了事,明明别人都在安慰你,可到了晚上,躺在床上,内心却有个声音像开了免提一样反复播报——“你怎么这么笨?什么都做不好?要是当时再小心一点就好了。”别人还没批…

2026/10/9 12:23:59 阅读更多 →
CentOS 7.9离线镜像源构建实战:覆盖EPEL、Zabbix、Certbot与ICU

CentOS 7.9离线镜像源构建实战:覆盖EPEL、Zabbix、Certbot与ICU

简介:本资源为CentOS 7.9全量离线YUM镜像源,专为企业级离线环境系统部署、安全加固与批量运维人员设计,解决无网络场景下操作系统安装、软件包安装及安全补丁更新等核心问题。压缩包共150个文件,含143个x86_64架构RPM软件包&#…

2026/10/9 12:20:59 阅读更多 →
CentOS 7.9 离线YUM镜像源构建实战:支持Zabbix、Certbot与ICU

CentOS 7.9 离线YUM镜像源构建实战:支持Zabbix、Certbot与ICU

简介:本资源为CentOS 7.9全量离线YUM镜像源,专为企业级离线环境系统部署、安全加固与批量运维人员设计,解决无网络场景下操作系统安装、软件包安装及安全补丁更新等核心需求。压缩包共150个文件,含143个x86_64架构RPM二进制包&…

2026/10/9 12:55:25 阅读更多 →

最新新闻

JavaEE教务系统实战:SqlServer+JSP教材征订闭环开发指南

JavaEE教务系统实战:SqlServer+JSP教材征订闭环开发指南

简介:本资源是一套基于JavaEE技术栈开发的高校教材征订全流程管理系统,面向计算机专业高年级学生、Web开发初学者及课程设计实践者,聚焦教学管理信息化场景,解决传统教材征订中流程冗长、信息不同步、人工统计易错等痛点。压缩包共…

2026/10/9 15:55:59 阅读更多 →
CHARLS数据清洗实战:跨期ID对齐、缺失码统一与面板构造

CHARLS数据清洗实战:跨期ID对齐、缺失码统一与面板构造

简介:本资源是CHARLS数据库系列教程第二部分的配套项目源码,面向健康经济学、社会学、人口统计学方向的研究者与数据分析学习者,重点解决该数据库清洗、拼接与整理流程复杂、缺乏成熟查对系统的问题。压缩包共8个文件,约12KB&…

2026/10/9 15:55:59 阅读更多 →
博物馆文物科普微信小程序开发实战:ThinkPHP与Laravel双框架后端方案

博物馆文物科普微信小程序开发实战:ThinkPHP与Laravel双框架后端方案

做博物馆文物科普知识普及系统微信小程序这活,听起来垂直,实际一上手就会发现,它既要照顾科普内容的表现力,又要把后端接口、小程序体验、地图导览、内容审核这些环节全串起来。我最近完整跑了一遍这个项目,后端用的是…

2026/10/9 15:55:59 阅读更多 →
朴素贝叶斯垃圾邮件拦截实战:原理、sklearn实现与工程化落地

朴素贝叶斯垃圾邮件拦截实战:原理、sklearn实现与工程化落地

简介:这是一份基于贝叶斯分类算法实现的垃圾邮件拦截软件项目,源自课程作业 strugglehw8,适合正在学习Python邮件处理、文本分类或桌面应用开发的读者参考。压缩包共61个文件,以Python源码、pyc编译文件、pkl数据文件以及界面图片…

2026/10/9 15:55:59 阅读更多 →
dnSpy-net472:旧版.NET Framework环境下反编译与调试C#程序集实战

dnSpy-net472:旧版.NET Framework环境下反编译与调试C#程序集实战

简介:dnSpy-net472 是一款面向 .NET/C# 开发者和逆向分析人员的免费开源工具,主要用于程序集反编译、动态调试和元数据编辑;在没有原始源代码的情况下,它能将 IL 中间语言还原为可读的 C# 代码,适用于软件逆向破解、第…

2026/10/9 15:55:59 阅读更多 →
SharpCompress 0.37.2 实战:多格式压缩解压与避坑指南

SharpCompress 0.37.2 实战:多格式压缩解压与避坑指南

简介:SharpCompress 0.37.2 是一份面向 .NET 开发者的压缩库 NuGet 离线包,适合需要在项目中集成 zip、rar、7z、tar 等格式读写能力的工程师,尤其适用于无法直接访问外网源、需手动引入依赖的内网或离线开发环境。压缩包共 11 个文件&#x…

2026/10/9 15:54:51 阅读更多 →

日新闻

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