五周软件工程实习记录:从Swing、Express到Tomcat部署排错

发布时间:2026/11/2 20:04:17

五周软件工程实习记录:从Swing、Express到Tomcat部署排错 简介《软件工程实习记录》面向软件工程、计算机相关专业本科生及需要完成实习报告、毕业实习材料整理的学生提供一份可直接参考和修改的实习过程范文。文档以周为线索记录从企业实习动员、分组开发到具体任务推进的过程涉及软件开发可行性分析、需求分析、概要设计、详细设计、编码与验收等流程也穿插项目经理职责、开发岗位划分及前端、后端、数据库等技术栈说明。文中还包含文件查找与排序、Swing界面、HTML/CSS/JavaScript单页、Node.js连接MySQL实现增删改查、Linux与ARM开发环境等实践片段便于读者对照自身实习经历调整内容、补充细节。资源包共1个doc文件约40KB结构集中、便于查阅已有2924人学习适合作为实习日志、周记和总结报告的写作参考。1. 从「编码只占 15%」这句话说起一份五周的软件工程实习记录软件工程实习记录写到第五周我才真正记住带我们的项目负责人在第一周白板上写的那句话编码在整个开发过程里只占百分之十五。当时不服气大学三年敲的代码堆起来也不算少。直到五周里我用 Swing 拖查找面板、用 Express 连 MySQL、把项目放进 Tomcat 却卡在端口被占用上才明白剩下那百分之八十五耗在什么地方。这份记录从 8 月 27 日到 9 月 28 日五个星期桌面端、Web 端、数据库、服务器各走了一遍。不管你是毕业季要交实习材料还是刚进项目组不知道每天该记什么下面这条时间线、选型依据和踩坑清单都能直接拿去改。2. 五周时间线拆开看从 Swing 查找框到 Tomcat 上的 index.jsp五周的排期看着杂其实是一条递进线先做能看见结果的东西再让数据真的存下来然后补环境、补框架最后把项目放上服务器。这个顺序不是拍脑袋定的它对应的是「反馈速度」——越靠前改一行代码看到结果的时间越短越靠后一次失败要查的东西越多。我把每周的任务、卡点和交付物重新捋了一遍下面按周拆。2.1 第一周先做能看见的东西Swing 面板和查找功能第一周的任务是实现文件查找。打开 Eclipse新建com.shixi.viwe包对包名当时敲错了后来一直没改回来同事笑了很久实际项目里应该叫 view用 Swing 插件拖出一个查找面板往上面加输入框、按钮设好各个组件的功能和相对位置页面就出来了。功能本身不复杂输入框里输文件名或商品名支持模糊查找把命中的结果回显到页面上。为什么第一周不让你碰核心业务而是让你做一个查找框我当时也觉得这是打杂。回过头看查找是「输入 → 处理 → 回显」的最小闭环它一次性把 UI 布局、事件绑定、数据遍历三件事串起来了失败点少反馈快。一周之内能看到东西跑起来对刚进公司的实习生来说心理上的确定性比技术上的难度更重要。常见的思路是拿一个能被完整走通的小功能开局而不是直接扔进主流程里。真正卡住我的是第二天功能是写完了但只能从固定地址查找。路径是硬编码在方法里的换一个目录就读不到。我把这个问题提给指导老师他的改法是让路径可配置——把写死的目录抽成参数从输入框或配置文件传进去方法签名跟着调整。这是「可配置化」的第一课也是很多人工作前两年一直没绕过去的坎凡是写死的值早晚要还回去。那天下午和老师聊还顺带把 IT 行业的主要岗位过了一遍软件开发员、项目经理、技术总监、架构师、总经理、售前售后。这个清单对当时的我冲击挺大因为学校里默认的路径只有「写代码」一条而实际团队里代码只是分工中的一段。每天该记什么我后来固定成了一张三栏表比流水账有用得多记录栏写什么反面例子今天做了什么具体到包名、类名、按钮的行为「学习了 Swing」卡在哪现象 报错原文 自己先试过什么「有点问题」怎么解的谁提点的、改了哪一行、为什么这样改「已解决」提示第三栏最关键。三个月后回看前两栏只是日记第三栏才是你自己的技术资产。2.2 第二周从静态数组到 MySQLExpress 的第一课第二周开头做的还是 Web 单页HTML 标签负责布局CSS 负责美观JavaScript 负责动态效果把教师的基本信息先存在一个数组里用表格渲染到页面上。这套东西能跑但它只能显示静态数据。真实项目里数据来自数据库读出来再渲染。这句话我当时写在记录里了一周后果然成了任务。接着做教师信息的添加新建三个input标签分别读取编号、姓名、课程名点添加按钮后信息显示到页面上。第一版跑通后立刻出了个体验问题——反复点添加信息会重复堆在页面上。改法是添加之前先把原列表清空再统一渲染也就是「先删再渲染」。这个问题看着小本质是状态管理没想清楚页面上的数据和内存里的数据是两套东西你得决定谁说了算。真正的转折在 Node。先装 node.js命令行下查安装方法桌面新建文件夹当根目录npm init初始化一个最简项目就立起来了。最终目标是让 Node 撑起一个单页思路分三步一是用工具实现页面的数据响应与请求二是建立页面和数据库的连接三是把库里的数据导到页面上。第一步要装 Express之前完全没接触过光看文档理解 get 和 post 就花了小半天。搞明白之后把 get 用到单页请求上先用一个数组塞学生信息做静态回显验证链路通不通。第二步是数据库。选 MySQL装好建库建表把 Excel 里的数据导进去再装 Node 操作 MySQL 的辅助包读出来用 JSON 转换格式。第三步把增删改查接到页面上按钮点击激活不同的 JavaScript 函数函数去执行不同的 SQL 语句。这一整套下来我用 Express 和 MySQL 搭的最小骨架大概长这样// app.js —— 实习期间最小可用的 Express MySQL 骨架 const express require(express); const mysql require(mysql); const app express(); // 连接池比单连接稳实习时用单连接经常断 const pool mysql.createPool({ host: 127.0.0.1, port: 3306, user: root, password: ******, database: teacher_db, charset: utf8mb4 // 中文乱码的第一道防线 }); // 查询接口对应页面上查询按钮 app.get(/api/teachers, (req, res) { const keyword req.query.name || ; // 模糊查询关键词 pool.query( SELECT id, name, course FROM teacher WHERE name LIKE ?, [%${keyword}%], // 占位符传参别用字符串拼接 (err, rows) { if (err) return res.status(500).json({ error: err.message }); res.json(rows); // 直接返回 JSON前端拿去做渲染 } ); }); app.listen(3000, () console.log(server on 3000));三个参数要留意charset决定了中文能不能好好存进去LIKE ?里的?是占位符用拼接字符串的写法迟早出事%${keyword}%两边的百分号就是模糊查找的全部秘密。至于为什么先数组后数据库我的判断是数组能让你先把「请求 - 响应 - 渲染」这条链路跑通数据源换掉时只改一处。见过太多人一上来就接数据库页面一空白根本分不清是前端没渲染、接口没返回还是 SQL 没查到。2.3 第三、四周环境、框架与项目建模补基础的两周第三周换了赛道。公司系统环境是 Redhat Linux 9.0要装 ARM-Linux 的开发库和编译器。为了熟悉环境我新建目录写了 hello.c 和 Makefile 文件学 Linux 下的编程和编译流程再把编译好的文件下载到 ARM 开发板上跑起来。同一天还补了网络服务器的知识。服务器是局域网的核心按作用分文件服务器、打印服务器、通信服务器文件服务器把大容量磁盘空间给网上客户机用接客户机的数据存取请求打印服务器收客户机的打印任务通信服务器负责网与网之间的通信提供多种接口。这些概念在课堂上听过但真到配服务器的时候脑子里有这张分类图排查方向会清楚很多。接着参与公司网站制作我分到的是装系统、装应用软件、配本地运行环境。系统装好了IIS 组件装了默认网站的主目录也指好了地址栏输网址却打不开。翻资料才找到原因本地虚拟访问网站要设置 Internet 来宾账户的权限而且今后要做后台管理得把「修改」权限也勾上另外磁盘必须是 NTFS 格式在当时的 XP 环境下才能看到安全选项卡。没过两天又来一次。一个 Java 网站在浏览器里加载不出来页面报 500去服务器日志里翻只有一句「数据加载失败」。数据库用的是 SQL Server 2000我一开始咬定是 Tomcat 配置的问题网上相关的帖子翻了个遍改了又改最后发现是 jar 包和数据库版本不匹配导致的连接错误。这次教训挺深报错信息出现在应用层根因可能在三层下面的驱动。框架这块也集中补了两天。Struts 管表示层Spring 管业务逻辑层Hibernate 管持久层。这么分不是为了炫技是为了让开发过程中各个分工部门保持一致——大家都在一个模式下写代码谁写的别人都能读懂还有些基础代码框架直接帮你生成省下重复劳动。再往深一层Struts 是 Java MVC 设计模式里 Model 的一种具体实现Spring 靠 IOC控制反转也叫依赖注入把对象甚至事务集中管起来还引入了 AOPHibernate 是对象关系映射的中间件在 JDBC 之上又封了一层不写 SQL 也能操作数据库。JSP 是那阵子做数据回显绕不开的知识点在页面里嵌 Java 程序片段和 JSP 标签好处是对客户端浏览器要求低浏览器不支持 Java 也能访问。第四周开始碰项目模型。模型是用户需求的简化实现通过建模能让客户更直观地看到软件功能的具体形态对开发人员也有现实的指导意义。做的过程中我发现自己并不具备独立开发完整项目的能力很多小知识点是空的只能一边接任务一边补。这一段大概是整个实习里最难受、也最真实的部分。2.4 第五周部署上线最后两天全花在端口上最后一周做图书商城的删除和编辑功能。先建好两个功能对应的 JSP 页面和 control 类在商城首页上加删除和编辑按钮每个按钮设超链接跳转到对应页面再在 control 包里写逻辑。回显商品信息时页面又出中文乱码查下来是页面编码和数据库编码不一致两边都改成 gbk 之后解决。为了让修改操作更顺手我把原来的超链接换成用 js 函数打开新窗口编辑完关掉窗口回到列表页还能看到最新数据。收尾任务是部署。学校没教过服务器相关的知识先上网补了一圈决定用 Tomcat。把服务器和 MyEclipse 关联的过程磕磕绊绊全靠同事耐心帮。装好之后把项目挪到 Tomcat 的 webapps 目录下记录里当时写成了 wabapp这个笔误后来被同事当笑话讲打开配置文件设端口号和 IP启动访问 index.jsp失败。翻错误日志原因是配置的端口已经被别的程序占了重新分配了 89 端口服务起来了首页也能访问了。为什么部署被放在最后因为部署是对前面所有假设的一次总验收包名对不对、依赖全不全、编码一致不一致、端口通不通任何一处没对齐都起不来。前端写得再漂亮起不来就是零。3. 六个阶段里真正吃时间的是哪几个可行性分析到项目验收的落地拆法第一天项目负责人讲开发流程六步可行性分析、需求分析、概要设计、详细设计、编码、项目验收。当时听完觉得这就是教科书里的六个词一周后才发现真正把项目拖垮的往往在前三步而不是编码。3.1 可行性分析和需求分析新手最容易糊弄过去的两个阶段可行性分析听起来最虚其实回答的是三个很硬的问题这事技术上做不做得成、人手和时间够不够、做出来有没有人用。实习期间我参与的那个商城类项目讨论阶段就卡在「图书信息录入」这一个功能上——字段有哪些、谁来录入、重复的编号怎么处理、录入失败给什么提示。这些问题不落到纸面上编码阶段必然返工。需求分析阶段我犯过一个典型错误把「功能能跑」当成「需求满足」。比如教师信息添加第一版点一下加一条看着没问题可实际使用场景里用户会连点会输错会中途反悔。重复显示那个 bug 就是这么暴露的。判断一份需求分析做没做到位我一般看三件事功能清单有没有边界明确不做什么、每个功能有没有异常分支、有没有人签字确认。三样缺一样后面都得补。这一段还有个容易被忽略的收获搞清楚谁是谁。软件开发员、项目经理、技术总监、架构师、总经理、售前售后每个角色在需求阶段关注的东西完全不同——开发员关心能不能实现项目经理关心排期和资源售前关心客户会不会买单。同一个需求文档三种人读出三种结论这很正常所以评审会才必须开。3.2 概要设计与详细设计模型搭建到底交付什么概要设计要出的是骨架模块怎么切、数据怎么流、接口大致长什么样。详细设计才是把每个模块拆到方法级、把每张表拆到字段级。这两步在实习里对应的是「项目模型的搭建」当时以某商城项目做了完整演练。模型这东西的价值不在于画得好看而在于能不能点。用户需求的简化实现意思是把主流程走通给人看点进图书列表选一本改价格保存回到列表能看到新价格。走不通的模型等于没做。我见过不少实习生把建模做成了画图比赛页面五颜六色一问「这个按钮点了会发生什么」就答不上来。详细设计阶段最该落下来的是表结构和接口约定。教师信息三个字段编号、姓名、课程名看着简单但编号是自增还是手填、姓名长度多少、课程名允不允许为空这些在详细设计里定死编码时就不会来回改。后面做图书商城的删除和编辑正是因为前面把 control 类的职责定清楚了加两个页面就能接上。3.3 项目验收和客户满意度代码跑通不等于交付完成第一周记录里有一句话当时写得很朴素代码实现的时间其实只占整个开发过程的百分之十五这关系到客户的满意程度和软件能否成功验收。五周下来这句话被反复验证。验收现场真正被问的往往不是「你这个算法用了什么」而是「我输错了会怎么样」「数据多了会不会卡」「换个浏览器还能用吗」。我在部署阶段踩的端口占用问题本质上就是验收视角的缺失开发机上跑得好好的换台机器就起不来。所以验收前我后来养成了一个习惯叫「换机三问」换一台没装过环境的机器能不能起来、换一个没参与开发的人能不能按文档操作、换一份脏数据能不能不崩。项目验收还有个隐形指标是客户满意度。它跟代码质量不完全正相关跟沟通频率关系更大。需求阶段每两周给客户看一眼模型比最后交付时一次性演示要稳得多。3.4 一张按阶段对照的交付物清单阶段该交付什么常见的糊弄法验收时会被问什么可行性分析技术方案、成本与工期估算只写「可行」两个字为什么不用现成方案需求分析功能清单、异常分支、确认签字只列功能名输错了怎么办概要设计模块划分、数据流、接口草案画一张大图了事模块之间怎么调详细设计表结构、接口字段、类职责直接跳去写代码这个字段为什么这么长编码可运行代码 自测记录只交代码不交自测边界情况测过没项目验收部署文档、演示脚本、已知问题清单现场临时演示换台机器能起来吗这张表我后来每次接新任务都拿出来对一遍缺哪一格补哪一格比凭感觉推进靠谱得多。4. Java Web 技术栈怎么定桌面端、Web 端、框架与数据库的取舍五周里换过三次技术栈Swing 桌面端、原生 HTML/CSS/JS、Node Express MySQL中间还穿插了 Struts/Spring/Hibernate 的学习。换得频繁但每次换都有明确的理由。把理由写下来比记住 API 有用。4.1 Swing 和 Web 页面什么场景该用哪个第一周的查找功能用 Swing 做第五周的图书商城用 Web 做同样是 CRUD选型完全不同。判断依据主要看三件事用户装不装客户端、更新频率高不高、要不要跨平台。维度Swing 桌面端Web 页面部署方式每台机器装一次服务端更新客户端刷新即可更新成本高要重新分发低界面表现依赖本地环境跨平台容易走形浏览器统一渲染适合场景内部工具、离线处理、要读写本地磁盘多人协作、数据集中、需要远程访问实习期的教训写死的路径改起来牵一发动全身编码不一致导致乱码排查链路更长查找本地磁盘文件这种需求Swing 是合理的因为它要直接读本地目录。但一旦需求变成「多人看同一份数据」桌面端就得配服务端复杂度立刻反超 Web。这个判断顺序我后来一直是先问「数据在谁那儿」再问「谁要改」。4.2 数据从哪来数组、JSON 文件、数据库的三级过渡实习里数据源换了三次静态数组 → Node 里存的数组 → MySQL。这不是绕远路是三级台阶。数组阶段解决的是「链路通不通」。页面发请求服务端返回前端渲染这条线跑通了后面换数据源只改中间一层。Express 那半天学习时间我全花在搞明白 get 和 post 的区别上get 把参数放在地址里适合查询post 放在请求体里适合提交。想清楚这一点接口设计就不会乱。MySQL 阶段解决的是「数据留不留得住」。装库、建表、把 Excel 里的数据导进去、装 Node 的 mysql 辅助包、读出来转 JSON。这一步最容易翻车的地方不在 SQL 语法而在连接配置字符集、端口、账号权限任何一项不对报错信息都不会直说。注意数据源每升一级排查成本大约翻一倍。数组阶段一个console.log能定位的问题到了数据库阶段可能要同时看服务端日志、SQL 日志和网络连接。4.3 三个框架各管一段Struts、Spring、Hibernate 的分层逻辑学到框架那两天最有用的一句话是「分层是为了让分工部门保持一致」。三个框架各管一段层次框架主要职责一句话理解表示层Struts接收请求、分发到对应处理逻辑、组织页面门卫决定谁来接待业务逻辑层Spring管理对象、事务靠 IOC 做依赖注入引入 AOP调度中心谁该干啥它安排持久层Hibernate对象与关系映射在 JDBC 之上再封一层翻译把对象的话翻成数据库的话Hibernate 那层的意义要说透以前 Java 程序员跟数据库打交道走 JDBCSQL 得自己一句句写Hibernate 封装之后不写 SQL 也能完成对数据的操作。代价是复杂查询时你得懂它生成的语句长什么样否则性能问题会很难查。这不是「新的一定比旧的好」是「简单查询省事复杂查询要还债」。4.4 选型对照表与我的判断顺序把这些年踩过的坑压缩成一个判断顺序先看运行环境客户端装不装软件再看数据规模几百条还是几百万条再看团队约定公司现有项目用什么最后才看个人偏好。判断项问自己什么影响结论运行环境用户愿不愿意装客户端决定桌面端还是 Web数据规模数据量级和并发量决定数组、文件还是数据库团队约定现有项目统一用什么决定框架别自创一套维护成本三个月后谁改这段代码决定要不要上框架实习时我一度觉得用框架是「高级」后来才明白框架是给团队协作和长期维护买的保险一个人的小工具上三个框架纯属自找麻烦。5. 常见问题排查五个翻车现场的现象、原因与解决五周里我记录下来的翻车至少有十几次挑出五次最有代表性的按「现象 → 原因 → 解决」写清楚。这些坑的共同点是报错信息几乎从不指向真正的根因。5.1 中文乱码连接串没限定字符集现象图书信息录入功能英文数字都能进库中文一提交就变成问号列表回显时更乱有的显示方块有的直接空白。原因两层编码没对齐。页面提交时的编码、数据库存的编码、连接时声明的编码三者只要有一个不同就会乱。我第一次的改法是把页面和数据库都改成 gbk问题解决了但这是碰巧对齐不是根治。解决从连接层显式声明字符集再统一页面和表的编码。修连接串的那一行改完乱码基本绝迹// 有问题的写法只给了库名没声明字符集 String url jdbc:mysql://127.0.0.1:3306/bookstore; // 修正显式声明编码保证客户端与服务端对齐 String url jdbc:mysql://127.0.0.1:3306/bookstore ?useUnicodetruecharacterEncodingutf8;useUnicodetrue打开 Unicode 支持characterEncodingutf8告诉驱动用哪种编码收发数据两个参数要一起给。改完再去看表结构字段的字符集也要跟着统一否则前面通了最后一步还是乱。5.2 MySQL 装不上安装类型选错了现象在自己电脑上装 MySQL安装程序跑到一半报错退出重装三次都是同一个位置失败。原因安装时选了默认的安装类型没选「开发者」选项导致部分组件和权限配置没按开发环境的要求装好。解决卸载干净后重装安装类型里明确选开发者端口和账号按项目约定填。这件事让我意识到安装向导里那些默认选项不是随便点的尤其是给开发环境用的软件默认配置往往是给生产环境准备的。5.3 Tomcat 报 500jar 包和数据库版本对不上现象Java 网站在浏览器里加载不出来页面提示 500服务器日志里只有一句「数据加载失败」。原因一开始以为 Tomcat 配置有问题配置文件改了好几轮都没用。最后发现是数据库驱动 jar 包的版本和数据库实际版本不匹配连接根本建立不起来。解决把驱动包换成与数据库版本匹配的那一版重新部署。排查这类问题的顺序应该是先确认连接能不能建起来单独写个测试类再看 SQL 有没有问题最后才怀疑应用服务器。反过来查会浪费大量时间。5.4 IIS 本地站点打不开来宾账户权限和磁盘格式现象本地配好 IIS默认网站主目录也指了地址栏输网址就是看不到网页。原因本地虚拟访问网站需要给 Internet 来宾账户相应权限而且磁盘必须是 NTFS 格式在当时的系统环境下才能看到安全选项卡FAT 格式下压根没法设。解决确认磁盘格式为 NTFS在站点目录的安全设置里给来宾账户读权限考虑到后续要做后台管理把「修改」权限一并勾上。这条坑的通用版本是权限问题不会报权限错误它只会表现为「打不开」。5.5 Tomcat 起不来端口被占用现象项目挪进 webapps 目录配置文件设好端口和 IP启动访问 index.jsp 失败。原因翻错误日志发现配置的端口已经被本机其他程序占用了。解决换一个没被占用的端口重新配置后启动成功。现在养成的习惯是部署前先看一眼端口占用情况别等启动失败再回头找。5.6 排查顺序从日志往上倒推这五次翻车教给我的排查顺序后来一直是这么走的先看错误日志原文别急着改代码再确认最底层依赖数据库连不连得上、端口通不通、权限够不够然后才是应用层配置最后才是业务代码。绝大多数问题出在下三层但所有人都习惯从最上层开始猜。6. 记录怎么写才不是流水账我的周记结构和交付清单实习记录最容易写成两种废稿一种是日程表「今天学习了 XX收获很大」另一种是作文「通过这次实习我深刻认识到」。两种都没法复用。我后来固定成一套结构五周下来基本没变过。每周开头先用三行写清楚这周的主线任务是什么、比上周多了哪个能力、留下什么没解决。中间按天记每天只写三样东西——做了什么具体到包名和行为、卡在哪现象加报错原文、怎么解的谁提点的、改了哪一行。每周结尾加一段「如果重来」写一句话就行比如第二周我写的是「应该先跑通请求链路再想数据库」。位置写什么作用周首三行主线任务、新增能力、遗留问题三个月后一眼看懂这周的价值每日三栏做了什么、卡在哪、怎么解把经验变成可检索的条目周末复盘一句「如果重来」逼自己从执行者视角切到判断者视角最后一件事也是我后来逢人就说的把踩过的坑单独攒成一个清单别散落在日记里。我那份清单现在有十几条中文乱码、端口占用、jar 版本不匹配、安装类型选错、权限看不到每条都按现象、原因、解决三行写。新项目开工前扫一遍能省掉一半重复劳动。回过头看那五周里最有价值的不是学会了 Swing 或者 Express——这些 API 忘得比学得快——而是养成了两个习惯一是任何功能先想清楚数据从哪来、到哪去二是任何报错先看日志、再看底层依赖、最后才怀疑自己的代码。从那以后我每次接新任务都强制先把「换台机器能不能跑起来」这一条走一遍不管项目多小。希望帮到你。本文还有配套的精品资源点击获取
延伸阅读

