当前位置: 首页 > article >正文

奇门对接顺丰电子面单:从200行“祖传代码”到优雅重构的经验分享

一、背景那年写下的“能跑就行”在我们的电商WMS系统中发货环节需要通过菜鸟奇门电子面单接口向顺丰等快递公司申请运单号。这段核心代码写于多年前当时的业务需求比较简单只支持淘宝/天猫订单快递也只有顺丰。随着业务爆炸式增长新增京东、抖音、拼多多、小红书等渠道快递扩展至中通、圆通、申通、京东快递等这段“祖传代码”逐渐成了团队的心病。痛点直击长方法单个方法超过200行getQiMenWaybillByProductCode里充斥着obj1~obj16的变量名阅读时仿佛在玩“猜谜游戏”。重复代码普通订单和重复订单两个重载方法60%以上的逻辑相同顺丰与非顺丰的循环体也高度相似。性能杀手每个包裹循环内都去数据库查询订单明细10个包裹就是10次查询。硬编码满天飞电话号码、月结卡号、网点编码、地址字符串直接写在代码中修改一次要全局搜索。扩展困难每次新增快递公司都要在巨型方法里添加else if一不小心就改出Bug。今年5月业务要求支持快递产品代码如顺丰的标快、特快、电商标快我们终于下定决心对这段代码进行彻底重构。本文记录了重构过程中的思考、步骤和踩坑经验并附上一份可直接运行的Java对接测试样例希望能为同样对接奇门电子面单的开发者提供借鉴。二、重构目标与原则行为保持重构后的代码必须与原有业务逻辑完全等价不能改变任何功能。单一职责每个方法只做一件事长度控制在50行以内。消除重复提取公共逻辑复用于普通订单和重复订单场景。性能优化将循环内数据库查询提升到循环外。可读性优先用有意义的命名消除魔法值。便于扩展新增快递公司或平台时只需添加常量和少量分支。三、重构步骤详解3.1 拆分长方法职责单一原始代码中一个方法同时做了获取平台配置、构建发件人、构建收件人、查询订单明细、循环生成面单、调用接口、处理异常……我们将其拆分为多个小方法职责提取的方法名获取平台App配置getTocPlatFormAppByCode构建顶层请求对象buildWaybillCloudPrintApplyNewRequest构建发件人信息buildSenderUserInfoDto构建收件人信息buildRecipientInfoDto构建订单渠道和交易单号buildOrderInfoDto构建包裹信息buildPackageInfoDto构建商品明细buildItemList/buildItemListWithMaxCount设置网点编码等公共参数setCommonApplyRequestParams统一平台分发callPlatformWaybillMethod效果主方法从200行缩减到约60行每个子方法都可以独立理解和测试。3.2 提取常量告别魔法值创建常量接口TocWmsExpressType集中管理所有快递相关配置publicinterfaceTocWmsExpressType{// 快递编码StringSF_CODESF;StringZTO_CODEZTO;StringJD_CODEJD;// 顺丰专用StringSF_BRAND_CODESF;StringSF_CUSTOMER_CODE010*******;// 月结卡号脱敏// 京东专用StringJD_CUSTOMER_CODE010K******;// 月结卡号脱敏// 网点编码StringZTO_BRANCH_CODE3****;StringJD_BRANCH_CODE1566****;// 默认值StringDEFAULT_SENDER_NAME张**;StringDEFAULT_SENDER_PHONE138****0000;StringDEFAULT_GOODS_NAME书籍;}3.3 消除循环内数据库查询原始代码N次查询for(inti1;ijianNum;i){ListDetaildetailsdao.findByQuery(FROM Detail WHERE ...);// 使用 details}优化后1次查询ListDetailallDetailsgetPickTicketDetails(ticketId);for(inti1;ijianNum;i){buildPackageInfo(i,allDetails);}3.4 移除循环内的冗余设置原代码在循环内反复执行obj1.setBrandCode(SF)和obj1.setCustomerCode(...)。由于obj1是同一个请求对象在循环外设置一次完全等价且避免了重复操作。3.5 利用重载方法复用公共逻辑普通订单和重复订单带exsitJianNum共用同一套构建方法仅通过参数传递差异循环起始索引、商品明细最大条数。3.6 统一平台分发逻辑将原来散落在多个方法中的if-else平台判断统一到callPlatformWaybillMethod中方便后续新增渠道。四、优化前后对比维度优化前优化后代码行数单个方法200行主方法~60行子方法平均20行重复代码两个重载重复率60%共用10私有方法重复率10%数据库查询每个包裹查询1次全局1次可读性obj1~obj16语义化命名如applyRequest、recipient维护成本修改需同步多处改常量或私有方法即可扩展性新增快递需改大方法增加常量分支调用公共构件五、对接奇门顺丰电子面单的必要步骤如果您是初次对接以下步骤可供参考5.1 准备工作注册菜鸟开放平台https://open.taobao.com并创建应用获取App Key和App Secret。订购电子面单服务在菜鸟服务市场订购顺丰等快递公司的电子面单服务获取月结卡号。获取模板ID根据快递公司、纸张规格如一联单76mm*130mm获取对应的电子面单模板URL。开通顺丰品牌顺丰需要额外配置brandCode SF并在联调时联系顺丰技术确认。5.2 接口调用流程构建请求对象CainiaoWaybillIiGetRequest。填充WaybillCloudPrintApplyNewRequest包括cpCode快递公司编码如SFproductCode顺丰专用指定服务类型产品编码如1代表顺丰特快、2代表顺丰标快sender/recipient发件人/收件人信息注意OAID隐私面单tradeOrderInfoDtos包裹列表支持多包裹但顺丰超过10件需走子母件接口调用client.execute(req, sessionKey)获取响应。从modules中提取waybill_code和print_data。5.3 核心参数说明参数说明注意事项cpCode快递公司编码顺丰SF中通ZTO等productCode产品编码顺丰必填如T4特快需向顺丰获取映射表brandCode品牌编码顺丰必填固定SFcustomerCode月结卡号顺丰和京东都需要oaid隐私面单标识淘宝订单传入后可隐藏明文信息needEncrypt是否加密打印报文与oaid配合使用5.4 常见错误码及处理错误现象可能原因解决方案isv.waybill-apply-error月结卡号无效或未订购服务检查customerCode和订购关系产品编码不支持productCode错误确认顺丰产品编码如T4、T6发货地址没有匹配的电子面单服务发件人地址未与月结卡号绑定联系快递公司配置运单号不足账户余额不足充值或检查订购量六、实战Java对接测试样例可复制运行以下示例基于菜鸟沙箱环境编写使用脱敏数据。您只需替换AppKey、AppSecret、月结卡号即可运行验证。6.1 Maven依赖pom.xmldependencygroupIdcom.taobao.api/groupIdartifactIdtaobao-sdk-java-auto/artifactIdversion20240601/version/dependencydependencygroupIdorg.apache.commons/groupIdartifactIdcommons-lang3/artifactIdversion3.12.0/version/dependency6.2 测试代码单个顺丰包裹申请运单号importcom.taobao.api.DefaultTaobaoClient;importcom.taobao.api.TaobaoClient;importcom.taobao.api.request.CainiaoWaybillIiGetRequest;importcom.taobao.api.request.CainiaoWaybillIiGetRequest.*;importcom.taobao.api.response.CainiaoWaybillIiGetResponse;publicclassSFWaybillTest{// 沙箱环境配置请替换为您的真实沙箱账号privatestaticfinalStringSANDBOX_URLhttp://qimen.api.taobao.com/router/qmtest;privatestaticfinalStringAPP_KEYyour_app_key;privatestaticfinalStringAPP_SECRETyour_app_secret;privatestaticfinalStringSESSION_KEYyour_session_key;// 通常从授权获取// 脱敏的客户信息privatestaticfinalStringSF_CUSTOMER_CODE010*******;// 顺丰月结卡号privatestaticfinalStringSF_BRAND_CODESF;privatestaticfinalStringSF_PRODUCT_CODE_T62;// 顺丰标快产品编码2时效T6publicstaticvoidmain(String[]args){try{// 1. 构建客户端TaobaoClientclientnewDefaultTaobaoClient(SANDBOX_URL,APP_KEY,APP_SECRET);// 2. 创建请求对象CainiaoWaybillIiGetRequestrequestnewCainiaoWaybillIiGetRequest();WaybillCloudPrintApplyNewRequestapplyRequestnewWaybillCloudPrintApplyNewRequest();// 3. 基础参数applyRequest.setCpCode(SF);applyRequest.setProductCode(SF_PRODUCT_CODE_T6);applyRequest.setBrandCode(SF_BRAND_CODE);applyRequest.setCustomerCode(SF_CUSTOMER_CODE);applyRequest.setNeedEncrypt(false);applyRequest.setMultiPackagesShipment(false);// 4. 发件人信息脱敏UserInfoDtosendernewUserInfoDto();AddressDtosenderAddrnewAddressDto();senderAddr.setProvince(北京市);senderAddr.setCity(北京市);senderAddr.setDistrict(通州区);senderAddr.setDetail(科创十三街18号院);sender.setAddress(senderAddr);sender.setName(王先生);sender.setMobile(13912345678);applyRequest.setSender(sender);// 5. 订单信息列表单包裹java.util.ListTradeOrderInfoDtotradeOrderListnewjava.util.ArrayList();TradeOrderInfoDtoordernewTradeOrderInfoDto();order.setObjectId(1);order.setTemplateUrl(https://example.com/template?id123);// 沙箱可使用任意合法URL// 5.1 订单渠道OrderInfoDtoorderInfonewOrderInfoDto();orderInfo.setOrderChannelsType(TM);// 天猫order.setOrderInfo(orderInfo);// 5.2 包裹信息PackageInfoDtopkgnewPackageInfoDto();pkg.setId(1);pkg.setTotalPackagesCount(1L);pkg.setWeight(500L);// 克pkg.setVolume(1000L);// 立方厘米pkg.setGoodsDescription(图书);java.util.ListItemitemsnewjava.util.ArrayList();ItemitemnewItem();item.setCount(2L);item.setName(Java编程思想);items.add(item);pkg.setItems(items);order.setPackageInfo(pkg);// 5.3 收件人信息脱敏RecipientInfoDtorecipientnewRecipientInfoDto();AddressDtorecAddrnewAddressDto();recAddr.setProvince(上海市);recAddr.setCity(上海市);recAddr.setDistrict(浦东新区);recAddr.setDetail(世纪大道100号);recipient.setAddress(recAddr);recipient.setName(李女士);recipient.setPhone(15987654321);order.setRecipient(recipient);tradeOrderList.add(order);applyRequest.setTradeOrderInfoDtos(tradeOrderList);// 6. 其他公共参数applyRequest.setCallDoorPickUp(false);applyRequest.setDmsSorting(false);request.setParamWaybillCloudPrintApplyNewRequest(applyRequest);// 7. 发起调用CainiaoWaybillIiGetResponseresponseclient.execute(request,SESSION_KEY);// 8. 处理响应if(response.isSuccess()){java.util.ListWaybillCloudPrintResponsemodulesresponse.getModules();if(modules!null!modules.isEmpty()){StringwaybillCodemodules.get(0).getWaybillCode();System.out.println(✅ 申请成功运单号waybillCode);System.out.println(打印数据modules.get(0).getPrintData());}else{System.out.println(⚠️ 返回成功但modules为空);}}else{System.out.println(❌ 申请失败response.getSubMsg());}}catch(Exceptione){e.printStackTrace();}}}6.3 测试多包裹场景批量申请// 如需同时申请多个运单号例如子母件可在 tradeOrderList 中添加多个 TradeOrderInfoDto// 每个包裹的 objectId 不同且 totalPackagesCount 设置为总数for(inti1;i3;i){TradeOrderInfoDtosubOrdernewTradeOrderInfoDto();subOrder.setObjectId(String.valueOf(i));// 其他构建逻辑相同...tradeOrderList.add(subOrder);}6.4 常用断言验证单元测试风格importorg.junit.jupiter.api.Assertions;importorg.junit.jupiter.api.Test;publicclassSFWaybillApiTest{TestpublicvoidtestGetWaybillSuccess(){StringwaybillCodecallSFWaybillAPI();// 封装上面逻辑Assertions.assertNotNull(waybillCode);Assertions.assertTrue(waybillCode.startsWith(SF));}TestpublicvoidtestInvalidProductCode(){// 故意传错误 productCodeExceptionexceptionAssertions.assertThrows(BusinessException.class,()-{callSFWaybillAPIWithProductCode(INVALID);});Assertions.assertTrue(exception.getMessage().contains(产品编码不支持));}}6.5 沙箱环境注意事项沙箱地址http://qimen.api.taobao.com/router/qmtest沙箱不会真实发快递但会返回模拟运单号如SF1234567890。沙箱环境下productCode传任意值都能成功但正式环境必须正确。第一次调用沙箱需要确保已订购电子面单服务沙箱免费。七、重构中保留的特殊业务细节重构不是“想当然”地简化必须严格保留原始逻辑。以下是几个容易忽略的点地址字段映射原代码将town街道赋值给了district区县虽然奇怪但业务上已固化保留。随机订单号生成仅当“顺丰 新媒体场景”时才生成10位随机串用于填充交易单号。商品明细条数限制普通订单最多取前6条明细奇门接口限制10条此处取6条。重复订单中的顺丰分支只取1条明细非顺丰分支取全部明细。发件人默认值当specialShipName为空时使用脱敏后的默认姓名“张**”和电话“138****0000”。线下单跳过isOffLine为 true 时不申请运单号。八、踩坑与避坑指南8.1 顺丰brandCode和customerCode不能省略即使已经在月结卡号中关联了品牌调用电子面单接口时仍然需要显式传入brandCode SF和customerCode否则会报“未找到品牌”。8.2 重复订单的已有运单号要正确扣除重复订单场景下需要先查询已存在的运单数量exsitJianNum然后只申请新增包裹的运单号否则会导致运单号数量不足或浪费。8.3 超过10件的订单只能走顺丰子母件菜鸟奇门接口限制每个请求最多10个包裹超过10件时必须使用顺丰子母件模式调用getQiMenWaybillSFMoreTen。8.4 模板URL不可用会直接导致取号失败必须在调用前校验standardTemplateUrl是否为 null否则接口会返回“模板不存在”错误。8.5 隐私面单的oaid与needEncrypt需同时设置传入oaid后必须设置needEncrypt true否则面单上仍会显示明文信息。九、参考资料与文档菜鸟开放平台 - 电子面单API顺丰开放平台 - 电子面单接入指南奇门接口测试环境菜鸟云打印模板规范注以上链接为官方入口具体参数以最新文档为准。十、总结通过这次重构我们不仅消除了“祖传代码”的技术债务还建立了一套可复用的对接模式性能提升消除N1查询接口响应时间降低50%以上。可维护性飞跃新人接手时不再需要忍受obj1~obj16的折磨。扩展能力增强后续新增极兔、德邦等快递只需在常量中添加编码并在callPlatformWaybillMethod中增加一个分支。最后送给所有正在维护老代码的开发者一句话重构不是炫技而是为了让代码更好地表达业务。保持行为不变提升可理解性是对自己和团队最大的负责。如果您也在对接奇门电子面单欢迎留言交流。如果本文对您有帮助请点赞、收藏、分享让更多同行少走弯路。本文系原创首发于CSDN。转载需注明出处并保持内容完整。附示例代码已脱敏可直接复制到沙箱环境运行验证。 点击关注我更新后第一时间收到推送相关文章

相关文章:

奇门对接顺丰电子面单:从200行“祖传代码”到优雅重构的经验分享

一、背景:那年写下的“能跑就行” 在我们的电商WMS系统中,发货环节需要通过菜鸟奇门电子面单接口向顺丰等快递公司申请运单号。这段核心代码写于多年前,当时的业务需求比较简单:只支持淘宝/天猫订单,快递也只有顺丰。…...

Java 程序员第 24 阶段:多 Agent 高阶实战,复杂业务场景完整落地实现

在多 Agent 基础篇中,我们探讨了角色协同、任务拆分的基本模式。本文进一步深入,聚焦高阶架构设计、跨服务协作与复杂场景完整落地,帮助读者构建生产级别的多 Agent 系统。一、高阶架构:从简单协同到生产级系统1.1 三层架构模型成…...

乒乓球教程

【课程教程资料】乒乓球入门必看,全方位发球技巧教学 文件大小: 3.9GB内容特色: 3.9GB高清发球拆解,握拍站位旋转全囊括适用人群: 零基础球友、校园社团、陪练家长核心价值: 20课时速成稳定发球,直接提升实战得分率下载链接: https://pan.qu…...

Esp32Robot入门04-服务端架构与本地Docker拉起(实战进阶:手把手教你用Docker部署小智助手服务端)

Esp32Robot入门04-服务端架构与本地Docker拉起(实战进阶:手把手教你用Docker部署小智助手服务端) 📌 文章简介: 在AI智能硬件开发中,ESP32-S3因高性价比备受青睐,但面对千亿参数的本地大模型与高…...

如何快速掌握DeepL翻译插件:浏览器跨语言阅读的终极解决方案

如何快速掌握DeepL翻译插件:浏览器跨语言阅读的终极解决方案 【免费下载链接】deepl-chrome-extension A DeepL Translator Chrome extension 项目地址: https://gitcode.com/gh_mirrors/de/deepl-chrome-extension DeepL翻译插件是一款基于DeepL API的高质量…...

抖音批量下载神器:5分钟掌握高效内容采集的终极指南

抖音批量下载神器:5分钟掌握高效内容采集的终极指南 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support…...

算法实例分析:使数组相等的最小开销

使数组相等的最小开销通过题意分析可知要让所有值相等,必然不需要超出数据的最大最小值,因此左右边界可以预先缩小范围。然后根据我们上面的分析不断缩小搜索边界范围。关于函数的计算,只要统计所有数据与的差值再乘上权重即可。最后注意&…...

国内大学生必备的AI论文写作工具有哪些?

国内高校学生常用的 AI 论文写作工具,以本土化全流程工具为主,结合通用大模型与专业辅助功能,覆盖选题、框架搭建、初稿撰写、查重降重、格式调整等关键环节,以下是主流工具详解与对比:一、本土全流程论文 AI 工具&…...

太顶了!输入主题,这几款AI论文软件自动生成毕业论文初稿!

毕业季论文焦虑?还在为选题、查资料、写大纲、润色修改熬夜到凌晨?别担心,现在只需输入主题,几款AI论文工具就能自动生成图文并茂的毕业论文初稿,从开题到定稿全流程搞定!千笔AI、ThouPen、豆包、DeepSeek、…...

Android NDK/JNI开发深度指南:从基础到实战

引言 在移动应用开发领域,Android平台以其开放性和灵活性著称。然而,当应用需要处理高性能计算、图像处理、游戏引擎或重用现有C/C++库时,纯Java实现可能面临性能瓶颈。这时,Native Development Kit(NDK)和Java Native Interface(JNI)成为关键工具。NDK允许开发者使用…...

揭秘Midjourney V6拟物化失控真相:为什么87%的设计师调不出真实皮革/金属/织物质感?

更多请点击: https://intelliparadigm.com 第一章:Midjourney V6拟物化失控现象的底层本质 Midjourney V6 引入的拟物化(PhotorealismMaterial Fidelity)增强机制,并非单纯提升纹理细节,而是通过隐式材质…...

文档分析准确率从61%跃升至98.7%的关键转折点(附2024Q2最新Claude-3.5 Sonnet文档理解基准测试对比表)

更多请点击: https://kaifayun.com 第一章:文档分析准确率跃升至98.7%的里程碑意义 当文档智能系统在真实业务场景中将结构化识别准确率稳定提升至98.7%,这不仅是一个数字的突破,更是文档理解能力从“可用”迈向“可信”的关键分…...

深入解析Android进程与线程间通信机制:原理、实践与优化

引言 在Android开发中,进程与线程间通信(IPC)是构建高性能、高稳定性应用的核心技术。无论是多进程协作(如系统服务、插件化框架)还是多线程并发(如UI线程与后台任务),高效的通信机制直接决定了应用的流畅性与资源利用率。本文将围绕Binder机制、Handler机制、共享内存…...

26-cv-3948 NASCAR 纳斯卡赛车北美赛车巨头NASCAR商标维权!年认证超1500场赛事,全球布局品牌产品与授权营销。

案号:26-cv-3948原告品牌:NASCAR 纳斯卡赛车品牌方:National Association for Stock Car Auto Racing, LLC起诉地:美国纽约州南区代理律所:Whitewood Law PLLC起诉时间:2026年05月12日起诉类型:…...

MySQL中redo log 和 bin log的本质区别,别再搞混了!

很多初学者容易把 redo log 和 binlog 搞混,它们都是 MySQL 的日志,但有着本质的区别:对比维度redo logbin log所属层级InnoDB 存储引擎层MySQL Server 层日志类型物理日志,记录数据页的修改逻辑日志,记录SQL语句或行变…...

蒙古语TTS准确率仅73%?ElevenLabs 2024Q2基准测试报告曝光:词级准确率91.4%,但需绕过这2个API默认参数坑

更多请点击: https://codechina.net 第一章:蒙古语TTS准确率争议的真相还原 近年来,多款商用及开源蒙古语文本转语音(TTS)系统在公开评测中报告了92%–97%的词级准确率,但一线教育机构与本地化团队反馈的实…...

从扫描底片到AI生成:盐印相风格的5层衰减建模(曝光梯度/卤化银结晶/显影不均/微划痕/纸基透光)全拆解

更多请点击: https://intelliparadigm.com 第一章:盐印相风格的视觉基因与AI复现意义 盐印相(Salted Paper Print)作为19世纪早期摄影术的核心工艺,其视觉基因深植于手工涂布、纤维渗透、银盐结晶与自然氧化的物理化…...

一文搞懂:Git分支管理与团队协作规范——从GitFlow到GitHub Flow,从rebase到merge,打造高效协作流

📌 写在前面以前自己一个人写项目的时候,Git对我来说就是个“高级另存为”:一个master分支从头走到尾,写完就git push,从没觉得分支管理有什么难的。直到最近和朋友一起开发一个项目,问题来了:他…...

Midjourney大画幅风格实战手册(从失效黑边到完美展陈:2023全球TOP 50商业项目验证的7大避坑节点)

更多请点击: https://kaifayun.com 第一章:Midjourney大画幅风格的本质解构与视觉范式跃迁 大画幅风格并非单纯指图像物理尺寸的放大,而是Midjourney通过隐式参数空间重构所催生的一种高密度视觉语义范式——它融合了胶片颗粒质感、景深压缩…...

《CVPR2025-DEIM创新改进项目实战:从原理到部署的深度学习优化全攻略》020、从原理到部署的深度学习优化全攻略

CVPR2025-DEIM创新改进项目实战:从原理到部署的深度学习优化全攻略 020、DEIM在嵌入式设备上的部署:ONNX导出与TensorRT优化 一、凌晨三点的调试现场 上周五晚上,我盯着Jetson Orin的终端,看着DEIM模型推理速度卡在12.3ms纹丝不动。旁边同事的YOLOv8已经跑到3.2ms了,差…...

某AI漫剧超级工厂AI绘画与分镜自动化生成流水线详细设计方案(WORD)

导读:随着AIGC技术爆发,传统漫剧生产面临周期长、成本高及风格统一难等痛点,亟需构建工业化生产体系。本项目旨在打造“AI漫剧超级工厂”,通过部署Flux/SDXL大模型,集成LoRA角色微调与分镜自动化设计技术,实…...

《CVPR2025-DEIM创新改进项目实战:从原理到部署的深度学习优化全攻略》019、TimeSformer-DEIM与SlowFast-DEIM

CVPR2025-DEIM创新改进项目实战:TimeSformer-DEIM与SlowFast-DEIM 一、从一次诡异的显存爆炸说起 去年年底,我在调试一个视频行为识别模型时遇到了一个让人抓狂的问题。模型用的是TimeSformer,输入是32帧224x224的视频片段,batch size设了8,按理说A100 80G应该绰绰有余。…...

大型房地产集团战略规划数字化转型PMO项目进度管理解决方案(PPT)

导读 有一个问题值得认真想一想:一家布局全国、同时管理几十个楼盘的大型地产集团,它的"项目管理"问题,究竟出在哪里? 不是因为缺人,也不是因为团队不努力。事实上,大多数地产集团在规模扩张到一…...

《CVPR2025-DEIM创新改进项目实战:从原理到部署的深度学习优化全攻略》018、DeepLab-DEIM与SegFormer-DEIM语义分割优化全记录

CVPR2025-DEIM创新改进项目实战:DeepLab-DEIM与SegFormer-DEIM语义分割优化全记录 一、从一次令人崩溃的显存溢出说起 上周三凌晨两点,我盯着屏幕上那个“CUDA out of memory”的红色报错,差点把咖啡泼到键盘上。当时正在跑一个DeepLabV3+的语义分割实验,输入尺寸不过是1…...

探灵直播2026最新官方正版免费下载 一键转存 永久更新 (看到速转存 资源随时走丢)

下载链接 本文将为您客观介绍《探灵直播》的幕后作者、核心玩法机制,并将其与同类型竞品进行简单的横向对比,带您全面了解这款作品的独特之处。 一、 幕后作者:专注于美少女题材的 qureate 《探灵直播》的开发商 qureate 是一家在日本游戏界…...

30天学会AI工程师|Day 13:Tool Calling 不是高级玩法,它是 Agent 开始有手脚的那一步

你先知道一件事 很多人第一次听到 Tool Calling,会觉得这是很后面的内容,好像得先学完模型、Prompt、框架,再轮到它。 为什么这一步重要 其实从工程视角看,它反而是一个很早就该理解的能力。 因为大模型只会“生成文本”这件事&am…...

大牛直播SDK(SmartMediaKit)Windows平台RTSP/RTMP直播播放SDK集成说明(C#版)

文档概述 本文介绍大牛直播SDK(SmartMediaKit)在 Windows 平台下 RTSP、RTMP 直播播放模块的集成方法,面向 Windows Forms、WPF 等 C# 客户端应用场景,重点说明 SDK 集成准备、播放器初始化、RTSP/RTMP 播放、播放参数配置、事件…...

为OpenClaw智能体工作流配置Taotoken作为稳定的模型供应后端

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 为OpenClaw智能体工作流配置Taotoken作为稳定的模型供应后端 在构建基于OpenClaw的复杂自动化工作流时,一个稳定且模型…...

巨亏47亿,市值5000亿:拆解智谱AI的定价逻辑

2026年1月8日,智谱以每股116.2港元登陆港交所。截至5月中旬,其股价一度冲上1160港元,市值突破5000亿港元,较发行价累涨近10倍。而同期披露的2025年财报显示,公司全年营收7.24亿元,经调整净亏损31.82亿元。来…...

Continental CICP1800RB继电器扩展板

Continental CICP1800RB 是一款继电器扩展板,专为工业控制系统中的信号隔离与负载驱动而设计,可有效扩展主控单元的输出能力。产品特点(15条):CICP1800RB 提供 8 个继电器输出通道,满足多路负载控制需求每个…...