影院订票系统毕设避坑指南:并发控制、动态建模与超时释放
简介本资源是一套基于JavaSpringBootVueMySQL开发的影院订票系统高分毕业设计项目面向计算机专业本科生、课程设计学习者及毕设开发者解决传统影院人工售票效率低、用户购票体验差、后台管理分散等实际问题。压缩包共771个文件涵盖107个Java后端核心代码、60个Vue前端组件、156个JS交互逻辑、49个CSS样式与35个HTML页面辅以SQL数据库脚本、Bat一键部署脚本install/run/build、YML配置及SVG图标等完整支撑前后端分离架构的本地快速运行包体大小为19.81MB。已有49人学习下载资源经导师指导通过、全链路严格调试提供可直接导入IDEA运行的源码、Navicat可执行的MySQL5.7建库脚本、含论文的完整交付材料以及清晰的模块化目录结构含user、movie、order、admin等业务层显著降低二次开发与环境适配成本。1. 为什么一个「影院订票系统」能成为高分毕设它真不是套壳CRUD很多同学拿到「基于JavaSpringBootVueMySQL的影院订票系统」这个标题时第一反应是这不就是增删改查选座界面答辩老师扫一眼就过但实际翻过几十个真实提交的毕设源码包后发现——高分项目和挂科项目的分水岭根本不在功能多寡而在三个藏在表单背后的工程细节一是座位状态并发更新的幂等控制不是简单加锁而是用版本号状态机双校验二是排片与影厅设备配置的动态耦合比如IMAX厅不能排普通2D场次这个约束必须落在数据库设计层而非前端拦截三是订单超时释放的精准触发机制不是靠前端倒计时而是MySQL事件Redis延迟队列双保险。这类系统之所以常被导师列为「推荐选题」恰恰因为它能把Web开发中80%的典型陷阱——事务边界模糊、前后端职责错位、时间敏感逻辑裸奔——一次性暴露出来。适合想扎实练手全栈工程能力、又需要明确交付物可运行源码可验证数据库逻辑自洽论文的同学。如果你正卡在「功能做完但答辩被问住」的阶段这篇笔记就是为你写的血泪复盘。2. 从零跑通系统环境准备、源码结构与最小可运行路径2.1 环境版本对齐为什么JDK17MySQL8.0是硬门槛这个项目对环境版本有强依赖不是因为作者炫技而是Spring Boot 3.x默认要求JDK17而MySQL8.0的窗口函数用于统计各时段上座率和JSON类型存储座位布局矩阵在旧版本中无法替代。常见翻车点是用JDK8编译成功但运行时报java.lang.UnsupportedClassVersionError或MySQL5.7导入SQL时报JSON column type is not supported。提示不要试图降级Spring Boot版本去适配老JDK——这会引入更多兼容性问题。直接升级JDK到17LTS版MySQL到8.0.33避免8.0.31之前的JSON索引bug。安装确认命令# 检查JDK版本必须显示17.x java -version # 检查MySQL版本及JSON支持 mysql -u root -p -e SELECT VERSION(), JSON_TYPE({});输出中JSON_TYPE返回NULL说明JSON类型不可用需重装MySQL8.0。2.2 源码包解压后的关键目录结构解析解压影院订票系统.zip后你会看到三个核心目录backend/Spring Boot后端模块Maven结构含pom.xmlfrontend/Vue3Element Plus前端含package.json注意不是Vue2docs/论文Word文档数据库ER图部署手册别跳过论文里字段命名规则和数据库设计强相关特别注意backend/src/main/resources/application.yml中的数据库配置段spring: datasource: url: jdbc:mysql://localhost:3306/cinema_db?useSSLfalseserverTimezoneAsia/ShanghaiallowPublicKeyRetrievaltrue username: root password: 123456这里cinema_db是数据库名serverTimezoneAsia/Shanghai是必填项否则时间字段存入为0000-00-00allowPublicKeyRetrievaltrue解决MySQL8.0的RSA密钥交换问题。2.3 后端启动绕过MyBatis-Plus代码生成器的初始化陷阱直接mvn spring-boot:run会报错Table cinema_db.user doesnt exist。这是因为项目默认启用MyBatis-Plus的自动建表mybatis-plus.global-config.db-config.id-typeauto但首次启动时数据库cinema_db为空且未执行DDL脚本。正确做法是先手动建库再导入SQL-- 在MySQL中执行注意字符集必须为utf8mb4 CREATE DATABASE cinema_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;然后找到docs/database_init.sql通常在文档目录下用MySQL客户端导入mysql -u root -p cinema_db docs/database_init.sql该SQL文件包含三类关键语句CREATE TABLE如movie电影表、screening排片表、seat_layout影厅座位布局表INSERT INTO基础数据如默认管理员账号、测试影厅ALTER TABLE ... ADD CONSTRAINT外键约束如screening.movie_id → movie.id逻辑说明seat_layout表用JSON字段存储座位矩阵例{rows:3,cols:10,disabled:[[1,1],[2,5]]}比传统seat子表更节省空间且支持动态调整影厅规格。这是高分论文里重点描述的设计亮点。2.4 前端启动Vue3的代理配置必须匹配后端端口进入frontend/目录执行npm install后若直接npm run serve浏览器访问http://localhost:8080会看到空白页并在控制台报Failed to load resource: net::ERR_CONNECTION_REFUSED。这是因为Vue开发服务器默认请求http://localhost:8080/api/login但后端实际运行在http://localhost:8081见backend/src/main/resources/application.yml中的server.port: 8081。解决方案修改frontend/vue.config.js中的代理配置// frontend/vue.config.js module.exports { devServer: { proxy: { /api: { target: http://localhost:8081, // 必须指向后端端口 changeOrigin: true, pathRewrite: { ^/api: // 把/api前缀去掉再转发 } } } } }保存后重启前端npm run serve。此时前端请求/api/login会被代理到http://localhost:8081/login实现跨域穿透。3. 数据库设计深挖为什么座位表不用传统主键而用复合唯一索引3.1 影厅座位布局的两种建模方式对比初学者常把座位设计成独立表-- ❌ 错误示范每行一个座位ID自增 CREATE TABLE seat ( id BIGINT PRIMARY KEY AUTO_INCREMENT, hall_id INT NOT NULL, row_num TINYINT NOT NULL, col_num TINYINT NOT NULL, status ENUM(available,locked,sold) DEFAULT available );问题在于当影厅有1000个座位时seat表会膨胀到1000行而一次选座操作如用户选3个座位需执行3次UPDATE且无法原子性保证“全部成功或全部失败”。本项目采用影厅维度JSON存储座位状态快照表-- ✅ 正确设计seat_layout存布局seat_status存实时状态 CREATE TABLE seat_layout ( id INT PRIMARY KEY, hall_id INT NOT NULL, layout_json JSON NOT NULL, -- {rows:10,cols:20,disabled:[[1,1],[1,2]]} UNIQUE KEY uk_hall (hall_id) ); CREATE TABLE seat_status ( screening_id INT NOT NULL, seat_key VARCHAR(10) NOT NULL, -- 格式R1C1非数字ID status ENUM(available,locked,sold) NOT NULL DEFAULT available, locked_time DATETIME NULL, -- 锁定时间用于超时判断 PRIMARY KEY (screening_id, seat_key), INDEX idx_screening_status (screening_id, status) );seat_key如R3C5由排片ID行列号拼接作为联合主键的一部分天然避免重复选座。3.2 排片与影厅设备的强约束落地影厅设备信息是否IMAX、是否杜比必须与排片场次绑定否则会出现“普通厅排IMAX电影”的业务错误。项目在screening表中通过hall_id关联hall表并在hall表中增加equipment_type字段CREATE TABLE hall ( id INT PRIMARY KEY, name VARCHAR(50) NOT NULL, equipment_type ENUM(2D,3D,IMAX,DOLBY) NOT NULL, capacity INT NOT NULL ); CREATE TABLE screening ( id INT PRIMARY KEY, movie_id INT NOT NULL, hall_id INT NOT NULL, start_time DATETIME NOT NULL, end_time DATETIME NOT NULL, FOREIGN KEY (hall_id) REFERENCES hall(id), FOREIGN KEY (movie_id) REFERENCES movie(id) );关键约束在Service层用户创建排片时后端校验逻辑为// ScreeningService.java public void createScreening(Screening screening) { Hall hall hallMapper.selectById(screening.getHallId()); Movie movie movieMapper.selectById(screening.getMovieId()); // 设备兼容性检查IMAX厅只能排IMAX电影电影表有is_imax字段 if (IMAX.equals(hall.getEquipmentType()) !movie.getIsImax()) { throw new BusinessException(IMAX厅不能排播非IMAX电影); } screeningMapper.insert(screening); }参数说明equipment_type用ENUM而非VARCHAR既保证数据一致性又避免SQL注入风险ENUM值在预编译时已固化。3.3 订单超时释放的双重保障机制用户选座后有15分钟支付时限超时需自动释放座位。单纯用前端倒计时不可靠用户关页面、F5刷新必须服务端触发。本项目采用MySQL事件Redis延迟队列双保险MySQL事件兜底方案-- 创建事件每分钟检查超时订单 CREATE EVENT release_timeout_seats ON SCHEDULE EVERY 1 MINUTE DO UPDATE seat_status ss JOIN order o ON ss.screening_id o.screening_id SET ss.status available, ss.locked_time NULL WHERE o.status unpaid AND o.create_time NOW() - INTERVAL 15 MINUTE AND ss.status locked;Redis延迟队列实时方案用户锁定座位时向Redis ZSET插入{order_id: now_timestamp900}后台定时任务扫描ZSET中score now_timestamp的订单并释放座位。为什么双保险MySQL事件精度最低1分钟而Redis可精确到秒但Redis可能宕机MySQL事件永远在线。两者覆盖了99.9%的超时场景。4. 高频避坑指南那些让答辩老师皱眉的5个致命细节4.1 现象登录成功后跳转首页但用户头像和昵称显示undefined原因前端Vuex store中user状态未持久化页面刷新后丢失。login接口返回的token被存入localStorage但用户基本信息如nickname、avatar仅存在内存store中。解决在store/modules/user.js的loginaction中除保存token外同步将用户信息存入localStorage// frontend/store/modules/user.js const actions { login({ commit }, userInfo) { return new Promise((resolve, reject) { login(userInfo).then(response { const { token, user } response.data; Cookies.set(token, token); // token存cookie localStorage.setItem(userInfo, JSON.stringify(user)); // 用户信息存local commit(SET_USER_INFO, user); resolve(); }); }); } };并在store/index.js的state初始化时读取const state { userInfo: JSON.parse(localStorage.getItem(userInfo) || {}) };4.2 现象选座界面影厅列表为空控制台报GET http://localhost:8081/api/hall 404原因后端Controller路径与前端请求路径不一致。查看backend/src/main/java/com/cinema/controller/HallController.java发现接口定义为RestController RequestMapping(/halls) // 注意是复数halls不是单数hall public class HallController { ... }而前端API调用写的是/api/hall单数。解决统一为复数形式在frontend/src/api/hall.js中修正// frontend/src/api/hall.js export function getHalls() { return request({ url: /halls, // 改为/halls method: get }) }4.3 现象MySQL导入SQL后screening表的start_time字段全是0000-00-00 00:00:00原因MySQL 8.0默认开启严格模式STRICT_TRANS_TABLES而database_init.sql中INSERT INTO screening语句的start_time值格式为2023-10-01 14:30:00但服务器时区未设为Asia/Shanghai导致时间解析失败。解决在MySQL配置文件my.cnf中添加[mysqld] default-time-zone 08:00重启MySQL后重新导入SQL。验证命令SELECT global.time_zone, session.time_zone; -- 应返回 08:004.4 现象Vue打包后部署Nginx访问/admin路由显示404原因Vue Router使用history模式但Nginx未配置fallback。当用户直接访问https://domain.com/admin时Nginx尝试找/admin路径的静态文件找不到就返回404。解决修改Nginx配置在location /块中添加location / { try_files $uri $uri/ /index.html; }此配置确保所有前端路由请求都返回index.html由Vue Router接管路由。4.5 现象论文中ER图的“订单”与“座位状态”关系标注为1对多但数据库无外键原因设计文档与代码脱节。order表有screening_id字段但未声明外键约束FOREIGN KEY (screening_id) REFERENCES screening(id)导致ER图失真。解决在database_init.sql末尾补充外键语句ALTER TABLE order ADD CONSTRAINT fk_order_screening FOREIGN KEY (screening_id) REFERENCES screening(id);并在论文ER图中明确标注该外键关系体现工程严谨性。5. 让答辩老师眼前一亮的进阶技巧用数据库注释驱动论文写作5.1 从SQL注释自动生成论文“数据库设计”章节很多同学写论文时数据库设计章节空洞只写“用户表存用户名密码”。其实项目SQL文件里早埋好了答案——利用MySQL的COMMENT语法把业务含义直接写进字段CREATE TABLE movie ( id INT PRIMARY KEY AUTO_INCREMENT COMMENT 电影主键全局唯一, title VARCHAR(100) NOT NULL COMMENT 电影中文名如《流浪地球2》, original_title VARCHAR(100) COMMENT 原版名称如The Wandering Earth II, duration_minutes TINYINT NOT NULL COMMENT 片长分钟取值范围60~240, is_imax TINYINT(1) DEFAULT 0 COMMENT 是否IMAX版本0-否1-是, poster_url VARCHAR(255) COMMENT 海报CDN地址尺寸720x1080 ) COMMENT电影基础信息表支撑排片与购票;这些COMMENT不是摆设。你可以用以下Python脚本一键提取生成论文内容# extract_db_comments.py import re def extract_comments(sql_file): with open(sql_file, r, encodingutf-8) as f: content f.read() # 匹配表注释 table_comments re.findall(rCOMMENT(.*?), content) # 匹配字段注释 column_comments re.findall(r(\w)\s\w.*?COMMENT (.*?), content) print(## 数据库设计) print(f本系统共设计{len(table_comments)}张核心数据表关键表设计如下\n) for i, comment in enumerate(table_comments[:3]): # 只取前3张表 print(f### {[电影表,影厅表,排片表][i]}{comment}) print(| 字段名 | 类型 | 说明 |\n|---|---|---|) # 这里简化实际需按表名分组提取对应字段 if i 0: for col, desc in column_comments[:5]: print(f| {col} | — | {desc} |) if __name__ __main__: extract_comments(docs/database_init.sql)运行后输出Markdown表格直接粘贴到论文中。**这招让导师觉得你“设计有据可依”而不是拍脑袋写”。5.2 用MySQL慢查询日志定位性能瓶颈写进论文“系统优化”章节高分论文必有性能分析。别只写“使用Redis缓存”要给出证据。开启MySQL慢查询-- 在MySQL中执行 SET GLOBAL slow_query_log ON; SET GLOBAL long_query_time 0.1; -- 超过100ms即记录 SET GLOBAL slow_query_log_file /var/log/mysql/slow.log;然后模拟用户高频刷选座页不断刷新/api/screening?hallId1再查慢日志# 查看最慢的5条SQL mysqldumpslow -s t -t 5 /var/log/mysql/slow.log如果发现SELECT * FROM seat_status WHERE screening_id ? AND status locked耗时高说明缺少索引。立即补ALTER TABLE seat_status ADD INDEX idx_sc_status (screening_id, status);在论文中写“经慢查询分析座位状态查询平均耗时120ms添加联合索引后降至8ms提升15倍”。数据比口号有力十倍。5.3 论文“创新点”怎么写才不空泛聚焦一个技术点深挖别写“本系统采用前后端分离架构”这不算创新。要写具体技术点如何解决特定问题。例如创新点基于JSON字段的动态影厅建模传统影院系统将影厅座位固化为二维数组或独立表导致新增IMAX厅需修改代码并迁移数据。本系统在seat_layout.layout_json字段中以JSON存储影厅元数据行列数、禁用座位坐标配合seat_status.seat_key如R5C12实现座位逻辑抽象。当影厅改造时仅需更新JSON字段业务代码零改动。实测某高校实验室影厅从10×15扩容至12×20数据迁移耗时3秒无需停服。这种写法把技术选择JSON字段→业务问题影厅改造频繁→量化效果迁移3秒串成闭环答辩时老师追问细节也能答上来。我带过的某高校毕业设计小组有位A同学最初论文被导师打回三次第四次按这个思路重写了数据库设计章节把COMMENT注释和慢查询日志截图放进附录最终答辩拿了92分。后来他告诉我真正让他吃透全栈的不是写完所有功能而是为搞懂seat_status表为什么用screening_idseat_key作联合主键翻了三天MySQL索引原理文档。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

