Android医疗系统源码解析:从环境搭建到挂号接口联调实战
简介这是一套面向高校安卓课程设计与移动应用开发学习者的完整项目资料源自大三学期课程作业由两人协作约两个月完成涵盖Android客户端、后端数据接口与简易Web管理后台三部分适合作为课程设计参考、毕业设计雏形或参赛作品的起步模板。压缩包共1106个文件约74.32MB以json、xml、png、java、class、dex、jar、properties、html、css等为主分别对应接口数据、界面布局、图标素材、业务源码、编译产物与前端页面结构完整便于对照学习。目前已有1017人学习下载。资料包含Android端源码、后端源码、Web管理系统源码以及一份按论文格式撰写、约13000字共60页的课程报告可帮助读者理解信息化医疗服务系统的接口设计思路、App与后台的协作方式并借鉴报告撰写与项目组织经验。1. 从一份 Android 医疗系统源码包说起它到底能跑出什么如果你手头正好有一份「基于 Android 的信息化医疗服务系统」的压缩包第一反应大概率是这玩意儿是课程设计凑数的还是真能拆出点东西我拿到这类包的习惯是先看技术栈——Android 客户端 SpringBoot 后端 jFinal 框架这个组合在近两年的毕设和中小型医疗信息化项目里出现频率极高。它解决的核心问题很具体让患者端能挂号、查报告、看排班让医护端能录入诊断、管理病历后台用 REST 接口把两端串起来。适合谁正在做医疗类 App 课程设计的学生、需要快速搭一个院内服务原型的小团队、以及想研究 Android 与 Java 后端如何做数据同步的开发者。别指望它直接上三甲医院的生产环境但作为一套能跑通「注册登录→科室选择→预约挂号→报告查询」闭环的参考实现它的骨架是完整的。下面我按实际拆包和部署的顺序把这份资源从环境配置到接口联调再到避坑一层层剥开。2. 环境搭建与工程结构把 Android 端和后端同时跑起来2.1 开发环境版本对齐这类包最常见的翻车点不是代码逻辑而是版本对不上。Android 端通常用 Android Studio 打开Gradle 版本和 AGP 版本必须匹配后端用 IDEA 或 Eclipse 导入 Maven 工程JDK 版本要跟 SpringBoot 的依赖兼容。我一般会先看三个文件build.gradle项目级、app/build.gradle模块级、pom.xml。如果 Gradle 插件写的是 7.x那 Android Studio 至少要是 Arctic Fox 以上如果 SpringBoot 是 2.7.xJDK 选 8 或 11 最稳别上来就 JDK 17jFinal 的一些老依赖在模块化系统下会报InaccessibleObjectException。# 查看本机 JDK 版本确认与 pom.xml 中 java.version 一致 java -version # 输出示例openjdk version 11.0.20 2023-08-17 # 查看 Gradle 版本在 Android 工程根目录下执行 ./gradlew --version # 重点看 Gradle 和 AGP 的对应关系不匹配就先改 gradle-wrapper.properties上面两条命令是动手前必须走的。java -version决定后端能不能编译./gradlew --version决定 Android 端同步会不会卡在Downloading。参数上gradle-wrapper.properties里的distributionUrl如果指向的是services.gradle.org的旧版本国内网络下同步极慢常见做法是换成腾讯云或阿里云的镜像地址但注意镜像只加速下载不改变版本号本身。2.2 工程目录拆解与模块职责解压后一般能看到两个顶层目录一个是 Android 客户端工程含app/src/main/java下的 Activity、Adapter、网络请求封装另一个是后端服务工程含src/main/java下的 Controller、Service、Dao。jFinal 在这里通常出现在后端的数据访问层它比 MyBatis 更轻配置少适合快速出活。你要关注的是AndroidManifest.xml里的权限声明和application.yml里的数据库连接。!-- AndroidManifest.xml 中必须有的网络权限和存储权限 -- uses-permission android:nameandroid.permission.INTERNET / uses-permission android:nameandroid.permission.ACCESS_NETWORK_STATE / !-- 如果涉及报告图片缓存还需要读写外部存储Android 10 要用分区存储 -- uses-permission android:nameandroid.permission.READ_EXTERNAL_STORAGE android:maxSdkVersion28 /这段权限配置直接决定 App 能不能发出网络请求。INTERNET是底线没有它所有接口调用都会抛SecurityException。ACCESS_NETWORK_STATE用于判断网络可用性很多包里的工具类会用它做断网提示。注意READ_EXTERNAL_STORAGE加了maxSdkVersion28这是为了兼容 Android 10 以下Android 10 及以上应该走 MediaStore 或应用专属目录否则会触发分区存储限制。后端这边application.yml里重点看spring.datasource.url、username、password以及server.port。如果端口写的是 8080而 Android 端Retrofit的baseUrl写的是10.0.2.2:8080那模拟器才能通真机调试必须换成电脑局域网 IP。2.3 数据库初始化与接口连通性验证后端跑起来之前数据库得先建好。包里一般会带一个.sql文件用 Navicat 或命令行导入 MySQL。导入后别急着启动 SpringBoot先用mysql命令行确认表结构和数据。-- 确认核心表是否创建成功医疗系统一般至少这几张 SHOW TABLES; -- 预期看到user、department、doctor、appointment、report 等 -- 检查科室表有没有初始数据没有的话前端科室列表会是空的 SELECT * FROM department LIMIT 5; -- 检查用户表字段确认密码字段长度够不够存加密后的串 DESC user;导入 SQL 后执行SHOW TABLES是最快的验证手段。如果表数量明显偏少说明 SQL 文件不完整或者执行中断了。SELECT * FROM department用来确认基础数据很多包只建表不插数据导致 App 首页科室列表空白这不是代码 bug是数据没初始化。DESC user看密码字段如果长度只有 20而代码里用的是 BCrypt 加密密文长度 60插入时会被截断登录必然失败。后端启动后用浏览器或 Postman 访问http://localhost:8080/department/list返回 JSON 数组就说明接口通了。Android 端这边把baseUrl配好运行到模拟器注册一个账号能收到验证码或直接登录成功整条链路就算打通了。3. 核心功能实现挂号、报告查询与数据同步的代码路径3.1 预约挂号模块的接口设计与参数传递挂号是这类系统的核心业务代码路径通常是从 Android 端的AppointmentActivity发起经过Retrofit封装的ApiService打到后端的AppointmentController再经AppointmentService调用 jFinal 的Db工具类写库。这里的关键参数有四个userId、doctorId、scheduleId、appointmentTime。少一个后端就不知道给谁排给谁看。// Android 端 Retrofit 接口定义简化版 public interface ApiService { FormUrlEncoded POST(appointment/create) CallBaseResponse createAppointment( Field(userId) int userId, Field(doctorId) int doctorId, Field(scheduleId) int scheduleId, Field(appointmentTime) String appointmentTime ); }这段代码里FormUrlEncoded和Field是配套的表示以表单形式提交。userId一般从 SharedPreferences 里取登录后存的用户 IDdoctorId和scheduleId来自前一个页面的列表点击事件appointmentTime是字符串格式的日期时间后端用SimpleDateFormat解析。常见坑是时间格式不统一Android 端传yyyy-MM-dd HH:mm后端按yyyy/MM/dd解析直接抛ParseException。我一般会在接口文档里把格式写死两端都用同一个常量。// 后端 Controller 接收参数并调用 Service PostMapping(/appointment/create) public BaseResponse create(RequestParam int userId, RequestParam int doctorId, RequestParam int scheduleId, RequestParam String appointmentTime) { // 先查该医生该时段是否还有余号 int remaining appointmentService.getRemaining(scheduleId); if (remaining 0) { return BaseResponse.fail(该时段号源已满); } // 再查该用户是否重复预约 boolean duplicated appointmentService.isDuplicated(userId, scheduleId); if (duplicated) { return BaseResponse.fail(您已预约过该时段); } return appointmentService.create(userId, doctorId, scheduleId, appointmentTime); }后端这段逻辑有两个前置校验余号检查和重复预约检查。getRemaining一般查schedule表的total减去appointment表里已预约数量。isDuplicated查同一用户同一排班是否已有记录。这两个校验不做就会出现超卖和一人占多号的情况在医疗场景里是业务事故。参数上scheduleId是排班主键不是医生 ID别搞混。返回的BaseResponse通常包含code、msg、data三个字段Android 端根据code判断成功失败并弹 Toast。3.2 检查报告查询与列表渲染报告查询模块的数据流是反过来的后端从report表按userId查列表Android 端用RecyclerView渲染。这里容易出问题的地方是图片路径和分页。报告如果有影像图片数据库里存的往往是相对路径Android 端需要拼上后端文件服务的域名或 IP 才能加载。// Android 端 RecyclerView Adapter 的 onBindViewHolder 片段 Override public void onBindViewHolder(ViewHolder holder, int position) { Report report reportList.get(position); holder.tvTitle.setText(report.getReportName()); holder.tvDate.setText(report.getCreateTime()); // 图片路径拼接BASE_URL 来自 BuildConfig 或常量类 String imgUrl Constants.BASE_URL report.getImagePath(); Glide.with(holder.itemView.getContext()) .load(imgUrl) .placeholder(R.drawable.ic_loading) .into(holder.ivReport); }Glide加载图片时BASE_URL必须和后端文件映射路径一致。常见做法是后端用WebMvcConfigurer把/upload/**映射到本地磁盘目录数据库存/upload/report/xxx.jpgAndroid 端拼http://10.0.2.2:8080/upload/report/xxx.jpg。如果图片加载不出来先看placeholder有没有显示有占位图说明请求发出了但没拿到大概率是路径拼错或后端静态资源映射没配。分页这块如果报告列表数据多后端要支持page和size参数Android 端做上拉加载别一次性全查出来否则列表卡顿。3.3 jFinal 在后端数据层的实际用法jFinal 在这类项目里主要用来简化数据库操作。它的Db工具类可以直接执行 SQL 并返回Record或ListRecord比手写 JDBC 省事比 MyBatis 少配置。但要注意jFinal 需要配置ActiveRecordPlugin和DruidPlugin并且要在JFinalConfig里注册。// jFinal 配置类片段 public class AppConfig extends JFinalConfig { Override public void configPlugin(Plugins me) { // 数据库连接池 DruidPlugin dp new DruidPlugin(jdbc:mysql://localhost:3306/medical, root, 123456); me.add(dp); // ActiveRecord 插件 ActiveRecordPlugin arp new ActiveRecordPlugin(dp); arp.setShowSql(true); // 开发期打开方便看 SQL me.add(arp); } }DruidPlugin负责连接池ActiveRecordPlugin负责 ORM 映射。setShowSql(true)在开发阶段很有用控制台会打印实际执行的 SQL方便排查字段名写错的问题。参数上数据库 URL 要加useUnicodetruecharacterEncodingutf8serverTimezoneAsia/Shanghai否则中文乱码和时间差 8 小时是常态。jFinal 的Db.find(select * from report where user_id ?, userId)这种写法占位符?按顺序传参别用字符串拼接会有 SQL 注入风险。如果查询报Table medical.report doesnt exist先确认数据库名和表名大小写Linux 下 MySQL 默认区分大小写。4. 避坑与排查从编译失败到接口 404 的常见问题4.1 Gradle 同步卡死或依赖下载失败现象打开 Android 工程后Gradle 一直转圈控制台停在Downloading https://services.gradle.org/...。原因默认仓库地址在国内访问不稳定或者 Gradle 版本与 AGP 不匹配。解决改build.gradle里的仓库为阿里云镜像同时确认gradle-wrapper.properties里的版本号与 AGP 对应。// 项目级 build.gradle 中替换仓库地址 buildscript { repositories { maven { url https://maven.aliyun.com/repository/google } maven { url https://maven.aliyun.com/repository/public } maven { url https://maven.aliyun.com/repository/gradle-plugin } } }改完仓库后点Sync Now如果还卡删掉.gradle缓存目录重新同步。注意镜像只加速下载不解决版本冲突AGP 7.0 配 Gradle 7.0AGP 4.2 配 Gradle 6.7.1这个对应关系不能乱。4.2 后端启动报数据库连接失败现象SpringBoot 启动时抛Communications link failure或Access denied for user。原因数据库没启动、端口不对、用户名密码错、或者 MySQL 8 的驱动类名还是旧的com.mysql.jdbc.Driver。解决先telnet localhost 3306确认端口通再检查application.yml里的账号密码MySQL 8 要用com.mysql.cj.jdbc.Driver并加时区参数。# application.yml 中 MySQL 8 的正确配置 spring: datasource: url: jdbc:mysql://localhost:3306/medical?useUnicodetruecharacterEncodingutf8serverTimezoneAsia/ShanghaiuseSSLfalse username: root password: 你的密码 driver-class-name: com.mysql.cj.jdbc.DriveruseSSLfalse在开发环境可以关掉避免证书警告。serverTimezone不设的话插入时间会差 8 小时报告时间显示不对。4.3 Android 端接口请求返回 404 或 500现象App 点登录没反应Logcat 里看到HTTP 404或HTTP 500。原因baseUrl写错、接口路径不匹配、后端没启动、或者参数缺失导致空指针。解决先用浏览器访问后端接口确认返回正常再检查 Android 端Retrofit的baseUrl是否以/结尾接口注解里的路径是否多了或少了前缀。// Retrofit 构建时 baseUrl 必须以 / 结尾 Retrofit retrofit new Retrofit.Builder() .baseUrl(http://10.0.2.2:8080/) // 注意末尾斜杠 .addConverterFactory(GsonConverterFactory.create()) .build();baseUrl末尾没斜杠拼接时会丢掉路径段。模拟器用10.0.2.2访问宿主机真机要用电脑的局域网 IP且手机和电脑在同一 WiFi 下。500 错误看后端控制台堆栈通常是空指针或 SQL 异常。4.4 真机调试时网络请求被拦截现象模拟器能跑真机安装后所有接口超时。原因Android 9 及以上默认禁止明文 HTTP 请求而这类老包通常用的还是http://。解决在AndroidManifest.xml的application标签加android:usesCleartextTraffictrue或者配network_security_config白名单。application android:usesCleartextTraffictrue ... /application这个属性在开发期最省事但上线前要改成 HTTPS 或配白名单否则应用商店审核不过。另外检查手机是否开了省电模式部分机型会限制后台网络。4.5 报告图片加载不出来现象报告列表有文字但图片位置一直是占位图。原因图片路径拼接错误、后端静态资源映射没配、或者 Android 10 分区存储导致本地缓存失败。解决先在浏览器直接访问图片 URL能打开说明后端没问题问题在 Android 端拼接打不开就检查后端WebMvcConfigurer的addResourceHandlers有没有映射/upload/**。// 后端静态资源映射配置 Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler(/upload/**) .addResourceLocations(file: System.getProperty(user.dir) /upload/); }file:后面跟的是绝对路径user.dir是项目启动目录确保upload文件夹真实存在且有图片文件。路径拼错是最高频的原因我一般会在 Android 端把完整 URL 打日志出来一眼就能看出问题。5. 进阶技巧用接口幂等和本地缓存把系统做稳5.1 挂号接口的幂等设计医疗系统里最怕重复挂号。用户手抖点两下或者网络超时后重试都可能生成两条预约记录。常见做法是在后端加幂等控制用userId scheduleId做唯一索引插入时捕获DuplicateKeyException返回「请勿重复提交」。-- 在 appointment 表上建唯一索引 ALTER TABLE appointment ADD UNIQUE KEY uk_user_schedule (user_id, schedule_id);// Service 层捕获唯一键冲突 try { Db.update(insert into appointment(user_id, doctor_id, schedule_id, appointment_time) values(?,?,?,?), userId, doctorId, scheduleId, appointmentTime); return BaseResponse.success(预约成功); } catch (DuplicateKeyException e) { return BaseResponse.fail(您已预约过该时段请勿重复提交); }唯一索引是最后一道防线比先查后插更可靠因为查和插之间有并发窗口。DuplicateKeyException是 Spring 对 SQL 唯一键冲突的封装捕获后返回友好提示。这个改动很小但能避免大部分重复预约的脏数据。5.2 Android 端本地缓存与离线展示患者查报告时如果网络不好每次都要等接口返回体验很差。我一般会在 Android 端加一层本地缓存用 Room 或 SQLite 存最近一次的报告列表进入页面先读缓存展示再发请求更新。// 用 Room 做报告列表缓存简化示例 Dao public interface ReportDao { Query(SELECT * FROM report WHERE userId :userId ORDER BY createTime DESC) ListReport getByUserId(int userId); Insert(onConflict OnConflictStrategy.REPLACE) void insertAll(ListReport reports); }OnConflictStrategy.REPLACE保证同一条报告重复插入时覆盖而不是报错。进入页面时先getByUserId读本地再调接口接口返回后insertAll更新缓存并刷新 UI。这样即使断网用户也能看到上次的报告列表。注意缓存要有过期策略比如超过 24 小时强制走网络避免展示过时数据。5.3 用日志和断点定位接口参数错位接口联调时最头疼的是参数对不上。我的习惯是在 Android 端加HttpLoggingInterceptor把请求 URL、请求体、响应体全打出来后端在 Controller 入口打一行日志记录接收到的参数。// Android 端 OkHttp 日志拦截器 HttpLoggingInterceptor logging new HttpLoggingInterceptor(); logging.setLevel(HttpLoggingInterceptor.Level.BODY); OkHttpClient client new OkHttpClient.Builder() .addInterceptor(logging) .build();// 后端 Controller 入口日志 PostMapping(/appointment/create) public BaseResponse create(RequestParam int userId, RequestParam int doctorId, RequestParam int scheduleId, RequestParam String appointmentTime) { log.info(create appointment: userId{}, doctorId{}, scheduleId{}, time{}, userId, doctorId, scheduleId, appointmentTime); // ... 后续逻辑 }两边日志一对就能看出是 Android 端传错了还是后端接错了。HttpLoggingInterceptor.Level.BODY会打印请求体但注意别在正式环境开会泄露敏感信息。后端日志用log.info而不是System.out.println方便按级别过滤。从那以后我每次联调新接口都强制先看两边日志再写业务逻辑省下的排查时间比写日志的时间多得多。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

