新闻详情

新闻详情

首页 / 资讯中心 / 详情

从AI修图到稳定API:nano-banana接入Ace Data Cloud实战指南

发布时间:2026/10/1 8:13:33来源:尧图网络
从AI修图到稳定API:nano-banana接入Ace Data Cloud实战指南
做图像类产品的人应该都有同感演示的时候点一下按钮就能出图可一旦要把它放进小程序、后端服务或者自动化流水线里事情就完全变了。你面对的不再是“好不好用”而是“能不能调”。nano-banana 的 AI 修图能力确实能打一键抠图、智能扩图、局部重绘这些效果放在界面里非常惊艳但如果你想在自己的业务里稳定调用它直接连原厂接口反而会被密钥管理、配额拆分、多模型切换这些杂事拖住。我最后选了 Ace Data Cloud 作为接入层把 nano-banana 封装成标准的可调用 API前后花了一下午就接完了。这篇文章就是把整个过程、踩过的坑和最终的工程方案完整拆开讲给想快速接入 AI 修图能力的团队一个可以直接抄作业的参考。1. 动手之前先拆清楚“AI 修图 API 化”的真正需求1.1 为什么需要把一个模型封装成 API先说结论模型本身再强不变成 API 就用不到业务里。我接手过一个商品图批量处理的需求运营团队每天要处理上千张白底图、场景图如果全靠设计师手工在网页工具里点人力成本直接爆炸。当时想得很简单调用 nano-banana 的修图能力写个脚本批量跑不就行了真上手才发现问题根本不在“能不能调用”而在“怎么稳定地调用”。移动端跑不动大模型这是物理限制。就算用户手机性能足够你也不可能让每个人都在本地下载几个 GB 的模型权重。所以 AI 修图能力必须放在服务端通过 API 暴露给前端或业务系统。但如果你直接对接模型原厂往往要面对几件事第一原厂接口的认证方式和数据结构未必适合你现有的工程体系第二一个项目里可能同时用好几个模型抠图用一个、扩图用一个、超分用另一个每个都要单独配 key、单独记账单第三团队内部做权限管控很麻烦总不能把主账号的 key 直接写在代码里。把模型封装成 API本质上是给它加了一层“工程化外壳”。你不再关心模型跑在哪台 GPU 上、请求怎么路由、队列怎么调度你只需要关心入参和出参。这种抽象对业务团队友好得多前端同学看到的是一个POST /api/v1/edit后端同学看到的是一个标准的 JSON 请求体产品经理看到的是“这个能力可以接入”。1.2 Ace Data Cloud 在这里承担什么角色按照字面意思理解Ace Data Cloud 是一个云端数据与模型服务聚合平台。它做的事情可以概括成一句话把你需要的 AI 能力统一收口对外提供标准化的 API 入口。具体到 nano-banana 这个场景它充当的角色是“中间网关”。你在 Ace Data Cloud 控制台创建好应用、拿到 API key 之后后续调用走的路径大致是业务服务 → Ace Data Cloud 网关 → nano-banana 模型服务 → 结果回传。业务服务始终只跟 Ace Data Cloud 打交道不直接触碰模型原厂。这个设计解决了一个很实际的问题多模型切换。今天你用 nano-banana 做抠图明天想试试另一个模型如果项目里全是直连调用那就要改一堆代码。走 Ace Data Cloud 之后你只需要在控制台调整路由配置或者改一下请求体里的模型标识业务代码几乎不动。我后来给项目加了一个老照片修复能力就是复制了一个接口配置改了模型名半个小时就上线了。另外统一鉴权也是一大块收益。团队里五六个开发不可能每个人都拿主账号的 key 去调。Ace Data Cloud 允许你创建多个子应用每个应用独立配额、独立 key、独立日志。谁调了多少、有没有异常后台一查便知。这一点对团队协作来说非常关键。1.3 两种接入方式的取舍直连还是走网关我自己实际评估过两种方案放在这里做个对比对比维度直连 nano-banana 原厂接口通过 Ace Data Cloud 接入接入速度需要自己封装鉴权和请求逻辑创建应用拿 key 即可调多模型切换需改业务代码改控制台路由配置即可密钥管理容易散落在各服务集中管理支持子应用隔离配额与账单各模型分开看难汇总统一看板一目了然故障排查需要自己对比各家文档统一请求日志便于追踪适配成本每家 API 风格不同磨合期长标准化接口数据结构统一我没有全盘否定直连方案。如果团队有专门的 AI 基础设施组对稳定性要求极高而且长期只用一个模型直连完全可行。但对我们这种需要快速验证业务、频繁调换模型的中小型团队来说走 Ace Data Cloud 明显划算。毕竟核心目标是“把 AI 修图能力变成可调用的 API”而不是“研究如何对接 AI 修图能力”。2. 接入准备账号、应用与密钥2.1 开通服务并创建应用整个接入流程的第一步其实是最容易卡住人的很多人拿到控制台之后不知道应该先去哪。ACE Data Cloud 的后台一般分为“应用管理”“API 令牌”“调用日志”几个模块开通之后第一件事是进入应用管理创建一个新应用。创建应用时有几个字段需要留意。应用名称建议直接跟业务挂钩比如“商品图批量精修”不要用 test1 这种名字不然应用多了以后根本认不出来。应用类型一般选“服务端应用”或“API 应用”这两种应用拿到的密钥权限级别较高适合后端调用。回调地址如果有就填没有可以先留空后面再补。不同服务商的控制台界面差别很大但核心逻辑都差不多应用就是你的项目身份API key 是这个身份的操作凭证。别急着在界面上到处乱点先把这个逻辑想清楚后面所有操作都会顺很多。2.2 获取 API Key 与密钥管理创建完应用后进入应用详情页找到“API Key”或者“密钥管理”入口点击生成。这时候会跳出一个弹窗显示完整的 key通常长这样sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxx这里有个极其重要的操作习惯完整 key 只在创建时展示一次关掉弹窗之后就再也看不到了。我当时没截图心想回头再复制结果找遍了所有菜单都找不到完整 key最后只能重新生成。重新生成会导致旧 key 立即失效如果旧 key 已经部署在线上服务里那就是一次事故。正确的做法是生成后立刻复制存到团队的密码管理器或者自建的安全存储里代码和配置文件里只保留占位符。GitHub 上因为这个翻车的案例太多了每次看到有人把 key 硬编码提交上去都会替他们捏一把汗。API key 的权限等同于你的账号泄露意味着别人能拿着它调你的接口、花你的钱。另外还要提一句环境隔离。本地开发、测试环境、生产环境一定要使用不同的应用和不同的 key。我见过不少团队用一个 key 跑到底最后线上排查问题的时候根本分不清某次异常调用是哪个环境发起的。多开几个应用的代价非常小别省这个事。2.3 配置白名单与权限范围拿到 key 之后不要急着写代码先做安全配置。大部分类似平台都支持设置 IP 白名单或域名白名单建议默认开启。如果你的业务服务部署在云服务器上记得把服务器的公网 IP 加入白名单。这样即使 key 泄露攻击者拿着 key 在别的机器上也调不动你的接口相当于加了一把物理锁。如果服务在本地调试本地 IP 经常会变可以先不配白名单但上线前一定要补上。权限范围设置上只给应用开放你实际用得到的模型能力。比如当前项目只需要 nano-banana 的图片编辑能力那就不要开放其他模型的权限。最小权限原则不只是安全最佳实践也能减少误调用产生的费用。有一次我把某个应用设置成了“全部模型可调用”结果测试脚本写错了模型名调了另一个收费模型一整晚第二天看账单差点没站稳。2.4 最小可用的 curl 验证配置全部完成之后先用一行 curl 把链路打通别急着上代码。这一步能确认账号、密钥、网络三个环节都正常。curl -X POST https://api.acedatacloud.cn/v1/edit/nano-banana \ -H Authorization: Bearer sk-你的key \ -H Content-Type: application/json \ -d { image_url: https://your-bucket.s3.amazonaws.com/demo.jpg, instruction: remove the background }如果返回结果里包含request_id和processed_image_url之类的字段说明链路已经通了。如果报 401先检查 key 有没有复制完整有没有多余的空格如果报网络超时检查白名单是否拦截了当前出口 IP。用 curl 把基础问题排干净后面的代码调试会舒服很多。3. 真正调用 nano-banana 修图能力的完整操作3.1 核心概念任务型接口还是实时接口接入之前先搞清一个概念它会决定你的整个接口设计思路图像生成类接口分为实时型和任务型。实时型接口代表请求发出去后短时间内就能拿到结果适合处理小型图像或耗时较短的编辑操作。比如轻度调色、加个滤镜通常两三秒内返回。任务型接口代表请求发出去后先返回一个任务 ID你再通过轮询或者回调获取最终结果适合处理高分辨率图片或复杂的重绘操作。这里有一个非常关键的原则千万别用实时型接口处理大图长任务。HTTP 连接是有超时时间的如果你把一张 4K 图片塞进去做深度重绘后端可能要跑三十秒请求早就被网关或负载均衡器断掉了你会得到一大堆不明不白的超时错误而任务可能还在后台继续跑。我当时测试 nano-banana 的出图效果时先用实时接口验证后来转到批量处理场景果断换成了任务型接口。ACE Data Cloud 一般会为这类接口提供一个task_id你拿到 ID 后调查询接口轮询状态。轮询间隔建议 2 到 3 秒一次不要太频繁否则会给平台方造成不必要的压力也可能触发限流。3.2 请求体结构逐字段讲解直接看一个我在生产环境里验证过的请求体字段做了精简保留最核心的部分{ model: nano-banana, task_type: sync, input: { image_url: https://your-bucket.s3.amazonaws.com/input.jpg, operations: [ { type: background_removal, params: { mode: auto, edge_refine: true } }, { type: resize, params: { width: 1024, height: 1024, fit: contain } } ] }, output: { format: png, quality: 95 }, notify_url: https://your-server.com/api/ace-callback }model字段用来指定调用的模型能力这里是nano-banana。task_type指定同步还是异步同步适合快速验证生产环境建议根据图片大小动态选择。input.image_url是要处理的图片地址这里有个细节图片地址必须是可以公网访问的平台的服务端要去拉这张图。如果你用内网地址或者本地路径对方是读不到的。operations数组是按顺序执行的操作列表先抠图再缩放效果是叠加的。params里的参数取决于具体操作类型每个模型支持的参数不完全一样以 ACE Data Cloud 最新文档为准。output控制输出格式与质量。notify_url是异步回调地址任务完成时平台会主动通知你。其中notify_url很多人会忽略但在生产环境它非常重要。基于回调的推送比轮询更高效你不需要定时去查状态服务器也不会有大量空转的查询请求。不过要注意回调地址必须是公网可访问的合法服务地址不能用内网 IP。3.3 代码示例Python 与 Node.js 落地curl 验证通过之后我用 Python 写了一个可复用的调用模块。这里体现了一个工程上的小心思把请求逻辑、签名逻辑、结果处理逻辑分开不同业务场景直接复用。import requests import time API_KEY sk-your-key API_BASE https://api.acedatacloud.cn/v1 def edit_image(image_url, operations, task_typesync, timeout30): payload { model: nano-banana, task_type: task_type, input: { image_url: image_url, operations: operations }, output: { format: png } } headers { Authorization: fBearer {API_KEY}, Content-Type: application/json } resp requests.post(f{API_BASE}/edit, jsonpayload, headersheaders, timeouttimeout) resp.raise_for_status() return resp.json() def wait_for_result(task_id, interval3, max_attempts20): headers {Authorization: fBearer {API_KEY}} for _ in range(max_attempts): resp requests.get(f{API_BASE}/tasks/{task_id}, headersheaders, timeout15) data resp.json() if data.get(status) succeeded: return data[result] if data.get(status) in (failed, cancelled): raise RuntimeError(ftask failed: {data.get(error)}) time.sleep(interval) raise TimeoutError(task polling timeout)# 调用示例抠图后缩放到 1024x1024 result edit_image( https://your-bucket.s3.amazonaws.com/input.jpg, [ {type: background_removal, params: {mode: auto}}, {type: resize, params: {width: 1024, height: 1024}} ] ) print(result)Node.js 侧的写法大同小异用axios或者原生fetch均可。这里的核心不是用哪个语言而是把“同步调用”和“异步轮询”两个逻辑封装成独立函数并在调用阶段就决定好使用哪种模式否则后面排查问题会非常头疼。3.4 请求参数的两种传入方式图像编辑场景里图片的传入方式一般有两种传图片 URL或者直接传 Base64 数据。传 URL 是最推荐的方式也是我在生产环境使用最多的方式。你需要把图片先上传到 OSS、S3 或者其他对象存储服务拿到一个公网可访问的 URL 后传给 API。好处是请求体小网络传输快平台侧也能直接从目标地址拉取图片。直接传 Base64 也有适用场景比如图片本身已在前端内存中你不想先经过你的服务器而是希望直接提交给平台。但 Base64 会让请求体膨胀约三分之一且如果图片过大很容易触发网关的上限。对于几十 KB 的小图还算可用大图就别这么干了。我踩过一次坑当时做测试顺手把一张裁剪过的 2MB 图片转成 Base64 塞进请求体结果接口直接报 413 Payload Too Large。排查半天才发现是请求体体积超限。后来规规矩矩走对象存储所有图片先丢到 OSS 再提交 URL问题再没出现过。3.5 结果返回与图片落盘接口返回的result里通常会包含处理后图片的 URL。这个 URL 可能是平台侧临时生成的也可能是你指定的输出存储位置。生产环境中建议把输出 URL 下载到你自己的存储桶免得平台侧临时文件过期导致图片丢失。def download_image(url, save_path): resp requests.get(url, timeout60) resp.raise_for_status() with open(save_path, wb) as f: f.write(resp.content) return save_path需要提醒一下如果任务在 ACE Data Cloud 侧生成了临时图片一定要在代码里加一个“结果转存”的步骤。我当时因为偷懒直接拿着返回的临时 URL 去配前端展示结果运营同学第二天截图过来问“为什么图片裂了”临时链接已经失效了。教训就一句话所有平台返回的临时文件不是你的资产落地转存才是。4. 高频报错与排障经验4.1 unexpected status 401 unauthorizedincorrect api key provided这个报错是调用方最容易遇到的。字面意思非常明确API key 不对。但“不对”的可能性其实挺多我在真实环境里至少见过四种情况。第一种是 key 复制不完整。平台生成的 key 通常比较长手动复制时容易漏掉末尾几个字符或者不自觉多加了一个空格。JWT 风格的标准密钥用肉眼几乎看不出少没少建议直接点复制按钮而不是手选文本。第二种是环境变量污染。我遇到过最诡异的情况是业务代码里明明设置了正确的 key但因为docker-compose.yml里残留了一个旧的环境变量导致运行时读取的是旧值请求一直 401。排查这类问题的时候第一步就是把代码里实际读取到的 key 打日志输出确认运行时用的是哪个值。第三种是 key 与平台区域不匹配。部分平台会区分不同地域的网关地址在 A 区域生成的 key 无法调用 B 区域的接口。第四种是权限被收回了比如管理员在控制台重置过密钥或者子应用状态被暂停。实际排查建议先打印运行时实际使用的 key脱敏后跟控制台里的 key 比对特别是前缀和后缀各四位确认网关地址和你创建应用的数据中心一致如果还不行直接重新生成一个 key 再试。不要花太多时间纠结这个问题八成是你代码里的菜。4.2 api error: 400 上下文长度与 1048576 tokens热搜词里提到的api error: 400 this models maximum context length is 1048576 tokens我起初以为只会出现在文本大模型上实际用完才发现部分图像模型平台在解析输入元信息时也会报同样的错。这个报错的信息量是你请求中携带的内容大小超过了该模型允许的最大上下文长度。对于图像模型来说触发原因通常是输入图片的分辨率过高或者 Base64 编码后的体积过大导致平台在编码计算时超出了上下文预算。遇到这个报错处理顺序应该是先检查图片原始像素尺寸。有些手机拍出来的原图能达到 4000x3000远超一般模型的处理上限。解决方式是在上传前先对图片做一次压缩预处理把长边控制在 2048 以内同时适当降低 JPEG 质量比如 85%肉眼几乎看不出区别但体积能缩小好几倍。再检查请求体里是否有历史消息或无关数据被带进去了。如果请求结构里有 messages 之类的字段确认没有把全部对话历史都发过去。最后检查 Base64 的编码方式确认没有额外增大体积。4.3 api error: 400 this organization has been disabled另一个高频报错是this organization has been disabled。这不是你的代码的问题而是账号或组织层面被平台限制了。常见的触发原因有三个欠费或配额耗尽。云服务平台的账号如果余额不足会自动停掉某些组织的相关 API 权限充值即可恢复。部分平台限制非常严格组织账户欠费后会禁用所有模型不只是图像模型。也别忘了检查服务条款违规。如果你在调用过程中传入了不符合平台规范的内容平台有权暂停组织的服务权限。最后是组织管理员在控制台暂停了当前应用的访问。如果你是团队成员可能某个管理员在后台把应用状态改成了“禁用”这也会导致 400 报错。遇到这个报错我建议不要反复重试先把问题提交给团队里有控制台权限的人检查账号状态。确认欠费就充值确认被禁用就让管理员恢复。重试一百次也不会变好只会加重日志噪音。4.4 413 请求体过大与超时除了 400 和 401还有一类错误隐藏得更深413 Payload Too Large以及各类超时。413 的原因前面已经讲过图片以 Base64 方式提交且体积过大。这里的“过大”标准由平台方定义常见阈值在 5MB 到 10MB 之间。处理方式是压缩图片或者改用 URL 方式提交。超时错误要区分具体发生在哪个环节。发生在请求发出阶段说明网关连接有问题需要检查网络和代理设置。发生在请求等待阶段说明平台处理时间超过了网关等待阈值你需要把同步请求改成异步任务型然后轮询或回调。发生在结果返回阶段说明结果图片下载时间过长需要检查转存的网络带宽。我把这个排查思路整理成了表格挂在团队文档里遇到问题直接照着看报错信息常见原因第一步处理动作401 unauthorizedkey 不正确、环境变量污染、区域不匹配打印实际读取的 key比对前后四位400 上下文超长图片分辨率过高或请求体过大压缩图片降低分辨率改用 URL400 organization disabled欠费、被禁用、配额耗尽联系管理员检查账号状态413 payload too largeBase64 请求体超限改用对象存储 URL 方式超时错误同步任务耗时超过阈值切换异步任务型接口5. 生产环境要补的几件事5.1 超时控制与重试策略调用任何外部 API重试策略都是必修课。但重试不是无限重试必须有节奏、有上限。我在项目里用的是“指数退避 抖动”策略。第一次失败后等 1 秒重试第二次等 2 秒第三次等 4 秒最多重试 5 次。在此基础上加一个随机抖动量比如不超过 200 毫秒。为什么要加抖动因为如果同一时间大批量请求都失败了大家同时重试会让网关瞬间被打爆加上随机抖动才能分散压力。import random import time def request_with_retry(fn, max_retries5): for attempt in range(max_retries): try: return fn() except Exception as e: if attempt max_retries - 1: raise wait (2 ** attempt) random.uniform(0, 0.2) time.sleep(wait)另外对于非幂等操作要格外小心。图像编辑任务从语义上说是幂等的但如果你的业务在任务执行过程中有其他副作用重试时就需要考虑是否会造成重复处理。稳妥的做法是每次请求生成一个唯一的request_id或者trace_id传过去平台可以据此做去重你也能通过这个 ID 在后面排查日志中的链路。5.2 并发与限流控制当你的批量任务从几十张扩展到几千张时并发控制就成了关键。如果不加控制一把梭把几千个请求同时发出去平台网关可能直接给你限流返回一堆 429前功尽弃。我自己的做法是用信号量做并发上限。Python 里的Semaphore可以很方便地控制同时进行中的请求数比如限制在 10 个并发即使任务队列里有几千张图真正在飞的请求也只有 10 个。from threading import Semaphore semaphore Semaphore(10) def limited_request(payload): with semaphore: return edit_image(payload[image_url], payload[operations], task_typeasync)并发数设置多少合适取决于平台方的限流配额。第一次接入时建议从小并发开始比如 5跑一轮看平均耗时和成功率再逐步调高。我见过有人把并发调到 50结果是平台限流、大量超时最后算下来总耗时反而比 10 并发更慢。稳定比激进重要得多。5.3 成本记录与用量看板如果把 API 接进生产环境后不管成本你会在月底收到一张让人心跳骤停的账单。Ace Data Cloud 控制台一般自带用量统计但你也要在业务侧建立自己的记录机制。我在每次请求发出时会把request_id、模型名、图片大小、操作类型、返回状态码、耗时写入一张数据库表。每周跑一次聚合 SQL对比平台后台的账单统计。如果两边对不上说明有请求漏记或重复计费需要尽早排查。有了这些数据你还能算出每张图的平均处理成本这对后面做定价和预算非常有价值。5.4 存储、内容安全与合规这一部分很容易被技术团队忽略但它恰恰是生产环境的底线。我做图像处理项目的时候坚持几条原则处理前先做内容合规校验不让明显违规的图片进入模型调用流程图片和结果数据加密存储对象存储桶全部设置私有读写URL 使用签名访问所有调用行为记录日志日志里保留request_id与业务订单号方便溯源模型使用要遵循平台的服务条款明确授权范围。有一个行业常识AI 生成或处理的图片在部分场景下存在版权与授权争议商用之前务必确认模型服务方是否授予商用许可证。这不只是技术问题更是业务风险。我见过有团队因为疏忽大量使用未经授权的生成图片做商业投放后来被版权方找上门处理起来非常被动。另外还要提一个经常被忽略的点用户的原始图片可能包含人脸、车牌等敏感信息。调用第三方模型服务本质上意味着把图片数据交给了外部平台因此在做隐私合规评估时必须明确告知用户数据的处理方式。如果业务涉及个人信息应该先做脱敏或获取用户授权再进入模型链路。这块不合规后续被约谈的滋味不好受。最后再聊点实际的。上手这套东西我的体感是别把 AI 能力想得太玄乎它本质就是一个有输入输出的远程服务你要做的只是把它接入你的工程体系。Ace Data Cloud 这类平台的价值恰恰是帮你把“接入”的成本降到最低。我之前自己封装过一个模型接口前后花了三天踩遍了鉴权、回调、重试的坑走 ACE 的平台通道之后一下午就把链路跑通了。如果你正在做图像类产品或者想给现有业务加一个 AI 修图能力建议不要一上来就啃模型原厂文档先把数据云平台的控制台玩明白再回来写业务代码你会发现省下来的时间够你写好几个业务模块。如果后续你又接入了新的模型记得把接口调用层和应用逻辑层解耦这样不管底层换多少个模型你的业务代码都能稳坐钓鱼台。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

