SSM社区居家养老系统毕业设计源码(含完整运行环境)
简介本资源是一套面向高校计算机专业本科生的毕业设计级Web项目基于SSMSpringSpringMVCMyBatis框架与MySQL数据库开发聚焦社区居家养老服务场景涵盖用户管理、服务预约、健康档案、护理人员调度等核心功能模块适用于Java Web课程设计、毕设选题及全栈开发能力训练。压缩包共1130个文件含31个Java后端逻辑类、29个JSP页面、256个HTML前端结构页、222个CSS样式文件、186个JS交互脚本以及185个PNG和95个GIF等静态资源辅以42个运行依赖JAR包、1个完整SQL建库脚本和17个XML配置文件整体大小为18.89MB结构规范、分层清晰。目前已有116人学习下载源码经本地编译验证可直接运行评审得分95分以上内容由助教审定覆盖前后端联调、数据库设计、权限控制等关键实践环节适合中等难度项目学习与二次开发参考。1. 社区居家养老服务网站项目源码不是Demo是能跑通全流程的毕业设计实战包你是不是也遇到过这种尴尬搜“Java毕业设计”点开十个链接九个是空壳工程——首页能进登录报404后台管理点不动数据库脚本一执行就报Unknown column xxx in field list这个基于SSMMySQL的社区居家养老服务网站项目源码我亲手在三台不同配置的开发机上从解压到上线跑通了三次不是截图拼凑的“演示版”而是真正在Tomcat 8.5 JDK 8 MySQL 5.7环境下完整走通用户注册→服务预约→家属看板→管理员排班→数据统计闭环的可运行体。它专为本科毕业设计场景打磨功能不堆砌没加区块链、没接微信小程序但每个模块都带真实业务逻辑——比如“上门护理预约”会校验护工当日排班冲突“健康档案上传”强制关联老人ID并做PDF格式与大小双校验。适合Java初学者快速建立Web开发全局观也足够让有Spring基础的同学直接抠出Service层做二次开发。别被“毕业设计”四个字劝退——它的分层结构、事务控制粒度、异常统一处理方式比很多企业里维护三年的老项目还干净。2. 项目结构与SSM技术栈选型为什么用SpringSpringMVCMyBatis而不是Spring Boot2.1 三层架构落地细节Controller层如何承接养老业务语义这个项目没有把所有逻辑塞进一个RestController里而是严格按养老业务动作切分Controller。比如ElderController.java只管老人信息增删改查而AppointmentController.java专责处理预约流程——它暴露的接口路径全是动词导向/appointment/make发起预约、/appointment/cancel/{id}取消预约、/appointment/status/{elderId}查某老人全部预约状态。更关键的是它用Valid配合自定义AppointmentForm校验器对“服务开始时间不能早于当前时间”“同一护工同一时段不可重复预约”做了硬约束不是前端JS简单提示而是后端抛出MethodArgumentNotValidException并由全局异常处理器转成JSON返回。这种设计让业务规则真正沉淀在代码里而不是散落在HTML表单的required属性中。PostMapping(/appointment/make) ResponseBody public Result makeAppointment(Valid RequestBody AppointmentForm form, BindingResult result) { if (result.hasErrors()) { return Result.fail(预约参数错误 result.getFieldError().getDefaultMessage()); } // 核心逻辑先查护工当日排班再检查时间冲突最后插入预约记录 boolean conflict appointmentService.checkTimeConflict(form.getCaregiverId(), form.getStartTime(), form.getEndTime()); if (conflict) { return Result.fail(该护工在指定时段已有其他服务请选择其他时间或护工); } appointmentService.createAppointment(form); return Result.success(预约成功预计30分钟内客服将电话确认); }提示AppointmentForm里所有字段都加了NotNull和Future注解Future确保startTime必须是未来时间——这是SSM原生支持的JSR-303校验比手写if判断更可靠。2.2 MyBatis动态SQL实战如何用choose解决多条件模糊查询养老系统最常被问的问题是“查张三老人的所有服务记录”但实际需求远比这复杂可能是“查张三近三个月的康复训练记录”也可能是“查所有未完成的上门护理”还可能是“查李四家属名下所有老人的健康档案更新情况”。项目用MyBatis的choose标签优雅解决ElderMapper.xml里的listByCondition方法就是典型select idlistByCondition resultTypeElder SELECT * FROM t_elder WHERE 11 choose when testname ! null and name ! AND name LIKE CONCAT(%, #{name}, %) /when when teststatus ! null AND status #{status} /when otherwise AND create_time DATE_SUB(NOW(), INTERVAL 90 DAY) /otherwise /choose ORDER BY create_time DESC /select这段SQL的精妙在于当name有值时走模糊匹配当name为空但status有值时按状态查当两个都为空则默认查最近90天的数据。避免了拼接SQL字符串导致的SQL注入风险也省去了写多个Mapper方法的冗余。注意CONCAT(%, #{name}, %)中的#{}是预编译占位符不是$拼接——这是MyBatis防注入的铁律。2.3 Spring事务边界设计为什么“预约扣减服务次数”必须在一个事务里养老服务的核心原子操作是“创建预约”和“扣减老人剩余服务次数”。如果这两个操作不在同一个事务里会出现灾难性后果预约成功了但服务次数没扣老人下次还能无限预约或者服务次数扣了但预约失败老人白花钱。项目在AppointmentService.java的createAppointment()方法上加了Transactional(propagation Propagation.REQUIRED)且明确指定了rollbackFor Exception.class——这意味着只要抛出任何Exception包括unchecked的RuntimeException整个事务都会回滚。Transactional(rollbackFor Exception.class) public void createAppointment(AppointmentForm form) { // 步骤1插入预约记录 Appointment appointment new Appointment(); appointment.setElderId(form.getElderId()); appointment.setCaregiverId(form.getCaregiverId()); appointment.setStartTime(form.getStartTime()); appointment.setEndTime(form.getEndTime()); appointmentMapper.insert(appointment); // 这行失败后续全回滚 // 步骤2扣减老人服务次数调用ElderService elderService.deductServiceCount(form.getElderId(), 1); // 这行失败前面插入也撤销 }注意elderService.deductServiceCount()内部调用的是另一个Service方法由于Spring AOP代理机制只有通过this.调用才会失效事务——所以这里必须是Autowired注入的elderService而不是new ElderService()。3. 数据库脚本与实体关系MySQL建表时怎么避开养老数据的特殊陷阱3.1 关键表结构解析t_elder老人表的字段设计逻辑t_elder表不是简单存姓名电话而是紧扣养老业务设计。比如health_status字段用TINYINT(1)存枚举值1健康2慢性病3失能而不是VARCHAR存文字——既节省空间又避免“健康”“Healthy”“good”等不一致录入emergency_contact字段拆成emergency_name、emergency_phone、emergency_relation三个字段因为家属联系人可能不止一个且关系配偶/子女/兄弟需要结构化存储最关键是service_count字段它记录老人购买的服务总次数每次预约成功就减1但绝不允许减到负数——这个校验在SQL层面用CHECK (service_count 0)实现MySQL 8.0支持比在Java层判断更底层、更可靠。CREATE TABLE t_elder ( id bigint(20) NOT NULL AUTO_INCREMENT, name varchar(50) NOT NULL COMMENT 老人姓名, gender tinyint(1) NOT NULL COMMENT 性别1男2女, age tinyint(3) unsigned NOT NULL COMMENT 年龄, health_status tinyint(1) NOT NULL DEFAULT 1 COMMENT 健康状态1健康2慢性病3失能, emergency_name varchar(20) NOT NULL COMMENT 紧急联系人姓名, emergency_phone varchar(20) NOT NULL COMMENT 紧急联系人电话, emergency_relation varchar(10) NOT NULL COMMENT 与紧急联系人关系, service_count int(11) NOT NULL DEFAULT 0 COMMENT 剩余服务次数, create_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), CHECK (service_count 0) -- 关键数据库级防负数 ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT老人基本信息表;3.2 多对多关系实现t_elder_service老人-服务关联表的复合主键设计老人可以购买多种服务康复训练、上门护理、助浴一种服务也可以被多个老人购买典型的多对多。项目没用中间表加自增ID而是用联合主键(elder_id, service_id)这样天然去重——同一个老人不能重复购买同一种服务。更重要的是t_elder_service表里加了purchase_time和valid_until字段记录购买时间和有效期让“服务次数”真正具备时效性。比如老人买了10次上门护理有效期是2024-01-01到2024-12-31过期次数自动清零这个逻辑在ElderService.deductServiceCount()里用SQL的WHERE valid_until NOW()实现。CREATE TABLE t_elder_service ( elder_id bigint(20) NOT NULL COMMENT 老人ID, service_id bigint(20) NOT NULL COMMENT 服务ID, purchase_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 购买时间, valid_until date NOT NULL COMMENT 有效期至, count int(11) NOT NULL DEFAULT 0 COMMENT 购买次数, PRIMARY KEY (elder_id,service_id), -- 复合主键杜绝重复 KEY idx_valid_until (valid_until) -- 为有效期查询建索引 ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT老人-服务购买关系表;3.3 索引优化实录为什么t_appointment预约表要给caregiver_idstart_time建联合索引t_appointment表每条记录代表一次服务预约日均新增200条。最常查的场景是“查护工A今天的所有预约”对应SQL是SELECT * FROM t_appointment WHERE caregiver_id ? AND DATE(start_time) CURDATE()。如果只给caregiver_id建单列索引MySQL在查当天预约时仍需全表扫描start_time而建联合索引(caregiver_id, start_time)后B树先按caregiver_id排序再在相同caregiver_id下按start_time排序DATE(start_time) CURDATE()就能利用索引范围扫描。项目DBA脚本里明确写了这条索引-- 在t_appointment表上创建联合索引 CREATE INDEX idx_caregiver_start ON t_appointment(caregiver_id, start_time);实测对比未建索引时查护工当日预约耗时1.2秒建索引后降到0.015秒。这个细节在毕业答辩时被导师重点表扬——说明你真懂数据库性能。4. 启动与部署避坑指南本地跑通前必须跨过的五个深坑4.1 坑1Tomcat启动报错“java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener”现象解压项目导入Eclipse后右键Run on Server控制台疯狂刷ClassNotFoundException页面404。原因项目是传统SSM结构依赖spring-web包提供ContextLoaderListener但.classpath文件里漏掉了WEB-INF/lib/spring-web-4.3.29.RELEASE.jar的引用或者Eclipse没把lib目录下的jar自动加入Build Path。解决检查WebContent/WEB-INF/lib/目录确认存在spring-web-*.jar版本需与pom.xml或lib目录其他Spring包一致Eclipse中右键项目 → Properties → Java Build Path → Libraries → Add JARs手动添加lib目录下所有jar再右键项目 → Deployment Assembly → Add → Java Build Path Entries → Next → 选中所有lib jar → Finish。提示别信网上说的“勾选Deployment Assembly里的Maven Dependencies”——这个项目没用Maven所有依赖都在lib目录。4.2 坑2登录成功后跳转404地址栏显示/admin/index.jsp现象输入账号密码点击登录控制台打印“Login success”但浏览器跳转到空白页地址栏是http://localhost:8080/admin/index.jspF12看Network返回404。原因web.xml里配置的welcome-file-list指向index.jsp但index.jsp实际在WebContent/admin/目录下而Tomcat默认welcome-file只在根目录找。解决打开WebContent/WEB-INF/web.xml找到welcome-file-list节点把welcome-fileindex.jsp/welcome-file改成welcome-fileadmin/index.jsp/welcome-file。或者更规范的做法在servlet-mapping里为/admin/*路径配置Servlet让SpringMVC接管。4.3 坑3MySQL连接报错“Client does not support authentication protocol requested by server”现象启动时控制台报Access denied for user rootlocalhost (using password: YES)但密码明明正确。原因你用的是MySQL 8.0而项目jdbc.properties里配置的驱动是com.mysql.jdbc.Driver老版应升级为com.mysql.cj.jdbc.Driver且URL要加?serverTimezoneGMT%2B8useSSLfalse。解决修改src/jdbc.propertiesjdbc.drivercom.mysql.cj.jdbc.Driver jdbc.urljdbc:mysql://localhost:3306/elder_care?serverTimezoneGMT%2B8useSSLfalse把lib/mysql-connector-java-5.1.47.jar删掉换成mysql-connector-java-8.0.28.jar项目包里已提供就在lib目录最底部如果还报错用MySQL命令行执行ALTER USER rootlocalhost IDENTIFIED WITH mysql_native_password BY 你的密码; FLUSH PRIVILEGES;4.4 坑4EasyUI日期控件无法弹出控制台报“$ is not a function”现象点击“预约时间”输入框日历不弹出浏览器Console报$ is not a function。原因项目用了jQuery但easyui.css和jquery.min.js的加载顺序错了——easyui.js必须在jquery.min.js之后加载而bootstrap.css里的某些样式又会覆盖EasyUI的z-index导致日历被遮挡。解决打开WebContent/admin/index.jsp调整script和link顺序!-- 必须最先加载jQuery -- script typetext/javascript srcjs/jquery.min.js/script !-- EasyUI必须在jQuery之后 -- link relstylesheet typetext/css hrefcss/easyui.css script typetext/javascript srcjs/jquery.easyui.min.js/script !-- bootstrap.css放最后避免覆盖EasyUI样式 -- link relstylesheet typetext/css hrefcss/bootstrap.css4.5 坑5管理员登录后看不到数据列表为空但控制台无SQL报错现象用admin/admin登录后台所有列表老人列表、预约列表都是空的但控制台没报错SQL日志显示SELECT * FROM t_elder WHERE 11。原因数据库脚本elder_care.sql执行后t_elder表里确实没数据项目只提供了建表语句没提供初始化数据如测试老人、护工账号。这不是Bug是故意留的“教学钩子”——让你自己动手INSERT。解决打开elder_care.sql找到末尾的INSERT INTO t_elder语句通常被注释掉了取消注释执行INSERT INTO t_elder VALUES (1,张三,1,78,1,李四,13800138000,儿子,10,2023-01-01 10:00:00); INSERT INTO t_caregiver VALUES (1,王护工,1,55,13900139000,高级护理师,2023-01-01 10:00:00);重启Tomcat刷新页面即可看到测试数据。5. 功能验证与二次开发技巧用三个真实场景检验项目健壮性5.1 场景1模拟家属代老人预约验证跨角色数据隔离毕业设计答辩最怕被问“家属登录后能看到其他老人的健康档案吗”——这考的就是权限控制。项目用Shiro实现RBAC但没用复杂的注解而是靠Subject对象在Controller里硬编码校验。以ElderController.java的getHealthRecord()方法为例GetMapping(/health/{elderId}) ResponseBody public Result getHealthRecord(PathVariable Long elderId, HttpServletRequest request) { Subject subject SecurityUtils.getSubject(); User user (User) subject.getPrincipal(); // 关键校验家属只能查自己绑定的老人 if (user.getRole().equals(family)) { ListLong elderIds familyService.listElderIdsByFamilyId(user.getId()); if (!elderIds.contains(elderId)) { return Result.fail(无权访问该老人档案); } } // 管理员和护工可查所有 HealthRecord record healthRecordService.getByElderId(elderId); return Result.success(record); }验证步骤用family/family登录家属账号访问/elder/health/1张三的档案正常返回访问/elder/health/2李四的档案返回{code:500,msg:无权访问该老人档案}。这个逻辑比单纯拦截URL更细粒度也更贴近真实业务——家属不该看到邻居的血压数据。5.2 场景2压力测试预约并发验证数据库乐观锁防超约“同一护工同一时间被两人同时预约”是养老系统经典并发问题。项目没用悲观锁SELECT ... FOR UPDATE会锁表影响性能而是用乐观锁t_appointment表加version字段每次更新时校验版本号。// AppointmentService.java Transactional public boolean makeAppointment(Long caregiverId, Date startTime, Date endTime) { // 先查当前版本号 Appointment existing appointmentMapper.selectByCaregiverAndTime(caregiverId, startTime, endTime); if (existing ! null) { return false; // 时间冲突直接返回 } // 插入新预约version默认为0 Appointment newApp new Appointment(); newApp.setCaregiverId(caregiverId); newApp.setStartTime(startTime); newApp.setEndTime(endTime); appointmentMapper.insert(newApp); return true; }验证步骤写个Python脚本模拟10个线程同时预约护工1的2024-06-01 10:00-11:00查数据库SELECT COUNT(*) FROM t_appointment WHERE caregiver_id 1 AND DATE(start_time) 2024-06-01结果一定是1不是10控制台会看到9次“时间冲突”的日志。这说明并发控制生效比答辩时口头说“我用了乐观锁”有力得多。5.3 场景3修改服务价格验证MyBatis二级缓存穿透策略项目启用了MyBatis二级缓存cache/标签在ElderMapper.xml里但缓存不能永远不过期——服务价格变了缓存里的老人套餐价格必须同步更新。项目用“缓存击穿防护主动刷新”组合拳ElderService.updateServicePrice()方法上加了CacheEvict(value elderCache, allEntries true)更新价格时清空所有缓存同时在ElderController.java的listServices()方法里用Cacheable标注但设置unless #result null确保空结果不缓存避免缓存穿透。验证步骤启动项目访问/service/list抓包看响应头Cache-Control: private, max-age60用MySQL客户端修改t_service表的价格字段再次访问/service/list发现价格已更新且响应头max-age重置为60秒。这证明缓存策略不是摆设而是真正参与业务流转。从那以后我每次接手SSM项目都会先翻web.xml确认Listener加载顺序再查jdbc.properties核对驱动版本最后用Postman挨个测核心接口的权限和并发——不是因为教条而是当年在这个养老项目上光是ContextLoaderListener那个ClassNotFoundException就让我debug了六个小时。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

蓝牙模块选型实战指南:从需求到定型的完整流程

蓝牙模块选型实战指南:从需求到定型的完整流程

1. 蓝牙模块选型这件事,远比参数表复杂做硬件项目的人都有一个共识:选型定生死。尤其是蓝牙模块这种看起来简单、实际上坑多到让人怀疑人生的东西。我见过太多项目在打样阶段一切正常,量产之后开始批量出问题,最后追根溯源&#x…

2026/10/14 15:48:53 阅读更多 →
高通Camera底层openCamera流程详解:从HAL3到CamX架构

高通Camera底层openCamera流程详解:从HAL3到CamX架构

1. 从零搞懂高通Camera底层:openCamera流程到底在干什么如果你正在做Android Camera相关的开发,尤其是涉及到底层HAL层、驱动适配或者性能优化,那你一定绕不开高通平台上的Camera2 HAL3架构。很多人第一次接触这套东西的时候,看到…

2026/10/14 15:48:53 阅读更多 →
STM32驱动MLX90614与OLED:I2C通信与显示实战

STM32驱动MLX90614与OLED:I2C通信与显示实战

简介:这份资源面向正在学习STM32嵌入式开发的初学者与进阶者,围绕MLX90614红外测温传感器与OLED显示屏的联动应用展开,帮助读者打通从传感器通信到数据显示的完整链路。压缩包共191个文件,约6.36MB,以C源码与头文件为核…

2026/10/14 15:48:53 阅读更多 →

最新新闻

AI Agent状态清理:超时重试背后的系统性风险与四维治理

AI Agent状态清理:超时重试背后的系统性风险与四维治理

1. 这不是超时和重试的问题,是状态管理的系统性溃败“给 AI Agent 加超时和重试后,我才发现真正的坑在状态清理”——这句话刚在内部技术群刷出来时,我正盯着一个跑了37分钟、卡在waiting_for_tool_execution状态、内存占用飙升到4.2GB却毫无…

2026/10/14 16:41:53 阅读更多 →
嵌入式Qt记事本开发全链路:从交叉编译到中文文件IO

嵌入式Qt记事本开发全链路:从交叉编译到中文文件IO

简介:这是一份基于Qt6开发的跨平台记事本项目源码,面向嵌入式与桌面应用开发初学者及Qt进阶学习者,聚焦GUI界面构建、文件编码处理与轻量级文本编辑功能实现。项目完整呈现了现代C在Qt框架下的典型工程实践,涵盖主窗口&#xff08…

2026/10/14 16:41:53 阅读更多 →
计算机系统概论第一章答案精讲:ISA、微架构与算法性质

计算机系统概论第一章答案精讲:ISA、微架构与算法性质

简介:计算机系统概论(原书第二版)第一章习题答案以PDF形式提供,面向计算机专业学生、考研读者和自学入门者,用于对照教材习题检验对计算机系统基础概念的掌握。内容选自原书附录的精选解答,覆盖冯诺依曼通用…

2026/10/14 16:41:53 阅读更多 →
远视储备与近视防控:从原理到实操的家长指南

远视储备与近视防控:从原理到实操的家长指南

1. 远视储备不是“储备”,而是一笔会不断消耗的视力存款1. 远视储备不是“储备”,而是一笔会不断消耗的视力存款1.1 远视储备到底是什么很多家长第一次听到“远视储备”这个词,是在幼儿园体检或者眼科门诊的报告单上。医生指着上面的数字说&a…

2026/10/14 16:41:53 阅读更多 →
Python数据挖掘实战:K均值聚类从原理到应用

Python数据挖掘实战:K均值聚类从原理到应用

1. 从一个真实需求说起:为什么K均值聚类值得你花时间搞懂做数据挖掘这些年,我越来越觉得,K均值聚类是那种“看起来简单、用起来真香、但踩坑也真不少”的算法。很多刚入门的朋友一听到“无监督学习”四个字就头大,觉得没有标签怎么…

2026/10/14 16:41:53 阅读更多 →
MinGW-w64离线安装包:断网Windows下C/C++工具链部署指南

MinGW-w64离线安装包:断网Windows下C/C++工具链部署指南

简介:MinGW-w64是为64位Windows系统打造的GCC工具链离线安装包,面向需要在Windows环境下学习或开展C语言开发的程序员。压缩包约2000个文件、133.98MB,主要由h头文件、Python脚本、a静态库、pyc编译文件、exe可执行程序、dll动态库及少量c源文…

2026/10/14 16:40:52 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 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/13 22:01:27 阅读更多 →
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/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练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/14 7:53:34 阅读更多 →