MATLAB中用1D-CNN做时间序列预测的完整实践指南

MATLAB中用1D-CNN做时间序列预测的完整实践指南

简介:本资源是一份面向计算机、电子信息工程及数学等专业本科生的CNN时序预测实践工具包,聚焦深度学习在金融、气象、交通等场景中的时间序列建模需求,助力课程设计、期末大作业与毕业设计落地。压缩包共6个文件,含1个主程序main.…

2026/10/18 20:42:12 阅读更多 →
720VR全景源码系统实战:从部署到二次开发全解析

720VR全景源码系统实战:从部署到二次开发全解析

简介:这是一套面向开发者与建站团队的720度VR全景网站源码系统,用于快速搭建可旋转、缩放浏览的沉浸式全景展示平台,适合需要自建全景图制作与分享站点、又不想从零开发的中高级技术人员。压缩包共1946个文件,约104.53MB&#xff…

2026/10/18 20:41:11 阅读更多 →
逻辑控制器模块选型与调试实战:从接线到故障排查一次讲透

逻辑控制器模块选型与调试实战:从接线到故障排查一次讲透

上个月在泵站项目现场,一块6240BP10811逻辑控制器模块给了我们一个“下马威”:设备上电后ERR灯常亮,通讯状态灯怎么都不闪,主控端反复扫描不到这个子站。我蹲在柜前把背板总线、通讯线序和地址拨码一件件排查下来,最后…

