SSM医患交流系统完整实战:从数据库设计到部署调试
临近期末和毕业季很多同学都在为Java方向的课程设计或者毕业设计发愁。选什么题目、用什么框架、数据库怎么设计、部署的时候老出问题这四座大山基本压垮了大多数人的心态。今天我想认真聊聊一个非常典型的选题——SSM医患交流系统也就是标题里那个带源码、数据库、调试部署和开发环境的完整项目。如果你是Java Web方向的在校生或者正在准备毕设、课设答辩这篇内容应该能帮你省掉不少弯路。我会从系统到底做什么、数据库表怎么拆、SSM三层架构里核心代码怎么写、开发环境怎么搭、部署启动时最容易踩哪些坑以及论文材料怎么组织这几个角度把整个项目的来龙去脉讲透。这篇文章不是那种只贴代码的伪教程我会把每个关键设计的原因也一并讲清楚保证你拿到源码之后不是两眼一抹黑而是能真正看懂、能改、能答辩。1. 这个医患交流系统到底做了什么先花点篇幅把系统的定位讲清楚。SSM医患交流系统本质上是一个解决患者和医生之间信息不对称的线上服务平台。它要覆盖的核心场景有三个患者注册登录后浏览医生信息、按科室和职称筛选医生、在线发起预约或者咨询医生登录后管理自己的排班和接诊记录、回复患者的提问管理员则负责整个平台的用户审核、科室维护、数据统计。从技术角度看这套系统选型SSMSpring SpringMVC MyBatis非常合理。它不像Spring Boot那样把很多东西自动封装好SSM要求你手动配置容器、手动管理事务、手动写Mapper映射这个过程恰恰能帮你把Java Web的核心原理摸一遍。很多公司现在虽然主用Spring Boot但面试官还是会问SSM的底层机制因为SSM是理解现代Java服务端开发的基石。功能模块上我建议至少要包含这几块用户模块注册、登录、个人信息维护、密码修改。这里的密码存储我建议用MD5加盐不用明文虽然这只是一个课设项目但好的习惯要从现在养成。医生模块医生列表展示、按科室/职称筛选、医生详情、医生排班。预约问诊模块患者选择医生和时间段发起预约医生确认或取消系统自动更新预约状态。在线交流模块患者对医生留言提问医生回复。这个模块是交流系统的灵魂如果你的设计里只有预约没有交流那题目里的交流两个字就名存实亡了。管理员后台用户管理、科室管理、预约记录管理、系统数据统计。公告模块管理员发布公告患者和医生登录后能看到最新公告。这个模块看着简单但很能丰富你的功能清单论文里也能多一个数据表。2. 数据库设计一张表梳理清楚核心业务关系数据库是整个系统的地基我见过太多人写代码很快一到数据库设计就翻车。SSM项目里MyBatis的Mapper XML都是围绕着表结构在写SQL的表设计得不好后面的增删改查全跟着遭殃。我基于这个医患交流系统的业务逻辑把核心表拆分给大家看。2.1 用户与角色单表还是多表这个系统涉及三类角色管理员、医生、患者。在设计上最常见的做法是单张user表加一个role字段区分角色然后用doctor表和patient表分别存角色扩展信息。这么做的好处是登录逻辑统一只需要查一张表就能完成身份认证坏处是doctor和patient表会有外键关联user表插入数据时需要注意顺序。如果你觉得单表太简单也可以拆成三张表但我个人建议用单表加扩展表的结构理由有两点第一SSM项目的核心是展示框架整合能力和业务逻辑不需要在权限模型上过度设计第二答辩时候老师问为什么这么设计你能说出角色扩展信息分离避免字段冗余这个理由已经足够。2.2 核心表结构说明以我的设计为例整套系统一共规划了8张表每张表的用途如下表名用途关键字段user用户基础表id、username、password、role、statuspatient患者扩展表id、user_id、real_name、phone、gender、age、medical_historydoctor医生扩展表id、user_id、name、department_id、title、intro、avatardepartment科室表id、name、descriptionappointment预约表id、patient_id、doctor_id、appointment_date、time_slot、statusconsultation交流问诊表id、patient_id、doctor_id、question、answer、status、create_timeannouncement公告表id、title、content、create_timeadmin_log操作日志表id、admin_id、action、create_time这里面最值得多思考两分钟的是appointment和consultation这两张表。预约表里的time_slot字段建议用字符串存上午下午或者09:00-10:00这种段不要存时间戳因为时间段的可读性对于前端展示太重要了存时间戳虽然规范但会让你的页面渲染变得很绕。咨询表里同时存了question和answer两个字段是把这个系统的交流核心落到了数据层一个患者提问一个医生回答记录为一行的方式查询和统计都方便。2.3 数据库初始化脚本的写法很多同学拿到源码之后第一件事是找数据库脚本但装了数据库却发现导不进去为什么因为脚本里可能用了错误的字符集或者没设置存储引擎。这里我强烈建议在SQL脚本中做两件事。第一建库语句显式指定字符集CREATE DATABASE IF NOT EXISTS medical_communication DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;为什么用utf8mb4而不是utf8因为utf8在MySQL里最多存3字节的字符遇到emoji或者特殊符号就会报错utf8mb4是utf8的超集医疗场景下的症状描述里经常出现特殊符号用utf8mb4一劳永逸。第二所有表都加上create_time和update_time字段类型用datetime默认值设置CURRENT_TIMESTAMP。SSM项目没有JPA的自动审计功能这两个字段需要你在插入数据时手动维护但有了字段总比没有强很多统计功能是依赖它的。3. SSM三层架构中的关键代码实现逻辑框架整合类的项目代码写得好不好主要看三层架构是否清晰、事务边界是否合理、SQL映射是否规范。我按Controller、Service、Mapper三层来拆解这个系统的代码写法每层都说清楚职责和容易犯的错误。3.1 Controller层参数接收与页面跳转Controller层在SSM里扮演的是调度员角色它只负责接收前端请求、调用Service、把结果交给视图渲染。这套系统里我建议统一使用注解式开发RequestMapping配置每个Action的URL返回值用ModelAndView或者String加Model。举个例子处理预约请求的Controller可以这样写Controller RequestMapping(/appointment) public class AppointmentController { Autowired private AppointmentService appointmentService; RequestMapping(/submit) public String submit(RequestParam(doctorId) Integer doctorId, RequestParam(date) String date, RequestParam(timeSlot) String timeSlot, HttpSession session) { User user (User) session.getAttribute(user); boolean flag appointmentService.createAppointment(user.getId(), doctorId, date, timeSlot); if (flag) { return redirect:/appointment/myList; } return error; } }这个代码里有一个细节非常关键登录用户的id是从session里取的而不是让前端传过来。很多初学者会直接把userId放在请求参数里后端也不做校验这在实际项目中是严重的安全漏洞任何用户都可以伪造别人的ID来操作数据。答辩的时候老师如果问起来你能说出从Session取用户身份而不是信任前端参数这是个很大的加分项。3.2 Service层事务处理与业务规则Service层是业务规则的核心它负责处理不能只靠单表SQL解决的问题。比如用户提交预约时至少要做三件事检查这个时间段是否已经被预约、检查医生状态是否正常、插入预约记录。这三件事必须放在同一个事务里否则可能出现检查通过但插入失败或者插入成功但状态没更新的脏数据问题。在Spring配置里启用事务管理有两种方式注解式和XML配置式。我推荐用注解式在Spring配置文件里加一行tx:annotation-driven transaction-managertransactionManager/然后在Service实现类上使用Transactional注解默认的传播行为REQUIRED就够用。注意Transactional要加在方法上而不是类上如果你直接写在类上那所有方法都会被事务包裹查询方法也进入事务白白增加开销还可能因为锁竞争拖慢系统。3.3 Mapper层MyBatis的SQL映射写法MyBatis层有两种风格一种是接口加XML映射文件一种是注解。SSM经典项目里绝大多数使用XML方式因为XML可以写复杂的动态SQL可读性和维护性更好。以条件查询医生为例select idsearchDoctors parameterTypemap resultTypecom.example.entity.Doctor SELECT d.*, dep.name AS departmentName FROM doctor d LEFT JOIN department dep ON d.department_id dep.id where if testkeyword ! null and keyword ! AND (d.name LIKE CONCAT(%, #{keyword}, %) OR dep.name LIKE CONCAT(%, #{keyword}, %)) /if if testdepartmentId ! null AND d.department_id #{departmentId} /if if testtitle ! null and title ! AND d.title #{title} /if /where ORDER BY d.id DESC /select这种写法展示了MyBatis动态SQL里最有价值的部分where标签自动处理条件拼装时多余的ANDif标签实现可选条件CONCAT函数配合LIKE做模糊匹配。患者在前端选择不同的筛选条件后端只需要传一个Map或者对象参数进来SQL能够自适应变化不需要写多套方法。这里有一个特别常见的坑LIKE CONCAT(%, #{keyword}, %)中间的#{keyword}外面不能写单引号因为PreparedStatement的预编译机制会自动给参数加引号你如果手动再加一层单引号SQL就会变成四层引号嵌套直接报错。这种错误在没有实际运行过的代码里很难发现但你只要亲手跑一遍就能记住。4. 开发环境搭建与常见坑从JDK到Tomcat的全过程环境搭建是整条链路里最磨人的环节很多同学拿到的项目代码本身没问题跑不起来全是环境变量和版本冲突的锅。特别是SSM这种老牌框架组合和JDK版本、Tomcat版本之间有着非常微妙的关系。我按一个全新的Windows开发环境来说。4.1 基础环境版本选型我强烈建议用JDK 1.8不要用JDK 11以上。原因很简单SSM项目大量使用cglib代理和动态代理JDK 8是最兼容的版本。你如果非要用JDK 17Spring版本必须升级到5.xMyBatis版本也要同步升级会牵一发动全身。这个系统里我用的是JDK 1.8、Tomcat 8.5、Maven 3.6.3、MySQL 5.7这四个版本是我测试过多套组合之后跑得最稳的。Maven不要把仓库设置到C盘系统目录下改到D盘或者其他工作盘不然仓库缓存越积越大C盘满了之后整个电脑卡到怀疑人生。修改方法很简单打开settings.xml找到localRepository标签改成自己创建的目录即可。4.2 IDEA中的部署配置细节项目导入IDEA之后如果你的Project Structure没有配好ArtifactsTomcat是跑不起来的。这里的核心配置步骤如下Project Structure中确认Project SDK是1.8Language Level也是8。添加Web Artifact类型选Web Application: Exploded。这里注意要选Exploded而不是Archive因为开发调试时Exploded方式允许热部署你改了Java代码或者JSP页面之后不需要反复打包war包。Artifact的Output Layout里需要把项目依赖的jar包加进去如果你发现部署时Tomcat报ClassNotFoundException八成是这个步骤漏了。在Run Configuration里配置Tomcat ServerDeployment选项卡里选上刚才建好的ArtifactApplication context建议写成/这样访问路径就是http://localhost:8080/省去一层路径嵌套的麻烦。如果你在配置过程中发现Tomcat启动后立即报Failed to start component [Connector[HTTP/1.1-8080]]这就是端口被占用了。用命令行看一下占用情况netstat -ano | findstr 8080拿到PID之后去任务管理器结束进程或者直接改Tomcat的端口配置。注意要改两个地方一个是IDEA里Run Configuration的Tomcat端口另一个是conf/server.xml里的Connector端口改完才能彻底避开冲突。4.3 配置文件里的三处关键修改SSM项目跑不起来十有八九是配置文件没改对。我总结了三个最容易出问题的地方。第一是jdbc.properties数据库连接信息必须在里面改不要直接硬编码在applicationContext.xml里。核心配置如下jdbc.drivercom.mysql.jdbc.Driver jdbc.urljdbc:mysql://localhost:3306/medical_communication?useUnicodetruecharacterEncodingutf8mb4useSSLfalseserverTimezoneAsia/Shanghai jdbc.usernameroot jdbc.password你的数据库密码这里面的serverTimezone参数是大家经常漏掉的。MySQL 5.7以上版本如果没配时区会报The server time zone value错误加了之后才能正常建立连接。useSSLfalse也很重要本地开发环境下开启SSL反而会带来握手延迟和证书校验问题。第二是springmvc.xml里的视图解析器配置了InternalResourceViewResolver之后Controller返回的字符串才会正确拼接到/WEB-INF/views/目录下。如果路径前缀写错页面就会报404。第三是web.xml里的Spring监听器和DispatcherServlet的加载顺序。如果你把SpringMVC的DispatcherServlet配置为启动时加载那Spring的ContextLoaderListener必须配置在它之前否则ApplicationContext可能无法正确初始化Service的Bean直接找不到。5. 调试部署实录启动失败排查的完整链路这部分我想完整记录一次拿到代码死活跑不起来的排查过程。这种经历每个做Java Web的人都遇到过而且大概率在这个SSM结构里重演我把整个链路写清楚你照着排查效率会高很多。5.1 第一个症状启动时BeanCreationException某次部署测试时Tomcat启动到一半抛出了BeanCreationException错误信息里提到Error creating bean with name appointmentService。这种异常的字面意思是Spring容器在创建这个Bean的时候出了问题但真正原因要往底层看。点开异常堆栈的完整信息发现Caused by那一行写的是Invalid bound statement (not found): com.example.mapper.AppointmentMapper.createAppointment。这个错误的经典含义是Mapper接口的方法在XML文件里找不到对应的SQL语句。我立刻检查了mybatis-config.xml里的mapperLocations配置发现它指向的是classpath:mapper/*.xml但实际的XML文件放在了src/main/resources/mapper目录下文件名倒是都对但有一张表的XML文件后缀是.XML大写Windows系统大小写不敏感看不出问题MyBatis在类路径扫描时却严格区分大小写。改回小写后缀之后Bean就正常创建了。5.2 第二个症状页面能开但CSS全丢项目跑通之后登录页面倒是出来了但是样式全乱了浏览器F12里一片404报错。这个问题的根源是SpringMVC的前端控制器DispatcherServlet把静态资源的请求也拦截了。解决方式是在springmvc.xml里配置静态资源放行mvc:default-servlet-handler/ mvc:resources mapping/static/** location/static//如果你用的是纯JSP页面且CSS放在webapp/static目录下那第二行配置就够了。注意location路径必须以/结尾否则Spring会报找不到资源的错。这个错误几乎不会影响程序能不能跑但非常影响评审老师的第一印象——界面丑陋的系统在答辩时天然吃亏。5.3 第三个症状数据库中文全部乱码页面通了注册用户时往数据库里插入中文姓名结果表中显示的全是问号。这个问题的排查链路比想象中长至少涉及三层字符集。MySQL客户端连接层、数据库表字符集、JDBC连接参数这三层只要有一层不对中文就会乱码。先检查数据库和表的字符集SHOW CREATE TABLE user;确认是utf8mb4之后再看JDBC连接串里有没有characterEncodingutf8最后还要检查IDEA编辑器的文件编码是不是UTF-8。如果IDEA默认是GBK而你的项目配置文件里中文注释很多会在编译时直接酿成乱码。推荐在IDEA的Settings里把Global Encoding、Project Encoding、Properties Files都统一改成UTF-8并勾选透明转换为ASCII的选项不勾选。5.4 部署到Tomcat的两种方式对比开发调试阶段我用的是IDEA内置的Tomcat集成部署这种方式的优势是支持热部署和Debug断点。但如果你需要把系统部署到服务器演示给老师看我更推荐用war包方式。在Maven的pom.xml里确认打包方式是war然后执行mvn clean package -DskipTests生成war包后把它复制到Tomcat的webapps目录下启动Tomcat时它会自动解压部署。注意看Tomcat日志如果你的war包解压后访问404可能是Application context没对上默认访问路径是http://localhost:8080/你的war包名/。如果你希望访问根路径就把war包改名为ROOT.war再放进去覆盖Tomcat默认的ROOT应用。6. 论文与答辩材料一万字文档怎么组织这套项目配套的论文文档有一万字以上很多同学以为论文是最后才写的其实顺序反了。最好的做法是边写代码边积累论文素材代码里每个模块的截图、数据库表的截图、测试运行的效果图在开发过程中随手保存最后写论文时能省掉大把补截图的时间。6.1 论文目录结构参考我建议按下面这个结构来组织它基本对应了大多数学校毕设/课设论文的评审模板第一章 绪论背景与意义、国内外研究现状、论文主要工作。第二章 相关技术介绍Java语言、SSM框架概述、MySQL数据库、开发工具。第三章 系统分析可行性分析、需求分析、角色分析。第四章 系统设计总体架构、功能模块设计、数据库设计、界面设计。第五章 系统实现按模块展示核心代码和实现截图。第六章 系统测试功能测试用例表、测试结果分析。第七章 总结与展望。6.2 技术介绍章节的写作技巧这一章最容易写成百度百科摘抄评审老师一眼就能看出来。你要用从我的系统怎么用它的角度来写。比如写Spring的时候不要说Spring是轻量级开发框架要写成本系统通过Spring容器管理Service层和Mapper层的Bean对象由容器负责依赖注入降低模块间耦合。把技术特性和你的项目绑在一起论文的查重率也会低很多。6.3 测试章节不能只写功能正常测试章节是论文里最容易被忽略但最能体现认真的地方。不要只写一句测试结果表明系统功能正常建议做成表格至少列出10条以上的测试用例每条包含测试项目、操作步骤、预期结果、实际结果、是否通过。比如患者预约医生这条用例要写清楚前置条件是该时段没有被预约、该医生状态正常操作步骤是进入医生详情页点击预约按钮预期结果是预约成功且我的预约列表出现该记录实际结果与预期一致。针对交流回复环节还可以加一条边界测试患者提交的提问内容长度超过数据库varchar字段的长度时系统是否有提示。这种不光是正向功能测试还包含异常数据测试评审老师看到这张表基本不会在测试环节再为难你。7. 系统界面的设计思路与演示说明最后说说界面。很多同学以为界面是锦上添花但在答辩演示时界面往往是老师对你的第一印象。这套系统的前端没有用前后端分离框架而是采用传统JSP加CSS好处是部署简单、不需要额外起Node服务特别适合SSM项目的演示场景。首页设计上我采用了左右布局。左侧是科室导航栏按内科、外科、儿科、妇科、骨科等科室分类展示患者点任意科室右侧动态刷新该科室下的医生列表。这个功能背后就是Mapper层的SQL动态查询前端通过AJAX请求Controller层接口Controller返回JSON数据前端用JavaScript渲染列表。你在答辩演示时可以现场演示一次从内科切换到外科顺带解释前端如何通过AJAX和后端交互这一套连招很能展示你对SSM体系的理解。医生详情页面我建议放三个核心区域医生基础信息卡片、医生简介和擅长领域、预约时间选择面板。预约时间面板用表格形式展示一周内每天的剩余号源可预约的时段可以点击已约满的时段置灰。这个交互逻辑不复杂但演示时很有说服力它同时体现了数据库预约记录查询和前端状态渲染两个环节。管理员后台的界面设计则偏重信息密度采用表格加搜索框的布局每条用户记录后面都有编辑和删除按钮。这里我建议在演示时特意操作一次禁用某个恶意用户的功能然后切换到这个用户的视角登录可以看到他被拦截无法登录。这个演示只需要维护一个status字段就能实现但效果非常直观能证明系统的权限控制不是摆设。最后再分享一个我在实际开发中的体会SSM项目调试时一定要学会看完整的异常堆栈不要只看第一行红字。很多问题表面上是Spring报错根源却在MyBatis的XML配置、数据库连接参数甚至文件编码上。这套医患交流系统从设计到跑通中间踩过的坑基本都在上面了你照着这个思路去搭建、去排查大概率能比我自己第一次做的时候少熬两个通宵。拿到源码之后建议先按第二、四、五章的步骤把环境搭好、把项目跑起来再对照第三章的代码去理解业务流转然后试着改一两个自己的功能点——比如给科室增加排序功能、给预约增加取消提醒这样答辩的时候你就能真正说清楚每一个设计决策背后的理由。

相关新闻

课堂实录NLP落地指南:从数据清洗到教学行为模式挖掘

课堂实录NLP落地指南:从数据清洗到教学行为模式挖掘

简介:《DeepSeek教学反思支持方案:基于NLP文本分析的课堂实录自动标注与教学行为模式挖掘》全文535页、共56个章节,是面向教研人员、教育技术研究者与一线教师的技术参考手册,适合需要借助NLP工具开展课堂观察与教学反思的读者。资…

2026/10/9 3:19:04 阅读更多 →
Mirror Particle:行为粒子建模与动态势能场分析框架

Mirror Particle:行为粒子建模与动态势能场分析框架

1. “Mirror Particle”不是新APP,而是一次对行为建模范式的悄然重写“Mirror Particle 正在构建人类行为的‘世界模型’”——这句话乍看像某家科技公司的新闻稿标题,带着点科幻感和宏大叙事的味道。但如果你最近翻过几篇前沿AI行为建模的预印本&#x…

2026/10/9 3:18:04 阅读更多 →
Agentic工程实践:从Copilot到自主决策系统的核心设计

Agentic工程实践:从Copilot到自主决策系统的核心设计

1. 先搞清楚:Agentic 工程到底在解决什么问题1.1 从 Copilot 到 Agent 的范式转变过去两年 AI 应用的主流做法是“对话式 AI”——用户提问,模型回答。这套模式在客服、内容生成、知识问答这些场景里够用,但一旦涉及“要完成一件完整的事”&a…

2026/10/9 3:18:04 阅读更多 →

最新新闻

论文降重工具怎么选?从查重原理到实战流程全解析

论文降重工具怎么选?从查重原理到实战流程全解析

经常有师弟师妹拿着大篇幅标红的查重报告来找我,第一句话就是:“师兄,用什么工具能一夜之间把重复率降下去?”说实话,每次听到这种问题我都想把“一夜之间”四个字划掉。降重不是体力活,也不是无脑堆工具就…

2026/10/9 3:55:26 阅读更多 →
HeidiSQL 12.10 一个窗口管五种数据库:连接配置、跨库直导与高频功能速查

HeidiSQL 12.10 一个窗口管五种数据库:连接配置、跨库直导与高频功能速查

HeidiSQL 12.10 一个窗口管五种数据库:连接配置、跨库直导与高频功能速查 一、绿色便携,U 盘即用 HeidiSQL 是老牌开源数据库图形客户端(GPL-2.0):MySQL/MariaDB/PostgreSQL/MS SQL/SQLite 五种数据库一个界面管。官方…

2026/10/9 3:55:26 阅读更多 →
低频量化周报:风险溢价比、可转债配债与双低轮动实操复盘

低频量化周报:风险溢价比、可转债配债与双低轮动实操复盘

每周五收盘之后,我都会固定花半个小时左右,把低频量化周报对应的那几张表更新一遍:指数风险溢价比、可转债配债数据集、双低轮动清单、股东福利记录,最后再写一段本周交易总结。这周更新完发现,指数风险溢价比已经连续…

2026/10/9 3:55:26 阅读更多 →
Agent-Reach:为AI智能体打造稳定可控的资源触达中间层

Agent-Reach:为AI智能体打造稳定可控的资源触达中间层

最近半年,我把主要精力都压在一个内部项目上,项目代号叫Agent-Reach。用一句话概括,它要解决的问题只有一个:让 AI 智能体稳定、安全、可控地“触达”执行任务所需的一切资源——内部 API、数据库里的工单、审批流、邮件、文件签名…

2026/10/9 3:55:26 阅读更多 →
基于小波纹理特征的图像检索实现:Matlab代码与调参实战

基于小波纹理特征的图像检索实现:Matlab代码与调参实战

图像检索这些年一直都是计算机视觉里的老话题,但真正落地的时候,很多人会卡在一个点上:怎么把"图像长什么样"变成一组能算距离的数字。深度学习火起来之后,大家习惯性想到卷积神经网络提特征,但现实里经常遇…

2026/10/9 3:55:26 阅读更多 →
OpenClaw云端部署实战:华为云2分钟跑通自动化智能体

OpenClaw云端部署实战:华为云2分钟跑通自动化智能体

从去年开始,OpenClaw 这类的个人自动化助理项目就一直在我关注列表里挂着。以前想跑,总觉得要折腾一堆依赖、模型接口、定时任务脚本,结果总是"收藏了等于会了"。直到这个月我把一台华为云 ECS 重新整理,从头部署了一遍…

2026/10/9 3:54:26 阅读更多 →

日新闻

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/7 13:34:55 阅读更多 →