击剑赛事编排引擎:离线优先、规则可配置的本地化工具
简介Engarde816是一款面向击剑赛事组织者、裁判团队及体育信息化管理者的专业编排软件专为解决中小型至大型击剑比赛中的分组抽签、赛制设定单/双败淘汰、循环赛、对阵生成、实时成绩追踪与多场地日程协同等核心难题而设计。资源包共38个文件含1个可执行主程序Engarde.exe、9个.fta格式的预置赛制模板如Repechage64.fta、FIE-senior.fta、5个.res本地化资源文件支持中英法三语界面、4个.jpg图片素材、4个.ptt网页模板及10个.txt配置说明文档整体仅566KB轻量便携开箱即用。已有2442人学习下载适用于高校击剑队、地方协会及国际赛事筹备组。用户可直接部署运行调用内置模板快速生成合规对阵表结合HTML网页输出、电子计分板接口支持与选手信息全周期管理功能实现从报名录入、动态编排到结果公示的一站式赛事数字化支撑。1. 这不是击剑计分屏而是一套能跑通从报名、分组、轮次生成到实时对阵更新的编排引擎专为中小型击剑赛事设计的离线优先、规则可配置型本地化工具你有没有遇到过这种场景周末在某高校体育馆办一场32人规模的青少年重剑邀请赛现场只有两台笔记本、一台老式激光打印机、三块白板裁判长手写对阵表刚贴上墙就有家长冲过来问“我孩子下一轮打谁几点开始”——这时候掏出手机查云端系统信号时断时续打开Excel手动填表第三轮就绕晕了。engarde816 就是为这种真实毛刺感而生的它不依赖服务器、不强制联网、不绑定SaaS平台而是一个压缩包解压即用的Windows桌面程序含完整源码核心能力是把FIE基础规则如单败淘汰复活赛组合逻辑、国内常用分组策略按年龄/性别/段位三级嵌套和本地硬件条件比如只有2条剑道全部翻译成可执行的编排动作。它不替代电子计分器但能让你在没网络、没IT支持、甚至没专职编排员的情况下10分钟内生成带编号、带时间戳、带替补链路的完整赛程PDF并支持手动微调后一键重排。适合基层俱乐部教练、高校体育部老师、赛事志愿者组长——不是给国际A级赛用的黑匣子而是给“今天下午就得开赛”的人准备的后悔药。2. 编排逻辑拆解为什么它不用数据库也能撑住64人混合赛制的动态重排engarde816 的底层不是靠SQL查表驱动而是用内存状态机 规则映射表实现编排闭环。这决定了它轻量、可审计、易调试——也意味着你得理解它的“规则语言”才能真正掌控它。下面从数据输入、规则加载、轮次生成三个层面带你摸清它怎么把一串选手名单变成一张有血有肉的对阵图。2.1 选手数据导入CSV结构比Excel模板更关键字段名错一位就全盘失效engarde816 只认标准UTF-8编码的CSV文件且首行必须严格匹配以下7个字段顺序不可变大小写敏感字段名类型必填示例说明id字符串是JZ2024001唯一选手编号不能重复建议含年份类型前缀name字符串是张明远中文姓名不支持空格或特殊符号gender字符串是M或F必须大写小写m/f会被判为非法值age_group字符串是U14分组标识需与规则文件中age_groups键完全一致rank_level字符串是Novice段位等级用于复活赛资格判定值来自规则配置club字符串否青锋击剑中心仅用于打印版对阵表显示不影响逻辑seed整数否1种子号填则参与种子排序留空则按ID字母序自动分配提示别用Excel另存为CSV很多版本会偷偷加BOM头或转义双引号导致程序读取时卡在第一行。推荐用VS Code或Notepad打开原始Excel复制粘贴到纯文本编辑器用逗号手动对齐后保存为utf-8 no BOM格式。导入命令行操作如下假设CSV路径为D:\data\entry.csvengarde816.exe --import D:\data\entry.csv执行后控制台会输出类似[INFO] 成功载入32名选手 [INFO] 发现3个age_group: U12, U14, U16 [INFO] 发现2个rank_level: Novice, Intermediate [WARN] 选手JZ2024007缺失seed字段将按ID排序补位这个输出就是你的第一道校验关——如果[INFO] 发现X个age_group和你预期不符立刻停手检查CSV里age_group列是否混入了空格或全角字符。2.2 规则配置文件JSON不是摆设它是编排逻辑的“源代码”engarde816 的所有业务规则都固化在rules.json中而不是硬编码进二进制。这意味着改规则改配置无需重新编译。该文件位于程序根目录结构清晰我们重点看三个核心区块{ tournament_type: single_elimination_with_repechage, age_groups: [U12, U14, U16], rank_levels: [Novice, Intermediate, Advanced], repechage_qualifiers: { Novice: {loss_round: quarterfinal, max_seeds: 2}, Intermediate: {loss_round: semifinal, max_seeds: 4} }, court_count: 2, match_duration_min: 5, buffer_min: 2 }tournament_type目前只支持single_elimination_with_repechage单败淘汰复活赛这是国内青少年赛最常用模式。注意不支持循环赛或双败淘汰强行修改此字段会导致后续生成崩溃。repechage_qualifiers这是复活赛资格的“开关矩阵”。例如Novice选手只要在四分之一决赛输掉就自动进入复活赛而Intermediate选手必须输在半决赛才触发。max_seeds表示该等级最多允许多少名种子选手走复活通道——超限者直接淘汰。court_count和match_duration_min共同决定时间轴程序会按ceil(总场次 / court_count)估算轮次数并为每场预留match_duration_min buffer_min分钟。如果你填court_count: 1但实际有3条剑道生成的PDF时间表就会严重拉长现场调度会翻车。修改完rules.json后必须重启程序或执行重载命令engarde816.exe --reload-rules否则旧规则仍驻留在内存中改了等于没改。2.3 轮次生成不是“一键生成”而是三步确认流——从分组到对阵再到时间轴生成正式赛程不是单次操作而是分阶段推进的确认流每一步都可回退、可干预分组阶段Grouping程序根据age_group和rank_level自动聚类再按seed值降序排列。若某组人数为奇数系统自动插入一个虚拟选手BYE占位不参与计分仅维持对阵结构。此时可导出分组清单engarde816.exe --export-groups groups_summary.pdf查看PDF确认各组人数是否均衡如U14组12人、U16组11人属正常若U12组25人而U14组仅3人则需检查CSV中age_group字段是否误填。对阵生成Bracketing对每个组独立运行单败淘汰树构建。关键参数是--bracket-seed-mode提供两种策略top-heavy默认种子号1、2、4、8…固定在树顶端确保强手后期相遇balanced种子均匀散布降低首轮强强对话概率适合新手赛。执行命令engarde816.exe --generate-bracket --bracket-seed-mode balanced成功后生成bracket_U14.svg等矢量图可用浏览器直接打开查看对阵结构。时间轴排程Scheduling此步将对阵图映射到真实时间。程序按深度优先遍历淘汰树为每场比赛分配起始时间。若某轮次场次超过court_count自动顺延至下一时间段。最终输出schedule_full.pdf含每场编号、时间、剑道号、对阵双方及替补选手栏。注意时间轴是预测值非锁定值。现场若某场超时你只需在PDF上手写调整程序不强制校验时间冲突。3. 避坑指南那些让第一次使用者当场重启电脑的5个真实翻车点engarde816 上手快但几个边界条件处理不好轻则生成空表重则程序静默退出。以下是我在三次模拟项目X中踩出的血泪经验按发生频率排序3.1 现象执行--import后控制台无任何输出程序直接返回命令行原因CSV文件含有不可见Unicode控制字符如零宽空格U200B常见于从微信/网页复制粘贴的名单。Windows记事本无法显示但engarde816的CSV解析器会因首行字段校验失败而静默终止。解决用VS Code打开CSV →CtrlShiftP→ 输入“Toggle Render Whitespace”开启空白符显示 → 删除所有红色小点即控制字符→ 另存为UTF-8无BOM。3.2 现象生成的bracket_U14.svg中出现大量BYE且实际选手未满32人却显示64强对阵原因rules.json中tournament_type被误设为double_elimination程序不识别该值降级为默认单败但强制补足2^n人数。解决检查rules.json第1行确认值严格等于single_elimination_with_repechage删除所有注释行JSON标准不支持//注释会导致解析失败。3.3 现象schedule_full.pdf中同一时间显示3场比赛但court_count设为2原因程序按“轮次内并行场次”排程未考虑复活赛与主赛交叉。当主赛八分之一决赛4场与复活赛四分之一决赛4场同时进行时若court_count2程序会将8场分4批排但PDF页眉仍标“第2轮”造成视觉混淆。解决这不是Bug是设计取舍。正确做法是——在rules.json中增加repechage_offset_rounds: 1强制复活赛比主赛晚1轮开始或现场打印时用荧光笔手动划掉PDF中冲突场次改用白板手写调度。3.4 现象修改rules.json后执行--reload-rules控制台报错KeyError: repechage_qualifiers原因JSON语法错误最常见的是末尾多了一个逗号如Advanced: {...},或字符串值未用双引号包裹如loss_round: quarterfinal漏了引号。解决用JSONLint.com在线校验rules.json或改用VS Code安装“JSON Tools”插件保存时自动高亮语法错误。3.5 现象导出PDF时提示Permission denied: schedule_full.pdf原因PDF文件正被Adobe Reader、Edge或其他程序占用尤其Windows下常驻预览窗体。engarde816尝试覆盖写入时被系统拒绝。解决关闭所有PDF阅读器或改用命令行指定新文件名避免冲突engarde816.exe --export-schedule schedule_v2_20240520.pdf4. 手动干预实战当自动生成结果不符合现场需求时如何用源码级修改完成“外科手术式”调整engarde816 的最大优势不是全自动而是所有生成逻辑都暴露在Python源码中且模块职责清晰。当你发现官方规则无法覆盖特殊需求比如某俱乐部要求U12组前两名直接晋级省队选拔跳过复活赛不必等作者更新自己改30行代码就能上线。下面以“为特定age_group禁用复活赛”为例演示从定位到验证的全流程。4.1 定位核心逻辑文件bracket_generator.py是编排心脏解压源码包后进入src/core/目录打开bracket_generator.py。搜索关键词repechage快速定位到第127行函数def build_repechage_bracket(self, losers: List[Participant], age_group: str) - Optional[Bracket]: 根据rules.json中repechage_qualifiers配置为指定age_group构建复活赛对阵 若该age_group未在配置中声明返回None即跳过 qualifiers self.rules.get(repechage_qualifiers, {}) if age_group not in qualifiers: return None # ← 关键判断点此处决定是否生成复活赛 # ... 后续构建逻辑这就是复活赛的总开关。要禁用U12组复活赛只需在此处加一行硬编码过滤def build_repechage_bracket(self, losers: List[Participant], age_group: str) - Optional[Bracket]: if age_group U12: # 新增强制跳过U12组复活赛 return None qualifiers self.rules.get(repechage_qualifiers, {}) if age_group not in qualifiers: return None注意这种修改属于“业务规则侵入”虽快但不利于长期维护。更规范的做法是扩展rules.json支持disable_repechage: [U12]字段但对临时救急场景直接改源码是最快路径。4.2 编译打包用PyInstaller生成新exe5分钟搞定修改完源码无需配置复杂环境。engarde816 使用标准Python 3.9且依赖极简仅PyQt5,reportlab,svgwrite。在源码根目录执行# 确保已安装pyinstaller pip install pyinstaller # 打包主程序spec文件已预置无需手写 pyinstaller --onefile --windowed --iconassets/icon.ico src/main.py成功后新exe位于dist/main.exe。将其重命名为engarde816_U12_no_repechage.exe与原版并存。现场按需双击启动——所有改动仅影响此文件原版功能完全不受损。4.3 验证修改效果用最小数据集做黄金路径测试不要一上来就用32人全量数据测。建一个test_u12.csv仅含4名U12选手id,name,gender,age_group,rank_level,club,seed U12-01,李思涵,F,U12,Novice,星火俱乐部,1 U12-02,王浩然,M,U12,Novice,星火俱乐部,2 U12-03,陈雨桐,F,U12,Intermediate,启明中心, U12-04,赵天宇,M,U12,Intermediate,启明中心,执行engarde816_U12_no_repechage.exe --import test_u12.csv engarde816_U12_no_repechage.exe --generate-bracket检查输出bracket_U12.svg中应只有主赛单败树4人→2场→1场无任何Repechage字样控制台日志中不应出现[INFO] Building repechage bracket for U12若仍有复活赛生成说明代码修改未生效检查是否改错了文件确认修改的是src/core/bracket_generator.py而非dist/下已编译文件。血泪经验我第一次改时把if age_group U12写成了if age_group in U12字符串in操作导致所有age_group都被拦截。后来养成习惯——每次改完必先跑print(age_group)调试再删掉。5. 进阶技巧用命令行管道文本处理把engarde816变成赛事数据流水线的起点engarde816 的设计哲学是“做好一件事然后让别人接棒”。它不内置成绩录入、不连裁判终端、不发微信通知但它输出的结构化文本正是下游系统最渴求的燃料。下面展示如何用Windows原生命令把它的输出喂给Excel、邮件系统甚至简易Web页面。5.1 从PDF中精准提取对阵数据用pdfplumber切片解析避开OCR玄学engarde816 导出的PDF是向量图非扫描件文字可直接提取。但schedule_full.pdf含多列布局直接pdf2text会乱序。正确做法是用pdfplumber按坐标切片# extract_schedule.py import pdfplumber import csv with pdfplumber.open(schedule_full.pdf) as pdf: page pdf.pages[0] # 通常第1页是主赛程 # 定义表格区域x050, x1550, y0120, y1750单位pt table page.extract_table({ vertical_strategy: lines, horizontal_strategy: lines, explicit_vertical_lines: [50, 180, 300, 420, 550], explicit_horizontal_lines: list(range(120, 750, 25)) }) with open(schedule_parsed.csv, w, newline, encodingutf-8) as f: writer csv.writer(f) writer.writerows(table)运行后得到规整CSV含列场次编号, 开始时间, 剑道, 选手A, 选手B, 替补。此文件可直接拖入Excel做条件格式高亮或导入Power BI做实时看板。5.2 自动生成选手通知邮件用Jinja2模板批量填充10秒发32封创建notify_template.txt尊敬的{{ name }}家长 您好您孩子{{ student_name }}参加的{{ age_group }}组比赛安排如下 ▶ 第{{ round }}轮{{ time }} {{ court }}号剑道 ▶ 对阵选手{{ opponent }} ▶ 备注请提前15分钟到场检录 赛事联系人张教练 138****1234用Python脚本读取schedule_parsed.csv逐行渲染from jinja2 import Template import smtplib from email.mime.text import MIMEText template Template(open(notify_template.txt).read()) for row in csv.DictReader(open(schedule_parsed.csv)): if row[选手A]: # 过滤空行 msg MIMEText(template.render(**row), plain, utf-8) msg[Subject] f【击剑赛程】{row[选手A]} vs {row[选手B]} # 此处接入SMTP发送略按企业邮箱配置提示实际部署时把schedule_parsed.csv生成步骤做成.bat批处理双击即可完成“PDF→CSV→邮件”全链路比手动复制粘贴快10倍。5.3 为志愿者制作极简版白板助手用HTMLCSS生成可打印的“轮次速查卡”engarde816 不提供Web界面但你可以用它输出的SVG对阵图生成一张A4纸大小的“轮次速查卡”贴在志愿者工作台!-- bracket_card.html -- style .card { width: 210mm; height: 297mm; font-family: Microsoft YaHei; } .round { margin: 10px 0; } .match { padding: 4px; border-bottom: 1px solid #ccc; } /style div classcard h2U14组 第2轮对阵共4场/h2 div classround div classmatch【1】 张明远 vs 李思涵 nbsp;nbsp;→ 胜者晋级半决赛/div div classmatch【2】 王浩然 vs 陈雨桐 nbsp;nbsp;→ 胜者晋级半决赛/div /div /div将此HTML用Edge浏览器打印为PDF选择“实际大小”“无页边距”一张A4纸就能塞下2轮共8场核心信息。志愿者扫一眼就知道当前该盯哪几场。从那以后我每次筹备模拟项目X都会在赛前24小时跑一遍extract_schedule.py→generate_notifications.py→print_bracket_card.html三连脚本确保所有输出物PDF、CSV、邮件、卡片在开赛前就绪。不是为了炫技而是把不确定性锁死在可控环节——毕竟击剑赛真正的变量永远是剑尖上的0.1秒。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