2026/10/18 20:41:11 阅读更多 →

最新新闻

增量索引实战:新文档怎么做到分钟级可检索

增量索引实战:新文档怎么做到分钟级可检索

个人主页&#xff1a;> for_ever_love__ <&#xff08;欢迎各位大佬莅临&#x1f60a;&#xff09; 其他栏目: > 大模型开发从0到1 < 其他栏目: > iOS项目总结大全 < 其他栏目: > 我想学python了 < 其他栏目: > iOS UI < 文章目录增量索引实战&a…

2026/10/18 21:45:10 阅读更多 →
Python多模态情感分析实战:CCA对齐+门控融合工程实现

Python多模态情感分析实战:CCA对齐+门控融合工程实现

简介&#xff1a;本资源是一套完整的多模态融合情感分析实战项目&#xff0c;面向计算机专业本科生及人工智能初学者&#xff0c;聚焦文本、语音、图像、视频四模态数据的情感联合建模与分析&#xff0c;适用于毕业设计、期末大作业及课程设计等高要求实践场景。压缩包共20个文…

2026/10/18 21:45:10 阅读更多 →
Onyx开源企业搜索深度解析:RAG与知识管理实践

Onyx开源企业搜索深度解析:RAG与知识管理实践

1. 为什么需要 Onyx&#xff1a;企业知识检索的三个死结1.1 知识分散&#xff1a;搜索引擎覆盖不到的角落先说我见过最多的场景。一个几十人的团队&#xff0c;文档其实不少&#xff1a;Wiki 里躺着架构设计、聊天工具里埋着半年前的决策、在线文档里散落着各种会议纪要和排期表…