ISCC 2023 Pwn方向实战解析:从栈溢出到堆利用的CTF进阶之路 2026/10/1 9:02:51

ISCC 2023 Pwn方向实战解析:从栈溢出到堆利用的CTF进阶之路

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

阅读更多 →
AI应用底座:企业AI落地的关键基础设施 2026/10/1 9:02:51

AI应用底座:企业AI落地的关键基础设施

QuickBlue 这个名字,最近在企业服务圈子里被反复提起。做企业数字化转型的朋友可能已经注意到,越来越多的团队不再追着"哪个模型更强"跑,反而开始关注"模型背后的基础设施层"该怎么搭。我在帮几家中型制造企业和零售企业…

阅读更多 →
涨跌预测模型实战:从特征工程到时间序列交叉验证的完整链路 2026/10/1 9:02:44

涨跌预测模型实战:从特征工程到时间序列交叉验证的完整链路

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

阅读更多 →
数字IC/NPU设计能力地图:RTL、验证与架构三层跃迁 2026/10/1 9:02:44

数字IC/NPU设计能力地图:RTL、验证与架构三层跃迁

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

阅读更多 →
Ubuntu 22.04 下 Sunshine+Moonlight 低延迟串流全栈部署指南 2026/10/1 9:02:44

Ubuntu 22.04 下 Sunshine+Moonlight 低延迟串流全栈部署指南

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

阅读更多 →
危化品运输车辆VOC+YOLO数据集详解与目标检测训练实践 2026/10/1 9:02:44

危化品运输车辆VOC+YOLO数据集详解与目标检测训练实践

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

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