剧场订票系统开发实战:MySQL事务与行锁保证座位不超卖

剧场订票系统开发实战:MySQL事务与行锁保证座位不超卖

简介:这是一个基于C#与MySQL的剧场订票管理系统完整项目,面向需要进行课程设计、毕业设计或C/S架构开发的读者,实现了电话订票、近三日座位预定、图形化已订座位展示、观众信息修改、退票改订以及报表输出等核心功能。资源包共116个文件&…

2026/10/11 18:41:00 阅读更多 →
BIOS配置不生效的四大根因与实操排查指南

BIOS配置不生效的四大根因与实操排查指南

1. 为什么BIOS改了配置却像没改一样?这事儿我踩过三次坑才摸清门道“BIOS里把Secure Boot关了,重启进系统还是报错”“把SATA模式从RAID改成AHCI,保存退出后进Windows蓝屏”“超频参数调好了,F10保存,再进BIOS一看——…

2026/10/11 18:41:00 阅读更多 →
批处理脚本彩色输出实战:前景色、背景色与ANSI转义序列

批处理脚本彩色输出实战:前景色、背景色与ANSI转义序列

写批处理脚本的人迟早都会撞上同一个需求:脚本跑起来一屏黑底白字,日志比较多的时候,根本分不清哪行是报错、哪行是警告、哪行只是普通提示。想让界面好读一点、重点突出一点,第一反应就是给 echo 的输出加上前景色和背景色。这…