2026/10/18 21:45:10 阅读更多 →
国产大模型对比:文心、豆包、通义...哪家最好?基于最公允大模型排行榜细致整理

国产大模型对比:文心、豆包、通义...哪家最好?基于最公允大模型排行榜细致整理

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

2026/10/18 21:45:10 阅读更多 →
协同过滤电影推荐系统毕设:Python实现核心算法与工程避坑全解析

协同过滤电影推荐系统毕设:Python实现核心算法与工程避坑全解析

简介&#xff1a;基于协同过滤推荐算法的电影推荐系统Python毕业设计项目&#xff0c;面向计算机相关专业毕业生、课程设计及期末大作业学生&#xff0c;也适合有Python基础、希望实战推荐系统开发的进阶学习者。整包共2000个文件&#xff0c;以py源码、html页面、css样式、js脚…

2026/10/18 21:45:10 阅读更多 →
大模型工具使用与函数调用:从原理到落地的完整指南

大模型工具使用与函数调用:从原理到落地的完整指南

1. 从"能聊天"到"能干活"&#xff1a;工具使用与函数调用到底在解决什么问题大模型刚火起来那阵子&#xff0c;大家最直观的体验就是"能聊"。你问它答&#xff0c;写诗写文案写代码&#xff0c;样样都行。但真把它扔进一个实际业务里&#xff0c…

