Java Web学生信息管理系统实战:从需求拆解到答辩验收的完整方案
简介这份资源是面向计算机专业学生与Java Web初学者的一套学生信息管理系统完整项目源码对应课程设计、毕业设计或实训答辩场景帮助读者理解如何用Servlet、JSP与JDBC搭建一套可增删改查的信息管理应用。压缩包为rar格式整体约1.21MB包内文件以Java源码、JSP页面、数据库脚本及配置文件为主分别承担业务逻辑处理、前端展示与数据持久化等职责。目前已有3006人学习下载具备一定的参考热度。项目覆盖登录验证与Session身份识别、学生信息的添加删除修改查询、基于学号主键与专业等字段的数据库表设计以及PreparedStatement防注入、密码加密存储等安全处理思路。读者可据此梳理分层结构、对照SQL语句与Servlet调用关系快速搭建可运行环境并在此基础上完成功能扩展与二次开发为课程实践与职业能力积累提供直接参考。1. 学生信息管理系统从需求到落地的完整方案做过学生信息管理系统的人都有一个共识功能列表看起来简单真正动手才发现坑全藏在细节里。学生、班级、课程、成绩、用户权限这五块数据一旦交叉表结构设计稍有偏差后期改一处就要动全身。这套基于 Java Web 的学生信息管理系统方案面向的是需要交课程设计或毕业设计的同学以及想拿一套完整 Web 项目练手的开发者。它要解决的核心问题很明确把学生从入学到毕业的静态档案和动态成绩管起来同时让管理员、教师、学生三类角色各看各的数据互不越权。整套方案按 MVC 分层数据库用 MySQL前端走 JSP 加少量 JavaScript部署在 Tomcat 上结构清晰、依赖少、容易讲清楚。2. 需求拆解与技术选型三类角色、五张核心表2.1 功能需求怎么拆才不返工学生信息管理系统的需求看似直白但如果不先画清楚角色边界写到一半一定会返工。我一般会把需求按角色切成三条线管理员线负责用户管理、班级管理、课程设置和全局数据维护教师线负责成绩录入、成绩修改和所授课程的学生名单查看学生线只负责查自己的信息和成绩。三条线共用同一套学生基础数据但操作权限完全不同。拆需求时最容易忽略的是“数据从哪来、到哪去”。比如学生信息是管理员手动录入还是支持批量导入成绩是教师逐条录入还是按班级批量提交这些流程决定了后面接口怎么设计。通常的做法是管理员端保留单条录入和 Excel 批量导入两个入口教师端只做单条录入加批量提交学生端纯查询。这样既覆盖了实际场景也不会让开发量失控。另一个必须提前定的是“删除”策略。学生毕业或退学后直接物理删除会连带成绩记录一起消失后期统计就断了。我一般会加一个状态字段用逻辑删除代替物理删除学生状态标记为“已毕业”或“已退学”数据保留但不再出现在默认列表里。这个决定在表设计阶段就要落下去后期补会非常痛苦。2.2 技术栈选型为什么是 JSP Servlet MySQLJava Web 技术栈的选择空间很大Spring Boot、SSM、JSP Servlet 都能做。这套方案选 JSP Servlet JDBC 的组合原因很实际依赖最少、结构最透明、答辩时最容易讲清楚每一层在干什么。Spring 的依赖注入和 AOP 对应届生来说讲不明白反而扣分。具体版本上JDK 用 8 或 11 都行Tomcat 用 8.5 或 9MySQL 用 5.7 或 8.0前端引入 Bootstrap 做基础样式避免手写 CSS 浪费时间。数据库连接用原生 JDBC 加一个简单的连接池比如 Druid 或 C3P0不引入 ORM 框架SQL 全部手写。这样做的好处是每一条 SQL 你都能说清楚它查了哪张表、走了哪个索引答辩时被问到“这个查询怎么优化的”不会卡壳。提示如果学校要求必须用 SSM 或 Spring Boot把 JDBC 层换成 MyBatis 即可表结构和业务逻辑不用动迁移成本很低。2.3 五张核心表的结构设计表结构是整个系统的地基。学生信息管理系统最少需要五张表用户表、学生表、班级表、课程表、成绩表。下面给出关键表的建表语句字段类型和约束都按实际项目经验设定。-- 用户表存储登录凭证和角色 CREATE TABLE sys_user ( user_id INT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(50) NOT NULL UNIQUE COMMENT 登录名, password VARCHAR(128) NOT NULL COMMENT MD5加密存储, role TINYINT NOT NULL COMMENT 1管理员 2教师 3学生, ref_id INT DEFAULT NULL COMMENT 关联学生ID或教师ID, create_time DATETIME DEFAULT CURRENT_TIMESTAMP ) ENGINEInnoDB DEFAULT CHARSETutf8mb4; -- 学生表核心档案信息 CREATE TABLE student ( stu_id INT PRIMARY KEY AUTO_INCREMENT, stu_no VARCHAR(20) NOT NULL UNIQUE COMMENT 学号, stu_name VARCHAR(50) NOT NULL, gender TINYINT DEFAULT 1 COMMENT 1男 2女, class_id INT NOT NULL, phone VARCHAR(20), status TINYINT DEFAULT 1 COMMENT 1在读 2毕业 3退学, enroll_year YEAR NOT NULL, FOREIGN KEY (class_id) REFERENCES class(class_id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4; -- 成绩表学生与课程的多对多关系 CREATE TABLE score ( score_id INT PRIMARY KEY AUTO_INCREMENT, stu_id INT NOT NULL, course_id INT NOT NULL, score DECIMAL(5,2) DEFAULT NULL, exam_type TINYINT DEFAULT 1 COMMENT 1期末 2补考, input_time DATETIME DEFAULT CURRENT_TIMESTAMP, UNIQUE KEY uk_stu_course (stu_id, course_id, exam_type), FOREIGN KEY (stu_id) REFERENCES student(stu_id), FOREIGN KEY (course_id) REFERENCES course(course_id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4;这里有几个设计点值得展开。第一用户表和角色表没有拆开因为角色只有三种且不会动态增加拆表反而增加关联查询成本。第二成绩表加了uk_stu_course唯一索引防止同一学生同一课程同一考试类型重复录入这是血泪经验——没有这个约束教师批量提交时很容易产生重复数据。第三学生表的status字段配合逻辑删除默认查询只取status 1的记录。班级表和课程表结构相对简单班级表存班级编号、名称、所属院系和入学年份课程表存课程编号、名称、学分和授课教师ID。这两张表作为基础数据表由管理员维护其他角色只读。3. 总体架构与模块划分MVC 三层怎么落地3.1 三层架构的职责边界这套系统按标准 MVC 分三层表现层JSP Servlet、业务逻辑层Service、数据访问层DAO。表现层只负责接收请求、校验参数、转发响应不写业务逻辑Service 层处理业务规则比如“成绩必须在 0 到 100 之间”“学号不能重复”DAO 层只做数据库增删改查一个方法对应一条 SQL。这样分的好处是改前端不影响业务换数据库不影响逻辑。实际开发中我一般会先写 DAO 层把每张表的 CRUD 方法定下来再往上写 Service 和 Servlet。顺序反过来容易在 DAO 层漏方法写到一半又回头补。包结构按功能模块划分而不是按技术分层划分。比如com.sims.student下面放 StudentServlet、StudentService、StudentDaocom.sims.score下面放成绩相关的三个类。这样找代码时按业务找不用在servlet包和service包之间来回跳。3.2 关键模块的实现以成绩录入为例成绩录入是整套系统里业务规则最密集的模块拿它举例最能说明问题。教师登录后先选课程再选班级系统列出该班级所有学生教师逐条填入分数后批量提交。后端接收时要做四件事校验分数范围、校验学生是否属于该班级、校验该课程是否由当前教师授课、写入或更新成绩记录。// ScoreService.java 核心方法 public String batchSaveScore(int courseId, int classId, MapInteger, Double scoreMap, int teacherId) { // 1. 校验课程是否属于当前教师 Course course courseDao.findById(courseId); if (course null || course.getTeacherId() ! teacherId) { return 无权操作该课程; } // 2. 校验班级与学生归属 ListStudent students studentDao.findByClassId(classId); SetInteger validStuIds students.stream() .map(Student::getStuId).collect(Collectors.toSet()); // 3. 逐条校验并写入 for (Map.EntryInteger, Double entry : scoreMap.entrySet()) { int stuId entry.getKey(); Double score entry.getValue(); if (!validStuIds.contains(stuId)) { return 学生 stuId 不属于该班级; } if (score null || score 0 || score 100) { return 分数必须在 0 到 100 之间; } // 存在则更新不存在则插入 scoreDao.saveOrUpdate(stuId, courseId, score); } return success; }这段代码里saveOrUpdate方法利用 MySQL 的INSERT ... ON DUPLICATE KEY UPDATE语法实现配合前面成绩表的唯一索引一条 SQL 搞定插入和更新不用先查再判断。参数说明courseId和classId来自前端下拉框scoreMap的 key 是学生ID、value 是分数teacherId从 Session 中取不信任前端传值。注意教师ID必须从服务端 Session 获取不能由前端传入否则存在越权修改他人课程成绩的风险。3.3 权限控制的实现方式权限控制用一个简单的过滤器Filter实现。用户登录成功后把用户ID和角色写入 Session。后续每个请求经过 AuthFilter 时检查 Session 中是否存在用户信息以及当前请求的 URL 是否在该角色允许的范围内。// 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); String uri request.getRequestURI(); // 放行登录页和静态资源 if (uri.contains(/login) || uri.contains(/static/)) { chain.doFilter(req, resp); return; } // 未登录跳转登录页 if (session null || session.getAttribute(user) null) { response.sendRedirect(request.getContextPath() /login.jsp); return; } // 角色权限校验 User user (User) session.getAttribute(user); if (!hasPermission(user.getRole(), uri)) { response.sendError(403, 无权访问); return; } chain.doFilter(req, resp); }hasPermission方法内部维护一个角色与 URL 前缀的映射表比如/admin/开头的路径只允许管理员访问/teacher/允许管理员和教师访问。这个映射表可以写在代码里也可以放到配置文件里看项目规模决定。这种方案比 Spring Security 轻量得多但足够覆盖学生信息管理系统的权限需求。4. 数据库操作与前端交互容易翻车的几个环节4.1 JDBC 连接池的配置与使用原生 JDBC 每次请求都新建连接并发一上来数据库就扛不住。加一个连接池是必须的Druid 或 C3P0 都行配置方式大同小异。下面以 Druid 为例给出druid.properties配置和工具类写法。# druid.properties driverClassNamecom.mysql.cj.jdbc.Driver urljdbc:mysql://localhost:3306/sims?useSSLfalseserverTimezoneAsia/ShanghaicharacterEncodingutf8 usernameroot passwordyour_password initialSize5 maxActive20 maxWait3000// DBUtil.java 获取连接 public class DBUtil { private static DataSource dataSource; static { try { Properties props new Properties(); props.load(DBUtil.class.getClassLoader() .getResourceAsStream(druid.properties)); dataSource DruidDataSourceFactory.createDataSource(props); } catch (Exception e) { throw new RuntimeException(连接池初始化失败, e); } } public static Connection getConnection() throws SQLException { return dataSource.getConnection(); } }参数说明initialSize是初始连接数maxActive是最大连接数maxWait是获取连接的超时时间毫秒。学生信息管理系统并发不高maxActive设 20 足够。url里的serverTimezone必须配否则 MySQL 8.0 会报时区错误这是最常见的翻车点之一。4.2 分页查询的实现学生列表和成绩列表都需要分页否则数据一多页面直接卡死。分页用 MySQL 的LIMIT子句实现配合一个总数查询。-- 查询第 page 页每页 size 条 SELECT s.stu_id, s.stu_no, s.stu_name, c.class_name FROM student s LEFT JOIN class c ON s.class_id c.class_id WHERE s.status 1 ORDER BY s.stu_no LIMIT #{offset}, #{size}; -- 查询总记录数 SELECT COUNT(*) FROM student WHERE status 1;offset的计算方式是(page - 1) * size。前端传当前页码和每页条数后端算出 offset 后传给 DAO。这里注意LIMIT的两个参数不能用占位符?直接传MyBatis 里用#{}可以原生 JDBC 需要拼接但拼接时一定要确保这两个值是整数防止 SQL 注入。4.3 前端表单提交与数据校验前端用 JSP 渲染页面表单提交走 POST。以学生信息录入为例表单里包含学号、姓名、性别、班级、电话等字段。前端做基础校验非空、格式后端做完整校验学号唯一、班级存在。form action${pageContext.request.contextPath}/student/add methodpost input typetext namestuNo required pattern\d{8,12} placeholder学号8-12位数字 input typetext namestuName required maxlength50 select namegender option value1男/option option value2女/option /select select nameclassId c:forEach items${classList} varcls option value${cls.classId}${cls.className}/option /c:forEach /select input typetext namephone pattern\d{11} button typesubmit保存/button /form前端校验只是第一道防线后端 Servlet 里必须再校验一遍。学号唯一性检查在 Service 层做查数据库确认没有重复后再插入。如果依赖数据库的唯一索引报错来提示用户体验会很差错误信息也不友好。5. 避坑与常见问题排查5.1 中文乱码现象、原因与解决现象表单提交后数据库里存的是乱码或者页面显示问号。原因通常有三个JSP 页面没声明编码、Servlet 没设置请求编码、数据库连接 URL 没加字符集参数。解决方式是三处都配JSP 页面顶部加% page contentTypetext/html;charsetUTF-8 %Servlet 里在取参数前调用request.setCharacterEncoding(UTF-8)数据库 URL 加characterEncodingutf8。三处缺一处都可能出问题我一般直接三处全配省得排查。5.2 连接池耗尽现象、原因与解决现象系统运行一段时间后报“获取连接超时”或“too many connections”。原因通常是 DAO 层用完连接没有关闭或者关闭顺序不对。解决方式在 DAO 的每个方法里用 try-with-resources 确保 Connection、Statement、ResultSet 按顺序关闭。如果用了连接池close()方法实际是归还连接而不是真正关闭但前提是你调用了它。检查方法是看代码里有没有漏掉finally块或者 try-with-resources。5.3 成绩重复录入现象、原因与解决现象同一学生的同一门课出现多条成绩记录。原因有两个一是成绩表没加唯一索引二是保存逻辑用了纯 INSERT 而不是 INSERT ON DUPLICATE KEY UPDATE。解决方式先给成绩表加上UNIQUE KEY uk_stu_course (stu_id, course_id, exam_type)然后把保存逻辑改成INSERT ... ON DUPLICATE KEY UPDATE score VALUES(score)。如果已经有重复数据先去重再建索引否则索引建不上。5.4 权限越界现象、原因与解决现象学生角色通过直接输入 URL 访问了管理员页面。原因是权限过滤器只检查了登录状态没检查角色。解决方式在 AuthFilter 里加角色与 URL 的匹配逻辑每个角色维护一个允许访问的 URL 前缀列表。另外所有涉及数据修改的接口都要在 Service 层再校验一次操作者身份比如教师只能改自己课程的成绩不能只靠前端隐藏按钮。5.5 分页数据错乱现象、原因与解决现象翻到第二页时数据跟第一页重复或者最后一页数据缺失。原因通常是排序字段不唯一MySQL 的LIMIT在排序字段有重复值时返回顺序不稳定。解决方式ORDER BY 后面加一个唯一字段作为次级排序比如ORDER BY s.stu_no, s.stu_id。另外检查 offset 计算是否正确(page - 1) * size在 page 从 1 开始时才对如果前端传的 page 从 0 开始公式要相应调整。6. 验收与答辩怎么证明这套系统真的能跑验收和答辩是两件事但准备思路可以合并。验收看的是功能是否完整、数据是否正确、异常是否处理答辩看的是你能不能把设计决策讲清楚。我一般会按下面这张检查表走一遍每一项都实际操作不靠记忆。检查项操作方式通过标准登录与权限用三种角色分别登录尝试访问其他角色页面越权访问返回 403 或跳转登录页学生增删改查新增学生、修改信息、逻辑删除、列表查询数据正确删除后默认列表不显示成绩录入教师登录选课程和班级批量录入成绩分数范围校验生效重复录入不产生多条记录分页查询学生列表翻页检查每页数据和总数数据不重复不缺失总数正确异常处理提交空表单、超长字符串、非法数字返回友好提示不出现 500 错误页中文显示录入中文姓名和班级名检查页面和数据库无乱码答辩时最常被问到的三个问题是为什么选这个技术栈、数据库表为什么这样设计、权限怎么控制的。这三个问题的答案在前面章节里都有关键是你要能用自己的话说出来而不是背概念。我一般会准备一张架构图放在 PPT 里从浏览器请求开始经过 Filter、Servlet、Service、DAO最后到数据库把这条链路讲一遍大部分设计问题都能顺着这条线回答。还有一个容易被忽略的点准备一份测试数据。答辩现场如果数据库是空的演示效果会很差。提前录入至少两个班级、二十个学生、五门课程和对应的成绩数据演示时翻页、查询、修改都有东西可看。数据不用多但要覆盖各种状态比如有已毕业的学生、有补考成绩的记录这样被问到逻辑删除和考试类型时能直接演示。从那以后我每次做完项目都会在答辩前一天按这张表完整走一遍把每个操作的实际结果截图存档。这样即使现场环境出问题也能拿出截图说明功能是通的。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

蓝桥杯省赛C/C++第二场:A/B/C组题型拆解与拿分模板

蓝桥杯省赛C/C++第二场:A/B/C组题型拆解与拿分模板

简介:这份资源是第十五届蓝桥杯大赛软件赛省赛第二场C/C大学A、B、C组试题的PDF文档,面向备战蓝桥杯的在校学生、算法竞赛初学者及需要刷题提升的C/C开发者。内容涵盖结果填空与程序设计两类题型,涉及进制转换、逆序对期望、传送阵、前缀总分…

2026/10/17 12:45:03 阅读更多 →
从RAG到实战:本地知识库搭建与大模型问答系统实现

从RAG到实战:本地知识库搭建与大模型问答系统实现

1. 通用大模型答题的边界:为什么它总是不够懂你如果你正在用 ChatGPT 处理自己的工作文档,大概率遇到过这种场面:问它一个自己行业里的具体问题,它答得头头是道,却总感觉隔了一层——不知道你们的内部规范,…

2026/10/17 12:45:03 阅读更多 →
Weka KnowledgeFlow 上手:拖拽式搭建交叉验证与模型对比流程

Weka KnowledgeFlow 上手:拖拽式搭建交叉验证与模型对比流程

把前面几篇学完,你应该已经在 Explorer 里跑通了不少分类、聚类的流程。可一旦你开始做交叉验证、特征筛选、模型对比、多视图可视化同时出图,Explorer 的“一条龙式”操作面板就会开始卡脖子。这个时候,稍微花点时间把 KnowledgeFlow 上手&a…

2026/10/17 12:44:02 阅读更多 →

最新新闻

AI时代程序员必看:脱离大模型,你还能独立工作吗?Vibe Coding挑战与应对

AI时代程序员必看:脱离大模型,你还能独立工作吗?Vibe Coding挑战与应对

本文探讨了Vibe Coding(氛围编码)如何借助AI改变编程方式,引发对程序员核心能力的思考。文章指出,AI擅长生成代码,但复杂系统判断、风险识别仍需人类智慧。强调基础知识和底层原理的重要性,提出程序员应驾驭…

2026/10/17 13:45:46 阅读更多 →
2026年企业网盘终极对比:坚果云 vs OneDrive vs Dropbox vs 百度网盘企业版

2026年企业网盘终极对比:坚果云 vs OneDrive vs Dropbox vs 百度网盘企业版

文章目录一、企业网盘选型,为什么不能只看容量和价格?二、测评方法论:15 个维度的统一标尺2.1 测评维度定义2.2 测试环境说明三、四款产品逐一深度测评3.1 坚果云团队版 —— 专业同步盘,技术团队首选🔧 核心技术要点拆…

2026/10/17 13:45:46 阅读更多 →
新手程序员必看:3个实操任务,教你如何高效利用AI大模型提升办公效率

新手程序员必看:3个实操任务,教你如何高效利用AI大模型提升办公效率

本文介绍了如何通过三个具体任务(整理文件、汇总资料、生产公众号文章)来测试和利用AI大模型提高办公效率。文章强调了明确任务需求、设定边界条件以及验证交付物的重要性,并提供了可直接复制的提示词模板。通过这些实操步骤,即使…

2026/10/17 13:45:46 阅读更多 →
普通人也能抓住的AI高薪风口!学会这些技能,薪资翻倍不是梦

普通人也能抓住的AI高薪风口!学会这些技能,薪资翻倍不是梦

AI岗位迎来大爆发,2026年1-7月同比暴涨近8倍,平均月薪破6万。不再是顶尖技术人才专属,运营、文案等普通岗位也能结合AI提效。普通人只需学会借助AI工具优化工作,即可快速提升竞争力,实现薪资翻倍。抓住AI风口&#xff…

2026/10/17 13:45:46 阅读更多 →
C# OpenXml 操作 Word 表格:从基础结构到样式合并的完整指南

C# OpenXml 操作 Word 表格:从基础结构到样式合并的完整指南

简介:面向需要在C#程序中自动化生成Word报表的.NET开发者,这份PDF演示了如何借助OpenXml SDK为Word文档添加表格。内容从引入DocumentFormat.OpenXml命名空间开始,逐步讲解AddTable方法的封装、TableGrid列数定义、表格边框样式设置&#xff…

2026/10/17 13:45:46 阅读更多 →
TPS54201低输入电压hiccup误触发,PNP三极管补偿方案解析

TPS54201低输入电压hiccup误触发,PNP三极管补偿方案解析

简介:面向LED照明系统设计人员,尤其适合熟悉电源管理IC与LED驱动器的工程师,围绕TPS54201宽输入电压(4.5V~28V)1.5A同步降压LED驱动芯片,解决低输入电压下负载LED电流不稳定的问题,并给出实际电…

2026/10/17 13:44:45 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/16 21:35:51 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/17 1:44:59 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 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/16 21:54:38 阅读更多 →
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/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练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 阅读更多 →