news 2026/10/8 6:05:35

JSP记账管理系统毕业设计:从环境搭建到答辩避坑全攻略

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
JSP记账管理系统毕业设计:从环境搭建到答辩避坑全攻略

简介:一份以JSP为核心技术栈的记账管理系统毕业设计完整资料包,面向计算机相关专业、正在准备Java方向毕业设计或课程设计的学生。压缩包内包含项目报告、答辩PPT、完整源代码、数据库脚本及部署视频,覆盖需求分析、系统设计、编码实现、论文撰写与演示答辩全流程。其中项目报告可直接参考并扩展为毕业论文,答辩PPT适合用于现场展示,Java/JSP源代码展示了用户登录、收支录入、分类统计、月度报表等核心功能模块,数据库脚本提供了建表语句和测试数据,部署视频则完整演示了环境配置与项目运行过程。包体约91.24MB,已有254人学习下载,适合需要完整毕业设计参考方案并希望快速上手运行系统的读者。无论是用于最终答辩,还是作为项目实训参考,都能节省从零搭建的时间。

1. 用 JSP 做记账管理系统毕业设计:先搞清楚这套资源能不能当主线

每年毕业季都会有一批人手里攥着这样一个压缩包:名字叫「基于JSP的记账管理系统毕业设计(项目报告+答辩PPT+源代码+数据库+部署视频).zip」,里面到底是不是一套能直接用的完整方案,还是只够交差的半成品?很多同学第一反应是解压、复制、改个名字就交,结果一运行就报错,答辩时连页面都打不开。先给个反直觉的结论:JSP 技术本身虽然老,但作为毕业设计主体是安全的,因为它能完整覆盖「前端页面 + 后端逻辑 + 数据库增删改查」这条主线,课程设计、毕业论文、答辩演示都能围绕它展开。这套资源适合两类人:一类是只想快速通过毕设、没有精力从零写系统的学生;另一类是已经工作但需要补一个传统 Web 项目履历的开发者。关键在于你要把它当成一套需要二次组装和验证的半成品,而不是开箱即用的成品——理解这一点,后面所有避坑才有意义。

2. 压缩包里的五件套:项目报告、答辩PPT、源代码、数据库、部署视频各怎么用

2.1 项目报告和答辩PPT:先读这两份再碰代码

大多数人拿到压缩包的第一反应是找源代码,这其实是错的。项目报告和答辩PPT是这个包的核心资产,它们决定了你能不能用「自己的话」把系统讲清楚。项目报告一般包含选题背景、需求分析、系统设计、数据库设计、功能实现、测试和总结,这些章节直接对应答辩时会被问到的问题。我一般会先花半小时把报告里的功能列表和数据库关系捋出来,比如:用户登录、收入管理、支出管理、分类统计、按月汇总,这些功能点是否是代码里真实存在的。

答辩PPT则是报告的精简版,重点看它的逻辑顺序:先讲痛点,再讲方案,然后展示页面截图和核心代码片段。如果PPT里贴的截图和源码不一致,后面必须修正,否则答辩时老师只要翻一下你的源码就能看出来你连自己的项目都不熟。建议按「PPT讲一遍 → 对照报告逐章写自己的理解 → 再打开代码验证」的顺序走,这样你才能在限时答辩里撑过3分钟的自我陈述而不卡壳。

2.2 源代码和数据库:核对版本与依赖关系

源代码通常是 IDEA 或 Eclipse 工程目录,重点看三个东西:pom.xml 或 lib 目录下的依赖包、web.xml 里的配置、以及 src 下的包结构。常见做法是直接把整个文件夹导入 IDE,但导入前一定要检查 JDK 版本和 Tomcat 版本是否匹配。数据库脚本一般是 .sql 文件,里面包含建库、建表和测试数据。我建议先不急着导入,而是用文本编辑器打开 SQL 文件,确认它用的是什么存储引擎、表名前缀、以及是否有外键。很多翻车事故都是因为本机 MySQL 版本和 SQL 脚本语法不兼容——比如用了 MySQL 8 而脚本里写了已废弃的认证插件。

先看一眼数据库脚本里有没有这样的结构:

