GameAISDK 中的 JSON 基础设施:JsonCpp 库集成、构建与配置解析实战指南
人工智能强化学习计算机视觉游戏开发测试【免费下载链接】GameAISDK基于图像的游戏AI自动化框架项目地址https://gitcode.com/gh_mirrors/ga/GameAISDK点击查看免费下载本指南以 GameAISDK 仓库内置的 JsonCpp 源码Modules/Json/jsoncpp-master为主体系统讲解这个 C JSON 库的核心能力、三种集成方式、完整构建流程与测试体系并深入剖析它在 GameAISDK 图像处理模块中承担的任务配置解析职责。读完本文你将掌握 JsonCpp 的单一源码文件集成amalgamation、CMake/Conan/SCons 构建、Reader/Writer 测试用例编写以及如何用Json::Reader与Json::Value在真实项目中读取 JSON 配置。JsonCpp 是什么轻量级数据交换格式的 C 实现JSONJavaScript Object Notation是一种轻量级的数据交换格式它可以表示数字numbers、字符串strings、有序的值序列ordered sequences of values以及名称/值对的集合collections of name/value pairs。在 AI 游戏自动化这类需要大量结构化配置任务列表、识别规则、动作参数的项目中JSON 凭借其可读性与通用性成为配置存储的首选。JsonCpp 是一个 C 库允许开发者操作 JSON 值包括与字符串之间的序列化serialization和反序列化deserialization。它还有一个实用特性在反序列化/序列化过程中可以保留原有注释这使得它特别适合用来存储用户输入文件——因为配置文件中的注释往往是开发者留给后来者的重要说明不应在解析重写后丢失。仓库中该库的完整源码位于 Modules/Json/jsoncpp-master公共头文件集中在 Modules/Json/jsoncpp-master/include/json其中 json.h 作为总入口统一引入了value.h、reader.h、writer.h、features.h与autolink.h五个核心头文件即「值模型 读取器 写入器 特性开关」的完整 API 面。版本策略与向后兼容性JsonCpp 的版本策略在其 README 中有明确约定1.y.z系列基于 C11 构建0.y.z系列可用于更老旧的编译器主版本major version之间维持二进制兼容binary-compatibility。在仓库的 CMakeLists.txt 中可以看到实际版本被定义为1.8.1对应的JSONCPP_SOVERSION共享库版本号为11。构建系统还强制要求 C11 标准CMAKE_CXX_STANDARD 11且CMAKE_CXX_STANDARD_REQUIRED ON并关闭 GNU 扩展这与 README 中「1.y.z 基于 C11」的说明完全一致。因此将 JsonCpp 集成进 GameAISDK 这类使用现代 C 的项目时不存在语言标准层面的兼容障碍。在项目中集成 JsonCpp 的推荐方式方式一使用 amalgamated 单一源码文件官方推荐README 明确推荐的做法是将amalgamated source一个.cpp文件加两个.h文件直接加入你的项目像编译任何普通源文件一样参与编译。这样做的好处是保证编译标志compilation flags的一致性避免共享库/静态库构建时常见的 ABI 兼容性问题。同时需要把include/目录加入编译器的 include 路径并按下述方式包含头文件#include json/json.h如果在 Windows 上以动态库方式构建 JsonCpp那么使用方项目还需定义宏JSON_DLL该宏由 autolink.h 配合使用用于处理 Windows 下 DLL 的导入/导出符号标记。生成 amalgamated 源码与头文件JsonCpp 自带生成脚本 amalgamate.py。在仓库顶层目录即Modules/Json/jsoncpp-master/执行以下命令即可随时生成脚本同时兼容 Python 2.6 与 Python 3.4python amalgamate.py脚本支持通过-h查看全部选项核心参数如下来自 amalgamate.py 的main()参数含义默认值-s, --source输出的.cpp源码路径dist/jsoncpp.cpp-i, --include生成的头文件包含路径用于源码中 include 该头json/json.h-t, --top-dir源码顶层目录当前工作目录默认情况下会生成三个文件dist/jsoncpp.cpp需要加入项目的源文件dist/json/json.h对应非 amalgamated 源码中的json/json.h该头文件只依赖标准头文件dist/json/json-forwards.h提供所有 JsonCpp 类型的前置声明forward declaration适合用来减少编译依赖。其实现原理见 amalgamate.py脚本按正确顺序拼接 JsonCpp 的各个源文件——依次是src/lib_json/json_tool.h、json_reader.cpp、json_valueiterator.inl、json_value.cpp、json_writer.cpp并定义宏JSON_IS_AMALGAMATION以阻止内部再包含其他私有头文件。如果编译时未提供该宏amalgamated 源码会通过#error Compile with -I PATH_TO_JSON_DIRECTORY直接报错防止误用。方式二传统库构建集成若希望以静态库/共享库方式链接可参考下文「构建 JsonCpp」章节。仓库内Modules/Json/lib/Windows/下已提供预编译的 Windows.lib文件而Modules/Json/lib/Linux/目录为空Linux 平台需要自行构建。构建 JsonCpp 的三种方式使用 CMake 构建当前主推方式CMake 是 C 的 Makefiles/Solution 生成器在大多数 Linux 系统上可作为软件包安装Ubuntu 上执行sudo apt-get install cmake。注意运行 JSON reader/writer 测试还需要 Python若缺失构建会跳过这些测试。仓库根 CMakeLists.txt 提供了丰富的构建开关关键选项整理如下选项默认值说明BUILD_SHARED_LIBSOFF构建共享库动态库BUILD_STATIC_LIBSON构建静态库JSONCPP_WITH_TESTSON编译 JsonCpp 测试可执行文件JSONCPP_WITH_POST_BUILD_UNITTESTON作为构建后步骤自动运行单元测试JSONCPP_WITH_WARNING_AS_ERROROFF编译出现警告即失败JSONCPP_WITH_STRICT_ISOON启用严格 ISO C/C 警告JSONCPP_WITH_PKGCONFIG_SUPPORTON生成并安装.pcpkg-config文件JSONCPP_WITH_CMAKE_PACKAGEOFF生成并安装 CMake 包文件JSONCPP_USE_SECURE_MEMORY0置1时为 STL 启用清空内存的分配器使用cmake-gui的可视化步骤如下将「source code」指向源码目录「where to build the binary」指向构建目录勾选「Grouped」分组查看选项按需勾选BUILD_SHARED_LIBS构建动态库点击 Configure 再点击 Generate生成的 Makefiles/Solution 即位于二进制目录。命令行方式在源码目录执行Unix 环境mkdir -p build/debug cd build/debug cmake -DCMAKE_BUILD_TYPEdebug -DBUILD_STATIC_LIBSON -DBUILD_SHARED_LIBSOFF -DARCHIVE_INSTALL_DIR. -G Unix Makefiles ../.. make若需要生成规范的 pkg-config 文件可追加-DCMAKE_INSTALL_INCLUDEDIRinclude/jsoncpp其他实用提示运行cmake -h可查看所有可用的生成器通过-G指定如 Visual Studio 版本、32/64 位解决方案等CMake 默认隐藏编译命令生成 Makefiles 时加-DCMAKE_VERBOSE_MAKEFILEtrue即可显示从 CMakeLists.txt 可见JSONCPP_WITH_TESTS与JSONCPP_WITH_POST_BUILD_UNITTEST默认开启构建时会一并产出测试可执行文件。使用 Conan 构建Conan 是面向 C/C 的开源包管理器跨平台且与构建系统无关。它需要 Python可用pip install conan安装。使用 Conan 需要创建conanfile.txt简单或conanfile.py更灵活。README 中给出的conanfile.txt示例[requires] jsoncpp/1.8.0theirix/ci [generators] cmake然后在 conanfile 所在目录执行conan install --build missing该命令会尝试从配方仓库下载与当前设置OS、编译器、架构匹配的包找不到则本地构建。注意cmake 生成器并非必需可换用其他集成方式或通过 virtualenv generators 设置环境变量即便不使用 Conan 的 cmake 生成器也不需要手动安装 cmake——配方会自动下载。使用 SCons 构建已弃用README 明确标注 SCons 构建系统已被弃用建议改用 CMake。SCons 需要 Python。调用方式为scons platform$PLATFORM [TARGET]其中$PLATFORM可取sunccSolaris、vacppAIX Visual Age C、mingw、msvc6VS6 SP5-6、msvc70VS2002、msvc71VS2003、msvc80VS2005、msvc90VS2008、linux-gccLinux官方称在 Mac OS X 上也可用。若使用 Visual Studio 2008 构建需先运行vcvars32.bat配置环境。测试体系手动测试、测试用例编写与输出解读运行测试仅当排查问题troubleshooting时才需要手动运行测试。以下命令中请将path/to/jsontest替换为你平台实际编译出的jsontest可执行文件路径cd test # 运行 Reader/Writer 测试 python runjsontests.py path/to/jsontest # 使用 JSONChecker 测试套件运行 Reader/Writer 测试 # 注意并非所有用例都能通过——JsonCpp 目前解析过于宽松 # 例如允许整数以 0 开头目标是改进严格模式解析使全部用例通过 python runjsontests.py --with-json-checker path/to/jsontest # 运行单元测试主要是 Value 相关 python rununittests.py path/to/test_lib_json # 使用 valgrind 运行单元测试 python rununittests.py --valgrind path/to/test_lib_json使用 SCons 时可通过check目标运行测试scons platform$PLATFORM check测试脚本位于 Modules/Json/jsoncpp-master/test/包括runjsontests.py、rununittests.py、pyjsontestrunner.py等测试输入数据在test/data/目录下仓库共有 94 个.json与 56 个.expected文件。添加一个 reader/writer 测试在test/data下新增测试需要两个文件TESTNAME.jsonJSON 格式的输入文档TESTNAME.expected输入文档的扁平化flattened表示。TESTNAME.expected文件格式规则README 原文要点每一行代表输入文档元素树中的一个 JSON 元素每行由「访问元素的路径」 「元素值」两部分组成数组和对象的值始终为空即[]或{}元素路径中.代表根元素同时用于分隔对象成员[N]表示数组中索引为N的元素。以仓库中的 test/data/test_complex_01.json 为例它包含嵌套对象、字符串数组与混合类型数组其对应的 test/data/test_complex_01.expected 展示了扁平化规则的实际效果.{} .attribute[] .attribute[0]random .attribute[1]short .attribute[2]bold .attribute[3]12 .attribute[4]{} .attribute[4].height7 .attribute[4].width64 .count1234 .name{} .name.akaT.E.S.T. .name.id123987 .test{} .test.1{} .test.1.2{} .test.1.2.3{} .test.1.2.3.coord[] .test.1.2.3.coord[0]1 .test.1.2.3.coord[1]2可以看到数字成员count直接写出值字符串数组每个元素单独一行[0]、[1]…嵌套对象如name、test.1.2.3只展开为{}并在下一行继续其成员数组coord则按[0]、[1]展开。理解 reader/writer 测试输出测试运行时会紧邻输入文件生成输出文件README 对各文件的含义说明如下test_complex_01.json输入 JSON 文档test_complex_01.expected用于校验解析正确性的扁平化元素树test_complex_01.actualjsontest读取test_complex_01.json后生成的扁平化元素树test_complex_01.rewritejsontest将解析得到的Json::Value用Json::StyledWritter序列化后写出的 JSON 文档test_complex_01.actual-rewritejsontest读取test_complex_01.rewrite后生成的扁平化元素树test_complex_01.process-outputjsontest的输出通常用于理解解析错误的原因。这一「expected / actual / rewrite / actual-rewrite」的对照设计使开发者既能验证解析正确性又能验证「读-写-再读」的往返一致性round-trip这正是保留注释特性的测试保障。实战佐证JsonCpp 在 GameAISDK 中的配置解析应用JsonCpp 在 GameAISDK 中并非仅仅作为第三方依赖存在而是直接支撑了图像识别模块的 JSON 配置读取。核心封装位于 src/ImgProc/Comm/Utils/JsonConfig.h 与 src/ImgProc/Comm/Utils/JsonConfig.cpp其头文件顶部即#include json/json.h正是 README 推荐的包含方式。从 JsonConfig.cpp 可以看到典型的 JsonCpp 读取流程bool CJsonConfig::loadFile(const char *pstrConfName) { if (NULL pstrConfName) { LOGE(input config file is null); return false; } Json::Reader reader; std::ifstream in(std::string(pstrConfName), std::ios::binary); if (!in.is_open()) { LOGE(Error opening file, format is wrong.); return false; } return reader.parse(in, m_root); }即实例化Json::Reader→ 打开二进制输入流 →reader.parse(in, m_root)将 JSON 文档解析进成员Json::Value m_root。这与 README 描述的「反序列化到字符串/流」能力完全对应。随后的读取接口展示了Json::Value的典型用法GetDataJsonConfig.cpp通过JsonRoot[strKey]按键取值并用pval-isNull()判断键是否存在GetConfValue与GetArrayValue将 JSON 路径按/拆分为关键字序列逐层下钻token(pData, /, ...)最终按ConfigDataType类型DATA_INT/DATA_UINT/DATA_BOOL/DATA_STR/DATA_FLOAT/DATA_DOUBLE调用asInt()、asUInt()、asBool()、asString()、asFloat()、asDouble()完成类型转换并拷贝结果GetArraySize返回数组元素个数JsonVal.size()GetJosnValue直接返回Json::Value供上层进一步处理。从源码结构看GameAISDK 将 JsonCpp 的底层 API 二次封装为「路径式」配置读取上层只需给出形如task/xxx/count的/分隔路径即可取数兼顾了 JsonCpp 的灵活性与业务层的易用性。这种模式同样被src/ImgProc/UI、src/ImgProc/GameRecognize等多个子模块采用其构建文件如 src/ImgProc/GameRecognize/Makefile.am、src/ImgProc/GameRecognize/Windows/GameReg.vcxproj 均显式引用 jsoncpp说明 JsonCpp 是贯穿整个图像处理管线的公共基础设施。构建文档与许可说明如需生成 JsonCpp 的 Doxygen 文档在顶层目录运行python doxybuild.py --doxygen$(which doxygen) --open --with-dot详细选项可查看doxybuild.py --help。仓库中 Modules/Json/jsoncpp-master/doc 目录已包含部分文档构建产物.dox、.html等。许可方面JsonCpp 采用 MIT 许可证在司法辖区认可的情况下也可按公共领域public domain使用。完整条款见 Modules/Json/jsoncpp-master/LICENSE。在 GameAISDK 中该库作为内置第三方模块存放于 Modules/Json与 boost、darknet、opencv、protobuf 等模块并列均为项目依赖体系的一部分。赞分享人工智能强化学习计算机视觉游戏开发测试【免费下载链接】GameAISDK基于图像的游戏AI自动化框架项目地址https://gitcode.com/gh_mirrors/ga/GameAISDK点击查看免费下载相关推荐使用 VoltOps Deploy 零配置部署 VoltAgent 应用GitHub 集成、自动构建与托管基础设施实战指南使用 VoltOps Deploy 零配置部署 VoltAgent 应用GitHub 集成、自动构建与托管基础设施实战指南 VoltOps Deploy 是人工智能AI AgentAgent 框架后端多智能体RAG工具调用Agent 记忆Agent 工作流AI 评测MCP 服务MCP Clients语音xhyve与Kubernetes集成构建容器化基础设施的完整指南xhyve与Kubernetes集成构建容器化基础设施的完整指南 在现代云原生环境中 xhyve轻量级虚拟机管理程序 与Kubernetes的结合为开发者和虚拟化B站会员购抢票终极指南如何用Python自动化工具高效抢到热门活动门票B站会员购抢票终极指南如何用Python自动化工具高效抢到热门活动门票 当Bilibili World、BML等热门活动门票开售时你是否经历过 手动抢票失电商RPA上一篇gsy_github_app_flutter 的 AI 协作入口导航按任务类型路由到正确文档路径的工程实践下一篇Bash-it 持续集成指南GitHub Actions CI 工作流与本地质量检查全解析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Claude Code 系统提示词解析:Artifact 运行时能力声明(capabilities)的语义、契约与自我发布规则