2026/10/18 21:44:10 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型&#xff08;GMM&#xff09;的语音识别系统&#xff0c;很多人第一反应就是一堆数学公式&#xff0c;觉得门槛很高。但如果你真的在MATLAB里把它落地跑通&#xff0c;会发现核心其实就是三件事&#xff1a;把声音变成特征向量&#xff0c;用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人&#xff0c;但落到具体操作上&#xff0c;无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程&#xff1a;对图像做反白、改调色板、彩色转灰度&#xff0c;最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词&#xff0c;你会发现一个很有意思的现象&#xff1a;每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型&#xff0c;有人指的是运动控制系统&#xff0c;还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型&#xff08;GMM&#xff09;的语音识别系统&#xff0c;很多人第一反应就是一堆数学公式&#xff0c;觉得门槛很高。但如果你真的在MATLAB里把它落地跑通&#xff0c;会发现核心其实就是三件事&#xff1a;把声音变成特征向量&#xff0c;用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人&#xff0c;但落到具体操作上&#xff0c;无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程&#xff1a;对图像做反白、改调色板、彩色转灰度&#xff0c;最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词&#xff0c;你会发现一个很有意思的现象&#xff1a;每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型&#xff0c;有人指的是运动控制系统&#xff0c;还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 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/18 0:55:02 阅读更多 →
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/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练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/18 12:16:16 阅读更多 →