TaskExplorer 完整指南:跨平台深度进程监控工具

TaskExplorer 完整指南:跨平台深度进程监控工具

TaskExplorer 完整指南:跨平台深度进程监控工具 【免费下载链接】TaskExplorer Power full Task Manager for Windows and Linux 项目地址: https://gitcode.com/GitHub_Trending/ta/TaskExplorer TaskExplorer 是一款功能强大的跨平台任务管理器&#xff0c…

2026/10/19 6:51:01 阅读更多 →
DeepSeek-V4-Flash-Vision-Exp-MLX生产部署指南:OpenAI兼容API与本地服务搭建

DeepSeek-V4-Flash-Vision-Exp-MLX生产部署指南:OpenAI兼容API与本地服务搭建

【免费下载链接】DeepSeek-V4-Flash-Vision-Exp-MLX 项目地址: https://ai.gitcode.com/hf_mirrors/mlx-community/DeepSeek-V4-Flash-Vision-Exp-MLX 点击查看 免费下载 DeepSeek-V4-Flash-Vision-Exp-MLX 是 DeepSeek V4 系列的实验性多模态模型(支持…

2026/10/19 6:51:01 阅读更多 →
VideoMamba开发者指南:如何将它作为Backbone无缝替换ViT接入你的视频项目

VideoMamba开发者指南:如何将它作为Backbone无缝替换ViT接入你的视频项目