Claude Code 系统提示词解析:Artifact 运行时能力声明(capabilities)的语义、契约与自我发布规则

文档提示工程人工智能 【免费下载链接】claude-code-system-prompts All parts of Claude Codes system prompt, 27 builtin tool descriptions, sub agent prompts (Plan/Explore/Task), utility prompts (CLAUDE.md, compact, statusline, magic docs, WebFetch, Bash cmd, s…

2026/10/5 13:10:00 阅读更多 →
Godot 编辑器资源悬浮提示插件 EditorResourceTooltipPlugin 完整开发指南

Godot 编辑器资源悬浮提示插件 EditorResourceTooltipPlugin 完整开发指南

文档教程游戏开发 【免费下载链接】godot-docs Godot Engine official documentation 项目地址: https://gitcode.com/GitHub_Trending/go/godot-docs 点击查看 免费下载 在 Godot 4 编辑器中,当你在文件系统停靠面板(FileSystemDock&#x…

2026/10/5 13:10:00 阅读更多 →
LaTeX2e graphics bundle 完全指南:color、graphics、graphicx 与配套工具包深度解析

LaTeX2e graphics bundle 完全指南:color、graphics、graphicx 与配套工具包深度解析

编程语言标准库 【免费下载链接】latex2e The LaTeX2e kernel 项目地址: https://gitcode.com/gh_mirrors/la/latex2e 点击查看 免费下载 graphics 是标准 LaTeX2e 内核中负责颜色、图形与文本操作的核心宏包集合,由 color、graphics、graphicx、lscape…

2026/10/5 13:10:00 阅读更多 →

最新新闻

SpringBoot+Vue宠物健康顾问系统:从架构设计到前后端分离实践

SpringBoot+Vue宠物健康顾问系统:从架构设计到前后端分离实践

1. 项目概览:这个“宠物健康顾问”到底是什么 先说结论:这套SpringBootVue的宠物健康顾问系统,核心是做“宠物医院的轻量级数字化管理”。它不是一个花架子demo,而是把真实宠物门诊日常要干的几件事——宠物档案建档、在线问诊、疫…

2026/10/5 13:57:20 阅读更多 →
SpringBoot+Vue宠物健康顾问系统全栈开发实战解析

SpringBoot+Vue宠物健康顾问系统全栈开发实战解析

毕业后第一次做全栈项目,不少人会直接选“宠物健康顾问系统”。说实话,这个题目在毕设和课设里出现的频率相当高,数据模型清晰、业务边界明确、技术栈又刚好踩在主流Java后端和前端框架上,用来锻炼完整的项目开发流程再合适不过。…

2026/10/5 13:57:20 阅读更多 →
Ubuntu 20.04 源码编译 OpenCV 3.3.1 全流程与避坑指南

Ubuntu 20.04 源码编译 OpenCV 3.3.1 全流程与避坑指南

简介:针对 Ubuntu 20.04 重新适配的 OpenCV 3.3.1 资源包,面向需要在较新系统上编译旧版 OpenCV 的开发者、人工智能与计算机视觉学习者。作者已修正 CODEC_FLAG_GLOBAL_HEADER、AVFMT_RAWPICTURE 未声明及 const char* 转 char* 等编译错误,…

2026/10/5 13:56:20 阅读更多 →
苏凌丘国庆希尔顿酒店举办订婚宴 学霸女神情定金秋

苏凌丘国庆希尔顿酒店举办订婚宴 学霸女神情定金秋

(2026年10月3日) 国庆佳节,喜事临门。曾因江苏卫视《非诚勿扰》备受关注的“学霸女神”苏凌丘,于国庆在希尔顿酒店举办订婚宴,正式与男友许下携手一生的承诺。这是继今年8月男友在W酒店秘密求婚后,两人感情…

2026/10/5 13:56:20 阅读更多 →
用 @Docs 与项目 README 约束幻觉:Cursor 文档索引配置与提问模板

用 @Docs 与项目 README 约束幻觉:Cursor 文档索引配置与提问模板

用 Docs 与项目 README 约束幻觉:Cursor 文档索引配置与提问模板 Agent 「一本正经地胡说」时,观众爱骂模型;工程上更常缺的是材料与约束:没有版本对齐的文档索引,没有当真相源的 README,提问又允许它「凭印…

2026/10/5 13:56:20 阅读更多 →
Python自动化:PPT一键转视频的完整技术方案与代码实践

Python自动化:PPT一键转视频的完整技术方案与代码实践

做这行的朋友应该都有过这种经历:汇报前夜改了八遍PPT,第二天发现讲稿和页面顺序对不上;或者要录一节网课,手动点鼠标翻页加录音折腾到凌晨。当"幻灯片"和"视频"这两个词出现在同一个需求里,很多人…

2026/10/5 13:56:20 阅读更多 →

日新闻

马斯克杀回智能体战场,Grok 4.5万亿参数撑腰,Cursor接手数字白领项目:用TaoToken统一Key跑通多模型Agent工作流

马斯克杀回智能体战场,Grok 4.5万亿参数撑腰,Cursor接手数字白领项目:用TaoToken统一Key跑通多模型Agent工作流

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

2026/10/5 0:00:22 阅读更多 →
AI编程工具插件机制详解:plugin.json配置与加载失败排查指南

AI编程工具插件机制详解:plugin.json配置与加载失败排查指南

1. 从“plugins”这个词说起:它到底在解决什么问题如果你最近在折腾 AI 编程工具,尤其是 Cursor、Codex CLI、Claude Code 这类带 CLI 的编辑器或命令行助手,那你大概率绕不开一个词——plugins。这个词本身不新鲜,从浏览器到 IDE…

2026/10/5 0:00:23 阅读更多 →
第26课:OpenClaw|日志审计与问题诊断:把日志链路改到 TaoToken 的排查清单

第26课:OpenClaw|日志审计与问题诊断:把日志链路改到 TaoToken 的排查清单

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

2026/10/5 0:00:23 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

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

2026/10/5 5:06:42 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

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

2026/10/5 1:10:22 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

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

2026/10/5 3:06:17 阅读更多 →

月新闻

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