2026/10/11 18:39:59 阅读更多 →

最新新闻

地下2米土壤墒情监测:管式监测仪如何改变灌溉决策

地下2米土壤墒情监测:管式监测仪如何改变灌溉决策

这大概是不少果园主、农场主都遇到过的怪事:叶片中午蔫下去,你赶紧浇水,浇了一小时,第二天反而更蔫。挖开土一看,表层10厘米明明是湿的,可往下翻到30厘米,手指甲都掐不进去的干土块,…

2026/10/11 20:13:02 阅读更多 →
ONNXRuntime 部署 PP-MattingV2 实时人像抠图:Python 与 C++ 推理实战

ONNXRuntime 部署 PP-MattingV2 实时人像抠图:Python 与 C++ 推理实战

简介:这份资源面向深度学习部署与计算机视觉方向的开发者,提供在ONNXRuntime上运行PaddleSeg实时人像抠图模型PP-MattingV2的完整实践材料,可用于社交媒体、视频编辑、虚拟现实等场景中发丝级人像分离的落地验证。压缩包共7个文件&#xff0c…

2026/10/11 20:13:02 阅读更多 →
AI File Sorter 文档分析指南:5 个步骤让 PDF/Office 文件自动获得清晰文件名

AI File Sorter 文档分析指南:5 个步骤让 PDF/Office 文件自动获得清晰文件名

