news 2026/9/7 10:08:51

SpringBoot+微信小程序+AI大模型智能校园导航系统毕设项目详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SpringBoot+微信小程序+AI大模型智能校园导航系统毕设项目详解

这次我们来看一个可以直接作为计算机毕业设计的完整项目:SpringBoot + 微信小程序 + AI大模型智能校园导航系统

这套项目不是你常见的静态校园地图展示,而是把“找楼、问路、查教室”这类校园场景,接入了AI大模型,用户可以直接通过自然语言提问,比如“从东门到图书馆怎么走”“三号教学楼在哪个位置”“明天下午三教有空教室吗”,系统会解析意图、匹配楼宇POI数据,再返回导航结果或AI回答。

从项目交付物看,它包含源码、LW(毕业论文)、PPT 和讲解,也就是说它是一套能直接用于答辩、演示和二次开发的完整课设/毕设方案,不需要再去东拼西凑“后端代码 + 小程序模板 + AI接口”三套东西。

文章会围绕这套系统的架构设计、后端SpringBoot接口开发、微信小程序页面组织、AI大模型接入方式、功能测试、部署排错展开。如果你想快速判断“这个毕设项目值不值得做”“技术栈熟不熟”“答辩会问哪些问题”,这篇文章可以直接收藏。

1. 核心能力速览

能力项说明
项目类型计算机毕业设计 / 课程设计完整项目
后端技术SpringBoot(Java)
前端技术微信小程序原生开发
AI能力接入AI大模型接口,实现智能问答、意图理解、导航辅助
核心功能校园楼宇搜索、路径规划辅助、AI问答、用户收藏、浏览记录
数据库MySQL(建议 5.7 或 8.0)
启动方式IDEA 启动 SpringBoot + 微信开发者工具预览小程序
API 服务SpringBoot RESTful 接口,可独立被小程序或其他端调用
批量任务支持楼宇 POI 数据批量导入,建议在管理接口中提供 Excel/JSON 导入
交付物源码 + LW论文 + PPT + 讲解
适合人群计算机专业毕业生、Java 后端学习者、微信小程序开发者

项目本身不要求高显存、不依赖本地GPU推理,AI大模型调用走云端API,因此普通开发机(8G内存以上即可)就能跑通。后面部署章节会给出详细环境清单。

2. 适用场景与使用边界

适用场景:

  • 毕业设计/课程设计:技术栈主流,前后端分离,扩展点充足,答辩时有完整业务逻辑可讲。
  • SpringBoot 学习者:能学到 RESTful 接口设计、MyBatis 持久层操作、统一返回结构、异常处理、第三方 API 调用。
  • 微信小程序开发者:能学到页面导航、请求封装、地图展示、搜索交互、登录态管理。
  • AI大模型应用开发:能学到如何把大模型接口封装成后端服务,并在业务场景中做 Prompt 设计和意图解析,而不是只写一个“聊天机器人”Demo。

使用边界:

  • 校园地图数据(楼宇坐标、平面图)需要来自校方或第三方开放数据,商用或公开部署前必须确认授权。
  • 小程序发布上线需要在微信公众平台配置合法域名,且域名需要完成 ICP 备案;本地开发预览时可在开发者工具中勾选“不校验合法域名”。
  • 接入大模型接口时,要遵循对应服务商的调用规范、配额限制和内容安全要求,不能把用户隐私数据直接透传给第三方模型。
  • 系统定位是教学演示与校园场景辅助工具,不建议用于要依赖实时人流、施工改道、紧急疏散等高实时高可靠场景。

如果后续计划在人脸识别、语音克隆、数字人等方向扩展,涉及肖像与人声素材时必须获得明确授权,且要在论文中说明合规边界。

3. 系统架构与技术选型

整体架构可以拆成三个层次:微信小程序端、SpringBoot服务端、AI大模型服务。

3.1 整体架构

微信小程序端(用户交互) ↓ HTTPS/JSON SpringBoot 服务端(业务逻辑 + 数据持久化 + AI接口代理) ↓ HTTP AI 大模型 API(意图识别 / 智能问答)

小程序端负责页面展示和用户操作,包括首页导航、楼宇搜索、AI对话、个人中心。所有业务数据都通过 SpringBoot 接口获取,不直接连接数据库。

