JavaWeb毕设实战:在线教务管理系统架构与核心模块解析
简介一份基于SSM框架Spring、SpringMVC、MyBatis的JavaWeb在线教务管理系统完整源代码面向计算机专业学生与毕业设计开发者尤其适合需要课程设计或毕设参考的JavaWeb入门者。系统涵盖课程、教师、学生等基础信息管理并实现在线考试模块可帮助读者理解业务系统从数据库建模、持久层操作到控制器与页面渲染的完整链路。压缩包共424个文件、约14.92MB以class编译文件、xml配置与MyBatis映射文件、jsp页面、java源码和jar依赖库为主另含SQL初始化脚本、JS/CSS静态资源、字体文件等构建出一个可直接部署运行的项目全貌。目前已有2081人浏览学习。源码可编辑、可二次开发目录结构规范适合深入练习SSM三大框架的整合配置、理解MyBatis逆向工程生成的Example查询类并借鉴在线考试相关的业务设计思路。1. 在线教务管理系统一份值得动手的JavaWeb毕设骨架每年毕业季JavaWeb方向的选题翻来覆去就那么几个在线教务管理系统是其中生命周期最长的一个。它的业务足够贴近校园场景边界清晰从用户登录到选课、成绩管理这套流程能完整覆盖Servlet、JSP、MVC、数据库事务这些核心考点做出来之后演示效果又直观——辅导员、学生、教师三种角色切换在一套系统里答辩时讲起来不费劲。如果你手头只有一份源代码压缩包别急着照抄先跟着这篇把架构、核心代码、运行配置和踩坑点过一遍把它变成你能讲清楚、能现场改、能应对追问的项目这才是毕设参考的意义。2. 从技术栈到数据表在线教务系统的架构先立住2.1 技术选型SSM还是Spring Boot取决于答辩环境先回答一个绕不开的问题教务管理系统这类JavaWeb项目现在到底该用SSMSpring SpringMVC MyBatis还是Spring Boot我的看法很直接——如果导师或答辩组更看重“过程完整”选SSM是稳妥的因为分层的痕迹明显控制器、Service、Dao各司其职讲工作原理时每一层都有话说如果学院本身已经要求工程化范式那Spring Boot加MyBatis也不冲突它本质上还是Spring那一套只是自动装配帮你省去了大量XML配置。我一般会这样判断打开你拿到的源代码包看它的目录结构。如果里面还有spring-context.xml、springmvc.xml这些一堆配置文件它就是传统SSM结构老老实实按Web应用去部署如果只有application.yml那就是Spring Boot直接打成war或jar处理。 两种方式在线教务系统的业务代码基本可以平移区别集中在依赖管理和部署方式。不要因为网上帖子鼓吹某个框架而临阵换技术栈毕设翻车最多的就是中途换框架。至于前端这份代码通常逃不开两种形态一种是JSP加JSTL标签在服务端渲染另一种是前后端分离用Vue或原生HTML加Ajax调接口。服务端渲染的版本调试链路短遇到问题时打开页面看控制台就够了前后端分离的版本演示效果更干净但部署时要额外处理静态资源的跨域和路径问题。从答辩稳定性出发JSP方案容错率更高所以后文以JSP加Servlet的传统JavaWeb工程为主线前端的路径规则都基于这个前提来讲。2.2 模块边界怎么切三种角色决定三套权限逻辑在线教务系统的业务建模并不复杂核心是角色。学生、教师、教务管理员这三种账号对应的操作集合完全不同因此设计时不要先写功能要先画角色的用例边界。管理端负责维护学生信息、教师信息、课程信息以及每学期的开课计划教师端负责录入所授课程的成绩按班级导出名单学生端负责选课、退课、查课表、查成绩。权限控制这条路新手容易栽在“到处判断角色”上。有的代码在每个Servlet里都写if(1.equals(user.getRole()))逻辑散得到处都是加一个功能要动五处。正确的做法是定义统一的角色常量在用户登录后把角色放进Session再用一个Filter统一拦截未登录请求具体到某个功能给URL命名规则加上前缀比如/admin/、/staff/、/student/*用通配匹配做粗粒度的权限管控。细粒度的操作判断放进Service层而不是Controller层因为Controller只管参数接收和视图跳转角色判定属于业务规则两者不要混在一起。2.3 数据表设计与索引边界先画ER图再建表表结构是这类系统最值得花时间的地方。标准教务系统最少要落这么几张表学生表学号做业务主键、教师表工号标识、用户表账号密码角色、课程表、学期开课表、选课表、成绩表。这里有个常见的分歧点——用户表是否单独拆出来。我建议单独拆原因是学生和教师共享登录机制字段高度一致拆出来之后登录逻辑只需要查一张表后面加“管理员”角色也不用动学生和教师表结构。几张核心表的关键约束如下表名关键字段约束建议备注sys_useruser_id、username、password、role_typeusername唯一password存密文不要用明文student_infostudent_no、user_id、class_name、majorstudent_no唯一user_id关联sys_user冗余班级字段可以接受course_infocourse_id、course_name、credit、capacitycourse_name非空容量用于选课校验semester_coursesc_id、semester、course_id、teacher_id(semester, course_id)组成唯一索引一门课一个学期只开一次course_selectionid、student_no、sc_id(student_no, sc_id)唯一联合索引防止重复选课scoreid、student_no、sc_id、scoresc_id单独建索引成绩查询频率高索引这里有个血泪经验选课表千万别只给主键建索引统计选课人数时经常会跑 (semester, course_id) 这两个条件的查询没有联合索引数据量一到就全表扫描页面上卡顿的用户体验就是这么来的。成绩表同理查某门课的成绩分布时一次要扫几千行把sc_id列为索引后性能差异非常明显。3. 登录、选课、成绩三个硬骨头核心模块怎么写3.1 登录状态管理与用户密码用Session还是Token登录模块看起来简单但它是整个系统被问得最频繁的部分。“用户密码怎么存的”“登录状态保存在哪”“登出为什么要清理Session”——答辩组老师就爱追着这几点问。趁代码在手边先把底层思路理顺。密码存储的底线是绝不能明文入库。JavaWeb项目里最常见的做法是MD5加盐虽然现在上看SHA-256更好但毕设代码里MD5仍然是被问不倒的选择注册或初始化密码时对“密码 固定盐值”做一次哈希再入库用户登录时做同样运算后比对结果。盐值可以是一个全局常量但注意不要直接用账号当盐因为账号会变化密码比对时就容易出幺蛾子。登录后的会话保持传统JSP项目最顺手的方案是HttpSession。登录成功后把user对象放入session之后每个受保护页面通过过滤器判断session是否存在。下面这段就是一个最小的登录检查过滤器public class LoginFilter implements Filter { private static final String LOGIN_PATH /login.jsp; Override public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException { HttpServletRequest request (HttpServletRequest) req; HttpServletResponse response (HttpServletResponse) resp; String uri request.getRequestURI(); // 放行登录页面、登录接口和所有静态资源 if (uri.endsWith(.jsp) || uri.contains(/user/login) || uri.contains(/static)) { chain.doFilter(req, resp); return; } Object loginUser request.getSession().getAttribute(loginUser); if (loginUser null) { // 未登录统一跳转带redirect参数用于登录后回到原页面 response.sendRedirect(request.getContextPath() /login.jsp); return; } // 已登录用户的请求继续向下传递 chain.doFilter(req, resp); } // init() 和 destroy() 保持默认实现即可 }这段代码的逻辑很清楚第一步对所有JSP页面和静态资源放行避免页面引用的css、js被拦截第二步检查Session里的登录标记不存在就跳回登录页最后一步放行正常请求。参数上要注意两点request.getContextPath()是获取Web应用的部署根路径如果工程部署后包名是/ems那么这里会自动拼成/ems/login.jsp放行逻辑里的.endsWith(.jsp)意味着没有被包装过的页面能直接访问这对毕设项目是能接受的简化因为JSP页面本身会在页面顶部检查Session是否有效会再补一次保险。3.2 选课模块事务与容量校验的顺序不能错选课是一个典型的高并发敏感场景——虽然毕设不会有真实并发压力但事务边界必须正确。正确逻辑是先查这门课的已选人数再校验不超过课程容量最后插入选课记录。注意第三步插入和第二步的数量校验之间不能分开执行否则就有超选风险。在JavaWeb框架里最低成本的保证是用一个标注了事务边界的方法包住整个流程。如果你拿到的源码是SSM最常见的是在Service实现类上加Transactional注解。但很多人忽略了rollbackFor属性Service public class CourseSelectionService { Autowired private CourseSelectionDao courseSelectionDao; Autowired private SemesterCourseDao semesterCourseDao; Transactional(rollbackFor Exception.class) public void selectCourse(String studentNo, Integer scId) throws BizException { // 1. 检查是否已经选过 Integer count courseSelectionDao.countByStudentAndSc(studentNo, scId); if (count ! null count 0) { throw new BizException(400, 该课程已选不要重复操作); } // 2. 加锁查课程信息for update 防止并发超选 SemesterCourse sc semesterCourseDao.selectByIdForUpdate(scId); if (sc null) { throw new BizException(404, 开课信息不存在); } // 3. 已选人数是否达到容量上限 int selected courseSelectionDao.countByScId(scId); if (selected sc.getCapacity()) { throw new BizException(400, 选课人数已满请选择其他课程); } // 4. 正式写入选课记录 CourseSelection record new CourseSelection(); record.setStudentNo(studentNo); record.setScId(scId); courseSelectionDao.insert(record); } }逻辑说明我在创建选课方法上加了事务注解并明确指定任何异常都触发回滚这一步是为了防止插入选课记录后后续操作失败导致脏数据。真正影响并发安全的是selectByIdForUpdate这个操作它会在查询时对目标行加锁让并发请求排队进入校验流程毕设答辩时讲出这一步比单纯说“我用了事务”更有说服力。参数上scId是学期开课表的自增主键业务上用户看到的是课程编号而非开课编号所以在Controller直接接收字符串时要做一个类型转换否则前端传错格式会抛400。这里没有对容量做悲观锁之外的选择因为毕设场景中缓存减库存属于另一个层次的讨论不建议在代码里混进来增加复杂度。3.3 成绩模块批量更新与页面回显成绩录入这段核心代码通常围绕“批量”二字展开。教师提交一个班几十个学生的成绩最忌讳的是循环逐条update——慢而且一旦中间某条失败整个批次处于半完成状态。讲得通的写法是两条路要么用批量update语句一次提交要么用事务包住多条单条语句二者在毕设项目的演示数据量级上性能没有显著差异但事务写法更容易让代码评审人接受。批量插入方向的典型实现思路是在Dao层写一个带循环的批量更新方法最终执行为多行SQL。这里不展开具体SQL重点说回显逻辑成绩录入页面通常按学期开课表的scId加载学生名单教师端界面上会看到课程名称、班级和名单列表提交后需要回到同一个名单并提示“保存成功”。实现上有三个容易漏的点第一名单列表要先用JOIN查询把student_info表和score表左边连接保证没有成绩的学生也会出现在名单里第二表单每行的name必须带上学生主键比如score_2021001后端按前缀解析第三已录入的成绩在回显时要填进输入框这个字段不能从score表取要从你刚提交的那次结果中取。这三处都处理好了演示时教师的操作路径才显得顺畅不会出现“保存后页面空白”的尴尬。4. 用IDEA把项目跑起来连接MySQL与Tomcat部署配置4.1 导入项目的最小操作路径拿到源码后最大的分水岭是“能不能在十分钟内跑起来”。先摸清这个包是什么构建方式——如果是Maven工程根目录必须有pom.xml如果是传统Web工程里面是WebContent或者src/main/webapp目录。用IDEA导入时Maven工程选择Open as Project然后等待依赖下载传统工程则要先配置Project Structure里的Modules把源码目录标记为Sources把webapp标记为Web Resource Directory。这里有个让新手翻车的高频点IDEA打开别人的工程后自己的JDK版本和工程要求不一致编译报错或者运行时报UnsupportedClassVersionError。导入完成第一件事就是File - Project Structure - Project确认Project SDK和Language Level跟代码基础日期匹配。JDK 8是JavaWeb毕设最常见的版本如果代码里没有使用新语法保持JDK 8即可。4.2 连接MySQL驱动版本、时区与编码连接数据库是卡住最多人的环节。在线教务系统的源码通常会带一个jdbc.properties或者db.properties位置在src/main/resources下核心内容长这样jdbc.drivercom.mysql.cj.jdbc.Driver jdbc.urljdbc:mysql://localhost:3306/edu_admin?useUnicodetruecharacterEncodingutf8serverTimezoneAsia/Shanghai jdbc.usernameroot jdbc.passwordyour_password注意驱动类这一行如果是MySQL 8.x的JDBC驱动驱动类名必须是com.mysql.cj.jdbc.Driver连接URL里必须带serverTimezone参数否则启动时会直接报时区错误如果连的是MySQL 5.7老驱动类名com.mysql.jdbc.Driver还能用但新版驱动已经把旧类名丢掉了。我见过太多人卡在这一步代码没问题就是驱动包版本和数据库版本不匹配。建议直接查pom.xml或lib目录里mysql-connector的版本然后确认对应数据库版本。编码参数里characterEncodingutf8必须保留否则后面中文乱码排查会让你怀疑人生。本地开发时用户名和密码如果包含特殊字符需要按URL编码转义比如密码里带就要写%40这个细节在导入他人项目时尤其容易漏——对方的密码是123456abc到你这没改就直接报访问拒绝。4.3 Tomcat与Artifact配置IDEA里运行JavaWeb项目涉及一个绕不开的概念——Artifact它决定了部署到Tomcat的包里到底装了哪些文件。老手之间经常说“我这是war exploded模式”指的就是把编译输出目录直接当作Web应用根目录来跑这种方式下JSP、class、资源文件的更新都能立即生效适合调试。配置路径是Run - Edit Configurations左上角加一个Tomcat Server - Local然后在Deployment页签里把Artifact加进去Application context通常填/如果你想通过http://localhost:8080/edu访问这里就填/edu。代码和配置都到位了以后如果界面还是404优先检查下面这张表现象可能原因处理动作页面404但控制台无报错Artifact没有包含lib依赖或者Context path配置不对Edit Configuration里Deployment页签下的Archive/Exploded后点齿轮图标把lib目录加上项目启动秒退Tomcat端口被占用查看控制台最后几行报错到Service配置里改HTTP port例如从8080改成8082启动正常但页面报500数据库连接失败或者SQL语法错误先看DataSource日志用Navicat或命令行手动执行一次对应SQLTomcat版本也是个容易忽略的边界条件Servlet 3.0以前的工程用Tomcat 9会出现奇怪的解析异常而Spring Boot Fat Jar则不需要外部Tomcat。你拿到的代码如果是传统JavaWeb直接用Tomcat 8.5或9.0版本最稳再老旧的Tomcat 7已不建议下载因为它的Servlet API和现代JSP标准有明显代差。5. 常见问题排查这些坑别等到答辩前一晚才踩5.1 404和500背后的两种逻辑第一个要认清的问题是404代表请求路径根本没有对应处理器或者Web应用没部署成功500代表后端代码在执行中抛了异常。很多人一看到404就从代码里找问题方向不对等于原地打转。正确顺序是先看部署——确认IDEA右下角控制台有没有打印“Artifact is deployed successfully”再确认URL是否完全匹配包括大小写、Context path前缀。原因在于JavaWeb的URL映射是精确匹配的路径里多一个斜杠或少一个层级都会落进“找不到处理器”的分支。解决方式是打开浏览器的开发者工具看网络请求对照注解WebServlet(/student/list)和浏览器的访问路径逐字符比对。至于500大多数信息不外乎NullPointerException、SQLSyntaxErrorException控制台前二十行会直接告诉你是哪个类的哪一行抛出来的沿行号往回追即可。5.2 启动时报错ClassNotFound还是端口被占“Tomcat启动后马上变红”是毕设周常见画面。这里有个判别技巧如果报错信息是java.net.BindException: Address already in use这是端口占用的硬冲突解决方式是换端口不要跟系统进程抢地盘如果是ClassNotFoundException: org.springframework.web.context.ContextLoaderListener那就是Tomcat没加载到lib目录下的jar包。ClassNotFound属于Artifact配置问题本质上是部署包里的WEB-INF/lib是空的。解决路径是在IDEA的Project Structure - Artifacts里选中输出包把Available Elements里所有库文件右键加入WEB-INF/lib重新构建后部署。这个坑在网上被称为“IDEA独有问题”因为Eclipse的Dynamic Web Project会自动打包依赖而IDEA需要手动关联。实际操作中还有一个快速验证法直接去out或者target目录看生成的war包里有没有WEB-INF/lib没有就说明依赖没进去重新打一次包。5.3 页面中文全部变成问号中文乱码通常横跨三个环节数据库连接、请求参数、响应输出。最常见的是请求参数乱码表单提交中文名字后控制器里拿到的值成了???这个现象背后的原因是Tomcat默认使用ISO-8859-1解析URL参数而页面是UTF-8编码。解决方式是在web.xml里加一个字符编码过滤器用Spring框架的话也可以直接配置CharacterEncodingFilter将encoding强制设为UTF-8并且forceEncoding参数设为true这样即使代码里没有逐行设置请求编码也不会出问题。响应端乱码的解决更简单要么在每个Controller方法的response.setContentType(text/html;charsetutf-8)要么让JSP页面顶部声明pageEncodingUTF-8。数据库端乱码则去查表结构是不是utf8mb4以及连接池的characterEncoding参数是否被覆盖。一个很容易忽略的细节MySQL驱动8.0以上的useUnicodetrue如果缺了即使表是utf8mb4写入的数据也可能变成长度减半的怪字符。5.4 查询无数据JOIN方向错了还是条件被过滤在线教务系统里教师查自己授课名单、学生查成绩单这两类高频查询都有共同陷阱因为数据在关联表里很多人写JOIN时方向反了。比如查询某门课的选课名单目标是“所有选课记录及其学生信息”那应该FROM course_selection LEFT JOIN student_info如果你先去查学生表再匹配课程那么没选课的学生也会出现在教师端的名单里逻辑就不对了。当然如果你本来想做的是“课程缺考人员检查”反向JOIN才行——这就是为什么这套代码里的查询方法会分两套写在不同的Dao层。解决方式是先想清楚主表是谁。别在JOIN方向模糊时调试SQL先确认主表再确认LEFT JOIN还是INNER JOIN对业务结果影响。还有一种静默坑查询方法里带了pagination参数默认只出第一页十条数据演示时如果数据不足十条翻页控件没出现就会误以为功能坏了。检查方法很简单把LIMIT子句临时去掉执行一次。5.5 注册进去后发现角色错了注册或导入数据时账户的角色标识没有写对导致学生账号变成了教师账号这是数据初始化的问题。通常在sys_user表里role字段的类型是int或tinyint0、1、2分别对应管理员、教师、学生但你拿到的代码里枚举值的对应关系不一定一致。排查方式是看UserService注册方法里的写库语句不要猜直接看代码是最精确的。如果开通账号的页面没有“选择角色”的入口就需要手动去数据库update字段临时修正。这里有个整理建议在初始化SQL脚本里注释清楚每个角色枚举值对应什么避免后面答辩演示时数据全乱套。很多人的数据表都是复制来复制去字段注释缺失严重每问一层都等于开一次黑匣子不如顺手补上。6. 把血泪经验留给自己三个让项目“可演示”的进阶细节第一在项目里加一个“初始化演示数据”的SQL脚本。当场导出数据库再导入往往在答辩现场会暴露各种路径错误和编码问题与其现场紧张不如写一个init_demo_data.sql把学生、教师、课程、选课记录一次性初始化好并且保证数据之间的外键对得上。我自己的习惯是用事务包裹所有插入语句中间任何一步失败就整体回滚保证每次执行都是干净状态。第二给教师端加一个“导出成绩单Excel”的小功能。这个功能从技术上用POI可以做到核心代码不超过三十行但演示时的说服力会大幅提升。校验系统完整性的角度来看这个功能还会倒逼你把查询结果的字段排列法理顺顺带锻炼一下大家最不愿意接触的文件IO。从工作量看它属于典型的“投入精少但答辩回报明显”的功能。第三把Session超时时间设置成可配置项并在登录页面给出超时说明。在线教务系统里学生选课操作往往耗时长如果管理员在系统里默认了20分钟超时演示现场可能写到一半被踢回登录页。在web.xml里可以配置session-timeout设成60分钟比较稳妥再在login.jsp上标一句“系统长时间无操作会自动退出请及时保存”这个细节体现的是真实产品思维很容易得到印象分。我自己吃过一次亏之前接一个类似系统为展示定时统计功能在代码里塞了三个线程定时轮询数据库结果答辩现场数据库连接池被打满整个系统慢到卡死。后来学乖了凡是演示不需要的后台任务一律关闭按需启动。做毕设参考项目也是这个道理——功能多不等于演示稳能流畅跑完的流程才是最重要的。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

虚拟机创建全指南:从选型、装系统到网络配置与报错排查

虚拟机创建全指南:从选型、装系统到网络配置与报错排查

装虚拟机这件事,乍一看就是个"向导里点下一步"的活,但真正把虚拟机创建出来、装好系统、配好网络、用顺手的人,其实并不多。这些年我帮同事、朋友处理过的虚拟机问题,从"安装 Linux 蓝屏"到"VMware 无法…

2026/10/9 8:22:05 阅读更多 →
Spring Boot医疗挂号系统号源一致性实战

Spring Boot医疗挂号系统号源一致性实战

简介:本资源是一套完整的医院门诊在线预约挂号管理系统毕业设计项目,面向计算机专业本科生及Java初学者,解决传统线下挂号流程繁琐、效率低下的实际问题,适用于课程设计、毕设开发与SSM框架实战学习。压缩包含640个文件&#xff0…

2026/10/9 8:22:05 阅读更多 →
基于Java的毕业选题系统:技术选型、数据库设计与部署避坑

基于Java的毕业选题系统:技术选型、数据库设计与部署避坑

简介:基于Java/JSP实现的毕业选题系统源码包,面向高校毕业设计、课程设计及Java Web学习者。系统覆盖管理员、教师、学生三类角色:管理员能维护系主任信息并负责系统日常运行,教师可录入毕业设计题目、审核学生选题,学…

2026/10/9 8:22:05 阅读更多 →

最新新闻

AI智能体核心能力:从工具调用到团队协作的TaoToken实践

AI智能体核心能力:从工具调用到团队协作的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/9 10:01:44 阅读更多 →
数据仓库用户权限管理:分层解耦架构实战

数据仓库用户权限管理:分层解耦架构实战

1. 项目概述:为什么“数据仓库-用户管理”不是一句空话,而是每天都在掉头发的实操现场“数据仓库-用户管理实践”这八个字,乍看平平无奇,像极了某次内部培训PPT第3页的标题——但凡在数据平台一线干过两年以上的人都知道&#xff…

2026/10/9 10:01:44 阅读更多 →
特殊工业镜头选型指南:远心、线扫、显微与紫外红外镜头原理与避坑

特殊工业镜头选型指南:远心、线扫、显微与紫外红外镜头原理与避坑

1. 从"看不见"到"看得清":特殊工业镜头的价值锚点工业视觉系统里,相机机身决定了图像的上限,而镜头决定了你能不能摸到那个上限。很多人做视觉方案时,习惯把预算大头砸在相机上,觉得分辨率越高越好…

2026/10/9 10:01:44 阅读更多 →
汽车修理数据库设计:从ER图到可运行Access系统全链路实操

汽车修理数据库设计:从ER图到可运行Access系统全链路实操

简介:本资源是一份面向高校数据库课程学习者的完整课程设计文档,聚焦汽车修理管理系统的数据库原理实践应用,适用于计算机、软件工程等专业学生巩固ER建模、关系规范化、SQL建表与业务逻辑设计能力。文档为单文件Word格式(.doc&am…

2026/10/9 10:01:44 阅读更多 →
数据、算法、算力:数字经济三大支柱的协同校准与落地实践

数据、算法、算力:数字经济三大支柱的协同校准与落地实践

1. 这不是概念堆砌,而是数字世界运转的“三原色”你打开手机点外卖,30秒内系统就给你推了5家评分4.8以上、距离2公里内、刚上新辣子鸡的店;你上传一张模糊的老照片,AI几秒钟就修复出清晰五官和自然肤色;某制造企业把产…

2026/10/9 10:01:44 阅读更多 →
k3d 中的 Go YAML 解析实践:go.yaml.in/yaml/v2 库使用指南

k3d 中的 Go YAML 解析实践:go.yaml.in/yaml/v2 库使用指南

云原生容器编排 【免费下载链接】k3d Little helper to run CNCFs k3s in Docker 项目地址: https://gitcode.com/gh_mirrors/k3/k3d 点击查看 免费下载 YAML 是 k3d 配置文件(k3d.io/v1alpha5 等版本)的载体,而 go.yaml.in/yaml…

2026/10/9 10:00: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 阅读更多 →