CREATE DATABASE IF NOT EXISTS jsp_account DEFAULT CHARACTER SET utf8mb4; USE jsp_account; CREATE TABLE t_user ( user_id INT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(50) NOT NULL UNIQUE, password VARCHAR(64) NOT NULL COMMENT '建议存MD5摘要', create_time DATETIME DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB; CREATE TABLE t_bill ( bill_id INT PRIMARY KEY AUTO_INCREMENT, user_id INT NOT NULL, bill_type TINYINT NOT NULL COMMENT '0=支出 1=收入', amount DECIMAL(10,2) NOT NULL, category VARCHAR(20) NOT NULL, remark VARCHAR(200), bill_time DATETIME NOT NULL, KEY idx_user_time (user_id, bill_time), CONSTRAINT fk_bill_user FOREIGN KEY (user_id) REFERENCES t_user (user_id) ) ENGINE=InnoDB;

这段脚本代表的是最主流的记账系统表设计:用户表和流水表分离,流水表通过 user_id 关联用户,bill_type 区分收支,category 做分类字段,bill_time 用来做月度汇总。注意最后一行用到了外键约束,在导入时如果报错「Cannot add foreign key constraint」,说明两张表的存储引擎不是 InnoDB 或者 user_id 的类型不一致。很多人删掉外键图省事,结果答辩被问到「怎么保证数据一致性」就答不上来,我一般会保留外键,但会把 ON DELETE 策略改成 CASCADE 或者 SET NULL,避免用户删除后流水变成孤儿数据。

2.3 部署视频:照着做也会翻车,关键在环境版本

部署视频往往是 MP4 格式,录的是从解压到启动的全过程。它的价值在于让你提前看到「正常的启动路径」是什么样子,但千万别把它当成每一步都必须对照的金科玉律。视频里的人用的 Tomcat 版本、JDK 版本、数据库密码可能和你本机完全不同。最常见的翻车点是:视频里用的是 Tomcat 8.0 加 JDK 1.7,而你装的是 JDK 17,那么 class 文件版本号过高,Tomcat 直接拒绝加载。先按视频走一遍流程,如果卡住了,优先检查版本而不是怀疑自己操作错。部署视频我只看两个关键点:一是怎么把 war 包或整个工程放进 webapps,二是数据库连接配置在哪个文件里改。其余环节例如环境变量的配置,直接按你本机实际情况来,不用照抄。

3. 从数据库到页面:记账系统的核心表结构设计与 JSP 增删改查实现

3.1 记账系统的核心表设计:流水表、分类表、用户表的关系

很多毕设源码里只有一张流水表和一个用户表,这能跑,但答辩时很难讲出设计深度。更完整的方案是再加一张收入来源表或者支出分类表,用字典表的方式管理分类。我一般会建议在原有表结构上增加一个 t_category 表,让分类成为动态数据,这样就能在不改代码的情况下增加「餐饮」「交通」「工资」「兼职」等分类。表之间形成这样的关系:t_user 对 t_bill 是一对多,t_category 对 t_bill 是一对多(每条账单记录一个分类ID)。在实际实现时,不要把 category 字段直接写死成字符串,而是存 category_id,再关联到分类表。

用一条 SQL 就能看出这个设计的好处:

SELECT c.category_name, SUM(b.amount) AS total FROM t_bill b LEFT JOIN t_category c ON b.category_id = c.category_id WHERE b.user_id = 1 AND b.bill_time BETWEEN '2024-01-01' AND '2024-01-31' GROUP BY c.category_name ORDER BY total DESC;

这条语句按分类汇总某个月的收入或支出,是记账系统「统计报表」功能最常见的实现。很多答辩演示都会现场操作这个查询,因为它直观展示了表关联的价值。如果只用一个自带的 category 字符串字段,也能用 GROUP BY 查出结果,但无法在页面上联动渲染分类名称,也无法方便地维护分类列表。所以如果源码里缺少分类表,我会建议你在二次开发时补上,改动量不大,但讲数据库设计时能多讲两分钟。

3.2 用 JDBC 写一个可复用的记账 DAO

JSP 不好做账本管理——账本管理是基于 JSP 的记账系统的核心功能,但如果你把数据库连接代码直接写在 JSP 页面里,页面会变成一堆 scriptlet,维护起来非常痛苦。常见做法是引入 DAO 模式,把数据库操作封装在 Java 类中。先写一个工具类管理 JDBC 连接:

package com.example.account.util; import java.sql.*; public class DBHelper { private static final String DRIVER = "com.mysql.cj.jdbc.Driver"; private static final String URL = "jdbc:mysql://localhost:3306/jsp_account" + "?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai"; private static final String USERNAME = "root"; private static final String PASSWORD = "123456"; static { try { Class.forName(DRIVER); } catch (ClassNotFoundException e) { throw new ExceptionInInitializerError("MySQL驱动加载失败,检查lib目录"); } } public static Connection getConnection() throws SQLException { return DriverManager.getConnection(URL, USERNAME, PASSWORD); } public static void close(Connection conn, Statement stmt, ResultSet rs) { try { if (rs != null) rs.close(); } catch (SQLException ignored) {} try { if (stmt != null) stmt.close(); } catch (SQLException ignored) {} try { if (conn != null) conn.close(); } catch (SQLException ignored) {} } }

这段代码有几个参数值得注意。URL 里的 characterEncoding=utf8 保证了中文字符能正确写入数据库,serverTimezone=Asia/Shanghai 是 MySQL 8 连接时的必要参数,缺失会报时区错误。useSSL=false 是避免本机开发和 MySQL 8 默认 SSL 配置冲突。PASSWORD 是写死的,方便演示,但在真实项目里肯定要用配置文件读取,毕业设计里可以接受,但这会是答辩老师喜欢追问的点——提前准备「生产环境不会硬编码密码」的说法。

有了工具类,接着写记账的核心 DAO,比如新增一条账单:

public boolean addBill(Bill bill) { String sql = "INSERT INTO t_bill (user_id, bill_type, amount, category_id, remark, bill_time) " + "VALUES (?, ?, ?, ?, ?, ?)"; try (Connection conn = DBHelper.getConnection(); PreparedStatement ps = conn.prepareStatement(sql)) { ps.setInt(1, bill.getUserId()); ps.setInt(2, bill.getBillType()); ps.setBigDecimal(3, bill.getAmount()); ps.setInt(4, bill.getCategoryId()); ps.setString(5, bill.getRemark()); ps.setTimestamp(6, new Timestamp(bill.getBillTime().getTime())); return ps.executeUpdate() > 0; } catch (SQLException e) { e.printStackTrace(); return false; } }

PreparedStatement 相比 Statement 的最大好处是防止 SQL 注入,比如用户名里带单引号时不会破坏语句结构。setBigDecimal 对应数据库的 DECIMAL 类型,避免金额精度丢失。如果你看到源码里用的是 Statement 拼字符串,我建议你能改就改成 PreparedStatement,写得动就写,写不动也要能讲出区别——答辩时「预编译防止注入」是非常加分的回答。

3.3 JSP 页面如何调用 DAO 完成增删改查

有了 DAO,JSP 页面就能变得干净。虽然现代 JavaWeb 已经很少直接写 JSP,但毕业设计项目里 JSP 依然是最主流的展示层。展示账单列表的页面一般长这样:

<%@ page import="java.util.List, com.example.account.entity.Bill, com.example.account.dao.BillDao" %> <% BillDao dao = new BillDao(); List<Bill> bills = dao.listByUser((Integer) session.getAttribute("userId")); request.setAttribute("bills", bills); %> <table border="1"> <tr><th>金额</th><th>分类</th><th>备注</th><th>时间</th><th>操作</th></tr> <c:forEach items="${bills}" var="bill"> <tr> <td>${bill.amount}</td> <td>${bill.categoryName}</td> <td>${bill.remark}</td> <td>${bill.billTime}</td> <td><a href="updateBill.jsp?id=${bill.billId}">修改</a> <a href="deleteBillServlet?id=${bill.billId}" onclick="return confirm('确定删除?')">删除</a></td> </tr> </c:forEach> </table>

如果工程里导入了 JSTL 标签库,用 c:forEach 比用 scriptlet 循环更可读。但很多毕设源码没有引 JSTL,那就只能用 for 循环脚本遍历。这里有个常见坑:session.getAttribute("userId") 取出来的可能是 null,如果你没有先做登录判断,页面会直接报空指针。所以使用这个页面前,一定要先经过登录页把 userId 放进 session。

删除操作我一般走一个 Servlet,而不是直接在 JSP 里拼 delete SQL。典型做法是:

@WebServlet("/deleteBillServlet") public class DeleteBillServlet extends HttpServlet { protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { int billId = Integer.parseInt(req.getParameter("id")); BillDao dao = new BillDao(); boolean ok = dao.deleteBill(billId); if (ok) { resp.sendRedirect("billList.jsp"); } else { req.setAttribute("error", "删除失败"); req.getRequestDispatcher("error.jsp").forward(req, resp); } } }

注意 doGet 里直接 delete 有安全隐患,别人构造一个 URL 就能删账单,但在单机演示项目里常见。答辩时你可以补一句「实际部署会改成 POST 请求并校验 session 中的用户权限」,这就把安全性问题的回答权掌握在自己手里了。整个增删改查链路到这里就通畅了:JSP 页面发起请求 → Servlet 接收参数 → DAO 调用 JDBC 操作数据库 → 返回结果或跳转。

4. 把项目跑起来:JDK/Tomcat/MySQL 环境搭建与部署视频对照实操

4.1 环境版本搭配:JDK 1.8 + Tomcat 8.5 + MySQL 5.7 的兼容性为什么最稳

JSP 毕业设计的老三样是 JDK 1.8、Tomcat 8.5、MySQL 5.7,这个组合兼容性最好。先说为什么不用更高版本:JDK 11 之后如果想要动态加载 JSP 标签库,部分老标签版本会有 module 访问报错;Tomcat 10 是整个包名从 javax.servlet 改成 jakarta.servlet,如果源码里的 import 还是 javax,直接用 Tomcat 10 启动必挂;MySQL 8 对老版 mysql-connector-java 驱动不兼容,驱动类名从 com.mysql.jdbc.Driver 改成了 com.mysql.cj.jdbc.Driver。而这些毕设源码大多是三五年前写的,用的就是老版本。

如果压缩包里源码 import 是 javax.servlet,那就老老实实用 Tomcat 8.5 或 9.0。如果数据库连接类还是 com.mysql.jdbc.Driver,请手动下载 mysql-connector-java-5.1.49.jar 放进 WEB-INF/lib。有人喜欢用最新版追新,结果被兼容性问题耗掉一整天。我自己的习惯是先查 web.xml 或 Servlet 3.0 以上注解,确认项目依赖的 Servlet 版本,再决定 Tomcat 版本。用命令行快速验证环境:

java -version # 输出 java version "1.8.0_202" 表示 JDK 8 mysql --version # 输出 mysql Ver 14.14 Distrib 5.7.44 表示 MySQL 5.7 catalina.bat version # Windows 下在 Tomcat/bin 目录执行,能看到 Tomcat 版本号

这三个命令能帮你快速确认环境是否已经就绪。如果 java 输出的是 17 或 21,别急,不用卸载,只需要在 IDE 里把项目语言级别设为 1.8,并在 Tomcat 配置里指定一个 JDK 8 的路径;或者用压缩包里自带的 JRE 文件夹启动。但最省心的方式还是装一个 JDK 8,因为这类型毕设代码里常用到 Java 8 之前的老写法,比如一些默认编码处理逻辑,高版本 JDK 下会有行为差异。

4.2 导入数据库与启动项目:从命令行到 IDE 的操作路径

启动前必须先把数据库准备好。先用命令行把 SQL 脚本导进去:

mysql -u root -p jsp_account < jsp_account.sql

如果没有建库语句,先手动建库:

CREATE DATABASE jsp_account DEFAULT CHARACTER SET utf8mb4; USE jsp_account; SOURCE /path/to/jsp_account.sql;

导入后检查表是否建立:

SHOW TABLES;

看到 t_user、t_bill 这些表名,数据导入就成功了。接着解决数据库密码不一致的问题。源码里数据库连接配置通常在 src/db.properties 或 JDBC 工具类里,改成你自己的 root 密码。这一步做完再启动 Tomcat。用 IDE 部署时,常见做法是配置一个 Artifact 指向项目,然后直接运行 Tomcat 实例。如果你不想用 IDE,也可以用 Maven 打 war 包,直接复制到 Tomcat 的 webapps 目录,然后执行:

# 在 Tomcat 根目录下 bin/startup.bat # Windows bin/startup.sh # Linux / Mac

startup 脚本执行完没有报错不代表启动成功,要打开浏览器访问http://localhost:8080/你的项目名/。如果看到 404,先去 Tomcat 的 logs/catalina.out 或 logs/localhost.log 看异常。这一步是最容易出现「黑匣子」感受的地方——页面打不开但又不知道哪里有日志。实际上日志里已经写清楚了原因,只是你还没养成看日志的习惯。

4.3 登录后第一件事:验证增删改查而不是只看首页

很多人启动成功后,看到登录页能出来就以为万事大吉。我强烈建议你进入系统后,把增删改查四个操作各做一遍。原因是首页和登录页可能只是放出来的门面,而真正的记账功能才是答辩重点。测试路径是这样的:先注册一个新用户,再登录,添加一笔 100 元的餐饮支出,编辑这笔账单把金额改成 120 元,再添加一笔收入,最后删掉刚才新增的测试数据,确保列表回到干净状态。这个过程同时验证了 JSP 页面表单提交、Servlet 路由、DAO 映射、数据库事务和页面跳转。

如果添加账单时报错,优先看控制台输出的 SQL 异常。常见的有「Data truncated for column 'amount'」,说明你传的金额格式不对;还有「Column 'user_id' cannot be null」,说明 session 里的 userId 丢失了,需要检查登录拦截器。等你完整跑通一遍增删改查,你就能自己讲出每个功能的代码位置,这比背源码有效得多。

5. 答辩前避坑:JSP 记账管理系统最常见的 5 个翻车现场与排查方法

5.1 现象:数据库连接报错 Communications link failure

项目一启动,点击登录就报Communications link failure或者Connection refused。原因通常是三类:MySQL 服务没有启动;数据库端口不是默认的 3306;或者连接地址写成了 localhost 但 MySQL 只监听了 socket。解决方法先确认服务是否启动,Windows 上按 Win+R 输入services.msc,找到 MySQL57 或 MySQL 服务看状态;再确认连接 URL 里的端口号和本机一致。血泪经验:不要只改口令不改 URL,有时候源码里写的是jdbc:mysql://localhost:3306/test,而你建的库叫 jsp_account,这样始终会报找不到数据库。正确做法是把 URL 里的库名和账号密码统一改对,再重启 Tomcat。

5.2 现象:JSP 页面中文乱码

页面显示中文变成问号或方块。原因有两个层面:数据库写入时字符集不对,或者页面读取时编码不对。先说数据库,连接 URL 里要有characterEncoding=utf8,并且 SQL 文件本身保存格式是 UTF-8 编码,如果 .sql 文件是 GBK 编码,导入后中文会乱。再看 JSP 页面头部,必须有:

<%@ page contentType="text/html; charset=UTF-8" language="java" %>

以及表单提交时,在 web.xml 里配置一个编码过滤器,否则 POST 请求参数是 ISO-8859-1。常见的过滤器实现:

public class EncodingFilter implements Filter { public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException { req.setCharacterEncoding("UTF-8"); resp.setCharacterEncoding("UTF-8"); chain.doFilter(req, resp); } }

在 web.xml 中注册该过滤器,并设置<url-pattern>/*</url-pattern>。这一步解决 90% 的中文乱码问题。如果做完还乱,就检查 MySQL 表本身的字符集,用SHOW CREATE TABLE t_bill看建表语句,确认是 utf8mb4。有些老的 SQL 脚本是 latin1,需要改成 utf8mb4 再重新导入。

5.3 现象:部署视频里的 Tomcat 路径和你本机对不上

视频里教你把项目拷到 D:\apache-tomcat-8.0.53\webapps,但你本机装的是 C:\Program Files\Apache Software Foundation\Tomcat 9.0,路径带空格,执行 startup.bat 时可能因为路径解析失败导致启动不了。这是很多人卡住的原因。解决办法是不要照抄视频路径,在 IDE 里配置 Tomcat 时选择你的本机路径。如果坚持用命令行,把 Tomcat 放在纯英文且不带空格的路径,比如 C:\tomcat9。另一个隐藏坑是 CATALINA_HOME 环境变量指向了老版本 Tomcat,导致你明明启动了新版本,实际跑的却是老版的配置。打开命令行执行echo %CATALINA_HOME%看看是不是指向你当前用的版本,如果是别的就用set CATALINA_HOME=临时清掉。

5.4 现象:项目报告里的截图和源码对不上

报告里画的功能结构图有五个模块,但源码里只有登录和记账两个模块。答辩时老师若按图索骥提问,你答不出就是硬伤。这种问题必须提前发现并处理。我给你一个可操作的办法:把报告里的每个功能点列成清单,逐个对照源码找对应代码。如果源码里没有某个功能,有两种解法:一是把报告里的这个模块删掉,同步修改 PPT;二是补一个简单的实现代码,哪怕只是做了个静态页面,也能说你做了基础原型。很多同学舍不得改报告,最后答辩露馅,我建议你狠心一点:报告的描述越少你越安全,宁可多写「未完成的部分作为后续展望」,也不要写自己没做过的功能。

5.5 现象:答辩演示时页面报 404 或 500

演示现场崩溃是最尴尬的翻车。404 多半是访问的 url 路径不对,项目名大小写错误或者没有部署成功。500 多半是空指针或数据库连接失败。我的建议是答辩前把常用操作用「无网、无 IDE 调试」的模式跑一遍,也就是说只靠 Tomcat 和 MySQL 服务运行,不开 IDE 的调试模式。提前把 MySQL 服务和 Tomcat 服务启动好,然后走一遍登录和增删改查,确认在只双击 startup.bat 的情况下也能跑通。另一个常用技巧是准备一个「后悔药」:把删除操作的链接改成弹窗确认,这样演示手滑点到删除也不会真的删掉重要数据。如果你的源码里没这个确认,临时加上也不难:

<a href="deleteBillServlet?id=${bill.billId}" onclick="return confirm('确定删除这笔账单吗?')">删除</a>

6. 让毕业设计从「能跑」到「能讲」:加分项与验证清单

6.1 三个低成本加分项

第一个加分项是加一个简单的图表统计页。不用引入 ECharts 那么重,用 Canvas 手绘一个本月支出柱状图也比只放表格有演示效果。第二个加分项是在报告里加一组测试用例,比如「连续录入 10 笔账单后,月度汇总金额是否正确」「输入负数金额是否被拦截」,这些测试数据能让答辩老师看到你的逻辑严谨性。第三个加分项是准备一张系统架构图,手画也行,用 PPT 里的形状画就行,标注 JSP、Servlet、DAO、MySQL 的关系,这比任何口头描述都有冲击力。这三个加分项都围绕一个主线:让老师觉得你不是在背代码,而是真的理解系统分层。

6.2 答辩前 10 分钟验证清单

打开浏览器,依次验证以下 6 项:登录页能正常打开;用测试账号登录成功;进入主页能看到数据列表;新添一笔账单后列表更新;修改这条账单后数据变化;删除后列表恢复。这 6 步操作贯穿了整套系统的增删改查,也是答辩的高频操作。另外,在地址栏直接输入http://localhost:8080/项目名/billList.jsp验证未登录是否跳回登录页——这通常是加分问题「你怎么做权限控制」的现场检验。如果未登录还能直接访问财务列表,说明你没做拦截,临时补一个最简单的 session 校验:

HttpSession session = request.getSession(false); if (session == null || session.getAttribute("userId") == null) { response.sendRedirect("login.jsp"); return; }

把这个校验放在需要保护的所有 JSP 页面开头,足够应付演示场景。我自己的习惯是最后再走一遍数据库备份:把整个 jsp_account 库导出一个新的 SQL 文件,放在压缩包外的独立文件夹,以防演示时误删数据。这个动作救过我一次,从此成了条件反射。希望帮到你,祝你答辩顺利。

本文还有配套的精品资源,点击获取

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/8 6:04:07

How to Monitor and Tune Open and Cached Cursors in Oracle with TaoToken

/* 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 6:04:07

书霸AI问卷设计:让研究从填表开始

很多人第一次做问卷时&#xff0c;常见的思路是先打开表单工具&#xff0c;再凭经验罗列问题。写到最后才发现&#xff1a;题目看似完整&#xff0c;却没有真正对应研究目标&#xff1b;选项设置不够严谨&#xff0c;后续也难以统计分析。回头复盘会发现&#xff0c;问卷质量从…

作者头像 李华
网站建设 2026/10/8 6:03:03

DeepSeek接入VScode和IDEA:TaoToken统一Key配置与本地验证

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

作者头像 李华