SpringBoot 服务端承担核心业务:楼宇 POI 的 CRUD、搜索接口、路径规划数据准备、用户收藏记录、AI 对话代理。AI 请求由后端统一转发,避免在小程序端暴露 API Key,也方便做 Prompt 管理、日志记录和限流。

3.2 技术选型

技术点选型建议说明
后端框架Spring Boot 2.7.x 或 3.x需根据 JDK 版本决定,JDK8 建议 2.7.x
ORMMyBatis 或 MyBatis-Plus国内项目常用,减少 SQL 编写量
数据库MySQL存楼宇、POI、用户、收藏、反馈等数据
前端微信小程序原生不引入额外框架,调试方便,适合毕设展示
AI 接入HTTP 调用云端大模型接口后端封装统一代理接口
构建工具Maven依赖管理清晰
接口规范RESTful + JSON小程序端 wx.request 直接对接

这里不限定具体大模型服务商,实际操作时你只需要把你的 AI 接口地址、API Key、模型名称写在配置文件里,然后在上层封装一个AiService,统一处理请求参数、超时和返回解析。

4. 环境准备与前置条件

4.1 环境清单

环境项建议版本说明
JDK1.8 或 11SpringBoot 2.x 可运行在 JDK8 上
Maven3.6+用于依赖下载和项目打包
MySQL5.7 / 8.0需要新建数据库并执行 SQL 脚本
开发工具IDEA 或 EclipseIDEA 更适合 SpringBoot 开发
微信开发者工具最新稳定版用于打开小程序工程并预览
小程序 AppID测试号或已注册 AppID可在微信公众平台申请
AI 大模型 API Key按服务商要求申请后端调模型时使用

4.2 SpringBoot 启动准备

如果拿到的源码是 Maven 工程,先在 IDEA 中导入项目,等待依赖下载完成。确认application.yml里的数据库连接信息:

server: port: 8080 spring: datasource: url: jdbc:mysql://localhost:3306/campus_navigation?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai username: root password: your_password driver-class-name: com.mysql.cj.jdbc.Driver mybatis-plus: mapper-locations: classpath*:mapper/**/*.xml type-aliases-package: com.campus.navigation.entity ai: api-url: https://your-ai-api.example.com/v1/chat/completions api-key: your-api-key model: your-model-name timeout-seconds: 60

需要注意:数据库名、账号密码都要按本机实际情况改;AI 配置里的 api-url 和 model 必须与你申请的服务商一致。

4.3 微信开发者工具准备

用微信开发者工具导入小程序前端目录,填入自己的 AppID。本地调试时,在“详情 - 本地设置”里勾选“不校验合法域名、web-view(业务域名)、TLS 版本以及 HTTPS 证书”。这样后端地址可以直接写http://localhost:8080

如果后续要真机预览或发布上线,就必须把后端部署到公网服务器,配置 HTTPS 域名,并在微信公众平台后台配置服务器域名白名单。

5. 数据库设计与后端核心接口

5.1 数据表设计

数据库是整个系统的地基。校园导航场景至少需要这几张表:

-- 楼宇信息表 CREATE TABLE t_building ( id BIGINT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(100) NOT NULL COMMENT '楼宇名称', code VARCHAR(50) COMMENT '楼宇编号', address VARCHAR(255) COMMENT '楼宇地址/位置描述', longitude DECIMAL(10,6) COMMENT '经度', latitude DECIMAL(10,6) COMMENT '纬度', floor_count INT COMMENT '楼层数', description TEXT COMMENT '楼宇简介', create_time DATETIME DEFAULT CURRENT_TIMESTAMP, update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ); -- 用户表 CREATE TABLE t_user ( id BIGINT PRIMARY KEY AUTO_INCREMENT, openid VARCHAR(100) NOT NULL UNIQUE COMMENT '微信openid', nickname VARCHAR(50), avatar_url VARCHAR(255), create_time DATETIME DEFAULT CURRENT_TIMESTAMP ); -- 收藏表 CREATE TABLE t_favorite ( id BIGINT PRIMARY KEY AUTO_INCREMENT, user_id BIGINT NOT NULL, building_id BIGINT NOT NULL, create_time DATETIME DEFAULT CURRENT_TIMESTAMP ); -- 导航反馈表 CREATE TABLE t_feedback ( id BIGINT PRIMARY KEY AUTO_INCREMENT, user_id BIGINT, content TEXT COMMENT '用户反馈', create_time DATETIME DEFAULT CURRENT_TIMESTAMP ); -- AI 问答日志表 CREATE TABLE t_ai_chat_log ( id BIGINT PRIMARY KEY AUTO_INCREMENT, user_id BIGINT, question TEXT COMMENT '用户问题', answer TEXT COMMENT '模型回答', intent VARCHAR(50) COMMENT '识别出的意图', create_time DATETIME DEFAULT CURRENT_TIMESTAMP );