更多相关文章

2026/11/2 20:04:17

2003年C/C++编码规范还值得翻吗:布局、可靠性与可测试性

简介:《中兴通讯软件编程规范——C/C》是一份面向C/C开发者的企业级编码规范文档,适合需要统一代码风格、提升代码可读性与可维护性的研发团队及个人查阅。文档围绕基本原则、代码布局、注释、命名规则、变量常量与类型、表达式与语句、函数与过程、可靠…

2026/11/2 19:59:17

Generative UI 工程化实践:JSON 驱动的声明式 UI 协议

1. 项目概述:这不是一个“渲染库”,而是一套 Generative UI 的工程化契约你点开 Vercel Labs 的json-render仓库,第一眼看到的可能是个轻量级 JSON 渲染器——输入一段结构化 JSON,输出对应的 React 组件树。但如果你真这么理解&a…

2026/11/2 20:49:23

VoiceStudio:一站式语音内容生产工作台全解析

1. VoiceStudio 到底是什么:一个语音制作工作台的自我修养先抛结论:VoiceStudio 不是一个"又一个录音软件",而是一个把传统音频工作站(DAW)的录制能力、AI 语音合成(TTS)、音色克隆、…

2026/11/2 20:49:23

多Agent编程工具Antigravity的效率革命与实战解析

