新闻详情

新闻详情

首页 / 资讯中心 / 详情

Java智能在线教育系统源码解析:从解压到部署的完整指南

发布时间:2026/9/30 16:47:02来源:尧图网络
Java智能在线教育系统源码解析:从解压到部署的完整指南
简介面向 Java 后端开发者与毕业设计人群这份 Java 智能在线教育系统源码是一套涵盖用户、课程、在线课堂、试题库与成绩管理等核心模块的完整教学项目可用来快速熟悉教育平台的分层架构与实际业务流程。源码包共包含 288 个文件约 20.98MB其中以 66 个 Java 源文件、33 个 HTML 前端页面和 129 个 Markdown 说明文档为主并附带 SQL、XML 配置、CSS/JS 以及图标资源基本覆盖后端逻辑、页面展示与项目文档目录结构清晰便于查找对应模块。资源包内还提供了数据库脚本、Maven 构建文件和课程管理等页面源码便于直接导入运行或二次开发尤其适合作为课程设计、毕业设计或在线教育入门项目的参考范本。目前已有 237 人学习对于希望以完整项目为起点快速积累实战经验的开发者来说很有参考价值。1. Java智能在线教育系统源码先别急着解压看懂这几个文件再跑Java智能在线教育系统源码.zip这个包我解压后的第一反应是目录这么薄也敢叫在线教育系统。但把mvnw.cmd、bootstrap.min.css、manage.css、reset.css、laydate.css、bootstrapValidator.min.css这几个文件摆在一起再联系到course_add.html这个页面整个技术路线就清楚了——这是一个走传统Java Web路线的教育后台学生、教师、管理员三类账号课程、试题、成绩三大业务前端用Bootstrap做布局laydate管日期选择bootstrapValidator管表单校验后端按Spring Boot/SSM MySQL的常见组合组织。它不花哨但业务闭环完整适合正在做Java课程设计、毕业设计或者想找一套真实教育后台路子练手的开发者。别急着上来就跑源码先花十分钟把这几个文件的作用弄明白后面省掉很多坑。2. 从 mvnw.cmd 到可运行的系统环境准备与目录辨识Java 项目里只要出现 mvnw.cmd基本可以断定这包是从 Spring Initializr 或类似脚手架生成出来的。因为 Maven Wrapper 是脚手架默认带上的一份脚本和配置它让团队不用在机器上预装指定版本的 Maven直接执行 mvnw 或 mvnw.cmd 就能按 pom.xml 里锁定的版本完成构建。真正手写的 SSM 项目很少会自带这一套这个细节直接决定了你后面编译命令怎么敲。拿到压缩包第一步别双击解压先建一个干净目录把内容释放进去再看目录结构。unzip Java智能在线教育系统源码.zip -d edu-system find edu-system -maxdepth 2 -type f | head -60unzip -d指定解压目录避免文件散落到当前路径find加maxdepth 2只看前两层防止一次性刷出几百个静态资源文件。head -60控制输出行数。如果文件名在 Linux 下显示乱码说明压缩包是在 Windows 下用 GBK 编码压的后面第 5 章会讲对应解法。2.1 解压后先读这几个文件把前面 find 出来的文件过一遍基本就能反推整个项目的技术栈。这份包里的文件清单按用途整理如下。文件作用mvnw.cmdMaven Wrapper 的 Windows 执行脚本锁定 Maven 版本bootstrap.min.cssBootstrap 压缩样式页面布局和组件基础manage.css后台管理模块私有样式覆盖 Bootstrap 默认观感reset.css浏览器默认样式重置统一各浏览器的边距、字号差异laydate.css日期插件 laydate 的样式文件bootstrapValidator.min.css表单校验插件 bootstrapValidator 的样式文件glyphicons-halflings-regular.eotBootstrap 字体图标的 EOT 格式字体文件iconfont.eoticonfont 字体库的 EOT 格式字体文件course_add.html新增课程页面静态 HTML.gitignoreGit 版本控制忽略规则注意glyphicons-halflings-regular.eot和iconfont.eot不是图片是字体文件。EOT 是老式 IE 浏览器用的字体格式现代浏览器一般用 woff2 或 ttf。这个包里保留 EOT说明作者要么是从旧工程直接复制过来的要么在做老系统兼容。看到这两个文件不用惊讶它们只影响图标显示不影响系统功能。从静态文件的组织方式看前端没有引入 Vue、React 等框架而是 jQuery Bootstrap 插件这套经典组合。这种选型对于课程设计、毕业设计来说是稳的学习成本低排错容易网上资料最多。很多同学一上来就想上 Vue 前后端分离结果光环境就折腾两天这个包恰好避开了那条路。2.2 编译启动常走的四步这个包没有给出一份完整的 README 部署文档我按这类 Maven 管理 Java 项目的常规做法把启动路径拆成四步。第一步确认 JDK 版本。项目是 Java 标签下的传统 Web 工程JDK 1.8 最稳。如果本机装的是 JDK 17编译时大概率会遇到 javax 包缺失或反射相关的报错建议直接装一个 1.8 备用。第二步准备 MySQL 数据库。新建一个库名字建议与数据源配置保持一致比如edu_system。项目里如果没有自带 sql 脚本就等启动后再用表结构逆向生成或者参考第 3 章的核心表设计手工建表。这一步要确认账号密码后面改动都在配置里。第三步修改数据源配置。Spring Boot 项目通常会从 resources 目录加载配置我一般会在包里翻一下 application.yml 或 application.properties没有就直接建一个。spring: datasource: url: jdbc:mysql://localhost:3306/edu_system?useUnicodetruecharacterEncodingutf8serverTimezoneAsia/Shanghai username: root password: 123456 driver-class-name: com.mysql.cj.jdbc.Driver thymeleaf: prefix: classpath:/templates/ suffix: .html cache: false mybatis: mapper-locations: classpath:mapper/*.xml type-aliases-package: com.edu.entity server: port: 8080url里的characterEncodingutf8负责处理中文乱码serverTimezoneAsia/Shanghai是 MySQL 8.x 必须加的时区参数。driver-class-name对版本敏感MySQL 8.x 用com.mysql.cj.jdbc.DriverMySQL 5.x 要用com.mysql.jdbc.Driver照抄错了会直接报 ClassNotFound。server.port是后端端口如果 8080 被本地其他项目占了改成 8081 或 9090 再启动。第四步编译并启动。在项目根目录执行cd edu-system ./mvnw.cmd clean package -DskipTests java -jar target/edu-system-0.0.1-SNAPSHOT.jarclean清掉上次编译产物package打包成可运行 jar-DskipTests跳过单元测试。Windows PowerShell 下执行当前目录脚本要加.\前缀写成.\mvnw.cmd否则会提示无法识别命令。jar 包文件名取决于 pom.xml 里的 artifactId 和 version如果打包出来名字对不上用ls target/*.jar看实际文件名。提示如果包内没有 application.yml检查 src/main/resources 下有没有 application.properties两者功能相同写法格式不同。properties 文件里对应项是spring.datasource.url...。2.3 一个容易忽略的分支判断解压后先判断工程到底是 Spring Boot 还是传统 SSM方法很简单看有没有 webapp 目录和 Spring Boot 启动类。find edu-system -maxdepth 4 -type d | grep -E webapp|WEB-INF|java find edu-system/src/main/java -name *Application.java第一条 find 查 webapp 目录有它说明是传统 SSM 或 Spring MVC 结构main 方法不在 jar 里而要丢进 Tomcat 的 webapps 目录。第二条 find 查 Application 启动类查得到说明是 Spring Boot 内嵌容器直接跑 jar 就行。两条结果都没有就打开 pom.xml 看 parent 标签spring-boot-starter-parent是 Boot 项目最明显的特征。还要提醒一个细节摘要描述里提到包里可能带一个 health-management-system-master 健康管理子模块。我解压的这份压缩包文件列表里没有单独出现这个目录它可能是发布者把另一个仓库一起打了进去也可能是与主项目合并后目录被整合到了其他地方。解压后先在根目录执行ls确认存在就单独部署不存在就别为这个模块硬调路径更不要据此推断系统里应该有健康打卡页面。3. 核心模块拆解用户、课程、成绩三张表如何撑起教育后台在线教育系统听起来功能多剥掉在线课堂的视频通讯部分业务核心就三块用户体系、课程体系、成绩体系。视频直播通常依赖 WebRTC 或第三方 SDK需要单独的媒体服务不是一份课程设计源码能承载的内容。这套代码的骨架就是数据库里那几张核心表和围绕它们的一组增删改查接口。我按这个场景下最常见的表结构设计把核心表给出来。如果你解压后看到 sql 脚本对照着看没有脚本直接按这个建库也能把系统撑起来。3.1 四张核心表与字段设计CREATE TABLE sys_user ( id INT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(50) NOT NULL UNIQUE, password VARCHAR(64) NOT NULL, real_name VARCHAR(50), role TINYINT NOT NULL COMMENT 1学生 2教师 3管理员, mobile VARCHAR(11), create_time DATETIME DEFAULT CURRENT_TIMESTAMP ); CREATE TABLE course ( id INT PRIMARY KEY AUTO_INCREMENT, course_name VARCHAR(100) NOT NULL, teacher_id INT NOT NULL, cover_url VARCHAR(255), begin_time DATE, end_time DATE, status TINYINT DEFAULT 0 COMMENT 0未开课 1进行中 2已结课, INDEX idx_teacher (teacher_id), CONSTRAINT fk_course_teacher FOREIGN KEY (teacher_id) REFERENCES sys_user(id) ); CREATE TABLE question_bank ( id INT PRIMARY KEY AUTO_INCREMENT, course_id INT NOT NULL, type TINYINT COMMENT 1单选 2多选 3判断 4填空 5问答, content TEXT, answer VARCHAR(500), difficulty TINYINT COMMENT 1易 2中 3难 ); CREATE TABLE exam ( id INT PRIMARY KEY AUTO_INCREMENT, course_id INT, title VARCHAR(100), total_score INT, question_ids VARCHAR(255) ); CREATE TABLE score ( id INT PRIMARY KEY AUTO_INCREMENT, student_id INT NOT NULL, exam_id INT NOT NULL, course_id INT, score DECIMAL(5,1), answer_text TEXT, create_time DATETIME DEFAULT CURRENT_TIMESTAMP, INDEX idx_student (student_id) );sys_user 表里的 role 字段是整套权限系统的钥匙用 TINYINT 存 1、2、3 三个档位判断角色时直接比较数字比字符串匹配快。course 表的 teacher_id 外键指向 sys_user.id说明教师必须是先存在的用户学生报名课程其实不在 course 表上做关联而是在成绩表里通过 student_id 记录一种选课关系。question_bank 表的 answer 字段直接存正确答案字符串而不是单独建标准答案表这个设计在数据量小时完全够用省掉一次关联查询。exam 表里的 question_ids 用逗号拼接字符串存题目 ID例如 1,5,12,23这不是优雅的设计但在这个体量的教育系统里很常见。想改也可以但要把取题和组卷的逻辑一起重构新手不建议动。score 表冗余了 course_id是为了查成绩排行榜时少连一次 course 表。3.2 权限控制与角色菜单user 表里区分了三种角色但如果页面上不拦截任何登录用户都能访问管理页面权限设计就是摆设。常见做法是写一个登录拦截器按 URL 前缀判断当前会话角色够不够资格访问。public class LoginInterceptor implements HandlerInterceptor { private static final MapString, Integer ROLE_PRIORITY new HashMap(); static { ROLE_PRIORITY.put(/admin/, 3); // 管理员专属 ROLE_PRIORITY.put(/teacher/, 2); // 教师可访问 ROLE_PRIORITY.put(/student/, 1); // 学生可访问 ROLE_PRIORITY.put(/course/, 0); // 登录即可 } Override public boolean preHandle(HttpServletRequest req, HttpServletResponse resp, Object handler) throws Exception { HttpSession session req.getSession(); Object roleObj session.getAttribute(role); if (roleObj null) { resp.sendRedirect(/login.html); return false; } int role (Integer) roleObj; String uri req.getRequestURI(); for (Map.EntryString, Integer e : ROLE_PRIORITY.entrySet()) { if (uri.startsWith(e.getKey())) { if (role e.getValue()) { resp.setStatus(403); resp.getWriter().write({\code\:403,\msg\:\无权限\}); return false; } break; } } return true; } }preHandle里先取 session 中的 role没有就重定向到登录页。ROLE_PRIORITY 表定义了每段 URL 所需的最低角色值学生角色值是 1访问/admin/开头路径时需要 3直接返回 403。这个拦截器在 Spring Boot 里注册到 WebMvcConfigurer在 SSM 里配置到 spring-mvc.xml 中逻辑完全复用。前端菜单的显隐也是同一套逻辑登录后拿到 role 字段页面里用c:if或 JavaScript 判断role 小于 3 就不渲染“用户管理”“系统设置”这些入口。拦截器管后端菜单显隐管前端两层都做才叫完整权限控制。3.3 成绩计算的数据流成绩模块的关键是自动评分。单选题、判断题的答案是可以机器比对的问答题只能靠人工阅卷所以 ScoreService 里通常会把题型分开处理。public Score calculateScore(Exam exam, MapInteger, String userAnswers) { Score s new Score(); s.setExamId(exam.getId()); ListQuestion questions questionMapper.selectByIds( Arrays.asList(exam.getQuestionIds().split(,)) ); double total 0; int autoCount 0; // 可自动判分的题数 double eachScore exam.getTotalScore() * 1.0 / questions.size(); for (Question q : questions) { String userAnswer userAnswers.get(q.getId()); // 单选、判断直接比对答案 if (q.getType() 1 || q.getType() 3) { autoCount; if (q.getAnswer().trim().equalsIgnoreCase( userAnswer null ? : userAnswer.trim())) { total eachScore; } } // 问答题跳过等待教师人工评分 } s.setScore(Math.round(total * 10.0) / 10.0); return s; }question_ids.split(,)把试卷里的题目 ID 还原成列表eachScore按题目数量均分总分。Math.round保留一位小数防止浮点误差把 89.55 算成 89.5499。问答题在循环里被跳过最后成绩落到score表字段里预留的answer_text存学生完整作答内容教师复核时随时调出来看。这套数据流的关键点是题目的标准答案和学生的作答内容一定要分开存。把答案写死在代码里以后换题目就要改代码重新编译这是最常见的翻车设计。4. course_add.html 里的表单学问Bootstrap 校验与 laydate 日期联动压缩包里最醒目的业务页面就是 course_add.html这是“新增课程”的前端页面。它看似只是一个静态 HTML实际上一门课从填写到入库的交互细节全在这里。把这个页面看透你就知道这个项目前端是怎么组织、后端接口是怎么对接的。4.1 从文件名还原页面结构course_add.html 是裸 HTML 文件名不是 courseAdd.jsp也不是模板引擎渲染的 .ftl说明页面要么放在 Spring Boot 的 static 目录里要么放在 webapp 根目录下由框架直接返回。这种写法的好处是页面本身不依赖后端模板变量打开文件就能看到效果适合快速开发一个教学演示系统。head 部分的静态资源引用顺序很讲究先第三方的 bootstrap.min.css再自己的 manage.css 和 reset.css最后才是插件样式 laydate.css 和 bootstrapValidator.min.css。!DOCTYPE html html langzh-CN head meta charsetUTF-8 title新增课程/title link relstylesheet hreflibs/bootstrap-3.3.7/css/bootstrap.min.css link relstylesheet hrefcss/manage.css link relstylesheet hrefcss/reset.css link relstylesheet hrefplugins/laydate/laydate.css link relstylesheet hrefplugins/bootstrapValidator/bootstrapValidator.min.css /head body form idcourseForm classform-horizontal div classform-group label classcontrol-label课程名称/label input typetext namecourseName classform-control >laydate.render({ elem: #beginTime, type: date, min: 0, done: function (value) { $(#courseForm).bootstrapValidator(revalidateField, beginTime); } }); $(#courseForm).bootstrapValidator({ fields: { beginTime: { validators: { notEmpty: { message: 开课日期不能为空 }, date: { format: YYYY-MM-DD, message: 日期格式不正确 } } } } }).on(success.form.bv, function (e) { e.preventDefault(); $.ajax({ url: /course/add, type: POST, data: $(#courseForm).serialize(), dataType: json, success: function (resp) { if (resp.code 0) { location.href /course/list.html; } else { alert(resp.msg); } } }); });laydate.render的done回调里调用revalidateField是在插件把值写进 input 后主动通知 bootstrapValidator 重新检查这个字段。min: 0表示今天之前的日期不可选这是课程管理的常见业务限制。success.form.bv事件是表单所有校验通过后触发的钩子这里必须e.preventDefault()阻止原生表单提交否则页面直接刷新跳转AJAX 不会执行。很多第一次接触这两个插件的人会掉进三个坑一是 laydate 初始化的元素找不到因为 script 放在了 body 末尾但选择器写错二是 input 没加 readonly日期面板和键盘输入互相打架三是success.form.bv里忘了e.preventDefault()表单刷新了数据没入库。前两个是写法问题第三个是逻辑问题排错方向完全不同。4.3 换主题与样式的克制用法manage.css 和 reset.css 分工明确reset.css 清掉浏览器的默认间距和边框manage.css 负责后台整体的布局风格Bootstrap 的样式则覆盖所有通用组件。改观感时只动 manage.css不要碰第三方文件。改 bootstrap.min.css 可能引起全局组件样式错位看起来像是改了背景色实际上整个页面的栅格间距全偏了。提示如果页面图标显示为方块或无法渲染优先检查字体文件路径。glyphicons-halflings-regular.eot 和其他字体文件需要与 css 保持相对目录一致路径写错不会报错只会让图标变成乱码。5. 部署与排查五个高频坑位与对应解法这类源码包最大的问题是默认读者已经配好了环境但现实中八成读者卡在环境这一关。下面这些坑我基本每个都踩过一轮有的可以提前预防有的只能靠日志定位。每条按现象、原因、解决三步记录方便直接对照。5.1 启动阶段的三个经典卡点现象一双击 mvnw.cmd 后黑色窗口一闪而过什么输出都看不到。原因是 Windows 下直接双击执行 .cmd 脚本脚本跑完窗口自动关闭Maven Wrapper 又没有在末尾写 pause所以正常输出也被一起吞掉了。加上首次执行要下载 Maven 依赖整个过程可能持续几分钟窗口一关根本不知道是成功还是失败。解决方法是打开命令行在项目根目录执行.\mvnw.cmd -v先验证脚本和 Maven 版本再执行.\mvnw.cmd clean package -DskipTests。一定要在工程根目录执行脚本内部要用相对路径找 pom.xml。现象二启动时控制台报Failed to configure a DataSource: url attribute is not specified。原因是 Spring Boot 扫描到了 mybatis 自动配置但配置文件里没有给数据源填 url、username、password 这几项。常见情况是配置文件文件名不对Spring Boot 只认 application.yml 或 application.properties写成 datasource.yml 是不会被加载的。还有一种是配置文件在 src/main/resources 下但编译后 classpath 里没有它target 目录被清理过重打包时把资源文件漏了。解决方法是先确认 resources 目录下有没有合法命名的配置文件再打开文件看spring.datasource.url是否指向正确的库名。数据库没建、用户名密码不对也会报类似错误在 MySQL 命令行用show databases确认库存在。现象三项目启动成功浏览器访问http://localhost:8080却长时间白屏或连接被拒绝。原因是端口没监听成功或者服务启动时间较长浏览器请求太早落空。Spring Boot 内嵌 Tomcat 启动时间一般在 5 到 15 秒加了大量依赖会更慢。先看控制台有没有打印Started Application in X.XXX seconds再用netstat -ano | findstr :8080查端口占用Windows 下经常遇到 8080 被其他 Java 进程或 Skype 占掉。处理方式是把 application.yml 里的server.port改成 8081然后重启。5.2 页面与数据层的隐蔽问题现象四laydate 日期控件选好日期后bootstrapValidator 仍然提示“开课日期不能为空”。原因是 bootstrapValidator 在页面初始化时已经给 input 绑定了校验规则它监听的是原生 input 事件。laydate 通过 JS 赋值时没有触发这个事件表单校验插件认为字段还是空的。解决方法是按第 4 章代码里写的那样在 laydate 的done回调中手动调用revalidateField(beginTime)强制插件重新检查。任何动态赋值的字段接 bootstrapValidator 都可能遇到这个坑不只日期控件下拉框联动赋值也一样。现象五课程列表页面中文乱码或者保存课程后数据库中显示问号。原因是 URL 连接串缺少characterEncodingutf8或者 MySQL 库表的字符集不是 utf8mb4。Java 后台的字符串通过 JDBC 写入 MySQL 时连接参数里的字符集直接影响传输编码。解决方法是把 jdbc url 改为jdbc:mysql://localhost:3306/edu_system?useUnicodetruecharacterEncodingutf8serverTimezoneAsia/Shanghai同时在命令行执行alter database edu_system default charset utf8mb4;双管齐下。现象六点保存按钮后课程确实新增成功但页面没有跳转控制台也没有任何报错。原因是表单走的是原生 submit 提交后端虽然插入了数据但浏览器停留在原页面用户没有直观反馈。更隐蔽的情况是 bootstrapValidator 校验通过后直接 submit后端返回 JSON 但浏览器把 JSON 当页面渲染。解决方法是把保存按钮固定为typesubmit在success.form.bv钩子里用e.preventDefault()阻止原生提交改为 AJAX 请求成功后在回调里跳转课程列表页。记住后端接口返回 JSON 时前端绝不能依赖原生表单提交。6. 二次开发检查清单把项目跑通后按下页面的四个验证很多拿到源码的人把“页面能打开”当成部署成功的标准实际上登录页能打开只说明静态资源工作正常数据库连接、业务接口、权限拦截有没有生效完全不知道。我自己的验证方法是跑一套固定的检查清单全部绿灯才敢确认系统可交付。# 1 登录页与关键静态资源能正常返回 curl -I http://localhost:8080/course_add.html curl -I http://localhost:8080/css/manage.css # 2 数据库核心表已存在且能写入 mysql -uroot -p -e select count(*) from edu_system.sys_user; # 3 后端接口真实有响应 curl -X POST http://localhost:8080/login \ -d usernameadminpassword123456 \ -H Content-Type: application/x-www-form-urlencoded # 4 端口监听正常 netstat -ano | grep :8080 # 5 查看日志确认无堆栈异常 tail -n 50 logs/spring.log第一条命令返回 HTTP 状态码 200说明页面和样式文件路径配置正确404 则说明静态资源路径与页面引用对不上。第二条命令确认数据库表结构已创建count 结果为 0 是正常现象报错说明建表脚本没执行。第三条命令做一次真实登录动作返回 JSON 里能看到登录成功或密码错误而不是 404 或 500才能证明 Spring 容器和业务代码都活着。第四条命令看端口是否处于 LISTEN第三条命令成功但这里查不到端口多半是服务已经退出了。第五条命令检查运行日志出现Exception或ERROR级别的堆栈就必须处理不要带着异常往下走。第一次部署这类源码时我把登录页能打开当成部署成功等第二天发现课程保存失败才知道数据库里的表根本还没建。从那以后我每次拿到 Java 教育系统源码都会把这五条检查强制走一遍尤其是数据库表数量和一个页面的真实交互这两个点比任何报错信息都诚实。希望帮到你。本文还有配套的精品资源点击获取
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