实际项目中可能还有 POI 点位表、路线表、公告表等扩展表,具体以源码里的 SQL 脚本为准。拿到项目后,建议先看resources下的sqldb目录,把建表脚本执行一遍,再启动后端。

5.2 核心接口设计

接口方法说明
/api/building/searchGET根据关键词搜索楼宇
/api/building/{id}GET查看楼宇详情
/api/path/planGET获取起点到终点的导航信息
/api/user/loginPOST微信登录,获取 openid 并返回 token
/api/favorite/addPOST收藏楼宇
/api/favorite/listGET收藏列表
/api/ai/chatPOST发送用户问题到 AI 大模型,返回回答
/api/feedback/submitPOST提交用户反馈

接口返回统一使用Result<T>结构,前端拿到后先判断code再解析data

{ "code": 200, "message": "success", "data": {} }

设计统一返回结构的作用是让小程序端的请求封装更简单,无论返回的是楼宇列表、路径规划结果,还是 AI 对话文本,前端都只做一层解析。

5.3 楼宇搜索接口示例

@RestController @RequestMapping("/api/building") public class BuildingController { @Resource private BuildingService buildingService; @GetMapping("/search") public Result<List<Building>> search(@RequestParam("keyword") String keyword) { List<Building> list = buildingService.searchByNameOrCode(keyword); return Result.success(list); } }

Service 里通过 MyBatis-Plus 的like条件查询即可。关键词为空时返回全部列表,方便小程序端做“全部楼宇”展示。

5.4 AI 大模型接入设计

AI 接入是这套系统的亮点,但不要把它做成一个简单的“聊天接口”。更合理的做法是:

  1. 后端定义 Prompt 模板,把校园导航的业务背景注入进去;
  2. 用户在页面输入问题;
  3. 后端收到问题后,先做关键词匹配或意图识别,判断用户是想“找楼”还是“闲聊”;
  4. 如果是找楼,先查本地数据库把候选楼宇数据组装进 Prompt,再请求大模型生成自然语言回答;
  5. 把回答返回小程序端。

这样既发挥了大模型的自然语言能力,又保证楼宇数据的准确性,不会出现模型“胡编”了一个不存在的楼的情况。

通用调用示例:

@Service public class AiChatService { @Value("${ai.api-url}") private String apiUrl; @Value("${ai.api-key}") private String apiKey; @Value("${ai.model}") private String model; @Resource private RestTemplate restTemplate; public String chat(String userMessage) { HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON); headers.setBearerAuth(apiKey); Map<String, Object> requestBody = new HashMap<>(); requestBody.put("model", model); requestBody.put("messages", List.of( Map.of("role", "system", "content", buildSystemPrompt()), Map.of("role", "user", "content", userMessage) )); requestBody.put("temperature", 0.7); HttpEntity<Map<String, Object>> request = new HttpEntity<>(requestBody, headers); try { ResponseEntity<Map> response = restTemplate.postForEntity(apiUrl, request, Map.class); // 根据实际接口返回结构解析 content 字段 return extractContent(response.getBody()); } catch (RestClientException e) { log.error("AI request failed", e); return "抱歉,AI 服务暂时不可用,请稍后再试。"; } } }

注意:不同服务商的请求路径、鉴权方式、返回 JSON 结构可能不同。拿到真实接口文档后,把apiUrlrequestBodyextractContent里的解析逻辑替换成对应格式即可。

6. 微信小程序端开发

6.1 小程序页面结构

页面路径说明
首页pages/index/index校园地图、常用入口、推荐楼宇
搜索pages/search/search关键词搜索楼宇,结果列表展示
AI 导航pages/chat/chat对话框形式,与大模型交互
楼宇详情pages/detail/detail楼宇介绍、位置、收藏按钮
我的pages/profile/profile用户信息、收藏列表、反馈入口

对毕设项目来说,页面不用多,核心流程完整即可:搜索楼宇 → 查看详情 → AI 问路 → 收藏记录。

6.2 请求封装示例

utils/request.js中封装 wx.request,方便所有页面调用接口:

const BASE_URL = 'http://localhost:8080'; function request(url, method, data) { return new Promise((resolve, reject) => { wx.request({ url: BASE_URL + url, method: method || 'GET', data: data || {}, header: { 'Content-Type': 'application/json' }, success(res) { if (res.data.code === 200) { resolve(res.data.data); } else { wx.showToast({ title: res.data.message || '请求失败', icon: 'none' }); reject(res.data); } }, fail(err) { wx.showToast({ title: '网络异常', icon: 'none' }); reject(err); } }); }); } module.exports = { request };

6.3 AI 对话页面

AI 对话页面是典型的“消息列表 + 输入框”结构。用scroll-view承载消息,用输入框收集用户问题,点击发送后调用/api/ai/chat接口。

<view class="chat-page"> <scroll-view scroll-y class="message-list"> <view wx:for="{{messages}}" wx:key="id" class="message {{item.role}}"> <text>{{item.content}}</text> </view> </scroll-view> <view class="input-bar"> <input placeholder="请输入你的问题" bindinput="onInput" value="{{inputValue}}" /> <button bindtap="sendMessage">发送</button> </view> </view>

sendMessage中处理逻辑:

async sendMessage() { const content = this.data.inputValue.trim(); if (!content) return; this.setData({ messages: [...this.data.messages, { role: 'user', content }], inputValue: '' }); const reply = await request('/api/ai/chat', 'POST', { question: content }); this.setData({ messages: [...this.data.messages, { role: 'assistant', content: reply }] }); }

页面本身不用关心 AI 接口细节,后端返回什么文本,页面就渲染什么文本。如果想增强体验,可以加 loading 状态和“正在输入”提示,避免用户重复点击。

6.4 地图展示问题

校园导航系统的核心之一就是地图。实际项目里常见两种方案:

一是使用微信小程序自带的地图组件<map>,把楼宇坐标点作为 marker 在地图上标注出来。这种方案实现简单,但需要真实经纬度数据,并且做路径规划时需要调用第三方地图服务。

二是使用自定义绘制平面图,把校园地图图片作为底图,按比例把楼宇坐标映射成图片上的像素坐标。这种方案展示效果更直观,且不依赖第三方地图 SDK,适合校园这种小范围场景。

具体使用哪种方案,要看源码里给你预留的是坐标字段还是像素坐标字段。如果打算自行二开,建议优先选地图组件方案,后续扩展室内定位能力更容易。

7. 功能测试与效果验证

拿到项目后,先不要急着改代码,按照下面的顺序跑通整条链路,再考虑二次开发。

7.1 后端接口测试

启动 SpringBoot 前先确认三项:MySQL 已启动且已导入 SQL 脚本、application.yml数据库密码正确、Maven 依赖下载完成。

启动成功后,可以用浏览器或 Postman 直接测接口:

测试接口请求示例预期结果
楼宇搜索GET/api/building/search?keyword=图书馆返回包含“图书馆”字段的楼宇列表
楼宇详情GET/api/building/1返回 id=1 的楼宇完整信息
AI 对话POST/api/ai/chat,body 为{"question": "东门到图书馆怎么走"}返回自然语言描述或结构化路径信息

7.2 AI 对话测试用例

测试维度输入示例关注点
基础问答“你好”模型是否能正常回复,超时时间多少
楼宇查询“三号教学楼在哪”是否能从数据库匹配到正确楼宇
路径规划“从南门到体育馆怎么走”是否返回合理的描述性路径
多轮对话“图书馆几点开放”“那自习室呢”系统是否有上下文记忆,无记忆时如何降级
无效输入“今天天气怎么样”模型是否会如实回答无法处理,而不是编造校园信息
超长文本输入一段 500 字的问题接口是否报错,超时如何处理

前端验证可以通过微信开发者工具完成,重点看:

  • 小程序能否拉起后端接口,控制台没有跨域或请求失败报错;
  • AI 输入“图书馆”能触发搜索跳转或返回位置信息;
  • 收藏、查看详情、提交反馈整条操作链是否正常。

7.3 批量数据导入验证

毕设项目通常不会只预置三五条楼宇数据,测评时老师很可能要求“导入全校所有楼宇”。因此建议准备一个批量导入接口,或者用 SQL 脚本 + 数据集方式导入。

通用做法是在后端加一个/api/admin/building/import接口,接收 JSON 数组或 Excel 文件:

[ { "name": "第一教学楼", "code": "J1", "address": "东门南侧", "longitude": 113.123456, "latitude": 23.123456, "floorCount": 6, "description": "主要教学楼之一" }, { "name": "图书馆", "code": "LIB", "address": "校园中心", "longitude": 113.234567, "latitude": 23.234567, "floorCount": 8, "description": "含自习区和借阅区" } ]

服务端批量插入前先做数据校验,比如楼宇名称不能重复、经纬度必须在合理范围内。导入完成后返回成功条数和失败原因,方便批量排查。

8. 性能与资源占用观察

这个项目不涉及本地大模型推理,因此没有显存压力,主要关注的是内存、CPU、网络延迟和数据库连接。

资源观察点说明
JVM 内存IDEA/命令行启动日志,或用 JConsole 查看SpringBoot 默认堆内存 256M 起步,8G 内存的开发机无压力
数据库连接是否有连接池配置,默认最大连接数毕设场景下连接数不用调太高
AI 接口延迟等服务的响应时间常见范围为 1 到 5 秒,取决于模型和网络
小程序请求量开发者工具 Network 面板本地调试主要看请求是否堆积、是否有失败请求

在 IDEA 启动时,如果发现内存偏高,可以限制启动内存:

java -Xms256m -Xmx512m -jar campus-navigation.jar

AI 请求是最容易出现性能瓶颈的环节。几个优化建议:

  • AiChatService里设置合理的超时时间,建议 30 到 60 秒,超时后返回兜底文案;
  • 相同问题可以缓存,10 分钟内重复提问直接返回历史结果;
  • 对话历史记录只保存最近 10 条,避免请求体过大导致接口迟迟不返回;
  • 接口加上简单的用户级别限流,比如同一用户 5 秒内只能发一条 AI 请求,防止误操作造成 API 费用超支。

9. 常见问题与排查方法

问题现象可能原因排查方式解决方案
SpringBoot 启动失败端口被占用或数据库连接失败看控制台报错,检查 8080 端口和 MySQL 账号密码关闭占用进程,修改server.port,更正application.yml
小程序请求后返回 404路径访问错误或后端未启动检查 Network 面板请求 URL,对比后端的@RequestMapping路径修正请求路径,或重新打包启动后端
小程序本地预览请求失败未开启“不校验合法域名”打开开发者工具详情设置勾选“不校验合法域名”
MySQL 中文乱码数据库或连接字符集不对查看表中数据是否乱码,检查连接 URLapplication.yml连接串中加入characterEncoding=utf8
AI 接口一直超时网络不通、API Key 错误或模型名不对用 Postman 直接调 AI 接口,看返回状态码修正 API Key 和模型名,检查网络连通性
AI 回答与校园数据不一致本地数据未注入 Prompt查看后端日志中发送给模型的请求体在 Prompt 模板中拼接近距离楼宇数据
表不存在未执行 SQL 脚本查看 MySQL 中是否有对应数据库表执行源码中的建表脚本,确认库名与配置一致
路径规划结果与实际不符坐标数据失真检查楼宇经纬度或像素坐标映射关系校正坐标数据,或在返回结果中提示“仅供参考”
小程序真机预览失败后端地址不是公网地址真机无法访问 localhost将后端部署到公网服务器并配置 HTTPS 域名

答辩前最容易被问到的几个坑:

  • 为什么 AI 回答“图书馆几点关门”的时候,模型说得不准?
    回答思路:图书馆开放时间属于运营数据,需要通过后端在 Prompt 中注入校园公告数据库数据,而不是完全依赖模型自身知识。
  • 为什么不用大模型直接返回路径规划结果?
    回答思路:大模型不具备实时坐标计算能力,路径规划采用的是地图坐标 + 预置路径数据,大模型负责自然语言理解和结果展示,两者各司其职。

10. 最佳实践与使用建议

10.1 目录结构建议

拿到源码以后,建议先按照下面的维度梳理目录:

campus-navigation-backend SpringBoot 后端工程 campus-navigation-miniapp 微信小程序前端工程 sql 数据库脚本 docs 接口文档、数据字典 assets 近景图片、地图底图、答辩素材

保持前后端工程分离,SQL 脚本独立存放。论文里的数据字典、E-R 图和接口表都从这套结构中整理,答辩时找资料会方便很多。

10.2 Prompt 管理

不要在每个调 AI 的地方散写 Prompt。统一放一个常量类或配置文件中,方便答辩时演示“如果希望模型更精确地识别楼宇,只需要调整 Prompt 模板”的过程。

public class PromptTemplates { public static final String NAVIGATION_SYSTEM_PROMPT = """ 你是一个校园智能导航助手。你的任务是根据用户输入,推荐校园内的楼宇或路线。 已知楼宇信息如下: {buildingData} 请用简洁、友好的自然语言回答用户问题。如果无法确定,请说明当前数据中暂时没有该楼宇信息。 """; }

10.3 安全合规提醒

项目里涉及的 AI 大模型调用,不应在论文或演示中使用任何未授权的第三方接口。答辩时讲清楚你使用的是哪家合法服务、申请方式和调用限制。不能通过非正规渠道获取接口密钥,也不要在代码里提交真实密钥。

另一方面,用户 openid 属于敏感信息,需要做脱敏存储和访问控制。数据库不要明文保存密码,接口层要校验 token。论文里可以专门写一小节“系统安全设计”,这是加分项。

10.4 演示环境准备

答辩或演示前,建议准备一套独立的最小环境:

  • 提前启动 MySQL、后端服务和微信开发者工具;
  • 准备 10 条以上楼宇测试数据,覆盖“图书馆、教学楼、食堂、宿舍、体育馆”等高频场景;
  • 写好 3 到 5 条 AI 测试问题,保证现场输入后能返回稳定答案;
  • 把后端恢复出厂配置的步骤写在 README 里,避免答辩现场端口被占用、数据库连错。

11. 总结与下一步

这套项目最值得尝试的点,是它把 SpringBoot、微信小程序和 AI 大模型三个技术方向串成了一条完整的业务链路。相比单写一个“SpringBoot 增删改查”或者“小程序登录 Demo”,这套系统的表达空间更大,答辩时能讲的东西也更多。

拿到项目后,第一步不要急着改功能,先按文档把数据库初始化、后端启动、小程序预览三步跑通。后端能访问、首页能出数据、AI 能回复,再逐步优化搜索排序、路径展示和收藏逻辑。

最容易踩的坑有三个:数据库初始化失败、AI 接口超时、小程序合法域名没配置。这三个问题排查完,整个系统的骨架基本就稳定了。

后续可以扩展的方向包括:接入校园公告和课表数据做多模态查询、增加室内楼层导航、把 AI 回答落库形成知识库检索、增加管理后台做数据可视化统计。每一个方向都能单独作为论文的创新点来写,也可以继续作为毕业设计的深入优化内容。

如果你正在选毕设题目,或者已经准备拿这套项目开工,建议先对照文章第 4 节的环境清单把开发环境配好。能跑通,再谈优化;能演示,再谈创新。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/7 10:04:31

超市管理系统测试报告实战:用例设计、缺陷管理与质量分析

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

作者头像 李华
网站建设 2026/9/7 10:04:25

文生图AI模型:从文本描述到图像生成的技术实践指南

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

作者头像 李华
网站建设 2026/9/7 10:03:14

Bandicam录屏软件实操指南:从编码原理到参数避坑

简介&#xff1a;Bandicam是一款屏幕录制软件&#xff0c;这份绿色便携版压缩包面向游戏实况、教程演示及软件操作讲解等多媒体创作人群&#xff0c;可在保证高画质输出的同时控制视频体积。压缩包共45个文件、约36.41MB&#xff0c;以主程序exe与DLL运行库为核心&#xff0c;搭…

作者头像 李华