【免费下载链接】VideoMamba 项目地址: https://ai.gitcode.com/OpenGVLab/VideoMamba 点击查看 免费下载 VideoMamba 是一个基于双向状态空间模型(Bidirectional SSM)的轻量级视频理解模型,由 OpenGVLab 开发,核心定…

2026/10/19 6:51:01 阅读更多 →

最新新闻

AI原生开发平台架构规划与落地实操指南

AI原生开发平台架构规划与落地实操指南

做技术交流的时候,被问得最多的一个问题,差不多就是标题这句:AI原生开发平台到底是什么、架构怎么规划、怎么落地。说实话,每次回答完我都觉得还有话没说完,因为这三个问题其实是层层递进的——概念不清就谈不上规划&a…

2026/10/19 7:38:21 阅读更多 →
diagram-design:从草图到可维护图示系统的设计方法论

diagram-design:从草图到可维护图示系统的设计方法论

1. 从一张草图到一套系统:diagram-design 到底在解决什么问题第一次听到“diagram-design”这个词,很多人会以为它只是“画图工具”的另一个说法。但真正在项目里摸爬滚打过的人都知道,图这件事从来不是“画出来”那么简单。它背后牵扯的是信…

2026/10/19 7:38:21 阅读更多 →
MCP 三种传输方式全解析:stdio、SSE、Streamable HTTP 选型实战