AI 应用大模型本地部署桌面应用 【免费下载链接】ai-file-sorter Cross-platform desktop application for content-aware file organization and renaming. Supports local and remote LLMs, preview-based workflows, and fully user-controlled changes. 项目地址&#xff1…

2026/10/11 20:13:01 阅读更多 →
5分钟上手Minari:离线RL数据集安装、下载与加载快速入门

5分钟上手Minari:离线RL数据集安装、下载与加载快速入门

【免费下载链接】Minari A standard format for offline reinforcement learning datasets, with popular reference datasets and related utilities 项目地址: https://gitcode.com/gh_mirrors/mi/Minari 点击查看 免费下载 Minari 是一个专为**离线强化学习&…

2026/10/11 20:13:01 阅读更多 →
openJiuwen agent-core 文档解析器基类 Parser 深度解析:从抽象接口到多格式自动路由的完整实现

openJiuwen agent-core 文档解析器基类 Parser 深度解析:从抽象接口到多格式自动路由的完整实现

人工智能AI AgentAgent 框架大模型工具调用RAG提示工程强化学习 【免费下载链接】agent-core openJiuwen agent-core可提供AI Agent开发、运行、调优与演进相关的全套SDK能力 项目地址: https://gitcode.com/openJiuwen/agent-core 点击查看 免费下载 导读 Parser…

2026/10/11 20:13:01 阅读更多 →
Flink/PyFlink CSV读写实战:Schema声明与参数配置避坑

Flink/PyFlink CSV读写实战:Schema声明与参数配置避坑

先说个我上个月接手的真实任务:一批传感器历史数据以 CSV 文件存在对象存储里,需要灌进 Flink 流作业做实时指标计算。文件不大,三十来个分区,每分区几万行,字段也就四五个。我当时觉得这是最没技术含量的一步&#xf…

2026/10/11 20:12:01 阅读更多 →

日新闻

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

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

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

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

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

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

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

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

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

2026/10/11 0:00:27 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/11 0:00:27 阅读更多 →

月新闻

我发现了一个新思路:用 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/11 10:45:37 阅读更多 →
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/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练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/11 14:36:54 阅读更多 →