UltraEdit 安装时请注意:环境变量与 TaoToken 配置避坑指南 2026/9/30 19:33:06

UltraEdit 安装时请注意:环境变量与 TaoToken 配置避坑指南

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

阅读更多 →
2025年人工智能十大趋势 - 智能行动者的崛起:TaoToken 统一 Key 接入 AI Agent 实战 2026/9/30 19:33:06

2025年人工智能十大趋势 - 智能行动者的崛起:TaoToken 统一 Key 接入 AI Agent 实战

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

阅读更多 →
芯片焊接工艺包选型:订单碎片化后要盯住的4个硬指标 2026/9/30 19:33:06

芯片焊接工艺包选型:订单碎片化后要盯住的4个硬指标

跟一位做功率器件的朋友吃饭,他吐槽最近半年的采购清单:芯片焊接工艺包从过去一年谈一次,变成一个季度来三单,每一单的焊料类型、焊接方式、装片数量都不一样,数量从八千颗一路砍到六百颗。他问我,这种碎单…

阅读更多 →
一条停水通知花了几小时,TaoToken 能不能把它压缩到几秒? 2026/9/30 19:32:59

一条停水通知花了几小时,TaoToken 能不能把它压缩到几秒?

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

阅读更多 →
初识MCP(Model Context Protocol):从零搭建一个可用的MCP Server 2026/9/30 19:32:59

初识MCP(Model Context Protocol):从零搭建一个可用的MCP Server

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

阅读更多 →
【Bug已解决】npm error code ENOTEMPTY: directory not empty, rename claude-code 解决方案:用 TaoToken 统一 Key 通道修 2026/9/30 19:32:53

【Bug已解决】npm error code ENOTEMPTY: directory not empty, rename claude-code 解决方案:用 TaoToken 统一 Key 通道修

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

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