MCP 三种传输方式全解析:stdio、SSE、Streamable HTTP 选型实战

聊 MCP 的三种传输方式之前,先承认一件事:大多数人在看 MCP 文档的时候,最容易卡住的就是传输层这一节。stdio、SSE、Streamable HTTP 三个词单独拎出来都认识,合在一起却不知道它们为什么同时存在、各自解决什么问题。这不怪你&a…

2026/10/19 7:38:21 阅读更多 →
AI论文降重指令实战:6类提示词破解查重与AIGC检测

AI论文降重指令实战:6类提示词破解查重与AIGC检测

2025年的毕业季明显比前几年多了一道坎:不只是查重率,还多了AI检测。我身边好几个准备答辩的朋友,论文初稿写得很顺,结果一查重,标红一片;好不容易把重复率压下来了,送审前又被提醒“部分段落机…

2026/10/19 7:38:21 阅读更多 →
rea模块开发指南:从命名解析到高复用架构设计与性能优化

rea模块开发指南:从命名解析到高复用架构设计与性能优化

1. 从“rea”这个标题说起:一个被低估的通用缩写第一次看到“rea”这个标题的时候,我脑子里蹦出来的第一反应是——这大概率又是一个被缩写玩坏了的项目名。在技术圈混久了你会发现,越是短到只有三个字母的标题,背后藏的东西往往越…