1. 项目概述:多Agent编程工具的效率革命上周在重构一个微服务项目时,我同时打开了5个代码文件需要修改相同模式的接口定义。传统方式要逐个文件处理,而当我尝试用Antigravity创建3个独立Agent分别处理不同模块后,原本预计4小时的工…

2026/11/2 20:49:23

spooling假脱机模拟:2请求+1输出进程的并发I/O调度实现

简介:本资源是面向操作系统原理学习者与高校计算机专业学生的Spooling假脱机输入输出技术实践项目,聚焦I/O管理核心机制,解决多进程共享慢速外设(如打印机)时的阻塞与低效问题。压缩包共11个文件,含5个Java…

2026/11/2 20:49:23

gTTS Python文本转语音实战:从原理到批量合成的工程化指南

语音合成这件事,早年在我眼里属于"要么花钱买云服务,要么自己啃声学模型"的两难选择。直到某次给一个离线阅读工具做配音功能,实在不想为几段提示音去接付费接口,才认真把 gTTS 这个库翻出来用了一遍。结果出乎意料&…

2026/11/2 20:49:23

从MySQL LIKE到ES倒排索引:全文检索与混合检索实战

MySQL 的 LIKE 查询大概是每个后端开发都写过的东西,WHERE title LIKE %关键词%一敲,功能就跑通了。可当数据量从几万涨到几百万,这条语句的响应时间从 50ms 变成 5s 的时候,你就知道事情没那么简单了。这篇文章想聊的&#xff0c…

2026/11/2 20:44:23

OpenRig:基于Node.js与tmux的本地AI服务编排CLI工具

1. 项目概述:OpenRig 是什么,它解决的到底是什么问题? OpenRig 这个名字乍一听容易让人联想到显卡挖矿工具(比如早期的 OpenCL 挖矿框架),但结合你提供的热搜词—— Node.js、tmux、codex、CLI ——以及…

2026/11/2 6:08:01

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/2 6:39:12

SSM电子书店源码全解析:结构、原理、部署与排错实战

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

2026/11/2 1:04:04

工业级SPI隔离设计:硬件抗扰与信号完整性实战指南

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

2026/11/2 1:04:04

PLFM_RADAR:主动探测数据通道,构建低误报的数据感知系统

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

2026/11/2 1:04:04

工业SPI隔离设计:MAX14431与STM32F746硬件抗干扰实战

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

2026/11/2 6:08:01

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/2 6:39:12

SSM电子书店源码全解析:结构、原理、部署与排错实战

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

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