2026/10/19 7:38:21 阅读更多 →
diagram-design:从设计令牌到语义化图表的系统化设计方法

diagram-design:从设计令牌到语义化图表的系统化设计方法

1. 从一张草图到一套系统:diagram-design 到底在解决什么问题第一次听到 “diagram-design” 这个词,很多人会以为它只是“画图工具”的另一个说法。但真正在项目里被图表折磨过的人知道,问题从来不是“画不出来”,而是“画得乱、…

2026/10/19 7:37:20 阅读更多 →

日新闻

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

简介:本资源为电源技术方向的学术研究文档,聚焦介质阻挡放电型臭氧发生器电源的频率跟踪型PWM控制策略,面向电力电子、高压电源及臭氧应用领域的科研人员与工程技术人员。针对负载呈容性、等效电容随外加电压升高而增大、谐振频率随之漂移的难…

2026/10/19 0:00:47 阅读更多 →
Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

Vibe Coding 遇上 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/19 0:00:47 阅读更多 →
HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

【免费下载链接】HundredCV-Chat 项目地址: https://ai.gitcode.com/hf_mirrors/Jax-dan/HundredCV-Chat 点击查看 免费下载 HundredCV-Chat 是一个由 100 位青年简历数据开发而来的中文多轮对话数据集,共包含 24,750 组日常闲聊对话和 4,871 个话题标签…

2026/10/19 0:00:47 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/19 1:30:52 阅读更多 →

月新闻

我发现了一个新思路:用 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/19 2:54:50 阅读更多 →
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 阅读更多 →