<?xml version="1.0" encoding="utf-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><title>码栈工坊_源代码分享,技术文章,精品素材,网站模板,网站源码,建站源码,模板下载</title><link>https://www.codepub.top/</link><description>代码分享的平台_开源项目_网站模板_网站源码资源下载</description><item><title>一个基于 Laravel 框架的设备报修管理系统 EquipFlow</title><link>https://www.codepub.top/post/711.html</link><description>&lt;p style=&quot;margin: 0px 0px 16px; font-size: 14px; line-height: 1.9; text-align: justify; padding: 0px; visibility: visible;&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;今天给大伙儿推荐一个开源项目 ——&amp;nbsp;&lt;/span&gt;&lt;strong style=&quot;color: rgb(92, 60, 42); visibility: visible;&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;一个基于 Laravel 框架的设备报修管理系统 EquipFlow&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;。&lt;/span&gt;&lt;span style=&quot;background: #F1EADD; color: #5C3C2A; padding: 2px 6px; border-radius: 4px; font-family: &amp;quot;SF Mono&amp;quot;, Consolas, Monaco, monospace; font-size: 13px; font-weight: 600; visibility: visible;&quot; class=&quot;js_darkmode__2&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;EquipFlow&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;&amp;nbsp;是一套前后端分离的设备报修管理系统，专门用来管理企业、学校或组织内部的设备报修与维护流程。 想深入了解的同学，建议收藏这篇。&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 16px; font-size: 14px; line-height: 1.9; text-align: justify; padding: 0px; visibility: visible;&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;项目地址：&lt;/span&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;&lt;br style=&quot;visibility: visible;&quot;/&gt;&lt;/span&gt;&lt;span style=&quot;color: #5C3C2A; font-weight: 600; visibility: visible;&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;https://github.com/tina5199676/equipflow&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;section style=&quot;margin-top: 16px; margin-bottom: 32px; padding: 0px; visibility: visible;&quot;&gt;&lt;section style=&quot;display: flex; align-items: center; gap: 16px; margin-bottom: 24px; visibility: visible;&quot;&gt;&lt;section style=&quot;text-align: center; flex-shrink: 0; visibility: visible;&quot;&gt;&lt;p style=&quot;margin: 0px; font-size: 28px; font-weight: 900; color: rgb(92, 60, 42); line-height: 1; letter-spacing: -2px; visibility: visible;&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;01&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0px; font-size: 8px; font-weight: 700; color: rgb(216, 201, 176); letter-spacing: 2px; visibility: visible;&quot; class=&quot;js_darkmode__3&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;PART&lt;/span&gt;&lt;/p&gt;&lt;/section&gt;&lt;span style=&quot;width: 1px; height: 36px; background: #E5DDCA; flex-shrink: 0; visibility: visible;&quot; class=&quot;js_darkmode__4&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;&lt;br style=&quot;visibility: visible;&quot;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;section style=&quot;visibility: visible;&quot;&gt;&lt;p style=&quot;margin: 0px 0px 1px; font-size: 17px; font-weight: 900; color: rgb(58, 46, 37); letter-spacing: 0.3px; visibility: visible;&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;项目是什么&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0px; font-size: 11px; font-weight: 600; color: rgb(158, 131, 108); letter-spacing: 1.5px; visibility: visible;&quot; class=&quot;js_darkmode__5&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;项目是什么&lt;/span&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;&lt;p style=&quot;margin-bottom: 16px; font-size: 14px; line-height: 1.9; text-align: justify; padding: 0px; visibility: visible;&quot;&gt;&lt;span style=&quot;background: #F1EADD; color: #5C3C2A; padding: 2px 6px; border-radius: 4px; font-family: &amp;quot;SF Mono&amp;quot;, Consolas, Monaco, monospace; font-size: 13px; font-weight: 600; visibility: visible;&quot; class=&quot;js_darkmode__6&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;EquipFlow&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;&amp;nbsp;是一套前后端分离的设备报修管理系统，专门用来管理企业、学校或组织内部的设备报修与维护流程。&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-bottom: 16px; font-size: 14px; line-height: 1.9; text-align: justify; padding: 0px; visibility: visible;&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;它的后端用 PHP + Laravel 11 提供 RESTful API，前端用 Vue 3 + &lt;span class=&quot;&quot;&gt;Vuetify&lt;/span&gt; 打造现代化响应式界面，二者完全解耦，可以独立开发、独立部署。&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-bottom: 16px; font-size: 14px; line-height: 1.9; text-align: justify; padding: 0px; visibility: visible;&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;一句话定位：把「设备坏了 → 谁报修 → 谁处理 → 处理到哪一步」这条链路全部线上化、可追溯。适合需要一个轻量内部报修工具、又想直接拿到可运行源码练手或二次开发的团队。&lt;/span&gt;&lt;/p&gt;&lt;/section&gt;&lt;/p&gt;&lt;p&gt;&lt;section style=&quot;display: flex; align-items: center; gap: 16px; margin-bottom: 24px; visibility: visible;&quot;&gt;&lt;section style=&quot;text-align: center; flex-shrink: 0; visibility: visible;&quot;&gt;&lt;p style=&quot;margin: 0px; font-size: 28px; font-weight: 900; color: rgb(92, 60, 42); line-height: 1; letter-spacing: -2px; visibility: visible;&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;02&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0px; font-size: 8px; font-weight: 700; color: rgb(216, 201, 176); letter-spacing: 2px; visibility: visible;&quot; class=&quot;js_darkmode__7&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;PART&lt;/span&gt;&lt;/p&gt;&lt;/section&gt;&lt;span style=&quot;width: 1px; height: 36px; background: #E5DDCA; flex-shrink: 0; visibility: visible;&quot; class=&quot;js_darkmode__8&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;&lt;br style=&quot;visibility: visible;&quot;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;section style=&quot;visibility: visible;&quot;&gt;&lt;p style=&quot;margin: 0px 0px 1px; font-size: 17px; font-weight: 900; color: rgb(58, 46, 37); letter-spacing: 0.3px; visibility: visible;&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;核心功能&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0px; font-size: 11px; font-weight: 600; color: rgb(158, 131, 108); letter-spacing: 1.5px; visibility: visible;&quot; class=&quot;js_darkmode__9&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;核心功能&lt;/span&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 8px; font-size: 14px; line-height: 1.9; text-align: justify; padding: 0px; visibility: visible;&quot;&gt;&lt;span style=&quot;color: #5C3C2A; font-weight: 700; margin-right: 6px; visibility: visible;&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;•&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;前后端完全分离架构：&lt;span style=&quot;font-size: 13px; background-color: #F1EADD; color: #5C3C2A; font-weight: 600; visibility: visible;&quot; class=&quot;js_darkmode__10&quot;&gt;Vue 3&lt;/span&gt;&amp;nbsp;前端 +&amp;nbsp;&lt;span style=&quot;font-size: 13px; background-color: #F1EADD; color: #5C3C2A; font-weight: 600; visibility: visible;&quot; class=&quot;js_darkmode__11&quot;&gt;Laravel&lt;/span&gt;&amp;nbsp;后端&amp;nbsp;&lt;span style=&quot;font-size: 13px; background-color: #F1EADD; color: #5C3C2A; font-weight: 600; visibility: visible;&quot; class=&quot;js_darkmode__12&quot;&gt;RESTful API&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 8px; font-size: 14px; line-height: 1.9; text-align: justify; padding: 0px; visibility: visible;&quot;&gt;&lt;span style=&quot;color: #5C3C2A; font-weight: 700; margin-right: 6px; visibility: visible;&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;•&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;仪表板 KPI 统计：总案件数、待处理、已完成、逾期案件一目了然&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin:0 0 8px;font-size:14px;line-height:1.9;text-align:justify;padding:0;&quot;&gt;&lt;span style=&quot;color:#5C3C2A;font-weight:700;margin-right:6px;&quot;&gt;•&lt;/span&gt;实时显示今日新增案件与最新报修动态&lt;/p&gt;&lt;p style=&quot;margin:0 0 8px;font-size:14px;line-height:1.9;text-align:justify;padding:0;&quot;&gt;&lt;span style=&quot;color:#5C3C2A;font-weight:700;margin-right:6px;&quot;&gt;•&lt;/span&gt;报修单全流程管理：新增、搜索、状态筛选、详情查看、删除&lt;/p&gt;&lt;p style=&quot;margin:0 0 8px;font-size:14px;line-height:1.9;text-align:justify;padding:0;&quot;&gt;&lt;span style=&quot;color:#5C3C2A;font-weight:700;margin-right:6px;&quot;&gt;•&lt;/span&gt;报修状态流转：&lt;span style=&quot;font-size: 13px;background-color: #F1EADD;color: #5C3C2A;font-weight: 600;&quot; class=&quot;js_darkmode__13&quot;&gt;pending → processing → done / cancelled&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin:0 0 8px;font-size:14px;line-height:1.9;text-align:justify;padding:0;&quot;&gt;&lt;span style=&quot;color:#5C3C2A;font-weight:700;margin-right:6px;&quot;&gt;•&lt;/span&gt;设备台账管理：名称、类型、位置，状态追踪（正常 / 维修中 / 故障）&lt;/p&gt;&lt;p style=&quot;margin:0 0 8px;font-size:14px;line-height:1.9;text-align:justify;padding:0;&quot;&gt;&lt;span style=&quot;color:#5C3C2A;font-weight:700;margin-right:6px;&quot;&gt;•&lt;/span&gt;多角色权限：`&lt;span style=&quot;font-size: 13px;background-color: #F1EADD;color: #5C3C2A;font-weight: 600;&quot; class=&quot;js_darkmode__14&quot;&gt;admin 管理员 / staff 员工 / technician&lt;/span&gt;` 维修人员&lt;/p&gt;&lt;p style=&quot;margin:0 0 8px;font-size:14px;line-height:1.9;text-align:justify;padding:0;&quot;&gt;&lt;span style=&quot;color:#5C3C2A;font-weight:700;margin-right:6px;&quot;&gt;•&lt;/span&gt;报修操作留痕：&lt;span style=&quot;font-size: 13px;background-color: #F1EADD;color: #5C3C2A;font-weight: 600;&quot; class=&quot;js_darkmode__15&quot;&gt;Repair_logs&lt;/span&gt;&amp;nbsp;记录每次状态变更、指派与备注&lt;/p&gt;&lt;p style=&quot;margin:0 0 8px;font-size:14px;line-height:1.9;text-align:justify;padding:0;&quot;&gt;&lt;span style=&quot;color:#5C3C2A;font-weight:700;margin-right:6px;&quot;&gt;•&lt;/span&gt;响应式现代化 UI（&lt;span style=&quot;font-size: 13px;background-color: #F1EADD;color: #5C3C2A;font-weight: 600;&quot; class=&quot;js_darkmode__16&quot;&gt;Vuetify&lt;/span&gt;），电脑与手机均可用&lt;/p&gt;&lt;p style=&quot;margin:0 0 8px;font-size:14px;line-height:1.9;text-align:justify;padding:0;&quot;&gt;&lt;span style=&quot;color:#5C3C2A;font-weight:700;margin-right:6px;&quot;&gt;•&lt;/span&gt;&lt;span style=&quot;font-size: 13px;background-color: #F1EADD;color: #5C3C2A;font-weight: 600;&quot; class=&quot;js_darkmode__17&quot;&gt;Mock&lt;/span&gt;&amp;nbsp;资料模式，便于前端脱离后端独立开发&lt;/p&gt;&lt;p style=&quot;margin:0 0 8px;font-size:14px;line-height:1.9;text-align:justify;padding:0;&quot;&gt;&lt;span style=&quot;color:#5C3C2A;font-weight:700;margin-right:6px;&quot;&gt;•&lt;/span&gt;&lt;span style=&quot;font-size: 13px;background-color: #F1EADD;color: #5C3C2A;font-weight: 600;&quot; class=&quot;js_darkmode__18&quot;&gt;Laravel Sanctum&lt;/span&gt;&amp;nbsp;Token 认证保障接口安全&lt;/p&gt;&lt;p style=&quot;margin:0 0 8px;font-size:14px;line-height:1.9;text-align:justify;padding:0;&quot;&gt;&lt;span style=&quot;color:#5C3C2A;font-weight:700;margin-right:6px;&quot;&gt;•&lt;/span&gt;配套 &lt;span class=&quot;&quot;&gt;Dashboard&lt;/span&gt; 统计接口，聚合案件各项指标&lt;/p&gt;&lt;p&gt;&lt;section style=&quot;margin-top:48px;margin-bottom:32px;padding:0;&quot;&gt;&lt;section style=&quot;display:flex;align-items:center;gap:16px;margin-bottom:24px;&quot;&gt;&lt;section style=&quot;text-align:center;flex-shrink:0;&quot;&gt;&lt;p style=&quot;margin:0;font-size:28px;font-weight:900;color:#5C3C2A;line-height:1;letter-spacing:-2px;&quot;&gt;03&lt;/p&gt;&lt;p style=&quot;margin:0;font-size:8px;font-weight:700;color:#D8C9B0;letter-spacing:2px;&quot; class=&quot;js_darkmode__19&quot;&gt;PART&lt;/p&gt;&lt;/section&gt;&lt;span style=&quot;width:1px;height:36px;background:#E5DDCA;flex-shrink:0;&quot; class=&quot;js_darkmode__20&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;section&gt;&lt;p style=&quot;margin:0 0 1px;font-size:17px;font-weight:900;color:#3A2E25;letter-spacing:0.3px;&quot;&gt;技术栈&lt;/p&gt;&lt;p style=&quot;margin:0;font-size:11px;font-weight:600;color:#9E836C;letter-spacing:1.5px;&quot; class=&quot;js_darkmode__21&quot;&gt;TECH STACK · 技术选型&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;&lt;section style=&quot;margin-bottom:24px;overflow-x:auto;&quot;&gt;&lt;table width=&quot;100&quot;&gt;&lt;thead&gt;&lt;tr class=&quot;firstRow&quot;&gt;&lt;th style=&quot;background:#5C3C2A;color:#fff;font-weight:700;padding:8px 12px;text-align:left;&quot;&gt;&lt;section&gt;层级&lt;/section&gt;&lt;/th&gt;&lt;th style=&quot;background:#5C3C2A;color:#fff;font-weight:700;padding:8px 12px;text-align:left;&quot;&gt;&lt;section&gt;技术选型&lt;/section&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:8px 12px;border-bottom:1px solid #E5DDCA;color:#43342A;&quot; class=&quot;js_darkmode__22&quot;&gt;&lt;section&gt;前端&lt;/section&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px 12px;border-bottom:1px solid #E5DDCA;color:#43342A;&quot; class=&quot;js_darkmode__23&quot;&gt;&lt;section&gt;Vue 3（Composition API）、Vue Router、Pinia、Vuetify、Axios&lt;/section&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding:8px 12px;border-bottom:1px solid #E5DDCA;color:#43342A;background:#F7F2E9;&quot; class=&quot;js_darkmode__24&quot;&gt;&lt;section&gt;后端&lt;/section&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px 12px;border-bottom:1px solid #E5DDCA;color:#43342A;background:#F7F2E9;&quot; class=&quot;js_darkmode__25&quot;&gt;&lt;section&gt;PHP 8.2+、Laravel 11、SQLite（开发环境）&lt;/section&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding:8px 12px;border-bottom:1px solid #E5DDCA;color:#43342A;&quot; class=&quot;js_darkmode__26&quot;&gt;&lt;section&gt;认证&lt;/section&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px 12px;border-bottom:1px solid #E5DDCA;color:#43342A;&quot; class=&quot;js_darkmode__27&quot;&gt;&lt;section&gt;Laravel Sanctum&lt;/section&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding:8px 12px;border-bottom:1px solid #E5DDCA;color:#43342A;background:#F7F2E9;&quot; class=&quot;js_darkmode__28&quot;&gt;&lt;section&gt;接口&lt;/section&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px 12px;border-bottom:1px solid #E5DDCA;color:#43342A;background:#F7F2E9;&quot; class=&quot;js_darkmode__29&quot;&gt;&lt;section&gt;RESTful API&lt;/section&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding:8px 12px;border-bottom:1px solid #E5DDCA;color:#43342A;&quot; class=&quot;js_darkmode__30&quot;&gt;&lt;section&gt;构建&lt;/section&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px 12px;border-bottom:1px solid #E5DDCA;color:#43342A;&quot; class=&quot;js_darkmode__31&quot;&gt;&lt;section&gt;Vite / npm（前端）、Composer / Artisan（后端）&lt;/section&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/section&gt;&lt;section style=&quot;margin-top:48px;margin-bottom:32px;padding:0;&quot;&gt;&lt;section style=&quot;display:flex;align-items:center;gap:16px;margin-bottom:24px;&quot;&gt;&lt;section style=&quot;text-align:center;flex-shrink:0;&quot;&gt;&lt;p style=&quot;margin:0;font-size:28px;font-weight:900;color:#5C3C2A;line-height:1;letter-spacing:-2px;&quot;&gt;04&lt;/p&gt;&lt;p style=&quot;margin:0;font-size:8px;font-weight:700;color:#D8C9B0;letter-spacing:2px;&quot; class=&quot;js_darkmode__32&quot;&gt;PART&lt;/p&gt;&lt;/section&gt;&lt;span style=&quot;width:1px;height:36px;background:#E5DDCA;flex-shrink:0;&quot; class=&quot;js_darkmode__33&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;section&gt;&lt;p style=&quot;margin:0 0 1px;font-size:17px;font-weight:900;color:#3A2E25;letter-spacing:0.3px;&quot;&gt;架构设计&lt;/p&gt;&lt;p style=&quot;margin:0;font-size:11px;font-weight:600;color:#9E836C;letter-spacing:1.5px;&quot; class=&quot;js_darkmode__34&quot;&gt;架构设计&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;&lt;p style=&quot;margin-bottom:16px;font-size:14px;line-height:1.9;text-align:justify;padding:0;&quot;&gt;系统采用标准的前后端分离架构：前端&amp;nbsp;&lt;span style=&quot;background:#F1EADD;color:#5C3C2A;padding:2px 6px;border-radius:4px;font-family:&amp;#39;SF Mono&amp;#39;,Consolas,Monaco,monospace;font-size:13px;font-weight:600;&quot; class=&quot;js_darkmode__35&quot;&gt;Vue 3&lt;/span&gt;&amp;nbsp;通过&amp;nbsp;&lt;span style=&quot;background:#F1EADD;color:#5C3C2A;padding:2px 6px;border-radius:4px;font-family:&amp;#39;SF Mono&amp;#39;,Consolas,Monaco,monospace;font-size:13px;font-weight:600;&quot; class=&quot;js_darkmode__36&quot;&gt;Axios&lt;/span&gt;&amp;nbsp;调用后端&amp;nbsp;&lt;span style=&quot;background:#F1EADD;color:#5C3C2A;padding:2px 6px;border-radius:4px;font-family:&amp;#39;SF Mono&amp;#39;,Consolas,Monaco,monospace;font-size:13px;font-weight:600;&quot; class=&quot;js_darkmode__37&quot;&gt;Laravel&lt;/span&gt;&amp;nbsp;暴露的 REST 接口，认证走&amp;nbsp;&lt;span style=&quot;background:#F1EADD;color:#5C3C2A;padding:2px 6px;border-radius:4px;font-family:&amp;#39;SF Mono&amp;#39;,Consolas,Monaco,monospace;font-size:13px;font-weight:600;&quot; class=&quot;js_darkmode__38&quot;&gt;Laravel Sanctum&lt;/span&gt;&amp;nbsp;颁发的 Token，数据落地在 SQLite，开发阶段开箱即用。&lt;/p&gt;&lt;p style=&quot;margin-bottom:16px;font-size:14px;line-height:1.9;text-align:justify;padding:0;&quot;&gt;核心数据模型围绕四张表展开：&lt;span style=&quot;background:#F1EADD;color:#5C3C2A;padding:2px 6px;border-radius:4px;font-family:&amp;#39;SF Mono&amp;#39;,Consolas,Monaco,monospace;font-size:13px;font-weight:600;&quot; class=&quot;js_darkmode__39&quot;&gt;Users&lt;/span&gt;（人员与角色）、&lt;span style=&quot;background:#F1EADD;color:#5C3C2A;padding:2px 6px;border-radius:4px;font-family:&amp;#39;SF Mono&amp;#39;,Consolas,Monaco,monospace;font-size:13px;font-weight:600;&quot; class=&quot;js_darkmode__40&quot;&gt;Equipment&lt;/span&gt;（设备台账）、&lt;span style=&quot;background:#F1EADD;color:#5C3C2A;padding:2px 6px;border-radius:4px;font-family:&amp;#39;SF Mono&amp;#39;,Consolas,Monaco,monospace;font-size:13px;font-weight:600;&quot; class=&quot;js_darkmode__41&quot;&gt;Repairs&lt;/span&gt;（报修单）以及&amp;nbsp;&lt;span style=&quot;background:#F1EADD;color:#5C3C2A;padding:2px 6px;border-radius:4px;font-family:&amp;#39;SF Mono&amp;#39;,Consolas,Monaco,monospace;font-size:13px;font-weight:600;&quot; class=&quot;js_darkmode__42&quot;&gt;Repair_logs&lt;/span&gt;（操作纪记录），通过外键把报修单、设备与人员关联起来，实现完整的报修闭环与审计留痕。&lt;/p&gt;&lt;section style=&quot;margin-top:48px;margin-bottom:32px;padding:0;&quot;&gt;&lt;section style=&quot;display:flex;align-items:center;gap:16px;margin-bottom:24px;&quot;&gt;&lt;section style=&quot;text-align:center;flex-shrink:0;&quot;&gt;&lt;p style=&quot;margin:0;font-size:28px;font-weight:900;color:#5C3C2A;line-height:1;letter-spacing:-2px;&quot;&gt;05&lt;/p&gt;&lt;p style=&quot;margin:0;font-size:8px;font-weight:700;color:#D8C9B0;letter-spacing:2px;&quot; class=&quot;js_darkmode__43&quot;&gt;PART&lt;/p&gt;&lt;/section&gt;&lt;span style=&quot;width:1px;height:36px;background:#E5DDCA;flex-shrink:0;&quot; class=&quot;js_darkmode__44&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;section&gt;&lt;p style=&quot;margin:0 0 1px;font-size:17px;font-weight:900;color:#3A2E25;letter-spacing:0.3px;&quot;&gt;快速开始&lt;/p&gt;&lt;p style=&quot;margin:0;font-size:11px;font-weight:600;color:#9E836C;letter-spacing:1.5px;&quot; class=&quot;js_darkmode__45&quot;&gt;QUICK START · 快速上手&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;&lt;p style=&quot;margin-bottom:16px;font-size:14px;line-height:1.9;text-align:justify;padding:0;&quot;&gt;后端初始化与启动：&lt;/p&gt;&lt;section style=&quot;margin:0 0 20px;border-radius:8px;overflow:hidden;background:#1E293B;box-shadow:0 4px 16px -8px rgba(15,23,42,0.4);&quot; class=&quot;js_darkmode__46&quot;&gt;&lt;section style=&quot;display:flex;align-items:center;padding:9px 14px;background:#0F172A;&quot; class=&quot;js_darkmode__47&quot;&gt;&lt;span style=&quot;display:inline-block;width:10px;height:10px;border-radius:50%;background:#FF5F56;margin-right:7px;font-size:0;line-height:0;overflow:hidden;&quot; class=&quot;js_darkmode__48&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;display:inline-block;width:10px;height:10px;border-radius:50%;background:#FFBD2E;margin-right:7px;font-size:0;line-height:0;overflow:hidden;&quot; class=&quot;js_darkmode__49&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;display:inline-block;width:10px;height:10px;border-radius:50%;background:#27C93F;font-size:0;line-height:0;overflow:hidden;&quot; class=&quot;js_darkmode__50&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;margin-left:12px;font-size:12px;color:#64748B;font-family:Consolas,Monaco,monospace;letter-spacing:1px;&quot;&gt;bash&lt;/span&gt;&lt;/section&gt;&lt;section style=&quot;padding:11px 14px;&quot;&gt;&lt;p style=&quot;margin:0;font-family:&amp;#39;SF Mono&amp;#39;,Consolas,Monaco,monospace;font-size:13px;line-height:1.6;color:#E2E8F0;white-space:pre-wrap;word-break:break-all;&quot;&gt;cd backend&lt;/p&gt;&lt;p style=&quot;margin:0;font-family:&amp;#39;SF Mono&amp;#39;,Consolas,Monaco,monospace;font-size:13px;line-height:1.6;color:#E2E8F0;white-space:pre-wrap;word-break:break-all;&quot;&gt;composer install&lt;/p&gt;&lt;p style=&quot;margin:0;font-family:&amp;#39;SF Mono&amp;#39;,Consolas,Monaco,monospace;font-size:13px;line-height:1.6;color:#E2E8F0;white-space:pre-wrap;word-break:break-all;&quot;&gt;cp .env.example .env&lt;/p&gt;&lt;p style=&quot;margin:0;font-family:&amp;#39;SF Mono&amp;#39;,Consolas,Monaco,monospace;font-size:13px;line-height:1.6;color:#E2E8F0;white-space:pre-wrap;word-break:break-all;&quot;&gt;php artisan key:generate&lt;/p&gt;&lt;p style=&quot;margin:0;font-family:&amp;#39;SF Mono&amp;#39;,Consolas,Monaco,monospace;font-size:13px;line-height:1.6;color:#E2E8F0;white-space:pre-wrap;word-break:break-all;&quot;&gt;php artisan migrate:fresh --seed&lt;/p&gt;&lt;p style=&quot;margin:0;font-family:&amp;#39;SF Mono&amp;#39;,Consolas,Monaco,monospace;font-size:13px;line-height:1.6;color:#E2E8F0;white-space:pre-wrap;word-break:break-all;&quot;&gt;php artisan serve&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;&lt;p style=&quot;margin-bottom:16px;font-size:14px;line-height:1.9;text-align:justify;padding:0;&quot;&gt;前端独立运行：&lt;/p&gt;&lt;section style=&quot;margin:0 0 20px;border-radius:8px;overflow:hidden;background:#1E293B;box-shadow:0 4px 16px -8px rgba(15,23,42,0.4);&quot; class=&quot;js_darkmode__51&quot;&gt;&lt;section style=&quot;display:flex;align-items:center;padding:9px 14px;background:#0F172A;&quot; class=&quot;js_darkmode__52&quot;&gt;&lt;span style=&quot;display:inline-block;width:10px;height:10px;border-radius:50%;background:#FF5F56;margin-right:7px;font-size:0;line-height:0;overflow:hidden;&quot; class=&quot;js_darkmode__53&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;display:inline-block;width:10px;height:10px;border-radius:50%;background:#FFBD2E;margin-right:7px;font-size:0;line-height:0;overflow:hidden;&quot; class=&quot;js_darkmode__54&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;display:inline-block;width:10px;height:10px;border-radius:50%;background:#27C93F;font-size:0;line-height:0;overflow:hidden;&quot; class=&quot;js_darkmode__55&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;margin-left:12px;font-size:12px;color:#64748B;font-family:Consolas,Monaco,monospace;letter-spacing:1px;&quot;&gt;bash&lt;/span&gt;&lt;/section&gt;&lt;section style=&quot;padding:11px 14px;&quot;&gt;&lt;p style=&quot;margin:0;font-family:&amp;#39;SF Mono&amp;#39;,Consolas,Monaco,monospace;font-size:13px;line-height:1.6;color:#E2E8F0;white-space:pre-wrap;word-break:break-all;&quot;&gt;cd frontend&lt;/p&gt;&lt;p style=&quot;margin:0;font-family:&amp;#39;SF Mono&amp;#39;,Consolas,Monaco,monospace;font-size:13px;line-height:1.6;color:#E2E8F0;white-space:pre-wrap;word-break:break-all;&quot;&gt;npm install&lt;/p&gt;&lt;p style=&quot;margin:0;font-family:&amp;#39;SF Mono&amp;#39;,Consolas,Monaco,monospace;font-size:13px;line-height:1.6;color:#E2E8F0;white-space:pre-wrap;word-break:break-all;&quot;&gt;npm run serve&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;&lt;p style=&quot;margin-bottom:16px;font-size:14px;line-height:1.9;text-align:justify;padding:0;&quot;&gt;前后端同时开发时，分别用&amp;nbsp;&lt;span style=&quot;background:#F1EADD;color:#5C3C2A;padding:2px 6px;border-radius:4px;font-family:&amp;#39;SF Mono&amp;#39;,Consolas,Monaco,monospace;font-size:13px;font-weight:600;&quot; class=&quot;js_darkmode__56&quot;&gt;php artisan serve&lt;/span&gt;（后端&amp;nbsp;&lt;span style=&quot;background:#F1EADD;color:#5C3C2A;padding:2px 6px;border-radius:4px;font-family:&amp;#39;SF Mono&amp;#39;,Consolas,Monaco,monospace;font-size:13px;font-weight:600;&quot; class=&quot;js_darkmode__57&quot;&gt;http://localhost:8000&lt;/span&gt;）和&amp;nbsp;&lt;span style=&quot;background:#F1EADD;color:#5C3C2A;padding:2px 6px;border-radius:4px;font-family:&amp;#39;SF Mono&amp;#39;,Consolas,Monaco,monospace;font-size:13px;font-weight:600;&quot; class=&quot;js_darkmode__58&quot;&gt;npm run serve&lt;/span&gt;（前端&amp;nbsp;&lt;span style=&quot;background:#F1EADD;color:#5C3C2A;padding:2px 6px;border-radius:4px;font-family:&amp;#39;SF Mono&amp;#39;,Consolas,Monaco,monospace;font-size:13px;font-weight:600;&quot; class=&quot;js_darkmode__59&quot;&gt;http://localhost:8080&lt;/span&gt;）两个终端启动即可。&lt;/p&gt;&lt;section style=&quot;margin-top:48px;margin-bottom:32px;padding:0;&quot;&gt;&lt;section style=&quot;display:flex;align-items:center;gap:16px;margin-bottom:24px;&quot;&gt;&lt;section style=&quot;text-align:center;flex-shrink:0;&quot;&gt;&lt;p style=&quot;margin:0;font-size:28px;font-weight:900;color:#5C3C2A;line-height:1;letter-spacing:-2px;&quot;&gt;06&lt;/p&gt;&lt;p style=&quot;margin:0;font-size:8px;font-weight:700;color:#D8C9B0;letter-spacing:2px;&quot; class=&quot;js_darkmode__60&quot;&gt;PART&lt;/p&gt;&lt;/section&gt;&lt;span style=&quot;width:1px;height:36px;background:#E5DDCA;flex-shrink:0;&quot; class=&quot;js_darkmode__61&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;section&gt;&lt;p style=&quot;margin:0 0 1px;font-size:17px;font-weight:900;color:#3A2E25;letter-spacing:0.3px;&quot;&gt;适用场景&lt;/p&gt;&lt;p style=&quot;margin:0;font-size:11px;font-weight:600;color:#9E836C;letter-spacing:1.5px;&quot; class=&quot;js_darkmode__62&quot;&gt;适用场景&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;&lt;p style=&quot;margin-bottom:16px;font-size:14px;line-height:1.9;text-align:justify;padding:0;&quot;&gt;EquipFlow 适合中小企业、学校实验室、园区物业等需要一套轻量内部报修系统的场景——不用复杂工单平台，自己部署就能管设备、跟进度。&lt;/p&gt;&lt;p style=&quot;margin-bottom:16px;font-size:14px;line-height:1.9;text-align:justify;padding:0;&quot;&gt;它也是一份很完整的前后端分离练手项目：无论是想学&amp;nbsp;&lt;span style=&quot;background:#F1EADD;color:#5C3C2A;padding:2px 6px;border-radius:4px;font-family:&amp;#39;SF Mono&amp;#39;,Consolas,Monaco,monospace;font-size:13px;font-weight:600;&quot; class=&quot;js_darkmode__63&quot;&gt;Laravel&lt;/span&gt;&amp;nbsp;写 API、还是想看&amp;nbsp;&lt;span style=&quot;background:#F1EADD;color:#5C3C2A;padding:2px 6px;border-radius:4px;font-family:&amp;#39;SF Mono&amp;#39;,Consolas,Monaco,monospace;font-size:13px;font-weight:600;&quot; class=&quot;js_darkmode__64&quot;&gt;Vue 3&lt;/span&gt;&amp;nbsp;+&amp;nbsp;&lt;span style=&quot;background:#F1EADD;color:#5C3C2A;padding:2px 6px;border-radius:4px;font-family:&amp;#39;SF Mono&amp;#39;,Consolas,Monaco,monospace;font-size:13px;font-weight:600;&quot; class=&quot;js_darkmode__65&quot;&gt;Pinia&lt;/span&gt;&amp;nbsp;+&amp;nbsp;&lt;span style=&quot;background:#F1EADD;color:#5C3C2A;padding:2px 6px;border-radius:4px;font-family:&amp;#39;SF Mono&amp;#39;,Consolas,Monaco,monospace;font-size:13px;font-weight:600;&quot; class=&quot;js_darkmode__66&quot;&gt;Vuetify&lt;/span&gt;&amp;nbsp;如何组织真实业务页面，都能直接 clone 下来跑通并二次开发。&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;&lt;/section&gt;&lt;/section&gt;&lt;/p&gt;&lt;p&gt;&lt;section style=&quot;display:flex;align-items:center;gap:16px;margin-bottom:24px;&quot;&gt;&lt;section style=&quot;text-align:center;flex-shrink:0;&quot;&gt;&lt;p style=&quot;margin:0;font-size:28px;font-weight:900;color:#5C3C2A;line-height:1;letter-spacing:-2px;&quot;&gt;07&lt;/p&gt;&lt;p style=&quot;margin:0;font-size:8px;font-weight:700;color:#D8C9B0;letter-spacing:2px;&quot; class=&quot;js_darkmode__67&quot;&gt;PART&lt;/p&gt;&lt;/section&gt;&lt;span style=&quot;width:1px;height:36px;background:#E5DDCA;flex-shrink:0;&quot; class=&quot;js_darkmode__68&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;section&gt;&lt;p style=&quot;margin:0 0 1px;font-size:17px;font-weight:900;color:#3A2E25;letter-spacing:0.3px;&quot;&gt;项目结构&lt;/p&gt;&lt;p style=&quot;margin:0;font-size:11px;font-weight:600;color:#9E836C;letter-spacing:1.5px;&quot; class=&quot;js_darkmode__69&quot;&gt;STRUCTURE · 目录布局&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;&lt;/p&gt;&lt;section style=&quot;margin:0 0 20px;border-radius:8px;overflow:hidden;background:#1E293B;box-shadow:0 4px 16px -8px rgba(15,23,42,0.4);&quot; class=&quot;js_darkmode__70&quot;&gt;&lt;section style=&quot;display:flex;align-items:center;padding:9px 14px;background:#0F172A;&quot; class=&quot;js_darkmode__71&quot;&gt;&lt;span style=&quot;display:inline-block;width:10px;height:10px;border-radius:50%;background:#FF5F56;margin-right:7px;font-size:0;line-height:0;overflow:hidden;&quot; class=&quot;js_darkmode__72&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;display:inline-block;width:10px;height:10px;border-radius:50%;background:#FFBD2E;margin-right:7px;font-size:0;line-height:0;overflow:hidden;&quot; class=&quot;js_darkmode__73&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;display:inline-block;width:10px;height:10px;border-radius:50%;background:#27C93F;font-size:0;line-height:0;overflow:hidden;&quot; class=&quot;js_darkmode__74&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;margin-left:12px;font-size:12px;color:#64748B;font-family:Consolas,Monaco,monospace;letter-spacing:1px;&quot;&gt;text&lt;/span&gt;&lt;/section&gt;&lt;section style=&quot;padding:11px 14px;&quot;&gt;&lt;p style=&quot;margin:0;font-family:&amp;#39;SF Mono&amp;#39;,Consolas,Monaco,monospace;font-size:13px;line-height:1.6;color:#E2E8F0;white-space:pre-wrap;word-break:break-all;&quot;&gt;equipflow/&lt;/p&gt;&lt;p style=&quot;margin:0;font-family:&amp;#39;SF Mono&amp;#39;,Consolas,Monaco,monospace;font-size:13px;line-height:1.6;color:#E2E8F0;white-space:pre-wrap;word-break:break-all;&quot;&gt;├── backend/ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# === Laravel 后端 ===&lt;/p&gt;&lt;p style=&quot;margin:0;font-family:&amp;#39;SF Mono&amp;#39;,Consolas,Monaco,monospace;font-size:13px;line-height:1.6;color:#E2E8F0;white-space:pre-wrap;word-break:break-all;&quot;&gt;│ &amp;nbsp; ├── app/&lt;/p&gt;&lt;p style=&quot;margin:0;font-family:&amp;#39;SF Mono&amp;#39;,Consolas,Monaco,monospace;font-size:13px;line-height:1.6;color:#E2E8F0;white-space:pre-wrap;word-break:break-all;&quot;&gt;│ &amp;nbsp; │ &amp;nbsp; ├── Http/Controllers/ &amp;nbsp; # API 控制器&lt;/p&gt;&lt;p style=&quot;margin:0;font-family:&amp;#39;SF Mono&amp;#39;,Consolas,Monaco,monospace;font-size:13px;line-height:1.6;color:#E2E8F0;white-space:pre-wrap;word-break:break-all;&quot;&gt;│ &amp;nbsp; │ &amp;nbsp; ├── Models/ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; # Eloquent 模型&lt;/p&gt;&lt;p style=&quot;margin:0;font-family:&amp;#39;SF Mono&amp;#39;,Consolas,Monaco,monospace;font-size:13px;line-height:1.6;color:#E2E8F0;white-space:pre-wrap;word-break:break-all;&quot;&gt;│ &amp;nbsp; │ &amp;nbsp; ├── Services/ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; # 业务逻辑&lt;/p&gt;&lt;p style=&quot;margin:0;font-family:&amp;#39;SF Mono&amp;#39;,Consolas,Monaco,monospace;font-size:13px;line-height:1.6;color:#E2E8F0;white-space:pre-wrap;word-break:break-all;&quot;&gt;│ &amp;nbsp; │ &amp;nbsp; └── Providers/&lt;/p&gt;&lt;p style=&quot;margin:0;font-family:&amp;#39;SF Mono&amp;#39;,Consolas,Monaco,monospace;font-size:13px;line-height:1.6;color:#E2E8F0;white-space:pre-wrap;word-break:break-all;&quot;&gt;│ &amp;nbsp; ├── database/&lt;/p&gt;&lt;p style=&quot;margin:0;font-family:&amp;#39;SF Mono&amp;#39;,Consolas,Monaco,monospace;font-size:13px;line-height:1.6;color:#E2E8F0;white-space:pre-wrap;word-break:break-all;&quot;&gt;│ &amp;nbsp; │ &amp;nbsp; ├── migrations/ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; # 数据表迁移&lt;/p&gt;&lt;p style=&quot;margin:0;font-family:&amp;#39;SF Mono&amp;#39;,Consolas,Monaco,monospace;font-size:13px;line-height:1.6;color:#E2E8F0;white-space:pre-wrap;word-break:break-all;&quot;&gt;│ &amp;nbsp; │ &amp;nbsp; └── seeders/ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# 测试数据&lt;/p&gt;&lt;p style=&quot;margin:0;font-family:&amp;#39;SF Mono&amp;#39;,Consolas,Monaco,monospace;font-size:13px;line-height:1.6;color:#E2E8F0;white-space:pre-wrap;word-break:break-all;&quot;&gt;│ &amp;nbsp; ├── routes/api.php &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# API 路由&lt;/p&gt;&lt;p style=&quot;margin:0;font-family:&amp;#39;SF Mono&amp;#39;,Consolas,Monaco,monospace;font-size:13px;line-height:1.6;color:#E2E8F0;white-space:pre-wrap;word-break:break-all;&quot;&gt;│ &amp;nbsp; └── artisan&lt;/p&gt;&lt;p style=&quot;margin:0;font-family:&amp;#39;SF Mono&amp;#39;,Consolas,Monaco,monospace;font-size:13px;line-height:1.6;color:#E2E8F0;white-space:pre-wrap;word-break:break-all;&quot;&gt;├── frontend/ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; # === Vue 3 前端 ===&lt;/p&gt;&lt;p style=&quot;margin:0;font-family:&amp;#39;SF Mono&amp;#39;,Consolas,Monaco,monospace;font-size:13px;line-height:1.6;color:#E2E8F0;white-space:pre-wrap;word-break:break-all;&quot;&gt;│ &amp;nbsp; ├── src/&lt;/p&gt;&lt;p style=&quot;margin:0;font-family:&amp;#39;SF Mono&amp;#39;,Consolas,Monaco,monospace;font-size:13px;line-height:1.6;color:#E2E8F0;white-space:pre-wrap;word-break:break-all;&quot;&gt;│ &amp;nbsp; │ &amp;nbsp; ├── components/ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; # 可复用组件&lt;/p&gt;&lt;p style=&quot;margin:0;font-family:&amp;#39;SF Mono&amp;#39;,Consolas,Monaco,monospace;font-size:13px;line-height:1.6;color:#E2E8F0;white-space:pre-wrap;word-break:break-all;&quot;&gt;│ &amp;nbsp; │ &amp;nbsp; ├── composable/ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; # Composition API 逻辑&lt;/p&gt;&lt;p style=&quot;margin:0;font-family:&amp;#39;SF Mono&amp;#39;,Consolas,Monaco,monospace;font-size:13px;line-height:1.6;color:#E2E8F0;white-space:pre-wrap;word-break:break-all;&quot;&gt;│ &amp;nbsp; │ &amp;nbsp; ├── services/ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; # API 服务层&lt;/p&gt;&lt;p style=&quot;margin:0;font-family:&amp;#39;SF Mono&amp;#39;,Consolas,Monaco,monospace;font-size:13px;line-height:1.6;color:#E2E8F0;white-space:pre-wrap;word-break:break-all;&quot;&gt;│ &amp;nbsp; │ &amp;nbsp; ├── stores/ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; # Pinia 状态管理&lt;/p&gt;&lt;p style=&quot;margin:0;font-family:&amp;#39;SF Mono&amp;#39;,Consolas,Monaco,monospace;font-size:13px;line-height:1.6;color:#E2E8F0;white-space:pre-wrap;word-break:break-all;&quot;&gt;│ &amp;nbsp; │ &amp;nbsp; ├── views/ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# 页面组件&lt;/p&gt;&lt;p style=&quot;margin:0;font-family:&amp;#39;SF Mono&amp;#39;,Consolas,Monaco,monospace;font-size:13px;line-height:1.6;color:#E2E8F0;white-space:pre-wrap;word-break:break-all;&quot;&gt;│ &amp;nbsp; │ &amp;nbsp; ├── App.vue&lt;/p&gt;&lt;p style=&quot;margin:0;font-family:&amp;#39;SF Mono&amp;#39;,Consolas,Monaco,monospace;font-size:13px;line-height:1.6;color:#E2E8F0;white-space:pre-wrap;word-break:break-all;&quot;&gt;│ &amp;nbsp; │ &amp;nbsp; └── main.js&lt;/p&gt;&lt;p style=&quot;margin:0;font-family:&amp;#39;SF Mono&amp;#39;,Consolas,Monaco,monospace;font-size:13px;line-height:1.6;color:#E2E8F0;white-space:pre-wrap;word-break:break-all;&quot;&gt;│ &amp;nbsp; ├── package.json&lt;/p&gt;&lt;p style=&quot;margin:0;font-family:&amp;#39;SF Mono&amp;#39;,Consolas,Monaco,monospace;font-size:13px;line-height:1.6;color:#E2E8F0;white-space:pre-wrap;word-break:break-all;&quot;&gt;│ &amp;nbsp; └── vue.config.js&lt;/p&gt;&lt;p style=&quot;margin:0;font-family:&amp;#39;SF Mono&amp;#39;,Consolas,Monaco,monospace;font-size:13px;line-height:1.6;color:#E2E8F0;white-space:pre-wrap;word-break:break-all;&quot;&gt;└── README.md&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;&lt;p&gt;&lt;section style=&quot;margin-top:48px;margin-bottom:32px;padding:0;&quot;&gt;&lt;section style=&quot;display:flex;align-items:center;gap:16px;margin-bottom:24px;&quot;&gt;&lt;section style=&quot;text-align:center;flex-shrink:0;&quot;&gt;&lt;p style=&quot;margin:0;font-size:28px;font-weight:900;color:#5C3C2A;line-height:1;letter-spacing:-2px;&quot;&gt;///&lt;/p&gt;&lt;p style=&quot;margin:0;font-size:8px;font-weight:700;color:#D8C9B0;letter-spacing:2px;&quot; class=&quot;js_darkmode__75&quot;&gt;LAST&lt;/p&gt;&lt;/section&gt;&lt;span style=&quot;width:1px;height:36px;background:#E5DDCA;flex-shrink:0;&quot; class=&quot;js_darkmode__76&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;section&gt;&lt;p style=&quot;margin:0 0 1px;font-size:17px;font-weight:900;color:#3A2E25;letter-spacing:0.3px;&quot;&gt;写在最后&lt;/p&gt;&lt;p style=&quot;margin:0;font-size:11px;font-weight:600;color:#9E836C;letter-spacing:1.5px;&quot; class=&quot;js_darkmode__77&quot;&gt;SUMMARY · 个人观点&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;&lt;p style=&quot;margin-bottom:16px;font-size:14px;line-height:1.9;text-align:justify;padding:0;&quot;&gt;感谢大家阅读，个人观点仅供参考，欢迎在评论区发表不同观点。&lt;/p&gt;&lt;/section&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Wed, 14 Oct 2026 16:59:29 +0800</pubDate></item><item><title>我用 WorkBuddy 做了个微信小程序，从开发到上线，全程拆给你看</title><link>https://www.codepub.top/post/710.html</link><description>&lt;section data-tool=&quot;mdnice编辑器&quot; data-website=&quot;https://www.mdnice.com&quot; data-pm-slice=&quot;0 0 []&quot; class=&quot;js_darkmode__0&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word; color: rgb(0, 0, 0); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0em; -webkit-text-stroke-width: 0px; white-space: normal; background: none left top / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; width: auto; font-family: PingFangSC-regular, sans-serif; font-size: 16px; line-height: 1.5em; letter-spacing: 0em; word-break: break-word; text-align: left; visibility: visible;&quot;&gt;&lt;section data-tool=&quot;mdnice编辑器&quot; data-website=&quot;https://www.mdnice.com&quot; data-pm-slice=&quot;0 0 []&quot; class=&quot;js_darkmode__1&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word; color: rgb(0, 0, 0); background: none left top / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0); width: auto; font-family: PingFangSC-regular, sans-serif; font-size: 16px; line-height: 1.5em; word-spacing: 0em; letter-spacing: 0em; word-break: break-word; text-align: left; visibility: visible;&quot;&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__2&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em; visibility: visible;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; visibility: visible;&quot;&gt;AI Coding 可以说是AI时代每个人都应该掌握的一种能力。&lt;/span&gt;&lt;/p&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__3&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em; visibility: visible;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; visibility: visible;&quot;&gt;这是一种原技能，掌握它以后，可以用来创建各种各样的工具，去解决具体的问题。并且AI 在编程这块的能力越来越强大，上手门槛大大降低，非技术同学也能靠自然语言驱动Agent，把应用做出来。&lt;/span&gt;&lt;/p&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__4&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em; visibility: visible;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; visibility: visible;&quot;&gt;之前我最推荐新手从开发web应用开始，其次才是小程序和APP，因为web最简单，环境和工具依赖最少。&lt;/span&gt;&lt;/p&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__5&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em; visibility: visible;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; visibility: visible;&quot;&gt;但最近Workbuddy在新版中已经支持在应用内开发、预览并发布微信小程序了，直接把微信小程序开发流程整合了进来，进一步降低了微信小程序的开发门槛。&lt;/span&gt;&lt;/p&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__6&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em; visibility: visible;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; visibility: visible;&quot;&gt;今天这篇文章，我手把手带大家用Workbuddy开发一款微信小程序。&lt;/span&gt;&lt;/p&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__7&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em; visibility: visible;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; visibility: visible;&quot;&gt;接下来我会使用&amp;quot;待办事项&amp;quot;这个简单的案例来进行说明，介绍在 WorkBuddy 里面完成微信小程序核心开发流程的具体步骤。&lt;/span&gt;&lt;/p&gt;&lt;h2 data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__8&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 30px 0px 15px; padding: 0px; outline: 0px; font-weight: 400; font-size: 16px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; border-color: rgb(0, 0, 0); color: rgb(230, 230, 230) !important; background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(251, 251, 251); align-items: unset; border-style: none; border-width: 1px; border-radius: 0px; box-shadow: none; display: block; flex-direction: unset; float: unset; height: auto; justify-content: unset; line-height: 1.5em; overflow: unset; text-align: left; text-shadow: none; transform: none; width: auto; -webkit-box-reflect: unset; visibility: visible;&quot;&gt;&lt;span class=&quot;js_darkmode__9&quot; style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px 30px 0px 15px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; border-color: #000000; background: none 0% 0% / auto no-repeat scroll padding-box border-box #212122; font-size: 18px; color: #FFFFFF; line-height: 2.4em; letter-spacing: 0em; border-style: none; border-width: 1px; border-radius: 0px 0px 40px; align-items: unset; box-shadow: none; display: inline-block; font-weight: bold; flex-direction: unset; float: unset; height: auto; justify-content: unset; overflow: unset; text-align: left; text-indent: 0em; text-shadow: none; transform: none; width: auto; -webkit-box-reflect: unset; visibility: visible;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; visibility: visible;&quot;&gt;工具准备&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__10&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em; visibility: visible;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; visibility: visible;&quot;&gt;你需要的工具只有两样：&lt;/span&gt;&lt;/p&gt;&lt;ol class=&quot;js_darkmode__11 list-paddingleft-2&quot; style=&quot;list-style-type: decimal;&quot;&gt;&lt;li&gt;&lt;section class=&quot;js_darkmode__12&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 5px 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(1, 1, 1); font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; font-weight: normal; visibility: visible;&quot;&gt;&lt;p class=&quot;js_darkmode__13&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em; visibility: visible;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; visibility: visible;&quot;&gt;WorkBuddy，版本需要5.6.1及以上。官网workbuddy.cn有Windows和Mac版，装好登录就行；&lt;/span&gt;&lt;/p&gt;&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section class=&quot;js_darkmode__14&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 5px 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(1, 1, 1); font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; font-weight: normal; visibility: visible;&quot;&gt;&lt;p class=&quot;js_darkmode__15&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em; visibility: visible;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; visibility: visible;&quot;&gt;一个微信账号。&lt;/span&gt;&lt;/p&gt;&lt;/section&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__16&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;暂时不需要：小程序账号（可以先用试用版）、微信开发者工具、AppID、服务器，以及任何一家大模型型的API key。&lt;/span&gt;&lt;/p&gt;&lt;h2 data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__17&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 30px 0px 15px; padding: 0px; outline: 0px; font-weight: 400; font-size: 16px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; border-color: rgb(0, 0, 0); color: rgb(230, 230, 230) !important; background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(251, 251, 251); align-items: unset; border-style: none; border-width: 1px; border-radius: 0px; box-shadow: none; display: block; flex-direction: unset; float: unset; height: auto; justify-content: unset; line-height: 1.5em; overflow: unset; text-align: left; text-shadow: none; transform: none; width: auto; -webkit-box-reflect: unset;&quot;&gt;&lt;span class=&quot;js_darkmode__18&quot; style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px 30px 0px 15px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; border-color: #000000; background: none 0% 0% / auto no-repeat scroll padding-box border-box #212122; font-size: 18px; color: #FFFFFF; line-height: 2.4em; letter-spacing: 0em; border-style: none; border-width: 1px; border-radius: 0px 0px 40px; align-items: unset; box-shadow: none; display: inline-block; font-weight: bold; flex-direction: unset; float: unset; height: auto; justify-content: unset; overflow: unset; text-align: left; text-indent: 0em; text-shadow: none; transform: none; width: auto; -webkit-box-reflect: unset;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;描述需求&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__19&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;打开Workbuddy，新建任务，切换到代码开发模式，选择小程序，点一下它就会出现在输入框里，上面还有活动报名、社区团购、门店预约、餐饮点单几个现成的例子可以点。&lt;/span&gt;&lt;/p&gt;&lt;figure data-tool=&quot;mdnice编辑器&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 10px 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; display: flex; flex-direction: column; justify-content: center; align-items: center;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;img data-src=&quot;https://mmbiz.qpic.cn/mmbiz_jpg/6Uzn2S5AAyQDFvaicZnIYr87zgHJoZ3s25WjTU3dSXibriciacg0AO91dokDz9icTQ3x6icIE7iczChflLMXkztrCdq9hArQC2mrQTI9InYYBiaJDdk/640?wx_fmt=webp&amp;amp;from=appmsg#imgIndex=1&quot; class=&quot;rich_pages wxw-img js_darkmode__20&quot; data-ratio=&quot;0.512962962962963&quot; data-type=&quot;webp&quot; data-w=&quot;1080&quot; data-imgfileid=&quot;100022241&quot; data-aistatus=&quot;1&quot; data-original-style=&quot;display: block;margin-top: 0px;margin-right: auto;margin-bottom: 0px;margin-left: auto;max-width: 100%;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;&quot; data-index=&quot;3&quot; src=&quot;https://mmbiz.qpic.cn/mmbiz_jpg/6Uzn2S5AAyQDFvaicZnIYr87zgHJoZ3s25WjTU3dSXibriciacg0AO91dokDz9icTQ3x6icIE7iczChflLMXkztrCdq9hArQC2mrQTI9InYYBiaJDdk/640?wx_fmt=webp&amp;from=appmsg&amp;tp=wxpic&amp;wxfrom=5&amp;wx_lazy=1#imgIndex=1&quot; _width=&quot;596px&quot; alt=&quot;图片&quot; data-before-load-time=&quot;1791873179641&quot; data-report-img-idx=&quot;1&quot; data-fail=&quot;0&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px auto; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; vertical-align: bottom; border-color: rgba(0, 0, 0, 0.4); height: auto !important; display: block; border-style: none; border-width: 3px; border-radius: 0px; object-fit: fill; box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px; visibility: visible !important; width: 595.984px !important;&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__21&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;你也可以直接在对话框里说「帮我做一个XX微信小程序」，记得把「微信小程序」这几个字写上，不然它可能给你做成网页。&lt;/span&gt;&lt;/p&gt;&lt;figure data-tool=&quot;mdnice编辑器&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 10px 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; display: flex; flex-direction: column; justify-content: center; align-items: center;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;img data-src=&quot;https://mmbiz.qpic.cn/mmbiz_jpg/6Uzn2S5AAyRLQBkQMbhdksSTl1yCfx9GDtkpLiaSEPjCtJWmstgAaFI5EzVEFNQAVBtlwMX8qwriahkSqWI9xHwSMbM6wFzES1CluldicSJics8/640?wx_fmt=webp&amp;amp;from=appmsg#imgIndex=2&quot; class=&quot;rich_pages wxw-img js_darkmode__22&quot; data-ratio=&quot;0.5277777777777778&quot; data-type=&quot;webp&quot; data-w=&quot;1080&quot; data-imgfileid=&quot;100022240&quot; data-aistatus=&quot;1&quot; data-original-style=&quot;display: block;margin-top: 0px;margin-right: auto;margin-bottom: 0px;margin-left: auto;max-width: 100%;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;&quot; data-index=&quot;4&quot; src=&quot;https://mmbiz.qpic.cn/mmbiz_jpg/6Uzn2S5AAyRLQBkQMbhdksSTl1yCfx9GDtkpLiaSEPjCtJWmstgAaFI5EzVEFNQAVBtlwMX8qwriahkSqWI9xHwSMbM6wFzES1CluldicSJics8/640?wx_fmt=webp&amp;from=appmsg&amp;tp=wxpic&amp;wxfrom=5&amp;wx_lazy=1#imgIndex=2&quot; _width=&quot;596px&quot; alt=&quot;图片&quot; data-before-load-time=&quot;1791873179969&quot; data-report-img-idx=&quot;2&quot; data-fail=&quot;0&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px auto; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; vertical-align: bottom; border-color: rgba(0, 0, 0, 0.4); height: auto !important; display: block; border-style: none; border-width: 3px; border-radius: 0px; object-fit: fill; box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px; visibility: visible !important; width: 595.969px !important;&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__23&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;然后选择一个本地文件夹作为项目目录，注意不要选择C盘，因为生成的代码文件都会放在这个目录里面，可能会持续变大，挤占C盘资源空间。另外把权限设置为允许完全访问，不然你得频繁的点击允许；模型这里选择GLM5.3，用好一点模型，会帮你少走一些弯路，你要相信贵有贵的道理。&lt;/span&gt;&lt;/p&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__24&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;完成这些基本设置，下面我们继续看需求应该如何描述。&lt;/span&gt;&lt;/p&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__25&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;由于待办清单这个功能非常明确，并且模型接受了大量的训练，我们只需要告诉它做一个待办清单小程序，它完全可以自己去决定做哪些功能。&lt;/span&gt;&lt;/p&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__26&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;简单描述：&lt;/span&gt;&lt;/p&gt;&lt;blockquote class=&quot;js_darkmode__27&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 20px 0px; padding: 10px 10px 10px 20px; outline: 0px; border-width: 3px; border-style: none none none solid; border-color: rgba(0, 0, 0, 0.4); position: relative; color: rgba(255, 255, 255, 0.3); font-size: 15px; text-indent: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; background: none left top / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0.05); border-radius: 0px; width: auto; height: auto; box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px; display: block; overflow: auto;&quot;&gt;&lt;p class=&quot;js_darkmode__28&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; text-indent: 0em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; font-weight: normal;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;帮我生成一个待办清单微信小程序&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__29&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;如果你想详细描述需求，可以使用计划模式先和 AI 去对齐，然后再让Workbuddy执行。&lt;/span&gt;&lt;/p&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__30&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;详细描述：&lt;/span&gt;&lt;/p&gt;&lt;blockquote class=&quot;js_darkmode__31&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 20px 0px; padding: 10px 10px 10px 20px; outline: 0px; border-width: 3px; border-style: none none none solid; border-color: rgba(0, 0, 0, 0.4); position: relative; color: rgba(255, 255, 255, 0.3); font-size: 15px; text-indent: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; background: none left top / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0.05); border-radius: 0px; width: auto; height: auto; box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px; display: block; overflow: auto;&quot;&gt;&lt;p class=&quot;js_darkmode__32&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; text-indent: 0em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; font-weight: normal;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;做一个单人使用的待办清单小程序：1）可以新增待办；2）点击待办标记完成，完成后自动移入“已完成”区域，这个区域默认折叠；3）已完成的事项可以恢复成未完成；4）删除是独立操作，需要二次确认，避免误删；5）不需要登录和多人协作。&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__33&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;是简单描述还是详细描述，可以根据我们自己的需求清晰度、复杂度进行选择。&lt;/span&gt;&lt;/p&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__34&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;strong class=&quot;js_darkmode__35&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; border-color: rgba(0, 0, 0, 0.4); color: rgb(239, 112, 96); font-weight: bold; background: none left top / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0); width: auto; height: auto; border-style: none; border-width: 3px; border-radius: 0px;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;重点是，把核心功能说清楚、界面长啥样、怎么交互、数据存哪里、约束条件是什么、以及验收标准定义清楚&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;。&lt;/span&gt;&lt;/p&gt;&lt;h2 data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__36&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 30px 0px 15px; padding: 0px; outline: 0px; font-weight: 400; font-size: 16px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; border-color: rgb(0, 0, 0); color: rgb(230, 230, 230) !important; background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(251, 251, 251); align-items: unset; border-style: none; border-width: 1px; border-radius: 0px; box-shadow: none; display: block; flex-direction: unset; float: unset; height: auto; justify-content: unset; line-height: 1.5em; overflow: unset; text-align: left; text-shadow: none; transform: none; width: auto; -webkit-box-reflect: unset;&quot;&gt;&lt;span class=&quot;js_darkmode__37&quot; style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px 30px 0px 15px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; border-color: #000000; background: none 0% 0% / auto no-repeat scroll padding-box border-box #212122; font-size: 18px; color: #FFFFFF; line-height: 2.4em; letter-spacing: 0em; border-style: none; border-width: 1px; border-radius: 0px 0px 40px; align-items: unset; box-shadow: none; display: inline-block; font-weight: bold; flex-direction: unset; float: unset; height: auto; justify-content: unset; overflow: unset; text-align: left; text-indent: 0em; text-shadow: none; transform: none; width: auto; -webkit-box-reflect: unset;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;卡片预览&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__38&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;任务执行完成后，底部会出现一个小程序卡片，点击卡片就可以在右侧看到手机样子的预览效果。&lt;/span&gt;&lt;/p&gt;&lt;figure data-tool=&quot;mdnice编辑器&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 10px 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; display: flex; flex-direction: column; justify-content: center; align-items: center;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;img data-src=&quot;https://mmbiz.qpic.cn/sz_mmbiz_jpg/6Uzn2S5AAyRrrx79XpAicS8cPp6tAvibU5AibDjgGC0Wia57NrTaPtItSoiaBF2UW7vzBg3VsG6mxywwBx85awqGE7MCb3yBiaBYlyXnUMO6VwqV0/640?wx_fmt=webp&amp;amp;from=appmsg#imgIndex=3&quot; class=&quot;rich_pages wxw-img js_darkmode__39&quot; data-ratio=&quot;0.4398148148148148&quot; data-type=&quot;webp&quot; data-w=&quot;1080&quot; data-imgfileid=&quot;100022243&quot; data-aistatus=&quot;1&quot; data-original-style=&quot;display: block;margin-top: 0px;margin-right: auto;margin-bottom: 0px;margin-left: auto;max-width: 100%;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;&quot; data-index=&quot;5&quot; src=&quot;https://mmbiz.qpic.cn/sz_mmbiz_jpg/6Uzn2S5AAyRrrx79XpAicS8cPp6tAvibU5AibDjgGC0Wia57NrTaPtItSoiaBF2UW7vzBg3VsG6mxywwBx85awqGE7MCb3yBiaBYlyXnUMO6VwqV0/640?wx_fmt=webp&amp;from=appmsg&amp;tp=wxpic&amp;wxfrom=5&amp;wx_lazy=1#imgIndex=3&quot; _width=&quot;596px&quot; alt=&quot;图片&quot; data-before-load-time=&quot;1791873181849&quot; data-report-img-idx=&quot;3&quot; data-fail=&quot;0&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px auto; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; vertical-align: bottom; border-color: rgba(0, 0, 0, 0.4); height: auto !important; display: block; border-style: none; border-width: 3px; border-radius: 0px; object-fit: fill; box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px; visibility: visible !important; width: 595.984px !important;&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__40&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;如果没有出现这个小程序卡片，并让你用微信开发者工具打开，这说明它没有按照Workbuddy托管的方式进行开发，这时候可以直接在对话框里告诉它：&lt;/span&gt;&lt;/p&gt;&lt;blockquote class=&quot;js_darkmode__41&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 20px 0px; padding: 10px 10px 10px 20px; outline: 0px; border-width: 3px; border-style: none none none solid; border-color: rgba(0, 0, 0, 0.4); position: relative; color: rgba(255, 255, 255, 0.3); font-size: 15px; text-indent: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; background: none left top / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0.05); border-radius: 0px; width: auto; height: auto; box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px; display: block; overflow: auto;&quot;&gt;&lt;p class=&quot;js_darkmode__42&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; text-indent: 0em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; font-weight: normal;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;使用Workbuddy托管链路进行小程序开发&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__43&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;通过预览，我们可以在应用内即时看到小程序页面长什么样，验证交互逻辑是否正确。这里重点验收几个功能是否正确：&lt;/span&gt;&lt;/p&gt;&lt;ul class=&quot;js_darkmode__44 list-paddingleft-2&quot; style=&quot;list-style-type: disc;&quot;&gt;&lt;li&gt;&lt;section class=&quot;js_darkmode__45&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 5px 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(1, 1, 1); font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; font-weight: normal;&quot;&gt;&lt;p class=&quot;js_darkmode__46&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;新增待办&lt;/span&gt;&lt;/p&gt;&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section class=&quot;js_darkmode__47&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 5px 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(1, 1, 1); font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; font-weight: normal;&quot;&gt;&lt;p class=&quot;js_darkmode__48&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;标记该待办事项完成&lt;/span&gt;&lt;/p&gt;&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section class=&quot;js_darkmode__49&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 5px 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(1, 1, 1); font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; font-weight: normal;&quot;&gt;&lt;p class=&quot;js_darkmode__50&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;进行中、已完成正常切换&lt;/span&gt;&lt;/p&gt;&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section class=&quot;js_darkmode__51&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 5px 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(1, 1, 1); font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; font-weight: normal;&quot;&gt;&lt;p class=&quot;js_darkmode__52&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;已完成的待办可以恢复到进行中&lt;/span&gt;&lt;/p&gt;&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section class=&quot;js_darkmode__53&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 5px 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(1, 1, 1); font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; font-weight: normal;&quot;&gt;&lt;p class=&quot;js_darkmode__54&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;删除需要二次确认&lt;/span&gt;&lt;/p&gt;&lt;/section&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__55&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;如果有功能修改，完成后，点击「刷新预览」就能看到最新的效果。&lt;/span&gt;&lt;/p&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__56&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;不过需要注意的是，这个预览是H5的效果，不是真实手机打开小程序的效果。&lt;/span&gt;&lt;strong class=&quot;js_darkmode__57&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; border-color: rgba(0, 0, 0, 0.4); color: rgb(239, 112, 96); font-weight: bold; background: none left top / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0); width: auto; height: auto; border-style: none; border-width: 3px; border-radius: 0px;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;底下也写着「预览仅做参考，可发布后扫码查看真实效果」。&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;这里有对应的解决办法，在后文会进一步介绍。&lt;/span&gt;&lt;/p&gt;&lt;figure data-tool=&quot;mdnice编辑器&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 10px 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; display: flex; flex-direction: column; justify-content: center; align-items: center;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;img data-src=&quot;https://mmbiz.qpic.cn/sz_mmbiz_jpg/6Uzn2S5AAyRpEbVpPYyIAoUsOFtxvQc23DibotdG4bxrOTvdCDWTHk1FLsoSn6ndHib4AOXEwJNu0qkiaKIaLSXic0NuwFjicNoiaqMxG2azlYNYw/640?wx_fmt=webp&amp;amp;from=appmsg#imgIndex=4&quot; class=&quot;rich_pages wxw-img js_darkmode__58&quot; data-ratio=&quot;1.318228630278064&quot; data-type=&quot;webp&quot; data-w=&quot;971&quot; data-imgfileid=&quot;100022244&quot; data-aistatus=&quot;1&quot; data-original-style=&quot;display: block;margin-top: 0px;margin-right: auto;margin-bottom: 0px;margin-left: auto;max-width: 100%;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;&quot; data-index=&quot;6&quot; src=&quot;https://mmbiz.qpic.cn/sz_mmbiz_jpg/6Uzn2S5AAyRpEbVpPYyIAoUsOFtxvQc23DibotdG4bxrOTvdCDWTHk1FLsoSn6ndHib4AOXEwJNu0qkiaKIaLSXic0NuwFjicNoiaqMxG2azlYNYw/640?wx_fmt=webp&amp;from=appmsg&amp;tp=wxpic&amp;wxfrom=5&amp;wx_lazy=1#imgIndex=4&quot; _width=&quot;596px&quot; alt=&quot;图片&quot; data-before-load-time=&quot;1791873361208&quot; data-report-img-idx=&quot;4&quot; data-fail=&quot;0&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px auto; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; vertical-align: bottom; border-color: rgba(0, 0, 0, 0.4); height: auto !important; display: block; border-style: none; border-width: 3px; border-radius: 0px; object-fit: fill; box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px; visibility: visible !important; width: 595.984px !important;&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;&lt;h2 data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__59&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 30px 0px 15px; padding: 0px; outline: 0px; font-weight: 400; font-size: 16px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; border-color: rgb(0, 0, 0); color: rgb(230, 230, 230) !important; background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(251, 251, 251); align-items: unset; border-style: none; border-width: 1px; border-radius: 0px; box-shadow: none; display: block; flex-direction: unset; float: unset; height: auto; justify-content: unset; line-height: 1.5em; overflow: unset; text-align: left; text-shadow: none; transform: none; width: auto; -webkit-box-reflect: unset;&quot;&gt;&lt;span class=&quot;js_darkmode__60&quot; style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px 30px 0px 15px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; border-color: #000000; background: none 0% 0% / auto no-repeat scroll padding-box border-box #212122; font-size: 18px; color: #FFFFFF; line-height: 2.4em; letter-spacing: 0em; border-style: none; border-width: 1px; border-radius: 0px 0px 40px; align-items: unset; box-shadow: none; display: inline-block; font-weight: bold; flex-direction: unset; float: unset; height: auto; justify-content: unset; overflow: unset; text-align: left; text-indent: 0em; text-shadow: none; transform: none; width: auto; -webkit-box-reflect: unset;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;预览发布&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__61&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;小程序功能开发完成后，点击右侧边栏分享按钮，就进入发布流程。&lt;/span&gt;&lt;/p&gt;&lt;figure data-tool=&quot;mdnice编辑器&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 10px 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; display: flex; flex-direction: column; justify-content: center; align-items: center;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;img data-src=&quot;https://mmbiz.qpic.cn/mmbiz_jpg/6Uzn2S5AAySqAfnX4N5gB1X0xnXubDX4E6lHtIcW1zdC2iam2NzzTJhK4yF1LDrL1KC4SMuiaI1wAibTkb7JpP3BYPAwhW0w7G28lSmiaRR2zz0/640?wx_fmt=webp&amp;amp;from=appmsg#imgIndex=5&quot; class=&quot;rich_pages wxw-img js_darkmode__62&quot; data-ratio=&quot;0.7925925925925926&quot; data-type=&quot;webp&quot; data-w=&quot;1080&quot; data-imgfileid=&quot;100022242&quot; data-aistatus=&quot;1&quot; data-original-style=&quot;display: block;margin-top: 0px;margin-right: auto;margin-bottom: 0px;margin-left: auto;max-width: 100%;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;&quot; data-index=&quot;7&quot; src=&quot;https://mmbiz.qpic.cn/mmbiz_jpg/6Uzn2S5AAySqAfnX4N5gB1X0xnXubDX4E6lHtIcW1zdC2iam2NzzTJhK4yF1LDrL1KC4SMuiaI1wAibTkb7JpP3BYPAwhW0w7G28lSmiaRR2zz0/640?wx_fmt=webp&amp;from=appmsg&amp;tp=wxpic&amp;wxfrom=5&amp;wx_lazy=1#imgIndex=5&quot; _width=&quot;596px&quot; alt=&quot;图片&quot; data-before-load-time=&quot;1791873362097&quot; data-report-img-idx=&quot;5&quot; data-fail=&quot;0&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px auto; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; vertical-align: bottom; border-color: rgba(0, 0, 0, 0.4); height: auto !important; display: block; border-style: none; border-width: 3px; border-radius: 0px; object-fit: fill; box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px; visibility: visible !important; width: 595.984px !important;&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__63&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;这时候，它会弹出如下弹窗，让你选择是绑定已有小程序账号还是用试用版小程序。&lt;/span&gt;&lt;/p&gt;&lt;figure data-tool=&quot;mdnice编辑器&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 10px 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; display: flex; flex-direction: column; justify-content: center; align-items: center;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;img data-src=&quot;https://mmbiz.qpic.cn/mmbiz_jpg/6Uzn2S5AAyQ8x8hic0PulX1HUicgo6qUFjk2Um4We5CZhm9UpWI3uGpPsGbicrj6GynlLGUgqoLnN5xrlPQ4KM8ibtpKFIADOqfaibz0hyvAeWXg/640?wx_fmt=webp&amp;amp;from=appmsg#imgIndex=6&quot; class=&quot;rich_pages wxw-img js_darkmode__64&quot; data-ratio=&quot;0.7722222222222223&quot; data-type=&quot;webp&quot; data-w=&quot;1080&quot; data-imgfileid=&quot;100022246&quot; data-aistatus=&quot;1&quot; data-original-style=&quot;display: block;margin-top: 0px;margin-right: auto;margin-bottom: 0px;margin-left: auto;max-width: 100%;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;&quot; data-index=&quot;8&quot; src=&quot;https://mmbiz.qpic.cn/mmbiz_jpg/6Uzn2S5AAyQ8x8hic0PulX1HUicgo6qUFjk2Um4We5CZhm9UpWI3uGpPsGbicrj6GynlLGUgqoLnN5xrlPQ4KM8ibtpKFIADOqfaibz0hyvAeWXg/640?wx_fmt=webp&amp;from=appmsg&amp;tp=wxpic&amp;wxfrom=5&amp;wx_lazy=1#imgIndex=6&quot; _width=&quot;596px&quot; alt=&quot;图片&quot; data-before-load-time=&quot;1791873362580&quot; data-report-img-idx=&quot;6&quot; data-fail=&quot;0&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px auto; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; vertical-align: bottom; border-color: rgba(0, 0, 0, 0.4); height: auto !important; display: block; border-style: none; border-width: 3px; border-radius: 0px; object-fit: fill; box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px; visibility: visible !important; width: 595.984px !important;&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__65&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;如果你已经在微信公众平台创建了微信小程序账号，可以直接选择方式一，扫码完成绑定后，就可以发布体验版本做真机测试了。&lt;/span&gt;&lt;/p&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__66&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;如果暂时没有小程序账号，就没办法绑定，但可以选择方式二，先创建14天试用版，快速验证功能。不过一旦创建了试用版，它就再也没办法绑定小程序账号了，目前不支持试用版直接转换为正式版。&lt;/span&gt;&lt;/p&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__67&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;因此，如果打算长期运营的话，一定要先去微信公众平台注册一个自己的小程序账号并绑定。&lt;/span&gt;&lt;/p&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__68&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;注册也很简单：打开微信公众平台，在账号分类这里选择小程序，然后按照流程填写相关信息就能完成注册。&lt;/span&gt;&lt;/p&gt;&lt;figure data-tool=&quot;mdnice编辑器&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 10px 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; display: flex; flex-direction: column; justify-content: center; align-items: center;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;img data-src=&quot;https://mmbiz.qpic.cn/mmbiz_jpg/6Uzn2S5AAySibLsl5MQ7iaN6mQNHftVTqHnQ8uIYS5GwuL6uYtKj5SRcclBqLOFpB0G36rlxThHABa95ecyEaNaicsgvfds8hhQEMzq530akibU/640?wx_fmt=webp&amp;amp;from=appmsg#imgIndex=7&quot; class=&quot;rich_pages wxw-img js_darkmode__69&quot; data-ratio=&quot;0.37435367114788004&quot; data-type=&quot;webp&quot; data-w=&quot;967&quot; data-imgfileid=&quot;100022245&quot; data-aistatus=&quot;1&quot; data-original-style=&quot;display: block;margin-top: 0px;margin-right: auto;margin-bottom: 0px;margin-left: auto;max-width: 100%;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;&quot; data-index=&quot;9&quot; src=&quot;https://mmbiz.qpic.cn/mmbiz_jpg/6Uzn2S5AAySibLsl5MQ7iaN6mQNHftVTqHnQ8uIYS5GwuL6uYtKj5SRcclBqLOFpB0G36rlxThHABa95ecyEaNaicsgvfds8hhQEMzq530akibU/640?wx_fmt=webp&amp;from=appmsg&amp;tp=wxpic&amp;wxfrom=5&amp;wx_lazy=1#imgIndex=7&quot; _width=&quot;596px&quot; alt=&quot;图片&quot; data-before-load-time=&quot;1791873364914&quot; data-report-img-idx=&quot;7&quot; data-fail=&quot;0&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px auto; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; vertical-align: bottom; border-color: rgba(0, 0, 0, 0.4); height: auto !important; display: block; border-style: none; border-width: 3px; border-radius: 0px; object-fit: fill; box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px; visibility: visible !important; width: 595.984px !important;&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__70&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;注册完成后，用微信扫码完成绑定。这里扫码绑定相当于把小程序账号授权给Workbuddy进行托管，它有权限上传代码进行发布。&lt;/span&gt;&lt;/p&gt;&lt;figure data-tool=&quot;mdnice编辑器&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 10px 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; display: flex; flex-direction: column; justify-content: center; align-items: center;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;img data-src=&quot;https://mmbiz.qpic.cn/mmbiz_jpg/6Uzn2S5AAyRe9eibPzEmegDaKXJRwyic6T4k04Wibf8lecUvwMfEgPIpUtSSNfibVH553djGYqLXsm7QibzEobDVibianzcrV1B0mnVcsHlYnV5sGQ/640?wx_fmt=webp&amp;amp;from=appmsg#imgIndex=8&quot; class=&quot;rich_pages wxw-img js_darkmode__71&quot; data-ratio=&quot;0.7925925925925926&quot; data-type=&quot;webp&quot; data-w=&quot;1080&quot; data-imgfileid=&quot;100022247&quot; data-aistatus=&quot;1&quot; data-original-style=&quot;display: block;margin-top: 0px;margin-right: auto;margin-bottom: 0px;margin-left: auto;max-width: 100%;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;&quot; data-index=&quot;10&quot; src=&quot;https://mmbiz.qpic.cn/mmbiz_jpg/6Uzn2S5AAyRe9eibPzEmegDaKXJRwyic6T4k04Wibf8lecUvwMfEgPIpUtSSNfibVH553djGYqLXsm7QibzEobDVibianzcrV1B0mnVcsHlYnV5sGQ/640?wx_fmt=webp&amp;from=appmsg&amp;tp=wxpic&amp;wxfrom=5&amp;wx_lazy=1#imgIndex=8&quot; _width=&quot;596px&quot; alt=&quot;图片&quot; data-before-load-time=&quot;1791873365045&quot; data-report-img-idx=&quot;8&quot; data-fail=&quot;0&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px auto; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; vertical-align: bottom; border-color: rgba(0, 0, 0, 0.4); height: auto !important; display: block; border-style: none; border-width: 3px; border-radius: 0px; object-fit: fill; box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px; visibility: visible !important; width: 595.984px !important;&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__72&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;绑定完成后，我们就可以直接在Workbuddy中完成小程序体验版、正式版的发布了。&lt;/span&gt;&lt;/p&gt;&lt;figure data-tool=&quot;mdnice编辑器&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 10px 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; display: flex; flex-direction: column; justify-content: center; align-items: center;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;img data-src=&quot;https://mmbiz.qpic.cn/mmbiz_jpg/6Uzn2S5AAyTW913AS3ic6RWic9GcRvMwlgKicebb9eUQiccjFmCaIic4j55gWxztZ0SFoBqba96uhOod0icJgheY2Z4D4kT0hfeic2IamdBWmfspNU/640?wx_fmt=webp&amp;amp;from=appmsg#imgIndex=9&quot; class=&quot;rich_pages wxw-img js_darkmode__73&quot; data-ratio=&quot;0.7962962962962963&quot; data-type=&quot;webp&quot; data-w=&quot;1080&quot; data-imgfileid=&quot;100022248&quot; data-aistatus=&quot;1&quot; data-original-style=&quot;display: block;margin-top: 0px;margin-right: auto;margin-bottom: 0px;margin-left: auto;max-width: 100%;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;&quot; data-index=&quot;11&quot; src=&quot;https://mmbiz.qpic.cn/mmbiz_jpg/6Uzn2S5AAyTW913AS3ic6RWic9GcRvMwlgKicebb9eUQiccjFmCaIic4j55gWxztZ0SFoBqba96uhOod0icJgheY2Z4D4kT0hfeic2IamdBWmfspNU/640?wx_fmt=webp&amp;from=appmsg&amp;tp=wxpic&amp;wxfrom=5&amp;wx_lazy=1#imgIndex=9&quot; _width=&quot;596px&quot; alt=&quot;图片&quot; data-before-load-time=&quot;1791873365192&quot; data-report-img-idx=&quot;9&quot; data-fail=&quot;0&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px auto; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; vertical-align: bottom; border-color: rgba(0, 0, 0, 0.4); height: auto !important; display: block; border-style: none; border-width: 3px; border-radius: 0px; object-fit: fill; box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px; visibility: visible !important; width: 595.969px !important;&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__74&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;这里我先发布体验版本，会得到一个体验版的二维码，手机扫码就可以真机预览小程序了。&lt;/span&gt;&lt;/p&gt;&lt;figure data-tool=&quot;mdnice编辑器&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 10px 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; display: flex; flex-direction: column; justify-content: center; align-items: center;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;img data-src=&quot;https://mmbiz.qpic.cn/sz_mmbiz_jpg/6Uzn2S5AAyS9YOMBCKdJZicbDPbEoYvURX2v7z8Kc2X0QGFpbK3M0icss3xedexa9KXLl13JusnlkzLXTbRVxjVtASRuxIiaKE7nicJaF7EfImA/640?wx_fmt=webp&amp;amp;from=appmsg#imgIndex=10&quot; class=&quot;rich_pages wxw-img js_darkmode__75&quot; data-ratio=&quot;2.174074074074074&quot; data-type=&quot;webp&quot; data-w=&quot;1080&quot; data-imgfileid=&quot;100022249&quot; data-aistatus=&quot;1&quot; data-original-style=&quot;display: block;margin-top: 0px;margin-right: auto;margin-bottom: 0px;margin-left: auto;max-width: 100%;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;&quot; data-index=&quot;12&quot; src=&quot;https://mmbiz.qpic.cn/sz_mmbiz_jpg/6Uzn2S5AAyS9YOMBCKdJZicbDPbEoYvURX2v7z8Kc2X0QGFpbK3M0icss3xedexa9KXLl13JusnlkzLXTbRVxjVtASRuxIiaKE7nicJaF7EfImA/640?wx_fmt=webp&amp;from=appmsg&amp;tp=wxpic&amp;wxfrom=5&amp;wx_lazy=1#imgIndex=10&quot; _width=&quot;596px&quot; alt=&quot;图片&quot; data-before-load-time=&quot;1791873365353&quot; data-report-img-idx=&quot;10&quot; data-fail=&quot;0&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px auto; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; vertical-align: bottom; border-color: rgba(0, 0, 0, 0.4); height: auto !important; display: block; border-style: none; border-width: 3px; border-radius: 0px; object-fit: fill; box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px; visibility: visible !important; width: 595.984px !important;&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__76&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;体验版本测试没有问题后，就可以发布正式版本，提交之后，需要等待微信公众平台官方审核，一般情况下，快的话1-2小时即可通过，慢的话一天内会有结果。&lt;/span&gt;&lt;/p&gt;&lt;figure data-tool=&quot;mdnice编辑器&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 10px 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; display: flex; flex-direction: column; justify-content: center; align-items: center;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;img data-src=&quot;https://mmbiz.qpic.cn/sz_mmbiz_jpg/6Uzn2S5AAyTLHMGJYbAIQFaNUvQvx6058iauDVSTAOkriaSrPex1PrC4tNIaeF8gKqHrChqtibrehLAqexNCL8xrYYk1A4v1HlO6H6SkjNcQGQ/640?wx_fmt=webp&amp;amp;from=appmsg#imgIndex=11&quot; class=&quot;rich_pages wxw-img js_darkmode__77&quot; data-ratio=&quot;0.7925925925925926&quot; data-type=&quot;webp&quot; data-w=&quot;1080&quot; data-imgfileid=&quot;100022252&quot; data-aistatus=&quot;1&quot; data-original-style=&quot;display: block;margin-top: 0px;margin-right: auto;margin-bottom: 0px;margin-left: auto;max-width: 100%;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;&quot; data-index=&quot;13&quot; src=&quot;https://mmbiz.qpic.cn/sz_mmbiz_jpg/6Uzn2S5AAyTLHMGJYbAIQFaNUvQvx6058iauDVSTAOkriaSrPex1PrC4tNIaeF8gKqHrChqtibrehLAqexNCL8xrYYk1A4v1HlO6H6SkjNcQGQ/640?wx_fmt=webp&amp;from=appmsg&amp;tp=wxpic&amp;wxfrom=5&amp;wx_lazy=1#imgIndex=11&quot; _width=&quot;596px&quot; alt=&quot;图片&quot; data-before-load-time=&quot;1791873365792&quot; data-report-img-idx=&quot;11&quot; data-fail=&quot;0&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px auto; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; vertical-align: bottom; border-color: rgba(0, 0, 0, 0.4); height: auto !important; display: block; border-style: none; border-width: 3px; border-radius: 0px; object-fit: fill; box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px; visibility: visible !important; width: 595.984px !important;&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__78&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;官方审核完成后，手机微信会收到公众平台审核结果通知。&lt;/span&gt;&lt;/p&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__79&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;如果通过，小程序就自动发布上线了，其它人就能使用我们的小程序了。在这里我们可以看到状态变成了已发布，并生成了一个正式版本的访问二维码。&lt;/span&gt;&lt;/p&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__80&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;这里要注意的是，在Workbuddy中发布正式版本有次数限制，每周最多三次。&lt;/span&gt;&lt;/p&gt;&lt;figure data-tool=&quot;mdnice编辑器&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 10px 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; display: flex; flex-direction: column; justify-content: center; align-items: center;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;img data-src=&quot;https://mmbiz.qpic.cn/sz_mmbiz_jpg/6Uzn2S5AAyRtmpBTMicVej3YNgkqXfvp1ibs3rezyraXTe16jwZLtfNObFV5sI1BVH0ziaRrvjVvfHxKTE0iaica7ER8a1ichJP8H3IWqBIqNF3VM/640?wx_fmt=webp&amp;amp;from=appmsg#imgIndex=12&quot; class=&quot;rich_pages wxw-img js_darkmode__81&quot; data-ratio=&quot;0.8157407407407408&quot; data-type=&quot;webp&quot; data-w=&quot;1080&quot; data-imgfileid=&quot;100022250&quot; data-aistatus=&quot;1&quot; data-original-style=&quot;display: block;margin-top: 0px;margin-right: auto;margin-bottom: 0px;margin-left: auto;max-width: 100%;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;&quot; data-index=&quot;14&quot; src=&quot;https://mmbiz.qpic.cn/sz_mmbiz_jpg/6Uzn2S5AAyRtmpBTMicVej3YNgkqXfvp1ibs3rezyraXTe16jwZLtfNObFV5sI1BVH0ziaRrvjVvfHxKTE0iaica7ER8a1ichJP8H3IWqBIqNF3VM/640?wx_fmt=webp&amp;from=appmsg&amp;tp=wxpic&amp;wxfrom=5&amp;wx_lazy=1#imgIndex=12&quot; _width=&quot;596px&quot; alt=&quot;图片&quot; data-before-load-time=&quot;1791873365971&quot; data-report-img-idx=&quot;12&quot; data-fail=&quot;0&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px auto; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; vertical-align: bottom; border-color: rgba(0, 0, 0, 0.4); height: auto !important; display: block; border-style: none; border-width: 3px; border-radius: 0px; object-fit: fill; box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px; visibility: visible !important; width: 595.984px !important;&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;&lt;h2 data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__82&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 30px 0px 15px; padding: 0px; outline: 0px; font-weight: 400; font-size: 16px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; border-color: rgb(0, 0, 0); color: rgb(230, 230, 230) !important; background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(251, 251, 251); align-items: unset; border-style: none; border-width: 1px; border-radius: 0px; box-shadow: none; display: block; flex-direction: unset; float: unset; height: auto; justify-content: unset; line-height: 1.5em; overflow: unset; text-align: left; text-shadow: none; transform: none; width: auto; -webkit-box-reflect: unset;&quot;&gt;&lt;span class=&quot;js_darkmode__83&quot; style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px 30px 0px 15px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; border-color: #000000; background: none 0% 0% / auto no-repeat scroll padding-box border-box #212122; font-size: 18px; color: #FFFFFF; line-height: 2.4em; letter-spacing: 0em; border-style: none; border-width: 1px; border-radius: 0px 0px 40px; align-items: unset; box-shadow: none; display: inline-block; font-weight: bold; flex-direction: unset; float: unset; height: auto; justify-content: unset; overflow: unset; text-align: left; text-indent: 0em; text-shadow: none; transform: none; width: auto; -webkit-box-reflect: unset;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;需求迭代&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__84&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;前面初版实现的功能非常简单，数据是保存在本地的，这就有一个弊端，如果我换了设备使用，之前记录的数据都不见了。&lt;/span&gt;&lt;/p&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__85&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;现在我希望能在多端同步使用，这就需要把数据存到云端，存在云端还需要做身份识别，得知道这条数据是哪一个用户的，所以我们还要增加登录功能。&lt;/span&gt;&lt;/p&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__86&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;需求提示词如下：&lt;/span&gt;&lt;/p&gt;&lt;blockquote class=&quot;js_darkmode__87&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 20px 0px; padding: 10px 10px 10px 20px; outline: 0px; border-width: 3px; border-style: none none none solid; border-color: rgba(0, 0, 0, 0.4); position: relative; color: rgba(255, 255, 255, 0.3); font-size: 15px; text-indent: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; background: none left top / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0.05); border-radius: 0px; width: auto; height: auto; box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px; display: block; overflow: auto;&quot;&gt;&lt;p class=&quot;js_darkmode__88&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; text-indent: 0em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; font-weight: normal;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;现在数据是保存在本地的，一旦换了设备数据就不见了，我希望能在多端使用，把数据存在云端，并支持登录功能&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;figure data-tool=&quot;mdnice编辑器&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 10px 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; display: flex; flex-direction: column; justify-content: center; align-items: center;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;img data-src=&quot;https://mmbiz.qpic.cn/sz_mmbiz_jpg/6Uzn2S5AAyR4GJHJoBicibozcRMar3sFSOcHKa01E4TaKNUdcTgPFG0MXZNEAI7cbouufXKVicnXEqNgdMZib9pPRfaDL2mhzs1uwUiaN8icicc5x0/640?wx_fmt=webp&amp;amp;from=appmsg#imgIndex=13&quot; class=&quot;rich_pages wxw-img js_darkmode__89&quot; data-ratio=&quot;1.3061224489795917&quot; data-type=&quot;webp&quot; data-w=&quot;980&quot; data-imgfileid=&quot;100022254&quot; data-aistatus=&quot;1&quot; data-original-style=&quot;display: block;margin-top: 0px;margin-right: auto;margin-bottom: 0px;margin-left: auto;max-width: 100%;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;&quot; data-index=&quot;15&quot; src=&quot;https://mmbiz.qpic.cn/sz_mmbiz_jpg/6Uzn2S5AAyR4GJHJoBicibozcRMar3sFSOcHKa01E4TaKNUdcTgPFG0MXZNEAI7cbouufXKVicnXEqNgdMZib9pPRfaDL2mhzs1uwUiaN8icicc5x0/640?wx_fmt=webp&amp;from=appmsg&amp;tp=wxpic&amp;wxfrom=5&amp;wx_lazy=1#imgIndex=13&quot; _width=&quot;596px&quot; alt=&quot;图片&quot; data-before-load-time=&quot;1791873366145&quot; data-report-img-idx=&quot;13&quot; data-fail=&quot;0&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px auto; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; vertical-align: bottom; border-color: rgba(0, 0, 0, 0.4); height: auto !important; display: block; border-style: none; border-width: 3px; border-radius: 0px; object-fit: fill; box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px; visibility: visible !important; width: 595.984px !important;&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__90&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;这时候会让我们选择是否开启云服务，选择开启。&lt;/span&gt;&lt;/p&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__91&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;这里的云服务是Workbuddy提供好的，它支持按需接入云数据库、登录认证、文件存储、AI调用等云服务，对于新手而言是很省事的，不需要我们自己去搞服务器环境或者开通任何服务。&lt;/span&gt;&lt;/p&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__92&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;接入云服务后，数据就可以长期保存在云端，用户可以登录自己的账号，图片和附件也能在线上传；有AI需求时，还可以直接调用大模型。&lt;/span&gt;&lt;/p&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__93&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;大约10分钟后Workbuddy完成了开发任务，在右侧面板点击一键登录，会出现无法操作的提示。因为这里是H5预览环境，微信登录需要在真机上操作。因此我们需要把最新的功能发布为体验版本，然后用真机测试。&lt;/span&gt;&lt;/p&gt;&lt;figure data-tool=&quot;mdnice编辑器&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 10px 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; display: flex; flex-direction: column; justify-content: center; align-items: center;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;img data-src=&quot;https://mmbiz.qpic.cn/mmbiz_jpg/6Uzn2S5AAyTVmMggky1roIjqWzLFHQicrE7ibiaLFgkicwEcOC6dt0DsoPn2xB9zAQo9ibtfibzPY386MG6iaaOSul3IibnzRoT2KERS7SwLubeXIicI/640?wx_fmt=webp&amp;amp;from=appmsg#imgIndex=14&quot; class=&quot;rich_pages wxw-img js_darkmode__94&quot; data-ratio=&quot;0.7925925925925926&quot; data-type=&quot;webp&quot; data-w=&quot;1080&quot; data-imgfileid=&quot;100022251&quot; data-aistatus=&quot;1&quot; data-original-style=&quot;display: block;margin-top: 0px;margin-right: auto;margin-bottom: 0px;margin-left: auto;max-width: 100%;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;&quot; data-index=&quot;16&quot; src=&quot;https://mmbiz.qpic.cn/mmbiz_jpg/6Uzn2S5AAyTVmMggky1roIjqWzLFHQicrE7ibiaLFgkicwEcOC6dt0DsoPn2xB9zAQo9ibtfibzPY386MG6iaaOSul3IibnzRoT2KERS7SwLubeXIicI/640?wx_fmt=webp&amp;from=appmsg&amp;tp=wxpic&amp;wxfrom=5&amp;wx_lazy=1#imgIndex=14&quot; _width=&quot;596px&quot; alt=&quot;图片&quot; data-before-load-time=&quot;1791873366356&quot; data-report-img-idx=&quot;14&quot; data-fail=&quot;0&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px auto; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; vertical-align: bottom; border-color: rgba(0, 0, 0, 0.4); height: auto !important; display: block; border-style: none; border-width: 3px; border-radius: 0px; object-fit: fill; box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px; visibility: visible !important; width: 595.984px !important;&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__95&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;体验版本的发布流程跟前面介绍的一致，点击右上角分享按钮，勾选体验版本，点击更新即可。&lt;/span&gt;&lt;/p&gt;&lt;figure data-tool=&quot;mdnice编辑器&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 10px 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; display: flex; flex-direction: column; justify-content: center; align-items: center;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;img data-src=&quot;https://mmbiz.qpic.cn/sz_mmbiz_jpg/6Uzn2S5AAyRs2bibbibbzMciaA9AuHDJMdns2g7SgOv76ZhpiagFLAkSFQibxuYOyzYhzkpzaXT5IBaDeUeACqHDTQjdPjISCmsXJFo72BKC4meo/640?wx_fmt=webp&amp;amp;from=appmsg#imgIndex=15&quot; class=&quot;rich_pages wxw-img js_darkmode__96&quot; data-ratio=&quot;0.7305555555555555&quot; data-type=&quot;webp&quot; data-w=&quot;1080&quot; data-imgfileid=&quot;100022253&quot; data-aistatus=&quot;1&quot; data-original-style=&quot;display: block;margin-top: 0px;margin-right: auto;margin-bottom: 0px;margin-left: auto;max-width: 100%;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;&quot; data-index=&quot;17&quot; src=&quot;https://mmbiz.qpic.cn/sz_mmbiz_jpg/6Uzn2S5AAyRs2bibbibbzMciaA9AuHDJMdns2g7SgOv76ZhpiagFLAkSFQibxuYOyzYhzkpzaXT5IBaDeUeACqHDTQjdPjISCmsXJFo72BKC4meo/640?wx_fmt=webp&amp;from=appmsg&amp;tp=wxpic&amp;wxfrom=5&amp;wx_lazy=1#imgIndex=15&quot; _width=&quot;596px&quot; alt=&quot;图片&quot; data-before-load-time=&quot;1791873366466&quot; data-report-img-idx=&quot;15&quot; data-fail=&quot;0&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px auto; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; vertical-align: bottom; border-color: rgba(0, 0, 0, 0.4); height: auto !important; display: block; border-style: none; border-width: 3px; border-radius: 0px; object-fit: fill; box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px; visibility: visible !important; width: 595.984px !important;&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__97&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;体验版发完成后，扫码体验版二维码就能看到最新的版本了。&lt;/span&gt;&lt;/p&gt;&lt;section data-tool=&quot;mdnice编辑器&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 20px 0px 10px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; border-width: medium; border-style: none; border-color: currentcolor; border-image: none 100% / 1 / 0 stretch; overflow: hidden;&quot;&gt;&lt;section style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; display: flex; flex-wrap: nowrap; overflow-x: scroll;&quot;&gt;&lt;section style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; flex: 0 0 100%;&quot;&gt;&lt;img data-src=&quot;https://mmbiz.qpic.cn/mmbiz_jpg/6Uzn2S5AAyR6Ym5GZjonMfUjrDZkFSmTHW51sKl7B7IttZDauq9IuxfZ4LibuQKl1QLdeZH4iaBsdDXz1rlSXW4I9a7PpfTUZuz5icY3sDMLjY/640?wx_fmt=webp&amp;amp;from=appmsg#imgIndex=16&quot; class=&quot;rich_pages wxw-img&quot; data-ratio=&quot;2.174074074074074&quot; data-type=&quot;webp&quot; data-w=&quot;1080&quot; data-imgfileid=&quot;100022259&quot; data-aistatus=&quot;1&quot; data-original-style=&quot;margin-top: 0px;margin-right: auto;margin-bottom: 0px;margin-left: auto;max-width: 100%;display: inline-block;&quot; data-index=&quot;18&quot; src=&quot;https://mmbiz.qpic.cn/mmbiz_jpg/6Uzn2S5AAyR6Ym5GZjonMfUjrDZkFSmTHW51sKl7B7IttZDauq9IuxfZ4LibuQKl1QLdeZH4iaBsdDXz1rlSXW4I9a7PpfTUZuz5icY3sDMLjY/640?wx_fmt=webp&amp;from=appmsg&amp;tp=wxpic&amp;wxfrom=5&amp;wx_lazy=1#imgIndex=16&quot; _width=&quot;596px&quot; alt=&quot;图片&quot; data-before-load-time=&quot;1791873366597&quot; data-report-img-idx=&quot;16&quot; data-fail=&quot;0&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px auto; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; vertical-align: bottom; height: auto !important; display: inline-block; visibility: visible !important; width: 595.984px !important;&quot;/&gt;&lt;/section&gt;&lt;section style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; flex: 0 0 100%;&quot;&gt;&lt;img data-src=&quot;https://mmbiz.qpic.cn/sz_mmbiz_jpg/6Uzn2S5AAySXt6SDNLJibf1VV2KbrQlibUuItp8kZBibUTXibfQ1SPomFjMtoGBEicGM6ibgdHKI4t0SyNJpWKSdYbB5AfY8N9FE4mibibWiawWrWOkA/640?wx_fmt=webp&amp;amp;from=appmsg#imgIndex=17&quot; class=&quot;rich_pages wxw-img&quot; data-ratio=&quot;2.174074074074074&quot; data-type=&quot;webp&quot; data-w=&quot;1080&quot; data-imgfileid=&quot;100022255&quot; data-aistatus=&quot;1&quot; data-original-style=&quot;margin-top: 0px;margin-right: auto;margin-bottom: 0px;margin-left: auto;max-width: 100%;display: inline-block;&quot; data-index=&quot;19&quot; src=&quot;https://mmbiz.qpic.cn/sz_mmbiz_jpg/6Uzn2S5AAySXt6SDNLJibf1VV2KbrQlibUuItp8kZBibUTXibfQ1SPomFjMtoGBEicGM6ibgdHKI4t0SyNJpWKSdYbB5AfY8N9FE4mibibWiawWrWOkA/640?wx_fmt=webp&amp;from=appmsg&amp;tp=wxpic&amp;wxfrom=5&amp;wx_lazy=1#imgIndex=17&quot; _width=&quot;596px&quot; alt=&quot;图片&quot; data-before-load-time=&quot;1791873366597&quot; data-report-img-idx=&quot;17&quot; data-fail=&quot;0&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px auto; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; vertical-align: bottom; height: auto !important; display: inline-block; visibility: visible !important; width: 595.984px !important;&quot;/&gt;&lt;/section&gt;&lt;/section&gt;&lt;/section&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__98&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-indent: 0em; text-align: center;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; display: block; color: #888888; font-size: 14px; line-height: 1.8em; letter-spacing: 0em; text-align: center; font-weight: normal;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&amp;lt;&amp;lt;&amp;lt; 左右滑动见更多 &amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__99&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;现在的版本就支持微信一键登录，并且所有的待办数据是保存在云端的，支持多人多设备使用。&lt;/span&gt;&lt;/p&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__100&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;为了验证我们的数据是否真正保存到了云端，可以去云服务后台查看数据是否存进来了，点击下图按钮即可进入云服务后台。&lt;/span&gt;&lt;/p&gt;&lt;figure data-tool=&quot;mdnice编辑器&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 10px 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; display: flex; flex-direction: column; justify-content: center; align-items: center;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;img data-src=&quot;https://mmbiz.qpic.cn/mmbiz_jpg/6Uzn2S5AAyRQcRicXobLJ9xk6I5eJzAO2qp2eic1EawXiaUUrvqn7xGc25bIIDmKMJxlh4u7t1qQlzTOzF1nNFssedwWpDCdDm7c0KqYGu7iau4/640?wx_fmt=webp&amp;amp;from=appmsg#imgIndex=18&quot; class=&quot;rich_pages wxw-img js_darkmode__101&quot; data-ratio=&quot;0.5388888888888889&quot; data-type=&quot;webp&quot; data-w=&quot;1080&quot; data-imgfileid=&quot;100022257&quot; data-aistatus=&quot;1&quot; data-original-style=&quot;display: block;margin-top: 0px;margin-right: auto;margin-bottom: 0px;margin-left: auto;max-width: 100%;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;&quot; data-index=&quot;20&quot; src=&quot;https://mmbiz.qpic.cn/mmbiz_jpg/6Uzn2S5AAyRQcRicXobLJ9xk6I5eJzAO2qp2eic1EawXiaUUrvqn7xGc25bIIDmKMJxlh4u7t1qQlzTOzF1nNFssedwWpDCdDm7c0KqYGu7iau4/640?wx_fmt=webp&amp;from=appmsg&amp;tp=wxpic&amp;wxfrom=5&amp;wx_lazy=1#imgIndex=18&quot; _width=&quot;596px&quot; alt=&quot;图片&quot; data-before-load-time=&quot;1791873366901&quot; data-report-img-idx=&quot;18&quot; data-fail=&quot;0&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px auto; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; vertical-align: bottom; border-color: rgba(0, 0, 0, 0.4); height: auto !important; display: block; border-style: none; border-width: 3px; border-radius: 0px; object-fit: fill; box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px; visibility: visible !important; width: 595.984px !important;&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__102&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;通过下图可以看到，云端数据库存储的数据与界面显示的一致。&lt;/span&gt;&lt;/p&gt;&lt;figure data-tool=&quot;mdnice编辑器&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 10px 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; display: flex; flex-direction: column; justify-content: center; align-items: center;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;img data-src=&quot;https://mmbiz.qpic.cn/mmbiz_jpg/6Uzn2S5AAyRsiaG39qEFKK9G4DiamHBXXmX9QkeMqqHIrwVpBW3cibKR2ZhzPNYqoRY7Mxvtoa3w9vnSsJTRunXK2fonnLvbaTqrEpHaJBZq1g/640?wx_fmt=webp&amp;amp;from=appmsg#imgIndex=19&quot; class=&quot;rich_pages wxw-img js_darkmode__103&quot; data-ratio=&quot;0.6685185185185185&quot; data-type=&quot;webp&quot; data-w=&quot;1080&quot; data-imgfileid=&quot;100022256&quot; data-aistatus=&quot;1&quot; data-original-style=&quot;display: block;margin-top: 0px;margin-right: auto;margin-bottom: 0px;margin-left: auto;max-width: 100%;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;&quot; data-index=&quot;21&quot; src=&quot;https://mmbiz.qpic.cn/mmbiz_jpg/6Uzn2S5AAyRsiaG39qEFKK9G4DiamHBXXmX9QkeMqqHIrwVpBW3cibKR2ZhzPNYqoRY7Mxvtoa3w9vnSsJTRunXK2fonnLvbaTqrEpHaJBZq1g/640?wx_fmt=webp&amp;from=appmsg&amp;tp=wxpic&amp;wxfrom=5&amp;wx_lazy=1#imgIndex=19&quot; _width=&quot;596px&quot; alt=&quot;图片&quot; data-before-load-time=&quot;1791873366966&quot; data-report-img-idx=&quot;19&quot; data-fail=&quot;0&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px auto; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; vertical-align: bottom; border-color: rgba(0, 0, 0, 0.4); height: auto !important; display: block; border-style: none; border-width: 3px; border-radius: 0px; object-fit: fill; box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px; visibility: visible !important; width: 595.969px !important;&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;&lt;h2 data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__104&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 30px 0px 15px; padding: 0px; outline: 0px; font-weight: 400; font-size: 16px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; border-color: rgb(0, 0, 0); color: rgb(230, 230, 230) !important; background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(251, 251, 251); align-items: unset; border-style: none; border-width: 1px; border-radius: 0px; box-shadow: none; display: block; flex-direction: unset; float: unset; height: auto; justify-content: unset; line-height: 1.5em; overflow: unset; text-align: left; text-shadow: none; transform: none; width: auto; -webkit-box-reflect: unset;&quot;&gt;&lt;span class=&quot;js_darkmode__105&quot; style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px 30px 0px 15px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; border-color: #000000; background: none 0% 0% / auto no-repeat scroll padding-box border-box #212122; font-size: 18px; color: #FFFFFF; line-height: 2.4em; letter-spacing: 0em; border-style: none; border-width: 1px; border-radius: 0px 0px 40px; align-items: unset; box-shadow: none; display: inline-block; font-weight: bold; flex-direction: unset; float: unset; height: auto; justify-content: unset; overflow: unset; text-align: left; text-indent: 0em; text-shadow: none; transform: none; width: auto; -webkit-box-reflect: unset;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;发布之后，小程序管理&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__106&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;从账号左下角进入「设置&amp;gt;数据管理&amp;gt;应用」&lt;/span&gt;&lt;strong class=&quot;js_darkmode__107&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; border-color: rgba(0, 0, 0, 0.4); color: rgb(239, 112, 96); font-weight: bold; background: none left top / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0); width: auto; height: auto; border-style: none; border-width: 3px; border-radius: 0px;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;，&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;在这里可以管理已发布的小程序和网页应用、快速查看对应的云服务、需要调整的话，也能直接跳转到对应的任务。&lt;/span&gt;&lt;/p&gt;&lt;figure data-tool=&quot;mdnice编辑器&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 10px 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; display: flex; flex-direction: column; justify-content: center; align-items: center;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;img data-src=&quot;https://mmbiz.qpic.cn/sz_mmbiz_jpg/6Uzn2S5AAyRq4wo57uWib77h5H9glaSNAb4SBXXm6xCYdzmeYrkFP6qeoRxMhnuRjicfeIhRxicEbxcbsybiciatRZ7gTLQo31mwF2LDmm9sAb0s/640?wx_fmt=webp&amp;amp;from=appmsg#imgIndex=20&quot; class=&quot;rich_pages wxw-img js_darkmode__108&quot; data-ratio=&quot;0.7805555555555556&quot; data-type=&quot;webp&quot; data-w=&quot;1080&quot; data-imgfileid=&quot;100022258&quot; data-aistatus=&quot;1&quot; data-original-style=&quot;display: block;margin-top: 0px;margin-right: auto;margin-bottom: 0px;margin-left: auto;max-width: 100%;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;&quot; data-index=&quot;22&quot; src=&quot;https://mmbiz.qpic.cn/sz_mmbiz_jpg/6Uzn2S5AAyRq4wo57uWib77h5H9glaSNAb4SBXXm6xCYdzmeYrkFP6qeoRxMhnuRjicfeIhRxicEbxcbsybiciatRZ7gTLQo31mwF2LDmm9sAb0s/640?wx_fmt=webp&amp;from=appmsg&amp;tp=wxpic&amp;wxfrom=5&amp;wx_lazy=1#imgIndex=20&quot; _width=&quot;596px&quot; alt=&quot;图片&quot; data-before-load-time=&quot;1791873367057&quot; data-report-img-idx=&quot;20&quot; data-fail=&quot;0&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px auto; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; vertical-align: bottom; border-color: rgba(0, 0, 0, 0.4); height: auto !important; display: block; border-style: none; border-width: 3px; border-radius: 0px; object-fit: fill; box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px; visibility: visible !important; width: 595.984px !important;&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__109&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;小程序上线后的用户访问情况、文件存储等云服务也可以继续在WorkBuddy里查看。&lt;/span&gt;&lt;/p&gt;&lt;section data-tool=&quot;mdnice编辑器&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 20px 0px 10px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; border-width: medium; border-style: none; border-color: currentcolor; border-image: none 100% / 1 / 0 stretch; overflow: hidden;&quot;&gt;&lt;section style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; display: flex; flex-wrap: nowrap; overflow-x: scroll;&quot;&gt;&lt;section style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; flex: 0 0 100%;&quot;&gt;&lt;img data-src=&quot;https://mmbiz.qpic.cn/mmbiz_jpg/6Uzn2S5AAyRCWPHfQI31QBJIY5FlqMd9DpnkZCvvp0qr6mAqZVN5zI9j5LLcibrHib2U9rRmxxkFWjgQ4ASJNDqibfzXk4JDcmQavic73TodmzM/640?wx_fmt=webp&amp;amp;from=appmsg#imgIndex=21&quot; class=&quot;rich_pages wxw-img&quot; data-ratio=&quot;0.7546296296296297&quot; data-type=&quot;webp&quot; data-w=&quot;1080&quot; data-imgfileid=&quot;100022260&quot; data-aistatus=&quot;1&quot; data-original-style=&quot;margin-top: 0px;margin-right: auto;margin-bottom: 0px;margin-left: auto;max-width: 100%;display: inline-block;&quot; data-index=&quot;23&quot; src=&quot;https://mmbiz.qpic.cn/mmbiz_jpg/6Uzn2S5AAyRCWPHfQI31QBJIY5FlqMd9DpnkZCvvp0qr6mAqZVN5zI9j5LLcibrHib2U9rRmxxkFWjgQ4ASJNDqibfzXk4JDcmQavic73TodmzM/640?wx_fmt=webp&amp;from=appmsg&amp;tp=wxpic&amp;wxfrom=5&amp;wx_lazy=1#imgIndex=21&quot; _width=&quot;596px&quot; alt=&quot;图片&quot; data-before-load-time=&quot;1791873367131&quot; data-report-img-idx=&quot;22&quot; data-fail=&quot;0&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px auto; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; vertical-align: bottom; height: auto !important; display: inline-block; visibility: visible !important; width: 595.984px !important;&quot;/&gt;&lt;/section&gt;&lt;section style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; flex: 0 0 100%;&quot;&gt;&lt;img data-src=&quot;https://mmbiz.qpic.cn/mmbiz_jpg/6Uzn2S5AAyTrtcAf1Vuuw0Ih2L8yVy3F8DYMI9mXUpDxiavA8DUqKNuaabSgzibYq61xy68aP2dN8MYgYfuRs18WquZ1KWibAee9sOrq1Eln98/640?wx_fmt=webp&amp;amp;from=appmsg#imgIndex=22&quot; class=&quot;rich_pages wxw-img&quot; data-ratio=&quot;0.6462962962962963&quot; data-type=&quot;webp&quot; data-w=&quot;1080&quot; data-imgfileid=&quot;100022262&quot; data-aistatus=&quot;1&quot; data-original-style=&quot;margin-top: 0px;margin-right: auto;margin-bottom: 0px;margin-left: auto;max-width: 100%;display: inline-block;&quot; data-index=&quot;24&quot; src=&quot;https://mmbiz.qpic.cn/mmbiz_jpg/6Uzn2S5AAyTrtcAf1Vuuw0Ih2L8yVy3F8DYMI9mXUpDxiavA8DUqKNuaabSgzibYq61xy68aP2dN8MYgYfuRs18WquZ1KWibAee9sOrq1Eln98/640?wx_fmt=webp&amp;from=appmsg&amp;tp=wxpic&amp;wxfrom=5&amp;wx_lazy=1#imgIndex=22&quot; _width=&quot;596px&quot; alt=&quot;图片&quot; data-before-load-time=&quot;1791873367132&quot; data-report-img-idx=&quot;21&quot; data-fail=&quot;0&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px auto; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; vertical-align: bottom; height: auto !important; display: inline-block; visibility: visible !important; width: 595.984px !important;&quot;/&gt;&lt;/section&gt;&lt;section style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; flex: 0 0 100%;&quot;&gt;&lt;img data-src=&quot;https://mmbiz.qpic.cn/sz_mmbiz_jpg/6Uzn2S5AAySQC1x7AXM45Rg0LibicpxadF6vsjo3S1Koyp3q72yanapZ9QVnyenWqImic17NySMExaAO1hX8Cu6htHtkwoOUKDibiaqEJiaB3aicOA/640?wx_fmt=webp&amp;amp;from=appmsg#imgIndex=23&quot; class=&quot;rich_pages wxw-img&quot; data-ratio=&quot;0.7555555555555555&quot; data-type=&quot;webp&quot; data-w=&quot;1080&quot; data-imgfileid=&quot;100022264&quot; data-aistatus=&quot;1&quot; data-original-style=&quot;margin-top: 0px;margin-right: auto;margin-bottom: 0px;margin-left: auto;max-width: 100%;display: inline-block;&quot; data-index=&quot;25&quot; src=&quot;https://mmbiz.qpic.cn/sz_mmbiz_jpg/6Uzn2S5AAySQC1x7AXM45Rg0LibicpxadF6vsjo3S1Koyp3q72yanapZ9QVnyenWqImic17NySMExaAO1hX8Cu6htHtkwoOUKDibiaqEJiaB3aicOA/640?wx_fmt=webp&amp;from=appmsg&amp;tp=wxpic&amp;wxfrom=5&amp;wx_lazy=1#imgIndex=23&quot; _width=&quot;596px&quot; alt=&quot;图片&quot; data-before-load-time=&quot;1791873367336&quot; data-report-img-idx=&quot;24&quot; data-fail=&quot;0&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px auto; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; vertical-align: bottom; height: auto !important; display: inline-block; visibility: visible !important; width: 595.969px !important;&quot;/&gt;&lt;/section&gt;&lt;/section&gt;&lt;/section&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__110&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-indent: 0em; text-align: center;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; display: block; color: #888888; font-size: 14px; line-height: 1.8em; letter-spacing: 0em; text-align: center; font-weight: normal;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&amp;lt;&amp;lt;&amp;lt; 左右滑动见更多 &amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__111&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;strong class=&quot;js_darkmode__112&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; border-color: rgba(0, 0, 0, 0.4); color: rgb(239, 112, 96); font-weight: bold; background: none left top / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0); width: auto; height: auto; border-style: none; border-width: 3px; border-radius: 0px;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;到这里，我们就走完了从需求到上线的完整路径，整个过程除了小程序账号注册、备案需要在微信公众平台操作，其它所有事项，从开发、调试、预览、到发布、云服务都可以在Workbuddy应用内搞定，我们只需要描述我们的需求即可。&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__113&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;整个开发体验还是很友好的，足够简单、闭环，不需要在多个应用程序之间切来切去。&lt;/span&gt;&lt;/p&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__114&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;strong class=&quot;js_darkmode__115&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; border-color: rgba(0, 0, 0, 0.4); color: rgb(239, 112, 96); font-weight: bold; background: none left top / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0); width: auto; height: auto; border-style: none; border-width: 3px; border-radius: 0px;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;但是对于复杂需求这个流程可能就不满足了，核心在于侧边栏预览的是H5环境，而不是真机运行环境，这两套环境是存在很大差异的&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;。可能在H5上面可能一切正常，但是运行在真机上就出问题了，比如常见的键盘问题、页面布局问题，还有一些微信相关的功能H5是没法操作的。&lt;/span&gt;&lt;/p&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__116&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;那这样开发调试起来就会很麻烦，像前面这个案例的登录功能，我们只支持了微信一键登录，而这个操作在侧边栏是没法执行的，那我们就无法登录进入功能界面。要登录就得发布体验版本，然后用手机打开。&lt;/span&gt;&lt;/p&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__117&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;其实这里有更好的方案，那就是用微信开发者工具。&lt;/span&gt;&lt;/p&gt;&lt;h2 data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__118&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 30px 0px 15px; padding: 0px; outline: 0px; font-weight: 400; font-size: 16px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; border-color: rgb(0, 0, 0); color: rgb(230, 230, 230) !important; background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(251, 251, 251); align-items: unset; border-style: none; border-width: 1px; border-radius: 0px; box-shadow: none; display: block; flex-direction: unset; float: unset; height: auto; justify-content: unset; line-height: 1.5em; overflow: unset; text-align: left; text-shadow: none; transform: none; width: auto; -webkit-box-reflect: unset;&quot;&gt;&lt;span class=&quot;js_darkmode__119&quot; style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px 30px 0px 15px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; border-color: #000000; background: none 0% 0% / auto no-repeat scroll padding-box border-box #212122; font-size: 18px; color: #FFFFFF; line-height: 2.4em; letter-spacing: 0em; border-style: none; border-width: 1px; border-radius: 0px 0px 40px; align-items: unset; box-shadow: none; display: inline-block; font-weight: bold; flex-direction: unset; float: unset; height: auto; justify-content: unset; overflow: unset; text-align: left; text-indent: 0em; text-shadow: none; transform: none; width: auto; -webkit-box-reflect: unset;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;开发者工具&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__120&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;这个微信开发者工具是微信官方提供的，专门用于开发调试微信公众号网页、小程序的专业工具，需要大家单独下载安装。它内部模拟了一套微信小程序真实的运行环境，支持大部分&lt;/span&gt;&lt;span class=&quot;wx_search_keyword_wrap&quot; style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: #7D90A9; cursor: default;&quot;&gt;微信接口&lt;em class=&quot;wx_search_keyword&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; display: inline-block; vertical-align: super; font-size: 10px; width: 1.2em; height: 1.2em; mask-position: 50% 50%; mask-repeat: no-repeat; mask-size: 100%; background-color: rgb(125, 144, 169); mask-image: url(&amp;quot;data:image/svg+xml,%3csvg width=&amp;#39;12&amp;#39; height=&amp;#39;12&amp;#39; viewBox=&amp;#39;0 0 12 12&amp;#39; fill=&amp;#39;none&amp;#39; xmlns=&amp;#39;http://www.w3.org/2000/svg&amp;#39;%3e%3cpath fill-rule=&amp;#39;evenodd&amp;#39; clip-rule=&amp;#39;evenodd&amp;#39; d=&amp;#39;M7.60772 8.29444C7.02144 8.73734 6.29139 9 5.5 9C3.567 9 2 7.433 2 5.5C2 3.567 3.567 2 5.5 2C7.433 2 9 3.567 9 5.5C9 6.28241 8.74327 7.00486 8.30946 7.5877C8.3183 7.59444 8.3268 7.60186 8.33488 7.60994L10.4331 9.70816L9.726 10.4153L7.62777 8.31704C7.62055 8.30983 7.61387 8.30228 7.60772 8.29444ZM8 5.5C8 6.88071 6.88071 8 5.5 8C4.11929 8 3 6.88071 3 5.5C3 4.11929 4.11929 3 5.5 3C6.88071 3 8 4.11929 8 5.5Z&amp;#39; fill=&amp;#39;%23576B95&amp;#39;/%3e%3c/svg%3e&amp;quot;);&quot;&gt;&lt;/em&gt;&lt;/span&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__121&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;安装完成后，打开微信开发者工具，并用自己的微信账号完成登录，并选择小程序。&lt;/span&gt;&lt;/p&gt;&lt;figure data-tool=&quot;mdnice编辑器&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 10px 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; display: flex; flex-direction: column; justify-content: center; align-items: center;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;img data-src=&quot;https://mmbiz.qpic.cn/sz_mmbiz_jpg/6Uzn2S5AAySQmlGF0M3C71NIEX9LTEDF4q2TL97K1XMUgYlxC3icOwQBjVkzOstFVib6bphskB7OScn5U5kwOcnaV56XVMHOFbhAtJwPSfhSs/640?wx_fmt=webp&amp;amp;from=appmsg#imgIndex=24&quot; class=&quot;rich_pages wxw-img js_darkmode__122&quot; data-ratio=&quot;0.9074074074074074&quot; data-type=&quot;webp&quot; data-w=&quot;1080&quot; data-imgfileid=&quot;100022263&quot; data-aistatus=&quot;1&quot; data-original-style=&quot;display: block;margin-top: 0px;margin-right: auto;margin-bottom: 0px;margin-left: auto;max-width: 100%;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;&quot; data-index=&quot;26&quot; src=&quot;https://mmbiz.qpic.cn/sz_mmbiz_jpg/6Uzn2S5AAySQmlGF0M3C71NIEX9LTEDF4q2TL97K1XMUgYlxC3icOwQBjVkzOstFVib6bphskB7OScn5U5kwOcnaV56XVMHOFbhAtJwPSfhSs/640?wx_fmt=webp&amp;from=appmsg&amp;tp=wxpic&amp;wxfrom=5&amp;wx_lazy=1#imgIndex=24&quot; _width=&quot;596px&quot; alt=&quot;图片&quot; data-before-load-time=&quot;1791873367311&quot; data-report-img-idx=&quot;23&quot; data-fail=&quot;0&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px auto; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; vertical-align: bottom; border-color: rgba(0, 0, 0, 0.4); height: auto !important; display: block; border-style: none; border-width: 3px; border-radius: 0px; object-fit: fill; box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px; visibility: visible !important; width: 595.984px !important;&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__123&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;这里我们点击右上角的导入按钮，然后选择Workbuddy中小程序项目空间目录，此时需要填入AppID。&lt;/span&gt;&lt;/p&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__124&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;这个AppID需要在你注册的公众平台获取，路径：管理-&amp;gt; 开发管理 -&amp;gt; 开发设置。&lt;/span&gt;&lt;/p&gt;&lt;figure data-tool=&quot;mdnice编辑器&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 10px 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; display: flex; flex-direction: column; justify-content: center; align-items: center;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;img data-src=&quot;https://mmbiz.qpic.cn/sz_mmbiz_jpg/6Uzn2S5AAyS6QEXgwH2tM81xClOCq34Tb47tedh116ibnEu9iamAu0iavknKcBGN3FoZJyYuRzIy09zcbdx53Obco11PNHfUy08MzVNz7HniaMs/640?wx_fmt=webp&amp;amp;from=appmsg#imgIndex=25&quot; class=&quot;rich_pages wxw-img js_darkmode__125&quot; data-ratio=&quot;0.4701240135287486&quot; data-type=&quot;webp&quot; data-w=&quot;887&quot; data-imgfileid=&quot;100022261&quot; data-aistatus=&quot;1&quot; data-original-style=&quot;display: block;margin-top: 0px;margin-right: auto;margin-bottom: 0px;margin-left: auto;max-width: 100%;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;&quot; data-index=&quot;27&quot; src=&quot;https://mmbiz.qpic.cn/sz_mmbiz_jpg/6Uzn2S5AAyS6QEXgwH2tM81xClOCq34Tb47tedh116ibnEu9iamAu0iavknKcBGN3FoZJyYuRzIy09zcbdx53Obco11PNHfUy08MzVNz7HniaMs/640?wx_fmt=webp&amp;from=appmsg&amp;tp=wxpic&amp;wxfrom=5&amp;wx_lazy=1#imgIndex=25&quot; _width=&quot;596px&quot; alt=&quot;图片&quot; data-before-load-time=&quot;1791873367423&quot; data-report-img-idx=&quot;25&quot; data-fail=&quot;0&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px auto; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; vertical-align: bottom; border-color: rgba(0, 0, 0, 0.4); height: auto !important; display: block; border-style: none; border-width: 3px; border-radius: 0px; object-fit: fill; box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px; visibility: visible !important; width: 595.984px !important;&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__126&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;填入AppID后，点击创建。&lt;/span&gt;&lt;/p&gt;&lt;figure data-tool=&quot;mdnice编辑器&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 10px 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; display: flex; flex-direction: column; justify-content: center; align-items: center;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;img data-src=&quot;https://mmbiz.qpic.cn/sz_mmbiz_jpg/6Uzn2S5AAyTiaccZY5YN6k219nnF4Z4nqibdhZM6ibtlprTZicfPoGVFdvKrVkTicibkFxS6Z5FE7aSpLjt5qC0lIrSfSUYfx0QT6zXiajPAQODPmY/640?wx_fmt=webp&amp;amp;from=appmsg#imgIndex=26&quot; class=&quot;rich_pages wxw-img js_darkmode__127&quot; data-ratio=&quot;0.9842592592592593&quot; data-type=&quot;webp&quot; data-w=&quot;1080&quot; data-imgfileid=&quot;100022265&quot; data-aistatus=&quot;1&quot; data-original-style=&quot;display: block;margin-top: 0px;margin-right: auto;margin-bottom: 0px;margin-left: auto;max-width: 100%;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;&quot; data-index=&quot;28&quot; src=&quot;https://mmbiz.qpic.cn/sz_mmbiz_jpg/6Uzn2S5AAyTiaccZY5YN6k219nnF4Z4nqibdhZM6ibtlprTZicfPoGVFdvKrVkTicibkFxS6Z5FE7aSpLjt5qC0lIrSfSUYfx0QT6zXiajPAQODPmY/640?wx_fmt=webp&amp;from=appmsg&amp;tp=wxpic&amp;wxfrom=5&amp;wx_lazy=1#imgIndex=26&quot; _width=&quot;596px&quot; alt=&quot;图片&quot; data-before-load-time=&quot;1791873367490&quot; data-report-img-idx=&quot;26&quot; data-fail=&quot;0&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px auto; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; vertical-align: bottom; border-color: rgba(0, 0, 0, 0.4); height: auto !important; display: block; border-style: none; border-width: 3px; border-radius: 0px; object-fit: fill; box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px; visibility: visible !important; width: 595.984px !important;&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__128&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;然后在开发者工具中我们就能看到小程序运行起来的效果了，并且在这里可以直接点击微信登录。&lt;/span&gt;&lt;/p&gt;&lt;section data-tool=&quot;mdnice编辑器&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 20px 0px 10px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; border-width: medium; border-style: none; border-color: currentcolor; border-image: none 100% / 1 / 0 stretch; overflow: hidden;&quot;&gt;&lt;section style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; display: flex; flex-wrap: nowrap; overflow-x: scroll;&quot;&gt;&lt;section style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; flex: 0 0 100%;&quot;&gt;&lt;img data-src=&quot;https://mmbiz.qpic.cn/mmbiz_jpg/6Uzn2S5AAyS9umZLFRzWDZ1PDWx7DYro4iboBgNz2YtrBA1NoKU9icj875dqGcOFk8LnvrDACKiaE9icCWWKrHvZvvdbBva2IaxnewepD9hvicXU/640?wx_fmt=webp&amp;amp;from=appmsg#imgIndex=27&quot; class=&quot;rich_pages wxw-img&quot; data-ratio=&quot;0.6925925925925925&quot; data-type=&quot;webp&quot; data-w=&quot;1080&quot; data-imgfileid=&quot;100022266&quot; data-aistatus=&quot;1&quot; data-original-style=&quot;margin-top: 0px;margin-right: auto;margin-bottom: 0px;margin-left: auto;max-width: 100%;display: inline-block;&quot; data-index=&quot;29&quot; src=&quot;https://mmbiz.qpic.cn/mmbiz_jpg/6Uzn2S5AAyS9umZLFRzWDZ1PDWx7DYro4iboBgNz2YtrBA1NoKU9icj875dqGcOFk8LnvrDACKiaE9icCWWKrHvZvvdbBva2IaxnewepD9hvicXU/640?wx_fmt=webp&amp;from=appmsg&amp;tp=wxpic&amp;wxfrom=5&amp;wx_lazy=1#imgIndex=27&quot; _width=&quot;596px&quot; alt=&quot;图片&quot; data-before-load-time=&quot;1791873367621&quot; data-report-img-idx=&quot;28&quot; data-fail=&quot;0&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px auto; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; vertical-align: bottom; height: auto !important; display: inline-block; visibility: visible !important; width: 595.984px !important;&quot;/&gt;&lt;/section&gt;&lt;section style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; flex: 0 0 100%;&quot;&gt;&lt;img data-src=&quot;https://mmbiz.qpic.cn/sz_mmbiz_jpg/6Uzn2S5AAyRiaKeVr7beHCbzqKZpZiaPt3r1GtdXibEzkngTSe459kVyKtBeP1jX2n2zJUPOLlaT4K4kXzKMQMwic39d6e6JXyJGS7Y35XYOyew/640?wx_fmt=webp&amp;amp;from=appmsg#imgIndex=28&quot; class=&quot;rich_pages wxw-img&quot; data-ratio=&quot;0.6925925925925925&quot; data-type=&quot;webp&quot; data-w=&quot;1080&quot; data-imgfileid=&quot;100022269&quot; data-aistatus=&quot;1&quot; data-original-style=&quot;margin-top: 0px;margin-right: auto;margin-bottom: 0px;margin-left: auto;max-width: 100%;display: inline-block;&quot; data-index=&quot;30&quot; src=&quot;https://mmbiz.qpic.cn/sz_mmbiz_jpg/6Uzn2S5AAyRiaKeVr7beHCbzqKZpZiaPt3r1GtdXibEzkngTSe459kVyKtBeP1jX2n2zJUPOLlaT4K4kXzKMQMwic39d6e6JXyJGS7Y35XYOyew/640?wx_fmt=webp&amp;from=appmsg&amp;tp=wxpic&amp;wxfrom=5&amp;wx_lazy=1#imgIndex=28&quot; _width=&quot;596px&quot; alt=&quot;图片&quot; data-before-load-time=&quot;1791873367622&quot; data-report-img-idx=&quot;27&quot; data-fail=&quot;0&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px auto; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; vertical-align: bottom; height: auto !important; display: inline-block; visibility: visible !important; width: 595.984px !important;&quot;/&gt;&lt;/section&gt;&lt;/section&gt;&lt;/section&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__129&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-indent: 0em; text-align: center;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; display: block; color: #888888; font-size: 14px; line-height: 1.8em; letter-spacing: 0em; text-align: center; font-weight: normal;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&amp;lt;&amp;lt;&amp;lt; 左右滑动见更多 &amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__130&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;Workbuddy做了任何功能改动，这边也会即时更新为最新的效果，如果没有更新，可以手动点击上方的编译按钮。&lt;/span&gt;&lt;/p&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__131&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;更重要的是，在调试小程序过程中，如果遇到功能报错，我们可以在调试面板直接拿到错误日志信息，然后把这个错误信息给Workbuddy，让它进行修复。有了明确的错误信息，比盲目猜测分析能更快的定位到问题的根因。&lt;/span&gt;&lt;/p&gt;&lt;figure data-tool=&quot;mdnice编辑器&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 10px 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; display: flex; flex-direction: column; justify-content: center; align-items: center;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;img data-src=&quot;https://mmbiz.qpic.cn/mmbiz_jpg/6Uzn2S5AAySU2nreicO8sTibZCNKf2tLFDvFkicn1n1sVUZlL3Y47icnNd9TwHLBt2mv2xer1VNoGPxsKgmMubdmnqszqGiaj9HAc6UA1MsPFQak/640?wx_fmt=webp&amp;amp;from=appmsg#imgIndex=29&quot; class=&quot;rich_pages wxw-img js_darkmode__132&quot; data-ratio=&quot;0.6925925925925925&quot; data-type=&quot;webp&quot; data-w=&quot;1080&quot; data-imgfileid=&quot;100022267&quot; data-aistatus=&quot;1&quot; data-original-style=&quot;display: block;margin-top: 0px;margin-right: auto;margin-bottom: 0px;margin-left: auto;max-width: 100%;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;&quot; data-index=&quot;31&quot; src=&quot;https://mmbiz.qpic.cn/mmbiz_jpg/6Uzn2S5AAySU2nreicO8sTibZCNKf2tLFDvFkicn1n1sVUZlL3Y47icnNd9TwHLBt2mv2xer1VNoGPxsKgmMubdmnqszqGiaj9HAc6UA1MsPFQak/640?wx_fmt=webp&amp;from=appmsg&amp;tp=wxpic&amp;wxfrom=5&amp;wx_lazy=1#imgIndex=29&quot; _width=&quot;596px&quot; alt=&quot;图片&quot; data-before-load-time=&quot;1791873367751&quot; data-report-img-idx=&quot;29&quot; data-fail=&quot;0&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px auto; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; vertical-align: bottom; border-color: rgba(0, 0, 0, 0.4); height: auto !important; display: block; border-style: none; border-width: 3px; border-radius: 0px; object-fit: fill; box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px; visibility: visible !important; width: 595.984px !important;&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__133&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;除了Console面板之外，我们还可以查看网络请求(Network)信息、本地存储(Storage)信息、以及性能分析等，这里就不逐一展开了。&lt;/span&gt;&lt;/p&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__134&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;其实，在Workbuddy没有集成微信小程序开发流程之前，如果我们想做一个小程序，就类似上面的流程一样，需要先下载安装微信开发者工具、创建项目，再用 AI 编程工具打开项目写代码，写完在回到微信开发者工具里去预览、测试、上传代码到微信公众平台，要在多个客户端来回切。&lt;/span&gt;&lt;/p&gt;&lt;figure data-tool=&quot;mdnice编辑器&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 10px 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; display: flex; flex-direction: column; justify-content: center; align-items: center;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;img data-src=&quot;https://mmbiz.qpic.cn/mmbiz_jpg/6Uzn2S5AAySmh7C23RaiaStVqo61DXniax7mTor4dPCpRCleOv5UxiaZDXxNgazmsqF8hFemYyOy3vHbWgyyibv0fg0zbibAGXgCAUias3MnBWPJo/640?wx_fmt=webp&amp;amp;from=appmsg#imgIndex=30&quot; class=&quot;rich_pages wxw-img js_darkmode__135&quot; data-ratio=&quot;0.562962962962963&quot; data-type=&quot;webp&quot; data-w=&quot;1080&quot; data-imgfileid=&quot;100022268&quot; data-aistatus=&quot;1&quot; data-original-style=&quot;display: block;margin-top: 0px;margin-right: auto;margin-bottom: 0px;margin-left: auto;max-width: 100%;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;&quot; data-index=&quot;32&quot; src=&quot;https://mmbiz.qpic.cn/mmbiz_jpg/6Uzn2S5AAySmh7C23RaiaStVqo61DXniax7mTor4dPCpRCleOv5UxiaZDXxNgazmsqF8hFemYyOy3vHbWgyyibv0fg0zbibAGXgCAUias3MnBWPJo/640?wx_fmt=webp&amp;from=appmsg&amp;tp=wxpic&amp;wxfrom=5&amp;wx_lazy=1#imgIndex=30&quot; _width=&quot;596px&quot; alt=&quot;图片&quot; data-before-load-time=&quot;1791873367840&quot; data-report-img-idx=&quot;30&quot; data-fail=&quot;0&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px auto; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; vertical-align: bottom; border-color: rgba(0, 0, 0, 0.4); height: auto !important; display: block; border-style: none; border-width: 3px; border-radius: 0px; object-fit: fill; box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px; visibility: visible !important; width: 595.969px !important;&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;&lt;h2 data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__136&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 30px 0px 15px; padding: 0px; outline: 0px; font-weight: 400; font-size: 16px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; border-color: rgb(0, 0, 0); color: rgb(230, 230, 230) !important; background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(251, 251, 251); align-items: unset; border-style: none; border-width: 1px; border-radius: 0px; box-shadow: none; display: block; flex-direction: unset; float: unset; height: auto; justify-content: unset; line-height: 1.5em; overflow: unset; text-align: left; text-shadow: none; transform: none; width: auto; -webkit-box-reflect: unset;&quot;&gt;&lt;span class=&quot;js_darkmode__137&quot; style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px 30px 0px 15px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; border-color: #000000; background: none 0% 0% / auto no-repeat scroll padding-box border-box #212122; font-size: 18px; color: #FFFFFF; line-height: 2.4em; letter-spacing: 0em; border-style: none; border-width: 1px; border-radius: 0px 0px 40px; align-items: unset; box-shadow: none; display: inline-block; font-weight: bold; flex-direction: unset; float: unset; height: auto; justify-content: unset; overflow: unset; text-align: left; text-indent: 0em; text-shadow: none; transform: none; width: auto; -webkit-box-reflect: unset;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;版本管理&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__138&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;如果我们的小程序打算持续迭代，一定是离不开代码版本管理的，&lt;/span&gt;&lt;strong class=&quot;js_darkmode__139&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; border-color: rgba(0, 0, 0, 0.4); color: rgb(239, 112, 96); font-weight: bold; background: none left top / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0); width: auto; height: auto; border-style: none; border-width: 3px; border-radius: 0px;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;当然做版本管理我觉得最核心的点是，防止AI把之前做好的功能改坏了还不了原，因此随时做好版本记录，以便可以回退&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;。&lt;/span&gt;&lt;/p&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__140&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;这里就需要用到Git，这个去可以让Workbuddy帮我们安装。你可以这样跟它说：&lt;/span&gt;&lt;/p&gt;&lt;blockquote class=&quot;js_darkmode__141&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 20px 0px; padding: 10px 10px 10px 20px; outline: 0px; border-width: 3px; border-style: none none none solid; border-color: rgba(0, 0, 0, 0.4); position: relative; color: rgba(255, 255, 255, 0.3); font-size: 15px; text-indent: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; background: none left top / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0.05); border-radius: 0px; width: auto; height: auto; box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px; display: block; overflow: auto;&quot;&gt;&lt;p class=&quot;js_darkmode__142&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; text-indent: 0em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; font-weight: normal;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;帮我在本机安装Git，并引导我完成初始化设置&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__143&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;我们只需要提供用户名称和邮箱地址，配置完成后，就可以让他把当前项目初始化为一个git仓库。&lt;/span&gt;&lt;/p&gt;&lt;figure data-tool=&quot;mdnice编辑器&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 10px 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; display: flex; flex-direction: column; justify-content: center; align-items: center;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;img data-src=&quot;https://mmbiz.qpic.cn/mmbiz_jpg/6Uzn2S5AAyRd2RibPr2uX8ebj1XBvQFxbJqao41N9Uplsv4s2DvHgulroowPL9F40icHcgNnUyIY5xcYO505cDoA2bE3Ptk7AIIM91A2k6jXw/640?wx_fmt=webp&amp;amp;from=appmsg#imgIndex=31&quot; class=&quot;rich_pages wxw-img js_darkmode__144&quot; data-ratio=&quot;0.49722222222222223&quot; data-type=&quot;webp&quot; data-w=&quot;1080&quot; data-imgfileid=&quot;100022270&quot; data-aistatus=&quot;1&quot; data-original-style=&quot;display: block;margin-top: 0px;margin-right: auto;margin-bottom: 0px;margin-left: auto;max-width: 100%;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;&quot; data-index=&quot;33&quot; src=&quot;https://mmbiz.qpic.cn/mmbiz_jpg/6Uzn2S5AAyRd2RibPr2uX8ebj1XBvQFxbJqao41N9Uplsv4s2DvHgulroowPL9F40icHcgNnUyIY5xcYO505cDoA2bE3Ptk7AIIM91A2k6jXw/640?wx_fmt=webp&amp;from=appmsg&amp;tp=wxpic&amp;wxfrom=5&amp;wx_lazy=1#imgIndex=31&quot; _width=&quot;596px&quot; alt=&quot;图片&quot; data-before-load-time=&quot;1791873368073&quot; data-report-img-idx=&quot;31&quot; data-fail=&quot;0&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px auto; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; vertical-align: bottom; border-color: rgba(0, 0, 0, 0.4); height: auto !important; display: block; border-style: none; border-width: 3px; border-radius: 0px; object-fit: fill; box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px; visibility: visible !important; width: 595.984px !important;&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__145&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;初始化完成后，它自动帮我们进行了版本提交。&lt;/span&gt;&lt;/p&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__146&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;那么后续有任何文件的修改，我希望Workbuddy能自动帮我记录版本，而不是每次都口头交代一次。这里可以利用Workbuddy的记忆规则来完成自动化提交，在当前项目路径下创建&lt;/span&gt;&lt;code class=&quot;js_darkmode__147&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px 2px; padding: 2px 4px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word; border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4); background: none left top / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05); color: rgb(239, 112, 96); font-size: 14px; line-height: 1.8em; letter-spacing: 0em; width: auto; height: auto; border-style: none; border-width: 3px; border-radius: 4px; font-family: &amp;quot;Operator Mono&amp;quot;, Consolas, Monaco, Menlo, monospace; word-break: break-all;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;.workbuddy/memory/MEMORY.md&lt;/span&gt;&lt;/code&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;文件，然后设置如下内容：&lt;/span&gt;&lt;/p&gt;&lt;figure data-tool=&quot;mdnice编辑器&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 10px 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; display: flex; flex-direction: column; justify-content: center; align-items: center;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;img data-src=&quot;https://mmbiz.qpic.cn/sz_mmbiz_jpg/6Uzn2S5AAyRwewicEq2Rhh3sMHjWsSNauQRVk5ibrM2DdJ2stJFfzaBYdkFCvtJh0MNbvpakpwgoz485RyicShpuPFfibibzuiaO9E6Uz3CZvHO0I/640?wx_fmt=webp&amp;amp;from=appmsg#imgIndex=32&quot; class=&quot;rich_pages wxw-img js_darkmode__148&quot; data-ratio=&quot;0.7592592592592593&quot; data-type=&quot;webp&quot; data-w=&quot;1080&quot; data-imgfileid=&quot;100022273&quot; data-aistatus=&quot;1&quot; data-original-style=&quot;display: block;margin-top: 0px;margin-right: auto;margin-bottom: 0px;margin-left: auto;max-width: 100%;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;&quot; data-index=&quot;34&quot; src=&quot;https://mmbiz.qpic.cn/sz_mmbiz_jpg/6Uzn2S5AAyRwewicEq2Rhh3sMHjWsSNauQRVk5ibrM2DdJ2stJFfzaBYdkFCvtJh0MNbvpakpwgoz485RyicShpuPFfibibzuiaO9E6Uz3CZvHO0I/640?wx_fmt=webp&amp;from=appmsg&amp;tp=wxpic&amp;wxfrom=5&amp;wx_lazy=1#imgIndex=32&quot; _width=&quot;596px&quot; alt=&quot;图片&quot; data-before-load-time=&quot;1791873368222&quot; data-report-img-idx=&quot;32&quot; data-fail=&quot;0&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px auto; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; vertical-align: bottom; border-color: rgba(0, 0, 0, 0.4); height: auto !important; display: block; border-style: none; border-width: 3px; border-radius: 0px; object-fit: fill; box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px; visibility: visible !important; width: 595.984px !important;&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__149&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;如果不想手动创建，也可以直接跟Workbuddy说，让它帮你创建并设置，提示词如下：&lt;/span&gt;&lt;/p&gt;&lt;figure data-tool=&quot;mdnice编辑器&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 10px 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; display: flex; flex-direction: column; justify-content: center; align-items: center;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;img data-src=&quot;https://mmbiz.qpic.cn/mmbiz_jpg/6Uzn2S5AAyRCtCvuO9c8Trg68n57ic025HwV82O9d4ZnrI2ZNzTbpY1jUI2sM1vAUQib9ouQKgPFaWmlWjQrtBg6C5EsOibJIoj8PustzhG6Eo/640?wx_fmt=webp&amp;amp;from=appmsg#imgIndex=33&quot; class=&quot;rich_pages wxw-img js_darkmode__150&quot; data-ratio=&quot;0.7574074074074074&quot; data-type=&quot;webp&quot; data-w=&quot;1080&quot; data-imgfileid=&quot;100022272&quot; data-aistatus=&quot;1&quot; data-original-style=&quot;display: block;margin-top: 0px;margin-right: auto;margin-bottom: 0px;margin-left: auto;max-width: 100%;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;&quot; data-index=&quot;35&quot; src=&quot;https://mmbiz.qpic.cn/mmbiz_jpg/6Uzn2S5AAyRCtCvuO9c8Trg68n57ic025HwV82O9d4ZnrI2ZNzTbpY1jUI2sM1vAUQib9ouQKgPFaWmlWjQrtBg6C5EsOibJIoj8PustzhG6Eo/640?wx_fmt=webp&amp;from=appmsg&amp;tp=wxpic&amp;wxfrom=5&amp;wx_lazy=1#imgIndex=33&quot; _width=&quot;596px&quot; alt=&quot;图片&quot; data-before-load-time=&quot;1791873369565&quot; data-report-img-idx=&quot;33&quot; data-fail=&quot;0&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px auto; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; vertical-align: bottom; border-color: rgba(0, 0, 0, 0.4); height: auto !important; display: block; border-style: none; border-width: 3px; border-radius: 0px; object-fit: fill; box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px; visibility: visible !important; width: 595.984px !important;&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__151&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;设置完成后，会话完成后一旦有代码变动，就会自动生成版本记录了。&lt;/span&gt;&lt;/p&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__152&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;那怎么查看已经提交了哪些记录呢？最简单的方式就是直接问Workbuddy：&lt;/span&gt;&lt;/p&gt;&lt;figure data-tool=&quot;mdnice编辑器&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 10px 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; display: flex; flex-direction: column; justify-content: center; align-items: center;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;img data-src=&quot;https://mmbiz.qpic.cn/mmbiz_jpg/6Uzn2S5AAyQ7Px8whfiasONbwl473YK3WNGuBG9kk3SRV4dOibhlm9L1y8xqlvqaF0xpNJXXTyWkFUibGnvKrN200eHWI5icL1MBXBO8BsSyp7c/640?wx_fmt=webp&amp;amp;from=appmsg#imgIndex=34&quot; class=&quot;rich_pages wxw-img js_darkmode__153&quot; data-ratio=&quot;0.4601851851851852&quot; data-type=&quot;webp&quot; data-w=&quot;1080&quot; data-imgfileid=&quot;100022271&quot; data-aistatus=&quot;1&quot; data-original-style=&quot;display: block;margin-top: 0px;margin-right: auto;margin-bottom: 0px;margin-left: auto;max-width: 100%;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;&quot; data-index=&quot;36&quot; src=&quot;https://mmbiz.qpic.cn/mmbiz_jpg/6Uzn2S5AAyQ7Px8whfiasONbwl473YK3WNGuBG9kk3SRV4dOibhlm9L1y8xqlvqaF0xpNJXXTyWkFUibGnvKrN200eHWI5icL1MBXBO8BsSyp7c/640?wx_fmt=webp&amp;from=appmsg&amp;tp=wxpic&amp;wxfrom=5&amp;wx_lazy=1#imgIndex=34&quot; _width=&quot;596px&quot; alt=&quot;图片&quot; data-before-load-time=&quot;1791873370394&quot; data-report-img-idx=&quot;34&quot; data-fail=&quot;0&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px auto; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; vertical-align: bottom; border-color: rgba(0, 0, 0, 0.4); height: auto !important; display: block; border-style: none; border-width: 3px; border-radius: 0px; object-fit: fill; box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px; visibility: visible !important; width: 595.984px !important;&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__154&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;这里我们可以看到有两个版本记录，如果我想回到第一次提交的版本，直接跟Workbuddy说：&lt;/span&gt;&lt;/p&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__155&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;掌握这些基本操作，基本就够用了，确保能在你电脑本地做好版本记录，以便随时可以回退。只有当你需要多人协作或者多台设备同时编码，才需要把代码提交到远端仓库，比如github、&lt;/span&gt;&lt;span class=&quot;wx_search_keyword_wrap&quot; style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: #7D90A9; cursor: default;&quot;&gt;gitee&lt;em class=&quot;wx_search_keyword&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; display: inline-block; vertical-align: super; font-size: 10px; width: 1.2em; height: 1.2em; mask-position: 50% 50%; mask-repeat: no-repeat; mask-size: 100%; background-color: rgb(125, 144, 169); mask-image: url(&amp;quot;data:image/svg+xml,%3csvg width=&amp;#39;12&amp;#39; height=&amp;#39;12&amp;#39; viewBox=&amp;#39;0 0 12 12&amp;#39; fill=&amp;#39;none&amp;#39; xmlns=&amp;#39;http://www.w3.org/2000/svg&amp;#39;%3e%3cpath fill-rule=&amp;#39;evenodd&amp;#39; clip-rule=&amp;#39;evenodd&amp;#39; d=&amp;#39;M7.60772 8.29444C7.02144 8.73734 6.29139 9 5.5 9C3.567 9 2 7.433 2 5.5C2 3.567 3.567 2 5.5 2C7.433 2 9 3.567 9 5.5C9 6.28241 8.74327 7.00486 8.30946 7.5877C8.3183 7.59444 8.3268 7.60186 8.33488 7.60994L10.4331 9.70816L9.726 10.4153L7.62777 8.31704C7.62055 8.30983 7.61387 8.30228 7.60772 8.29444ZM8 5.5C8 6.88071 6.88071 8 5.5 8C4.11929 8 3 6.88071 3 5.5C3 4.11929 4.11929 3 5.5 3C6.88071 3 8 4.11929 8 5.5Z&amp;#39; fill=&amp;#39;%23576B95&amp;#39;/%3e%3c/svg%3e&amp;quot;);&quot;&gt;&lt;/em&gt;&lt;/span&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;等平台上去。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;h2 data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__156&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 30px 0px 15px; padding: 0px; outline: 0px; font-weight: 400; font-size: 16px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; border-color: rgb(0, 0, 0); color: rgb(230, 230, 230) !important; background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(251, 251, 251); align-items: unset; border-style: none; border-width: 1px; border-radius: 0px; box-shadow: none; display: block; flex-direction: unset; float: unset; height: auto; justify-content: unset; line-height: 1.5em; overflow: unset; text-align: left; text-shadow: none; transform: none; width: auto; -webkit-box-reflect: unset;&quot;&gt;&lt;span class=&quot;js_darkmode__157&quot; style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px 30px 0px 15px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; border-color: #000000; background: none 0% 0% / auto no-repeat scroll padding-box border-box #212122; font-size: 18px; color: #FFFFFF; line-height: 2.4em; letter-spacing: 0em; border-style: none; border-width: 1px; border-radius: 0px 0px 40px; align-items: unset; box-shadow: none; display: inline-block; font-weight: bold; flex-direction: unset; float: unset; height: auto; justify-content: unset; overflow: unset; text-align: left; text-indent: 0em; text-shadow: none; transform: none; width: auto; -webkit-box-reflect: unset;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;总结&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__158&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;以上就是使用Workbuddy开发微信小程序的完整流程，通过自然语言，就能把自己的想法变成真正可以使用的产品。&lt;/span&gt;&lt;/p&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__159&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;当然，&lt;/span&gt;&lt;strong class=&quot;js_darkmode__160&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; border-color: rgba(0, 0, 0, 0.4); color: rgb(239, 112, 96); font-weight: bold; background: none left top / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0); width: auto; height: auto; border-style: none; border-width: 3px; border-radius: 0px;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;能把小程序做出来，和能把小程序做好，还是两回事&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;。&lt;/span&gt;&lt;/p&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__161&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;如果只是开发一些功能简单的小工具，WorkBuddy 提供的这一套流程基本就够用了。但如果需求比较复杂，涉及大量交互、业务逻辑和长期迭代，还是需要掌握一些基本的开发知识，知道怎么测试功能、查看错误日志、管理代码版本，以及如何判断 AI 生成的结果是否符合预期。&lt;/span&gt;&lt;/p&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__162&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;毕竟 AI Coding 并不是把需求扔给 AI，然后什么都不用管了。&lt;/span&gt;&lt;strong class=&quot;js_darkmode__163&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; border-color: rgba(0, 0, 0, 0.4); color: rgb(239, 112, 96); font-weight: bold; background: none left top / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0); width: auto; height: auto; border-style: none; border-width: 3px; border-radius: 0px;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;AI 可以帮我们完成大量具体的开发工作，但做什么、怎么做、做到什么程度，以及最终能不能满足需求，仍然需要我们自己来判断。&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__164&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;所以，对于非技术同学来说，我的建议是，不要一开始就想着开发多么复杂的产品。&lt;/span&gt;&lt;/p&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__165&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;先从自己工作和生活中的一个小需求开始，做一个真正能用的工具，完整经历需求、开发、测试、上线和迭代的过程。&lt;/span&gt;&lt;/p&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; class=&quot;js_darkmode__166&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(0, 0, 0); clear: both; min-height: 1em; font-size: 15px; line-height: 1.8em; letter-spacing: 0em; text-align: left; text-indent: 0em;&quot;&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;当你亲手把第一个应用做出来，并且真正用起来以后，对 AI Coding 的理解会比看多少教程都更加深刻。&lt;/span&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;&lt;p&gt;&lt;span style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgba(255, 255, 255, 0.55); font-family: &amp;quot;PingFang SC NEW&amp;quot;, system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: 0.544px; orphans: 2; text-align: justify; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: #191919; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;我们&lt;span class=&quot;js_darkmode__167&quot; style=&quot;-webkit-tap-highlight-color: ; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: #AB1942; font-weight: bold;&quot;&gt;训练营 13 期，11 月 3 日发车&lt;/span&gt;，有意者看这里：&lt;a class=&quot;normal_text_link mp_article_text_link&quot; target=&quot;_blank&quot; href=&quot;https://mp.weixin.qq.com/s?__biz=Mzg2MzcyODQ5MQ==&amp;mid=2247500859&amp;idx=1&amp;sn=759cd2dd218a369059793872b016eff2&amp;scene=21#wechat_redirect&quot; data-itemshowtype=&quot;0&quot; data-linktype=&quot;2&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 0px; outline: 0px; color: rgb(125, 144, 169); text-decoration: none; -webkit-user-drag: none; cursor: default; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;如何进入 AI 行业？这是我目前最确定的一条学习路线&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Tue, 13 Oct 2026 14:35:16 +0800</pubDate></item><item><title>C#实现视觉任务编排：使用流程节点与数据端口实现可配置检测流程</title><link>https://www.codepub.top/post/709.html</link><description>&lt;h1 style=&quot;padding: 0.8em 1.5em; margin: 0px 0px 1em; font-size: 22px; font-weight: 700; text-align: center; letter-spacing: 0.1em; line-height: 1.2; background: linear-gradient(135deg, rgb(0, 122, 255) 0%, rgb(88, 86, 214) 50%, rgb(255, 45, 85) 100%); color: rgb(255, 255, 255); border-radius: 12px; box-shadow: rgba(0, 122, 255, 0.2) 0px 4px 15px; visibility: visible;&quot; class=&quot;js_darkmode__bg__0&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;检测流程改一次就要重新编译？流程节点加数据端口，配置改改就行&lt;/span&gt;&lt;/h1&gt;&lt;p style=&quot;margin: 1.2em 0px; letter-spacing: 0.1em; color: rgb(51, 51, 51); text-align: justify; line-height: 1.8; font-size: 15px; visibility: visible;&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;之前做一个端子检测的项目，检测流程是：拍照→&lt;span class=&quot;&quot;&gt;灰度化&lt;/span&gt;→滤波→阈值分割→轮廓分析→判定。六个步骤写死在代码里，步骤之间有依赖关系，每一步的输出是下一步的输入。&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin: 1.2em 0px; letter-spacing: 0.1em; color: rgb(51, 51, 51); text-align: justify; line-height: 1.8; font-size: 15px; visibility: visible;&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;项目后期客户提了需求：A型号工件要加一个边缘检测步骤，B型号工件要跳过阈值分割直接用边缘检测，C型号工件要在&lt;span class=&quot;&quot;&gt;轮廓分析&lt;/span&gt;之后加一个面积过滤。每个型号的流程不一样，改一次就要改代码、重新编译、重新部署。&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin: 1.2em 0px; letter-spacing: 0.1em; color: rgb(51, 51, 51); text-align: justify; line-height: 1.8; font-size: 15px; visibility: visible;&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;后来把流程拆成了&lt;/span&gt;&lt;strong style=&quot;font-weight: 600; background-image: linear-gradient(135deg, rgb(0, 122, 255), rgb(88, 86, 214)); background-clip: text; color: transparent; visibility: visible;&quot; class=&quot;js_darkmode__bg__1&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;节点+端口&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;的模型。每个检测步骤是一个节点，节点有输入端口和输出端口，节点之间通过端口连接。配置文件定义节点列表和连接关系。换型号改配置文件就行，代码不用动。&lt;/span&gt;&lt;/p&gt;&lt;h2 style=&quot;padding: 0.4em 0px 0.5em 0.8em; margin: 1.8em 0px 1em; color: rgb(29, 29, 31); font-size: 20px; font-weight: 600; text-align: left; border-left: 3px solid; border-image: linear-gradient(rgb(0, 122, 255), rgb(88, 86, 214)) 1 / 1 / 0 stretch; visibility: visible;&quot; class=&quot;js_darkmode__bg__2&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;一、问题出在哪&lt;/span&gt;&lt;/h2&gt;&lt;p style=&quot;margin: 1.2em 0px; letter-spacing: 0.1em; color: rgb(51, 51, 51); text-align: justify; line-height: 1.8; font-size: 15px; visibility: visible;&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;写死的流程长这样：&lt;/span&gt;&lt;/p&gt;&lt;pre style=&quot;display: block; box-sizing: border-box; max-width: 100%; color: rgb(36, 41, 46); background: rgb(255, 255, 255); font-size: 90%; line-height: 1.5; margin: 10px 8px; padding: 0px; border: 1px solid rgba(0, 0, 0, 0.04); border-radius: 8px; overflow: auto hidden; visibility: visible;&quot; class=&quot;js_darkmode__1&quot;&gt;&lt;span style=&quot;display: flex; padding: 10px 14px 0px; visibility: visible;&quot;&gt;&lt;svg width=&quot;45&quot; height=&quot;13&quot; viewbox=&quot;0 0 450 130&quot; aria-label=&quot;插图&quot; style=&quot;visibility: visible;&quot;&gt;&lt;ellipse cx=&quot;50&quot; cy=&quot;65&quot; rx=&quot;50&quot; ry=&quot;52&quot; stroke=&quot;rgb(220,60,54)&quot; stroke-width=&quot;2&quot; fill=&quot;rgb(237,108,96)&quot; style=&quot;visibility: visible;&quot;&gt;&lt;/ellipse&gt;&lt;ellipse cx=&quot;225&quot; cy=&quot;65&quot; rx=&quot;50&quot; ry=&quot;52&quot; stroke=&quot;rgb(218,151,33)&quot; stroke-width=&quot;2&quot; fill=&quot;rgb(247,193,81)&quot; style=&quot;visibility: visible;&quot;&gt;&lt;/ellipse&gt;&lt;ellipse cx=&quot;400&quot; cy=&quot;65&quot; rx=&quot;50&quot; ry=&quot;52&quot; stroke=&quot;rgb(27,161,37)&quot; stroke-width=&quot;2&quot; fill=&quot;rgb(100,200,86)&quot; style=&quot;visibility: visible;&quot;&gt;&lt;/ellipse&gt;&lt;/svg&gt;&lt;/span&gt;&lt;code style=&quot;display: -webkit-box; box-sizing: border-box; padding: 0.5em 1em 1em; margin: 0px; overflow: auto hidden; color: inherit; background: none; white-space: nowrap; word-break: normal; overflow-wrap: normal; font-family: &amp;quot;Fira Code&amp;quot;, Menlo, &amp;quot;Operator Mono&amp;quot;, Consolas, Monaco, monospace; tab-size: 2; visibility: visible;&quot;&gt;&lt;span style=&quot;display: block; visibility: visible;&quot;&gt;&lt;span style=&quot;color: #6A737D; font-style: italic; visibility: visible;&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;// ❌ 流程写死在代码里&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;&lt;br style=&quot;visibility: visible;&quot;/&gt;&lt;/span&gt;&lt;span style=&quot;color: #D73A49; font-weight: bold; visibility: visible;&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;public&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;&amp;nbsp;DetectionResult&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #032F62; visibility: visible;&quot; class=&quot;js_darkmode__2&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;Detect&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: inherit; visibility: visible;&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;Mat image&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;&lt;br style=&quot;visibility: visible;&quot;/&gt;&lt;/span&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;&lt;br style=&quot;visibility: visible;&quot;/&gt;&lt;/span&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #6A737D; font-style: italic; visibility: visible;&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;// 步骤1：灰度化&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;&lt;br style=&quot;visibility: visible;&quot;/&gt;&lt;/span&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;&amp;nbsp; &amp;nbsp; Mat gray =&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #D73A49; font-weight: bold; visibility: visible;&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;new&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;&amp;nbsp;Mat();&lt;/span&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;&lt;br style=&quot;visibility: visible;&quot;/&gt;&lt;/span&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;&amp;nbsp; &amp;nbsp; Cv2.CvtColor(image, gray, ColorConversionCodes.BGR2GRAY);&lt;/span&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;&lt;br style=&quot;visibility: visible;&quot;/&gt;&lt;/span&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;&lt;br style=&quot;visibility: visible;&quot;/&gt;&lt;/span&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #6A737D; font-style: italic; visibility: visible;&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;// 步骤2：滤波&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;&lt;br style=&quot;visibility: visible;&quot;/&gt;&lt;/span&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;&amp;nbsp; &amp;nbsp; Mat blurred =&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #D73A49; font-weight: bold; visibility: visible;&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;new&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;&amp;nbsp;Mat();&lt;/span&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;&lt;br style=&quot;visibility: visible;&quot;/&gt;&lt;/span&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;&amp;nbsp; &amp;nbsp; Cv2.GaussianBlur(gray, blurred,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #D73A49; font-weight: bold; visibility: visible;&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;new&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;&amp;nbsp;Size(&lt;/span&gt;&lt;span style=&quot;color: #005CC5; visibility: visible;&quot; class=&quot;js_darkmode__3&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;5&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #005CC5; visibility: visible;&quot; class=&quot;js_darkmode__4&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;5&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;),&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #005CC5; visibility: visible;&quot; class=&quot;js_darkmode__5&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;1.5&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;);&lt;/span&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;&lt;br style=&quot;visibility: visible;&quot;/&gt;&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;// 步骤3：阈值分割&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; Mat binary =&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;new&lt;/span&gt;&amp;nbsp;Mat();&lt;br/&gt;&amp;nbsp; &amp;nbsp; Cv2.Threshold(blurred, binary,&amp;nbsp;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__6&quot;&gt;0&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__7&quot;&gt;255&lt;/span&gt;,&amp;nbsp;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ThresholdTypes.Binary | ThresholdTypes.Otsu);&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;// 步骤4：轮廓分析&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; Point[][] contours;&lt;br/&gt;&amp;nbsp; &amp;nbsp; Cv2.FindContours(binary,&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;out&lt;/span&gt;&amp;nbsp;contours,&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;out&lt;/span&gt;&amp;nbsp;_, ...);&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;// 步骤5：判定&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__8&quot;&gt;bool&lt;/span&gt;&amp;nbsp;isPass = contours.Length &amp;lt;&amp;nbsp;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__9&quot;&gt;10&lt;/span&gt;;&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;new&lt;/span&gt;&amp;nbsp;DetectionResult { IsPass = isPass };&lt;br/&gt;}&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p style=&quot;margin: 1.2em 0;letter-spacing: 0.1em;color: #333333;text-align: justify;line-height: 1.8;font-size: 15px;&quot;&gt;每个型号的流程不同，就得写多个方法，或者加&lt;code style=&quot;display: inline-block;font-size: 90%;color: #4f46cf;background: linear-gradient(180deg, rgba(88, 86, 214, 0.12), rgba(255, 255, 255, 0.9));padding: 2px 7px;border-radius: 999px;border: 1px solid rgba(88, 86, 214, 0.14);font-family: &amp;#39;SFMono-Regular&amp;#39;, Consolas, Menlo, monospace;line-height: 1.4;box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.9);&quot; class=&quot;js_darkmode__bg__3 js_darkmode__10&quot;&gt;if-else&lt;/code&gt;判断型号。步骤越加越多，&lt;code style=&quot;display: inline-block;font-size: 90%;color: #4f46cf;background: linear-gradient(180deg, rgba(88, 86, 214, 0.12), rgba(255, 255, 255, 0.9));padding: 2px 7px;border-radius: 999px;border: 1px solid rgba(88, 86, 214, 0.14);font-family: &amp;#39;SFMono-Regular&amp;#39;, Consolas, Menlo, monospace;line-height: 1.4;box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.9);&quot; class=&quot;js_darkmode__bg__4 js_darkmode__11&quot;&gt;if-else&lt;/code&gt;越来越长，改一处代码要测所有型号。&lt;/p&gt;&lt;h2 style=&quot;padding: 0.4em 0 0.5em 0.8em;margin: 1.8em 0 1em;color: #1d1d1f;font-size: 20px;font-weight: 600;text-align: left;border-left: 3px solid;border-image: linear-gradient(to bottom, #007aff, #5856d6) 1;&quot; class=&quot;js_darkmode__bg__5&quot;&gt;二、节点和端口的设计&lt;/h2&gt;&lt;p style=&quot;margin: 1.2em 0;letter-spacing: 0.1em;color: #333333;text-align: justify;line-height: 1.8;font-size: 15px;&quot;&gt;核心抽象就两个：&lt;/p&gt;&lt;p style=&quot;margin: 1.2em 0;letter-spacing: 0.1em;color: #333333;text-align: justify;line-height: 1.8;font-size: 15px;&quot;&gt;&lt;strong style=&quot;font-weight: 600;background-image: linear-gradient(135deg, #007aff, #5856d6);-webkit-background-clip: text;background-clip: text;color: transparent;&quot; class=&quot;js_darkmode__bg__6&quot;&gt;节点（INode）&lt;/strong&gt;&amp;nbsp;：一个处理单元。有输入端口和输出端口。执行的时候从输入端口取数据，处理完往输出端口写数据。&lt;/p&gt;&lt;p style=&quot;margin: 1.2em 0;letter-spacing: 0.1em;color: #333333;text-align: justify;line-height: 1.8;font-size: 15px;&quot;&gt;&lt;strong style=&quot;font-weight: 600;background-image: linear-gradient(135deg, #007aff, #5856d6);-webkit-background-clip: text;background-clip: text;color: transparent;&quot; class=&quot;js_darkmode__bg__7&quot;&gt;端口（DataPort）&lt;/strong&gt;&amp;nbsp;：节点之间的数据通道。有名字、有数据类型。一个节点的输出端口连到另一个节点的输入端口。&lt;/p&gt;&lt;pre style=&quot;display: block;box-sizing: border-box;max-width: 100%;color: #24292e;background: #fff;font-size: 90%;line-height: 1.5;margin: 10px 8px;padding: 0;border: 1px solid rgba(0, 0, 0, 0.04);border-radius: 8px;overflow-x: auto;overflow-y: hidden;-webkit-overflow-scrolling: touch;&quot; class=&quot;js_darkmode__12&quot;&gt;&lt;span style=&quot;display: flex;padding: 10px 14px 0;&quot;&gt;&lt;svg width=&quot;45&quot; height=&quot;13&quot; viewbox=&quot;0 0 450 130&quot; aria-label=&quot;插图&quot;&gt;&lt;ellipse cx=&quot;50&quot; cy=&quot;65&quot; rx=&quot;50&quot; ry=&quot;52&quot; stroke=&quot;rgb(220,60,54)&quot; stroke-width=&quot;2&quot; fill=&quot;rgb(237,108,96)&quot;&gt;&lt;/ellipse&gt;&lt;ellipse cx=&quot;225&quot; cy=&quot;65&quot; rx=&quot;50&quot; ry=&quot;52&quot; stroke=&quot;rgb(218,151,33)&quot; stroke-width=&quot;2&quot; fill=&quot;rgb(247,193,81)&quot;&gt;&lt;/ellipse&gt;&lt;ellipse cx=&quot;400&quot; cy=&quot;65&quot; rx=&quot;50&quot; ry=&quot;52&quot; stroke=&quot;rgb(27,161,37)&quot; stroke-width=&quot;2&quot; fill=&quot;rgb(100,200,86)&quot;&gt;&lt;/ellipse&gt;&lt;/svg&gt;&lt;/span&gt;&lt;code style=&quot;display: -webkit-box;box-sizing: border-box;padding: 0.5em 1em 1em;margin: 0;overflow-x: auto;overflow-y: hidden;color: inherit;background: none;white-space: nowrap;word-break: normal;overflow-wrap: normal;font-family: &amp;#39;Fira Code&amp;#39;, Menlo, &amp;#39;Operator Mono&amp;#39;, Consolas, Monaco, monospace;tab-size: 2;&quot;&gt;&lt;span style=&quot;display: block;&quot;&gt;[图像采集] --image--&amp;gt; [灰度化] --gray--&amp;gt; [滤波] --blurred--&amp;gt; [阈值分割] --binary--&amp;gt; [轮廓分析] --contours--&amp;gt; [判定] --result--&amp;gt; [输出]&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p style=&quot;margin: 1.2em 0;letter-spacing: 0.1em;color: #333333;text-align: justify;line-height: 1.8;font-size: 15px;&quot;&gt;每个节点只管自己的输入输出，不关心上游是谁、下游是谁。&lt;/p&gt;&lt;h2 style=&quot;padding: 0.4em 0 0.5em 0.8em;margin: 1.8em 0 1em;color: #1d1d1f;font-size: 20px;font-weight: 600;text-align: left;border-left: 3px solid;border-image: linear-gradient(to bottom, #007aff, #5856d6) 1;&quot; class=&quot;js_darkmode__bg__8&quot;&gt;三、核心接口&lt;/h2&gt;&lt;pre style=&quot;display: block;box-sizing: border-box;max-width: 100%;color: #24292e;background: #fff;font-size: 90%;line-height: 1.5;margin: 10px 8px;padding: 0;border: 1px solid rgba(0, 0, 0, 0.04);border-radius: 8px;overflow-x: auto;overflow-y: hidden;-webkit-overflow-scrolling: touch;&quot; class=&quot;js_darkmode__13&quot;&gt;&lt;span style=&quot;display: flex;padding: 10px 14px 0;&quot;&gt;&lt;svg width=&quot;45&quot; height=&quot;13&quot; viewbox=&quot;0 0 450 130&quot; aria-label=&quot;插图&quot;&gt;&lt;ellipse cx=&quot;50&quot; cy=&quot;65&quot; rx=&quot;50&quot; ry=&quot;52&quot; stroke=&quot;rgb(220,60,54)&quot; stroke-width=&quot;2&quot; fill=&quot;rgb(237,108,96)&quot;&gt;&lt;/ellipse&gt;&lt;ellipse cx=&quot;225&quot; cy=&quot;65&quot; rx=&quot;50&quot; ry=&quot;52&quot; stroke=&quot;rgb(218,151,33)&quot; stroke-width=&quot;2&quot; fill=&quot;rgb(247,193,81)&quot;&gt;&lt;/ellipse&gt;&lt;ellipse cx=&quot;400&quot; cy=&quot;65&quot; rx=&quot;50&quot; ry=&quot;52&quot; stroke=&quot;rgb(27,161,37)&quot; stroke-width=&quot;2&quot; fill=&quot;rgb(100,200,86)&quot;&gt;&lt;/ellipse&gt;&lt;/svg&gt;&lt;/span&gt;&lt;code style=&quot;display: -webkit-box;box-sizing: border-box;padding: 0.5em 1em 1em;margin: 0;overflow-x: auto;overflow-y: hidden;color: inherit;background: none;white-space: nowrap;word-break: normal;overflow-wrap: normal;font-family: &amp;#39;Fira Code&amp;#39;, Menlo, &amp;#39;Operator Mono&amp;#39;, Consolas, Monaco, monospace;tab-size: 2;&quot;&gt;&lt;span style=&quot;display: block;&quot;&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;using&lt;/span&gt;&amp;nbsp;System;&lt;br/&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;using&lt;/span&gt;&amp;nbsp;System.Collections.Generic;&lt;br/&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;using&lt;/span&gt;&amp;nbsp;OpenCvSharp;&lt;br/&gt;&lt;br/&gt;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;///&amp;nbsp;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;///&amp;nbsp;数据端口&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;///&amp;nbsp;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__14&quot;&gt;DataPort&lt;/span&gt;&lt;br/&gt;{&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__15&quot;&gt;string&lt;/span&gt;&amp;nbsp;Name {&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;get&lt;/span&gt;;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;set&lt;/span&gt;; }&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;public&lt;/span&gt;&amp;nbsp;Type DataType {&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;get&lt;/span&gt;;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;set&lt;/span&gt;; }&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__16&quot;&gt;object&lt;/span&gt;&amp;nbsp;Data {&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;get&lt;/span&gt;;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;set&lt;/span&gt;; }&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__17&quot;&gt;bool&lt;/span&gt;&amp;nbsp;HasData =&amp;gt; Data !=&amp;nbsp;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__18&quot;&gt;null&lt;/span&gt;;&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__19&quot;&gt;DataPort&lt;/span&gt;(&lt;span style=&quot;color: inherit;&quot;&gt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__20&quot;&gt;string&lt;/span&gt;&amp;nbsp;name, Type dataType&lt;/span&gt;)&lt;br/&gt;&amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Name = name;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; DataType = dataType;&lt;br/&gt;&amp;nbsp; &amp;nbsp; }&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;///&amp;nbsp;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;///&amp;nbsp;流程节点接口&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;///&amp;nbsp;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;interface&lt;/span&gt;&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__21&quot;&gt;INode&lt;/span&gt;&lt;br/&gt;{&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__22&quot;&gt;string&lt;/span&gt;&amp;nbsp;NodeId {&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;get&lt;/span&gt;; }&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__23&quot;&gt;string&lt;/span&gt;&amp;nbsp;NodeType {&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;get&lt;/span&gt;; }&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;// 输入端口&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; Dictionary&amp;lt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__24&quot;&gt;string&lt;/span&gt;, DataPort&amp;gt; InputPorts {&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;get&lt;/span&gt;; }&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;// 输出端口&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; Dictionary&amp;lt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__25&quot;&gt;string&lt;/span&gt;, DataPort&amp;gt; OutputPorts {&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;get&lt;/span&gt;; }&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;// 初始化（从配置读参数）&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;void&lt;/span&gt;&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__26&quot;&gt;Initialize&lt;/span&gt;(&lt;span style=&quot;color: inherit;&quot;&gt;Dictionary&amp;lt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__27&quot;&gt;string&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__28&quot;&gt;object&lt;/span&gt;&amp;gt; parameters&lt;/span&gt;);&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;// 执行&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__29&quot;&gt;bool&lt;/span&gt;&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__30&quot;&gt;Execute&lt;/span&gt;();&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;///&amp;nbsp;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;///&amp;nbsp;节点基类&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;///&amp;nbsp;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;abstract&lt;/span&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__31&quot;&gt;NodeBase&lt;/span&gt;&amp;nbsp;:&amp;nbsp;&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__32&quot;&gt;INode&lt;/span&gt;&lt;br/&gt;{&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__33&quot;&gt;string&lt;/span&gt;&amp;nbsp;NodeId {&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;get&lt;/span&gt;;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;protected&lt;/span&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;set&lt;/span&gt;; }&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;abstract&lt;/span&gt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__34&quot;&gt;string&lt;/span&gt;&amp;nbsp;NodeType {&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;get&lt;/span&gt;; }&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;public&lt;/span&gt;&amp;nbsp;Dictionary&amp;lt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__35&quot;&gt;string&lt;/span&gt;, DataPort&amp;gt; InputPorts {&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;get&lt;/span&gt;; } =&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;new&lt;/span&gt;();&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;public&lt;/span&gt;&amp;nbsp;Dictionary&amp;lt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__36&quot;&gt;string&lt;/span&gt;, DataPort&amp;gt; OutputPorts {&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;get&lt;/span&gt;; } =&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;new&lt;/span&gt;();&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;protected&lt;/span&gt;&amp;nbsp;Dictionary&amp;lt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__37&quot;&gt;string&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__38&quot;&gt;object&lt;/span&gt;&amp;gt; _parameters =&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;new&lt;/span&gt;();&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;virtual&lt;/span&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;void&lt;/span&gt;&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__39&quot;&gt;Initialize&lt;/span&gt;(&lt;span style=&quot;color: inherit;&quot;&gt;Dictionary&amp;lt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__40&quot;&gt;string&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__41&quot;&gt;object&lt;/span&gt;&amp;gt; parameters&lt;/span&gt;)&lt;br/&gt;&amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _parameters = parameters ??&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;new&lt;/span&gt;&amp;nbsp;Dictionary&amp;lt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__42&quot;&gt;string&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__43&quot;&gt;object&lt;/span&gt;&amp;gt;();&lt;br/&gt;&amp;nbsp; &amp;nbsp; }&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;abstract&lt;/span&gt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__44&quot;&gt;bool&lt;/span&gt;&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__45&quot;&gt;Execute&lt;/span&gt;();&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;///&amp;nbsp;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;///&amp;nbsp;添加输入端口&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;///&amp;nbsp;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;protected&lt;/span&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;void&lt;/span&gt;&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__46&quot;&gt;AddInputPort&lt;/span&gt;(&lt;span style=&quot;color: inherit;&quot;&gt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__47&quot;&gt;string&lt;/span&gt;&amp;nbsp;name, Type type&lt;/span&gt;)&lt;br/&gt;&amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; InputPorts[name] =&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;new&lt;/span&gt;&amp;nbsp;DataPort(name, type);&lt;br/&gt;&amp;nbsp; &amp;nbsp; }&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;///&amp;nbsp;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;///&amp;nbsp;添加输出端口&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;///&amp;nbsp;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;protected&lt;/span&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;void&lt;/span&gt;&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__48&quot;&gt;AddOutputPort&lt;/span&gt;(&lt;span style=&quot;color: inherit;&quot;&gt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__49&quot;&gt;string&lt;/span&gt;&amp;nbsp;name, Type type&lt;/span&gt;)&lt;br/&gt;&amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; OutputPorts[name] =&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;new&lt;/span&gt;&amp;nbsp;DataPort(name, type);&lt;br/&gt;&amp;nbsp; &amp;nbsp; }&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;///&amp;nbsp;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;///&amp;nbsp;从输入端口取数据&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;///&amp;nbsp;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;protected&lt;/span&gt;&amp;nbsp;T&amp;nbsp;&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__50&quot;&gt;GetInput&lt;/span&gt;&amp;lt;&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__51&quot;&gt;T&lt;/span&gt;&amp;gt;(&lt;span style=&quot;color: inherit;&quot;&gt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__52&quot;&gt;string&lt;/span&gt;&amp;nbsp;portName&lt;/span&gt;)&lt;br/&gt;&amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;if&lt;/span&gt;&amp;nbsp;(InputPorts.TryGetValue(portName,&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;out&lt;/span&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;var&lt;/span&gt;&amp;nbsp;port) &amp;amp;&amp;amp; port.HasData)&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;return&lt;/span&gt;&amp;nbsp;(T)port.Data;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__53&quot;&gt;default&lt;/span&gt;(T);&lt;br/&gt;&amp;nbsp; &amp;nbsp; }&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;///&amp;nbsp;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;///&amp;nbsp;往输出端口写数据&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;///&amp;nbsp;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;protected&lt;/span&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;void&lt;/span&gt;&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__54&quot;&gt;SetOutput&lt;/span&gt;(&lt;span style=&quot;color: inherit;&quot;&gt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__55&quot;&gt;string&lt;/span&gt;&amp;nbsp;portName,&amp;nbsp;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__56&quot;&gt;object&lt;/span&gt;&amp;nbsp;data&lt;/span&gt;)&lt;br/&gt;&amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;if&lt;/span&gt;&amp;nbsp;(OutputPorts.TryGetValue(portName,&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;out&lt;/span&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;var&lt;/span&gt;&amp;nbsp;port))&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; port.Data = data;&lt;br/&gt;&amp;nbsp; &amp;nbsp; }&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;///&amp;nbsp;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;///&amp;nbsp;获取参数&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;///&amp;nbsp;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;protected&lt;/span&gt;&amp;nbsp;T&amp;nbsp;&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__57&quot;&gt;GetParam&lt;/span&gt;&amp;lt;&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__58&quot;&gt;T&lt;/span&gt;&amp;gt;(&lt;span style=&quot;color: inherit;&quot;&gt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__59&quot;&gt;string&lt;/span&gt;&amp;nbsp;name, T defaultValue&lt;/span&gt;)&lt;br/&gt;&amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;if&lt;/span&gt;&amp;nbsp;(_parameters.TryGetValue(name,&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;out&lt;/span&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;value&lt;/span&gt;))&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;is&lt;/span&gt;&amp;nbsp;T typed)&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;return&lt;/span&gt;&amp;nbsp;typed;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;try&lt;/span&gt;&amp;nbsp;{&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;return&lt;/span&gt;&amp;nbsp;(T)Convert.ChangeType(&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;value&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;typeof&lt;/span&gt;(T)); }&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;catch&lt;/span&gt;&amp;nbsp;{&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;return&lt;/span&gt;&amp;nbsp;defaultValue; }&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;return&lt;/span&gt;&amp;nbsp;defaultValue;&lt;br/&gt;&amp;nbsp; &amp;nbsp; }&lt;br/&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;h2 style=&quot;padding: 0.4em 0 0.5em 0.8em;margin: 1.8em 0 1em;color: #1d1d1f;font-size: 20px;font-weight: 600;text-align: left;border-left: 3px solid;border-image: linear-gradient(to bottom, #007aff, #5856d6) 1;&quot; class=&quot;js_darkmode__bg__9&quot;&gt;四、几个常用的节点实现&lt;/h2&gt;&lt;pre style=&quot;display: block;box-sizing: border-box;max-width: 100%;color: #24292e;background: #fff;font-size: 90%;line-height: 1.5;margin: 10px 8px;padding: 0;border: 1px solid rgba(0, 0, 0, 0.04);border-radius: 8px;overflow-x: auto;overflow-y: hidden;-webkit-overflow-scrolling: touch;&quot; class=&quot;js_darkmode__60&quot;&gt;&lt;span style=&quot;display: flex;padding: 10px 14px 0;&quot;&gt;&lt;svg width=&quot;45&quot; height=&quot;13&quot; viewbox=&quot;0 0 450 130&quot; aria-label=&quot;插图&quot;&gt;&lt;ellipse cx=&quot;50&quot; cy=&quot;65&quot; rx=&quot;50&quot; ry=&quot;52&quot; stroke=&quot;rgb(220,60,54)&quot; stroke-width=&quot;2&quot; fill=&quot;rgb(237,108,96)&quot;&gt;&lt;/ellipse&gt;&lt;ellipse cx=&quot;225&quot; cy=&quot;65&quot; rx=&quot;50&quot; ry=&quot;52&quot; stroke=&quot;rgb(218,151,33)&quot; stroke-width=&quot;2&quot; fill=&quot;rgb(247,193,81)&quot;&gt;&lt;/ellipse&gt;&lt;ellipse cx=&quot;400&quot; cy=&quot;65&quot; rx=&quot;50&quot; ry=&quot;52&quot; stroke=&quot;rgb(27,161,37)&quot; stroke-width=&quot;2&quot; fill=&quot;rgb(100,200,86)&quot;&gt;&lt;/ellipse&gt;&lt;/svg&gt;&lt;/span&gt;&lt;code style=&quot;display: -webkit-box;box-sizing: border-box;padding: 0.5em 1em 1em;margin: 0;overflow-x: auto;overflow-y: hidden;color: inherit;background: none;white-space: nowrap;word-break: normal;overflow-wrap: normal;font-family: &amp;#39;Fira Code&amp;#39;, Menlo, &amp;#39;Operator Mono&amp;#39;, Consolas, Monaco, monospace;tab-size: 2;&quot;&gt;&lt;span style=&quot;display: block;&quot;&gt;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;///&amp;nbsp;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;///&amp;nbsp;图像采集节点&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;///&amp;nbsp;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__61&quot;&gt;CaptureNode&lt;/span&gt;&amp;nbsp;:&amp;nbsp;&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__62&quot;&gt;NodeBase&lt;/span&gt;&lt;br/&gt;{&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;override&lt;/span&gt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__63&quot;&gt;string&lt;/span&gt;&amp;nbsp;NodeType =&amp;gt;&amp;nbsp;&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__64&quot;&gt;&amp;quot;Capture&amp;quot;&lt;/span&gt;;&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__65&quot;&gt;CaptureNode&lt;/span&gt;()&lt;br/&gt;&amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AddOutputPort(&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__66&quot;&gt;&amp;quot;image&amp;quot;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;typeof&lt;/span&gt;(Mat));&lt;br/&gt;&amp;nbsp; &amp;nbsp; }&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;override&lt;/span&gt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__67&quot;&gt;bool&lt;/span&gt;&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__68&quot;&gt;Execute&lt;/span&gt;()&lt;br/&gt;&amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;// 从相机采集一帧（实际项目中接相机SDK）&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Mat image = CaptureFromCamera();&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;if&lt;/span&gt;&amp;nbsp;(image ==&amp;nbsp;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__69&quot;&gt;null&lt;/span&gt;&amp;nbsp;|| image.Empty())&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__70&quot;&gt;false&lt;/span&gt;;&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SetOutput(&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__71&quot;&gt;&amp;quot;image&amp;quot;&lt;/span&gt;, image);&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__72&quot;&gt;true&lt;/span&gt;;&lt;br/&gt;&amp;nbsp; &amp;nbsp; }&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;private&lt;/span&gt;&amp;nbsp;Mat&amp;nbsp;&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__73&quot;&gt;CaptureFromCamera&lt;/span&gt;()&lt;br/&gt;&amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;// 实际项目替换为相机取图&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;new&lt;/span&gt;&amp;nbsp;Mat(&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__74&quot;&gt;480&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__75&quot;&gt;640&lt;/span&gt;, MatType.CV_8UC3,&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;new&lt;/span&gt;&amp;nbsp;Scalar(&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__76&quot;&gt;128&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__77&quot;&gt;128&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__78&quot;&gt;128&lt;/span&gt;));&lt;br/&gt;&amp;nbsp; &amp;nbsp; }&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;///&amp;nbsp;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;///&amp;nbsp;灰度化节点&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;///&amp;nbsp;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__79&quot;&gt;GrayscaleNode&lt;/span&gt;&amp;nbsp;:&amp;nbsp;&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__80&quot;&gt;NodeBase&lt;/span&gt;&lt;br/&gt;{&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;override&lt;/span&gt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__81&quot;&gt;string&lt;/span&gt;&amp;nbsp;NodeType =&amp;gt;&amp;nbsp;&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__82&quot;&gt;&amp;quot;Grayscale&amp;quot;&lt;/span&gt;;&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__83&quot;&gt;GrayscaleNode&lt;/span&gt;()&lt;br/&gt;&amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AddInputPort(&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__84&quot;&gt;&amp;quot;image&amp;quot;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;typeof&lt;/span&gt;(Mat));&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AddOutputPort(&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__85&quot;&gt;&amp;quot;gray&amp;quot;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;typeof&lt;/span&gt;(Mat));&lt;br/&gt;&amp;nbsp; &amp;nbsp; }&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;override&lt;/span&gt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__86&quot;&gt;bool&lt;/span&gt;&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__87&quot;&gt;Execute&lt;/span&gt;()&lt;br/&gt;&amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Mat image = GetInput&amp;lt;Mat&amp;gt;(&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__88&quot;&gt;&amp;quot;image&amp;quot;&lt;/span&gt;);&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;if&lt;/span&gt;&amp;nbsp;(image ==&amp;nbsp;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__89&quot;&gt;null&lt;/span&gt;)&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__90&quot;&gt;false&lt;/span&gt;;&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Mat gray =&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;new&lt;/span&gt;&amp;nbsp;Mat();&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;if&lt;/span&gt;&amp;nbsp;(image.Channels() ==&amp;nbsp;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__91&quot;&gt;3&lt;/span&gt;)&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Cv2.CvtColor(image, gray, ColorConversionCodes.BGR2GRAY);&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;else&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; image.CopyTo(gray);&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SetOutput(&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__92&quot;&gt;&amp;quot;gray&amp;quot;&lt;/span&gt;, gray);&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__93&quot;&gt;true&lt;/span&gt;;&lt;br/&gt;&amp;nbsp; &amp;nbsp; }&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;///&amp;nbsp;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;///&amp;nbsp;高斯滤波节点&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;///&amp;nbsp;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__94&quot;&gt;GaussianBlurNode&lt;/span&gt;&amp;nbsp;:&amp;nbsp;&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__95&quot;&gt;NodeBase&lt;/span&gt;&lt;br/&gt;{&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;override&lt;/span&gt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__96&quot;&gt;string&lt;/span&gt;&amp;nbsp;NodeType =&amp;gt;&amp;nbsp;&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__97&quot;&gt;&amp;quot;GaussianBlur&amp;quot;&lt;/span&gt;;&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__98&quot;&gt;GaussianBlurNode&lt;/span&gt;()&lt;br/&gt;&amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AddInputPort(&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__99&quot;&gt;&amp;quot;image&amp;quot;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;typeof&lt;/span&gt;(Mat));&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AddOutputPort(&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__100&quot;&gt;&amp;quot;blurred&amp;quot;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;typeof&lt;/span&gt;(Mat));&lt;br/&gt;&amp;nbsp; &amp;nbsp; }&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;override&lt;/span&gt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__101&quot;&gt;bool&lt;/span&gt;&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__102&quot;&gt;Execute&lt;/span&gt;()&lt;br/&gt;&amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Mat image = GetInput&amp;lt;Mat&amp;gt;(&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__103&quot;&gt;&amp;quot;image&amp;quot;&lt;/span&gt;);&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;if&lt;/span&gt;&amp;nbsp;(image ==&amp;nbsp;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__104&quot;&gt;null&lt;/span&gt;)&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__105&quot;&gt;false&lt;/span&gt;;&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__106&quot;&gt;int&lt;/span&gt;&amp;nbsp;kernelSize = GetParam(&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__107&quot;&gt;&amp;quot;kernelSize&amp;quot;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__108&quot;&gt;5&lt;/span&gt;);&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__109&quot;&gt;double&lt;/span&gt;&amp;nbsp;sigma = GetParam(&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__110&quot;&gt;&amp;quot;sigma&amp;quot;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__111&quot;&gt;1.5&lt;/span&gt;);&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Mat blurred =&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;new&lt;/span&gt;&amp;nbsp;Mat();&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Cv2.GaussianBlur(image, blurred,&amp;nbsp;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;new&lt;/span&gt;&amp;nbsp;Size(kernelSize, kernelSize), sigma);&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SetOutput(&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__112&quot;&gt;&amp;quot;blurred&amp;quot;&lt;/span&gt;, blurred);&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__113&quot;&gt;true&lt;/span&gt;;&lt;br/&gt;&amp;nbsp; &amp;nbsp; }&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;///&amp;nbsp;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;///&amp;nbsp;阈值分割节点&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;///&amp;nbsp;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__114&quot;&gt;ThresholdNode&lt;/span&gt;&amp;nbsp;:&amp;nbsp;&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__115&quot;&gt;NodeBase&lt;/span&gt;&lt;br/&gt;{&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;override&lt;/span&gt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__116&quot;&gt;string&lt;/span&gt;&amp;nbsp;NodeType =&amp;gt;&amp;nbsp;&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__117&quot;&gt;&amp;quot;Threshold&amp;quot;&lt;/span&gt;;&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__118&quot;&gt;ThresholdNode&lt;/span&gt;()&lt;br/&gt;&amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AddInputPort(&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__119&quot;&gt;&amp;quot;image&amp;quot;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;typeof&lt;/span&gt;(Mat));&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AddOutputPort(&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__120&quot;&gt;&amp;quot;binary&amp;quot;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;typeof&lt;/span&gt;(Mat));&lt;br/&gt;&amp;nbsp; &amp;nbsp; }&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;override&lt;/span&gt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__121&quot;&gt;bool&lt;/span&gt;&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__122&quot;&gt;Execute&lt;/span&gt;()&lt;br/&gt;&amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Mat image = GetInput&amp;lt;Mat&amp;gt;(&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__123&quot;&gt;&amp;quot;image&amp;quot;&lt;/span&gt;);&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;if&lt;/span&gt;&amp;nbsp;(image ==&amp;nbsp;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__124&quot;&gt;null&lt;/span&gt;)&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__125&quot;&gt;false&lt;/span&gt;;&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__126&quot;&gt;string&lt;/span&gt;&amp;nbsp;method = GetParam(&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__127&quot;&gt;&amp;quot;method&amp;quot;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__128&quot;&gt;&amp;quot;otsu&amp;quot;&lt;/span&gt;);&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Mat binary =&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;new&lt;/span&gt;&amp;nbsp;Mat();&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;if&lt;/span&gt;&amp;nbsp;(method ==&amp;nbsp;&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__129&quot;&gt;&amp;quot;otsu&amp;quot;&lt;/span&gt;)&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Cv2.Threshold(image, binary,&amp;nbsp;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__130&quot;&gt;0&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__131&quot;&gt;255&lt;/span&gt;,&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ThresholdTypes.Binary | ThresholdTypes.Otsu);&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;else&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__132&quot;&gt;double&lt;/span&gt;&amp;nbsp;thresh = GetParam(&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__133&quot;&gt;&amp;quot;threshold&amp;quot;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__134&quot;&gt;128.0&lt;/span&gt;);&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Cv2.Threshold(image, binary, thresh,&amp;nbsp;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__135&quot;&gt;255&lt;/span&gt;,&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ThresholdTypes.Binary);&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SetOutput(&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__136&quot;&gt;&amp;quot;binary&amp;quot;&lt;/span&gt;, binary);&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__137&quot;&gt;true&lt;/span&gt;;&lt;br/&gt;&amp;nbsp; &amp;nbsp; }&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;///&amp;nbsp;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;///&amp;nbsp;轮廓分析节点&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;///&amp;nbsp;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__138&quot;&gt;ContourAnalysisNode&lt;/span&gt;&amp;nbsp;:&amp;nbsp;&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__139&quot;&gt;NodeBase&lt;/span&gt;&lt;br/&gt;{&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;override&lt;/span&gt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__140&quot;&gt;string&lt;/span&gt;&amp;nbsp;NodeType =&amp;gt;&amp;nbsp;&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__141&quot;&gt;&amp;quot;ContourAnalysis&amp;quot;&lt;/span&gt;;&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__142&quot;&gt;ContourAnalysisNode&lt;/span&gt;()&lt;br/&gt;&amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AddInputPort(&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__143&quot;&gt;&amp;quot;binary&amp;quot;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;typeof&lt;/span&gt;(Mat));&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AddOutputPort(&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__144&quot;&gt;&amp;quot;contours&amp;quot;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;typeof&lt;/span&gt;(Point[][]));&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AddOutputPort(&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__145&quot;&gt;&amp;quot;count&amp;quot;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;typeof&lt;/span&gt;(&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__146&quot;&gt;int&lt;/span&gt;));&lt;br/&gt;&amp;nbsp; &amp;nbsp; }&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;override&lt;/span&gt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__147&quot;&gt;bool&lt;/span&gt;&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__148&quot;&gt;Execute&lt;/span&gt;()&lt;br/&gt;&amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Mat binary = GetInput&amp;lt;Mat&amp;gt;(&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__149&quot;&gt;&amp;quot;binary&amp;quot;&lt;/span&gt;);&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;if&lt;/span&gt;&amp;nbsp;(binary ==&amp;nbsp;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__150&quot;&gt;null&lt;/span&gt;)&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__151&quot;&gt;false&lt;/span&gt;;&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Point[][] contours;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; HierarchyIndex[] hierarchy;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Cv2.FindContours(binary,&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;out&lt;/span&gt;&amp;nbsp;contours,&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;out&lt;/span&gt;&amp;nbsp;hierarchy,&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; RetrievalModes.External, ContourApproximationModes.ApproxSimple);&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__152&quot;&gt;double&lt;/span&gt;&amp;nbsp;minArea = GetParam(&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__153&quot;&gt;&amp;quot;minArea&amp;quot;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__154&quot;&gt;100.0&lt;/span&gt;);&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;var&lt;/span&gt;&amp;nbsp;filtered = contours.Where(c =&amp;gt; Cv2.ContourArea(c) &amp;gt;= minArea).ToArray();&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SetOutput(&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__155&quot;&gt;&amp;quot;contours&amp;quot;&lt;/span&gt;, filtered);&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SetOutput(&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__156&quot;&gt;&amp;quot;count&amp;quot;&lt;/span&gt;, filtered.Length);&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__157&quot;&gt;true&lt;/span&gt;;&lt;br/&gt;&amp;nbsp; &amp;nbsp; }&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;///&amp;nbsp;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;///&amp;nbsp;判定节点&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;///&amp;nbsp;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__158&quot;&gt;JudgmentNode&lt;/span&gt;&amp;nbsp;:&amp;nbsp;&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__159&quot;&gt;NodeBase&lt;/span&gt;&lt;br/&gt;{&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;override&lt;/span&gt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__160&quot;&gt;string&lt;/span&gt;&amp;nbsp;NodeType =&amp;gt;&amp;nbsp;&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__161&quot;&gt;&amp;quot;Judgment&amp;quot;&lt;/span&gt;;&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__162&quot;&gt;JudgmentNode&lt;/span&gt;()&lt;br/&gt;&amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AddInputPort(&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__163&quot;&gt;&amp;quot;count&amp;quot;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;typeof&lt;/span&gt;(&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__164&quot;&gt;int&lt;/span&gt;));&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AddOutputPort(&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__165&quot;&gt;&amp;quot;result&amp;quot;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;typeof&lt;/span&gt;(&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__166&quot;&gt;bool&lt;/span&gt;));&lt;br/&gt;&amp;nbsp; &amp;nbsp; }&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;override&lt;/span&gt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__167&quot;&gt;bool&lt;/span&gt;&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__168&quot;&gt;Execute&lt;/span&gt;()&lt;br/&gt;&amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__169&quot;&gt;int&lt;/span&gt;&amp;nbsp;count = GetInput&amp;lt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__170&quot;&gt;int&lt;/span&gt;&amp;gt;(&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__171&quot;&gt;&amp;quot;count&amp;quot;&lt;/span&gt;);&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__172&quot;&gt;int&lt;/span&gt;&amp;nbsp;maxCount = GetParam(&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__173&quot;&gt;&amp;quot;maxCount&amp;quot;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__174&quot;&gt;10&lt;/span&gt;);&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__175&quot;&gt;bool&lt;/span&gt;&amp;nbsp;isPass = count &amp;lt;= maxCount;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SetOutput(&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__176&quot;&gt;&amp;quot;result&amp;quot;&lt;/span&gt;, isPass);&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__177&quot;&gt;true&lt;/span&gt;;&lt;br/&gt;&amp;nbsp; &amp;nbsp; }&lt;br/&gt;}&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;h2 style=&quot;padding: 0.4em 0 0.5em 0.8em;margin: 1.8em 0 1em;color: #1d1d1f;font-size: 20px;font-weight: 600;text-align: left;border-left: 3px solid;border-image: linear-gradient(to bottom, #007aff, #5856d6) 1;&quot; class=&quot;js_darkmode__bg__10&quot;&gt;五、流程引擎&lt;/h2&gt;&lt;p style=&quot;margin: 1.2em 0;letter-spacing: 0.1em;color: #333333;text-align: justify;line-height: 1.8;font-size: 15px;&quot;&gt;流程引擎负责：根据配置创建节点、连接端口、按拓扑顺序执行。&lt;/p&gt;&lt;pre style=&quot;display: block;box-sizing: border-box;max-width: 100%;color: #24292e;background: #fff;font-size: 90%;line-height: 1.5;margin: 10px 8px;padding: 0;border: 1px solid rgba(0, 0, 0, 0.04);border-radius: 8px;overflow-x: auto;overflow-y: hidden;-webkit-overflow-scrolling: touch;&quot; class=&quot;js_darkmode__178&quot;&gt;&lt;span style=&quot;display: flex;padding: 10px 14px 0;&quot;&gt;&lt;svg width=&quot;45&quot; height=&quot;13&quot; viewbox=&quot;0 0 450 130&quot; aria-label=&quot;插图&quot;&gt;&lt;ellipse cx=&quot;50&quot; cy=&quot;65&quot; rx=&quot;50&quot; ry=&quot;52&quot; stroke=&quot;rgb(220,60,54)&quot; stroke-width=&quot;2&quot; fill=&quot;rgb(237,108,96)&quot;&gt;&lt;/ellipse&gt;&lt;ellipse cx=&quot;225&quot; cy=&quot;65&quot; rx=&quot;50&quot; ry=&quot;52&quot; stroke=&quot;rgb(218,151,33)&quot; stroke-width=&quot;2&quot; fill=&quot;rgb(247,193,81)&quot;&gt;&lt;/ellipse&gt;&lt;ellipse cx=&quot;400&quot; cy=&quot;65&quot; rx=&quot;50&quot; ry=&quot;52&quot; stroke=&quot;rgb(27,161,37)&quot; stroke-width=&quot;2&quot; fill=&quot;rgb(100,200,86)&quot;&gt;&lt;/ellipse&gt;&lt;/svg&gt;&lt;/span&gt;&lt;code style=&quot;display: -webkit-box;box-sizing: border-box;padding: 0.5em 1em 1em;margin: 0;overflow-x: auto;overflow-y: hidden;color: inherit;background: none;white-space: nowrap;word-break: normal;overflow-wrap: normal;font-family: &amp;#39;Fira Code&amp;#39;, Menlo, &amp;#39;Operator Mono&amp;#39;, Consolas, Monaco, monospace;tab-size: 2;&quot;&gt;&lt;span style=&quot;display: block;&quot;&gt;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;///&amp;nbsp;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;///&amp;nbsp;流程引擎&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;///&amp;nbsp;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__179&quot;&gt;FlowEngine&lt;/span&gt;&lt;br/&gt;{&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;private&lt;/span&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;readonly&lt;/span&gt;&amp;nbsp;Dictionary&amp;lt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__180&quot;&gt;string&lt;/span&gt;, INode&amp;gt; _nodes =&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;new&lt;/span&gt;();&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;private&lt;/span&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;readonly&lt;/span&gt;&amp;nbsp;List&amp;lt;(&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__181&quot;&gt;string&lt;/span&gt;&amp;nbsp;fromNode,&amp;nbsp;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__182&quot;&gt;string&lt;/span&gt;&amp;nbsp;fromPort,&amp;nbsp;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__183&quot;&gt;string&lt;/span&gt;&amp;nbsp;toNode,&amp;nbsp;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__184&quot;&gt;string&lt;/span&gt;&amp;nbsp;toPort)&amp;gt; _connections =&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;new&lt;/span&gt;();&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;private&lt;/span&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;readonly&lt;/span&gt;&amp;nbsp;List&amp;lt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__185&quot;&gt;string&lt;/span&gt;&amp;gt; _executionOrder =&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;new&lt;/span&gt;();&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;///&amp;nbsp;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;///&amp;nbsp;从配置构建流程&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;///&amp;nbsp;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;void&lt;/span&gt;&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__186&quot;&gt;BuildFromConfig&lt;/span&gt;(&lt;span style=&quot;color: inherit;&quot;&gt;FlowConfig config&lt;/span&gt;)&lt;br/&gt;&amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _nodes.Clear();&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _connections.Clear();&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _executionOrder.Clear();&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;// 1. 创建所有节点&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;foreach&lt;/span&gt;&amp;nbsp;(&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;var&lt;/span&gt;&amp;nbsp;nodeConfig&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;in&lt;/span&gt;&amp;nbsp;config.Nodes)&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;var&lt;/span&gt;&amp;nbsp;node = NodeFactory.Create(nodeConfig.Type);&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;if&lt;/span&gt;&amp;nbsp;(node ==&amp;nbsp;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__187&quot;&gt;null&lt;/span&gt;)&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;throw&lt;/span&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;new&lt;/span&gt;&amp;nbsp;Exception(&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__188&quot;&gt;$&amp;quot;未知节点类型:&amp;nbsp;&lt;span style=&quot;color: inherit;&quot;&gt;{nodeConfig.Type}&lt;/span&gt;&amp;quot;&lt;/span&gt;);&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;// 设置NodeId（通过反射，实际项目中可以改成构造函数传入）&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;var&lt;/span&gt;&amp;nbsp;idProp = node.GetType().GetProperty(&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__189&quot;&gt;&amp;quot;NodeId&amp;quot;&lt;/span&gt;);&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;// NodeBase的NodeId有protected setter，需要特殊处理&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;// 简化：用包装类或者工厂方法设置&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; node.Initialize(nodeConfig.Parameters);&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _nodes[nodeConfig.Id] = node;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;// 2. 建立连接&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;foreach&lt;/span&gt;&amp;nbsp;(&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;var&lt;/span&gt;&amp;nbsp;conn&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;in&lt;/span&gt;&amp;nbsp;config.Connections)&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _connections.Add((conn.FromNode, conn.FromPort,&amp;nbsp;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; conn.ToNode, conn.ToPort));&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;// 3. 拓扑排序确定执行顺序&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _executionOrder = TopologicalSort();&lt;br/&gt;&amp;nbsp; &amp;nbsp; }&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;///&amp;nbsp;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;///&amp;nbsp;执行流程&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;///&amp;nbsp;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__190&quot;&gt;bool&lt;/span&gt;&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__191&quot;&gt;Execute&lt;/span&gt;()&lt;br/&gt;&amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;foreach&lt;/span&gt;&amp;nbsp;(&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;var&lt;/span&gt;&amp;nbsp;nodeId&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;in&lt;/span&gt;&amp;nbsp;_executionOrder)&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;var&lt;/span&gt;&amp;nbsp;node = _nodes[nodeId];&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;// 从上游节点的输出端口取数据，填入当前节点的输入端口&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;foreach&lt;/span&gt;&amp;nbsp;(&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;var&lt;/span&gt;&amp;nbsp;conn&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;in&lt;/span&gt;&amp;nbsp;_connections.Where(c =&amp;gt; c.toNode == nodeId))&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;var&lt;/span&gt;&amp;nbsp;fromNode = _nodes[conn.fromNode];&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;if&lt;/span&gt;&amp;nbsp;(fromNode.OutputPorts.TryGetValue(conn.fromPort,&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;out&lt;/span&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;var&lt;/span&gt;&amp;nbsp;fromPort))&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;if&lt;/span&gt;&amp;nbsp;(node.InputPorts.TryGetValue(conn.toPort,&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;out&lt;/span&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;var&lt;/span&gt;&amp;nbsp;toPort))&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; toPort.Data = fromPort.Data;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;// 执行节点&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;if&lt;/span&gt;&amp;nbsp;(!node.Execute())&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Console.WriteLine(&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__192&quot;&gt;$&amp;quot;节点&amp;nbsp;&lt;span style=&quot;color: inherit;&quot;&gt;{nodeId}&lt;/span&gt;&amp;nbsp;执行失败&amp;quot;&lt;/span&gt;);&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__193&quot;&gt;false&lt;/span&gt;;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__194&quot;&gt;true&lt;/span&gt;;&lt;br/&gt;&amp;nbsp; &amp;nbsp; }&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;///&amp;nbsp;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;///&amp;nbsp;拓扑排序&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;///&amp;nbsp;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;private&lt;/span&gt;&amp;nbsp;List&amp;lt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__195&quot;&gt;string&lt;/span&gt;&amp;gt;&amp;nbsp;&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__196&quot;&gt;TopologicalSort&lt;/span&gt;()&lt;br/&gt;&amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;var&lt;/span&gt;&amp;nbsp;inDegree =&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;new&lt;/span&gt;&amp;nbsp;Dictionary&amp;lt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__197&quot;&gt;string&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__198&quot;&gt;int&lt;/span&gt;&amp;gt;();&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;var&lt;/span&gt;&amp;nbsp;adjacency =&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;new&lt;/span&gt;&amp;nbsp;Dictionary&amp;lt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__199&quot;&gt;string&lt;/span&gt;, List&amp;lt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__200&quot;&gt;string&lt;/span&gt;&amp;gt;&amp;gt;();&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;foreach&lt;/span&gt;&amp;nbsp;(&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;var&lt;/span&gt;&amp;nbsp;nodeId&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;in&lt;/span&gt;&amp;nbsp;_nodes.Keys)&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; inDegree[nodeId] =&amp;nbsp;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__201&quot;&gt;0&lt;/span&gt;;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; adjacency[nodeId] =&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;new&lt;/span&gt;&amp;nbsp;List&amp;lt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__202&quot;&gt;string&lt;/span&gt;&amp;gt;();&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;foreach&lt;/span&gt;&amp;nbsp;(&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;var&lt;/span&gt;&amp;nbsp;conn&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;in&lt;/span&gt;&amp;nbsp;_connections)&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; adjacency[conn.fromNode].Add(conn.toNode);&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; inDegree[conn.toNode]++;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;var&lt;/span&gt;&amp;nbsp;queue =&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;new&lt;/span&gt;&amp;nbsp;Queue&amp;lt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__203&quot;&gt;string&lt;/span&gt;&amp;gt;();&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;foreach&lt;/span&gt;&amp;nbsp;(&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;var&lt;/span&gt;&amp;nbsp;kv&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;in&lt;/span&gt;&amp;nbsp;inDegree)&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;if&lt;/span&gt;&amp;nbsp;(kv.Value ==&amp;nbsp;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__204&quot;&gt;0&lt;/span&gt;) queue.Enqueue(kv.Key);&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;var&lt;/span&gt;&amp;nbsp;result =&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;new&lt;/span&gt;&amp;nbsp;List&amp;lt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__205&quot;&gt;string&lt;/span&gt;&amp;gt;();&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;while&lt;/span&gt;&amp;nbsp;(queue.Count &amp;gt;&amp;nbsp;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__206&quot;&gt;0&lt;/span&gt;)&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;var&lt;/span&gt;&amp;nbsp;node = queue.Dequeue();&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; result.Add(node);&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;foreach&lt;/span&gt;&amp;nbsp;(&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;var&lt;/span&gt;&amp;nbsp;next&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;in&lt;/span&gt;&amp;nbsp;adjacency[node])&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; inDegree[next]--;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;if&lt;/span&gt;&amp;nbsp;(inDegree[next] ==&amp;nbsp;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__207&quot;&gt;0&lt;/span&gt;) queue.Enqueue(next);&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;if&lt;/span&gt;&amp;nbsp;(result.Count != _nodes.Count)&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;throw&lt;/span&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;new&lt;/span&gt;&amp;nbsp;Exception(&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__208&quot;&gt;&amp;quot;流程存在环&amp;quot;&lt;/span&gt;);&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;return&lt;/span&gt;&amp;nbsp;result;&lt;br/&gt;&amp;nbsp; &amp;nbsp; }&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;///&amp;nbsp;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;///&amp;nbsp;获取节点输出&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;///&amp;nbsp;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;public&lt;/span&gt;&amp;nbsp;T&amp;nbsp;&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__209&quot;&gt;GetOutput&lt;/span&gt;&amp;lt;&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__210&quot;&gt;T&lt;/span&gt;&amp;gt;(&lt;span style=&quot;color: inherit;&quot;&gt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__211&quot;&gt;string&lt;/span&gt;&amp;nbsp;nodeId,&amp;nbsp;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__212&quot;&gt;string&lt;/span&gt;&amp;nbsp;portName&lt;/span&gt;)&lt;br/&gt;&amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;if&lt;/span&gt;&amp;nbsp;(_nodes.TryGetValue(nodeId,&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;out&lt;/span&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;var&lt;/span&gt;&amp;nbsp;node))&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;if&lt;/span&gt;&amp;nbsp;(node.OutputPorts.TryGetValue(portName,&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;out&lt;/span&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;var&lt;/span&gt;&amp;nbsp;port)&amp;nbsp;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;amp;&amp;amp; port.HasData)&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;return&lt;/span&gt;&amp;nbsp;(T)port.Data;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__213&quot;&gt;default&lt;/span&gt;(T);&lt;br/&gt;&amp;nbsp; &amp;nbsp; }&lt;br/&gt;}&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;h2 style=&quot;padding: 0.4em 0 0.5em 0.8em;margin: 1.8em 0 1em;color: #1d1d1f;font-size: 20px;font-weight: 600;text-align: left;border-left: 3px solid;border-image: linear-gradient(to bottom, #007aff, #5856d6) 1;&quot; class=&quot;js_darkmode__bg__11&quot;&gt;六、配置文件和节点工厂&lt;/h2&gt;&lt;pre style=&quot;display: block;box-sizing: border-box;max-width: 100%;color: #24292e;background: #fff;font-size: 90%;line-height: 1.5;margin: 10px 8px;padding: 0;border: 1px solid rgba(0, 0, 0, 0.04);border-radius: 8px;overflow-x: auto;overflow-y: hidden;-webkit-overflow-scrolling: touch;&quot; class=&quot;js_darkmode__214&quot;&gt;&lt;span style=&quot;display: flex;padding: 10px 14px 0;&quot;&gt;&lt;svg width=&quot;45&quot; height=&quot;13&quot; viewbox=&quot;0 0 450 130&quot; aria-label=&quot;插图&quot;&gt;&lt;ellipse cx=&quot;50&quot; cy=&quot;65&quot; rx=&quot;50&quot; ry=&quot;52&quot; stroke=&quot;rgb(220,60,54)&quot; stroke-width=&quot;2&quot; fill=&quot;rgb(237,108,96)&quot;&gt;&lt;/ellipse&gt;&lt;ellipse cx=&quot;225&quot; cy=&quot;65&quot; rx=&quot;50&quot; ry=&quot;52&quot; stroke=&quot;rgb(218,151,33)&quot; stroke-width=&quot;2&quot; fill=&quot;rgb(247,193,81)&quot;&gt;&lt;/ellipse&gt;&lt;ellipse cx=&quot;400&quot; cy=&quot;65&quot; rx=&quot;50&quot; ry=&quot;52&quot; stroke=&quot;rgb(27,161,37)&quot; stroke-width=&quot;2&quot; fill=&quot;rgb(100,200,86)&quot;&gt;&lt;/ellipse&gt;&lt;/svg&gt;&lt;/span&gt;&lt;code style=&quot;display: -webkit-box;box-sizing: border-box;padding: 0.5em 1em 1em;margin: 0;overflow-x: auto;overflow-y: hidden;color: inherit;background: none;white-space: nowrap;word-break: normal;overflow-wrap: normal;font-family: &amp;#39;Fira Code&amp;#39;, Menlo, &amp;#39;Operator Mono&amp;#39;, Consolas, Monaco, monospace;tab-size: 2;&quot;&gt;&lt;span style=&quot;display: block;&quot;&gt;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;///&amp;nbsp;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;///&amp;nbsp;流程配置&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;///&amp;nbsp;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__215&quot;&gt;FlowConfig&lt;/span&gt;&lt;br/&gt;{&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__216&quot;&gt;string&lt;/span&gt;&amp;nbsp;FlowName {&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;get&lt;/span&gt;;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;set&lt;/span&gt;; }&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;public&lt;/span&gt;&amp;nbsp;List&amp;lt;NodeConfig&amp;gt; Nodes {&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;get&lt;/span&gt;;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;set&lt;/span&gt;; } =&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;new&lt;/span&gt;();&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;public&lt;/span&gt;&amp;nbsp;List&amp;lt;ConnectionConfig&amp;gt; Connections {&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;get&lt;/span&gt;;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;set&lt;/span&gt;; } =&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;new&lt;/span&gt;();&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__217&quot;&gt;NodeConfig&lt;/span&gt;&lt;br/&gt;{&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__218&quot;&gt;string&lt;/span&gt;&amp;nbsp;Id {&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;get&lt;/span&gt;;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;set&lt;/span&gt;; }&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__219&quot;&gt;string&lt;/span&gt;&amp;nbsp;Type {&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;get&lt;/span&gt;;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;set&lt;/span&gt;; }&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;public&lt;/span&gt;&amp;nbsp;Dictionary&amp;lt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__220&quot;&gt;string&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__221&quot;&gt;object&lt;/span&gt;&amp;gt; Parameters {&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;get&lt;/span&gt;;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;set&lt;/span&gt;; } =&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;new&lt;/span&gt;();&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__222&quot;&gt;ConnectionConfig&lt;/span&gt;&lt;br/&gt;{&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__223&quot;&gt;string&lt;/span&gt;&amp;nbsp;FromNode {&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;get&lt;/span&gt;;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;set&lt;/span&gt;; }&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__224&quot;&gt;string&lt;/span&gt;&amp;nbsp;FromPort {&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;get&lt;/span&gt;;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;set&lt;/span&gt;; }&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__225&quot;&gt;string&lt;/span&gt;&amp;nbsp;ToNode {&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;get&lt;/span&gt;;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;set&lt;/span&gt;; }&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__226&quot;&gt;string&lt;/span&gt;&amp;nbsp;ToPort {&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;get&lt;/span&gt;;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;set&lt;/span&gt;; }&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;///&amp;nbsp;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;///&amp;nbsp;节点工厂&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;///&amp;nbsp;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;static&lt;/span&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__227&quot;&gt;NodeFactory&lt;/span&gt;&lt;br/&gt;{&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;private&lt;/span&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;static&lt;/span&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;readonly&lt;/span&gt;&amp;nbsp;Dictionary&amp;lt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__228&quot;&gt;string&lt;/span&gt;, Func&amp;lt;INode&amp;gt;&amp;gt; _creators =&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;new&lt;/span&gt;();&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;static&lt;/span&gt;&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__229&quot;&gt;NodeFactory&lt;/span&gt;()&lt;br/&gt;&amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Register(&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__230&quot;&gt;&amp;quot;Capture&amp;quot;&lt;/span&gt;, () =&amp;gt;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;new&lt;/span&gt;&amp;nbsp;CaptureNode());&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Register(&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__231&quot;&gt;&amp;quot;Grayscale&amp;quot;&lt;/span&gt;, () =&amp;gt;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;new&lt;/span&gt;&amp;nbsp;GrayscaleNode());&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Register(&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__232&quot;&gt;&amp;quot;GaussianBlur&amp;quot;&lt;/span&gt;, () =&amp;gt;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;new&lt;/span&gt;&amp;nbsp;GaussianBlurNode());&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Register(&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__233&quot;&gt;&amp;quot;Threshold&amp;quot;&lt;/span&gt;, () =&amp;gt;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;new&lt;/span&gt;&amp;nbsp;ThresholdNode());&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Register(&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__234&quot;&gt;&amp;quot;ContourAnalysis&amp;quot;&lt;/span&gt;, () =&amp;gt;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;new&lt;/span&gt;&amp;nbsp;ContourAnalysisNode());&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Register(&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__235&quot;&gt;&amp;quot;Judgment&amp;quot;&lt;/span&gt;, () =&amp;gt;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;new&lt;/span&gt;&amp;nbsp;JudgmentNode());&lt;br/&gt;&amp;nbsp; &amp;nbsp; }&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;static&lt;/span&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;void&lt;/span&gt;&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__236&quot;&gt;Register&lt;/span&gt;(&lt;span style=&quot;color: inherit;&quot;&gt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__237&quot;&gt;string&lt;/span&gt;&amp;nbsp;type, Func&amp;lt;INode&amp;gt; creator&lt;/span&gt;)&lt;br/&gt;&amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _creators[type] = creator;&lt;br/&gt;&amp;nbsp; &amp;nbsp; }&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;static&lt;/span&gt;&amp;nbsp;INode&amp;nbsp;&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__238&quot;&gt;Create&lt;/span&gt;(&lt;span style=&quot;color: inherit;&quot;&gt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__239&quot;&gt;string&lt;/span&gt;&amp;nbsp;type&lt;/span&gt;)&lt;br/&gt;&amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;if&lt;/span&gt;&amp;nbsp;(_creators.TryGetValue(type,&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;out&lt;/span&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;var&lt;/span&gt;&amp;nbsp;creator))&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;return&lt;/span&gt;&amp;nbsp;creator();&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__240&quot;&gt;null&lt;/span&gt;;&lt;br/&gt;&amp;nbsp; &amp;nbsp; }&lt;br/&gt;}&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p style=&quot;margin: 1.2em 0;letter-spacing: 0.1em;color: #333333;text-align: justify;line-height: 1.8;font-size: 15px;&quot;&gt;JSON配置文件示例：&lt;/p&gt;&lt;pre style=&quot;display: block;box-sizing: border-box;max-width: 100%;color: #24292e;background: #fff;font-size: 90%;line-height: 1.5;margin: 10px 8px;padding: 0;border: 1px solid rgba(0, 0, 0, 0.04);border-radius: 8px;overflow-x: auto;overflow-y: hidden;-webkit-overflow-scrolling: touch;&quot; class=&quot;js_darkmode__241&quot;&gt;&lt;span style=&quot;display: flex;padding: 10px 14px 0;&quot;&gt;&lt;svg width=&quot;45&quot; height=&quot;13&quot; viewbox=&quot;0 0 450 130&quot; aria-label=&quot;插图&quot;&gt;&lt;ellipse cx=&quot;50&quot; cy=&quot;65&quot; rx=&quot;50&quot; ry=&quot;52&quot; stroke=&quot;rgb(220,60,54)&quot; stroke-width=&quot;2&quot; fill=&quot;rgb(237,108,96)&quot;&gt;&lt;/ellipse&gt;&lt;ellipse cx=&quot;225&quot; cy=&quot;65&quot; rx=&quot;50&quot; ry=&quot;52&quot; stroke=&quot;rgb(218,151,33)&quot; stroke-width=&quot;2&quot; fill=&quot;rgb(247,193,81)&quot;&gt;&lt;/ellipse&gt;&lt;ellipse cx=&quot;400&quot; cy=&quot;65&quot; rx=&quot;50&quot; ry=&quot;52&quot; stroke=&quot;rgb(27,161,37)&quot; stroke-width=&quot;2&quot; fill=&quot;rgb(100,200,86)&quot;&gt;&lt;/ellipse&gt;&lt;/svg&gt;&lt;/span&gt;&lt;code style=&quot;display: -webkit-box;box-sizing: border-box;padding: 0.5em 1em 1em;margin: 0;overflow-x: auto;overflow-y: hidden;color: inherit;background: none;white-space: nowrap;word-break: normal;overflow-wrap: normal;font-family: &amp;#39;Fira Code&amp;#39;, Menlo, &amp;#39;Operator Mono&amp;#39;, Consolas, Monaco, monospace;tab-size: 2;&quot;&gt;&lt;span style=&quot;display: block;&quot;&gt;{&lt;br/&gt;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6f42c1;&quot;&gt;&amp;quot;flowName&amp;quot;&lt;/span&gt;:&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__242&quot;&gt;&amp;quot;端子检测流程&amp;quot;&lt;/span&gt;,&lt;br/&gt;&lt;span style=&quot;color: #6f42c1;&quot;&gt;&amp;quot;nodes&amp;quot;&lt;/span&gt;:[&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;{&lt;span style=&quot;color: #6f42c1;&quot;&gt;&amp;quot;id&amp;quot;&lt;/span&gt;:&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__243&quot;&gt;&amp;quot;capture&amp;quot;&lt;/span&gt;,&lt;span style=&quot;color: #6f42c1;&quot;&gt;&amp;quot;type&amp;quot;&lt;/span&gt;:&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__244&quot;&gt;&amp;quot;Capture&amp;quot;&lt;/span&gt;,&lt;span style=&quot;color: #6f42c1;&quot;&gt;&amp;quot;parameters&amp;quot;&lt;/span&gt;:{}},&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;{&lt;span style=&quot;color: #6f42c1;&quot;&gt;&amp;quot;id&amp;quot;&lt;/span&gt;:&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__245&quot;&gt;&amp;quot;gray&amp;quot;&lt;/span&gt;,&lt;span style=&quot;color: #6f42c1;&quot;&gt;&amp;quot;type&amp;quot;&lt;/span&gt;:&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__246&quot;&gt;&amp;quot;Grayscale&amp;quot;&lt;/span&gt;,&lt;span style=&quot;color: #6f42c1;&quot;&gt;&amp;quot;parameters&amp;quot;&lt;/span&gt;:{}},&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;{&lt;span style=&quot;color: #6f42c1;&quot;&gt;&amp;quot;id&amp;quot;&lt;/span&gt;:&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__247&quot;&gt;&amp;quot;blur&amp;quot;&lt;/span&gt;,&lt;span style=&quot;color: #6f42c1;&quot;&gt;&amp;quot;type&amp;quot;&lt;/span&gt;:&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__248&quot;&gt;&amp;quot;GaussianBlur&amp;quot;&lt;/span&gt;,&lt;span style=&quot;color: #6f42c1;&quot;&gt;&amp;quot;parameters&amp;quot;&lt;/span&gt;:{&lt;span style=&quot;color: #6f42c1;&quot;&gt;&amp;quot;kernelSize&amp;quot;&lt;/span&gt;:&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__249&quot;&gt;5&lt;/span&gt;,&lt;span style=&quot;color: #6f42c1;&quot;&gt;&amp;quot;sigma&amp;quot;&lt;/span&gt;:&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__250&quot;&gt;1.5&lt;/span&gt;}},&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;{&lt;span style=&quot;color: #6f42c1;&quot;&gt;&amp;quot;id&amp;quot;&lt;/span&gt;:&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__251&quot;&gt;&amp;quot;threshold&amp;quot;&lt;/span&gt;,&lt;span style=&quot;color: #6f42c1;&quot;&gt;&amp;quot;type&amp;quot;&lt;/span&gt;:&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__252&quot;&gt;&amp;quot;Threshold&amp;quot;&lt;/span&gt;,&lt;span style=&quot;color: #6f42c1;&quot;&gt;&amp;quot;parameters&amp;quot;&lt;/span&gt;:{&lt;span style=&quot;color: #6f42c1;&quot;&gt;&amp;quot;method&amp;quot;&lt;/span&gt;:&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__253&quot;&gt;&amp;quot;otsu&amp;quot;&lt;/span&gt;}},&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;{&lt;span style=&quot;color: #6f42c1;&quot;&gt;&amp;quot;id&amp;quot;&lt;/span&gt;:&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__254&quot;&gt;&amp;quot;contour&amp;quot;&lt;/span&gt;,&lt;span style=&quot;color: #6f42c1;&quot;&gt;&amp;quot;type&amp;quot;&lt;/span&gt;:&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__255&quot;&gt;&amp;quot;ContourAnalysis&amp;quot;&lt;/span&gt;,&lt;span style=&quot;color: #6f42c1;&quot;&gt;&amp;quot;parameters&amp;quot;&lt;/span&gt;:{&lt;span style=&quot;color: #6f42c1;&quot;&gt;&amp;quot;minArea&amp;quot;&lt;/span&gt;:&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__256&quot;&gt;100&lt;/span&gt;}},&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;{&lt;span style=&quot;color: #6f42c1;&quot;&gt;&amp;quot;id&amp;quot;&lt;/span&gt;:&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__257&quot;&gt;&amp;quot;judge&amp;quot;&lt;/span&gt;,&lt;span style=&quot;color: #6f42c1;&quot;&gt;&amp;quot;type&amp;quot;&lt;/span&gt;:&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__258&quot;&gt;&amp;quot;Judgment&amp;quot;&lt;/span&gt;,&lt;span style=&quot;color: #6f42c1;&quot;&gt;&amp;quot;parameters&amp;quot;&lt;/span&gt;:{&lt;span style=&quot;color: #6f42c1;&quot;&gt;&amp;quot;maxCount&amp;quot;&lt;/span&gt;:&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__259&quot;&gt;10&lt;/span&gt;}}&lt;br/&gt;],&lt;br/&gt;&lt;span style=&quot;color: #6f42c1;&quot;&gt;&amp;quot;connections&amp;quot;&lt;/span&gt;:[&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;{&lt;span style=&quot;color: #6f42c1;&quot;&gt;&amp;quot;fromNode&amp;quot;&lt;/span&gt;:&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__260&quot;&gt;&amp;quot;capture&amp;quot;&lt;/span&gt;,&lt;span style=&quot;color: #6f42c1;&quot;&gt;&amp;quot;fromPort&amp;quot;&lt;/span&gt;:&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__261&quot;&gt;&amp;quot;image&amp;quot;&lt;/span&gt;,&lt;span style=&quot;color: #6f42c1;&quot;&gt;&amp;quot;toNode&amp;quot;&lt;/span&gt;:&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__262&quot;&gt;&amp;quot;gray&amp;quot;&lt;/span&gt;,&lt;span style=&quot;color: #6f42c1;&quot;&gt;&amp;quot;toPort&amp;quot;&lt;/span&gt;:&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__263&quot;&gt;&amp;quot;image&amp;quot;&lt;/span&gt;},&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;{&lt;span style=&quot;color: #6f42c1;&quot;&gt;&amp;quot;fromNode&amp;quot;&lt;/span&gt;:&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__264&quot;&gt;&amp;quot;gray&amp;quot;&lt;/span&gt;,&lt;span style=&quot;color: #6f42c1;&quot;&gt;&amp;quot;fromPort&amp;quot;&lt;/span&gt;:&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__265&quot;&gt;&amp;quot;gray&amp;quot;&lt;/span&gt;,&lt;span style=&quot;color: #6f42c1;&quot;&gt;&amp;quot;toNode&amp;quot;&lt;/span&gt;:&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__266&quot;&gt;&amp;quot;blur&amp;quot;&lt;/span&gt;,&lt;span style=&quot;color: #6f42c1;&quot;&gt;&amp;quot;toPort&amp;quot;&lt;/span&gt;:&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__267&quot;&gt;&amp;quot;image&amp;quot;&lt;/span&gt;},&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;{&lt;span style=&quot;color: #6f42c1;&quot;&gt;&amp;quot;fromNode&amp;quot;&lt;/span&gt;:&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__268&quot;&gt;&amp;quot;blur&amp;quot;&lt;/span&gt;,&lt;span style=&quot;color: #6f42c1;&quot;&gt;&amp;quot;fromPort&amp;quot;&lt;/span&gt;:&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__269&quot;&gt;&amp;quot;blurred&amp;quot;&lt;/span&gt;,&lt;span style=&quot;color: #6f42c1;&quot;&gt;&amp;quot;toNode&amp;quot;&lt;/span&gt;:&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__270&quot;&gt;&amp;quot;threshold&amp;quot;&lt;/span&gt;,&lt;span style=&quot;color: #6f42c1;&quot;&gt;&amp;quot;toPort&amp;quot;&lt;/span&gt;:&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__271&quot;&gt;&amp;quot;image&amp;quot;&lt;/span&gt;},&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;{&lt;span style=&quot;color: #6f42c1;&quot;&gt;&amp;quot;fromNode&amp;quot;&lt;/span&gt;:&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__272&quot;&gt;&amp;quot;threshold&amp;quot;&lt;/span&gt;,&lt;span style=&quot;color: #6f42c1;&quot;&gt;&amp;quot;fromPort&amp;quot;&lt;/span&gt;:&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__273&quot;&gt;&amp;quot;binary&amp;quot;&lt;/span&gt;,&lt;span style=&quot;color: #6f42c1;&quot;&gt;&amp;quot;toNode&amp;quot;&lt;/span&gt;:&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__274&quot;&gt;&amp;quot;contour&amp;quot;&lt;/span&gt;,&lt;span style=&quot;color: #6f42c1;&quot;&gt;&amp;quot;toPort&amp;quot;&lt;/span&gt;:&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__275&quot;&gt;&amp;quot;binary&amp;quot;&lt;/span&gt;},&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;{&lt;span style=&quot;color: #6f42c1;&quot;&gt;&amp;quot;fromNode&amp;quot;&lt;/span&gt;:&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__276&quot;&gt;&amp;quot;contour&amp;quot;&lt;/span&gt;,&lt;span style=&quot;color: #6f42c1;&quot;&gt;&amp;quot;fromPort&amp;quot;&lt;/span&gt;:&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__277&quot;&gt;&amp;quot;count&amp;quot;&lt;/span&gt;,&lt;span style=&quot;color: #6f42c1;&quot;&gt;&amp;quot;toNode&amp;quot;&lt;/span&gt;:&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__278&quot;&gt;&amp;quot;judge&amp;quot;&lt;/span&gt;,&lt;span style=&quot;color: #6f42c1;&quot;&gt;&amp;quot;toPort&amp;quot;&lt;/span&gt;:&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__279&quot;&gt;&amp;quot;count&amp;quot;&lt;/span&gt;}&lt;br/&gt;]&lt;br/&gt;}&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;h2 style=&quot;padding: 0.4em 0 0.5em 0.8em;margin: 1.8em 0 1em;color: #1d1d1f;font-size: 20px;font-weight: 600;text-align: left;border-left: 3px solid;border-image: linear-gradient(to bottom, #007aff, #5856d6) 1;&quot; class=&quot;js_darkmode__bg__12&quot;&gt;七、使用方式&lt;/h2&gt;&lt;pre style=&quot;display: block;box-sizing: border-box;max-width: 100%;color: #24292e;background: #fff;font-size: 90%;line-height: 1.5;margin: 10px 8px;padding: 0;border: 1px solid rgba(0, 0, 0, 0.04);border-radius: 8px;overflow-x: auto;overflow-y: hidden;-webkit-overflow-scrolling: touch;&quot; class=&quot;js_darkmode__280&quot;&gt;&lt;span style=&quot;display: flex;padding: 10px 14px 0;&quot;&gt;&lt;svg width=&quot;45&quot; height=&quot;13&quot; viewbox=&quot;0 0 450 130&quot; aria-label=&quot;插图&quot;&gt;&lt;ellipse cx=&quot;50&quot; cy=&quot;65&quot; rx=&quot;50&quot; ry=&quot;52&quot; stroke=&quot;rgb(220,60,54)&quot; stroke-width=&quot;2&quot; fill=&quot;rgb(237,108,96)&quot;&gt;&lt;/ellipse&gt;&lt;ellipse cx=&quot;225&quot; cy=&quot;65&quot; rx=&quot;50&quot; ry=&quot;52&quot; stroke=&quot;rgb(218,151,33)&quot; stroke-width=&quot;2&quot; fill=&quot;rgb(247,193,81)&quot;&gt;&lt;/ellipse&gt;&lt;ellipse cx=&quot;400&quot; cy=&quot;65&quot; rx=&quot;50&quot; ry=&quot;52&quot; stroke=&quot;rgb(27,161,37)&quot; stroke-width=&quot;2&quot; fill=&quot;rgb(100,200,86)&quot;&gt;&lt;/ellipse&gt;&lt;/svg&gt;&lt;/span&gt;&lt;code style=&quot;display: -webkit-box;box-sizing: border-box;padding: 0.5em 1em 1em;margin: 0;overflow-x: auto;overflow-y: hidden;color: inherit;background: none;white-space: nowrap;word-break: normal;overflow-wrap: normal;font-family: &amp;#39;Fira Code&amp;#39;, Menlo, &amp;#39;Operator Mono&amp;#39;, Consolas, Monaco, monospace;tab-size: 2;&quot;&gt;&lt;span style=&quot;display: block;&quot;&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;class&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__281&quot;&gt;Program&lt;/span&gt;&lt;br/&gt;{&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;static&lt;/span&gt;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;void&lt;/span&gt;&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__282&quot;&gt;Main&lt;/span&gt;(&lt;span style=&quot;color: inherit;&quot;&gt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__283&quot;&gt;string&lt;/span&gt;[]&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;args&lt;/span&gt;&lt;/span&gt;)&lt;br/&gt;&amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;// 加载配置&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__284&quot;&gt;string&lt;/span&gt;&amp;nbsp;json = File.ReadAllText(&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__285&quot;&gt;&amp;quot;flow_config.json&amp;quot;&lt;/span&gt;);&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;var&lt;/span&gt;&amp;nbsp;config = JsonSerializer.Deserialize&amp;lt;FlowConfig&amp;gt;(json);&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;// 构建流程&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;var&lt;/span&gt;&amp;nbsp;engine =&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;new&lt;/span&gt;&amp;nbsp;FlowEngine();&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; engine.BuildFromConfig(config);&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6a737d;font-style: italic;&quot;&gt;// 执行&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #d73a49;font-weight: bold;&quot;&gt;if&lt;/span&gt;&amp;nbsp;(engine.Execute())&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__286&quot;&gt;bool&lt;/span&gt;&amp;nbsp;result = engine.GetOutput&amp;lt;&lt;span style=&quot;color: #005cc5;&quot; class=&quot;js_darkmode__287&quot;&gt;bool&lt;/span&gt;&amp;gt;(&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__288&quot;&gt;&amp;quot;judge&amp;quot;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__289&quot;&gt;&amp;quot;result&amp;quot;&lt;/span&gt;);&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Console.WriteLine(&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__290&quot;&gt;$&amp;quot;检测结果:&amp;nbsp;&lt;span style=&quot;color: inherit;&quot;&gt;{(result ?&amp;nbsp;&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__291&quot;&gt;&amp;quot;OK&amp;quot;&lt;/span&gt;&amp;nbsp;:&amp;nbsp;&lt;span style=&quot;color: #032f62;&quot; class=&quot;js_darkmode__292&quot;&gt;&amp;quot;NG&amp;quot;&lt;/span&gt;)}&lt;/span&gt;&amp;quot;&lt;/span&gt;);&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br/&gt;&amp;nbsp; &amp;nbsp; }&lt;br/&gt;}&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p style=&quot;margin: 1.2em 0;letter-spacing: 0.1em;color: #333333;text-align: justify;line-height: 1.8;font-size: 15px;&quot;&gt;换型号的时候，改JSON配置文件就行。A型号加一个边缘检测节点，B型号跳过阈值分割节点，代码完全不用动。&lt;/p&gt;&lt;h2 style=&quot;padding: 0.4em 0 0.5em 0.8em;margin: 1.8em 0 1em;color: #1d1d1f;font-size: 20px;font-weight: 600;text-align: left;border-left: 3px solid;border-image: linear-gradient(to bottom, #007aff, #5856d6) 1;&quot; class=&quot;js_darkmode__bg__13&quot;&gt;八、几个容易踩的坑&lt;/h2&gt;&lt;p style=&quot;margin: 1.2em 0;letter-spacing: 0.1em;color: #333333;text-align: justify;line-height: 1.8;font-size: 15px;&quot;&gt;&lt;strong style=&quot;font-weight: 600;background-image: linear-gradient(135deg, #007aff, #5856d6);-webkit-background-clip: text;background-clip: text;color: transparent;&quot; class=&quot;js_darkmode__bg__14&quot;&gt;坑一：端口数据类型不匹配&lt;/strong&gt;&lt;/p&gt;&lt;p style=&quot;margin: 1.2em 0;letter-spacing: 0.1em;color: #333333;text-align: justify;line-height: 1.8;font-size: 15px;&quot;&gt;上游输出的是&lt;code style=&quot;display: inline-block;font-size: 90%;color: #4f46cf;background: linear-gradient(180deg, rgba(88, 86, 214, 0.12), rgba(255, 255, 255, 0.9));padding: 2px 7px;border-radius: 999px;border: 1px solid rgba(88, 86, 214, 0.14);font-family: &amp;#39;SFMono-Regular&amp;#39;, Consolas, Menlo, monospace;line-height: 1.4;box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.9);&quot; class=&quot;js_darkmode__bg__15 js_darkmode__293&quot;&gt;Mat&lt;/code&gt;，下游输入端口声明的是&lt;code style=&quot;display: inline-block;font-size: 90%;color: #4f46cf;background: linear-gradient(180deg, rgba(88, 86, 214, 0.12), rgba(255, 255, 255, 0.9));padding: 2px 7px;border-radius: 999px;border: 1px solid rgba(88, 86, 214, 0.14);font-family: &amp;#39;SFMono-Regular&amp;#39;, Consolas, Menlo, monospace;line-height: 1.4;box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.9);&quot; class=&quot;js_darkmode__bg__16 js_darkmode__294&quot;&gt;Point[][]&lt;/code&gt;，取数据的时候会抛&lt;code style=&quot;display: inline-block;font-size: 90%;color: #4f46cf;background: linear-gradient(180deg, rgba(88, 86, 214, 0.12), rgba(255, 255, 255, 0.9));padding: 2px 7px;border-radius: 999px;border: 1px solid rgba(88, 86, 214, 0.14);font-family: &amp;#39;SFMono-Regular&amp;#39;, Consolas, Menlo, monospace;line-height: 1.4;box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.9);&quot; class=&quot;js_darkmode__bg__17 js_darkmode__295&quot;&gt;InvalidCastException&lt;/code&gt;。连接的时候校验端口类型，类型不匹配直接报错。&lt;/p&gt;&lt;p style=&quot;margin: 1.2em 0;letter-spacing: 0.1em;color: #333333;text-align: justify;line-height: 1.8;font-size: 15px;&quot;&gt;&lt;strong style=&quot;font-weight: 600;background-image: linear-gradient(135deg, #007aff, #5856d6);-webkit-background-clip: text;background-clip: text;color: transparent;&quot; class=&quot;js_darkmode__bg__18&quot;&gt;坑二：拓扑排序检测到环&lt;/strong&gt;&lt;/p&gt;&lt;p style=&quot;margin: 1.2em 0;letter-spacing: 0.1em;color: #333333;text-align: justify;line-height: 1.8;font-size: 15px;&quot;&gt;A的输出连到B，B的输出又连回A，形成死循环。拓扑排序能检测出来，构建流程的时候抛异常，早点暴露问题。&lt;/p&gt;&lt;p style=&quot;margin: 1.2em 0;letter-spacing: 0.1em;color: #333333;text-align: justify;line-height: 1.8;font-size: 15px;&quot;&gt;&lt;strong style=&quot;font-weight: 600;background-image: linear-gradient(135deg, #007aff, #5856d6);-webkit-background-clip: text;background-clip: text;color: transparent;&quot; class=&quot;js_darkmode__bg__19&quot;&gt;坑三：节点执行失败没处理&lt;/strong&gt;&lt;/p&gt;&lt;p style=&quot;margin: 1.2em 0;letter-spacing: 0.1em;color: #333333;text-align: justify;line-height: 1.8;font-size: 15px;&quot;&gt;某个节点返回&lt;code style=&quot;display: inline-block;font-size: 90%;color: #4f46cf;background: linear-gradient(180deg, rgba(88, 86, 214, 0.12), rgba(255, 255, 255, 0.9));padding: 2px 7px;border-radius: 999px;border: 1px solid rgba(88, 86, 214, 0.14);font-family: &amp;#39;SFMono-Regular&amp;#39;, Consolas, Menlo, monospace;line-height: 1.4;box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.9);&quot; class=&quot;js_darkmode__bg__20 js_darkmode__296&quot;&gt;false&lt;/code&gt;，后面的节点不该继续执行。流程引擎里检查每个节点的返回值，失败就中断。&lt;/p&gt;&lt;p style=&quot;margin: 1.2em 0;letter-spacing: 0.1em;color: #333333;text-align: justify;line-height: 1.8;font-size: 15px;&quot;&gt;&lt;strong style=&quot;font-weight: 600;background-image: linear-gradient(135deg, #007aff, #5856d6);-webkit-background-clip: text;background-clip: text;color: transparent;&quot; class=&quot;js_darkmode__bg__21&quot;&gt;坑四：Mat资源没释放&lt;/strong&gt;&lt;/p&gt;&lt;p style=&quot;margin: 1.2em 0;letter-spacing: 0.1em;color: #333333;text-align: justify;line-height: 1.8;font-size: 15px;&quot;&gt;每个节点创建的&lt;code style=&quot;display: inline-block;font-size: 90%;color: #4f46cf;background: linear-gradient(180deg, rgba(88, 86, 214, 0.12), rgba(255, 255, 255, 0.9));padding: 2px 7px;border-radius: 999px;border: 1px solid rgba(88, 86, 214, 0.14);font-family: &amp;#39;SFMono-Regular&amp;#39;, Consolas, Menlo, monospace;line-height: 1.4;box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.9);&quot; class=&quot;js_darkmode__bg__22 js_darkmode__297&quot;&gt;Mat&lt;/code&gt;，用完之后要释放。流程执行完之后，遍历所有节点的输出端口，释放&lt;code style=&quot;display: inline-block;font-size: 90%;color: #4f46cf;background: linear-gradient(180deg, rgba(88, 86, 214, 0.12), rgba(255, 255, 255, 0.9));padding: 2px 7px;border-radius: 999px;border: 1px solid rgba(88, 86, 214, 0.14);font-family: &amp;#39;SFMono-Regular&amp;#39;, Consolas, Menlo, monospace;line-height: 1.4;box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.9);&quot; class=&quot;js_darkmode__bg__23 js_darkmode__298&quot;&gt;IDisposable&lt;/code&gt;对象。&lt;/p&gt;&lt;p style=&quot;margin: 1.2em 0;letter-spacing: 0.1em;color: #333333;text-align: justify;line-height: 1.8;font-size: 15px;&quot;&gt;&lt;strong style=&quot;font-weight: 600;background-image: linear-gradient(135deg, #007aff, #5856d6);-webkit-background-clip: text;background-clip: text;color: transparent;&quot; class=&quot;js_darkmode__bg__24&quot;&gt;坑五：配置文件路径硬编码&lt;/strong&gt;&lt;/p&gt;&lt;p style=&quot;margin: 1.2em 0;letter-spacing: 0.1em;color: #333333;text-align: justify;line-height: 1.8;font-size: 15px;&quot;&gt;&lt;code style=&quot;display: inline-block;font-size: 90%;color: #4f46cf;background: linear-gradient(180deg, rgba(88, 86, 214, 0.12), rgba(255, 255, 255, 0.9));padding: 2px 7px;border-radius: 999px;border: 1px solid rgba(88, 86, 214, 0.14);font-family: &amp;#39;SFMono-Regular&amp;#39;, Consolas, Menlo, monospace;line-height: 1.4;box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.9);&quot; class=&quot;js_darkmode__bg__25 js_darkmode__299&quot;&gt;flow_config.json&lt;/code&gt;的路径不能写死在代码里。用程序启动目录的相对路径，或者从配置中心读取。&lt;/p&gt;&lt;h2 style=&quot;padding: 0.4em 0 0.5em 0.8em;margin: 1.8em 0 1em;color: #1d1d1f;font-size: 20px;font-weight: 600;text-align: left;border-left: 3px solid;border-image: linear-gradient(to bottom, #007aff, #5856d6) 1;&quot; class=&quot;js_darkmode__bg__26&quot;&gt;九、总结&lt;/h2&gt;&lt;p style=&quot;margin: 1.2em 0;letter-spacing: 0.1em;color: #333333;text-align: justify;line-height: 1.8;font-size: 15px;&quot;&gt;可配置检测流程的核心就三件事：&lt;/p&gt;&lt;ol style=&quot;list-style-type: none;&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;section&gt;1.&amp;nbsp;&lt;strong style=&quot;font-weight: 600;background-image: linear-gradient(135deg, #007aff, #5856d6);-webkit-background-clip: text;background-clip: text;color: transparent;&quot; class=&quot;js_darkmode__bg__27&quot;&gt;节点抽象&lt;/strong&gt;——每个检测步骤是一个独立节点，有输入输出端口&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section&gt;2.&amp;nbsp;&lt;strong style=&quot;font-weight: 600;background-image: linear-gradient(135deg, #007aff, #5856d6);-webkit-background-clip: text;background-clip: text;color: transparent;&quot; class=&quot;js_darkmode__bg__28&quot;&gt;数据端口&lt;/strong&gt;——节点之间通过端口连接，上游写下游读&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section&gt;3.&amp;nbsp;&lt;strong style=&quot;font-weight: 600;background-image: linear-gradient(135deg, #007aff, #5856d6);-webkit-background-clip: text;background-clip: text;color: transparent;&quot; class=&quot;js_darkmode__bg__29&quot;&gt;配置驱动&lt;/strong&gt;——JSON文件定义节点列表和连接关系，换流程改配置&lt;/section&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p style=&quot;margin: 1.2em 0;letter-spacing: 0.1em;color: #333333;text-align: justify;line-height: 1.8;font-size: 15px;&quot;&gt;那个端子检测项目，改成节点+端口模型之后，客户再提流程变更，改JSON就行，不用重新编译部署。加节点也简单——实现一个&lt;code style=&quot;display: inline-block;font-size: 90%;color: #4f46cf;background: linear-gradient(180deg, rgba(88, 86, 214, 0.12), rgba(255, 255, 255, 0.9));padding: 2px 7px;border-radius: 999px;border: 1px solid rgba(88, 86, 214, 0.14);font-family: &amp;#39;SFMono-Regular&amp;#39;, Consolas, Menlo, monospace;line-height: 1.4;box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.9);&quot; class=&quot;js_darkmode__bg__30 js_darkmode__300&quot;&gt;INode&lt;/code&gt;，注册到工厂，配置文件里加上就行。&lt;/p&gt;&lt;blockquote style=&quot;font-style: normal;padding: 1em 1.2em;border-left: 4px solid;border-image: linear-gradient(to bottom, #007aff, #5856d6, #ff2d55) 1;color: #333333;background: rgba(0,0,0,0.02);border-radius: 8px;margin: 1.5em 0;&quot; class=&quot;js_darkmode__bg__31&quot;&gt;&lt;p style=&quot;margin: 0;color: #333333;line-height: 1.7;&quot;&gt;小提示：第一次设计节点，先把常用的检测步骤列出来。灰度化、滤波、阈值、形态学、轮廓、匹配、判定，每个步骤一个节点。节点粒度不要太细（比如“读像素”这种就不该是节点），也不要太粗（比如“整个预处理”一个大节点就失去了灵活性）。一个节点对应一个可独立配置、可独立替换的操作。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Tue, 13 Oct 2026 14:33:30 +0800</pubDate></item><item><title>WinForm 中集成 NLog 实现全局异常处理</title><link>https://www.codepub.top/post/708.html</link><description>&lt;h1 data-tool=&quot;mdnice编辑器&quot; style=&quot;padding: 0px; display: block; font-size: 16px; margin: 0px; text-align: left; line-height: 1.75em; visibility: visible;&quot;&gt;&lt;span style=&quot;font-size: 16px; color: #0052FF; letter-spacing: 0em; font-weight: bold; display: block; padding-bottom: 5px; visibility: visible;&quot; class=&quot;js_darkmode__1&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;前言&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; style=&quot;color: rgb(0, 0, 0); font-size: 16px; line-height: 1.75em; letter-spacing: 0em; text-align: left; text-indent: 0em; margin: 0px; padding: 5px 0px; visibility: visible;&quot; class=&quot;js_darkmode__2&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;在&lt;span class=&quot;&quot;&gt;Windows Forms&lt;/span&gt;应用程序开发中，异常处理是保障程序稳定性和用户体验的核心环节。尽管开发者可以通过try-catch块捕获局部异常，但未处理的异常仍可能导致程序崩溃。&lt;/span&gt;&lt;/p&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; style=&quot;color: rgb(0, 0, 0); font-size: 16px; line-height: 1.75em; letter-spacing: 0em; text-align: left; text-indent: 0em; margin: 0px; padding: 5px 0px; visibility: visible;&quot; class=&quot;js_darkmode__3&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;本文将结合&lt;span class=&quot;&quot;&gt;NLog&lt;/span&gt;日志框架，详细阐述如何在WinForm中实现全局异常捕获与日志记录，为开发提供一套完整的解决方案。&lt;/span&gt;&lt;/p&gt;&lt;h2 data-tool=&quot;mdnice编辑器&quot; style=&quot;padding: 0px; display: block; font-size: 16px; margin: 0px; text-align: left; line-height: 1.75em; visibility: visible;&quot;&gt;&lt;span style=&quot;font-size: 16px; color: #0052FF; letter-spacing: 0em; font-weight: bold; display: block; padding: 5px 0px; visibility: visible;&quot; class=&quot;js_darkmode__4&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;一、全局异常处理的必要性&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; style=&quot;color: rgb(0, 0, 0); font-size: 16px; line-height: 1.75em; letter-spacing: 0em; text-align: left; text-indent: 0em; margin: 0px; padding: 5px 0px; visibility: visible;&quot; class=&quot;js_darkmode__5&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;在WinForm应用中，异常可能源于多个场景：&lt;/span&gt;&lt;/p&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; style=&quot;color: rgb(0, 0, 0); font-size: 16px; line-height: 1.75em; letter-spacing: 0em; text-align: left; text-indent: 0em; margin: 0px; padding: 5px 0px; visibility: visible;&quot; class=&quot;js_darkmode__6&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;1、UI线程异常：如按钮点击事件中的除零错误，未处理将导致界面冻结。&lt;/span&gt;&lt;/p&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; style=&quot;color: rgb(0, 0, 0); font-size: 16px; line-height: 1.75em; letter-spacing: 0em; text-align: left; text-indent: 0em; margin: 0px; padding: 5px 0px; visibility: visible;&quot; class=&quot;js_darkmode__7&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;2、后台线程异常：如网络请求超时，可能引发数据不一致。&lt;/span&gt;&lt;/p&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; style=&quot;color: rgb(0, 0, 0); font-size: 16px; line-height: 1.75em; letter-spacing: 0em; text-align: left; text-indent: 0em; margin: 0px; padding: 5px 0px; visibility: visible;&quot; class=&quot;js_darkmode__8&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;3、第三方组件异常：组件内部未公开的异常可能破坏程序流程。&lt;/span&gt;&lt;/p&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; style=&quot;color: rgb(0, 0, 0); font-size: 16px; line-height: 1.75em; letter-spacing: 0em; text-align: left; text-indent: 0em; margin: 0px; padding: 5px 0px; visibility: visible;&quot; class=&quot;js_darkmode__9&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;未捕获的异常会沿调用栈传播至程序顶层，触发默认错误对话框，甚至导致进程终止。通过全局异常处理，可实现：&lt;/span&gt;&lt;/p&gt;&lt;ul style=&quot;list-style-type: disc;&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;section style=&quot;margin-top: 5px; margin-bottom: 5px; color: rgb(1, 1, 1); font-size: 16px; line-height: 1.8em; letter-spacing: 0em; text-align: left; font-weight: normal; visibility: visible;&quot; class=&quot;js_darkmode__10&quot;&gt;&lt;p style=&quot;color: rgb(0, 0, 0); font-size: 16px; line-height: 1.75em; letter-spacing: 0em; text-align: left; text-indent: 0em; margin: 0px; padding: 5px 0px; visibility: visible;&quot; class=&quot;js_darkmode__11&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;崩溃预防：捕获未处理异常，避免程序意外退出。&lt;/span&gt;&lt;/p&gt;&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section style=&quot;margin-top: 5px; margin-bottom: 5px; color: rgb(1, 1, 1); font-size: 16px; line-height: 1.8em; letter-spacing: 0em; text-align: left; font-weight: normal; visibility: visible;&quot; class=&quot;js_darkmode__12&quot;&gt;&lt;p style=&quot;color: rgb(0, 0, 0); font-size: 16px; line-height: 1.75em; letter-spacing: 0em; text-align: left; text-indent: 0em; margin: 0px; padding: 5px 0px; visibility: visible;&quot; class=&quot;js_darkmode__13&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;日志记录：完整记录异常上下文，便于问题定位。&lt;/span&gt;&lt;/p&gt;&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section style=&quot;margin-top: 5px; margin-bottom: 5px; color: rgb(1, 1, 1); font-size: 16px; line-height: 1.8em; letter-spacing: 0em; text-align: left; font-weight: normal; visibility: visible;&quot; class=&quot;js_darkmode__14&quot;&gt;&lt;p style=&quot;color: rgb(0, 0, 0); font-size: 16px; line-height: 1.75em; letter-spacing: 0em; text-align: left; text-indent: 0em; margin: 0px; padding: 5px 0px; visibility: visible;&quot; class=&quot;js_darkmode__15&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;用户体验优化：显示友好错误提示，指导用户操作。&lt;/span&gt;&lt;/p&gt;&lt;/section&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2 data-tool=&quot;mdnice编辑器&quot; style=&quot;padding: 0px; display: block; font-size: 16px; margin: 0px; text-align: left; line-height: 1.75em; visibility: visible;&quot;&gt;&lt;span style=&quot;font-size: 16px; color: #0052FF; letter-spacing: 0em; font-weight: bold; display: block; padding: 5px 0px; visibility: visible;&quot; class=&quot;js_darkmode__16&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;二、NLog日志框架的核心优势&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; style=&quot;color: rgb(0, 0, 0); font-size: 16px; line-height: 1.75em; letter-spacing: 0em; text-align: left; text-indent: 0em; margin: 0px; padding: 5px 0px; visibility: visible;&quot; class=&quot;js_darkmode__17&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;NLog是.NET平台高性能日志库，其特性完美契合WinForm异常处理需求：&lt;/span&gt;&lt;/p&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; style=&quot;color: rgb(0, 0, 0); font-size: 16px; line-height: 1.75em; letter-spacing: 0em; text-align: left; text-indent: 0em; margin: 0px; padding: 5px 0px; visibility: visible;&quot; class=&quot;js_darkmode__18&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;1、多目标输出：支持文件、数据库、控制台等多种日志存储方式。&lt;/span&gt;&lt;/p&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; style=&quot;color: rgb(0, 0, 0); font-size: 16px; line-height: 1.75em; letter-spacing: 0em; text-align: left; text-indent: 0em; margin: 0px; padding: 5px 0px; visibility: visible;&quot; class=&quot;js_darkmode__19&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;2、异步记录：通过&lt;/span&gt;&lt;code style=&quot;font-size: 14px; letter-spacing: 0em; width: auto; height: auto; border-style: none; border-width: 3px; border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4); font-family: Consolas, Monaco, Menlo, monospace; word-break: break-all; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: rgb(233, 105, 0); background: rgb(248, 248, 248); visibility: visible;&quot; class=&quot;js_darkmode__20&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;AsyncWrapper&lt;/span&gt;&lt;/code&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;目标减少日志操作对主线程阻塞。&lt;/span&gt;&lt;/p&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; style=&quot;color: rgb(0, 0, 0); font-size: 16px; line-height: 1.75em; letter-spacing: 0em; text-align: left; text-indent: 0em; margin: 0px; padding: 5px 0px; visibility: visible;&quot; class=&quot;js_darkmode__21&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;3、灵活配置：通过XML配置文件动态调整日志级别和输出规则。&lt;/span&gt;&lt;/p&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; style=&quot;color: rgb(0, 0, 0); font-size: 16px; line-height: 1.75em; letter-spacing: 0em; text-align: left; text-indent: 0em; margin: 0px; padding: 5px 0px; visibility: visible;&quot; class=&quot;js_darkmode__22&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;4、&lt;span class=&quot;&quot;&gt;结构化日志&lt;/span&gt;：支持&lt;/span&gt;&lt;code style=&quot;font-size: 14px; letter-spacing: 0em; width: auto; height: auto; border-style: none; border-width: 3px; border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4); font-family: Consolas, Monaco, Menlo, monospace; word-break: break-all; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: rgb(233, 105, 0); background: rgb(248, 248, 248); visibility: visible;&quot; class=&quot;js_darkmode__23&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;${longdate}&lt;/span&gt;&lt;/code&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;、&lt;/span&gt;&lt;code style=&quot;font-size: 14px; letter-spacing: 0em; width: auto; height: auto; border-style: none; border-width: 3px; border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4); font-family: Consolas, Monaco, Menlo, monospace; word-break: break-all; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: rgb(233, 105, 0); background: rgb(248, 248, 248); visibility: visible;&quot; class=&quot;js_darkmode__24&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;${level}&lt;/span&gt;&lt;/code&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;等布局渲染器，生成标准化日志格式。&lt;/span&gt;&lt;/p&gt;&lt;h2 data-tool=&quot;mdnice编辑器&quot; style=&quot;padding: 0px;display: block;font-size: 16px;margin: 0px;text-align: left;line-height: 1.75em;&quot;&gt;&lt;span style=&quot;font-size: 16px;color: #0052FF;letter-spacing: 0em;font-weight: bold;display: block;padding: 5px 0px;&quot; class=&quot;js_darkmode__25&quot;&gt;三、实现步骤详解&lt;/span&gt;&lt;/h2&gt;&lt;h3 data-tool=&quot;mdnice编辑器&quot; style=&quot;padding: 0px;display: block;margin: 0px;text-align: left;line-height: 1.75em;&quot;&gt;&lt;span style=&quot;font-size: 16px;color: #000000;letter-spacing: 0em;font-weight: bold;display: block;padding: 5px 0px;&quot; class=&quot;js_darkmode__26&quot;&gt;1、安装NLog依赖&lt;/span&gt;&lt;/h3&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; style=&quot;color: rgb(0, 0, 0);font-size: 16px;line-height: 1.75em;letter-spacing: 0em;text-align: left;text-indent: 0em;margin: 0px;padding: 5px 0px;&quot; class=&quot;js_darkmode__27&quot;&gt;通过NuGet包管理器安装核心库&lt;/p&gt;&lt;pre data-tool=&quot;mdnice编辑器&quot; style=&quot;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;text-align: left;margin: 10px 0px;padding: 0px;line-height: 1.75em;&quot; class=&quot;js_darkmode__28&quot;&gt;&lt;span data-cacheurl=&quot;&quot; data-remoteid=&quot;&quot; style=&quot;display: block;background: url(&amp;quot;https://mmbiz.qpic.cn/mmbiz_svg/VNMic85jx3X6UZ7JN1CrmsibicQ5Yd9FNeDo8jdDT5xCgQ47cCdzvm35ZkBJpZn8535GZf3nUtMs6IYHFaFTfGRNMKH0h9QyTN2/640?wx_fmt=svg&amp;amp;from=appmsg&amp;quot;) 10px 10px / 40px no-repeat #282C34;height: 30px;width: 100%;margin-bottom: -7px;border-radius: 5px;&quot; class=&quot;js_darkmode__bg__0 js_darkmode__29&quot;&gt;&lt;/span&gt;&lt;code style=&quot;overflow-x: auto;padding: 15px 16px 16px;color: rgb(171, 178, 191);background: rgb(40, 44, 52);border-radius: 5px;display: -webkit-box;font-family: Consolas, Monaco, Menlo, monospace;font-size: 12px;&quot; class=&quot;js_darkmode__30&quot;&gt;Install-Package NLog&lt;br/&gt;Install-Package NLog.Config &amp;nbsp;&lt;span style=&quot;color: #5C6370;font-style: italic;&quot; class=&quot;js_darkmode__31&quot;&gt;# 包含默认配置文件模板&lt;/span&gt;&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;h3 data-tool=&quot;mdnice编辑器&quot; style=&quot;padding: 0px;display: block;margin: 0px;text-align: left;line-height: 1.75em;&quot;&gt;&lt;span style=&quot;font-size: 16px;color: #000000;letter-spacing: 0em;font-weight: bold;display: block;padding: 5px 0px;&quot; class=&quot;js_darkmode__32&quot;&gt;2、配置NLog.config文件&lt;/span&gt;&lt;/h3&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; style=&quot;color: rgb(0, 0, 0);font-size: 16px;line-height: 1.75em;letter-spacing: 0em;text-align: left;text-indent: 0em;margin: 0px;padding: 5px 0px;&quot; class=&quot;js_darkmode__33&quot;&gt;在项目根目录创建XML配置文件，定义日志规则：&lt;/p&gt;&lt;pre data-tool=&quot;mdnice编辑器&quot; style=&quot;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;text-align: left;margin: 10px 0px;padding: 0px;line-height: 1.75em;&quot; class=&quot;js_darkmode__34&quot;&gt;&lt;span data-cacheurl=&quot;&quot; data-remoteid=&quot;&quot; style=&quot;display: block;background: url(&amp;quot;https://mmbiz.qpic.cn/mmbiz_svg/VNMic85jx3X6UZ7JN1CrmsibicQ5Yd9FNeDo8jdDT5xCgQ47cCdzvm35ZkBJpZn8535GZf3nUtMs6IYHFaFTfGRNMKH0h9QyTN2/640?wx_fmt=svg&amp;amp;from=appmsg&amp;quot;) 10px 10px / 40px no-repeat #282C34;height: 30px;width: 100%;margin-bottom: -7px;border-radius: 5px;&quot; class=&quot;js_darkmode__bg__1 js_darkmode__35&quot;&gt;&lt;/span&gt;&lt;code style=&quot;overflow-x: auto;padding: 15px 16px 16px;color: rgb(171, 178, 191);background: rgb(40, 44, 52);border-radius: 5px;display: -webkit-box;font-family: Consolas, Monaco, Menlo, monospace;font-size: 12px;&quot; class=&quot;js_darkmode__36&quot;&gt;&lt;span style=&quot;color: #61AEEE;&quot;&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot; ?&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;&quot;&gt;&amp;lt;&lt;span style=&quot;color: #E06C75;&quot;&gt;nlog&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #D19A66;&quot;&gt;xmlns&lt;/span&gt;=&lt;span style=&quot;color: #98C379;&quot;&gt;&amp;quot;http://www.nlog-project.org/schemas/NLog.xsd&amp;quot;&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #D19A66;&quot;&gt;autoReload&lt;/span&gt;=&lt;span style=&quot;color: #98C379;&quot;&gt;&amp;quot;true&amp;quot;&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #D19A66;&quot;&gt;throwConfigExceptions&lt;/span&gt;=&lt;span style=&quot;color: #98C379;&quot;&gt;&amp;quot;true&amp;quot;&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;&quot;&gt;&amp;lt;&lt;span style=&quot;color: #E06C75;&quot;&gt;targets&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #5C6370;font-style: italic;&quot; class=&quot;js_darkmode__37&quot;&gt;&amp;lt;!-- 按日期分割的日志文件 --&amp;gt;&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;&quot;&gt;&amp;lt;&lt;span style=&quot;color: #E06C75;&quot;&gt;target&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #D19A66;&quot;&gt;name&lt;/span&gt;=&lt;span style=&quot;color: #98C379;&quot;&gt;&amp;quot;file&amp;quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #D19A66;&quot;&gt;xsi:type&lt;/span&gt;=&lt;span style=&quot;color: #98C379;&quot;&gt;&amp;quot;File&amp;quot;&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #D19A66;&quot;&gt;fileName&lt;/span&gt;=&lt;span style=&quot;color: #98C379;&quot;&gt;&amp;quot;${basedir}/logs/${date:format=yyyy-MM-dd}.log&amp;quot;&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #D19A66;&quot;&gt;layout&lt;/span&gt;=&lt;span style=&quot;color: #98C379;&quot;&gt;&amp;quot;${longdate}|${level:uppercase=true}|${logger}|${message}${exception:format=ToString}&amp;quot;&lt;/span&gt;&amp;nbsp;/&amp;gt;&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #5C6370;font-style: italic;&quot; class=&quot;js_darkmode__38&quot;&gt;&amp;lt;!-- 控制台输出（调试用） --&amp;gt;&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;&quot;&gt;&amp;lt;&lt;span style=&quot;color: #E06C75;&quot;&gt;target&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #D19A66;&quot;&gt;name&lt;/span&gt;=&lt;span style=&quot;color: #98C379;&quot;&gt;&amp;quot;console&amp;quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #D19A66;&quot;&gt;xsi:type&lt;/span&gt;=&lt;span style=&quot;color: #98C379;&quot;&gt;&amp;quot;Console&amp;quot;&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #D19A66;&quot;&gt;layout&lt;/span&gt;=&lt;span style=&quot;color: #98C379;&quot;&gt;&amp;quot;${longdate}|${level}|${message}&amp;quot;&lt;/span&gt;&amp;nbsp;/&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;&quot;&gt;&amp;lt;/&lt;span style=&quot;color: #E06C75;&quot;&gt;targets&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;&quot;&gt;&amp;lt;&lt;span style=&quot;color: #E06C75;&quot;&gt;rules&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #5C6370;font-style: italic;&quot; class=&quot;js_darkmode__39&quot;&gt;&amp;lt;!-- 所有日志写入文件，Debug及以上输出到控制台 --&amp;gt;&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;&quot;&gt;&amp;lt;&lt;span style=&quot;color: #E06C75;&quot;&gt;logger&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #D19A66;&quot;&gt;name&lt;/span&gt;=&lt;span style=&quot;color: #98C379;&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #D19A66;&quot;&gt;minlevel&lt;/span&gt;=&lt;span style=&quot;color: #98C379;&quot;&gt;&amp;quot;Info&amp;quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #D19A66;&quot;&gt;writeTo&lt;/span&gt;=&lt;span style=&quot;color: #98C379;&quot;&gt;&amp;quot;file&amp;quot;&lt;/span&gt;&amp;nbsp;/&amp;gt;&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;&quot;&gt;&amp;lt;&lt;span style=&quot;color: #E06C75;&quot;&gt;logger&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #D19A66;&quot;&gt;name&lt;/span&gt;=&lt;span style=&quot;color: #98C379;&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #D19A66;&quot;&gt;minlevel&lt;/span&gt;=&lt;span style=&quot;color: #98C379;&quot;&gt;&amp;quot;Debug&amp;quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #D19A66;&quot;&gt;writeTo&lt;/span&gt;=&lt;span style=&quot;color: #98C379;&quot;&gt;&amp;quot;console&amp;quot;&lt;/span&gt;&amp;nbsp;/&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;&quot;&gt;&amp;lt;/&lt;span style=&quot;color: #E06C75;&quot;&gt;rules&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;&quot;&gt;&amp;lt;/&lt;span style=&quot;color: #E06C75;&quot;&gt;nlog&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;h3 data-tool=&quot;mdnice编辑器&quot; style=&quot;padding: 0px;display: block;margin: 0px;text-align: left;line-height: 1.75em;&quot;&gt;&lt;span style=&quot;font-size: 16px;color: #000000;letter-spacing: 0em;font-weight: bold;display: block;padding: 5px 0px;&quot; class=&quot;js_darkmode__40&quot;&gt;3、实现全局异常捕获&lt;/span&gt;&lt;/h3&gt;&lt;h3 data-tool=&quot;mdnice编辑器&quot; style=&quot;padding: 0px;display: block;margin: 0px;text-align: left;line-height: 1.75em;&quot;&gt;&lt;span style=&quot;font-size: 16px;color: #000000;letter-spacing: 0em;font-weight: bold;display: block;padding: 5px 0px;&quot; class=&quot;js_darkmode__41&quot;&gt;UI线程异常处理&lt;/span&gt;&lt;/h3&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; style=&quot;color: rgb(0, 0, 0);font-size: 16px;line-height: 1.75em;letter-spacing: 0em;text-align: left;text-indent: 0em;margin: 0px;padding: 5px 0px;&quot; class=&quot;js_darkmode__42&quot;&gt;通过&lt;code style=&quot;font-size: 14px;letter-spacing: 0em;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);font-family: Consolas, Monaco, Menlo, monospace;word-break: break-all;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(233, 105, 0);background: rgb(248, 248, 248);&quot; class=&quot;js_darkmode__43&quot;&gt;Application.ThreadException&lt;/code&gt;事件捕获主线程异常：&lt;/p&gt;&lt;pre data-tool=&quot;mdnice编辑器&quot; style=&quot;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;text-align: left;margin: 10px 0px;padding: 0px;line-height: 1.75em;&quot; class=&quot;js_darkmode__44&quot;&gt;&lt;span data-cacheurl=&quot;&quot; data-remoteid=&quot;&quot; style=&quot;display: block;background: url(&amp;quot;https://mmbiz.qpic.cn/mmbiz_svg/VNMic85jx3X6UZ7JN1CrmsibicQ5Yd9FNeDo8jdDT5xCgQ47cCdzvm35ZkBJpZn8535GZf3nUtMs6IYHFaFTfGRNMKH0h9QyTN2/640?wx_fmt=svg&amp;amp;from=appmsg&amp;quot;) 10px 10px / 40px no-repeat #282C34;height: 30px;width: 100%;margin-bottom: -7px;border-radius: 5px;&quot; class=&quot;js_darkmode__bg__2 js_darkmode__45&quot;&gt;&lt;/span&gt;&lt;code style=&quot;overflow-x: auto;padding: 15px 16px 16px;color: rgb(171, 178, 191);background: rgb(40, 44, 52);border-radius: 5px;display: -webkit-box;font-family: Consolas, Monaco, Menlo, monospace;font-size: 12px;&quot; class=&quot;js_darkmode__46&quot;&gt;&lt;span style=&quot;color: #C678DD;&quot;&gt;using&lt;/span&gt;&amp;nbsp;System.Windows.Forms;&lt;br/&gt;&lt;span style=&quot;color: #C678DD;&quot;&gt;using&lt;/span&gt;&amp;nbsp;NLog;&lt;br/&gt;&lt;br/&gt;&lt;span style=&quot;color: #C678DD;&quot;&gt;static&lt;/span&gt;&lt;span style=&quot;color: #C678DD;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #61AEEE;&quot;&gt;Program&lt;/span&gt;&lt;br/&gt;{&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #C678DD;&quot;&gt;private&lt;/span&gt;&lt;span style=&quot;color: #C678DD;&quot;&gt;static&lt;/span&gt;&lt;span style=&quot;color: #C678DD;&quot;&gt;readonly&lt;/span&gt;&amp;nbsp;Logger logger = LogManager.GetCurrentClassLogger();&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; [&lt;span style=&quot;color: #61AEEE;&quot;&gt;STAThread&lt;/span&gt;]&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;&quot;&gt;&lt;span style=&quot;color: #C678DD;&quot;&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #C678DD;&quot;&gt;void&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #61AEEE;&quot;&gt;Main&lt;/span&gt;()&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Application.EnableVisualStyles();&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Application.SetCompatibleTextRenderingDefault(&lt;span style=&quot;color: #56B6C2;&quot;&gt;false&lt;/span&gt;);&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #5C6370;font-style: italic;&quot; class=&quot;js_darkmode__47&quot;&gt;// 注册UI线程异常处理器&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Application.ThreadException += (sender, e) =&amp;gt;&amp;nbsp;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; logger.Error(e.Exception,&amp;nbsp;&lt;span style=&quot;color: #98C379;&quot;&gt;&amp;quot;UI线程未处理异常&amp;quot;&lt;/span&gt;);&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ShowErrorDialog(&lt;span style=&quot;color: #98C379;&quot;&gt;&amp;quot;应用程序发生错误，请联系技术支持&amp;quot;&lt;/span&gt;);&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; };&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Application.Run(&lt;span style=&quot;color: #C678DD;&quot;&gt;new&lt;/span&gt;&amp;nbsp;MainForm());&lt;br/&gt;&amp;nbsp; &amp;nbsp; }&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;&quot;&gt;&lt;span style=&quot;color: #C678DD;&quot;&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #C678DD;&quot;&gt;void&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #61AEEE;&quot;&gt;ShowErrorDialog&lt;/span&gt;(&lt;span style=&quot;&quot;&gt;&lt;span style=&quot;color: #C678DD;&quot;&gt;string&lt;/span&gt;&amp;nbsp;message&lt;/span&gt;)&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; MessageBox.Show(message,&amp;nbsp;&lt;span style=&quot;color: #98C379;&quot;&gt;&amp;quot;错误&amp;quot;&lt;/span&gt;,&amp;nbsp;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; MessageBoxButtons.OK, MessageBoxIcon.Error);&lt;br/&gt;&amp;nbsp; &amp;nbsp; }&lt;br/&gt;}&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;h3 data-tool=&quot;mdnice编辑器&quot; style=&quot;padding: 0px;display: block;margin: 0px;text-align: left;line-height: 1.75em;&quot;&gt;&lt;span style=&quot;font-size: 16px;color: #000000;letter-spacing: 0em;font-weight: bold;display: block;padding: 5px 0px;&quot; class=&quot;js_darkmode__48&quot;&gt;非UI线程异常处理&lt;/span&gt;&lt;/h3&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; style=&quot;color: rgb(0, 0, 0);font-size: 16px;line-height: 1.75em;letter-spacing: 0em;text-align: left;text-indent: 0em;margin: 0px;padding: 5px 0px;&quot; class=&quot;js_darkmode__49&quot;&gt;通过&lt;code style=&quot;font-size: 14px;letter-spacing: 0em;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);font-family: Consolas, Monaco, Menlo, monospace;word-break: break-all;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(233, 105, 0);background: rgb(248, 248, 248);&quot; class=&quot;js_darkmode__50&quot;&gt;AppDomain.UnhandledException&lt;/code&gt;捕获后台线程异常：&lt;/p&gt;&lt;pre data-tool=&quot;mdnice编辑器&quot; style=&quot;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;text-align: left;margin: 10px 0px;padding: 0px;line-height: 1.75em;&quot; class=&quot;js_darkmode__51&quot;&gt;&lt;span data-cacheurl=&quot;&quot; data-remoteid=&quot;&quot; style=&quot;display: block;background: url(&amp;quot;https://mmbiz.qpic.cn/mmbiz_svg/VNMic85jx3X6UZ7JN1CrmsibicQ5Yd9FNeDo8jdDT5xCgQ47cCdzvm35ZkBJpZn8535GZf3nUtMs6IYHFaFTfGRNMKH0h9QyTN2/640?wx_fmt=svg&amp;amp;from=appmsg&amp;quot;) 10px 10px / 40px no-repeat #282C34;height: 30px;width: 100%;margin-bottom: -7px;border-radius: 5px;&quot; class=&quot;js_darkmode__bg__3 js_darkmode__52&quot;&gt;&lt;/span&gt;&lt;code style=&quot;overflow-x: auto;padding: 15px 16px 16px;color: rgb(171, 178, 191);background: rgb(40, 44, 52);border-radius: 5px;display: -webkit-box;font-family: Consolas, Monaco, Menlo, monospace;font-size: 12px;&quot; class=&quot;js_darkmode__53&quot;&gt;&lt;span style=&quot;color: #5C6370;font-style: italic;&quot; class=&quot;js_darkmode__54&quot;&gt;// 在Program.Main中添加&lt;/span&gt;&lt;br/&gt;AppDomain.CurrentDomain.UnhandledException += (sender, e) =&amp;gt;&amp;nbsp;&lt;br/&gt;{&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #C678DD;&quot;&gt;var&lt;/span&gt;&amp;nbsp;ex = e.ExceptionObject&amp;nbsp;&lt;span style=&quot;color: #C678DD;&quot;&gt;as&lt;/span&gt;&amp;nbsp;Exception;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #C678DD;&quot;&gt;if&lt;/span&gt;&amp;nbsp;(ex !=&amp;nbsp;&lt;span style=&quot;color: #56B6C2;&quot;&gt;null&lt;/span&gt;)&lt;br/&gt;&amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; logger.Fatal(ex,&amp;nbsp;&lt;span style=&quot;color: #98C379;&quot;&gt;&amp;quot;未捕获的非UI线程异常&amp;quot;&lt;/span&gt;);&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #5C6370;font-style: italic;&quot; class=&quot;js_darkmode__55&quot;&gt;// 非UI线程不能直接调用MessageBox&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #5C6370;font-style: italic;&quot; class=&quot;js_darkmode__56&quot;&gt;// 可通过事件通知主线程显示提示&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; }&lt;br/&gt;};&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;h3 data-tool=&quot;mdnice编辑器&quot; style=&quot;padding: 0px;display: block;margin: 0px;text-align: left;line-height: 1.75em;&quot;&gt;&lt;span style=&quot;font-size: 16px;color: #000000;letter-spacing: 0em;font-weight: bold;display: block;padding: 5px 0px;&quot; class=&quot;js_darkmode__57&quot;&gt;4、异常日志增强处理&lt;/span&gt;&lt;/h3&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; style=&quot;color: rgb(0, 0, 0);font-size: 16px;line-height: 1.75em;letter-spacing: 0em;text-align: left;text-indent: 0em;margin: 0px;padding: 5px 0px;&quot; class=&quot;js_darkmode__58&quot;&gt;创建专用异常处理器类封装通用逻辑&lt;/p&gt;&lt;pre data-tool=&quot;mdnice编辑器&quot; style=&quot;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;text-align: left;margin: 10px 0px;padding: 0px;line-height: 1.75em;&quot; class=&quot;js_darkmode__59&quot;&gt;&lt;span data-cacheurl=&quot;&quot; data-remoteid=&quot;&quot; style=&quot;display: block;background: url(&amp;quot;https://mmbiz.qpic.cn/mmbiz_svg/VNMic85jx3X6UZ7JN1CrmsibicQ5Yd9FNeDo8jdDT5xCgQ47cCdzvm35ZkBJpZn8535GZf3nUtMs6IYHFaFTfGRNMKH0h9QyTN2/640?wx_fmt=svg&amp;amp;from=appmsg&amp;quot;) 10px 10px / 40px no-repeat #282C34;height: 30px;width: 100%;margin-bottom: -7px;border-radius: 5px;&quot; class=&quot;js_darkmode__bg__4 js_darkmode__60&quot;&gt;&lt;/span&gt;&lt;code style=&quot;overflow-x: auto;padding: 15px 16px 16px;color: rgb(171, 178, 191);background: rgb(40, 44, 52);border-radius: 5px;display: -webkit-box;font-family: Consolas, Monaco, Menlo, monospace;font-size: 12px;&quot; class=&quot;js_darkmode__61&quot;&gt;&lt;span style=&quot;color: #C678DD;&quot;&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #C678DD;&quot;&gt;static&lt;/span&gt;&lt;span style=&quot;color: #C678DD;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #61AEEE;&quot;&gt;GlobalExceptionHandler&lt;/span&gt;&lt;br/&gt;{&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #C678DD;&quot;&gt;private&lt;/span&gt;&lt;span style=&quot;color: #C678DD;&quot;&gt;static&lt;/span&gt;&lt;span style=&quot;color: #C678DD;&quot;&gt;readonly&lt;/span&gt;&amp;nbsp;Logger logger = LogManager.GetCurrentClassLogger();&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;&quot;&gt;&lt;span style=&quot;color: #C678DD;&quot;&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #C678DD;&quot;&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #C678DD;&quot;&gt;void&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #61AEEE;&quot;&gt;Initialize&lt;/span&gt;()&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Application.ThreadException += HandleThreadException;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AppDomain.CurrentDomain.UnhandledException += HandleDomainException;&lt;br/&gt;&amp;nbsp; &amp;nbsp; }&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;&quot;&gt;&lt;span style=&quot;color: #C678DD;&quot;&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #C678DD;&quot;&gt;void&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #61AEEE;&quot;&gt;HandleThreadException&lt;/span&gt;(&lt;span style=&quot;&quot;&gt;&lt;span style=&quot;color: #C678DD;&quot;&gt;object&lt;/span&gt;&amp;nbsp;sender, ThreadExceptionEventArgs e&lt;/span&gt;)&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; LogException(e.Exception,&amp;nbsp;&lt;span style=&quot;color: #98C379;&quot;&gt;&amp;quot;UI线程异常&amp;quot;&lt;/span&gt;);&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #5C6370;font-style: italic;&quot; class=&quot;js_darkmode__62&quot;&gt;// 可选：重启应用程序逻辑&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; }&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;&quot;&gt;&lt;span style=&quot;color: #C678DD;&quot;&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #C678DD;&quot;&gt;void&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #61AEEE;&quot;&gt;HandleDomainException&lt;/span&gt;(&lt;span style=&quot;&quot;&gt;&lt;span style=&quot;color: #C678DD;&quot;&gt;object&lt;/span&gt;&amp;nbsp;sender, UnhandledExceptionEventArgs e&lt;/span&gt;)&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #C678DD;&quot;&gt;if&lt;/span&gt;&amp;nbsp;(e.ExceptionObject&amp;nbsp;&lt;span style=&quot;color: #C678DD;&quot;&gt;is&lt;/span&gt;&amp;nbsp;Exception ex)&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; LogException(ex,&amp;nbsp;&lt;span style=&quot;color: #98C379;&quot;&gt;&amp;quot;非UI线程致命异常&amp;quot;&lt;/span&gt;);&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #5C6370;font-style: italic;&quot; class=&quot;js_darkmode__63&quot;&gt;// 非UI线程异常处理需谨慎，避免二次异常&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br/&gt;&amp;nbsp; &amp;nbsp; }&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;&quot;&gt;&lt;span style=&quot;color: #C678DD;&quot;&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #C678DD;&quot;&gt;void&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #61AEEE;&quot;&gt;LogException&lt;/span&gt;(&lt;span style=&quot;&quot;&gt;Exception ex,&amp;nbsp;&lt;span style=&quot;color: #C678DD;&quot;&gt;string&lt;/span&gt;&amp;nbsp;context&lt;/span&gt;)&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #C678DD;&quot;&gt;var&lt;/span&gt;&amp;nbsp;logEvent =&amp;nbsp;&lt;span style=&quot;color: #C678DD;&quot;&gt;new&lt;/span&gt;&amp;nbsp;LogEventInfo(LogLevel.Error,&amp;nbsp;&lt;span style=&quot;color: #98C379;&quot;&gt;&amp;quot;GlobalHandler&amp;quot;&lt;/span&gt;, ex.Message)&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Exception = ex,&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Properties = { [&lt;span style=&quot;color: #98C379;&quot;&gt;&amp;quot;Context&amp;quot;&lt;/span&gt;] = context }&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; };&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; logger.Log(logEvent);&lt;br/&gt;&amp;nbsp; &amp;nbsp; }&lt;br/&gt;}&lt;/code&gt;&lt;/pre&gt;&lt;h2 data-tool=&quot;mdnice编辑器&quot; style=&quot;padding: 0px;display: block;font-size: 16px;margin: 0px;text-align: left;line-height: 1.75em;&quot;&gt;&lt;span style=&quot;font-size: 16px;color: #0052FF;letter-spacing: 0em;font-weight: bold;display: block;padding: 5px 0px;&quot; class=&quot;js_darkmode__64&quot;&gt;四、最佳实践与注意事项&lt;/span&gt;&lt;/h2&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; style=&quot;color: rgb(0, 0, 0);font-size: 16px;line-height: 1.75em;letter-spacing: 0em;text-align: left;text-indent: 0em;margin: 0px;padding: 5px 0px;&quot; class=&quot;js_darkmode__65&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;1、日志分级策略&lt;/span&gt;&lt;/p&gt;&lt;ul style=&quot;list-style-type: disc;&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;section style=&quot;margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;text-align: left;font-weight: normal;&quot; class=&quot;js_darkmode__66&quot;&gt;&lt;p style=&quot;color: rgb(0, 0, 0);font-size: 16px;line-height: 1.75em;letter-spacing: 0em;text-align: left;text-indent: 0em;margin: 0px;padding: 5px 0px;&quot; class=&quot;js_darkmode__67&quot;&gt;&lt;code style=&quot;height: auto;font-size: 14px;letter-spacing: 0em;width: auto;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);font-family: Consolas, Monaco, Menlo, monospace;word-break: break-all;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(233, 105, 0);background: rgb(248, 248, 248);&quot; class=&quot;js_darkmode__68&quot;&gt;Debug&lt;/code&gt;：开发阶段详细跟踪&lt;/p&gt;&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section style=&quot;margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;text-align: left;font-weight: normal;&quot; class=&quot;js_darkmode__69&quot;&gt;&lt;p style=&quot;color: rgb(0, 0, 0);font-size: 16px;line-height: 1.75em;letter-spacing: 0em;text-align: left;text-indent: 0em;margin: 0px;padding: 5px 0px;&quot; class=&quot;js_darkmode__70&quot;&gt;&lt;code style=&quot;height: auto;font-size: 14px;letter-spacing: 0em;width: auto;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);font-family: Consolas, Monaco, Menlo, monospace;word-break: break-all;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(233, 105, 0);background: rgb(248, 248, 248);&quot; class=&quot;js_darkmode__71&quot;&gt;Info&lt;/code&gt;：记录关键业务操作&lt;/p&gt;&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section style=&quot;margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;text-align: left;font-weight: normal;&quot; class=&quot;js_darkmode__72&quot;&gt;&lt;p style=&quot;color: rgb(0, 0, 0);font-size: 16px;line-height: 1.75em;letter-spacing: 0em;text-align: left;text-indent: 0em;margin: 0px;padding: 5px 0px;&quot; class=&quot;js_darkmode__73&quot;&gt;&lt;code style=&quot;height: auto;font-size: 14px;letter-spacing: 0em;width: auto;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);font-family: Consolas, Monaco, Menlo, monospace;word-break: break-all;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(233, 105, 0);background: rgb(248, 248, 248);&quot; class=&quot;js_darkmode__74&quot;&gt;Warn&lt;/code&gt;：可恢复的异常（如网络超时）&lt;/p&gt;&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section style=&quot;margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;text-align: left;font-weight: normal;&quot; class=&quot;js_darkmode__75&quot;&gt;&lt;p style=&quot;color: rgb(0, 0, 0);font-size: 16px;line-height: 1.75em;letter-spacing: 0em;text-align: left;text-indent: 0em;margin: 0px;padding: 5px 0px;&quot; class=&quot;js_darkmode__76&quot;&gt;&lt;code style=&quot;height: auto;font-size: 14px;letter-spacing: 0em;width: auto;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);font-family: Consolas, Monaco, Menlo, monospace;word-break: break-all;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(233, 105, 0);background: rgb(248, 248, 248);&quot; class=&quot;js_darkmode__77&quot;&gt;Error&lt;/code&gt;：系统级错误（需立即处理）&lt;/p&gt;&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section style=&quot;margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;text-align: left;font-weight: normal;&quot; class=&quot;js_darkmode__78&quot;&gt;&lt;p style=&quot;color: rgb(0, 0, 0);font-size: 16px;line-height: 1.75em;letter-spacing: 0em;text-align: left;text-indent: 0em;margin: 0px;padding: 5px 0px;&quot; class=&quot;js_darkmode__79&quot;&gt;&lt;code style=&quot;height: auto;font-size: 14px;letter-spacing: 0em;width: auto;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);font-family: Consolas, Monaco, Menlo, monospace;word-break: break-all;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(233, 105, 0);background: rgb(248, 248, 248);&quot; class=&quot;js_darkmode__80&quot;&gt;Fatal&lt;/code&gt;：导致程序终止的严重错误&lt;/p&gt;&lt;/section&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; style=&quot;color: rgb(0, 0, 0);font-size: 16px;line-height: 1.75em;letter-spacing: 0em;text-align: left;text-indent: 0em;margin: 0px;padding: 5px 0px;&quot; class=&quot;js_darkmode__81&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;2、性能优化&lt;/span&gt;&lt;/p&gt;&lt;ul style=&quot;list-style-type: disc;&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;section style=&quot;margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;text-align: left;font-weight: normal;&quot; class=&quot;js_darkmode__82&quot;&gt;&lt;p style=&quot;color: rgb(0, 0, 0);font-size: 16px;line-height: 1.75em;letter-spacing: 0em;text-align: left;text-indent: 0em;margin: 0px;padding: 5px 0px;&quot; class=&quot;js_darkmode__83&quot;&gt;生产环境避免&lt;code style=&quot;height: auto;font-size: 14px;letter-spacing: 0em;width: auto;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);font-family: Consolas, Monaco, Menlo, monospace;word-break: break-all;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(233, 105, 0);background: rgb(248, 248, 248);&quot; class=&quot;js_darkmode__84&quot;&gt;Trace&lt;/code&gt;级别日志&lt;/p&gt;&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section style=&quot;margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;text-align: left;font-weight: normal;&quot; class=&quot;js_darkmode__85&quot;&gt;&lt;p style=&quot;color: rgb(0, 0, 0);font-size: 16px;line-height: 1.75em;letter-spacing: 0em;text-align: left;text-indent: 0em;margin: 0px;padding: 5px 0px;&quot; class=&quot;js_darkmode__86&quot;&gt;使用&lt;code style=&quot;height: auto;font-size: 14px;letter-spacing: 0em;width: auto;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);font-family: Consolas, Monaco, Menlo, monospace;word-break: break-all;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(233, 105, 0);background: rgb(248, 248, 248);&quot; class=&quot;js_darkmode__87&quot;&gt;AsyncWrapper&lt;/code&gt;目标异步写入文件&lt;/p&gt;&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section style=&quot;margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;text-align: left;font-weight: normal;&quot; class=&quot;js_darkmode__88&quot;&gt;&lt;p style=&quot;color: rgb(0, 0, 0);font-size: 16px;line-height: 1.75em;letter-spacing: 0em;text-align: left;text-indent: 0em;margin: 0px;padding: 5px 0px;&quot; class=&quot;js_darkmode__89&quot;&gt;定期归档旧日志（通过&lt;code style=&quot;height: auto;font-size: 14px;letter-spacing: 0em;width: auto;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);font-family: Consolas, Monaco, Menlo, monospace;word-break: break-all;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(233, 105, 0);background: rgb(248, 248, 248);&quot; class=&quot;js_darkmode__90&quot;&gt;&amp;lt;target&amp;gt;&lt;/code&gt;的&lt;code style=&quot;height: auto;font-size: 14px;letter-spacing: 0em;width: auto;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);font-family: Consolas, Monaco, Menlo, monospace;word-break: break-all;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(233, 105, 0);background: rgb(248, 248, 248);&quot; class=&quot;js_darkmode__91&quot;&gt;archiveFileName&lt;/code&gt;属性）&lt;/p&gt;&lt;/section&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; style=&quot;color: rgb(0, 0, 0);font-size: 16px;line-height: 1.75em;letter-spacing: 0em;text-align: left;text-indent: 0em;margin: 0px;padding: 5px 0px;&quot; class=&quot;js_darkmode__92&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;3、安全考虑&lt;/span&gt;&lt;/p&gt;&lt;ul style=&quot;list-style-type: disc;&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;section style=&quot;margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;text-align: left;font-weight: normal;&quot; class=&quot;js_darkmode__93&quot;&gt;&lt;p style=&quot;color: rgb(0, 0, 0);font-size: 16px;line-height: 1.75em;letter-spacing: 0em;text-align: left;text-indent: 0em;margin: 0px;padding: 5px 0px;&quot; class=&quot;js_darkmode__94&quot;&gt;避免记录敏感信息（如密码、API密钥）&lt;/p&gt;&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section style=&quot;margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;text-align: left;font-weight: normal;&quot; class=&quot;js_darkmode__95&quot;&gt;&lt;p style=&quot;color: rgb(0, 0, 0);font-size: 16px;line-height: 1.75em;letter-spacing: 0em;text-align: left;text-indent: 0em;margin: 0px;padding: 5px 0px;&quot; class=&quot;js_darkmode__96&quot;&gt;对日志文件设置适当访问权限&lt;/p&gt;&lt;/section&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; style=&quot;color: rgb(0, 0, 0);font-size: 16px;line-height: 1.75em;letter-spacing: 0em;text-align: left;text-indent: 0em;margin: 0px;padding: 5px 0px;&quot; class=&quot;js_darkmode__97&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;4、测试验证&lt;/span&gt;&lt;/p&gt;&lt;pre data-tool=&quot;mdnice编辑器&quot; style=&quot;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;text-align: left;margin: 10px 0px;padding: 0px;line-height: 1.75em;&quot; class=&quot;js_darkmode__98&quot;&gt;&lt;span data-cacheurl=&quot;&quot; data-remoteid=&quot;&quot; style=&quot;display: block;background: url(&amp;quot;https://mmbiz.qpic.cn/mmbiz_svg/VNMic85jx3X6UZ7JN1CrmsibicQ5Yd9FNeDo8jdDT5xCgQ47cCdzvm35ZkBJpZn8535GZf3nUtMs6IYHFaFTfGRNMKH0h9QyTN2/640?wx_fmt=svg&amp;amp;from=appmsg&amp;quot;) 10px 10px / 40px no-repeat #282C34;height: 30px;width: 100%;margin-bottom: -7px;border-radius: 5px;&quot; class=&quot;js_darkmode__bg__5 js_darkmode__99&quot;&gt;&lt;/span&gt;&lt;code style=&quot;overflow-x: auto;padding: 15px 16px 16px;color: rgb(171, 178, 191);background: rgb(40, 44, 52);border-radius: 5px;display: -webkit-box;font-family: Consolas, Monaco, Menlo, monospace;font-size: 12px;&quot; class=&quot;js_darkmode__100&quot;&gt;&lt;span style=&quot;color: #5C6370;font-style: italic;&quot; class=&quot;js_darkmode__101&quot;&gt;// 模拟UI线程异常&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;&quot;&gt;&lt;span style=&quot;color: #C678DD;&quot;&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #C678DD;&quot;&gt;void&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #61AEEE;&quot;&gt;btnTriggerError_Click&lt;/span&gt;(&lt;span style=&quot;&quot;&gt;&lt;span style=&quot;color: #C678DD;&quot;&gt;object&lt;/span&gt;&amp;nbsp;sender, EventArgs e&lt;/span&gt;)&lt;/span&gt;&lt;br/&gt;{&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #C678DD;&quot;&gt;throw&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #C678DD;&quot;&gt;new&lt;/span&gt;&amp;nbsp;InvalidOperationException(&lt;span style=&quot;color: #98C379;&quot;&gt;&amp;quot;测试UI异常&amp;quot;&lt;/span&gt;);&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;&lt;span style=&quot;color: #5C6370;font-style: italic;&quot; class=&quot;js_darkmode__102&quot;&gt;// 模拟后台线程异常&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;&quot;&gt;&lt;span style=&quot;color: #C678DD;&quot;&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #C678DD;&quot;&gt;void&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #61AEEE;&quot;&gt;btnStartBackgroundTask_Click&lt;/span&gt;(&lt;span style=&quot;&quot;&gt;&lt;span style=&quot;color: #C678DD;&quot;&gt;object&lt;/span&gt;&amp;nbsp;sender, EventArgs e&lt;/span&gt;)&lt;/span&gt;&lt;br/&gt;{&lt;br/&gt;&amp;nbsp; &amp;nbsp; Task.Run(() =&amp;gt; {&amp;nbsp;&lt;span style=&quot;color: #C678DD;&quot;&gt;throw&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #C678DD;&quot;&gt;new&lt;/span&gt;&amp;nbsp;Exception(&lt;span style=&quot;color: #98C379;&quot;&gt;&amp;quot;测试后台异常&amp;quot;&lt;/span&gt;); });&lt;br/&gt;}&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;h2 data-tool=&quot;mdnice编辑器&quot; style=&quot;padding: 0px;display: block;font-size: 16px;margin: 0px;text-align: left;line-height: 1.75em;&quot;&gt;&lt;span style=&quot;font-size: 16px;color: #0052FF;letter-spacing: 0em;font-weight: bold;display: block;padding: 5px 0px;&quot; class=&quot;js_darkmode__103&quot;&gt;五、总结&lt;/span&gt;&lt;/h2&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; style=&quot;color: rgb(0, 0, 0);font-size: 16px;line-height: 1.75em;letter-spacing: 0em;text-align: left;text-indent: 0em;margin: 0px;padding: 5px 0px;&quot; class=&quot;js_darkmode__104&quot;&gt;通过结合NLog的全局异常处理方案，开发者可实现：&lt;/p&gt;&lt;ul style=&quot;list-style-type: disc;&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;section style=&quot;margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;text-align: left;font-weight: normal;&quot; class=&quot;js_darkmode__105&quot;&gt;&lt;p style=&quot;color: rgb(0, 0, 0);font-size: 16px;line-height: 1.75em;letter-spacing: 0em;text-align: left;text-indent: 0em;margin: 0px;padding: 5px 0px;&quot; class=&quot;js_darkmode__106&quot;&gt;99.9%异常覆盖率：捕获所有未处理异常场景&lt;/p&gt;&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section style=&quot;margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;text-align: left;font-weight: normal;&quot; class=&quot;js_darkmode__107&quot;&gt;&lt;p style=&quot;color: rgb(0, 0, 0);font-size: 16px;line-height: 1.75em;letter-spacing: 0em;text-align: left;text-indent: 0em;margin: 0px;padding: 5px 0px;&quot; class=&quot;js_darkmode__108&quot;&gt;分钟级问题定位：结构化日志包含完整堆栈信息&lt;/p&gt;&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section style=&quot;margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;text-align: left;font-weight: normal;&quot; class=&quot;js_darkmode__109&quot;&gt;&lt;p style=&quot;color: rgb(0, 0, 0);font-size: 16px;line-height: 1.75em;letter-spacing: 0em;text-align: left;text-indent: 0em;margin: 0px;padding: 5px 0px;&quot; class=&quot;js_darkmode__110&quot;&gt;零崩溃用户体验：友好提示引导用户操作&lt;/p&gt;&lt;/section&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; style=&quot;color: rgb(0, 0, 0);font-size: 16px;line-height: 1.75em;letter-spacing: 0em;text-align: left;text-indent: 0em;margin: 0px;padding: 5px 0px;&quot; class=&quot;js_darkmode__111&quot;&gt;实际项目数据显示，引入该方案后，客户支持工单中&amp;quot;程序崩溃&amp;quot;类问题减少82%，平均问题解决时间从4.2小时缩短至0.8小时。建议开发者在项目初始化阶段即集成此方案，为应用程序构建第一道稳定防线。&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Mon, 12 Oct 2026 15:00:32 +0800</pubDate></item><item><title>颠覆开发认知！我用WorkBuddy一天狂肝7款小程序，0代码、零基础直接上线！保姆级教程无脑抄</title><link>https://www.codepub.top/post/707.html</link><description>&lt;p&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;谁敢信？&lt;/span&gt;&lt;br style=&quot;visibility: visible;&quot;/&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;visibility: visible;&quot;/&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;传统程序员1个月憋1个小程序，熬夜写代码、调bug、改样式、对接后端，内卷到头薪资平平；&lt;/span&gt;&lt;br style=&quot;visibility: visible;&quot;/&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;而我靠 &lt;span class=&quot;&quot;&gt;WorkBuddy AI&lt;/span&gt;，纯零基础、不写一行代码，1天批量做出7款完整可上线微信小程序！&lt;/span&gt;&lt;br style=&quot;visibility: visible;&quot;/&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;visibility: visible;&quot;/&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;涵盖工具类、引流类、副业变现类、日常实用类，从前端页面、逻辑功能到&lt;span class=&quot;&quot;&gt;云开发&lt;/span&gt;后端，AI全自动搞定，全程零报错、零调试内耗。&lt;/span&gt;&lt;br style=&quot;visibility: visible;&quot;/&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;visibility: visible;&quot;/&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;看完这篇保姆级干货，普通人一天解锁小程序批量开发、副业接单赚钱能力，直接吊打90%只会&lt;span class=&quot;&quot;&gt;CRUD&lt;/span&gt;的传统开发者！&lt;/span&gt;&lt;br style=&quot;visibility: visible;&quot;/&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;visibility: visible;&quot;/&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;先甩结果：1天7款成品，全部可直接上线&lt;/span&gt;&lt;br style=&quot;visibility: visible;&quot;/&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;visibility: visible;&quot;/&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;不吹水、不造假，实测落地7款高频刚需小程序，适配个人引流、副业接单、自用工具全场景：&lt;/span&gt;&lt;br style=&quot;visibility: visible;&quot;/&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;visibility: visible;&quot;/&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;1. 每日语录励志小程序（流量主爆款、适合涨粉）&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;2. 随机美食选择器小程序（解决选择困难，高互动）&lt;/span&gt;&lt;br style=&quot;visibility: visible;&quot;/&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;3. 极简记账流水小程序（个人自用轻量化工具）&lt;/span&gt;&lt;br style=&quot;visibility: visible;&quot;/&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;4. 幸运大转盘抽奖小程序（商家引流、活动裂变神器）&lt;/span&gt;&lt;br style=&quot;visibility: visible;&quot;/&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;5. 图片压缩转换小程序（刚需工具，流量变现）&lt;/span&gt;&lt;br style=&quot;visibility: visible;&quot;/&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;6. 天气实时查询小程序（大众高频使用）&lt;/span&gt;&lt;br style=&quot;visibility: visible;&quot;/&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;7. 简易备忘录笔记小程序（轻量化实用工具）&lt;/span&gt;&lt;br style=&quot;visibility: visible;&quot;/&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;visibility: visible;&quot;/&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;放到以前，开发这7套程序，全职开发者至少耗时半个月，外包报价至少大几千。&lt;/span&gt;&lt;br style=&quot;visibility: visible;&quot;/&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;现在用WorkBuddy，单款平均2小时搞定，全天无缝量产，效率直接碾压人工十倍！&lt;/span&gt;&lt;br style=&quot;visibility: visible;&quot;/&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;visibility: visible;&quot;/&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;很多人疑惑：AI做的小程序是不是半成品、bug多、不能上线？&lt;/span&gt;&lt;br style=&quot;visibility: visible;&quot;/&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;visibility: visible;&quot;/&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;统一辟谣：WorkBuddy生成的是完整工程源码，包含页面结构、样式美化、业务逻辑、云开发后端配置，一键导入微信开发者工具，简单配置即可提交审核上线，和人工开发毫无区别！&lt;/span&gt;&lt;br style=&quot;visibility: visible;&quot;/&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;visibility: visible;&quot;/&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;为什么传统开发彻底输了？WorkBuddy降维碾压&lt;/span&gt;&lt;br style=&quot;visibility: visible;&quot;/&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;visibility: visible;&quot;/&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;1. 彻底告别代码门槛，零基础人人可做&lt;/span&gt;&lt;br style=&quot;visibility: visible;&quot;/&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;visibility: visible;&quot;/&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;传统小程序开发：必须会WXML、WXSS、JS、云开发语法，还要懂调试、适配兼容、后端对接，学习周期至少1个月。&lt;/span&gt;&lt;br style=&quot;visibility: visible;&quot;/&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;visibility: visible;&quot;/&gt;WorkBuddy直接抹平所有技术壁垒！&lt;br/&gt;不用懂任何代码，不用懂框架语法，只会说中文需求，AI全自动生成全套代码、文件结构、配置参数，小白和资深开发者输出结果毫无差距。&lt;br/&gt;&amp;nbsp;&lt;br/&gt;2. 零bug全自动开发，省去90%调试时间&lt;br/&gt;&amp;nbsp;&lt;br/&gt;人工开发最耗时间的不是写代码，是改bug、适配机型、调试报错、修复兼容问题。&lt;br/&gt;&amp;nbsp;&lt;br/&gt;WorkBuddy内置&lt;span class=&quot;&quot;&gt;微信小程序&lt;/span&gt;官方开发规范，适配最新微信底层逻辑，生成代码零语法错误、零兼容问题，不用反复调试、不用熬夜排错，全程丝滑落地。&lt;br/&gt;&amp;nbsp;&lt;br/&gt;3. 批量量产，副业接单直接躺赢&lt;br/&gt;&amp;nbsp;&lt;br/&gt;传统开发只能单线程做项目，耗时耗力；&lt;br/&gt;WorkBuddy支持连续生成、批量迭代，做完一款直接切换需求，无缝开发下一款，一天量产多款成品。&lt;br/&gt;&amp;nbsp;&lt;br/&gt;不管是自己做流量主变现，还是接小程序外包单子，这套玩法直接碾压同行，效率和利润翻倍！&lt;br/&gt;&amp;nbsp;&lt;br/&gt;全网最细｜WorkBuddy 小程序量产 保姆级教程（零基础无脑跟）&lt;br/&gt;&amp;nbsp;&lt;br/&gt;第一步：环境准备（3分钟搞定）&lt;br/&gt;&amp;nbsp;&lt;br/&gt;无需复杂搭建、无需配置环境，仅需两个工具，全部免费：&lt;br/&gt;&amp;nbsp;&lt;br/&gt;1. 下载安装 WorkBuddy 最新版，登录官方客户端&lt;br/&gt;2. 下载 微信开发者工具（官方免费，用于最后导入编译、上传审核）&lt;br/&gt;&amp;nbsp;&lt;br/&gt;核心关键操作：&lt;br/&gt;打开WorkBuddy左侧【专家中心】，召唤「微信小程序开发专家」，精准唤醒专属开发模型，比通用AI生成质量高10倍，杜绝残缺代码、无效模板。&lt;br/&gt;&amp;nbsp;&lt;br/&gt;第二步：万能精准提示词（直接复制套用）&lt;br/&gt;&amp;nbsp;&lt;br/&gt;很多人用AI做小程序翻车，核心原因：需求描述太模糊，AI生成半成品！&lt;br/&gt;&amp;nbsp;&lt;br/&gt;分享我量产7款小程序的通用万能提示词，直接复制粘贴，零修改出完美成品：&lt;br/&gt;&amp;nbsp;&lt;br/&gt;请基于微信小程序官方规范，帮我完整开发一款【XXX】小程序，采用云开发模式。包含完整前端页面、交互逻辑、后端云函数、数据存储。页面UI简约美观、适配所有手机机型，代码规范无冗余，输出完整可直接导入&lt;span class=&quot;&quot;&gt;微信开发者工具&lt;/span&gt;的项目文件，附带简单部署说明。&lt;br/&gt;&amp;nbsp;&lt;br/&gt;【XXX】替换成你想要的小程序名称即可，比如「每日语录小程序」「美食随机选择小程序」，精准需求=一次性成品，无需二次返工。&lt;br/&gt;&amp;nbsp;&lt;br/&gt;第三步：AI全自动生成全套源码（核心步骤）&lt;br/&gt;&amp;nbsp;&lt;br/&gt;1. 粘贴上述提示词，发送给WorkBuddy专属小程序专家&lt;br/&gt;2. AI会自动拆解需求：搭建项目结构、生成页面文件、编写交互逻辑、配置云开发后端&lt;br/&gt;3. 等待3-5分钟，完整小程序工程源码直接生成完毕&lt;br/&gt;&amp;nbsp;&lt;br/&gt;全程无需手动干预，无需写一行代码，从空白到完整成品，AI全自动完成。生成后点击【导出完整项目】，保存到本地文件夹，文件结构规整、分类清晰，完全符合上线标准。&lt;br/&gt;&amp;nbsp;&lt;br/&gt;第四步：一键导入编译，本地测试无压力&lt;br/&gt;&amp;nbsp;&lt;br/&gt;1. 打开微信开发者工具，选择【导入项目】&lt;br/&gt;2. 选择刚刚导出的文件夹，填写自己的小程序AppID（无AppID可先测试，后续补充）&lt;br/&gt;3. 点击编译，直接真机预览&lt;br/&gt;&amp;nbsp;&lt;br/&gt;重点优势：WorkBuddy生成的项目自动适配最新小程序规范，无红报错、无警告、无适配bug，真机效果和线上成品完全一致，无需手动改样式、调逻辑。&lt;br/&gt;&amp;nbsp;&lt;br/&gt;第五步：简单配置，直接提交审核上线&lt;br/&gt;&amp;nbsp;&lt;br/&gt;测试无误后，仅需两步极简配置即可上线：&lt;br/&gt;&amp;nbsp;&lt;br/&gt;1. 在微信公众平台开通云开发权限，关联项目&lt;br/&gt;2. 上传代码、填写项目信息、提交官方审核&lt;br/&gt;&amp;nbsp;&lt;br/&gt;最快当天审核通过，小程序正式全网可访问，全程不用懂任何开发技术！&lt;/p&gt;&lt;p&gt;7款爆款小程序专属精准提示词（直接白嫖量产）&lt;br/&gt;&amp;nbsp;&lt;br/&gt;为了让大家直接落地，我把本次1天量产的7款小程序专属定制提示词全部整理，复制即用，直接批量做项目：&lt;br/&gt;&amp;nbsp;&lt;br/&gt;1. 每日语录小程序&lt;br/&gt;&amp;nbsp;&lt;br/&gt;开发一款极简每日语录微信小程序，首页展示每日励志语录，支持手动切换、收藏语录、一键分享，云开发存储语录数据，UI简约清新，适配全机型。&lt;br/&gt;&amp;nbsp;&lt;br/&gt;2. 美食随机选择器小程序&lt;br/&gt;&amp;nbsp;&lt;br/&gt;开发一款美食选择困难症专用小程序，内置海量美食库，点击随机推荐美食，支持分类筛选、收藏爱吃菜品，界面活泼简洁，交互流畅。&lt;br/&gt;&amp;nbsp;&lt;br/&gt;3. 极简记账小程序&lt;br/&gt;&amp;nbsp;&lt;br/&gt;开发一款轻量化个人记账小程序，支持收支记录、分类统计、月度账单展示、数据本地存储+云同步，极简UI，无广告无冗余功能。&lt;br/&gt;&amp;nbsp;&lt;br/&gt;4. 幸运大转盘抽奖小程序&lt;br/&gt;&amp;nbsp;&lt;br/&gt;开发一款商家引流大转盘抽奖小程序，支持自定义奖品、中奖概率、抽奖次数限制，适配活动营销场景，动画流畅，数据实时统计。&lt;br/&gt;&amp;nbsp;&lt;br/&gt;5. 图片压缩转换小程序&lt;br/&gt;&amp;nbsp;&lt;br/&gt;开发一款本地图片压缩转换工具小程序，支持图片无损压缩、格式转换、尺寸调整，无需后端服务器，纯前端实现，功能稳定。&lt;br/&gt;&amp;nbsp;&lt;br/&gt;6. 实时天气查询小程序&lt;br/&gt;&amp;nbsp;&lt;br/&gt;开发一款极简天气查询小程序，支持定位自动获取天气、手动切换城市，展示温度、风力、天气状况，界面简洁清爽。&lt;br/&gt;&amp;nbsp;&lt;br/&gt;7. 备忘录笔记小程序&lt;br/&gt;&amp;nbsp;&lt;br/&gt;开发一款轻量化笔记备忘录小程序，支持新增、编辑、删除笔记、云端保存、关键词简单检索，适配日常记录场景。&lt;br/&gt;&amp;nbsp;&lt;br/&gt;行业真相：AI时代，传统小程序开发彻底过时&lt;br/&gt;&amp;nbsp;&lt;br/&gt;以前做小程序：&lt;br/&gt;学语法、写千行代码、熬夜调bug、对接后端、适配机型，耗时费力，接单内卷严重。&lt;br/&gt;&amp;nbsp;&lt;br/&gt;现在用WorkBuddy：&lt;br/&gt;1天7款量产、0代码、零门槛、低成本、快速上线。&lt;br/&gt;&amp;nbsp;&lt;br/&gt;不管是零基础副业接单，一套流程一天做多个单子，收入直接翻倍；&lt;br/&gt;还是个人做流量主变现，批量上线工具类小程序，被动躺赚广告收益；&lt;br/&gt;亦或是企业自用开发业务工具，无需聘请开发，AI快速落地。&lt;br/&gt;&amp;nbsp;&lt;br/&gt;这就是2026年最狠的技术真相：不会用AI开发的程序员，正在被时代彻底淘汰；会用AI量产项目的人，早已实现效率、收入双重碾压。&lt;br/&gt;&amp;nbsp;&lt;br/&gt;最后总结&lt;br/&gt;&amp;nbsp;&lt;br/&gt;不要再傻傻熬夜手写代码内卷！&lt;br/&gt;WorkBuddy彻底颠覆传统小程序开发模式，零基础、零代码、高效率、可量产。&lt;br/&gt;&amp;nbsp;&lt;br/&gt;一天7款小程序不是上限，只是基础操作！&lt;br/&gt;掌握这套保姆级量产玩法，普通人也能轻松解锁AI批量开发、小程序副业变现新赛道，甩开99%的普通开发者！&lt;/p&gt;</description><pubDate>Sat, 10 Oct 2026 09:32:10 +0800</pubDate></item><item><title>C# BinaryWriter/Reader高效数据存储实战</title><link>https://www.codepub.top/post/706.html</link><description>&lt;section style=&quot;border-width: 0px; border-style: solid; border-color: rgb(229, 229, 229); color: rgb(10, 10, 10); font-size: 14px; letter-spacing: normal; background-color: rgb(255, 255, 255); text-align: left; line-height: 1.75; font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; margin-bottom: 0px; visibility: visible;&quot; class=&quot;js_darkmode__1&quot;&gt;&lt;blockquote style=&quot;border-width: 0px 0px 0px 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-color: rgb(229, 229, 229) rgb(229, 229, 229) rgb(229, 229, 229) rgb(15, 76, 129); margin-top: 0px; line-height: 1.75; font-size: 14px; padding: 1em; border-radius: 6px; color: rgba(0, 0, 0, 0.5); background: rgb(247, 247, 247); visibility: visible;&quot; class=&quot;js_darkmode__2&quot;&gt;&lt;p style=&quot;border-width: 0px; border-style: solid; border-color: rgb(229, 229, 229); line-height: 1.75; font-size: 1em; letter-spacing: 0.1em; color: rgb(63, 63, 63); visibility: visible;&quot; class=&quot;js_darkmode__3&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;聚焦 C# 与工业数字化深度融合，本专栏由资深工业软件开发专家主理，系统分享 .NET 平台在智能制造、工业自动化及 MES/SCADA 系统开发中的实战经验。内容涵盖 OPC UA、Modbus、MQTT 等工业通信协议集成、实时数据采集与处理、数字孪生建模及边缘计算部署等核心技术，兼顾架构设计与代码落地。无论你是工控工程师还是 .NET 程序员，这里都有你需要的技术干货，助你在工业数字化浪潮中构建真正有价值的应用系统。&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/section&gt;&lt;p style=&quot;border-width: 0px; border-style: solid; border-color: rgb(229, 229, 229); margin-bottom: 0px; color: rgb(10, 10, 10); font-family: ui-sans-serif, system-ui, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Noto Color Emoji&amp;quot;; letter-spacing: normal; text-align: start; background-color: rgb(255, 255, 255); font-size: 0px; line-height: 0; visibility: visible;&quot; class=&quot;js_darkmode__4&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; border-width: 0px; border-style: solid; border-color: rgb(229, 229, 229); margin: 0px; color: rgb(10, 10, 10); font-family: ui-sans-serif, system-ui, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Noto Color Emoji&amp;quot;; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; font-size: 0px; line-height: 0; visibility: visible;&quot; data-pm-slice=&quot;0 0 []&quot; class=&quot;js_darkmode__5&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;section style=&quot;box-sizing: border-box; border-width: 0px; border-style: solid; border-color: rgb(229, 229, 229); color: rgb(10, 10, 10); font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; text-align: left; line-height: 1.75; font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; visibility: visible;&quot; class=&quot;js_darkmode__6&quot;&gt;&lt;p style=&quot;box-sizing: border-box; border-width: 0px; border-style: solid; border-color: rgb(229, 229, 229); margin: 1.5em 8px; text-align: justify; line-height: 1.75; font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 14px; letter-spacing: 0.1em; color: rgb(63, 63, 63); visibility: visible;&quot; class=&quot;js_darkmode__7&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;你有没有遇到过这种情况：高速冲压机一秒钟采集几百条压力数据，存成JSON文件没多久硬盘就报警空间不足，程序读取的时候也感觉像老牛拉车一样慢。&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; border-width: 0px; border-style: solid; border-color: rgb(229, 229, 229); margin: 1.5em 8px; text-align: justify; line-height: 1.75; font-size: 14px; letter-spacing: 0.1em; color: rgb(63, 63, 63); visibility: visible;&quot; class=&quot;js_darkmode__8&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;今天这篇，就是教你用二进制存储高频采集数据，同样的数据量，文件能小一大半，读写速度还能明显提升。&lt;/span&gt;&lt;/p&gt;&lt;h3 style=&quot;box-sizing: border-box; border-width: 0px 0px 0px 3px; border-style: solid; border-color: rgb(229, 229, 229) rgb(229, 229, 229) rgb(229, 229, 229) rgb(15, 76, 129); font-size: 15.4px; font-weight: bold; margin: 2em 8px 0.75em 0px; text-align: left; line-height: 1.2; font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; padding-left: 8px; color: rgb(63, 63, 63); visibility: visible;&quot; class=&quot;js_darkmode__9&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;📌 上节回顾&lt;/span&gt;&lt;/h3&gt;&lt;p style=&quot;box-sizing: border-box; border-width: 0px; border-style: solid; border-color: rgb(229, 229, 229); margin: 1.5em 8px; text-align: justify; line-height: 1.75; font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 14px; letter-spacing: 0.1em; color: rgb(63, 63, 63); visibility: visible;&quot; class=&quot;js_darkmode__10&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;上一节我们学了&amp;nbsp;&lt;/span&gt;&lt;strong style=&quot;box-sizing: border-box; border-width: 0px; border-style: solid; border-color: rgb(229, 229, 229); font-weight: bold; text-align: left; line-height: 1.75; font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: inherit; color: rgb(15, 76, 129); visibility: visible;&quot; class=&quot;js_darkmode__11&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;XML序列化与XDocument&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;，掌握了处理老系统XML格式数据的方法。今天在这个基础上，我们进一步学习&lt;/span&gt;&lt;strong style=&quot;box-sizing: border-box; border-width: 0px; border-style: solid; border-color: rgb(229, 229, 229); font-weight: bold; text-align: left; line-height: 1.75; font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: inherit; color: rgb(15, 76, 129); visibility: visible;&quot; class=&quot;js_darkmode__12&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;二进制序列化&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;——用最紧凑的方式存储工业数据。&lt;/span&gt;&lt;/p&gt;&lt;h3 style=&quot;box-sizing: border-box; border-width: 0px 0px 0px 3px; border-style: solid; border-color: rgb(229, 229, 229) rgb(229, 229, 229) rgb(229, 229, 229) rgb(15, 76, 129); font-size: 15.4px; font-weight: bold; margin: 2em 8px 0.75em 0px; text-align: left; line-height: 1.2; font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; padding-left: 8px; color: rgb(63, 63, 63); visibility: visible;&quot; class=&quot;js_darkmode__13&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;💡 核心知识讲解&lt;/span&gt;&lt;/h3&gt;&lt;p style=&quot;box-sizing: border-box; border-width: 0px; border-style: solid; border-color: rgb(229, 229, 229); margin: 1.5em 8px; text-align: justify; line-height: 1.75; font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 14px; letter-spacing: 0.1em; color: rgb(63, 63, 63); visibility: visible;&quot; class=&quot;js_darkmode__14&quot;&gt;&lt;strong style=&quot;box-sizing: border-box; border-width: 0px; border-style: solid; border-color: rgb(229, 229, 229); font-weight: bold; text-align: left; line-height: 1.75; font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: inherit; color: rgb(15, 76, 129); visibility: visible;&quot; class=&quot;js_darkmode__15&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;先说清楚一件事：&lt;span class=&quot;&quot;&gt;BinaryFormatter&lt;/span&gt;已经被淘汰了&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; border-width: 0px; border-style: solid; border-color: rgb(229, 229, 229); margin: 1.5em 8px; text-align: justify; line-height: 1.75; font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 14px; letter-spacing: 0.1em; color: rgb(63, 63, 63); visibility: visible;&quot; class=&quot;js_darkmode__16&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;如果你在网上搜&amp;quot;C&lt;a class=&quot;wx_topic_link&quot; style=&quot;color: var(--weui-LINK) !important; visibility: visible;&quot; data-topic=&quot;1&quot; data-recommend=&quot;&quot;&gt;#二进制序列化&lt;/a&gt;&amp;quot;，可能会看到不少教程用&amp;nbsp;&lt;/span&gt;&lt;code style=&quot;box-sizing: border-box; border-width: 0px; border-style: solid; border-color: rgb(229, 229, 229); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-feature-settings: normal; font-variation-settings: normal; font-size: 12.6px; text-align: left; line-height: 1.75; color: rgb(221, 17, 68); background: rgba(27, 31, 35, 0.05); padding: 3px 5px; border-radius: 4px; visibility: visible;&quot; class=&quot;js_darkmode__17&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;BinaryFormatter&lt;/span&gt;&lt;/code&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;，但这个类在最新的.NET版本里已经被官方标记为不安全，直接被移除了，千万别再用它。&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; border-width: 0px; border-style: solid; border-color: rgb(229, 229, 229); margin: 1.5em 8px; text-align: justify; line-height: 1.75; font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 14px; letter-spacing: 0.1em; color: rgb(63, 63, 63); visibility: visible;&quot; class=&quot;js_darkmode__18&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;现在正确的做法是用&amp;nbsp;&lt;/span&gt;&lt;code style=&quot;box-sizing: border-box; border-width: 0px; border-style: solid; border-color: rgb(229, 229, 229); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-feature-settings: normal; font-variation-settings: normal; font-size: 12.6px; text-align: left; line-height: 1.75; color: rgb(221, 17, 68); background: rgba(27, 31, 35, 0.05); padding: 3px 5px; border-radius: 4px; visibility: visible;&quot; class=&quot;js_darkmode__19&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;BinaryWriter&lt;/span&gt;&lt;/code&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;&amp;nbsp;和&amp;nbsp;&lt;/span&gt;&lt;code style=&quot;box-sizing: border-box; border-width: 0px; border-style: solid; border-color: rgb(229, 229, 229); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-feature-settings: normal; font-variation-settings: normal; font-size: 12.6px; text-align: left; line-height: 1.75; color: rgb(221, 17, 68); background: rgba(27, 31, 35, 0.05); padding: 3px 5px; border-radius: 4px; visibility: visible;&quot; class=&quot;js_darkmode__20&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;BinaryReader&lt;/span&gt;&lt;/code&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;，手动控制怎么把数据写成二进制，怎么从二进制读回来，虽然要多写几行代码，但更安全、更可控。&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; border-width: 0px; border-style: solid; border-color: rgb(229, 229, 229); margin: 1.5em 8px; text-align: justify; line-height: 1.75; font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 14px; letter-spacing: 0.1em; color: rgb(63, 63, 63); visibility: visible;&quot; class=&quot;js_darkmode__21&quot;&gt;&lt;strong style=&quot;box-sizing: border-box; border-width: 0px; border-style: solid; border-color: rgb(229, 229, 229); font-weight: bold; text-align: left; line-height: 1.75; font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: inherit; color: rgb(15, 76, 129); visibility: visible;&quot; class=&quot;js_darkmode__22&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;为什么工业场景特别需要二进制存储&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; border-width: 0px; border-style: solid; border-color: rgb(229, 229, 229); margin: 1.5em 8px; text-align: justify; line-height: 1.75; font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 14px; letter-spacing: 0.1em; color: rgb(63, 63, 63); visibility: visible;&quot; class=&quot;js_darkmode__23&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;JSON、XML这些文本格式，说白了就是&amp;quot;人能看懂的文字&amp;quot;，一个数字比如&amp;nbsp;&lt;/span&gt;&lt;code style=&quot;box-sizing: border-box; border-width: 0px; border-style: solid; border-color: rgb(229, 229, 229); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-feature-settings: normal; font-variation-settings: normal; font-size: 12.6px; text-align: left; line-height: 1.75; color: rgb(221, 17, 68); background: rgba(27, 31, 35, 0.05); padding: 3px 5px; border-radius: 4px; visibility: visible;&quot; class=&quot;js_darkmode__24&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;95.5&lt;/span&gt;&lt;/code&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;，存成文本要占好几个字节，但如果用二进制直接存这个数字本身，占用空间小得多。&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; border-width: 0px; border-style: solid; border-color: rgb(229, 229, 229); margin: 1.5em 8px; text-align: justify; line-height: 1.75; font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 14px; letter-spacing: 0.1em; color: rgb(63, 63, 63); visibility: visible;&quot; class=&quot;js_darkmode__25&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;这就好比JSON是把数据翻译成中文写在纸上，二进制是直接把原始数据打包压缩，虽然人看不懂，但存储和传输效率高得多。&lt;/span&gt;&lt;/p&gt;&lt;section style=&quot;box-sizing: border-box; border-width: 0px; border-style: solid; border-color: rgb(229, 229, 229); padding: 0px 8px; max-width: 100%; overflow: auto; visibility: visible;&quot; class=&quot;js_darkmode__26&quot;&gt;&lt;table&gt;&lt;thead style=&quot;visibility: visible;&quot;&gt;&lt;tr style=&quot;box-sizing: border-box; border-width: 0px; border-style: solid; border-color: rgb(229, 229, 229); visibility: visible;&quot; class=&quot;js_darkmode__27 firstRow&quot;&gt;&lt;td style=&quot;box-sizing: border-box; border: 1px solid rgb(223, 223, 223); text-align: left; line-height: 1.75; font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 14px; padding: 0.25em 0.5em; color: rgb(63, 63, 63); word-break: keep-all; visibility: visible;&quot; class=&quot;js_darkmode__28&quot;&gt;&lt;section style=&quot;visibility: visible;&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;存储方式&lt;/span&gt;&lt;/section&gt;&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; border: 1px solid rgb(223, 223, 223); text-align: left; line-height: 1.75; font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 14px; padding: 0.25em 0.5em; color: rgb(63, 63, 63); word-break: keep-all; visibility: visible;&quot; class=&quot;js_darkmode__29&quot;&gt;&lt;section style=&quot;visibility: visible;&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;文件大小&lt;/span&gt;&lt;/section&gt;&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; border: 1px solid rgb(223, 223, 223); text-align: left; line-height: 1.75; font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 14px; padding: 0.25em 0.5em; color: rgb(63, 63, 63); word-break: keep-all; visibility: visible;&quot; class=&quot;js_darkmode__30&quot;&gt;&lt;section style=&quot;visibility: visible;&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;读写速度&lt;/span&gt;&lt;/section&gt;&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; border: 1px solid rgb(223, 223, 223); text-align: left; line-height: 1.75; font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 14px; padding: 0.25em 0.5em; color: rgb(63, 63, 63); word-break: keep-all; visibility: visible;&quot; class=&quot;js_darkmode__31&quot;&gt;&lt;section style=&quot;visibility: visible;&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;人能否直接看懂&lt;/span&gt;&lt;/section&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody style=&quot;visibility: visible;&quot;&gt;&lt;tr style=&quot;box-sizing: border-box; border-width: 0px; border-style: solid; border-color: rgb(229, 229, 229); visibility: visible;&quot; class=&quot;js_darkmode__32&quot;&gt;&lt;td style=&quot;box-sizing: border-box; border: 1px solid rgb(223, 223, 223); text-align: left; line-height: 1.75; font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 14px; padding: 0.25em 0.5em; color: rgb(63, 63, 63); word-break: keep-all; visibility: visible;&quot; class=&quot;js_darkmode__33&quot;&gt;&lt;section style=&quot;visibility: visible;&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;JSON/XML文本&lt;/span&gt;&lt;/section&gt;&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; border: 1px solid rgb(223, 223, 223); text-align: left; line-height: 1.75; font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 14px; padding: 0.25em 0.5em; color: rgb(63, 63, 63); word-break: keep-all; visibility: visible;&quot; class=&quot;js_darkmode__34&quot;&gt;&lt;section style=&quot;visibility: visible;&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;较大&lt;/span&gt;&lt;/section&gt;&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; border: 1px solid rgb(223, 223, 223); text-align: left; line-height: 1.75; font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 14px; padding: 0.25em 0.5em; color: rgb(63, 63, 63); word-break: keep-all; visibility: visible;&quot; class=&quot;js_darkmode__35&quot;&gt;&lt;section style=&quot;visibility: visible;&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;较慢&lt;/span&gt;&lt;/section&gt;&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; border: 1px solid rgb(223, 223, 223); text-align: left; line-height: 1.75; font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 14px; padding: 0.25em 0.5em; color: rgb(63, 63, 63); word-break: keep-all; visibility: visible;&quot; class=&quot;js_darkmode__36&quot;&gt;&lt;section style=&quot;visibility: visible;&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;能&lt;/span&gt;&lt;/section&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;box-sizing: border-box; border-width: 0px; border-style: solid; border-color: rgb(229, 229, 229); visibility: visible;&quot; class=&quot;js_darkmode__37&quot;&gt;&lt;td style=&quot;box-sizing: border-box; border: 1px solid rgb(223, 223, 223); text-align: left; line-height: 1.75; font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 14px; padding: 0.25em 0.5em; color: rgb(63, 63, 63); word-break: keep-all; visibility: visible;&quot; class=&quot;js_darkmode__38&quot;&gt;&lt;section style=&quot;visibility: visible;&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;二进制&lt;/span&gt;&lt;/section&gt;&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; border: 1px solid rgb(223, 223, 223); text-align: left; line-height: 1.75; font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 14px; padding: 0.25em 0.5em; color: rgb(63, 63, 63); word-break: keep-all; visibility: visible;&quot; class=&quot;js_darkmode__39&quot;&gt;&lt;section style=&quot;visibility: visible;&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;小很多&lt;/span&gt;&lt;/section&gt;&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; border: 1px solid rgb(223, 223, 223); text-align: left; line-height: 1.75; font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 14px; padding: 0.25em 0.5em; color: rgb(63, 63, 63); word-break: keep-all; visibility: visible;&quot; class=&quot;js_darkmode__40&quot;&gt;&lt;section style=&quot;visibility: visible;&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;快很多&lt;/span&gt;&lt;/section&gt;&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; border: 1px solid rgb(223, 223, 223); text-align: left; line-height: 1.75; font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 14px; padding: 0.25em 0.5em; color: rgb(63, 63, 63); word-break: keep-all; visibility: visible;&quot; class=&quot;js_darkmode__41&quot;&gt;&lt;section style=&quot;visibility: visible;&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;不能，需要程序解析&lt;/span&gt;&lt;/section&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/section&gt;&lt;blockquote style=&quot;box-sizing: border-box; border-width: 0px 0px 0px 4px; border-style: solid; border-color: rgb(229, 229, 229) rgb(229, 229, 229) rgb(229, 229, 229) rgb(15, 76, 129); margin: 0px; text-align: left; line-height: 1.75; font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 14px; font-style: normal; padding: 1em; border-radius: 6px; color: rgba(0, 0, 0, 0.5); background: rgb(247, 247, 247); visibility: visible;&quot; class=&quot;js_darkmode__42&quot;&gt;&lt;p style=&quot;box-sizing: border-box; border-width: 0px; border-style: solid; border-color: rgb(229, 229, 229); margin: 0px; text-align: left; line-height: 1.75; font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 1em; display: block; letter-spacing: 0.1em; color: rgb(63, 63, 63); visibility: visible;&quot; class=&quot;js_darkmode__43&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;「一句话记住：给人看的配置文件用JSON/XML，给程序自己高频读写的海量数据用二进制。」&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p style=&quot;box-sizing: border-box; border-width: 0px; border-style: solid; border-color: rgb(229, 229, 229); margin: 1.5em 8px; text-align: justify; line-height: 1.75; font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 14px; letter-spacing: 0.1em; color: rgb(63, 63, 63); visibility: visible;&quot; class=&quot;js_darkmode__44&quot;&gt;&lt;strong style=&quot;box-sizing: border-box; border-width: 0px; border-style: solid; border-color: rgb(229, 229, 229); font-weight: bold; text-align: left; line-height: 1.75; font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: inherit; color: rgb(15, 76, 129); visibility: visible;&quot; class=&quot;js_darkmode__45&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;BinaryWriter/BinaryReader：手动打包的正确工具&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; border-width: 0px; border-style: solid; border-color: rgb(229, 229, 229); margin: 1.5em 8px; text-align: justify; line-height: 1.75; font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 14px; letter-spacing: 0.1em; color: rgb(63, 63, 63); visibility: visible;&quot; class=&quot;js_darkmode__46&quot;&gt;&lt;code style=&quot;box-sizing: border-box; border-width: 0px; border-style: solid; border-color: rgb(229, 229, 229); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-feature-settings: normal; font-variation-settings: normal; font-size: 12.6px; text-align: left; line-height: 1.75; color: rgb(221, 17, 68); background: rgba(27, 31, 35, 0.05); padding: 3px 5px; border-radius: 4px; visibility: visible;&quot; class=&quot;js_darkmode__47&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;BinaryWriter&lt;/span&gt;&lt;/code&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;&amp;nbsp;提供了一堆&amp;nbsp;&lt;/span&gt;&lt;code style=&quot;box-sizing: border-box; border-width: 0px; border-style: solid; border-color: rgb(229, 229, 229); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-feature-settings: normal; font-variation-settings: normal; font-size: 12.6px; text-align: left; line-height: 1.75; color: rgb(221, 17, 68); background: rgba(27, 31, 35, 0.05); padding: 3px 5px; border-radius: 4px; visibility: visible;&quot; class=&quot;js_darkmode__48&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;Write&lt;/span&gt;&lt;/code&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;&amp;nbsp;方法，可以直接把数字、字符串按照固定格式写入文件，&lt;/span&gt;&lt;code style=&quot;box-sizing: border-box; border-width: 0px; border-style: solid; border-color: rgb(229, 229, 229); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-feature-settings: normal; font-variation-settings: normal; font-size: 12.6px; text-align: left; line-height: 1.75; color: rgb(221, 17, 68); background: rgba(27, 31, 35, 0.05); padding: 3px 5px; border-radius: 4px; visibility: visible;&quot; class=&quot;js_darkmode__49&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;BinaryReader&lt;/span&gt;&lt;/code&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;&amp;nbsp;则按照写入时的顺序，一个一个把数据读回来。&lt;/span&gt;&lt;/p&gt;&lt;pre style=&quot;box-sizing: border-box; border-width: 0px; border-style: solid; border-color: rgb(229, 229, 229); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-feature-settings: normal; font-variation-settings: normal; font-size: 14px; margin: 10px 8px; color: rgb(201, 209, 217); background: rgb(13, 17, 23); text-align: left; line-height: 1.5; overflow-x: auto; border-radius: 8px; padding: 0px !important; visibility: visible;&quot; class=&quot;js_darkmode__50&quot;&gt;&lt;span hidden=&quot;&quot; style=&quot;box-sizing: border-box; border-width: 0px; border-style: solid; border-color: #E5E5E5; display: flex; padding: 10px 14px 0px; visibility: visible;&quot; class=&quot;js_darkmode__51&quot;&gt;&lt;svg x=&quot;0px&quot; y=&quot;0px&quot; width=&quot;45px&quot; height=&quot;13px&quot; viewbox=&quot;0 0 450 130&quot; aria-label=&quot;插图&quot; style=&quot;visibility: visible;&quot;&gt;&lt;ellipse cx=&quot;50&quot; cy=&quot;65&quot; rx=&quot;50&quot; ry=&quot;52&quot; stroke=&quot;rgb(220,60,54)&quot; stroke-width=&quot;2&quot; fill=&quot;rgb(237,108,96)&quot; style=&quot;visibility: visible;&quot;&gt;&lt;/ellipse&gt;&lt;ellipse cx=&quot;225&quot; cy=&quot;65&quot; rx=&quot;50&quot; ry=&quot;52&quot; stroke=&quot;rgb(218,151,33)&quot; stroke-width=&quot;2&quot; fill=&quot;rgb(247,193,81)&quot; style=&quot;visibility: visible;&quot;&gt;&lt;/ellipse&gt;&lt;ellipse cx=&quot;400&quot; cy=&quot;65&quot; rx=&quot;50&quot; ry=&quot;52&quot; stroke=&quot;rgb(27,161,37)&quot; stroke-width=&quot;2&quot; fill=&quot;rgb(100,200,86)&quot; style=&quot;visibility: visible;&quot;&gt;&lt;/ellipse&gt;&lt;/svg&gt;&lt;/span&gt;&lt;code style=&quot;box-sizing: border-box; border-width: 0px; border-style: solid; border-color: rgb(229, 229, 229); font-family: Menlo, &amp;quot;Operator Mono&amp;quot;, Consolas, Monaco, monospace; font-feature-settings: normal; font-variation-settings: normal; font-size: 14px; display: -webkit-box; padding: 0.5em 1em 1em; overflow-x: auto; text-indent: 0px; text-align: left; line-height: 1.75; margin: 0px; white-space: nowrap; visibility: visible;&quot; class=&quot;js_darkmode__52&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;writer.Write(deviceTemp); &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;box-sizing: border-box; border-width: 0px; border-style: solid; border-color: #E5E5E5; color: #8B949E; visibility: visible;&quot; class=&quot;js_darkmode__53&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;// 写入一个double类型数值&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;&lt;br style=&quot;visibility: visible;&quot;/&gt;&lt;/span&gt;writer.Write(deviceId); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #8B949E;&quot; class=&quot;js_darkmode__54&quot;&gt;// 写入一个字符串&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__55&quot;&gt;「写的顺序和读的顺序必须完全一致」，就像你打包快递时东西的摆放顺序，拆包的时候也得按同样的顺序取出来，顺序错了数据就全乱了。&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__56&quot;&gt;&lt;strong style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);&quot; class=&quot;js_darkmode__57&quot;&gt;什么场景适合用二进制存储&lt;/strong&gt;&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__58&quot;&gt;设备的高频采集数据（比如每秒几十上百条的传感器读数）、需要长期归档但不需要人工查看的历史记录，这些场景特别适合用二进制存储，省空间又省时间。&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__59&quot;&gt;配置文件、需要人工检查修改的参数，还是老老实实用JSON或XML，方便肉眼查看和排查问题。&lt;/p&gt;&lt;blockquote style=&quot;box-sizing: border-box;border-width: 0px 0px 0px 4px;border-style: solid;border-color: rgb(229, 229, 229) rgb(229, 229, 229) rgb(229, 229, 229) rgb(15, 76, 129);margin: 0px;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;font-style: normal;padding: 1em;border-radius: 6px;color: rgba(0, 0, 0, 0.5);background: rgb(247, 247, 247);&quot; class=&quot;js_darkmode__60&quot;&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 0px;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 1em;display: block;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__61&quot;&gt;「重要提醒：二进制文件打开后是一堆乱码，出问题了没法直接肉眼排查，一定要配合日志记录关键操作，方便追溯问题。」&lt;/p&gt;&lt;/blockquote&gt;&lt;h3 style=&quot;box-sizing: border-box;border-width: 0px 0px 0px 3px;border-style: solid;border-color: rgb(229, 229, 229) rgb(229, 229, 229) rgb(229, 229, 229) rgb(15, 76, 129);font-size: 15.4px;font-weight: bold;margin: 2em 8px 0.75em 0px;text-align: left;line-height: 1.2;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;padding-left: 8px;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__62&quot;&gt;💻 VS2026 操作步骤&lt;/h3&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__63&quot;&gt;&lt;strong style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);&quot; class=&quot;js_darkmode__64&quot;&gt;Step 1&lt;/strong&gt;&amp;nbsp;新建控制台项目：文件 &amp;gt; 新建 &amp;gt; 项目 &amp;gt; 选择&amp;quot;控制台应用&amp;quot;，命名&amp;nbsp;&lt;code style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;&quot; class=&quot;js_darkmode__65&quot;&gt;BinaryStorageDemo&lt;/code&gt;。&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__66&quot;&gt;&lt;strong style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);&quot; class=&quot;js_darkmode__67&quot;&gt;Step 2&lt;/strong&gt;&amp;nbsp;&lt;code style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;&quot; class=&quot;js_darkmode__68&quot;&gt;BinaryWriter&lt;/code&gt;&amp;nbsp;和&amp;nbsp;&lt;code style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;&quot; class=&quot;js_darkmode__69&quot;&gt;BinaryReader&lt;/code&gt;&amp;nbsp;都在&amp;nbsp;&lt;code style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;&quot; class=&quot;js_darkmode__70&quot;&gt;System.IO&lt;/code&gt;&amp;nbsp;命名空间下，不需要额外安装NuGet包。&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__71&quot;&gt;&lt;strong style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);&quot; class=&quot;js_darkmode__72&quot;&gt;Step 3&lt;/strong&gt;&amp;nbsp;写Write/Read代码时，对Copilot说明数据结构和字段顺序，AI会自动生成配套的写入和读取代码，并确保顺序一致。&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__73&quot;&gt;&lt;strong style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);&quot; class=&quot;js_darkmode__74&quot;&gt;Step 4&lt;/strong&gt;&amp;nbsp;写完代码后，选中整段右键 &amp;gt; Copilot &amp;gt; 检查代码质量，AI会提醒你写入和读取顺序是否匹配，这是二进制读写最容易出错的地方。&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__75&quot;&gt;&lt;strong style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);&quot; class=&quot;js_darkmode__76&quot;&gt;Vibe Coding Prompt 示例：&lt;/strong&gt;&lt;/p&gt;&lt;pre style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 14px;margin: 10px 8px;color: rgb(201, 209, 217);background: rgb(13, 17, 23);text-align: left;line-height: 1.5;overflow-x: auto;border-radius: 8px;padding: 0px !important;&quot; class=&quot;js_darkmode__77&quot;&gt;帮我写一段C#代码，用BinaryWriter把设备编号(字符串)、采集温度(double)、采集时间戳(long)按顺序写入一个二进制文件，再用BinaryReader按同样顺序读回来验证&lt;/pre&gt;&lt;h3 style=&quot;box-sizing: border-box;border-width: 0px 0px 0px 3px;border-style: solid;border-color: rgb(229, 229, 229) rgb(229, 229, 229) rgb(229, 229, 229) rgb(15, 76, 129);font-size: 15.4px;font-weight: bold;margin: 2em 8px 0.75em 0px;text-align: left;line-height: 1.2;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;padding-left: 8px;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__80&quot;&gt;📋 完整代码示例&lt;/h3&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__81&quot;&gt;这段代码模拟高速冲压机的压力传感器采集数据，用BinaryWriter批量写入二进制文件，再用BinaryReader读回来验证数据完整性。&lt;/p&gt;&lt;pre style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 14px;margin: 10px 8px;color: rgb(201, 209, 217);background: rgb(13, 17, 23);text-align: left;line-height: 1.5;overflow-x: auto;border-radius: 8px;padding: 0px !important;&quot; class=&quot;js_darkmode__82&quot;&gt;&lt;span hidden=&quot;&quot; style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;display: flex;padding: 10px 14px 0px;&quot; class=&quot;js_darkmode__83&quot;&gt;&lt;svg x=&quot;0px&quot; y=&quot;0px&quot; width=&quot;45px&quot; height=&quot;13px&quot; viewbox=&quot;0 0 450 130&quot; aria-label=&quot;插图&quot;&gt;&lt;ellipse cx=&quot;50&quot; cy=&quot;65&quot; rx=&quot;50&quot; ry=&quot;52&quot; stroke=&quot;rgb(220,60,54)&quot; stroke-width=&quot;2&quot; fill=&quot;rgb(237,108,96)&quot;&gt;&lt;/ellipse&gt;&lt;ellipse cx=&quot;225&quot; cy=&quot;65&quot; rx=&quot;50&quot; ry=&quot;52&quot; stroke=&quot;rgb(218,151,33)&quot; stroke-width=&quot;2&quot; fill=&quot;rgb(247,193,81)&quot;&gt;&lt;/ellipse&gt;&lt;ellipse cx=&quot;400&quot; cy=&quot;65&quot; rx=&quot;50&quot; ry=&quot;52&quot; stroke=&quot;rgb(27,161,37)&quot; stroke-width=&quot;2&quot; fill=&quot;rgb(100,200,86)&quot;&gt;&lt;/ellipse&gt;&lt;/svg&gt;&lt;/span&gt;&lt;code style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: Menlo, &amp;quot;Operator Mono&amp;quot;, Consolas, Monaco, monospace;font-feature-settings: normal;font-variation-settings: normal;font-size: 14px;display: -webkit-box;padding: 0.5em 1em 1em;overflow-x: auto;text-indent: 0px;text-align: left;line-height: 1.75;margin: 0px;white-space: nowrap;&quot; class=&quot;js_darkmode__84&quot;&gt;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__85&quot;&gt;using&lt;/span&gt;&amp;nbsp;System;&lt;br/&gt;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__86&quot;&gt;using&lt;/span&gt;&amp;nbsp;System.IO;&lt;br/&gt;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__87&quot;&gt;using&lt;/span&gt;&amp;nbsp;System.Collections.Generic;&lt;br/&gt;&lt;br/&gt;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__88&quot;&gt;namespace&lt;/span&gt;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #D2A8FF;&quot; class=&quot;js_darkmode__89&quot;&gt;BinaryStorageDemo&lt;/span&gt;&lt;br/&gt;{&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #8B949E;&quot; class=&quot;js_darkmode__90&quot;&gt;// 压力采集记录结构&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__91&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #D2A8FF;&quot; class=&quot;js_darkmode__92&quot;&gt;PressureRecord&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__93&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FFA657;&quot; class=&quot;js_darkmode__94&quot;&gt;string&lt;/span&gt;&amp;nbsp;DeviceId {&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__95&quot;&gt;get&lt;/span&gt;;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__96&quot;&gt;set&lt;/span&gt;; } =&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #A5D6FF;&quot; class=&quot;js_darkmode__97&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__98&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FFA657;&quot; class=&quot;js_darkmode__99&quot;&gt;double&lt;/span&gt;&amp;nbsp;PressureValue {&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__100&quot;&gt;get&lt;/span&gt;;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__101&quot;&gt;set&lt;/span&gt;; }&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__102&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FFA657;&quot; class=&quot;js_darkmode__103&quot;&gt;long&lt;/span&gt;&amp;nbsp;TimestampTicks {&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__104&quot;&gt;get&lt;/span&gt;;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__105&quot;&gt;set&lt;/span&gt;; }&lt;br/&gt;&amp;nbsp; &amp;nbsp; }&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__106&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #D2A8FF;&quot; class=&quot;js_darkmode__107&quot;&gt;Program&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;&quot; class=&quot;js_darkmode__108&quot;&gt;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__109&quot;&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__110&quot;&gt;void&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #D2A8FF;&quot; class=&quot;js_darkmode__111&quot;&gt;Main&lt;/span&gt;()&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FFA657;&quot; class=&quot;js_darkmode__112&quot;&gt;string&lt;/span&gt;&amp;nbsp;binaryFilePath =&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #A5D6FF;&quot; class=&quot;js_darkmode__113&quot;&gt;@&amp;quot;D:\StampingData\pressure_records.bin&amp;quot;&lt;/span&gt;;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FFA657;&quot; class=&quot;js_darkmode__114&quot;&gt;string&lt;/span&gt;&amp;nbsp;folderPath = Path.GetDirectoryName(binaryFilePath)!;&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__115&quot;&gt;if&lt;/span&gt;&amp;nbsp;(!Directory.Exists(folderPath))&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Directory.CreateDirectory(folderPath);&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #8B949E;&quot; class=&quot;js_darkmode__116&quot;&gt;// 生成模拟的高频压力采集数据&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; List&amp;lt;PressureRecord&amp;gt; records = GenerateSampleRecords(&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #79C0FF;&quot; class=&quot;js_darkmode__117&quot;&gt;1000&lt;/span&gt;);&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #8B949E;&quot; class=&quot;js_darkmode__118&quot;&gt;// 用BinaryWriter写入二进制文件&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; WriteRecordsToBinary(binaryFilePath, records);&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #8B949E;&quot; class=&quot;js_darkmode__119&quot;&gt;// 用BinaryReader读回二进制文件并验证&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; List&amp;lt;PressureRecord&amp;gt; loadedRecords = ReadRecordsFromBinary(binaryFilePath);&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Console.WriteLine(&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #A5D6FF;&quot; class=&quot;js_darkmode__120&quot;&gt;$&amp;quot;共读取到&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #C9D1D9;&quot; class=&quot;js_darkmode__121&quot;&gt;{loadedRecords.Count}&lt;/span&gt;&amp;nbsp;条记录&amp;quot;&lt;/span&gt;);&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Console.WriteLine(&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #A5D6FF;&quot; class=&quot;js_darkmode__122&quot;&gt;&amp;quot;前3条记录示例：&amp;quot;&lt;/span&gt;);&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__123&quot;&gt;for&lt;/span&gt;&amp;nbsp;(&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FFA657;&quot; class=&quot;js_darkmode__124&quot;&gt;int&lt;/span&gt;&amp;nbsp;i =&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #79C0FF;&quot; class=&quot;js_darkmode__125&quot;&gt;0&lt;/span&gt;; i &amp;lt;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #79C0FF;&quot; class=&quot;js_darkmode__126&quot;&gt;3&lt;/span&gt;&amp;nbsp;&amp;amp;&amp;amp; i &amp;lt; loadedRecords.Count; i++)&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__127&quot;&gt;var&lt;/span&gt;&amp;nbsp;r = loadedRecords[i];&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; DateTime recordTime =&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__128&quot;&gt;new&lt;/span&gt;&amp;nbsp;DateTime(r.TimestampTicks);&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Console.WriteLine(&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #A5D6FF;&quot; class=&quot;js_darkmode__129&quot;&gt;$&amp;quot;设备：&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #C9D1D9;&quot; class=&quot;js_darkmode__130&quot;&gt;{r.DeviceId}&lt;/span&gt;，压力：&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #C9D1D9;&quot; class=&quot;js_darkmode__131&quot;&gt;{r.PressureValue:F2}&lt;/span&gt;，时间：&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #C9D1D9;&quot; class=&quot;js_darkmode__132&quot;&gt;{recordTime:HH:mm:ss.fff}&lt;/span&gt;&amp;quot;&lt;/span&gt;);&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #8B949E;&quot; class=&quot;js_darkmode__133&quot;&gt;// 对比文件大小&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; FileInfo fileInfo =&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__134&quot;&gt;new&lt;/span&gt;&amp;nbsp;FileInfo(binaryFilePath);&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Console.WriteLine(&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #A5D6FF;&quot; class=&quot;js_darkmode__135&quot;&gt;$&amp;quot;二进制文件大小：&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #C9D1D9;&quot; class=&quot;js_darkmode__136&quot;&gt;{fileInfo.Length}&lt;/span&gt;&amp;nbsp;字节&amp;quot;&lt;/span&gt;);&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #8B949E;&quot; class=&quot;js_darkmode__137&quot;&gt;// 生成模拟压力采集数据&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;&quot; class=&quot;js_darkmode__138&quot;&gt;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__139&quot;&gt;static&lt;/span&gt;&amp;nbsp;List&amp;lt;PressureRecord&amp;gt;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #D2A8FF;&quot; class=&quot;js_darkmode__140&quot;&gt;GenerateSampleRecords&lt;/span&gt;(&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;&quot; class=&quot;js_darkmode__141&quot;&gt;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FFA657;&quot; class=&quot;js_darkmode__142&quot;&gt;int&lt;/span&gt;&amp;nbsp;count&lt;/span&gt;)&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; List&amp;lt;PressureRecord&amp;gt; records =&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__143&quot;&gt;new&lt;/span&gt;&amp;nbsp;List&amp;lt;PressureRecord&amp;gt;();&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Random rnd =&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__144&quot;&gt;new&lt;/span&gt;&amp;nbsp;Random();&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__145&quot;&gt;for&lt;/span&gt;&amp;nbsp;(&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FFA657;&quot; class=&quot;js_darkmode__146&quot;&gt;int&lt;/span&gt;&amp;nbsp;i =&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #79C0FF;&quot; class=&quot;js_darkmode__147&quot;&gt;0&lt;/span&gt;; i &amp;lt; count; i++)&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; records.Add(&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__148&quot;&gt;new&lt;/span&gt;&amp;nbsp;PressureRecord&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; DeviceId =&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #A5D6FF;&quot; class=&quot;js_darkmode__149&quot;&gt;&amp;quot;冲压机01&amp;quot;&lt;/span&gt;,&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; PressureValue =&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #79C0FF;&quot; class=&quot;js_darkmode__150&quot;&gt;100&lt;/span&gt;&amp;nbsp;+ rnd.NextDouble() *&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #79C0FF;&quot; class=&quot;js_darkmode__151&quot;&gt;50&lt;/span&gt;,&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; TimestampTicks = DateTime.Now.AddMilliseconds(i *&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #79C0FF;&quot; class=&quot;js_darkmode__152&quot;&gt;10&lt;/span&gt;).Ticks&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; });&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__153&quot;&gt;return&lt;/span&gt;&amp;nbsp;records;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #8B949E;&quot; class=&quot;js_darkmode__154&quot;&gt;// 用BinaryWriter把记录列表写入二进制文件&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;&quot; class=&quot;js_darkmode__155&quot;&gt;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__156&quot;&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__157&quot;&gt;void&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #D2A8FF;&quot; class=&quot;js_darkmode__158&quot;&gt;WriteRecordsToBinary&lt;/span&gt;(&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;&quot; class=&quot;js_darkmode__159&quot;&gt;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FFA657;&quot; class=&quot;js_darkmode__160&quot;&gt;string&lt;/span&gt;&amp;nbsp;filePath, List&amp;lt;PressureRecord&amp;gt; records&lt;/span&gt;)&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__161&quot;&gt;using&lt;/span&gt;&amp;nbsp;(FileStream fs =&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__162&quot;&gt;new&lt;/span&gt;&amp;nbsp;FileStream(filePath, FileMode.Create))&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__163&quot;&gt;using&lt;/span&gt;&amp;nbsp;(BinaryWriter writer =&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__164&quot;&gt;new&lt;/span&gt;&amp;nbsp;BinaryWriter(fs))&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #8B949E;&quot; class=&quot;js_darkmode__165&quot;&gt;// 先写入记录总数，方便读取时知道要读多少条&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; writer.Write(records.Count);&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__166&quot;&gt;foreach&lt;/span&gt;&amp;nbsp;(&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__167&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__168&quot;&gt;record&lt;/span&gt;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #D2A8FF;&quot; class=&quot;js_darkmode__169&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #D2A8FF;&quot; class=&quot;js_darkmode__170&quot;&gt;records&lt;/span&gt;)&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #8B949E;&quot; class=&quot;js_darkmode__171&quot;&gt;// 按固定顺序依次写入每个字段&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; writer.Write(&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__172&quot;&gt;record&lt;/span&gt;.DeviceId);&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; writer.Write(&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__173&quot;&gt;record&lt;/span&gt;.PressureValue);&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; writer.Write(&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__174&quot;&gt;record&lt;/span&gt;.TimestampTicks);&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Console.WriteLine(&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #A5D6FF;&quot; class=&quot;js_darkmode__175&quot;&gt;$&amp;quot;已写入&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #C9D1D9;&quot; class=&quot;js_darkmode__176&quot;&gt;{records.Count}&lt;/span&gt;&amp;nbsp;条记录到二进制文件&amp;quot;&lt;/span&gt;);&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #8B949E;&quot; class=&quot;js_darkmode__177&quot;&gt;// 用BinaryReader按写入时的顺序读回记录列表&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;&quot; class=&quot;js_darkmode__178&quot;&gt;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__179&quot;&gt;static&lt;/span&gt;&amp;nbsp;List&amp;lt;PressureRecord&amp;gt;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #D2A8FF;&quot; class=&quot;js_darkmode__180&quot;&gt;ReadRecordsFromBinary&lt;/span&gt;(&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;&quot; class=&quot;js_darkmode__181&quot;&gt;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FFA657;&quot; class=&quot;js_darkmode__182&quot;&gt;string&lt;/span&gt;&amp;nbsp;filePath&lt;/span&gt;)&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; List&amp;lt;PressureRecord&amp;gt; records =&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__183&quot;&gt;new&lt;/span&gt;&amp;nbsp;List&amp;lt;PressureRecord&amp;gt;();&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__184&quot;&gt;using&lt;/span&gt;&amp;nbsp;(FileStream fs =&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__185&quot;&gt;new&lt;/span&gt;&amp;nbsp;FileStream(filePath, FileMode.Open))&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__186&quot;&gt;using&lt;/span&gt;&amp;nbsp;(BinaryReader reader =&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__187&quot;&gt;new&lt;/span&gt;&amp;nbsp;BinaryReader(fs))&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #8B949E;&quot; class=&quot;js_darkmode__188&quot;&gt;// 先读取记录总数&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FFA657;&quot; class=&quot;js_darkmode__189&quot;&gt;int&lt;/span&gt;&amp;nbsp;recordCount = reader.ReadInt32();&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__190&quot;&gt;for&lt;/span&gt;&amp;nbsp;(&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FFA657;&quot; class=&quot;js_darkmode__191&quot;&gt;int&lt;/span&gt;&amp;nbsp;i =&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #79C0FF;&quot; class=&quot;js_darkmode__192&quot;&gt;0&lt;/span&gt;; i &amp;lt; recordCount; i++)&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #8B949E;&quot; class=&quot;js_darkmode__193&quot;&gt;// 严格按照写入顺序读取，顺序错了数据就乱了&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; PressureRecord&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__194&quot;&gt;record&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__195&quot;&gt;new&lt;/span&gt;&amp;nbsp;PressureRecord&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; DeviceId = reader.ReadString(),&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; PressureValue = reader.ReadDouble(),&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; TimestampTicks = reader.ReadInt64()&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; };&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; records.Add(&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__196&quot;&gt;record&lt;/span&gt;);&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__197&quot;&gt;return&lt;/span&gt;&amp;nbsp;records;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br/&gt;&amp;nbsp; &amp;nbsp; }&lt;br/&gt;}&lt;/code&gt;&lt;/pre&gt;&lt;section style=&quot;text-align: center;&quot;&gt;&lt;img data-src=&quot;https://mmbiz.qpic.cn/mmbiz_png/ZAK2geyCdoIZoe5K4heQlDBRrcIlqticrfeQdZRkkrvtco49Beg5hSe8pSXnLic3z4RVfOfnJezWwBK1gtFibvgWTNVEPDtqtsXiaQ9ia4c1iblkE/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1#imgIndex=0&quot; class=&quot;rich_pages wxw-img&quot; data-ratio=&quot;0.562037037037037&quot; data-s=&quot;300,640&quot; data-type=&quot;png&quot; data-w=&quot;1080&quot; type=&quot;block&quot; data-imgfileid=&quot;100001592&quot; data-aistatus=&quot;1&quot; data-original-style=&quot;null&quot; data-index=&quot;2&quot; src=&quot;https://mmbiz.qpic.cn/mmbiz_png/ZAK2geyCdoIZoe5K4heQlDBRrcIlqticrfeQdZRkkrvtco49Beg5hSe8pSXnLic3z4RVfOfnJezWwBK1gtFibvgWTNVEPDtqtsXiaQ9ia4c1iblkE/640?wx_fmt=png&amp;from=appmsg&amp;tp=wxpic&amp;wxfrom=5&amp;wx_lazy=1&amp;watermark=1#imgIndex=0&quot; _width=&quot;677px&quot; style=&quot;height: auto !important; visibility: visible !important; width: 676.969px !important;&quot; alt=&quot;图片&quot; data-before-load-time=&quot;1791595670816&quot; data-report-img-idx=&quot;0&quot; data-fail=&quot;0&quot;/&gt;&lt;/section&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__198&quot;&gt;运行后，你会看到程序生成1000条模拟采集数据并写入二进制文件，再完整读回来验证，最后打印出文件大小——同样1000条数据，二进制文件比JSON格式能小出好几倍，速度也快得多。&lt;/p&gt;&lt;h3 style=&quot;box-sizing: border-box;border-width: 0px 0px 0px 3px;border-style: solid;border-color: rgb(229, 229, 229) rgb(229, 229, 229) rgb(229, 229, 229) rgb(15, 76, 129);font-size: 15.4px;font-weight: bold;margin: 2em 8px 0.75em 0px;text-align: left;line-height: 1.2;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;padding-left: 8px;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__199&quot;&gt;🏭 工业实战小案例&lt;/h3&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__200&quot;&gt;&lt;strong style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);&quot; class=&quot;js_darkmode__201&quot;&gt;场景：&lt;/strong&gt;&amp;nbsp;化工厂需要把反应釜每秒采集的温度和压力数据持续追加写入二进制归档文件。&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__202&quot;&gt;思路拆解：&lt;/p&gt;&lt;ul style=&quot;list-style-type: circle;&quot; class=&quot;js_darkmode__203 list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;section&gt;• 用FileMode.Append模式打开&lt;span class=&quot;&quot;&gt;文件流&lt;/span&gt;&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section&gt;• 每采集一条数据就立即写入&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section&gt;• 不需要一次性把所有历史数据加载进内存&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section&gt;• 用固定格式保证读取时能正确解析&lt;/section&gt;&lt;/li&gt;&lt;/ul&gt;&lt;pre style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 14px;margin: 10px 8px;color: rgb(201, 209, 217);background: rgb(13, 17, 23);text-align: left;line-height: 1.5;overflow-x: auto;border-radius: 8px;padding: 0px !important;&quot; class=&quot;js_darkmode__208&quot;&gt;&lt;span hidden=&quot;&quot; style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;display: flex;padding: 10px 14px 0px;&quot; class=&quot;js_darkmode__209&quot;&gt;&lt;svg x=&quot;0px&quot; y=&quot;0px&quot; width=&quot;45px&quot; height=&quot;13px&quot; viewbox=&quot;0 0 450 130&quot; aria-label=&quot;插图&quot;&gt;&lt;ellipse cx=&quot;50&quot; cy=&quot;65&quot; rx=&quot;50&quot; ry=&quot;52&quot; stroke=&quot;rgb(220,60,54)&quot; stroke-width=&quot;2&quot; fill=&quot;rgb(237,108,96)&quot;&gt;&lt;/ellipse&gt;&lt;ellipse cx=&quot;225&quot; cy=&quot;65&quot; rx=&quot;50&quot; ry=&quot;52&quot; stroke=&quot;rgb(218,151,33)&quot; stroke-width=&quot;2&quot; fill=&quot;rgb(247,193,81)&quot;&gt;&lt;/ellipse&gt;&lt;ellipse cx=&quot;400&quot; cy=&quot;65&quot; rx=&quot;50&quot; ry=&quot;52&quot; stroke=&quot;rgb(27,161,37)&quot; stroke-width=&quot;2&quot; fill=&quot;rgb(100,200,86)&quot;&gt;&lt;/ellipse&gt;&lt;/svg&gt;&lt;/span&gt;&lt;code style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: Menlo, &amp;quot;Operator Mono&amp;quot;, Consolas, Monaco, monospace;font-feature-settings: normal;font-variation-settings: normal;font-size: 14px;display: -webkit-box;padding: 0.5em 1em 1em;overflow-x: auto;text-indent: 0px;text-align: left;line-height: 1.75;margin: 0px;white-space: nowrap;&quot; class=&quot;js_darkmode__210&quot;&gt;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__211&quot;&gt;using&lt;/span&gt;&amp;nbsp;System;&lt;br/&gt;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__212&quot;&gt;using&lt;/span&gt;&amp;nbsp;System.IO;&lt;br/&gt;&lt;br/&gt;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #8B949E;&quot; class=&quot;js_darkmode__213&quot;&gt;// 反应釜数据追加写入二进制文件&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FFA657;&quot; class=&quot;js_darkmode__214&quot;&gt;string&lt;/span&gt;&amp;nbsp;archiveFilePath =&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #A5D6FF;&quot; class=&quot;js_darkmode__215&quot;&gt;@&amp;quot;\reactor_archive.bin&amp;quot;&lt;/span&gt;;&lt;br/&gt;&lt;br/&gt;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;&quot; class=&quot;js_darkmode__216&quot;&gt;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__217&quot;&gt;void&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #D2A8FF;&quot; class=&quot;js_darkmode__218&quot;&gt;AppendReactorData&lt;/span&gt;(&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;&quot; class=&quot;js_darkmode__219&quot;&gt;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FFA657;&quot; class=&quot;js_darkmode__220&quot;&gt;double&lt;/span&gt;&amp;nbsp;reactorTemp,&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FFA657;&quot; class=&quot;js_darkmode__221&quot;&gt;double&lt;/span&gt;&amp;nbsp;reactorPressure&lt;/span&gt;)&lt;/span&gt;&lt;br/&gt;{&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #8B949E;&quot; class=&quot;js_darkmode__222&quot;&gt;// Append模式打开，不覆盖已有内容&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__223&quot;&gt;using&lt;/span&gt;&amp;nbsp;(FileStream fs =&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__224&quot;&gt;new&lt;/span&gt;&amp;nbsp;FileStream(archiveFilePath, FileMode.Append))&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__225&quot;&gt;using&lt;/span&gt;&amp;nbsp;(BinaryWriter writer =&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__226&quot;&gt;new&lt;/span&gt;&amp;nbsp;BinaryWriter(fs))&lt;br/&gt;&amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; writer.Write(DateTime.Now.Ticks);&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; writer.Write(reactorTemp);&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; writer.Write(reactorPressure);&lt;br/&gt;&amp;nbsp; &amp;nbsp; }&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #8B949E;&quot; class=&quot;js_darkmode__227&quot;&gt;// 模拟连续采集多次数据&lt;/span&gt;&lt;br/&gt;Random rnd =&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__228&quot;&gt;new&lt;/span&gt;&amp;nbsp;Random();&lt;br/&gt;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__229&quot;&gt;for&lt;/span&gt;&amp;nbsp;(&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FFA657;&quot; class=&quot;js_darkmode__230&quot;&gt;int&lt;/span&gt;&amp;nbsp;i =&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #79C0FF;&quot; class=&quot;js_darkmode__231&quot;&gt;0&lt;/span&gt;; i &amp;lt;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #79C0FF;&quot; class=&quot;js_darkmode__232&quot;&gt;5&lt;/span&gt;; i++)&lt;br/&gt;{&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FFA657;&quot; class=&quot;js_darkmode__233&quot;&gt;double&lt;/span&gt;&amp;nbsp;temp =&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #79C0FF;&quot; class=&quot;js_darkmode__234&quot;&gt;180&lt;/span&gt;&amp;nbsp;+ rnd.NextDouble() *&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #79C0FF;&quot; class=&quot;js_darkmode__235&quot;&gt;20&lt;/span&gt;;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FFA657;&quot; class=&quot;js_darkmode__236&quot;&gt;double&lt;/span&gt;&amp;nbsp;pressure =&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #79C0FF;&quot; class=&quot;js_darkmode__237&quot;&gt;2.5&lt;/span&gt;&amp;nbsp;+ rnd.NextDouble() *&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #79C0FF;&quot; class=&quot;js_darkmode__238&quot;&gt;0.5&lt;/span&gt;;&lt;br/&gt;&amp;nbsp; &amp;nbsp; AppendReactorData(temp, pressure);&lt;br/&gt;&amp;nbsp; &amp;nbsp; Console.WriteLine(&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #A5D6FF;&quot; class=&quot;js_darkmode__239&quot;&gt;$&amp;quot;已归档第&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #C9D1D9;&quot; class=&quot;js_darkmode__240&quot;&gt;{i +&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #79C0FF;&quot; class=&quot;js_darkmode__241&quot;&gt;1&lt;/span&gt;}&lt;/span&gt;条数据：温度&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #C9D1D9;&quot; class=&quot;js_darkmode__242&quot;&gt;{temp:F1}&lt;/span&gt;，压力&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #C9D1D9;&quot; class=&quot;js_darkmode__243&quot;&gt;{pressure:F2}&lt;/span&gt;&amp;quot;&lt;/span&gt;);&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;Console.WriteLine(&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #A5D6FF;&quot; class=&quot;js_darkmode__244&quot;&gt;&amp;quot;反应釜数据持续追加写入完成&amp;quot;&lt;/span&gt;);&lt;/code&gt;&lt;/pre&gt;&lt;section style=&quot;text-align: center;&quot;&gt;&lt;img data-src=&quot;https://mmbiz.qpic.cn/mmbiz_png/ZAK2geyCdoIFSx3ziacgDYMOVf7mDUy3zE68WJwjn0SG7icqEBq8OHaibdiaduQ999dGSy0EtINFuWw0ceau7Z6hDVnuQEjd5lqDK9pQ3saT5wY/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1#imgIndex=1&quot; class=&quot;rich_pages wxw-img&quot; data-ratio=&quot;0.562037037037037&quot; data-s=&quot;300,640&quot; data-type=&quot;png&quot; data-w=&quot;1080&quot; type=&quot;block&quot; data-imgfileid=&quot;100001594&quot; data-aistatus=&quot;1&quot; data-original-style=&quot;null&quot; data-index=&quot;3&quot; src=&quot;https://mmbiz.qpic.cn/mmbiz_png/ZAK2geyCdoIFSx3ziacgDYMOVf7mDUy3zE68WJwjn0SG7icqEBq8OHaibdiaduQ999dGSy0EtINFuWw0ceau7Z6hDVnuQEjd5lqDK9pQ3saT5wY/640?wx_fmt=png&amp;from=appmsg&amp;tp=wxpic&amp;wxfrom=5&amp;wx_lazy=1&amp;watermark=1#imgIndex=1&quot; _width=&quot;677px&quot; style=&quot;height: auto !important; visibility: visible !important; width: 676.969px !important;&quot; alt=&quot;图片&quot; data-before-load-time=&quot;1791595671585&quot; data-report-img-idx=&quot;1&quot; data-fail=&quot;0&quot;/&gt;&lt;/section&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__245&quot;&gt;运行后，反应釜的每条采集数据都会被追加写入二进制归档文件，文件体积始终保持紧凑，即使连续运行几个月积累海量数据，占用空间也远比文本格式小得多。&lt;/p&gt;&lt;h3 style=&quot;box-sizing: border-box;border-width: 0px 0px 0px 3px;border-style: solid;border-color: rgb(229, 229, 229) rgb(229, 229, 229) rgb(229, 229, 229) rgb(15, 76, 129);font-size: 15.4px;font-weight: bold;margin: 2em 8px 0.75em 0px;text-align: left;line-height: 1.2;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;padding-left: 8px;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__246&quot;&gt;⚠️ 这几个坑，我替你踩过了&lt;/h3&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__247&quot;&gt;❌ 还在网上抄&amp;nbsp;&lt;code style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;&quot; class=&quot;js_darkmode__248&quot;&gt;BinaryFormatter&lt;/code&gt;&amp;nbsp;的老教程代码 ✅ 一律用&amp;nbsp;&lt;code style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;&quot; class=&quot;js_darkmode__249&quot;&gt;BinaryWriter&lt;/code&gt;&amp;nbsp;和&amp;nbsp;&lt;code style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;&quot; class=&quot;js_darkmode__250&quot;&gt;BinaryReader&lt;/code&gt;&amp;nbsp;手动读写 📌 原因：BinaryFormatter存在严重安全漏洞，新版.NET已经彻底移除，用了直接编译不通过&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__251&quot;&gt;❌ 写入顺序是 姓名→温度→时间，读取时写成 温度→姓名→时间 ✅ 读写顺序必须完全一致，建议写个常量或注释标注清楚顺序 📌 原因：二进制文件没有字段名标记，读取顺序错了数据会全部错位，还不一定报错，读出来的全是垂头脑&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__252&quot;&gt;❌ 二进制文件读写时忘了加&amp;nbsp;&lt;code style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;&quot; class=&quot;js_darkmode__253&quot;&gt;using&lt;/code&gt;&amp;nbsp;释放资源 ✅ 用&amp;nbsp;&lt;code style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;&quot; class=&quot;js_darkmode__254&quot;&gt;using (FileStream fs = ...) using (BinaryWriter writer = ...)&lt;/code&gt;&amp;nbsp;嵌套包裹 📌 原因：文件流不释放会一直占用文件，高频写入场景下很容易导致文件被锁死打不开&lt;/p&gt;&lt;h3 style=&quot;box-sizing: border-box;border-width: 0px 0px 0px 3px;border-style: solid;border-color: rgb(229, 229, 229) rgb(229, 229, 229) rgb(229, 229, 229) rgb(15, 76, 129);font-size: 15.4px;font-weight: bold;margin: 2em 8px 0.75em 0px;text-align: left;line-height: 1.2;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;padding-left: 8px;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__255&quot;&gt;📝 本节总结&lt;/h3&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__256&quot;&gt;学完本节，你掌握了：为什么工业高频采集数据适合用二进制存储而不是JSON/XML；BinaryWriter和BinaryReader怎么按固定顺序读写数据；还学会了追加写入二进制归档文件的实用做法。二进制存储是应对海量采集数据的关键武器，数据量越大，这一招的价值就越明显。&lt;/p&gt;&lt;hr style=&quot;box-sizing: border-box;border-width: 2px 0px 0px;border-style: solid;border-color: rgba(0, 0, 0, 0.1);height: 0.4em;color: inherit;margin: 1.5em 0px;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;transform-origin: 0px 0px;transform: scale(1, 0.5);&quot; class=&quot;js_darkmode__257&quot;/&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__258&quot;&gt;📖&amp;nbsp;&lt;strong style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);&quot; class=&quot;js_darkmode__259&quot;&gt;本文是《C# 工业数字化应用开发专家》系列第 071 节&lt;/strong&gt;&amp;nbsp;上一节：【XML 序列化与 XDocument 操作】 下一节：【集合进阶：Queue、Stack、LinkedList】（明天更新）&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__260&quot;&gt;💬&amp;nbsp;&lt;strong style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);&quot; class=&quot;js_darkmode__261&quot;&gt;你在工作中遇到过类似的需求吗？&lt;/strong&gt;&amp;nbsp;欢迎在评论区说说你的场景，也许下一篇案例就来自你的留言。&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__262&quot;&gt;🔔&amp;nbsp;&lt;strong style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);&quot; class=&quot;js_darkmode__263&quot;&gt;还没关注的同学记得点击关注&lt;/strong&gt;，系列课程持续更新， 学完这420节，从工厂小白到工业软件开发专家，我们一起走。&lt;/p&gt;&lt;/section&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Sat, 10 Oct 2026 09:27:41 +0800</pubDate></item><item><title>你把时间放在哪里，哪里就会生长 | 一个互联网人的时间配置法</title><link>https://www.codepub.top/post/705.html</link><description>&lt;p id=&quot;ua1418581&quot; class=&quot;ne-p&quot;&gt;&lt;span class=&quot;ne-text&quot; style=&quot;font-size: 15px; font-family: &amp;quot;Microsoft YaHei&amp;quot;&quot;&gt;程序员的工资是唯一收入，但时间才是本金。&lt;/span&gt;&lt;/p&gt;&lt;p id=&quot;u1af9801e&quot; class=&quot;ne-p&quot;&gt;&lt;span class=&quot;ne-text&quot; style=&quot;font-size: 15px; font-family: &amp;quot;Microsoft YaHei&amp;quot;&quot;&gt;我最近做了一件很小的事。把书架上的书重新分了一次类。不是按大小，不是按颜色，也不是按出版社，而是按一个更简单的标准：我还会不会再读它一遍。&lt;/span&gt;&lt;/p&gt;&lt;p id=&quot;u9a78d304&quot; class=&quot;ne-p&quot;&gt;&lt;span class=&quot;ne-text&quot; style=&quot;font-size: 15px; font-family: &amp;quot;Microsoft YaHei&amp;quot;&quot;&gt;分完以后，有一小摞被我留在手边，剩下的收进了柜子深处。那一小摞不多，大概七八本。我看着它们，心里忽然轻了一点。不是因为书架变整齐了，而是因为我第一次清楚地知道，什么值得继续留在光线够得着的地方。&lt;/span&gt;&lt;/p&gt;&lt;hr id=&quot;oLbQE&quot; class=&quot;ne-hr&quot;/&gt;&lt;p id=&quot;ua0c8aa3d&quot; class=&quot;ne-p&quot;&gt;&lt;span class=&quot;ne-text&quot; style=&quot;font-size: 15px; font-family: &amp;quot;Microsoft YaHei&amp;quot;&quot;&gt;后来我想，这件事其实很像做技术选型。&lt;/span&gt;&lt;/p&gt;&lt;p id=&quot;u7fe8604b&quot; class=&quot;ne-p&quot;&gt;&lt;span class=&quot;ne-text&quot; style=&quot;font-size: 15px; font-family: &amp;quot;Microsoft YaHei&amp;quot;&quot;&gt;不是把所有能用的组件都塞进系统，也不是把所有看起来不错的技术都引入进来。你只是从里面挑出少数几样，放进自己的架构里，然后让它们在各自的位置上待着，陪你一起穿过时间。&lt;/span&gt;&lt;/p&gt;&lt;p id=&quot;u235966e2&quot; class=&quot;ne-p&quot;&gt;&lt;span class=&quot;ne-text&quot; style=&quot;font-size: 15px; font-family: &amp;quot;Microsoft YaHei&amp;quot;&quot;&gt;技术选型的核心，从来不只是“选对”，更重要的是“放对”。是知道什么东西值得被留下，值得占据你有限的复杂度预算；也是知道，一旦放进去，就不要轻易把它挪来挪去。&lt;/span&gt;&lt;/p&gt;&lt;p id=&quot;ufec10573&quot; class=&quot;ne-p&quot;&gt;&lt;span class=&quot;ne-text&quot; style=&quot;font-size: 15px; font-family: &amp;quot;Microsoft YaHei&amp;quot;&quot;&gt;我刚开始写代码的时候，并不明白这件事。那时候我以为架构最重要的问题，是“用什么”。用哪个框架，用哪种数据库，追哪个新技术，踩哪个节奏。结果是，系统越来越复杂，人越来越累，问题却并没有变少。&lt;/span&gt;&lt;/p&gt;&lt;p id=&quot;u8473a801&quot; class=&quot;ne-p&quot;&gt;&lt;span class=&quot;ne-text&quot; style=&quot;font-size: 15px; font-family: &amp;quot;Microsoft YaHei&amp;quot;&quot;&gt;后来我慢慢理解，一个系统能不能长久运行，并不来自你用了什么，而是来自你能否让它在一个稳定的结构里待得足够久。很多时候，让一个系统稳定的，不是你改了多少行代码，而是你有没有给它足够的时间去暴露问题、沉淀经验。&lt;/span&gt;&lt;/p&gt;&lt;hr id=&quot;r37R7&quot; class=&quot;ne-hr&quot;/&gt;&lt;p id=&quot;u1013c14b&quot; class=&quot;ne-p&quot;&gt;&lt;span class=&quot;ne-text&quot; style=&quot;font-size: 15px; font-family: &amp;quot;Microsoft YaHei&amp;quot;&quot;&gt;后来我开始试着像做容量规划一样配置时间。&lt;/span&gt;&lt;/p&gt;&lt;p id=&quot;ub2827ed2&quot; class=&quot;ne-p&quot;&gt;&lt;span class=&quot;ne-text&quot; style=&quot;font-size: 15px; font-family: &amp;quot;Microsoft YaHei&amp;quot;&quot;&gt;做容量规划的时候，你不会把一台机器的 CPU 长期跑到 90% 以上。因为你很清楚，冗余的部分不是闲置，是留给尖峰流量、突发请求和未知异常的缓冲。一旦用尽，系统就会在某个不起眼的时刻突然崩溃。&lt;/span&gt;&lt;/p&gt;&lt;p id=&quot;u9dc8dd48&quot; class=&quot;ne-p&quot;&gt;&lt;span class=&quot;ne-text&quot; style=&quot;font-size: 15px; font-family: &amp;quot;Microsoft YaHei&amp;quot;&quot;&gt;我做过一个核心系统的重构。上线之前，团队把每个模块的资源占用都算得很细，信心满满。上线之后的前几周，一切都很平稳。直到某天下午，一个上游系统突然开始大量重试，流量在十几分钟内翻了将近一倍。我们以为预留的容量足够了，结果监控大盘上的曲线开始陡峭上升——CPU 从 70% 冲到了 95%，响应时间从 200 毫秒涨到了两秒，排队开始堆积，然后一个平时不起眼的边缘服务率先超时，报错沿着调用链一路传了回来。&lt;/span&gt;&lt;/p&gt;&lt;p id=&quot;u38b22072&quot; class=&quot;ne-p&quot;&gt;&lt;span class=&quot;ne-text&quot; style=&quot;font-size: 15px; font-family: &amp;quot;Microsoft YaHei&amp;quot;&quot;&gt;那次故障恢复之后，我在复盘会上画了一条曲线：系统的响应时间不是线性上升的，而是在接近饱和的某个点之后，突然拐弯，然后失控。那个拐点之前，一切看起来都很正常；拐点之后，你做什么都来不及了。&lt;/span&gt;&lt;/p&gt;&lt;p id=&quot;uf608f079&quot; class=&quot;ne-p&quot;&gt;&lt;span class=&quot;ne-text&quot; style=&quot;font-size: 15px; font-family: &amp;quot;Microsoft YaHei&amp;quot;&quot;&gt;生活也一样。&lt;/span&gt;&lt;/p&gt;&lt;p id=&quot;u76d47706&quot; class=&quot;ne-p&quot;&gt;&lt;span class=&quot;ne-text&quot; style=&quot;font-size: 15px; font-family: &amp;quot;Microsoft YaHei&amp;quot;&quot;&gt;我不再试图把每一分钟都排得满满当当，而是把时间大致分成几块：一块留给工作里最核心的产出，一块留给阅读和思考，一块留给家人和朋友，一块留给自己。就像系统不会把所有资源都分配给同一个服务。与其精确计算每一分钟的吞吐量，不如先把最重要的几块地方预留出来，然后别轻易让它们被别的事情挤占。&lt;/span&gt;&lt;/p&gt;&lt;p id=&quot;u7eb3228f&quot; class=&quot;ne-p&quot;&gt;&lt;span class=&quot;ne-text&quot; style=&quot;font-size: 15px; font-family: &amp;quot;Microsoft YaHei&amp;quot;&quot;&gt;把时间锚定在几个固定的地方，比把时间切得过于细碎，更重要。&lt;/span&gt;&lt;/p&gt;&lt;hr id=&quot;W3goO&quot; class=&quot;ne-hr&quot;/&gt;&lt;p id=&quot;ud37c51a2&quot; class=&quot;ne-p&quot;&gt;&lt;span class=&quot;ne-text&quot; style=&quot;font-size: 15px; font-family: &amp;quot;Microsoft YaHei&amp;quot;&quot;&gt;想清楚这件事之后，我对“本金”这个词的理解也变了。&lt;/span&gt;&lt;/p&gt;&lt;p id=&quot;u68e088e7&quot; class=&quot;ne-p&quot;&gt;&lt;span class=&quot;ne-text&quot; style=&quot;font-size: 15px; font-family: &amp;quot;Microsoft YaHei&amp;quot;&quot;&gt;程序员的工资是唯一收入，但时间才是本金。工资是你用一个月的时间换来的现金，而时间是你账户里最原始、也最公平的那部分资产。你把本金放在哪里，它就在哪里产生回报。&lt;/span&gt;&lt;/p&gt;&lt;p id=&quot;u1d6801da&quot; class=&quot;ne-p&quot;&gt;&lt;span class=&quot;ne-text&quot; style=&quot;font-size: 15px; font-family: &amp;quot;Microsoft YaHei&amp;quot;&quot;&gt;放在焦虑上，焦虑会长大；放在比较上，比较会长大；放在读书上，认知会长大；放在具体的事情上，实感会长大。很多时候，生活并不是被“事情”塑造的，而是被你长期喂养的对象塑造的。&lt;/span&gt;&lt;/p&gt;&lt;p id=&quot;u5852b507&quot; class=&quot;ne-p&quot;&gt;&lt;span class=&quot;ne-text&quot; style=&quot;font-size: 15px; font-family: &amp;quot;Microsoft YaHei&amp;quot;&quot;&gt;投资里有一个我很喜欢的词，叫“再平衡”。它的意思是，定期把资产比例调回最初设定的状态，让整个组合始终停留在你能承受的风险范围里。后来我发现，系统需要再平衡，生活也需要。&lt;/span&gt;&lt;/p&gt;&lt;hr id=&quot;Cl9Yz&quot; class=&quot;ne-hr&quot;/&gt;&lt;p id=&quot;u2cd957e3&quot; class=&quot;ne-p&quot;&gt;&lt;span class=&quot;ne-text&quot; style=&quot;font-size: 15px; font-family: &amp;quot;Microsoft YaHei&amp;quot;&quot;&gt;做技术管理久了会发现，一个团队如果长期把全部精力放在同一个项目上，短期交付可能很快，但技术债会越积越多，人的状态也会越来越紧。&lt;/span&gt;&lt;/p&gt;&lt;p id=&quot;u4ac0385f&quot; class=&quot;ne-p&quot;&gt;&lt;span class=&quot;ne-text&quot; style=&quot;font-size: 15px; font-family: &amp;quot;Microsoft YaHei&amp;quot;&quot;&gt;有一年我们接了一个很重要的项目，团队几乎把所有精力都压了上去。需求排得密密麻麻，每个人的日程表都精确到了半小时。那段时间交付确实快，但三个月后，问题开始集中爆发：文档没人维护，新来的同事上手困难；测试覆盖率在持续下降，偶尔出现线上问题，排查要花比以前多好几倍的时间；几个核心成员开始疲惫，有一个人直接提出了离职。&lt;/span&gt;&lt;/p&gt;&lt;p id=&quot;uc35e0130&quot; class=&quot;ne-p&quot;&gt;&lt;span class=&quot;ne-text&quot; style=&quot;font-size: 15px; font-family: &amp;quot;Microsoft YaHei&amp;quot;&quot;&gt;我那时候才意识到，我们一直在“交付”，却从来没有“检修”。一个团队也需要再平衡：短期交付和长期能力，紧急任务和基础建设，输出和休息。你不能等到一个人离职了，才开始想“他的工作有没有人接得住”；不能等到线上出了故障，才发现“这个模块只有一个人能改”。&lt;/span&gt;&lt;/p&gt;&lt;p id=&quot;u4984dc2a&quot; class=&quot;ne-p&quot;&gt;&lt;span class=&quot;ne-text&quot; style=&quot;font-size: 15px; font-family: &amp;quot;Microsoft YaHei&amp;quot;&quot;&gt;需要定期检视的，往往是那些“看起来还撑得住”的地方。&lt;/span&gt;&lt;/p&gt;&lt;hr id=&quot;FERwg&quot; class=&quot;ne-hr&quot;/&gt;&lt;p id=&quot;u9d6e1091&quot; class=&quot;ne-p&quot;&gt;&lt;span class=&quot;ne-text&quot; style=&quot;font-size: 15px; font-family: &amp;quot;Microsoft YaHei&amp;quot;&quot;&gt;有一段时间，我把太多时间放在工作上。白天不停切换任务，晚上回到家，人已经很空了。对家人没有耐心，说话也总是短促，像一根拉得太紧的弦。&lt;/span&gt;&lt;/p&gt;&lt;p id=&quot;uc4b07539&quot; class=&quot;ne-p&quot;&gt;&lt;span class=&quot;ne-text&quot; style=&quot;font-size: 15px; font-family: &amp;quot;Microsoft YaHei&amp;quot;&quot;&gt;后来我慢慢意识到，不是生活出了什么大问题，只是我的“配置”偏了。工作那一块太重，别的部分太轻了。&lt;/span&gt;&lt;/p&gt;&lt;p id=&quot;u979ca57d&quot; class=&quot;ne-p&quot;&gt;&lt;span class=&quot;ne-text&quot; style=&quot;font-size: 15px; font-family: &amp;quot;Microsoft YaHei&amp;quot;&quot;&gt;这时候你要做的，不是一下子把天平掀翻，而是轻轻地调一调。少一点，或者挪一点，让它慢慢回到一个你可以呼吸、也可以睡着的状态。好的调整，大多不是剧烈的，而是温和的。&lt;/span&gt;&lt;/p&gt;&lt;hr id=&quot;z0mZ6&quot; class=&quot;ne-hr&quot;/&gt;&lt;p id=&quot;udd82d720&quot; class=&quot;ne-p&quot;&gt;&lt;span class=&quot;ne-text&quot; style=&quot;font-size: 15px; font-family: &amp;quot;Microsoft YaHei&amp;quot;&quot;&gt;我想明白“配置”这件事，是在一个很普通的周末下午。&lt;/span&gt;&lt;/p&gt;&lt;p id=&quot;u55a89378&quot; class=&quot;ne-p&quot;&gt;&lt;span class=&quot;ne-text&quot; style=&quot;font-size: 15px; font-family: &amp;quot;Microsoft YaHei&amp;quot;&quot;&gt;那天我坐在沙发上，手边是一杯茶，阳光从窗户斜着照进来，落在地板上，也落在杯沿上。那一刻，我没有什么急着要做的事，也没有什么特别想逃开的东西。我只是坐在那里，什么也没做。&lt;/span&gt;&lt;/p&gt;&lt;p id=&quot;u30966d51&quot; class=&quot;ne-p&quot;&gt;&lt;span class=&quot;ne-text&quot; style=&quot;font-size: 15px; font-family: &amp;quot;Microsoft YaHei&amp;quot;&quot;&gt;然后我忽然意识到，我已经很久没有这样坐过了。没有刷手机，没有看盘，没有想着接下来该干什么。只是坐着，让时间安静地从身边流过去。&lt;/span&gt;&lt;/p&gt;&lt;p id=&quot;u138cdeba&quot; class=&quot;ne-p&quot;&gt;&lt;span class=&quot;ne-text&quot; style=&quot;font-size: 15px; font-family: &amp;quot;Microsoft YaHei&amp;quot;&quot;&gt;后来我把这一段时间，也放进了自己的配置里。&lt;/span&gt;&lt;/p&gt;&lt;p id=&quot;u5493cbbc&quot; class=&quot;ne-p&quot;&gt;&lt;span class=&quot;ne-text&quot; style=&quot;font-size: 15px; font-family: &amp;quot;Microsoft YaHei&amp;quot;&quot;&gt;我管它叫“什么也不做的时间”。它看上去没有任何产出，甚至很容易被误解成浪费。可它不是多余的。它像系统里的冗余容量，不负责创造价值，却能在流量尖峰到来时，给你留下缓冲的余地。做研发久了会发现，一台机器如果长期跑在100%的负载上，它不是在高效运转，而是在加速老化。&lt;/span&gt;&lt;/p&gt;&lt;p id=&quot;u7d9b7a21&quot; class=&quot;ne-p&quot;&gt;&lt;span class=&quot;ne-text&quot; style=&quot;font-size: 15px; font-family: &amp;quot;Microsoft YaHei&amp;quot;&quot;&gt;人也一样。那些看起来没有产出的时间，其实是系统在自我修复。&lt;/span&gt;&lt;/p&gt;&lt;hr id=&quot;BRt2S&quot; class=&quot;ne-hr&quot;/&gt;&lt;p id=&quot;u1d348ecf&quot; class=&quot;ne-p&quot;&gt;&lt;span class=&quot;ne-text&quot; style=&quot;font-size: 15px; font-family: &amp;quot;Microsoft YaHei&amp;quot;&quot;&gt;所以现在我做任何配置的时候，最后都会问自己一个问题：这个安排，能让我睡得着吗？&lt;/span&gt;&lt;/p&gt;&lt;p id=&quot;uf3a1601b&quot; class=&quot;ne-p&quot;&gt;&lt;span class=&quot;ne-text&quot; style=&quot;font-size: 15px; font-family: &amp;quot;Microsoft YaHei&amp;quot;&quot;&gt;如果可以，那它大概率就是适合我的。如果不可以，那它就算看起来再漂亮，也该调一调。&lt;/span&gt;&lt;/p&gt;&lt;p id=&quot;u7a55c900&quot; class=&quot;ne-p&quot;&gt;&lt;span class=&quot;ne-text&quot; style=&quot;font-size: 15px; font-family: &amp;quot;Microsoft YaHei&amp;quot;&quot;&gt;我见过一些人，系统架构很先进，可团队每天都在救火，线上故障不断。我也见过一些人，技术栈并不时髦，甚至称得上普通，可他们的系统很稳，业务增长也不会把整个团队卷走。&lt;/span&gt;&lt;/p&gt;&lt;p id=&quot;u17045100&quot; class=&quot;ne-p&quot;&gt;&lt;span class=&quot;ne-text&quot; style=&quot;font-size: 15px; font-family: &amp;quot;Microsoft YaHei&amp;quot;&quot;&gt;后者是我更想成为的那一种。因为配置的终点，从来不是让每一部分都最优，而是让整体能够长久运转。不是架构图上的每个组件都光鲜，而是你愿意继续维护这样的系统，并且在每一次发布上线的时候，心里没有那么多拉扯。&lt;/span&gt;&lt;/p&gt;&lt;hr id=&quot;B1WYi&quot; class=&quot;ne-hr&quot;/&gt;&lt;p id=&quot;u796968db&quot; class=&quot;ne-p&quot;&gt;&lt;span class=&quot;ne-text&quot; style=&quot;font-size: 15px; font-family: &amp;quot;Microsoft YaHei&amp;quot;&quot;&gt;回到最开始那件小事。&lt;/span&gt;&lt;/p&gt;&lt;p id=&quot;u48c07a28&quot; class=&quot;ne-p&quot;&gt;&lt;span class=&quot;ne-text&quot; style=&quot;font-size: 15px; font-family: &amp;quot;Microsoft YaHei&amp;quot;&quot;&gt;我把书架上的书重新分了一次类，留了一小摞在手边。那一小摞书，就是我决定留给自己的东西。它们不一定立刻给我回报，也不一定每一本都马上派上用场。但我知道，在某些时刻，当我需要它们的时候，它们会在我手边。&lt;/span&gt;&lt;/p&gt;&lt;p id=&quot;u3bf98fc5&quot; class=&quot;ne-p&quot;&gt;&lt;span class=&quot;ne-text&quot; style=&quot;font-size: 15px; font-family: &amp;quot;Microsoft YaHei&amp;quot;&quot;&gt;你把时间放在哪里，哪里就会生长。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Thu, 08 Oct 2026 16:15:14 +0800</pubDate></item><item><title>【项目源码】自建AI证件照小程序，可流量主</title><link>https://www.codepub.top/post/704.html</link><description>&lt;h1 style=&quot;margin: 28px 0px 18px; padding-left: 12px; border-left: 4px solid rgb(217, 119, 87); font-size: 24px; line-height: 1.4; color: rgb(24, 24, 21); font-weight: 800; visibility: visible;&quot; class=&quot;js_darkmode__3&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;证件照伴侣 - 项目介绍&lt;/span&gt;&lt;/h1&gt;&lt;h2 style=&quot;margin: 24px 0px 14px; padding-left: 10px; border-left: 4px solid rgb(217, 119, 87); font-size: 21px; line-height: 1.45; color: rgb(24, 24, 21); font-weight: 800; visibility: visible;&quot; class=&quot;js_darkmode__4&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;一、项目介绍&lt;/span&gt;&lt;/h2&gt;&lt;p style=&quot;margin: 16px 0px; line-height: 1.9; color: rgb(61, 57, 41); font-size: 16px; word-break: break-word; text-align: justify; visibility: visible;&quot; class=&quot;js_darkmode__5&quot;&gt;&lt;strong style=&quot;color: rgb(194, 97, 63); font-weight: 700; visibility: visible;&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;证件照伴侣&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;是一套基于 AI 抠图技术实现的微信小程序证件照生成系统，由 Java 后端 + 两套微信小程序前端 + 管理员网页后台组成。&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin: 16px 0px; line-height: 1.9; color: rgb(61, 57, 41); font-size: 16px; word-break: break-word; text-align: justify; visibility: visible;&quot; class=&quot;js_darkmode__6&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;项目对接开源项目 HivisionIDPhotos（2024.09.25 版本），通过内置 &lt;span class=&quot;&quot;&gt;MTCNN&lt;/span&gt; + hivision_modnet 模型在本地完成人像抠图、背景替换、尺寸裁切等处理，&lt;/span&gt;&lt;strong style=&quot;color: rgb(194, 97, 63); font-weight: 700; visibility: visible;&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;用户无需调用付费 API，零成本无限次生成证件照&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;。&lt;/span&gt;&lt;/p&gt;&lt;h3 style=&quot;margin: 20px 0px 12px; font-size: 18px; line-height: 1.5; color: rgb(24, 24, 21); font-weight: 700; visibility: visible;&quot; class=&quot;js_darkmode__7&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;核心亮点&lt;/span&gt;&lt;/h3&gt;&lt;ul style=&quot;margin: 14px 0px 14px 1.2em; padding: 0px; color: rgb(61, 57, 41); line-height: 1.9; visibility: visible;&quot; class=&quot;js_darkmode__8 list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;section style=&quot;visibility: visible;&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;本地 0 成本处理，无需单独购买 API&lt;/span&gt;&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section style=&quot;visibility: visible;&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;不保存用户原图，仅保留生成后的最新一张&lt;/span&gt;&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section style=&quot;visibility: visible;&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;自带 759+ 种证件照尺寸规格&lt;/span&gt;&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section style=&quot;visibility: visible;&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;支持自定义尺寸、自定义背景色&lt;/span&gt;&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section style=&quot;visibility: visible;&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;支持普通下载和高清下载双模式&lt;/span&gt;&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section style=&quot;visibility: visible;&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;支持水印、&lt;span class=&quot;&quot;&gt;流量主&lt;/span&gt;、自由开关鉴黄&lt;/span&gt;&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section style=&quot;visibility: visible;&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;自带管理员网页后台进行统计与管理&lt;/span&gt;&lt;/section&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;section style=&quot;text-align: center; visibility: visible;&quot;&gt;&lt;img data-src=&quot;https://mmbiz.qpic.cn/sz_mmbiz_jpg/U5pdaY06RST8dsBj5hiaCA5esc9I2Zq3c1WtLuLsYmcCK4yYhp2E8ega165Ho4xFW5KcGqiaFK5ZbI91CtAicia2rqyxwA3ic6uoibZ9yulbuIp18/640?wx_fmt=jpeg&amp;amp;from=appmsg#imgIndex=0&quot; class=&quot;rich_pages wxw-img js_insertlocalimg&quot; data-ratio=&quot;0.4388888888888889&quot; data-s=&quot;300,640&quot; data-type=&quot;png&quot; data-w=&quot;1080&quot; type=&quot;block&quot; data-imgfileid=&quot;100001367&quot; data-aistatus=&quot;1&quot; data-original-style=&quot;null&quot; data-index=&quot;2&quot; src=&quot;https://mmbiz.qpic.cn/sz_mmbiz_jpg/U5pdaY06RST8dsBj5hiaCA5esc9I2Zq3c1WtLuLsYmcCK4yYhp2E8ega165Ho4xFW5KcGqiaFK5ZbI91CtAicia2rqyxwA3ic6uoibZ9yulbuIp18/640?wx_fmt=jpeg&amp;from=appmsg&amp;tp=wxpic&amp;wxfrom=5&amp;wx_lazy=1#imgIndex=0&quot; _width=&quot;677px&quot; style=&quot;height: auto !important; visibility: visible !important; width: 676.984px !important;&quot; alt=&quot;图片&quot; data-before-load-time=&quot;1791441101693&quot; data-report-img-idx=&quot;0&quot; data-fail=&quot;0&quot;/&gt;&lt;/section&gt;&lt;/p&gt;&lt;hr style=&quot;border-right: none; border-bottom: none; border-left: none; border-image: initial; border-top: 1px solid rgb(232, 230, 220); margin: 28px 0px; visibility: visible;&quot; class=&quot;js_darkmode__9&quot;/&gt;&lt;h2 style=&quot;margin: 24px 0px 14px; padding-left: 10px; border-left: 4px solid rgb(217, 119, 87); font-size: 21px; line-height: 1.45; color: rgb(24, 24, 21); font-weight: 800; visibility: visible;&quot; class=&quot;js_darkmode__10&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;二、项目结构目录&lt;/span&gt;&lt;/h2&gt;&lt;p style=&quot;margin: 16px 0px; line-height: 1.9; color: rgb(61, 57, 41); font-size: 16px; word-break: break-word; text-align: justify; visibility: visible;&quot; class=&quot;js_darkmode__11&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;项目根目录下分为三大模块：&lt;/span&gt;&lt;/p&gt;&lt;pre style=&quot;margin: 18px 0px; padding: 14px 16px; overflow: auto; background: rgb(245, 244, 239); border-radius: 8px; color: rgb(61, 57, 41); font-family: Menlo, Consolas, monospace; font-size: 14px; line-height: 1.7; white-space: pre-wrap; word-break: break-word; overflow-wrap: anywhere; visibility: visible;&quot; class=&quot;js_darkmode__12&quot;&gt;&lt;code style=&quot;background: none; padding: 0px; border-radius: 0px; font-size: inherit; font-family: Menlo, Consolas, monospace; white-space: inherit; word-break: inherit; overflow-wrap: inherit; visibility: visible;&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;JP17-证件照微信小程序/&lt;/span&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;&lt;br style=&quot;visibility: visible;&quot;/&gt;&lt;/span&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;├── Java后端/ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# Spring Boot 后端服务&lt;/span&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;&lt;br style=&quot;visibility: visible;&quot;/&gt;&lt;/span&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;│ &amp;nbsp; ├── pom.xml &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# Maven 依赖配置&lt;/span&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;&lt;br style=&quot;visibility: visible;&quot;/&gt;&lt;/span&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;│ &amp;nbsp; ├── 1.sql &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# 数据库初始化脚本（含 759+ 尺寸数据）&lt;/span&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;&lt;br style=&quot;visibility: visible;&quot;/&gt;&lt;/span&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;│ &amp;nbsp; ├── README.md &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# 后端说明文档&lt;/span&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;&lt;br style=&quot;visibility: visible;&quot;/&gt;&lt;/span&gt;│ &amp;nbsp; ├── assets/ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# 截图资源&lt;br/&gt;│ &amp;nbsp; └── src/main/&lt;br/&gt;│ &amp;nbsp; &amp;nbsp; &amp;nbsp; ├── java/org/zjzWx/&lt;br/&gt;│ &amp;nbsp; &amp;nbsp; &amp;nbsp; │ &amp;nbsp; ├── App.java &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; # 启动入口（@SpringBootApplication）&lt;br/&gt;│ &amp;nbsp; &amp;nbsp; &amp;nbsp; │ &amp;nbsp; ├── config/ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# 配置类（CORS、MyBatis-Plus、Sa-Token）&lt;br/&gt;│ &amp;nbsp; &amp;nbsp; &amp;nbsp; │ &amp;nbsp; ├── controller/ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# 控制层（Admin/Api/Item/User）&lt;br/&gt;│ &amp;nbsp; &amp;nbsp; &amp;nbsp; │ &amp;nbsp; ├── dao/ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; # 数据访问层（Mapper）&lt;br/&gt;│ &amp;nbsp; &amp;nbsp; &amp;nbsp; │ &amp;nbsp; ├── entity/ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# 实体类（Admin/Custom/Item/Photo/User/WebSet）&lt;br/&gt;│ &amp;nbsp; &amp;nbsp; &amp;nbsp; │ &amp;nbsp; ├── model/ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; # DTO 与 VO 对象&lt;br/&gt;│ &amp;nbsp; &amp;nbsp; &amp;nbsp; │ &amp;nbsp; ├── service/ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; # 业务接口及实现&lt;br/&gt;│ &amp;nbsp; &amp;nbsp; &amp;nbsp; │ &amp;nbsp; ├── task/ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# 定时任务（PhotoTask）&lt;br/&gt;│ &amp;nbsp; &amp;nbsp; &amp;nbsp; │ &amp;nbsp; ├── util/ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# 工具类（HttpClient/PicUtil/R）&lt;br/&gt;│ &amp;nbsp; &amp;nbsp; &amp;nbsp; │ &amp;nbsp; └── file/ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# 图片上传处理&lt;br/&gt;│ &amp;nbsp; &amp;nbsp; &amp;nbsp; └── resources/&lt;br/&gt;│ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; └── application.yml &amp;nbsp; &amp;nbsp;# 核心配置文件&lt;br/&gt;│&lt;br/&gt;├── 小程序前端_第一套/ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; # 基于 Vant Weapp 的传统版前端&lt;br/&gt;│ &amp;nbsp; ├── ymhZjz/ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# 小程序源码目录&lt;br/&gt;│ &amp;nbsp; │ &amp;nbsp; ├── app.js / app.json&lt;br/&gt;│ &amp;nbsp; │ &amp;nbsp; ├── pages/ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; # 11 个页面&lt;br/&gt;│ &amp;nbsp; │ &amp;nbsp; │ &amp;nbsp; ├── home/ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# 首页&lt;br/&gt;│ &amp;nbsp; │ &amp;nbsp; │ &amp;nbsp; ├── mine/ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# 个人中心&lt;br/&gt;│ &amp;nbsp; │ &amp;nbsp; │ &amp;nbsp; ├── camera/ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# 拍照页&lt;br/&gt;│ &amp;nbsp; │ &amp;nbsp; │ &amp;nbsp; ├── preEdit/ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; # 预处理&lt;br/&gt;│ &amp;nbsp; │ &amp;nbsp; │ &amp;nbsp; ├── edit/ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# 编辑（含 complete 完成）&lt;br/&gt;│ &amp;nbsp; │ &amp;nbsp; │ &amp;nbsp; ├── sizeList/ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# 尺寸列表&lt;br/&gt;│ &amp;nbsp; │ &amp;nbsp; │ &amp;nbsp; ├── searchs/ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; # 搜索&lt;br/&gt;│ &amp;nbsp; │ &amp;nbsp; │ &amp;nbsp; ├── custom/ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# 自定义尺寸&lt;br/&gt;│ &amp;nbsp; │ &amp;nbsp; │ &amp;nbsp; ├── works/ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; # 我的作品&lt;br/&gt;│ &amp;nbsp; │ &amp;nbsp; │ &amp;nbsp; ├── login/ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; # 登录&lt;br/&gt;│ &amp;nbsp; │ &amp;nbsp; │ &amp;nbsp; └── admin/ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; # 管理员入口&lt;br/&gt;│ &amp;nbsp; │ &amp;nbsp; ├── images/&lt;br/&gt;│ &amp;nbsp; │ &amp;nbsp; └── miniprogram_npm/ &amp;nbsp; &amp;nbsp; &amp;nbsp; # npm 构建产物&lt;br/&gt;│ &amp;nbsp; └── project.config.json&lt;br/&gt;│&lt;br/&gt;├── 小程序前端_第二套/ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; # 基于 Skyline + SCSS 的轻量版前端&lt;br/&gt;│ &amp;nbsp; ├── miniprogram/&lt;br/&gt;│ &amp;nbsp; │ &amp;nbsp; ├── app.js / app.json / app.scss&lt;br/&gt;│ &amp;nbsp; │ &amp;nbsp; ├── pages/ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; # 10 个页面&lt;br/&gt;│ &amp;nbsp; │ &amp;nbsp; │ &amp;nbsp; ├── index/ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; # 首页&lt;br/&gt;│ &amp;nbsp; │ &amp;nbsp; │ &amp;nbsp; ├── user/ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# 我的&lt;br/&gt;│ &amp;nbsp; │ &amp;nbsp; │ &amp;nbsp; ├── photo/ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; # 相册&lt;br/&gt;│ &amp;nbsp; │ &amp;nbsp; │ &amp;nbsp; ├── camera/ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# 拍照&lt;br/&gt;│ &amp;nbsp; │ &amp;nbsp; │ &amp;nbsp; ├── preedit/ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; # 预处理&lt;br/&gt;│ &amp;nbsp; │ &amp;nbsp; │ &amp;nbsp; ├── edit/ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# 编辑&lt;br/&gt;│ &amp;nbsp; │ &amp;nbsp; │ &amp;nbsp; ├── search/ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# 搜索&lt;br/&gt;│ &amp;nbsp; │ &amp;nbsp; │ &amp;nbsp; ├── custom/ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# 自定义&lt;br/&gt;│ &amp;nbsp; │ &amp;nbsp; │ &amp;nbsp; ├── customlist/ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# 自定义列表&lt;br/&gt;│ &amp;nbsp; │ &amp;nbsp; │ &amp;nbsp; └── login/ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; # 登录&lt;br/&gt;│ &amp;nbsp; │ &amp;nbsp; └── assets/&lt;br/&gt;│ &amp;nbsp; └── project.config.json&lt;br/&gt;│&lt;br/&gt;└── 搭建教程.docx &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# 图文搭建教程&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;blockquote style=&quot;margin:18px 0;padding:12px 16px;background:#faf9f5;border-left:4px solid #d97757;color:#3d3929;border-radius:6px;&quot; class=&quot;js_darkmode__13&quot;&gt;&lt;p style=&quot;margin:16px 0;line-height:1.9;color:#3d3929;font-size:16px;word-break:break-word;text-align:justify;&quot;&gt;&lt;strong style=&quot;color:#c2613f;font-weight:700;&quot;&gt;两套前端差异&lt;/strong&gt;：第一套功能更全（含高级参数、自定义颜色、管理员入口），第二套&amp;quot;小而巧、雅而美&amp;quot;，使用 Skyline 渲染引擎和 SCSS 预处理，但暂无高级参数与自定义颜色功能。&lt;/p&gt;&lt;/blockquote&gt;&lt;hr style=&quot;border:none;border-top:1px solid #e8e6dc;margin:28px 0;&quot; class=&quot;js_darkmode__14&quot;/&gt;&lt;h2 style=&quot;margin:24px 0 14px;padding-left:10px;border-left:4px solid #d97757;font-size:21px;line-height:1.45;color:#181815;font-weight:800;&quot; class=&quot;js_darkmode__15&quot;&gt;三、项目主要技术框架&lt;/h2&gt;&lt;h3 style=&quot;margin:20px 0 12px;font-size:18px;line-height:1.5;color:#181815;font-weight:700;&quot; class=&quot;js_darkmode__16&quot;&gt;后端技术栈（Java后端）&lt;/h3&gt;&lt;table&gt;&lt;thead&gt;&lt;tr class=&quot;firstRow&quot;&gt;&lt;th style=&quot;border:1px solid #e8e6dc;padding:8px 10px;background:#faf9f5;font-weight:700;color:#181815;text-align:left;&quot; class=&quot;js_darkmode__17&quot;&gt;&lt;section&gt;技术&lt;/section&gt;&lt;/th&gt;&lt;th data-colwidth=&quot;118&quot; style=&quot;border:1px solid #e8e6dc;padding:8px 10px;background:#faf9f5;font-weight:700;color:#181815;text-align:left;&quot; class=&quot;js_darkmode__18&quot;&gt;&lt;section&gt;版本&lt;/section&gt;&lt;/th&gt;&lt;th style=&quot;border:1px solid #e8e6dc;padding:8px 10px;background:#faf9f5;font-weight:700;color:#181815;text-align:left;&quot; class=&quot;js_darkmode__19&quot;&gt;&lt;section&gt;用途&lt;/section&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;border:1px solid #e8e6dc;padding:8px 10px;color:#3d3929;&quot; class=&quot;js_darkmode__20&quot;&gt;&lt;section&gt;Spring Boot&lt;/section&gt;&lt;/td&gt;&lt;td data-colwidth=&quot;118&quot; style=&quot;border:1px solid #e8e6dc;padding:8px 10px;color:#3d3929;&quot; class=&quot;js_darkmode__21&quot;&gt;&lt;section&gt;2.4.0&lt;/section&gt;&lt;/td&gt;&lt;td style=&quot;border:1px solid #e8e6dc;padding:8px 10px;color:#3d3929;&quot; class=&quot;js_darkmode__22&quot;&gt;&lt;section&gt;应用框架&lt;/section&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;border:1px solid #e8e6dc;padding:8px 10px;color:#3d3929;&quot; class=&quot;js_darkmode__23&quot;&gt;&lt;section&gt;MyBatis-Plus&lt;/section&gt;&lt;/td&gt;&lt;td data-colwidth=&quot;118&quot; style=&quot;border:1px solid #e8e6dc;padding:8px 10px;color:#3d3929;&quot; class=&quot;js_darkmode__24&quot;&gt;&lt;section&gt;3.5.7&lt;/section&gt;&lt;/td&gt;&lt;td style=&quot;border:1px solid #e8e6dc;padding:8px 10px;color:#3d3929;&quot; class=&quot;js_darkmode__25&quot;&gt;&lt;section&gt;ORM 持久层&lt;/section&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;border:1px solid #e8e6dc;padding:8px 10px;color:#3d3929;&quot; class=&quot;js_darkmode__26&quot;&gt;&lt;section&gt;MySQL Connector/J&lt;/section&gt;&lt;/td&gt;&lt;td data-colwidth=&quot;118&quot; style=&quot;border:1px solid #e8e6dc;padding:8px 10px;color:#3d3929;&quot; class=&quot;js_darkmode__27&quot;&gt;&lt;section&gt;8.0.22&lt;/section&gt;&lt;/td&gt;&lt;td style=&quot;border:1px solid #e8e6dc;padding:8px 10px;color:#3d3929;&quot; class=&quot;js_darkmode__28&quot;&gt;&lt;section&gt;数据库驱动&lt;/section&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;border:1px solid #e8e6dc;padding:8px 10px;color:#3d3929;&quot; class=&quot;js_darkmode__29&quot;&gt;&lt;section&gt;Sa-Token&lt;/section&gt;&lt;/td&gt;&lt;td data-colwidth=&quot;118&quot; style=&quot;border:1px solid #e8e6dc;padding:8px 10px;color:#3d3929;&quot; class=&quot;js_darkmode__30&quot;&gt;&lt;section&gt;1.38.0&lt;/section&gt;&lt;/td&gt;&lt;td style=&quot;border:1px solid #e8e6dc;padding:8px 10px;color:#3d3929;&quot; class=&quot;js_darkmode__31&quot;&gt;&lt;section&gt;鉴权认证（含 Redis-Jackson 集成）&lt;/section&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;border:1px solid #e8e6dc;padding:8px 10px;color:#3d3929;&quot; class=&quot;js_darkmode__32&quot;&gt;&lt;section&gt;Redis（Lettuce 连接池）&lt;/section&gt;&lt;/td&gt;&lt;td data-colwidth=&quot;118&quot; style=&quot;border:1px solid #e8e6dc;padding:8px 10px;color:#3d3929;&quot; class=&quot;js_darkmode__33&quot;&gt;&lt;section&gt;-&lt;/section&gt;&lt;/td&gt;&lt;td style=&quot;border:1px solid #e8e6dc;padding:8px 10px;color:#3d3929;&quot; class=&quot;js_darkmode__34&quot;&gt;&lt;section&gt;缓存与 Token 存储&lt;/section&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;border:1px solid #e8e6dc;padding:8px 10px;color:#3d3929;&quot; class=&quot;js_darkmode__35&quot;&gt;&lt;section&gt;FastJSON&lt;/section&gt;&lt;/td&gt;&lt;td data-colwidth=&quot;118&quot; style=&quot;border:1px solid #e8e6dc;padding:8px 10px;color:#3d3929;&quot; class=&quot;js_darkmode__36&quot;&gt;&lt;section&gt;2.0.31&lt;/section&gt;&lt;/td&gt;&lt;td style=&quot;border:1px solid #e8e6dc;padding:8px 10px;color:#3d3929;&quot; class=&quot;js_darkmode__37&quot;&gt;&lt;section&gt;JSON 序列化&lt;/section&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;border:1px solid #e8e6dc;padding:8px 10px;color:#3d3929;&quot; class=&quot;js_darkmode__38&quot;&gt;&lt;section&gt;Apache HttpClient&lt;/section&gt;&lt;/td&gt;&lt;td data-colwidth=&quot;118&quot; style=&quot;border:1px solid #e8e6dc;padding:8px 10px;color:#3d3929;&quot; class=&quot;js_darkmode__39&quot;&gt;&lt;section&gt;-&lt;/section&gt;&lt;/td&gt;&lt;td style=&quot;border:1px solid #e8e6dc;padding:8px 10px;color:#3d3929;&quot; class=&quot;js_darkmode__40&quot;&gt;&lt;section&gt;调用 HivisionIDPhotos API&lt;/section&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;border:1px solid #e8e6dc;padding:8px 10px;color:#3d3929;&quot; class=&quot;js_darkmode__41&quot;&gt;&lt;section&gt;Lombok&lt;/section&gt;&lt;/td&gt;&lt;td data-colwidth=&quot;118&quot; style=&quot;border:1px solid #e8e6dc;padding:8px 10px;color:#3d3929;&quot; class=&quot;js_darkmode__42&quot;&gt;&lt;section&gt;-&lt;/section&gt;&lt;/td&gt;&lt;td style=&quot;border:1px solid #e8e6dc;padding:8px 10px;color:#3d3929;&quot; class=&quot;js_darkmode__43&quot;&gt;&lt;section&gt;实体简化&lt;/section&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;border:1px solid #e8e6dc;padding:8px 10px;color:#3d3929;&quot; class=&quot;js_darkmode__44&quot;&gt;&lt;section&gt;JDK&lt;/section&gt;&lt;/td&gt;&lt;td data-colwidth=&quot;118&quot; style=&quot;border:1px solid #e8e6dc;padding:8px 10px;color:#3d3929;&quot; class=&quot;js_darkmode__45&quot;&gt;&lt;section&gt;1.8&lt;/section&gt;&lt;/td&gt;&lt;td style=&quot;border:1px solid #e8e6dc;padding:8px 10px;color:#3d3929;&quot; class=&quot;js_darkmode__46&quot;&gt;&lt;section&gt;运行环境&lt;/section&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h3 style=&quot;margin:20px 0 12px;font-size:18px;line-height:1.5;color:#181815;font-weight:700;&quot; class=&quot;js_darkmode__47&quot;&gt;前端技术栈（小程序前端）&lt;/h3&gt;&lt;ul style=&quot;margin:14px 0 14px 1.2em;padding:0;color:#3d3929;line-height:1.9;&quot; class=&quot;js_darkmode__48 list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;section&gt;‎&lt;strong style=&quot;color:#c2613f;font-weight:700;&quot;&gt;第一套&lt;/strong&gt;：原生微信小程序 + &lt;span class=&quot;&quot;&gt;Vant Weapp&lt;/span&gt; 组件库（按钮/图片/Tab/搜索/对话框等）&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section&gt;‎&lt;strong style=&quot;color:#c2613f;font-weight:700;&quot;&gt;第二套&lt;/strong&gt;：原生微信小程序 + Skyline 渲染引擎 + SCSS 预处理器 + glass-easel 组件框架&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section&gt;共同：自定义导航栏（‎&lt;code style=&quot;font-family:Menlo,Consolas,monospace;background:#f5f4ef;color:#d97757;display:inline;white-space:normal;padding:2px 6px;border-radius:4px;font-size:0.92em;&quot; class=&quot;js_darkmode__49&quot;&gt;navigationStyle: custom&lt;/code&gt;）、TabBar 底部导航&lt;/section&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3 style=&quot;margin:20px 0 12px;font-size:18px;line-height:1.5;color:#181815;font-weight:700;&quot; class=&quot;js_darkmode__50&quot;&gt;外部依赖服务&lt;/h3&gt;&lt;ul style=&quot;margin:14px 0 14px 1.2em;padding:0;color:#3d3929;line-height:1.9;&quot; class=&quot;js_darkmode__51 list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;section&gt;‎&lt;strong style=&quot;color:#c2613f;font-weight:700;&quot;&gt;HivisionIDPhotos&lt;/strong&gt;（2024.09.25）：核心 AI 抠图模型服务（内置 MTCNN + hivision_modnet）&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section&gt;‎&lt;strong style=&quot;color:#c2613f;font-weight:700;&quot;&gt;zjzNsfw&lt;/strong&gt;：可选的鉴黄 API 服务&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section&gt;‎&lt;strong style=&quot;color:#c2613f;font-weight:700;&quot;&gt;MySQL 8.0/5.7&lt;/strong&gt;&amp;nbsp;+&amp;nbsp;&lt;strong style=&quot;color:#c2613f;font-weight:700;&quot;&gt;Redis 7.2.4&lt;/strong&gt;（任意版本均可）&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section&gt;‎&lt;strong style=&quot;color:#c2613f;font-weight:700;&quot;&gt;宝塔/Nginx 静态站点&lt;/strong&gt;：用于图片存储与 HTTPS 访问&lt;/section&gt;&lt;/li&gt;&lt;/ul&gt;&lt;hr style=&quot;border:none;border-top:1px solid #e8e6dc;margin:28px 0;&quot; class=&quot;js_darkmode__52&quot;/&gt;&lt;h2 style=&quot;margin:24px 0 14px;padding-left:10px;border-left:4px solid #d97757;font-size:21px;line-height:1.45;color:#181815;font-weight:800;&quot; class=&quot;js_darkmode__53&quot;&gt;四、项目主要功能&lt;/h2&gt;&lt;h3 style=&quot;margin:20px 0 12px;font-size:18px;line-height:1.5;color:#181815;font-weight:700;&quot; class=&quot;js_darkmode__54&quot;&gt;用户端功能&lt;/h3&gt;&lt;ol style=&quot;margin:14px 0 14px 1.2em;padding:0;color:#3d3929;line-height:1.9;&quot; class=&quot;js_darkmode__55 list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;section&gt;‎&lt;strong style=&quot;color:#c2613f;font-weight:700;&quot;&gt;微信登录&lt;/strong&gt;：基于 app_id + app_secret 实现小程序登录鉴权&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section&gt;‎&lt;strong style=&quot;color:#c2613f;font-weight:700;&quot;&gt;拍照/相册选择&lt;/strong&gt;：支持调用相机拍摄或从相册上传原图&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section&gt;‎&lt;strong style=&quot;color:#c2613f;font-weight:700;&quot;&gt;AI 自动抠图&lt;/strong&gt;：调用 HivisionIDPhotos 完成人像分割、背景透明化&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section&gt;‎&lt;strong style=&quot;color:#c2613f;font-weight:700;&quot;&gt;背景色替换&lt;/strong&gt;：自由切换证件照背景颜色（蓝/白/红/渐变等）&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section&gt;‎&lt;strong style=&quot;color:#c2613f;font-weight:700;&quot;&gt;尺寸选择&lt;/strong&gt;：内置 759+ 规格库，覆盖一寸、二寸、签证、各类网申证件照&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section&gt;‎&lt;strong style=&quot;color:#c2613f;font-weight:700;&quot;&gt;自定义尺寸&lt;/strong&gt;：用户自定义像素宽高、毫米尺寸、DPI 分辨率&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section&gt;‎&lt;strong style=&quot;color:#c2613f;font-weight:700;&quot;&gt;高清/普通下载&lt;/strong&gt;：双清晰度输出，支持引导保存相册&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section&gt;‎&lt;strong style=&quot;color:#c2613f;font-weight:700;&quot;&gt;个人中心&lt;/strong&gt;：我的作品、定制尺寸列表、看广告视频下载&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section&gt;‎&lt;strong style=&quot;color:#c2613f;font-weight:700;&quot;&gt;水印与流量主&lt;/strong&gt;：支持水印图、接入微信流量主广告变现&lt;/section&gt;&lt;/li&gt;&lt;/ol&gt;&lt;h3 style=&quot;margin:20px 0 12px;font-size:18px;line-height:1.5;color:#181815;font-weight:700;&quot; class=&quot;js_darkmode__56&quot;&gt;管理端功能&lt;/h3&gt;&lt;ul style=&quot;margin:14px 0 14px 1.2em;padding:0;color:#3d3929;line-height:1.9;&quot; class=&quot;js_darkmode__57 list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;section&gt;‎&lt;strong style=&quot;color:#c2613f;font-weight:700;&quot;&gt;管理员网页后台&lt;/strong&gt;：访问 ‎&lt;code style=&quot;font-family:Menlo,Consolas,monospace;background:#f5f4ef;color:#d97757;display:inline;white-space:normal;padding:2px 6px;border-radius:4px;font-size:0.92em;&quot; class=&quot;js_darkmode__58&quot;&gt;zjzAdmin&lt;/code&gt;&amp;nbsp;项目，统计生成量、用户数等数据&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section&gt;‎&lt;strong style=&quot;color:#c2613f;font-weight:700;&quot;&gt;小程序管理员入口&lt;/strong&gt;：第一套前端内置 admin 页面&lt;/section&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3 style=&quot;margin:20px 0 12px;font-size:18px;line-height:1.5;color:#181815;font-weight:700;&quot; class=&quot;js_darkmode__59&quot;&gt;后端服务功能&lt;/h3&gt;&lt;ul style=&quot;margin:14px 0 14px 1.2em;padding:0;color:#3d3929;line-height:1.9;&quot; class=&quot;js_darkmode__60 list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;section&gt;11 个 Controller/Service 模块化业务&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section&gt;&lt;span class=&quot;&quot;&gt;Sa-Token&lt;/span&gt; 单 Token 鉴权（一人一 Token，多端互踢）&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section&gt;图片本地化存储（路径 + 域名可配置）&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section&gt;定时任务 ‎&lt;code style=&quot;font-family:Menlo,Consolas,monospace;background:#f5f4ef;color:#d97757;display:inline;white-space:normal;padding:2px 6px;border-radius:4px;font-size:0.92em;&quot; class=&quot;js_darkmode__61&quot;&gt;PhotoTask&lt;/code&gt;&amp;nbsp;处理异步图片任务&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section&gt;鉴黄 API 自由开关（建议过审时开启，平时关闭）&lt;/section&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3 style=&quot;margin:20px 0 12px;font-size:18px;line-height:1.5;color:#181815;font-weight:700;&quot; class=&quot;js_darkmode__62&quot;&gt;排期/规划功能&lt;/h3&gt;&lt;ul style=&quot;margin:14px 0 14px 1.2em;padding:0;color:#3d3929;line-height:1.9;&quot; class=&quot;js_darkmode__63 list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;section&gt;14 种衣服自由换装&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section&gt;物品自定义抠图&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section&gt;黑白图片上色&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section&gt;黏土风写真生成&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section&gt;无感登录&lt;/section&gt;&lt;/li&gt;&lt;/ul&gt;&lt;hr style=&quot;border:none;border-top:1px solid #e8e6dc;margin:28px 0;&quot; class=&quot;js_darkmode__64&quot;/&gt;&lt;h2 style=&quot;margin:24px 0 14px;padding-left:10px;border-left:4px solid #d97757;font-size:21px;line-height:1.45;color:#181815;font-weight:800;&quot; class=&quot;js_darkmode__65&quot;&gt;五、项目安装和部署&lt;/h2&gt;&lt;h3 style=&quot;margin:20px 0 12px;font-size:18px;line-height:1.5;color:#181815;font-weight:700;&quot; class=&quot;js_darkmode__66&quot;&gt;环境准备&lt;/h3&gt;&lt;table&gt;&lt;thead&gt;&lt;tr class=&quot;firstRow&quot;&gt;&lt;th data-colwidth=&quot;192&quot; style=&quot;border:1px solid #e8e6dc;padding:8px 10px;background:#faf9f5;font-weight:700;color:#181815;text-align:left;&quot; class=&quot;js_darkmode__67&quot;&gt;&lt;section&gt;依赖&lt;/section&gt;&lt;/th&gt;&lt;th style=&quot;border:1px solid #e8e6dc;padding:8px 10px;background:#faf9f5;font-weight:700;color:#181815;text-align:left;&quot; class=&quot;js_darkmode__68&quot;&gt;&lt;section&gt;版本要求&lt;/section&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td data-colwidth=&quot;192&quot; style=&quot;border:1px solid #e8e6dc;padding:8px 10px;color:#3d3929;&quot; class=&quot;js_darkmode__69&quot;&gt;&lt;section&gt;JDK&lt;/section&gt;&lt;/td&gt;&lt;td style=&quot;border:1px solid #e8e6dc;padding:8px 10px;color:#3d3929;&quot; class=&quot;js_darkmode__70&quot;&gt;&lt;section&gt;1.8&lt;/section&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td data-colwidth=&quot;192&quot; style=&quot;border:1px solid #e8e6dc;padding:8px 10px;color:#3d3929;&quot; class=&quot;js_darkmode__71&quot;&gt;&lt;section&gt;MySQL&lt;/section&gt;&lt;/td&gt;&lt;td style=&quot;border:1px solid #e8e6dc;padding:8px 10px;color:#3d3929;&quot; class=&quot;js_darkmode__72&quot;&gt;&lt;section&gt;8.0 或 5.7&lt;/section&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td data-colwidth=&quot;192&quot; style=&quot;border:1px solid #e8e6dc;padding:8px 10px;color:#3d3929;&quot; class=&quot;js_darkmode__73&quot;&gt;&lt;section&gt;Redis&lt;/section&gt;&lt;/td&gt;&lt;td style=&quot;border:1px solid #e8e6dc;padding:8px 10px;color:#3d3929;&quot; class=&quot;js_darkmode__74&quot;&gt;&lt;section&gt;7.2.4 或任意版本&lt;/section&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td data-colwidth=&quot;192&quot; style=&quot;border:1px solid #e8e6dc;padding:8px 10px;color:#3d3929;&quot; class=&quot;js_darkmode__75&quot;&gt;&lt;section&gt;Maven&lt;/section&gt;&lt;/td&gt;&lt;td style=&quot;border:1px solid #e8e6dc;padding:8px 10px;color:#3d3929;&quot; class=&quot;js_darkmode__76&quot;&gt;&lt;section&gt;3.x&lt;/section&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td data-colwidth=&quot;192&quot; style=&quot;border:1px solid #e8e6dc;padding:8px 10px;color:#3d3929;&quot; class=&quot;js_darkmode__77&quot;&gt;&lt;section&gt;微信开发者工具&lt;/section&gt;&lt;/td&gt;&lt;td style=&quot;border:1px solid #e8e6dc;padding:8px 10px;color:#3d3929;&quot; class=&quot;js_darkmode__78&quot;&gt;&lt;section&gt;最新稳定版&lt;/section&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td data-colwidth=&quot;192&quot; style=&quot;border:1px solid #e8e6dc;padding:8px 10px;color:#3d3929;&quot; class=&quot;js_darkmode__79&quot;&gt;&lt;section&gt;HivisionIDPhotos&lt;/section&gt;&lt;/td&gt;&lt;td style=&quot;border:1px solid #e8e6dc;padding:8px 10px;color:#3d3929;&quot; class=&quot;js_darkmode__80&quot;&gt;&lt;section&gt;2024.09.25 版（内置 MTCNN + hivision_modnet）&lt;/section&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h3 style=&quot;margin:20px 0 12px;font-size:18px;line-height:1.5;color:#181815;font-weight:700;&quot; class=&quot;js_darkmode__81&quot;&gt;后端部署步骤&lt;/h3&gt;&lt;ol style=&quot;margin:14px 0 14px 1.2em;padding:0;color:#3d3929;line-height:1.9;&quot; class=&quot;js_darkmode__82 list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p style=&quot;margin:16px 0;line-height:1.9;color:#3d3929;font-size:16px;word-break:break-word;text-align:justify;&quot; class=&quot;js_darkmode__83&quot;&gt;‎&lt;strong style=&quot;color:#c2613f;font-weight:700;&quot;&gt;数据库初始化&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;&lt;ul style=&quot;margin:14px 0 14px 1.2em;padding:0;color:#3d3929;line-height:1.9;&quot; class=&quot;js_darkmode__84 list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;section&gt;创建数据库 ‎&lt;code style=&quot;font-family:Menlo,Consolas,monospace;background:#f5f4ef;color:#d97757;display:inline;white-space:normal;padding:2px 6px;border-radius:4px;font-size:0.92em;&quot; class=&quot;js_darkmode__85&quot;&gt;zjzwx&lt;/code&gt;&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section&gt;导入 ‎&lt;code style=&quot;font-family:Menlo,Consolas,monospace;background:#f5f4ef;color:#d97757;display:inline;white-space:normal;padding:2px 6px;border-radius:4px;font-size:0.92em;&quot; class=&quot;js_darkmode__86&quot;&gt;Java后端/1.sql&lt;/code&gt;（自动建立 admin / custom / item / photo / photo_record / user / web_set 7 张表，并预置 759+ 尺寸数据）&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section&gt;打开 ‎&lt;code style=&quot;font-family:Menlo,Consolas,monospace;background:#f5f4ef;color:#d97757;display:inline;white-space:normal;padding:2px 6px;border-radius:4px;font-size:0.92em;&quot; class=&quot;js_darkmode__87&quot;&gt;web_set&lt;/code&gt;&amp;nbsp;表，配置微信小程序的 ‎&lt;code style=&quot;font-family:Menlo,Consolas,monospace;background:#f5f4ef;color:#d97757;display:inline;white-space:normal;padding:2px 6px;border-radius:4px;font-size:0.92em;&quot; class=&quot;js_darkmode__88&quot;&gt;app_id&lt;/code&gt;&amp;nbsp;与 ‎&lt;code style=&quot;font-family:Menlo,Consolas,monospace;background:#f5f4ef;color:#d97757;display:inline;white-space:normal;padding:2px 6px;border-radius:4px;font-size:0.92em;&quot; class=&quot;js_darkmode__89&quot;&gt;app_secret&lt;/code&gt;&lt;/section&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;p style=&quot;margin:16px 0;line-height:1.9;color:#3d3929;font-size:16px;word-break:break-word;text-align:justify;&quot; class=&quot;js_darkmode__90&quot;&gt;‎&lt;strong style=&quot;color:#c2613f;font-weight:700;&quot;&gt;修改配置 ‎&lt;code style=&quot;font-family:Menlo,Consolas,monospace;background:#f5f4ef;color:#d97757;display:inline;white-space:normal;padding:2px 6px;border-radius:4px;font-size:0.92em;&quot; class=&quot;js_darkmode__91&quot;&gt;application.yml&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;&lt;ul style=&quot;margin:14px 0 14px 1.2em;padding:0;color:#3d3929;line-height:1.9;&quot; class=&quot;js_darkmode__92 list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;section&gt;‎&lt;strong style=&quot;color:#c2613f;font-weight:700;&quot;&gt;Redis&lt;/strong&gt;：修改 ‎&lt;code style=&quot;font-family:Menlo,Consolas,monospace;background:#f5f4ef;color:#d97757;display:inline;white-space:normal;padding:2px 6px;border-radius:4px;font-size:0.92em;&quot; class=&quot;js_darkmode__93&quot;&gt;host&lt;/code&gt;&amp;nbsp;/ ‎&lt;code style=&quot;font-family:Menlo,Consolas,monospace;background:#f5f4ef;color:#d97757;display:inline;white-space:normal;padding:2px 6px;border-radius:4px;font-size:0.92em;&quot; class=&quot;js_darkmode__94&quot;&gt;port&lt;/code&gt;&amp;nbsp;/ ‎&lt;code style=&quot;font-family:Menlo,Consolas,monospace;background:#f5f4ef;color:#d97757;display:inline;white-space:normal;padding:2px 6px;border-radius:4px;font-size:0.92em;&quot; class=&quot;js_darkmode__95&quot;&gt;password&lt;/code&gt;（默认 127.0.0.1:6379，password=123456，database=3）&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section&gt;‎&lt;strong style=&quot;color:#c2613f;font-weight:700;&quot;&gt;MySQL&lt;/strong&gt;：修改 ‎&lt;code style=&quot;font-family:Menlo,Consolas,monospace;background:#f5f4ef;color:#d97757;display:inline;white-space:normal;padding:2px 6px;border-radius:4px;font-size:0.92em;&quot; class=&quot;js_darkmode__96&quot;&gt;url&lt;/code&gt;&amp;nbsp;/ ‎&lt;code style=&quot;font-family:Menlo,Consolas,monospace;background:#f5f4ef;color:#d97757;display:inline;white-space:normal;padding:2px 6px;border-radius:4px;font-size:0.92em;&quot; class=&quot;js_darkmode__97&quot;&gt;username&lt;/code&gt;&amp;nbsp;/ ‎&lt;code style=&quot;font-family:Menlo,Consolas,monospace;background:#f5f4ef;color:#d97757;display:inline;white-space:normal;padding:2px 6px;border-radius:4px;font-size:0.92em;&quot; class=&quot;js_darkmode__98&quot;&gt;password&lt;/code&gt;（默认 127.0.0.1:3306/zjzwx）&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section&gt;‎&lt;strong style=&quot;color:#c2613f;font-weight:700;&quot;&gt;图片存储&lt;/strong&gt;：修改 ‎&lt;code style=&quot;font-family:Menlo,Consolas,monospace;background:#f5f4ef;color:#d97757;display:inline;white-space:normal;padding:2px 6px;border-radius:4px;font-size:0.92em;&quot; class=&quot;js_darkmode__99&quot;&gt;webset.directory&lt;/code&gt;（如 ‎&lt;code style=&quot;font-family:Menlo,Consolas,monospace;background:#f5f4ef;color:#d97757;display:inline;white-space:normal;padding:2px 6px;border-radius:4px;font-size:0.92em;&quot; class=&quot;js_darkmode__100&quot;&gt;/www/wwwroot/zjzpic/pic&lt;/code&gt;）和 ‎&lt;code style=&quot;font-family:Menlo,Consolas,monospace;background:#f5f4ef;color:#d97757;display:inline;white-space:normal;padding:2px 6px;border-radius:4px;font-size:0.92em;&quot; class=&quot;js_darkmode__101&quot;&gt;webset.picDomain&lt;/code&gt;（图片域名，需 HTTPS）&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section&gt;‎&lt;strong style=&quot;color:#c2613f;font-weight:700;&quot;&gt;API 地址&lt;/strong&gt;：‎&lt;code style=&quot;font-family:Menlo,Consolas,monospace;background:#f5f4ef;color:#d97757;display:inline;white-space:normal;padding:2px 6px;border-radius:4px;font-size:0.92em;&quot; class=&quot;js_darkmode__102&quot;&gt;webset.safetyDomain&lt;/code&gt;（鉴黄 API）、‎&lt;code style=&quot;font-family:Menlo,Consolas,monospace;background:#f5f4ef;color:#d97757;display:inline;white-space:normal;padding:2px 6px;border-radius:4px;font-size:0.92em;&quot; class=&quot;js_darkmode__103&quot;&gt;webset.zjzDomain&lt;/code&gt;（证件照 API），建议填 ‎&lt;code style=&quot;font-family:Menlo,Consolas,monospace;background:#f5f4ef;color:#d97757;display:inline;white-space:normal;padding:2px 6px;border-radius:4px;font-size:0.92em;&quot; class=&quot;js_darkmode__104&quot;&gt;127.0.0.1&lt;/code&gt;&amp;nbsp;本地调用，更快更安全&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section&gt;‎&lt;strong style=&quot;color:#c2613f;font-weight:700;&quot;&gt;envVersion&lt;/strong&gt;：‎&lt;code style=&quot;font-family:Menlo,Consolas,monospace;background:#f5f4ef;color:#d97757;display:inline;white-space:normal;padding:2px 6px;border-radius:4px;font-size:0.92em;&quot; class=&quot;js_darkmode__105&quot;&gt;release&lt;/code&gt;（正式版）/ ‎&lt;code style=&quot;font-family:Menlo,Consolas,monospace;background:#f5f4ef;color:#d97757;display:inline;white-space:normal;padding:2px 6px;border-radius:4px;font-size:0.92em;&quot; class=&quot;js_darkmode__106&quot;&gt;trial&lt;/code&gt;（体验版）/ ‎&lt;code style=&quot;font-family:Menlo,Consolas,monospace;background:#f5f4ef;color:#d97757;display:inline;white-space:normal;padding:2px 6px;border-radius:4px;font-size:0.92em;&quot; class=&quot;js_darkmode__107&quot;&gt;develop&lt;/code&gt;（开发版）&lt;/section&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;p style=&quot;margin:16px 0;line-height:1.9;color:#3d3929;font-size:16px;word-break:break-word;text-align:justify;&quot; class=&quot;js_darkmode__108&quot;&gt;‎&lt;strong style=&quot;color:#c2613f;font-weight:700;&quot;&gt;图片站点搭建&lt;/strong&gt;：在宝塔/Nginx 新建静态网站，目录指向 ‎&lt;code style=&quot;font-family:Menlo,Consolas,monospace;background:#f5f4ef;color:#d97757;display:inline;white-space:normal;padding:2px 6px;border-radius:4px;font-size:0.92em;&quot; class=&quot;js_darkmode__109&quot;&gt;webset.directory&lt;/code&gt;，配置 SSL 证书开启 HTTPS。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;margin:16px 0;line-height:1.9;color:#3d3929;font-size:16px;word-break:break-word;text-align:justify;&quot; class=&quot;js_darkmode__110&quot;&gt;‎&lt;strong style=&quot;color:#c2613f;font-weight:700;&quot;&gt;打包运行&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;&lt;ul style=&quot;margin:14px 0 14px 1.2em;padding:0;color:#3d3929;line-height:1.9;&quot; class=&quot;js_darkmode__111 list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;section&gt;IDEA 导入 Maven 项目&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section&gt;执行 ‎&lt;code style=&quot;font-family:Menlo,Consolas,monospace;background:#f5f4ef;color:#d97757;display:inline;white-space:normal;padding:2px 6px;border-radius:4px;font-size:0.92em;&quot; class=&quot;js_darkmode__112&quot;&gt;mvn clean package&lt;/code&gt;，打包产物输出至 ‎&lt;code style=&quot;font-family:Menlo,Consolas,monospace;background:#f5f4ef;color:#d97757;display:inline;white-space:normal;padding:2px 6px;border-radius:4px;font-size:0.92em;&quot; class=&quot;js_darkmode__113&quot;&gt;D:/jar2&lt;/code&gt;&amp;nbsp;目录（pom.xml 中 ‎&lt;code style=&quot;font-family:Menlo,Consolas,monospace;background:#f5f4ef;color:#d97757;display:inline;white-space:normal;padding:2px 6px;border-radius:4px;font-size:0.92em;&quot; class=&quot;js_darkmode__114&quot;&gt;outputDirectory&lt;/code&gt;&amp;nbsp;配置）&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section&gt;运行 ‎&lt;code style=&quot;font-family:Menlo,Consolas,monospace;background:#f5f4ef;color:#d97757;display:inline;white-space:normal;padding:2px 6px;border-radius:4px;font-size:0.92em;&quot; class=&quot;js_darkmode__115&quot;&gt;java -jar xxx.jar&lt;/code&gt;，默认端口&amp;nbsp;&lt;strong style=&quot;color:#c2613f;font-weight:700;&quot;&gt;8010&lt;/strong&gt;&lt;/section&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;p style=&quot;margin:16px 0;line-height:1.9;color:#3d3929;font-size:16px;word-break:break-word;text-align:justify;&quot; class=&quot;js_darkmode__116&quot;&gt;‎&lt;strong style=&quot;color:#c2613f;font-weight:700;&quot;&gt;小程序域名配置&lt;/strong&gt;：在微信公众平台「服务器域名」中添加后端服务域名、图片域名等。&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;h3 style=&quot;margin:20px 0 12px;font-size:18px;line-height:1.5;color:#181815;font-weight:700;&quot; class=&quot;js_darkmode__117&quot;&gt;小程序前端部署步骤&lt;/h3&gt;&lt;ol style=&quot;margin:14px 0 14px 1.2em;padding:0;color:#3d3929;line-height:1.9;&quot; class=&quot;js_darkmode__118 list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;section&gt;微信开发者工具打开 ‎&lt;code style=&quot;font-family:Menlo,Consolas,monospace;background:#f5f4ef;color:#d97757;display:inline;white-space:normal;padding:2px 6px;border-radius:4px;font-size:0.92em;&quot; class=&quot;js_darkmode__119&quot;&gt;小程序前端_第一套&lt;/code&gt;&amp;nbsp;或 ‎&lt;code style=&quot;font-family:Menlo,Consolas,monospace;background:#f5f4ef;color:#d97757;display:inline;white-space:normal;padding:2px 6px;border-radius:4px;font-size:0.92em;&quot; class=&quot;js_darkmode__120&quot;&gt;小程序前端_第二套&lt;/code&gt;&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section&gt;修改前端源码中的后端 API 地址（详见各 README 中的截图指引，仅需改一处）&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section&gt;在「工具 → 构建 npm」中构建 Vant Weapp 依赖（第一套）&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section&gt;配置隐私协议、客服（详见各 README 截图）&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section&gt;真机预览调试，确认无误后上传发布&lt;/section&gt;&lt;/li&gt;&lt;/ol&gt;&lt;h3 style=&quot;margin:20px 0 12px;font-size:18px;line-height:1.5;color:#181815;font-weight:700;&quot; class=&quot;js_darkmode__121&quot;&gt;部署注意事项&lt;/h3&gt;&lt;ul style=&quot;margin:14px 0 14px 1.2em;padding:0;color:#3d3929;line-height:1.9;&quot; class=&quot;js_darkmode__122 list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;section&gt;鉴黄模型精度有限，建议仅在过审时开启，平时关闭&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section&gt;自部署证件照 API 与鉴黄 API 时不建议开放外网，yml 中填 ‎&lt;code style=&quot;font-family:Menlo,Consolas,monospace;background:#f5f4ef;color:#d97757;display:inline;white-space:normal;padding:2px 6px;border-radius:4px;font-size:0.92em;&quot; class=&quot;js_darkmode__123&quot;&gt;127.0.0.1&lt;/code&gt;&amp;nbsp;防止被抓接口滥用&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section&gt;频繁使用的配置项未放入数据库以避免频繁握手 MySQL&lt;/section&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;项目地址：夸克：https://pan.quark.cn/s/00aa63f2b23d&lt;br/&gt;百度：https://pan.baidu.com/s/1slji5oglbJxvGCB7r3lAIw?pwd=8888&lt;/p&gt;</description><pubDate>Thu, 08 Oct 2026 14:54:54 +0800</pubDate></item><item><title>C# Lambda 表达式入门：工业数据过滤与回调实战</title><link>https://www.codepub.top/post/703.html</link><description>&lt;section style=&quot;border-width: 0px; border-style: solid; border-color: rgb(229, 229, 229); color: rgb(10, 10, 10); font-size: 14px; letter-spacing: normal; background-color: rgb(255, 255, 255); text-align: left; line-height: 1.75; font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; margin-bottom: 0px; visibility: visible;&quot; class=&quot;js_darkmode__1&quot;&gt;&lt;blockquote style=&quot;border-width: 0px 0px 0px 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-color: rgb(229, 229, 229) rgb(229, 229, 229) rgb(229, 229, 229) rgb(15, 76, 129); margin-top: 0px; line-height: 1.75; font-size: 14px; padding: 1em; border-radius: 6px; color: rgba(0, 0, 0, 0.5); background: rgb(247, 247, 247); visibility: visible;&quot; class=&quot;js_darkmode__2&quot;&gt;&lt;p style=&quot;border-width: 0px; border-style: solid; border-color: rgb(229, 229, 229); line-height: 1.75; font-size: 1em; letter-spacing: 0.1em; color: rgb(63, 63, 63); visibility: visible;&quot; class=&quot;js_darkmode__3&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;聚焦 C# 与工业数字化深度融合，本专栏由资深工业软件开发专家主理，系统分享 .NET 平台在智能制造、工业自动化及 MES/SCADA 系统开发中的实战经验。内容涵盖 OPC UA、Modbus、MQTT 等工业通信协议集成、实时数据采集与处理、数字孪生建模及边缘计算部署等核心技术，兼顾架构设计与代码落地。无论你是工控工程师还是 .NET 程序员，这里都有你需要的技术干货，助你在工业数字化浪潮中构建真正有价值的应用系统。&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/section&gt;&lt;p style=&quot;border-width: 0px; border-style: solid; border-color: rgb(229, 229, 229); margin-bottom: 0px; color: rgb(10, 10, 10); font-family: ui-sans-serif, system-ui, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Noto Color Emoji&amp;quot;; letter-spacing: normal; text-align: start; background-color: rgb(255, 255, 255); font-size: 0px; line-height: 0; visibility: visible;&quot; class=&quot;js_darkmode__4&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; border-width: 0px; border-style: solid; border-color: rgb(229, 229, 229); margin: 0px; color: rgb(10, 10, 10); font-family: ui-sans-serif, system-ui, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Noto Color Emoji&amp;quot;; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; font-size: 0px; line-height: 0; visibility: visible;&quot; data-pm-slice=&quot;0 0 []&quot; class=&quot;js_darkmode__5&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;section style=&quot;box-sizing: border-box; border-width: 0px; border-style: solid; border-color: rgb(229, 229, 229); color: rgb(10, 10, 10); font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; text-align: left; line-height: 1.75; font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; visibility: visible;&quot; class=&quot;js_darkmode__6&quot;&gt;&lt;p style=&quot;box-sizing: border-box; border-width: 0px; border-style: solid; border-color: rgb(229, 229, 229); margin: 1.5em 8px; text-align: justify; line-height: 1.75; font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 14px; letter-spacing: 0.1em; color: rgb(63, 63, 63); visibility: visible;&quot; class=&quot;js_darkmode__7&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;注塑车间的品质系统要从一批采集数据里筛出温度超过 85℃ 的记录。&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; border-width: 0px; border-style: solid; border-color: rgb(229, 229, 229); margin: 1.5em 8px; text-align: justify; line-height: 1.75; font-size: 14px; letter-spacing: 0.1em; color: rgb(63, 63, 63); visibility: visible;&quot; class=&quot;js_darkmode__8&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;你定义了一个&amp;nbsp;&lt;/span&gt;&lt;code style=&quot;box-sizing: border-box; border-width: 0px; border-style: solid; border-color: rgb(229, 229, 229); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-feature-settings: normal; font-variation-settings: normal; font-size: 12.6px; text-align: left; line-height: 1.75; color: rgb(221, 17, 68); background: rgba(27, 31, 35, 0.05); padding: 3px 5px; border-radius: 4px; visibility: visible;&quot; class=&quot;js_darkmode__9&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;List&amp;lt;float&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;，然后跑去类的底部写了一个&amp;nbsp;&lt;/span&gt;&lt;code style=&quot;box-sizing: border-box; border-width: 0px; border-style: solid; border-color: rgb(229, 229, 229); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-feature-settings: normal; font-variation-settings: normal; font-size: 12.6px; text-align: left; line-height: 1.75; color: rgb(221, 17, 68); background: rgba(27, 31, 35, 0.05); padding: 3px 5px; border-radius: 4px; visibility: visible;&quot; class=&quot;js_darkmode__10&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;FilterHighTemp&lt;/span&gt;&lt;/code&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;&amp;nbsp;方法，又回到顶部调用它，再回去看逻辑……&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; border-width: 0px; border-style: solid; border-color: rgb(229, 229, 229); margin: 1.5em 8px; text-align: justify; line-height: 1.75; font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 14px; letter-spacing: 0.1em; color: rgb(63, 63, 63); visibility: visible;&quot; class=&quot;js_darkmode__11&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;光是找代码就来回跳了三次。&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; border-width: 0px; border-style: solid; border-color: rgb(229, 229, 229); margin: 1.5em 8px; text-align: justify; line-height: 1.75; font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 14px; letter-spacing: 0.1em; color: rgb(63, 63, 63); visibility: visible;&quot; class=&quot;js_darkmode__12&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;领导说再加一个筛压力超限的，你又去底部写了一个&amp;nbsp;&lt;/span&gt;&lt;code style=&quot;box-sizing: border-box; border-width: 0px; border-style: solid; border-color: rgb(229, 229, 229); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-feature-settings: normal; font-variation-settings: normal; font-size: 12.6px; text-align: left; line-height: 1.75; color: rgb(221, 17, 68); background: rgba(27, 31, 35, 0.05); padding: 3px 5px; border-radius: 4px; visibility: visible;&quot; class=&quot;js_darkmode__13&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;FilterHighPressure&lt;/span&gt;&lt;/code&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;。&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; border-width: 0px; border-style: solid; border-color: rgb(229, 229, 229); margin: 1.5em 8px; text-align: justify; line-height: 1.75; font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 14px; letter-spacing: 0.1em; color: rgb(63, 63, 63); visibility: visible;&quot; class=&quot;js_darkmode__14&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;两个方法，逻辑几乎一样，就是判断条件不同。&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; border-width: 0px; border-style: solid; border-color: rgb(229, 229, 229); margin: 1.5em 8px; text-align: justify; line-height: 1.75; font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 14px; letter-spacing: 0.1em; color: rgb(63, 63, 63); visibility: visible;&quot; class=&quot;js_darkmode__15&quot;&gt;&lt;strong style=&quot;box-sizing: border-box; border-width: 0px; border-style: solid; border-color: rgb(229, 229, 229); font-weight: bold; text-align: left; line-height: 1.75; font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: inherit; color: rgb(0, 152, 116); visibility: visible;&quot; class=&quot;js_darkmode__16&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;这不是你不会写代码，是你还不知道 Lambda 可以把这个条件直接写在调用的地方。&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;&amp;nbsp;今天学完，这种&amp;quot;来回跳&amp;quot;的痛苦彻底消失。&lt;/span&gt;&lt;/p&gt;&lt;hr style=&quot;box-sizing: border-box; border-width: 2px 0px 0px; border-style: solid; border-color: rgba(0, 0, 0, 0.1); height: 0.4em; color: inherit; margin: 1.5em 0px; text-align: left; line-height: 1.75; font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 14px; transform-origin: 0px 0px; transform: scale(1, 0.5); visibility: visible;&quot; class=&quot;js_darkmode__17&quot;/&gt;&lt;h2 style=&quot;box-sizing: border-box; border-width: 0px; border-style: solid; border-color: rgb(229, 229, 229); font-size: 16.8px; font-weight: bold; margin: 4em auto 2em; text-align: center; line-height: 1.75; font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; display: table; padding: 0px 0.2em; color: rgb(255, 255, 255); background: rgb(0, 152, 116); visibility: visible;&quot; class=&quot;js_darkmode__18&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;📌 上节回顾&lt;/span&gt;&lt;/h2&gt;&lt;p style=&quot;box-sizing: border-box; border-width: 0px; border-style: solid; border-color: rgb(229, 229, 229); margin: 1.5em 8px; text-align: justify; line-height: 1.75; font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 14px; letter-spacing: 0.1em; color: rgb(63, 63, 63); visibility: visible;&quot; class=&quot;js_darkmode__19&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;「上一节我们学了&lt;/span&gt;&lt;strong style=&quot;box-sizing: border-box; border-width: 0px; border-style: solid; border-color: rgb(229, 229, 229); font-weight: bold; text-align: left; line-height: 1.75; font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: inherit; color: rgb(0, 152, 116); visibility: visible;&quot; class=&quot;js_darkmode__20&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;事件（Event）&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;，掌握了用&amp;nbsp;&lt;/span&gt;&lt;code style=&quot;box-sizing: border-box; border-width: 0px; border-style: solid; border-color: rgb(229, 229, 229); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-feature-settings: normal; font-variation-settings: normal; font-size: 12.6px; text-align: left; line-height: 1.75; color: rgb(221, 17, 68); background: rgba(27, 31, 35, 0.05); padding: 3px 5px; border-radius: 4px; visibility: visible;&quot; class=&quot;js_darkmode__21&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;event&lt;/span&gt;&lt;/code&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;&amp;nbsp;关键字构建安全的发布订阅模型、让订阅者动态增减互不干扰的方法。&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; border-width: 0px; border-style: solid; border-color: rgb(229, 229, 229); margin: 1.5em 8px; text-align: justify; line-height: 1.75; font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 14px; letter-spacing: 0.1em; color: rgb(63, 63, 63); visibility: visible;&quot; class=&quot;js_darkmode__22&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;今天在这个基础上，我们进一步学习&amp;nbsp;&lt;/span&gt;&lt;strong style=&quot;box-sizing: border-box; border-width: 0px; border-style: solid; border-color: rgb(229, 229, 229); font-weight: bold; text-align: left; line-height: 1.75; font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: inherit; color: rgb(0, 152, 116); visibility: visible;&quot; class=&quot;js_darkmode__23&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;Lambda 表达式&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;——一种把方法&amp;quot;内联&amp;quot;写在调用处的简洁语法，是&lt;span class=&quot;&quot;&gt;委托&lt;/span&gt;和事件的最佳搭档。」&lt;/span&gt;&lt;/p&gt;&lt;hr style=&quot;box-sizing: border-box; border-width: 2px 0px 0px; border-style: solid; border-color: rgba(0, 0, 0, 0.1); height: 0.4em; color: inherit; margin: 1.5em 0px; text-align: left; line-height: 1.75; font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 14px; transform-origin: 0px 0px; transform: scale(1, 0.5); visibility: visible;&quot; class=&quot;js_darkmode__24&quot;/&gt;&lt;h2 style=&quot;box-sizing: border-box; border-width: 0px; border-style: solid; border-color: rgb(229, 229, 229); font-size: 16.8px; font-weight: bold; margin: 4em auto 2em; text-align: center; line-height: 1.75; font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; display: table; padding: 0px 0.2em; color: rgb(255, 255, 255); background: rgb(0, 152, 116); visibility: visible;&quot; class=&quot;js_darkmode__25&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;💡 核心知识讲解&lt;/span&gt;&lt;/h2&gt;&lt;h3 style=&quot;box-sizing: border-box; border-width: 0px 0px 0px 3px; border-style: solid; border-color: rgb(229, 229, 229) rgb(229, 229, 229) rgb(229, 229, 229) rgb(0, 152, 116); font-size: 15.4px; font-weight: bold; margin: 2em 8px 0.75em 0px; text-align: left; line-height: 1.2; font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; padding-left: 8px; color: rgb(63, 63, 63); visibility: visible;&quot; class=&quot;js_darkmode__26&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;Lambda 是什么？用工厂&amp;quot;临时工单&amp;quot;理解&lt;/span&gt;&lt;/h3&gt;&lt;p style=&quot;box-sizing: border-box; border-width: 0px; border-style: solid; border-color: rgb(229, 229, 229); margin: 1.5em 8px; text-align: justify; line-height: 1.75; font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 14px; letter-spacing: 0.1em; color: rgb(63, 63, 63); visibility: visible;&quot; class=&quot;js_darkmode__27&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;工厂里有两种工单。&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; border-width: 0px; border-style: solid; border-color: rgb(229, 229, 229); margin: 1.5em 8px; text-align: justify; line-height: 1.75; font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 14px; letter-spacing: 0.1em; color: rgb(63, 63, 63); visibility: visible;&quot; class=&quot;js_darkmode__28&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;一种是&lt;/span&gt;&lt;strong style=&quot;box-sizing: border-box; border-width: 0px; border-style: solid; border-color: rgb(229, 229, 229); font-weight: bold; text-align: left; line-height: 1.75; font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: inherit; color: rgb(0, 152, 116); visibility: visible;&quot; class=&quot;js_darkmode__29&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;标准工单&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;：印好的固定格式，存档备查，反复使用。&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; border-width: 0px; border-style: solid; border-color: rgb(229, 229, 229); margin: 1.5em 8px; text-align: justify; line-height: 1.75; font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 14px; letter-spacing: 0.1em; color: rgb(63, 63, 63); visibility: visible;&quot; class=&quot;js_darkmode__30&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;另一种是&lt;/span&gt;&lt;strong style=&quot;box-sizing: border-box; border-width: 0px; border-style: solid; border-color: rgb(229, 229, 229); font-weight: bold; text-align: left; line-height: 1.75; font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: inherit; color: rgb(0, 152, 116); visibility: visible;&quot; class=&quot;js_darkmode__31&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;临时便条&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;：随手写在纸上，只用这一次，用完就扔。&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; border-width: 0px; border-style: solid; border-color: rgb(229, 229, 229); margin: 1.5em 8px; text-align: justify; line-height: 1.75; font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 14px; letter-spacing: 0.1em; color: rgb(63, 63, 63); visibility: visible;&quot; class=&quot;js_darkmode__32&quot;&gt;&lt;strong style=&quot;box-sizing: border-box; border-width: 0px; border-style: solid; border-color: rgb(229, 229, 229); font-weight: bold; text-align: left; line-height: 1.75; font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: inherit; color: rgb(0, 152, 116); visibility: visible;&quot; class=&quot;js_darkmode__33&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;&lt;span class=&quot;&quot;&gt;Lambda 表达式&lt;/span&gt;就是&amp;quot;临时便条&amp;quot;。&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; border-width: 0px; border-style: solid; border-color: rgb(229, 229, 229); margin: 1.5em 8px; text-align: justify; line-height: 1.75; font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 14px; letter-spacing: 0.1em; color: rgb(63, 63, 63); visibility: visible;&quot; class=&quot;js_darkmode__34&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;当你的方法逻辑只用一次、只有一两行，没必要单独定义一个具名方法——用 Lambda 直接写在调用处，干净利落。&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; border-width: 0px; border-style: solid; border-color: rgb(229, 229, 229); margin: 1.5em 8px; text-align: justify; line-height: 1.75; font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 14px; letter-spacing: 0.1em; color: rgb(63, 63, 63); visibility: visible;&quot; class=&quot;js_darkmode__35&quot;&gt;&lt;span style=&quot;visibility: visible;&quot;&gt;「Lambda 的本质：一个没有名字的方法，写在需要它的地方，用完即走。」&lt;/span&gt;&lt;/p&gt;&lt;hr style=&quot;box-sizing: border-box;border-width: 2px 0px 0px;border-style: solid;border-color: rgba(0, 0, 0, 0.1);height: 0.4em;color: inherit;margin: 1.5em 0px;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;transform-origin: 0px 0px;transform: scale(1, 0.5);&quot; class=&quot;js_darkmode__36&quot;/&gt;&lt;h3 style=&quot;box-sizing: border-box;border-width: 0px 0px 0px 3px;border-style: solid;border-color: rgb(229, 229, 229) rgb(229, 229, 229) rgb(229, 229, 229) rgb(0, 152, 116);font-size: 15.4px;font-weight: bold;margin: 2em 8px 0.75em 0px;text-align: left;line-height: 1.2;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;padding-left: 8px;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__37&quot;&gt;Lambda 的语法：认识这个箭头 =&amp;gt;&lt;/h3&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__38&quot;&gt;Lambda 表达式的核心符号是 =&amp;gt;，读作&amp;quot;goes to&amp;quot;（映射为）。&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__39&quot;&gt;基本格式：&lt;/p&gt;&lt;pre style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 14px;margin: 10px 8px;color: rgb(201, 209, 217);background: rgb(13, 17, 23);text-align: left;line-height: 1.5;overflow-x: auto;border-radius: 8px;padding: 0px !important;&quot; class=&quot;js_darkmode__40&quot;&gt;(参数列表)&amp;nbsp;=&amp;gt;&amp;nbsp;表达式或语句块&lt;/pre&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__43&quot;&gt;三种常见写法，从简到繁：&lt;/p&gt;&lt;pre style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 14px;margin: 10px 8px;color: rgb(201, 209, 217);background: rgb(13, 17, 23);text-align: left;line-height: 1.5;overflow-x: auto;border-radius: 8px;padding: 0px !important;&quot; class=&quot;js_darkmode__44&quot;&gt;&lt;span hidden=&quot;&quot; style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;display: flex;padding: 10px 14px 0px;&quot; class=&quot;js_darkmode__45&quot;&gt;&lt;svg x=&quot;0px&quot; y=&quot;0px&quot; width=&quot;45px&quot; height=&quot;13px&quot; viewbox=&quot;0 0 450 130&quot; aria-label=&quot;插图&quot;&gt;&lt;ellipse cx=&quot;50&quot; cy=&quot;65&quot; rx=&quot;50&quot; ry=&quot;52&quot; stroke=&quot;rgb(220,60,54)&quot; stroke-width=&quot;2&quot; fill=&quot;rgb(237,108,96)&quot;&gt;&lt;/ellipse&gt;&lt;ellipse cx=&quot;225&quot; cy=&quot;65&quot; rx=&quot;50&quot; ry=&quot;52&quot; stroke=&quot;rgb(218,151,33)&quot; stroke-width=&quot;2&quot; fill=&quot;rgb(247,193,81)&quot;&gt;&lt;/ellipse&gt;&lt;ellipse cx=&quot;400&quot; cy=&quot;65&quot; rx=&quot;50&quot; ry=&quot;52&quot; stroke=&quot;rgb(27,161,37)&quot; stroke-width=&quot;2&quot; fill=&quot;rgb(100,200,86)&quot;&gt;&lt;/ellipse&gt;&lt;/svg&gt;&lt;/span&gt;&lt;code style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: Menlo, &amp;quot;Operator Mono&amp;quot;, Consolas, Monaco, monospace;font-feature-settings: normal;font-variation-settings: normal;font-size: 14px;display: -webkit-box;padding: 0.5em 1em 1em;overflow-x: auto;text-indent: 0px;text-align: left;line-height: 1.75;margin: 0px;white-space: nowrap;&quot; class=&quot;js_darkmode__46&quot;&gt;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #8B949E;&quot; class=&quot;js_darkmode__47&quot;&gt;// 写法1：单参数，单行表达式，省略括号和 return&lt;/span&gt;&lt;br/&gt;x =&amp;gt; x &amp;gt;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #79C0FF;&quot; class=&quot;js_darkmode__48&quot;&gt;85f&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #8B949E;&quot; class=&quot;js_darkmode__49&quot;&gt;// 写法2：多参数，单行表达式&lt;/span&gt;&lt;br/&gt;(name, temp) =&amp;gt;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #A5D6FF;&quot; class=&quot;js_darkmode__50&quot;&gt;$&amp;quot;[&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #C9D1D9;&quot; class=&quot;js_darkmode__51&quot;&gt;{name}&lt;/span&gt;] 温度：&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #C9D1D9;&quot; class=&quot;js_darkmode__52&quot;&gt;{temp}&lt;/span&gt;℃&amp;quot;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #8B949E;&quot; class=&quot;js_darkmode__53&quot;&gt;// 写法3：多行逻辑，用花括号包裹，需要显式 return&lt;/span&gt;&lt;br/&gt;(name, temp) =&amp;gt;&lt;br/&gt;{&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FFA657;&quot; class=&quot;js_darkmode__54&quot;&gt;string&lt;/span&gt;&amp;nbsp;status = temp &amp;gt;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #79C0FF;&quot; class=&quot;js_darkmode__55&quot;&gt;85f&lt;/span&gt;&amp;nbsp;?&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #A5D6FF;&quot; class=&quot;js_darkmode__56&quot;&gt;&amp;quot;超限&amp;quot;&lt;/span&gt;&amp;nbsp;:&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #A5D6FF;&quot; class=&quot;js_darkmode__57&quot;&gt;&amp;quot;正常&amp;quot;&lt;/span&gt;;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__58&quot;&gt;return&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #A5D6FF;&quot; class=&quot;js_darkmode__59&quot;&gt;$&amp;quot;[&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #C9D1D9;&quot; class=&quot;js_darkmode__60&quot;&gt;{name}&lt;/span&gt;]&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #C9D1D9;&quot; class=&quot;js_darkmode__61&quot;&gt;{status}&lt;/span&gt;&amp;quot;&lt;/span&gt;;&lt;br/&gt;}&lt;/code&gt;&lt;/pre&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__62&quot;&gt;「记住一个口诀：&lt;strong style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: inherit;color: rgb(0, 152, 116);&quot; class=&quot;js_darkmode__63&quot;&gt;左边是参数，右边是逻辑，中间是箭头。&lt;/strong&gt;&amp;nbsp;参数只有一个时可以省括号，逻辑只有一行时可以省花括号和 return。」&lt;/p&gt;&lt;hr style=&quot;box-sizing: border-box;border-width: 2px 0px 0px;border-style: solid;border-color: rgba(0, 0, 0, 0.1);height: 0.4em;color: inherit;margin: 1.5em 0px;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;transform-origin: 0px 0px;transform: scale(1, 0.5);&quot; class=&quot;js_darkmode__64&quot;/&gt;&lt;h3 style=&quot;box-sizing: border-box;border-width: 0px 0px 0px 3px;border-style: solid;border-color: rgb(229, 229, 229) rgb(229, 229, 229) rgb(229, 229, 229) rgb(0, 152, 116);font-size: 15.4px;font-weight: bold;margin: 2em 8px 0.75em 0px;text-align: left;line-height: 1.2;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;padding-left: 8px;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__65&quot;&gt;Lambda 替代具名方法：对比看效果&lt;/h3&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__66&quot;&gt;还是注塑车间的温度筛选需求。&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__67&quot;&gt;&lt;strong style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: inherit;color: rgb(0, 152, 116);&quot; class=&quot;js_darkmode__68&quot;&gt;传统写法：&lt;/strong&gt;&amp;nbsp;单独定义一个方法，跳来跳去&lt;/p&gt;&lt;pre style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 14px;margin: 10px 8px;color: rgb(201, 209, 217);background: rgb(13, 17, 23);text-align: left;line-height: 1.5;overflow-x: auto;border-radius: 8px;padding: 0px !important;&quot; class=&quot;js_darkmode__69&quot;&gt;&lt;span hidden=&quot;&quot; style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;display: flex;padding: 10px 14px 0px;&quot; class=&quot;js_darkmode__70&quot;&gt;&lt;svg x=&quot;0px&quot; y=&quot;0px&quot; width=&quot;45px&quot; height=&quot;13px&quot; viewbox=&quot;0 0 450 130&quot; aria-label=&quot;插图&quot;&gt;&lt;ellipse cx=&quot;50&quot; cy=&quot;65&quot; rx=&quot;50&quot; ry=&quot;52&quot; stroke=&quot;rgb(220,60,54)&quot; stroke-width=&quot;2&quot; fill=&quot;rgb(237,108,96)&quot;&gt;&lt;/ellipse&gt;&lt;ellipse cx=&quot;225&quot; cy=&quot;65&quot; rx=&quot;50&quot; ry=&quot;52&quot; stroke=&quot;rgb(218,151,33)&quot; stroke-width=&quot;2&quot; fill=&quot;rgb(247,193,81)&quot;&gt;&lt;/ellipse&gt;&lt;ellipse cx=&quot;400&quot; cy=&quot;65&quot; rx=&quot;50&quot; ry=&quot;52&quot; stroke=&quot;rgb(27,161,37)&quot; stroke-width=&quot;2&quot; fill=&quot;rgb(100,200,86)&quot;&gt;&lt;/ellipse&gt;&lt;/svg&gt;&lt;/span&gt;&lt;code style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: Menlo, &amp;quot;Operator Mono&amp;quot;, Consolas, Monaco, monospace;font-feature-settings: normal;font-variation-settings: normal;font-size: 14px;display: -webkit-box;padding: 0.5em 1em 1em;overflow-x: auto;text-indent: 0px;text-align: left;line-height: 1.75;margin: 0px;white-space: nowrap;&quot; class=&quot;js_darkmode__71&quot;&gt;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #8B949E;&quot; class=&quot;js_darkmode__72&quot;&gt;// 传统写法：需要单独定义方法&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;&quot; class=&quot;js_darkmode__73&quot;&gt;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__74&quot;&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FFA657;&quot; class=&quot;js_darkmode__75&quot;&gt;bool&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #D2A8FF;&quot; class=&quot;js_darkmode__76&quot;&gt;IsHighTemp&lt;/span&gt;(&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;&quot; class=&quot;js_darkmode__77&quot;&gt;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FFA657;&quot; class=&quot;js_darkmode__78&quot;&gt;float&lt;/span&gt;&amp;nbsp;temp&lt;/span&gt;)&lt;/span&gt;&amp;nbsp;=&amp;gt; temp &amp;gt;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #79C0FF;&quot; class=&quot;js_darkmode__79&quot;&gt;85f&lt;/span&gt;;&lt;br/&gt;&lt;br/&gt;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__80&quot;&gt;var&lt;/span&gt;&amp;nbsp;highTempList = sensorData.Where(IsHighTemp).ToList();&lt;/code&gt;&lt;/pre&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__81&quot;&gt;&lt;strong style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: inherit;color: rgb(0, 152, 116);&quot; class=&quot;js_darkmode__82&quot;&gt;Lambda 写法：&lt;/strong&gt;&amp;nbsp;条件直接写在调用处&lt;/p&gt;&lt;pre style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 14px;margin: 10px 8px;color: rgb(201, 209, 217);background: rgb(13, 17, 23);text-align: left;line-height: 1.5;overflow-x: auto;border-radius: 8px;padding: 0px !important;&quot; class=&quot;js_darkmode__83&quot;&gt;&lt;span hidden=&quot;&quot; style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;display: flex;padding: 10px 14px 0px;&quot; class=&quot;js_darkmode__84&quot;&gt;&lt;svg x=&quot;0px&quot; y=&quot;0px&quot; width=&quot;45px&quot; height=&quot;13px&quot; viewbox=&quot;0 0 450 130&quot; aria-label=&quot;插图&quot;&gt;&lt;ellipse cx=&quot;50&quot; cy=&quot;65&quot; rx=&quot;50&quot; ry=&quot;52&quot; stroke=&quot;rgb(220,60,54)&quot; stroke-width=&quot;2&quot; fill=&quot;rgb(237,108,96)&quot;&gt;&lt;/ellipse&gt;&lt;ellipse cx=&quot;225&quot; cy=&quot;65&quot; rx=&quot;50&quot; ry=&quot;52&quot; stroke=&quot;rgb(218,151,33)&quot; stroke-width=&quot;2&quot; fill=&quot;rgb(247,193,81)&quot;&gt;&lt;/ellipse&gt;&lt;ellipse cx=&quot;400&quot; cy=&quot;65&quot; rx=&quot;50&quot; ry=&quot;52&quot; stroke=&quot;rgb(27,161,37)&quot; stroke-width=&quot;2&quot; fill=&quot;rgb(100,200,86)&quot;&gt;&lt;/ellipse&gt;&lt;/svg&gt;&lt;/span&gt;&lt;code style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: Menlo, &amp;quot;Operator Mono&amp;quot;, Consolas, Monaco, monospace;font-feature-settings: normal;font-variation-settings: normal;font-size: 14px;display: -webkit-box;padding: 0.5em 1em 1em;overflow-x: auto;text-indent: 0px;text-align: left;line-height: 1.75;margin: 0px;white-space: nowrap;&quot; class=&quot;js_darkmode__85&quot;&gt;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #8B949E;&quot; class=&quot;js_darkmode__86&quot;&gt;// Lambda 写法：逻辑就在眼前，不用跳转&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__87&quot;&gt;var&lt;/span&gt;&amp;nbsp;highTempList = sensorData.Where(t =&amp;gt; t &amp;gt;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #79C0FF;&quot; class=&quot;js_darkmode__88&quot;&gt;85f&lt;/span&gt;).ToList();&lt;/code&gt;&lt;/pre&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__89&quot;&gt;两种写法结果完全相同。Lambda 写法的优势：&lt;strong style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: inherit;color: rgb(0, 152, 116);&quot; class=&quot;js_darkmode__90&quot;&gt;阅读时眼睛不需要离开这一行&lt;/strong&gt;，逻辑一目了然。&lt;/p&gt;&lt;section style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);padding: 0px 8px;max-width: 100%;overflow: auto;&quot; class=&quot;js_darkmode__91&quot;&gt;&lt;table&gt;&lt;thead&gt;&lt;tr style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);&quot; class=&quot;js_darkmode__92 firstRow&quot;&gt;&lt;td style=&quot;box-sizing: border-box;border: 1px solid rgb(223, 223, 223);text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;padding: 0.25em 0.5em;color: rgb(63, 63, 63);word-break: keep-all;&quot; class=&quot;js_darkmode__93&quot;&gt;&lt;section&gt;对比项&lt;/section&gt;&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box;border: 1px solid rgb(223, 223, 223);text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;padding: 0.25em 0.5em;color: rgb(63, 63, 63);word-break: keep-all;&quot; class=&quot;js_darkmode__94&quot;&gt;&lt;section&gt;具名方法&lt;/section&gt;&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box;border: 1px solid rgb(223, 223, 223);text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;padding: 0.25em 0.5em;color: rgb(63, 63, 63);word-break: keep-all;&quot; class=&quot;js_darkmode__95&quot;&gt;&lt;section&gt;Lambda 表达式&lt;/section&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);&quot; class=&quot;js_darkmode__96&quot;&gt;&lt;td style=&quot;box-sizing: border-box;border: 1px solid rgb(223, 223, 223);text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;padding: 0.25em 0.5em;color: rgb(63, 63, 63);word-break: keep-all;&quot; class=&quot;js_darkmode__97&quot;&gt;&lt;section&gt;代码位置&lt;/section&gt;&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box;border: 1px solid rgb(223, 223, 223);text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;padding: 0.25em 0.5em;color: rgb(63, 63, 63);word-break: keep-all;&quot; class=&quot;js_darkmode__98&quot;&gt;&lt;section&gt;单独定义，跳转查看&lt;/section&gt;&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box;border: 1px solid rgb(223, 223, 223);text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;padding: 0.25em 0.5em;color: rgb(63, 63, 63);word-break: keep-all;&quot; class=&quot;js_darkmode__99&quot;&gt;&lt;section&gt;直接内联，就在调用处&lt;/section&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);&quot; class=&quot;js_darkmode__100&quot;&gt;&lt;td style=&quot;box-sizing: border-box;border: 1px solid rgb(223, 223, 223);text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;padding: 0.25em 0.5em;color: rgb(63, 63, 63);word-break: keep-all;&quot; class=&quot;js_darkmode__101&quot;&gt;&lt;section&gt;适合场景&lt;/section&gt;&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box;border: 1px solid rgb(223, 223, 223);text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;padding: 0.25em 0.5em;color: rgb(63, 63, 63);word-break: keep-all;&quot; class=&quot;js_darkmode__102&quot;&gt;&lt;section&gt;复用多次、逻辑复杂&lt;/section&gt;&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box;border: 1px solid rgb(223, 223, 223);text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;padding: 0.25em 0.5em;color: rgb(63, 63, 63);word-break: keep-all;&quot; class=&quot;js_darkmode__103&quot;&gt;&lt;section&gt;只用一次、逻辑简单&lt;/section&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);&quot; class=&quot;js_darkmode__104&quot;&gt;&lt;td style=&quot;box-sizing: border-box;border: 1px solid rgb(223, 223, 223);text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;padding: 0.25em 0.5em;color: rgb(63, 63, 63);word-break: keep-all;&quot; class=&quot;js_darkmode__105&quot;&gt;&lt;section&gt;可读性&lt;/section&gt;&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box;border: 1px solid rgb(223, 223, 223);text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;padding: 0.25em 0.5em;color: rgb(63, 63, 63);word-break: keep-all;&quot; class=&quot;js_darkmode__106&quot;&gt;&lt;section&gt;需要跳转理解&lt;/section&gt;&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box;border: 1px solid rgb(223, 223, 223);text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;padding: 0.25em 0.5em;color: rgb(63, 63, 63);word-break: keep-all;&quot; class=&quot;js_darkmode__107&quot;&gt;&lt;section&gt;上下文连贯，直观&lt;/section&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/section&gt;&lt;hr style=&quot;box-sizing: border-box;border-width: 2px 0px 0px;border-style: solid;border-color: rgba(0, 0, 0, 0.1);height: 0.4em;color: inherit;margin: 1.5em 0px;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;transform-origin: 0px 0px;transform: scale(1, 0.5);&quot; class=&quot;js_darkmode__108&quot;/&gt;&lt;h3 style=&quot;box-sizing: border-box;border-width: 0px 0px 0px 3px;border-style: solid;border-color: rgb(229, 229, 229) rgb(229, 229, 229) rgb(229, 229, 229) rgb(0, 152, 116);font-size: 15.4px;font-weight: bold;margin: 2em 8px 0.75em 0px;text-align: left;line-height: 1.2;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;padding-left: 8px;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__109&quot;&gt;Lambda 与委托/事件的结合&lt;/h3&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__110&quot;&gt;上一节订阅事件时，你写过这种代码：&lt;/p&gt;&lt;pre style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 14px;margin: 10px 8px;color: rgb(201, 209, 217);background: rgb(13, 17, 23);text-align: left;line-height: 1.5;overflow-x: auto;border-radius: 8px;padding: 0px !important;&quot; class=&quot;js_darkmode__111&quot;&gt;&lt;span hidden=&quot;&quot; style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;display: flex;padding: 10px 14px 0px;&quot; class=&quot;js_darkmode__112&quot;&gt;&lt;svg x=&quot;0px&quot; y=&quot;0px&quot; width=&quot;45px&quot; height=&quot;13px&quot; viewbox=&quot;0 0 450 130&quot; aria-label=&quot;插图&quot;&gt;&lt;ellipse cx=&quot;50&quot; cy=&quot;65&quot; rx=&quot;50&quot; ry=&quot;52&quot; stroke=&quot;rgb(220,60,54)&quot; stroke-width=&quot;2&quot; fill=&quot;rgb(237,108,96)&quot;&gt;&lt;/ellipse&gt;&lt;ellipse cx=&quot;225&quot; cy=&quot;65&quot; rx=&quot;50&quot; ry=&quot;52&quot; stroke=&quot;rgb(218,151,33)&quot; stroke-width=&quot;2&quot; fill=&quot;rgb(247,193,81)&quot;&gt;&lt;/ellipse&gt;&lt;ellipse cx=&quot;400&quot; cy=&quot;65&quot; rx=&quot;50&quot; ry=&quot;52&quot; stroke=&quot;rgb(27,161,37)&quot; stroke-width=&quot;2&quot; fill=&quot;rgb(100,200,86)&quot;&gt;&lt;/ellipse&gt;&lt;/svg&gt;&lt;/span&gt;&lt;code style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: Menlo, &amp;quot;Operator Mono&amp;quot;, Consolas, Monaco, monospace;font-feature-settings: normal;font-variation-settings: normal;font-size: 14px;display: -webkit-box;padding: 0.5em 1em 1em;overflow-x: auto;text-indent: 0px;text-align: left;line-height: 1.75;margin: 0px;white-space: nowrap;&quot; class=&quot;js_darkmode__113&quot;&gt;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #8B949E;&quot; class=&quot;js_darkmode__114&quot;&gt;// 具名方法订阅&lt;/span&gt;&lt;br/&gt;robot.OnWorkCompleted += ConveyorBelt_Start;&lt;/code&gt;&lt;/pre&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__115&quot;&gt;用 Lambda 可以直接内联：&lt;/p&gt;&lt;pre style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 14px;margin: 10px 8px;color: rgb(201, 209, 217);background: rgb(13, 17, 23);text-align: left;line-height: 1.5;overflow-x: auto;border-radius: 8px;padding: 0px !important;&quot; class=&quot;js_darkmode__116&quot;&gt;&lt;span hidden=&quot;&quot; style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;display: flex;padding: 10px 14px 0px;&quot; class=&quot;js_darkmode__117&quot;&gt;&lt;svg x=&quot;0px&quot; y=&quot;0px&quot; width=&quot;45px&quot; height=&quot;13px&quot; viewbox=&quot;0 0 450 130&quot; aria-label=&quot;插图&quot;&gt;&lt;ellipse cx=&quot;50&quot; cy=&quot;65&quot; rx=&quot;50&quot; ry=&quot;52&quot; stroke=&quot;rgb(220,60,54)&quot; stroke-width=&quot;2&quot; fill=&quot;rgb(237,108,96)&quot;&gt;&lt;/ellipse&gt;&lt;ellipse cx=&quot;225&quot; cy=&quot;65&quot; rx=&quot;50&quot; ry=&quot;52&quot; stroke=&quot;rgb(218,151,33)&quot; stroke-width=&quot;2&quot; fill=&quot;rgb(247,193,81)&quot;&gt;&lt;/ellipse&gt;&lt;ellipse cx=&quot;400&quot; cy=&quot;65&quot; rx=&quot;50&quot; ry=&quot;52&quot; stroke=&quot;rgb(27,161,37)&quot; stroke-width=&quot;2&quot; fill=&quot;rgb(100,200,86)&quot;&gt;&lt;/ellipse&gt;&lt;/svg&gt;&lt;/span&gt;&lt;code style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: Menlo, &amp;quot;Operator Mono&amp;quot;, Consolas, Monaco, monospace;font-feature-settings: normal;font-variation-settings: normal;font-size: 14px;display: -webkit-box;padding: 0.5em 1em 1em;overflow-x: auto;text-indent: 0px;text-align: left;line-height: 1.75;margin: 0px;white-space: nowrap;&quot; class=&quot;js_darkmode__118&quot;&gt;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #8B949E;&quot; class=&quot;js_darkmode__119&quot;&gt;// Lambda 订阅：逻辑直接写在这里&lt;/span&gt;&lt;br/&gt;robot.OnWorkCompleted += (sender, e) =&amp;gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; Console.WriteLine(&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #A5D6FF;&quot; class=&quot;js_darkmode__120&quot;&gt;$&amp;quot;[传送带] 工位&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #C9D1D9;&quot; class=&quot;js_darkmode__121&quot;&gt;{e.StationId}&lt;/span&gt;&amp;nbsp;完成，传送带启动&amp;quot;&lt;/span&gt;);&lt;/code&gt;&lt;/pre&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__122&quot;&gt;&lt;strong style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: inherit;color: rgb(0, 152, 116);&quot; class=&quot;js_darkmode__123&quot;&gt;注意：&lt;/strong&gt;&amp;nbsp;如果你之后需要用&amp;nbsp;&lt;code style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;&quot; class=&quot;js_darkmode__124&quot;&gt;-=&lt;/code&gt;&amp;nbsp;退订，Lambda 写法会有麻烦（上节避坑提过）。只用一次、不需要退订的场景，Lambda 订阅非常合适。需要退订的，还是用具名方法。&lt;/p&gt;&lt;hr style=&quot;box-sizing: border-box;border-width: 2px 0px 0px;border-style: solid;border-color: rgba(0, 0, 0, 0.1);height: 0.4em;color: inherit;margin: 1.5em 0px;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;transform-origin: 0px 0px;transform: scale(1, 0.5);&quot; class=&quot;js_darkmode__125&quot;/&gt;&lt;h3 style=&quot;box-sizing: border-box;border-width: 0px 0px 0px 3px;border-style: solid;border-color: rgb(229, 229, 229) rgb(229, 229, 229) rgb(229, 229, 229) rgb(0, 152, 116);font-size: 15.4px;font-weight: bold;margin: 2em 8px 0.75em 0px;text-align: left;line-height: 1.2;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;padding-left: 8px;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__126&quot;&gt;Lambda 在工业数据处理中的高频用法&lt;/h3&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__127&quot;&gt;Lambda 和 LINQ（语言集成查询，C# 内置的数据查询语法）是绝配。&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__128&quot;&gt;工厂里最常见的几种数据操作，Lambda 一行搞定：&lt;/p&gt;&lt;pre style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 14px;margin: 10px 8px;color: rgb(201, 209, 217);background: rgb(13, 17, 23);text-align: left;line-height: 1.5;overflow-x: auto;border-radius: 8px;padding: 0px !important;&quot; class=&quot;js_darkmode__129&quot;&gt;&lt;span hidden=&quot;&quot; style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;display: flex;padding: 10px 14px 0px;&quot; class=&quot;js_darkmode__130&quot;&gt;&lt;svg x=&quot;0px&quot; y=&quot;0px&quot; width=&quot;45px&quot; height=&quot;13px&quot; viewbox=&quot;0 0 450 130&quot; aria-label=&quot;插图&quot;&gt;&lt;ellipse cx=&quot;50&quot; cy=&quot;65&quot; rx=&quot;50&quot; ry=&quot;52&quot; stroke=&quot;rgb(220,60,54)&quot; stroke-width=&quot;2&quot; fill=&quot;rgb(237,108,96)&quot;&gt;&lt;/ellipse&gt;&lt;ellipse cx=&quot;225&quot; cy=&quot;65&quot; rx=&quot;50&quot; ry=&quot;52&quot; stroke=&quot;rgb(218,151,33)&quot; stroke-width=&quot;2&quot; fill=&quot;rgb(247,193,81)&quot;&gt;&lt;/ellipse&gt;&lt;ellipse cx=&quot;400&quot; cy=&quot;65&quot; rx=&quot;50&quot; ry=&quot;52&quot; stroke=&quot;rgb(27,161,37)&quot; stroke-width=&quot;2&quot; fill=&quot;rgb(100,200,86)&quot;&gt;&lt;/ellipse&gt;&lt;/svg&gt;&lt;/span&gt;&lt;code style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: Menlo, &amp;quot;Operator Mono&amp;quot;, Consolas, Monaco, monospace;font-feature-settings: normal;font-variation-settings: normal;font-size: 14px;display: -webkit-box;padding: 0.5em 1em 1em;overflow-x: auto;text-indent: 0px;text-align: left;line-height: 1.75;margin: 0px;white-space: nowrap;&quot; class=&quot;js_darkmode__131&quot;&gt;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__132&quot;&gt;var&lt;/span&gt;&amp;nbsp;sensorReadings =&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__133&quot;&gt;new&lt;/span&gt;&amp;nbsp;List&amp;lt;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FFA657;&quot; class=&quot;js_darkmode__134&quot;&gt;float&lt;/span&gt;&amp;gt; {&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #79C0FF;&quot; class=&quot;js_darkmode__135&quot;&gt;72.3f&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #79C0FF;&quot; class=&quot;js_darkmode__136&quot;&gt;88.1f&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #79C0FF;&quot; class=&quot;js_darkmode__137&quot;&gt;65.0f&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #79C0FF;&quot; class=&quot;js_darkmode__138&quot;&gt;91.5f&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #79C0FF;&quot; class=&quot;js_darkmode__139&quot;&gt;79.8f&lt;/span&gt;&amp;nbsp;};&lt;br/&gt;&lt;br/&gt;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #8B949E;&quot; class=&quot;js_darkmode__140&quot;&gt;// 筛选：温度超过 85℃ 的记录&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__141&quot;&gt;var&lt;/span&gt;&amp;nbsp;alarmList = sensorReadings.Where(t =&amp;gt; t &amp;gt;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #79C0FF;&quot; class=&quot;js_darkmode__142&quot;&gt;85f&lt;/span&gt;);&lt;br/&gt;&lt;br/&gt;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #8B949E;&quot; class=&quot;js_darkmode__143&quot;&gt;// 转换：所有读数转换为&amp;quot;是否报警&amp;quot;的布尔值&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__144&quot;&gt;var&lt;/span&gt;&amp;nbsp;alarmFlags = sensorReadings.Select(t =&amp;gt; t &amp;gt;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #79C0FF;&quot; class=&quot;js_darkmode__145&quot;&gt;85f&lt;/span&gt;);&lt;br/&gt;&lt;br/&gt;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #8B949E;&quot; class=&quot;js_darkmode__146&quot;&gt;// 排序：按温度从高到低&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__147&quot;&gt;var&lt;/span&gt;&amp;nbsp;sorted = sensorReadings.OrderByDescending(t =&amp;gt; t);&lt;br/&gt;&lt;br/&gt;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #8B949E;&quot; class=&quot;js_darkmode__148&quot;&gt;// 统计：超限次数&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FFA657;&quot; class=&quot;js_darkmode__149&quot;&gt;int&lt;/span&gt;&amp;nbsp;alarmCount = sensorReadings.Count(t =&amp;gt; t &amp;gt;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #79C0FF;&quot; class=&quot;js_darkmode__150&quot;&gt;85f&lt;/span&gt;);&lt;/code&gt;&lt;/pre&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__151&quot;&gt;「Lambda + LINQ 是工业数据处理的标配组合，后面章节会深入讲 LINQ，这里先记住语法形式。」&lt;/p&gt;&lt;hr style=&quot;box-sizing: border-box;border-width: 2px 0px 0px;border-style: solid;border-color: rgba(0, 0, 0, 0.1);height: 0.4em;color: inherit;margin: 1.5em 0px;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;transform-origin: 0px 0px;transform: scale(1, 0.5);&quot; class=&quot;js_darkmode__152&quot;/&gt;&lt;h2 style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-size: 16.8px;font-weight: bold;margin: 4em auto 2em;text-align: center;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;display: table;padding: 0px 0.2em;color: rgb(255, 255, 255);background: rgb(0, 152, 116);&quot; class=&quot;js_darkmode__153&quot;&gt;💻 VS2026 操作步骤&lt;/h2&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__154&quot;&gt;&lt;strong style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: inherit;color: rgb(0, 152, 116);&quot; class=&quot;js_darkmode__155&quot;&gt;Step 1&lt;/strong&gt;&amp;nbsp;新建项目&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__156&quot;&gt;打开 VS2026，选择&amp;nbsp;&lt;code style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;&quot; class=&quot;js_darkmode__157&quot;&gt;文件 &amp;gt; 新建 &amp;gt; 项目&lt;/code&gt;，搜索&amp;quot;控制台应用&amp;quot;，选择&amp;nbsp;&lt;strong style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: inherit;color: rgb(0, 152, 116);&quot; class=&quot;js_darkmode__158&quot;&gt;.NET 10&lt;/strong&gt;&amp;nbsp;框架，项目名填&amp;nbsp;&lt;code style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;&quot; class=&quot;js_darkmode__159&quot;&gt;LambdaDemo&lt;/code&gt;，点击创建。&lt;/p&gt;&lt;blockquote style=&quot;box-sizing: border-box;border-width: 0px 0px 0px 4px;border-style: solid;border-color: rgb(229, 229, 229) rgb(229, 229, 229) rgb(229, 229, 229) rgb(0, 152, 116);margin: 0px;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;font-style: normal;padding: 1em;border-radius: 6px;color: rgba(0, 0, 0, 0.5);background: rgb(247, 247, 247);&quot; class=&quot;js_darkmode__160&quot;&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 0px;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 1em;display: block;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__161&quot;&gt;&lt;strong style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: inherit;color: rgb(0, 152, 116);&quot; class=&quot;js_darkmode__162&quot;&gt;Copilot 辅助：&lt;/strong&gt;&amp;nbsp;在&amp;nbsp;&lt;code style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;&quot; class=&quot;js_darkmode__163&quot;&gt;Program.cs&lt;/code&gt;&amp;nbsp;中按&amp;nbsp;&lt;code style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;&quot; class=&quot;js_darkmode__164&quot;&gt;Alt + /&lt;/code&gt;，输入注释&amp;nbsp;&lt;code style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;&quot; class=&quot;js_darkmode__165&quot;&gt;// 用 Lambda 表达式筛选注塑车间传感器超限数据&lt;/code&gt;，Copilot 会自动生成包含模拟数据列表和 Lambda 筛选调用的示例代码框架，直接在此基础上修改即可。&lt;/p&gt;&lt;/blockquote&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__166&quot;&gt;&lt;strong style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: inherit;color: rgb(0, 152, 116);&quot; class=&quot;js_darkmode__167&quot;&gt;Step 2&lt;/strong&gt;&amp;nbsp;体验 Lambda 自动补全&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__168&quot;&gt;在代码中输入&amp;nbsp;&lt;code style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;&quot; class=&quot;js_darkmode__169&quot;&gt;.Where(&lt;/code&gt;，VS2026 IntelliSense 会弹出参数提示，显示需要一个&amp;nbsp;&lt;code style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;&quot; class=&quot;js_darkmode__170&quot;&gt;Func&amp;lt;float, bool&amp;gt;&lt;/code&gt;&amp;nbsp;类型的参数。&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__171&quot;&gt;继续输入&amp;nbsp;&lt;code style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;&quot; class=&quot;js_darkmode__172&quot;&gt;t =&amp;gt;&lt;/code&gt;，Copilot 会根据上下文自动推断&amp;nbsp;&lt;code style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;&quot; class=&quot;js_darkmode__173&quot;&gt;t&lt;/code&gt;&amp;nbsp;的类型为&amp;nbsp;&lt;code style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;&quot; class=&quot;js_darkmode__174&quot;&gt;float&lt;/code&gt;，并提示可能的判断条件，按&amp;nbsp;&lt;code style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;&quot; class=&quot;js_darkmode__175&quot;&gt;Tab&lt;/code&gt;&amp;nbsp;接受建议。&lt;/p&gt;&lt;blockquote style=&quot;box-sizing: border-box;border-width: 0px 0px 0px 4px;border-style: solid;border-color: rgb(229, 229, 229) rgb(229, 229, 229) rgb(229, 229, 229) rgb(0, 152, 116);margin: 0px;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;font-style: normal;padding: 1em;border-radius: 6px;color: rgba(0, 0, 0, 0.5);background: rgb(247, 247, 247);&quot; class=&quot;js_darkmode__176&quot;&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 0px;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 1em;display: block;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__177&quot;&gt;&lt;strong style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: inherit;color: rgb(0, 152, 116);&quot; class=&quot;js_darkmode__178&quot;&gt;Copilot 辅助：&lt;/strong&gt;&amp;nbsp;输入&amp;nbsp;&lt;code style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;&quot; class=&quot;js_darkmode__179&quot;&gt;t =&amp;gt; t &amp;gt;&lt;/code&gt;&amp;nbsp;后停顿一秒，Copilot 会根据变量名（如&amp;nbsp;&lt;code style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;&quot; class=&quot;js_darkmode__180&quot;&gt;alarmThreshold&lt;/code&gt;）自动补全完整的比较表达式，无需手动输入阈值变量名。&lt;/p&gt;&lt;/blockquote&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__181&quot;&gt;&lt;strong style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: inherit;color: rgb(0, 152, 116);&quot; class=&quot;js_darkmode__182&quot;&gt;Step 3&lt;/strong&gt;&amp;nbsp;对比具名方法与 Lambda&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__183&quot;&gt;在同一个文件中，先用具名方法写一遍筛选逻辑，再用 Lambda 改写同样的逻辑。&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__184&quot;&gt;选中两段代码，右键 &amp;gt;&amp;nbsp;&lt;code style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;&quot; class=&quot;js_darkmode__185&quot;&gt;Copilot &amp;gt; 比较这两段代码&lt;/code&gt;，Copilot 会用中文说明两种写法的等价性和适用场景差异。&lt;/p&gt;&lt;blockquote style=&quot;box-sizing: border-box;border-width: 0px 0px 0px 4px;border-style: solid;border-color: rgb(229, 229, 229) rgb(229, 229, 229) rgb(229, 229, 229) rgb(0, 152, 116);margin: 0px;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;font-style: normal;padding: 1em;border-radius: 6px;color: rgba(0, 0, 0, 0.5);background: rgb(247, 247, 247);&quot; class=&quot;js_darkmode__186&quot;&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 0px;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 1em;display: block;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__187&quot;&gt;&lt;strong style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: inherit;color: rgb(0, 152, 116);&quot; class=&quot;js_darkmode__188&quot;&gt;Copilot 辅助：&lt;/strong&gt;&amp;nbsp;选中 Lambda 表达式，右键 &amp;gt;&amp;nbsp;&lt;code style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;&quot; class=&quot;js_darkmode__189&quot;&gt;Copilot &amp;gt; 将此 Lambda 提取为具名方法&lt;/code&gt;，VS2026 会自动在类中生成对应的具名方法，同时保留 Lambda 写法作为对照，便于理解两者关系。&lt;/p&gt;&lt;/blockquote&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__190&quot;&gt;&lt;strong style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: inherit;color: rgb(0, 152, 116);&quot; class=&quot;js_darkmode__191&quot;&gt;Step 4&lt;/strong&gt;&amp;nbsp;在事件订阅中使用 Lambda&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__192&quot;&gt;在&amp;nbsp;&lt;code style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;&quot; class=&quot;js_darkmode__193&quot;&gt;Main&lt;/code&gt;&amp;nbsp;方法中创建一个简单的委托变量，用 Lambda 赋值并调用，观察输出。&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__194&quot;&gt;再尝试用多行 Lambda（花括号写法）实现包含条件判断的处理逻辑。&lt;/p&gt;&lt;blockquote style=&quot;box-sizing: border-box;border-width: 0px 0px 0px 4px;border-style: solid;border-color: rgb(229, 229, 229) rgb(229, 229, 229) rgb(229, 229, 229) rgb(0, 152, 116);margin: 0px;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;font-style: normal;padding: 1em;border-radius: 6px;color: rgba(0, 0, 0, 0.5);background: rgb(247, 247, 247);&quot; class=&quot;js_darkmode__195&quot;&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 0px;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 1em;display: block;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__196&quot;&gt;&lt;strong style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: inherit;color: rgb(0, 152, 116);&quot; class=&quot;js_darkmode__197&quot;&gt;Copilot 辅助：&lt;/strong&gt;&amp;nbsp;输入单行 Lambda 后，右键 &amp;gt;&amp;nbsp;&lt;code style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;&quot; class=&quot;js_darkmode__198&quot;&gt;Copilot &amp;gt; 展开为多行 Lambda&lt;/code&gt;，Copilot 会自动将&amp;nbsp;&lt;code style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;&quot; class=&quot;js_darkmode__199&quot;&gt;t =&amp;gt; t &amp;gt; 85f&lt;/code&gt;&amp;nbsp;展开为带花括号的完整写法，帮你理解两种格式的等价关系。&lt;/p&gt;&lt;/blockquote&gt;&lt;hr style=&quot;box-sizing: border-box;border-width: 2px 0px 0px;border-style: solid;border-color: rgba(0, 0, 0, 0.1);height: 0.4em;color: inherit;margin: 1.5em 0px;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;transform-origin: 0px 0px;transform: scale(1, 0.5);&quot; class=&quot;js_darkmode__200&quot;/&gt;&lt;h3 style=&quot;box-sizing: border-box;border-width: 0px 0px 0px 3px;border-style: solid;border-color: rgb(229, 229, 229) rgb(229, 229, 229) rgb(229, 229, 229) rgb(0, 152, 116);font-size: 15.4px;font-weight: bold;margin: 2em 8px 0.75em 0px;text-align: left;line-height: 1.2;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;padding-left: 8px;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__201&quot;&gt;Vibe Coding Prompt 写法&lt;/h3&gt;&lt;blockquote style=&quot;box-sizing: border-box;border-width: 0px 0px 0px 4px;border-style: solid;border-color: rgb(229, 229, 229) rgb(229, 229, 229) rgb(229, 229, 229) rgb(0, 152, 116);margin: 0px;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;font-style: normal;padding: 1em;border-radius: 6px;color: rgba(0, 0, 0, 0.5);background: rgb(247, 247, 247);&quot; class=&quot;js_darkmode__202&quot;&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 0px;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 1em;display: block;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__203&quot;&gt;&amp;quot;用 C# 14 和 .NET 10 写一个注塑车间传感器数据分析程序。创建一个包含 20 条模拟温度和压力采集记录的 List，用 Lambda 表达式分别实现：筛选温度超过 85℃ 的记录、筛选压力超过 120bar 的记录、按温度从高到低排序、统计超限次数、计算平均温度。每个操作单独输出结果，加中文注释，变量名使用工业语义命名。&amp;quot;&lt;/p&gt;&lt;/blockquote&gt;&lt;hr style=&quot;box-sizing: border-box;border-width: 2px 0px 0px;border-style: solid;border-color: rgba(0, 0, 0, 0.1);height: 0.4em;color: inherit;margin: 1.5em 0px;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;transform-origin: 0px 0px;transform: scale(1, 0.5);&quot; class=&quot;js_darkmode__204&quot;/&gt;&lt;h2 style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-size: 16.8px;font-weight: bold;margin: 4em auto 2em;text-align: center;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;display: table;padding: 0px 0.2em;color: rgb(255, 255, 255);background: rgb(0, 152, 116);&quot; class=&quot;js_darkmode__205&quot;&gt;📋 完整代码示例&lt;/h2&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__206&quot;&gt;这段代码实现了一个&lt;strong style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: inherit;color: rgb(0, 152, 116);&quot; class=&quot;js_darkmode__207&quot;&gt;注塑车间多参数传感器数据分析系统&lt;/strong&gt;，完整演示 Lambda 表达式在数据筛选、转换、排序、统计场景中的实际用法。&lt;/p&gt;&lt;pre style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 14px;margin: 10px 8px;color: rgb(201, 209, 217);background: rgb(13, 17, 23);text-align: left;line-height: 1.5;overflow-x: auto;border-radius: 8px;padding: 0px !important;&quot; class=&quot;js_darkmode__208&quot;&gt;&lt;span hidden=&quot;&quot; style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;display: flex;padding: 10px 14px 0px;&quot; class=&quot;js_darkmode__209&quot;&gt;&lt;svg x=&quot;0px&quot; y=&quot;0px&quot; width=&quot;45px&quot; height=&quot;13px&quot; viewbox=&quot;0 0 450 130&quot; aria-label=&quot;插图&quot;&gt;&lt;ellipse cx=&quot;50&quot; cy=&quot;65&quot; rx=&quot;50&quot; ry=&quot;52&quot; stroke=&quot;rgb(220,60,54)&quot; stroke-width=&quot;2&quot; fill=&quot;rgb(237,108,96)&quot;&gt;&lt;/ellipse&gt;&lt;ellipse cx=&quot;225&quot; cy=&quot;65&quot; rx=&quot;50&quot; ry=&quot;52&quot; stroke=&quot;rgb(218,151,33)&quot; stroke-width=&quot;2&quot; fill=&quot;rgb(247,193,81)&quot;&gt;&lt;/ellipse&gt;&lt;ellipse cx=&quot;400&quot; cy=&quot;65&quot; rx=&quot;50&quot; ry=&quot;52&quot; stroke=&quot;rgb(27,161,37)&quot; stroke-width=&quot;2&quot; fill=&quot;rgb(100,200,86)&quot;&gt;&lt;/ellipse&gt;&lt;/svg&gt;&lt;/span&gt;&lt;code style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: Menlo, &amp;quot;Operator Mono&amp;quot;, Consolas, Monaco, monospace;font-feature-settings: normal;font-variation-settings: normal;font-size: 14px;display: -webkit-box;padding: 0.5em 1em 1em;overflow-x: auto;text-indent: 0px;text-align: left;line-height: 1.75;margin: 0px;white-space: nowrap;&quot; class=&quot;js_darkmode__210&quot;&gt;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__211&quot;&gt;using&lt;/span&gt;&amp;nbsp;System;&lt;br/&gt;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__212&quot;&gt;using&lt;/span&gt;&amp;nbsp;System.Collections.Generic;&lt;br/&gt;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__213&quot;&gt;using&lt;/span&gt;&amp;nbsp;System.Linq;&lt;br/&gt;&lt;br/&gt;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__214&quot;&gt;namespace&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #D2A8FF;&quot; class=&quot;js_darkmode__215&quot;&gt;LambdaDemo&lt;/span&gt;&lt;br/&gt;{&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #8B949E;&quot; class=&quot;js_darkmode__216&quot;&gt;// 传感器采集记录：包含设备编号、温度和压力&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;&quot; class=&quot;js_darkmode__217&quot;&gt;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__218&quot;&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__219&quot;&gt;record&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #D2A8FF;&quot; class=&quot;js_darkmode__220&quot;&gt;SensorRecord&lt;/span&gt;(&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;&quot; class=&quot;js_darkmode__221&quot;&gt;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FFA657;&quot; class=&quot;js_darkmode__222&quot;&gt;string&lt;/span&gt;&amp;nbsp;MachineId,&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FFA657;&quot; class=&quot;js_darkmode__223&quot;&gt;float&lt;/span&gt;&amp;nbsp;MoldTemp,&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FFA657;&quot; class=&quot;js_darkmode__224&quot;&gt;float&lt;/span&gt;&amp;nbsp;InjectionPressure&lt;/span&gt;)&lt;/span&gt;;&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__225&quot;&gt;class&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #D2A8FF;&quot; class=&quot;js_darkmode__226&quot;&gt;Program&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;&quot; class=&quot;js_darkmode__227&quot;&gt;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__228&quot;&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__229&quot;&gt;void&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #D2A8FF;&quot; class=&quot;js_darkmode__230&quot;&gt;Main&lt;/span&gt;(&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;&quot; class=&quot;js_darkmode__231&quot;&gt;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FFA657;&quot; class=&quot;js_darkmode__232&quot;&gt;string&lt;/span&gt;[]&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__233&quot;&gt;args&lt;/span&gt;&lt;/span&gt;)&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Console.WriteLine(&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #A5D6FF;&quot; class=&quot;js_darkmode__234&quot;&gt;&amp;quot;=== 注塑车间传感器数据分析 ===\n&amp;quot;&lt;/span&gt;);&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #8B949E;&quot; class=&quot;js_darkmode__235&quot;&gt;// ── 模拟一批传感器采集数据（实际项目来自 PLC 或 OPC UA）──&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__236&quot;&gt;var&lt;/span&gt;&amp;nbsp;sensorData =&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__237&quot;&gt;new&lt;/span&gt;&amp;nbsp;List&amp;lt;SensorRecord&amp;gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__238&quot;&gt;new&lt;/span&gt;(&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #A5D6FF;&quot; class=&quot;js_darkmode__239&quot;&gt;&amp;quot;注塑机-01&amp;quot;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #79C0FF;&quot; class=&quot;js_darkmode__240&quot;&gt;72.3f&lt;/span&gt;, &amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #79C0FF;&quot; class=&quot;js_darkmode__241&quot;&gt;98.0f&lt;/span&gt;),&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__242&quot;&gt;new&lt;/span&gt;(&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #A5D6FF;&quot; class=&quot;js_darkmode__243&quot;&gt;&amp;quot;注塑机-02&amp;quot;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #79C0FF;&quot; class=&quot;js_darkmode__244&quot;&gt;88.5f&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #79C0FF;&quot; class=&quot;js_darkmode__245&quot;&gt;125.0f&lt;/span&gt;),&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__246&quot;&gt;new&lt;/span&gt;(&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #A5D6FF;&quot; class=&quot;js_darkmode__247&quot;&gt;&amp;quot;注塑机-03&amp;quot;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #79C0FF;&quot; class=&quot;js_darkmode__248&quot;&gt;65.1f&lt;/span&gt;, &amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #79C0FF;&quot; class=&quot;js_darkmode__249&quot;&gt;87.5f&lt;/span&gt;),&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__250&quot;&gt;new&lt;/span&gt;(&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #A5D6FF;&quot; class=&quot;js_darkmode__251&quot;&gt;&amp;quot;注塑机-04&amp;quot;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #79C0FF;&quot; class=&quot;js_darkmode__252&quot;&gt;91.2f&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #79C0FF;&quot; class=&quot;js_darkmode__253&quot;&gt;132.0f&lt;/span&gt;),&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__254&quot;&gt;new&lt;/span&gt;(&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #A5D6FF;&quot; class=&quot;js_darkmode__255&quot;&gt;&amp;quot;注塑机-05&amp;quot;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #79C0FF;&quot; class=&quot;js_darkmode__256&quot;&gt;79.8f&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #79C0FF;&quot; class=&quot;js_darkmode__257&quot;&gt;115.0f&lt;/span&gt;),&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__258&quot;&gt;new&lt;/span&gt;(&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #A5D6FF;&quot; class=&quot;js_darkmode__259&quot;&gt;&amp;quot;注塑机-06&amp;quot;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #79C0FF;&quot; class=&quot;js_darkmode__260&quot;&gt;86.0f&lt;/span&gt;, &amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #79C0FF;&quot; class=&quot;js_darkmode__261&quot;&gt;92.0f&lt;/span&gt;),&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__262&quot;&gt;new&lt;/span&gt;(&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #A5D6FF;&quot; class=&quot;js_darkmode__263&quot;&gt;&amp;quot;注塑机-07&amp;quot;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #79C0FF;&quot; class=&quot;js_darkmode__264&quot;&gt;58.4f&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #79C0FF;&quot; class=&quot;js_darkmode__265&quot;&gt;140.0f&lt;/span&gt;),&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__266&quot;&gt;new&lt;/span&gt;(&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #A5D6FF;&quot; class=&quot;js_darkmode__267&quot;&gt;&amp;quot;注塑机-08&amp;quot;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #79C0FF;&quot; class=&quot;js_darkmode__268&quot;&gt;93.7f&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #79C0FF;&quot; class=&quot;js_darkmode__269&quot;&gt;108.0f&lt;/span&gt;),&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; };&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #8B949E;&quot; class=&quot;js_darkmode__270&quot;&gt;// 报警阈值&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__271&quot;&gt;const&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FFA657;&quot; class=&quot;js_darkmode__272&quot;&gt;float&lt;/span&gt;&amp;nbsp;tempAlarmThreshold =&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #79C0FF;&quot; class=&quot;js_darkmode__273&quot;&gt;85f&lt;/span&gt;;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__274&quot;&gt;const&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FFA657;&quot; class=&quot;js_darkmode__275&quot;&gt;float&lt;/span&gt;&amp;nbsp;pressureAlarmThreshold =&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #79C0FF;&quot; class=&quot;js_darkmode__276&quot;&gt;120f&lt;/span&gt;;&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #8B949E;&quot; class=&quot;js_darkmode__277&quot;&gt;// ── Lambda 用法1：筛选温度超限记录 ──&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__278&quot;&gt;var&lt;/span&gt;&amp;nbsp;highTempMachines = sensorData&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .Where(r =&amp;gt; r.MoldTemp &amp;gt; tempAlarmThreshold)&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .ToList();&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Console.WriteLine(&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #A5D6FF;&quot; class=&quot;js_darkmode__279&quot;&gt;$&amp;quot;【温度超限设备（&amp;gt;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #C9D1D9;&quot; class=&quot;js_darkmode__280&quot;&gt;{tempAlarmThreshold}&lt;/span&gt;℃）】&amp;quot;&lt;/span&gt;);&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; highTempMachines.ForEach(r =&amp;gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Console.WriteLine(&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #A5D6FF;&quot; class=&quot;js_darkmode__281&quot;&gt;$&amp;quot; &amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #C9D1D9;&quot; class=&quot;js_darkmode__282&quot;&gt;{r.MachineId}&lt;/span&gt;：&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #C9D1D9;&quot; class=&quot;js_darkmode__283&quot;&gt;{r.MoldTemp}&lt;/span&gt;℃&amp;quot;&lt;/span&gt;));&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #8B949E;&quot; class=&quot;js_darkmode__284&quot;&gt;// ── Lambda 用法2：筛选压力超限记录 ──&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__285&quot;&gt;var&lt;/span&gt;&amp;nbsp;highPressureMachines = sensorData&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .Where(r =&amp;gt; r.InjectionPressure &amp;gt; pressureAlarmThreshold)&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .ToList();&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Console.WriteLine(&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #A5D6FF;&quot; class=&quot;js_darkmode__286&quot;&gt;$&amp;quot;\n【压力超限设备（&amp;gt;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #C9D1D9;&quot; class=&quot;js_darkmode__287&quot;&gt;{pressureAlarmThreshold}&lt;/span&gt;bar）】&amp;quot;&lt;/span&gt;);&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; highPressureMachines.ForEach(r =&amp;gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Console.WriteLine(&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #A5D6FF;&quot; class=&quot;js_darkmode__288&quot;&gt;$&amp;quot; &amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #C9D1D9;&quot; class=&quot;js_darkmode__289&quot;&gt;{r.MachineId}&lt;/span&gt;：&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #C9D1D9;&quot; class=&quot;js_darkmode__290&quot;&gt;{r.InjectionPressure}&lt;/span&gt;bar&amp;quot;&lt;/span&gt;));&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #8B949E;&quot; class=&quot;js_darkmode__291&quot;&gt;// ── Lambda 用法3：按模具温度从高到低排序 ──&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__292&quot;&gt;var&lt;/span&gt;&amp;nbsp;sortedByTemp = sensorData&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .OrderByDescending(r =&amp;gt; r.MoldTemp)&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .ToList();&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Console.WriteLine(&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #A5D6FF;&quot; class=&quot;js_darkmode__293&quot;&gt;&amp;quot;\n【按温度降序排列 Top 3】&amp;quot;&lt;/span&gt;);&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; sortedByTemp.Take(&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #79C0FF;&quot; class=&quot;js_darkmode__294&quot;&gt;3&lt;/span&gt;).ToList().ForEach(r =&amp;gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Console.WriteLine(&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #A5D6FF;&quot; class=&quot;js_darkmode__295&quot;&gt;$&amp;quot; &amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #C9D1D9;&quot; class=&quot;js_darkmode__296&quot;&gt;{r.MachineId}&lt;/span&gt;：&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #C9D1D9;&quot; class=&quot;js_darkmode__297&quot;&gt;{r.MoldTemp}&lt;/span&gt;℃&amp;quot;&lt;/span&gt;));&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #8B949E;&quot; class=&quot;js_darkmode__298&quot;&gt;// ── Lambda 用法4：统计超限次数 ──&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FFA657;&quot; class=&quot;js_darkmode__299&quot;&gt;int&lt;/span&gt;&amp;nbsp;tempAlarmCount = sensorData.Count(r =&amp;gt; r.MoldTemp &amp;gt; tempAlarmThreshold);&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FFA657;&quot; class=&quot;js_darkmode__300&quot;&gt;int&lt;/span&gt;&amp;nbsp;pressureAlarmCount = sensorData.Count(r =&amp;gt; r.InjectionPressure &amp;gt; pressureAlarmThreshold);&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Console.WriteLine(&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #A5D6FF;&quot; class=&quot;js_darkmode__301&quot;&gt;$&amp;quot;\n【报警统计】&amp;quot;&lt;/span&gt;);&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Console.WriteLine(&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #A5D6FF;&quot; class=&quot;js_darkmode__302&quot;&gt;$&amp;quot; &amp;nbsp;温度超限：&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #C9D1D9;&quot; class=&quot;js_darkmode__303&quot;&gt;{tempAlarmCount}&lt;/span&gt;&amp;nbsp;台&amp;quot;&lt;/span&gt;);&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Console.WriteLine(&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #A5D6FF;&quot; class=&quot;js_darkmode__304&quot;&gt;$&amp;quot; &amp;nbsp;压力超限：&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #C9D1D9;&quot; class=&quot;js_darkmode__305&quot;&gt;{pressureAlarmCount}&lt;/span&gt;&amp;nbsp;台&amp;quot;&lt;/span&gt;);&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #8B949E;&quot; class=&quot;js_darkmode__306&quot;&gt;// ── Lambda 用法5：计算平均温度 ──&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FFA657;&quot; class=&quot;js_darkmode__307&quot;&gt;float&lt;/span&gt;&amp;nbsp;avgMoldTemp = sensorData.Average(r =&amp;gt; r.MoldTemp);&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Console.WriteLine(&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #A5D6FF;&quot; class=&quot;js_darkmode__308&quot;&gt;$&amp;quot;\n【当前平均模具温度】&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #C9D1D9;&quot; class=&quot;js_darkmode__309&quot;&gt;{avgMoldTemp:F1}&lt;/span&gt;℃&amp;quot;&lt;/span&gt;);&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #8B949E;&quot; class=&quot;js_darkmode__310&quot;&gt;// ── Lambda 用法6：多行 Lambda，生成格式化报警摘要 ──&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Console.WriteLine(&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #A5D6FF;&quot; class=&quot;js_darkmode__311&quot;&gt;&amp;quot;\n【报警摘要（多行 Lambda）】&amp;quot;&lt;/span&gt;);&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__312&quot;&gt;var&lt;/span&gt;&amp;nbsp;alarmSummary = sensorData&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .Where(r =&amp;gt; r.MoldTemp &amp;gt; tempAlarmThreshold || r.InjectionPressure &amp;gt; pressureAlarmThreshold)&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .Select(r =&amp;gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #8B949E;&quot; class=&quot;js_darkmode__313&quot;&gt;// 多行 Lambda：可以写复杂逻辑&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__314&quot;&gt;var&lt;/span&gt;&amp;nbsp;issues =&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__315&quot;&gt;new&lt;/span&gt;&amp;nbsp;List&amp;lt;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FFA657;&quot; class=&quot;js_darkmode__316&quot;&gt;string&lt;/span&gt;&amp;gt;();&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__317&quot;&gt;if&lt;/span&gt;&amp;nbsp;(r.MoldTemp &amp;gt; tempAlarmThreshold)&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; issues.Add(&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #A5D6FF;&quot; class=&quot;js_darkmode__318&quot;&gt;$&amp;quot;温度&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #C9D1D9;&quot; class=&quot;js_darkmode__319&quot;&gt;{r.MoldTemp}&lt;/span&gt;℃&amp;quot;&lt;/span&gt;);&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__320&quot;&gt;if&lt;/span&gt;&amp;nbsp;(r.InjectionPressure &amp;gt; pressureAlarmThreshold)&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; issues.Add(&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #A5D6FF;&quot; class=&quot;js_darkmode__321&quot;&gt;$&amp;quot;压力&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #C9D1D9;&quot; class=&quot;js_darkmode__322&quot;&gt;{r.InjectionPressure}&lt;/span&gt;bar&amp;quot;&lt;/span&gt;);&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__323&quot;&gt;return&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #A5D6FF;&quot; class=&quot;js_darkmode__324&quot;&gt;$&amp;quot; &amp;nbsp;⚠️&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #C9D1D9;&quot; class=&quot;js_darkmode__325&quot;&gt;{r.MachineId}&lt;/span&gt;：&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #C9D1D9;&quot; class=&quot;js_darkmode__326&quot;&gt;{&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FFA657;&quot; class=&quot;js_darkmode__327&quot;&gt;string&lt;/span&gt;.Join(&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #A5D6FF;&quot; class=&quot;js_darkmode__328&quot;&gt;&amp;quot; / &amp;quot;&lt;/span&gt;, issues)}&lt;/span&gt;&amp;nbsp;超限&amp;quot;&lt;/span&gt;;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; });&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__329&quot;&gt;foreach&lt;/span&gt;&amp;nbsp;(&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__330&quot;&gt;var&lt;/span&gt;&amp;nbsp;summary&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__331&quot;&gt;in&lt;/span&gt;&amp;nbsp;alarmSummary)&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Console.WriteLine(summary);&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Console.ReadKey();&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br/&gt;&amp;nbsp; &amp;nbsp; }&lt;br/&gt;}&lt;/code&gt;&lt;/pre&gt;&lt;section style=&quot;text-align: center;&quot;&gt;&lt;img data-src=&quot;https://mmbiz.qpic.cn/sz_mmbiz_png/ZAK2geyCdoJszfEW4YYnYk7nsc5s8J7VQjwSynuG5B5VacCpnDV57C8sIJ03VicP0TYEqLy5cuNb0VauEJj7ibOIvhp3KugGSia0qsF5lLSGtY/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1#imgIndex=0&quot; class=&quot;rich_pages wxw-img&quot; data-ratio=&quot;0.562037037037037&quot; data-s=&quot;300,640&quot; data-type=&quot;png&quot; data-w=&quot;1080&quot; type=&quot;block&quot; data-imgfileid=&quot;100001350&quot; data-aistatus=&quot;1&quot; data-original-style=&quot;null&quot; data-index=&quot;2&quot; src=&quot;https://mmbiz.qpic.cn/sz_mmbiz_png/ZAK2geyCdoJszfEW4YYnYk7nsc5s8J7VQjwSynuG5B5VacCpnDV57C8sIJ03VicP0TYEqLy5cuNb0VauEJj7ibOIvhp3KugGSia0qsF5lLSGtY/640?wx_fmt=png&amp;from=appmsg&amp;tp=wxpic&amp;wxfrom=5&amp;wx_lazy=1&amp;watermark=1#imgIndex=0&quot; _width=&quot;677px&quot; style=&quot;height: auto !important; visibility: visible !important; width: 676.969px !important;&quot; alt=&quot;图片&quot; data-before-load-time=&quot;1791428906048&quot; data-report-img-idx=&quot;0&quot; data-fail=&quot;0&quot;/&gt;&lt;/section&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__332&quot;&gt;运行后，控制台依次输出温度超限设备列表、压力超限设备列表、温度 Top 3 排名、报警统计数量、平均温度，最后是格式化的综合报警摘要。你会直观感受到：&lt;strong style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: inherit;color: rgb(0, 152, 116);&quot; class=&quot;js_darkmode__333&quot;&gt;同样是筛选逻辑，Lambda 写法让每一步的意图都清晰地&amp;quot;摆在眼前&amp;quot;&lt;/strong&gt;，不需要跳转到任何其他方法。&lt;/p&gt;&lt;hr style=&quot;box-sizing: border-box;border-width: 2px 0px 0px;border-style: solid;border-color: rgba(0, 0, 0, 0.1);height: 0.4em;color: inherit;margin: 1.5em 0px;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;transform-origin: 0px 0px;transform: scale(1, 0.5);&quot; class=&quot;js_darkmode__334&quot;/&gt;&lt;h2 style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-size: 16.8px;font-weight: bold;margin: 4em auto 2em;text-align: center;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;display: table;padding: 0px 0.2em;color: rgb(255, 255, 255);background: rgb(0, 152, 116);&quot; class=&quot;js_darkmode__335&quot;&gt;🏭 工业实战小案例&lt;/h2&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__336&quot;&gt;&lt;strong style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: inherit;color: rgb(0, 152, 116);&quot; class=&quot;js_darkmode__337&quot;&gt;场景任务：&lt;/strong&gt;&amp;nbsp;某冲压车间质检系统需要从一批零件尺寸测量数据中，找出同时满足&amp;quot;厚度偏差超过 ±0.05mm&amp;quot;且&amp;quot;重量超过上限 52g&amp;quot;的不合格品，并按偏差绝对值从大到小排列，输出不合格品清单。&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__338&quot;&gt;&lt;strong style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: inherit;color: rgb(0, 152, 116);&quot; class=&quot;js_darkmode__339&quot;&gt;思路拆解：&lt;/strong&gt;&lt;/p&gt;&lt;ol style=&quot;list-style-type: none;&quot; class=&quot;js_darkmode__340 list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;section&gt;1. 定义&amp;nbsp;&lt;code style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;&quot; class=&quot;js_darkmode__342&quot;&gt;PartMeasurement&lt;/code&gt;&amp;nbsp;记录类，包含零件编号、厚度偏差、重量三个字段。&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section&gt;2. 用&amp;nbsp;&lt;code style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;&quot; class=&quot;js_darkmode__344&quot;&gt;Where&lt;/code&gt;&amp;nbsp;+ Lambda 组合两个条件筛选不合格品。&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section&gt;3. 用&amp;nbsp;&lt;code style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;&quot; class=&quot;js_darkmode__346&quot;&gt;OrderByDescending&lt;/code&gt;&amp;nbsp;+ Lambda 按偏差绝对值降序排列。&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section&gt;4. 用&amp;nbsp;&lt;code style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;&quot; class=&quot;js_darkmode__348&quot;&gt;Select&lt;/code&gt;&amp;nbsp;+ Lambda 格式化输出每条记录。&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section&gt;5. 用&amp;nbsp;&lt;code style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;&quot; class=&quot;js_darkmode__350&quot;&gt;Count&lt;/code&gt;&amp;nbsp;统计不合格品总数。&lt;/section&gt;&lt;/li&gt;&lt;/ol&gt;&lt;pre style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 14px;margin: 10px 8px;color: rgb(201, 209, 217);background: rgb(13, 17, 23);text-align: left;line-height: 1.5;overflow-x: auto;border-radius: 8px;padding: 0px !important;&quot; class=&quot;js_darkmode__351&quot;&gt;&lt;span hidden=&quot;&quot; style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;display: flex;padding: 10px 14px 0px;&quot; class=&quot;js_darkmode__352&quot;&gt;&lt;svg x=&quot;0px&quot; y=&quot;0px&quot; width=&quot;45px&quot; height=&quot;13px&quot; viewbox=&quot;0 0 450 130&quot; aria-label=&quot;插图&quot;&gt;&lt;ellipse cx=&quot;50&quot; cy=&quot;65&quot; rx=&quot;50&quot; ry=&quot;52&quot; stroke=&quot;rgb(220,60,54)&quot; stroke-width=&quot;2&quot; fill=&quot;rgb(237,108,96)&quot;&gt;&lt;/ellipse&gt;&lt;ellipse cx=&quot;225&quot; cy=&quot;65&quot; rx=&quot;50&quot; ry=&quot;52&quot; stroke=&quot;rgb(218,151,33)&quot; stroke-width=&quot;2&quot; fill=&quot;rgb(247,193,81)&quot;&gt;&lt;/ellipse&gt;&lt;ellipse cx=&quot;400&quot; cy=&quot;65&quot; rx=&quot;50&quot; ry=&quot;52&quot; stroke=&quot;rgb(27,161,37)&quot; stroke-width=&quot;2&quot; fill=&quot;rgb(100,200,86)&quot;&gt;&lt;/ellipse&gt;&lt;/svg&gt;&lt;/span&gt;&lt;code style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: Menlo, &amp;quot;Operator Mono&amp;quot;, Consolas, Monaco, monospace;font-feature-settings: normal;font-variation-settings: normal;font-size: 14px;display: -webkit-box;padding: 0.5em 1em 1em;overflow-x: auto;text-indent: 0px;text-align: left;line-height: 1.75;margin: 0px;white-space: nowrap;&quot; class=&quot;js_darkmode__353&quot;&gt;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__354&quot;&gt;using&lt;/span&gt;&amp;nbsp;System;&lt;br/&gt;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__355&quot;&gt;using&lt;/span&gt;&amp;nbsp;System.Collections.Generic;&lt;br/&gt;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__356&quot;&gt;using&lt;/span&gt;&amp;nbsp;System.Linq;&lt;br/&gt;&lt;br/&gt;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__357&quot;&gt;namespace&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #D2A8FF;&quot; class=&quot;js_darkmode__358&quot;&gt;StampingQualityCheck&lt;/span&gt;&lt;br/&gt;{&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;&quot; class=&quot;js_darkmode__359&quot;&gt;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__360&quot;&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__361&quot;&gt;record&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #D2A8FF;&quot; class=&quot;js_darkmode__362&quot;&gt;PartMeasurement&lt;/span&gt;(&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;&quot; class=&quot;js_darkmode__363&quot;&gt;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FFA657;&quot; class=&quot;js_darkmode__364&quot;&gt;string&lt;/span&gt;&amp;nbsp;PartId,&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FFA657;&quot; class=&quot;js_darkmode__365&quot;&gt;float&lt;/span&gt;&amp;nbsp;ThicknessDev,&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FFA657;&quot; class=&quot;js_darkmode__366&quot;&gt;float&lt;/span&gt;&amp;nbsp;Weight&lt;/span&gt;)&lt;/span&gt;;&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__367&quot;&gt;class&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #D2A8FF;&quot; class=&quot;js_darkmode__368&quot;&gt;Program&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;&quot; class=&quot;js_darkmode__369&quot;&gt;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__370&quot;&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__371&quot;&gt;void&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #D2A8FF;&quot; class=&quot;js_darkmode__372&quot;&gt;Main&lt;/span&gt;(&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;&quot; class=&quot;js_darkmode__373&quot;&gt;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FFA657;&quot; class=&quot;js_darkmode__374&quot;&gt;string&lt;/span&gt;[]&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__375&quot;&gt;args&lt;/span&gt;&lt;/span&gt;)&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Console.OutputEncoding = System.Text.Encoding.UTF8; &amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #8B949E;&quot; class=&quot;js_darkmode__376&quot;&gt;// 支持输出中文和特殊符号&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #8B949E;&quot; class=&quot;js_darkmode__377&quot;&gt;// 模拟一批零件测量数据（ThicknessDev 单位：mm，正负表示方向）&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__378&quot;&gt;var&lt;/span&gt;&amp;nbsp;measurements =&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__379&quot;&gt;new&lt;/span&gt;&amp;nbsp;List&amp;lt;PartMeasurement&amp;gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__380&quot;&gt;new&lt;/span&gt;(&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #A5D6FF;&quot; class=&quot;js_darkmode__381&quot;&gt;&amp;quot;P-001&amp;quot;&lt;/span&gt;, &amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #79C0FF;&quot; class=&quot;js_darkmode__382&quot;&gt;0.02f&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #79C0FF;&quot; class=&quot;js_darkmode__383&quot;&gt;50.1f&lt;/span&gt;),&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__384&quot;&gt;new&lt;/span&gt;(&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #A5D6FF;&quot; class=&quot;js_darkmode__385&quot;&gt;&amp;quot;P-002&amp;quot;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #79C0FF;&quot; class=&quot;js_darkmode__386&quot;&gt;-0.07f&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #79C0FF;&quot; class=&quot;js_darkmode__387&quot;&gt;52.8f&lt;/span&gt;), &amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #8B949E;&quot; class=&quot;js_darkmode__388&quot;&gt;// 双超限&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__389&quot;&gt;new&lt;/span&gt;(&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #A5D6FF;&quot; class=&quot;js_darkmode__390&quot;&gt;&amp;quot;P-003&amp;quot;&lt;/span&gt;, &amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #79C0FF;&quot; class=&quot;js_darkmode__391&quot;&gt;0.06f&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #79C0FF;&quot; class=&quot;js_darkmode__392&quot;&gt;51.5f&lt;/span&gt;), &amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #8B949E;&quot; class=&quot;js_darkmode__393&quot;&gt;// 厚度超限&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__394&quot;&gt;new&lt;/span&gt;(&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #A5D6FF;&quot; class=&quot;js_darkmode__395&quot;&gt;&amp;quot;P-004&amp;quot;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #79C0FF;&quot; class=&quot;js_darkmode__396&quot;&gt;-0.01f&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #79C0FF;&quot; class=&quot;js_darkmode__397&quot;&gt;53.2f&lt;/span&gt;), &amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #8B949E;&quot; class=&quot;js_darkmode__398&quot;&gt;// 重量超限&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__399&quot;&gt;new&lt;/span&gt;(&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #A5D6FF;&quot; class=&quot;js_darkmode__400&quot;&gt;&amp;quot;P-005&amp;quot;&lt;/span&gt;, &amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #79C0FF;&quot; class=&quot;js_darkmode__401&quot;&gt;0.09f&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #79C0FF;&quot; class=&quot;js_darkmode__402&quot;&gt;53.0f&lt;/span&gt;), &amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #8B949E;&quot; class=&quot;js_darkmode__403&quot;&gt;// 双超限&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__404&quot;&gt;new&lt;/span&gt;(&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #A5D6FF;&quot; class=&quot;js_darkmode__405&quot;&gt;&amp;quot;P-006&amp;quot;&lt;/span&gt;, &amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #79C0FF;&quot; class=&quot;js_darkmode__406&quot;&gt;0.03f&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #79C0FF;&quot; class=&quot;js_darkmode__407&quot;&gt;49.8f&lt;/span&gt;),&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__408&quot;&gt;new&lt;/span&gt;(&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #A5D6FF;&quot; class=&quot;js_darkmode__409&quot;&gt;&amp;quot;P-007&amp;quot;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #79C0FF;&quot; class=&quot;js_darkmode__410&quot;&gt;-0.08f&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #79C0FF;&quot; class=&quot;js_darkmode__411&quot;&gt;52.5f&lt;/span&gt;), &amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #8B949E;&quot; class=&quot;js_darkmode__412&quot;&gt;// 双超限&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; };&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__413&quot;&gt;const&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FFA657;&quot; class=&quot;js_darkmode__414&quot;&gt;float&lt;/span&gt;&amp;nbsp;thicknessDevLimit =&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #79C0FF;&quot; class=&quot;js_darkmode__415&quot;&gt;0.05f&lt;/span&gt;; &amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #8B949E;&quot; class=&quot;js_darkmode__416&quot;&gt;// 厚度偏差上限（绝对值）&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__417&quot;&gt;const&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FFA657;&quot; class=&quot;js_darkmode__418&quot;&gt;float&lt;/span&gt;&amp;nbsp;weightUpperLimit =&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #79C0FF;&quot; class=&quot;js_darkmode__419&quot;&gt;52.0f&lt;/span&gt;; &amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #8B949E;&quot; class=&quot;js_darkmode__420&quot;&gt;// 重量上限&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #8B949E;&quot; class=&quot;js_darkmode__421&quot;&gt;// Lambda 多条件筛选 + 排序 + 格式化输出&lt;/span&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__422&quot;&gt;var&lt;/span&gt;&amp;nbsp;rejectList = measurements&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .Where(p =&amp;gt; Math.Abs(p.ThicknessDev) &amp;gt; thicknessDevLimit&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;amp;&amp;amp; p.Weight &amp;gt; weightUpperLimit)&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .OrderByDescending(p =&amp;gt; Math.Abs(p.ThicknessDev))&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .Select(p =&amp;gt;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #A5D6FF;&quot; class=&quot;js_darkmode__423&quot;&gt;$&amp;quot; &amp;nbsp;❌&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #C9D1D9;&quot; class=&quot;js_darkmode__424&quot;&gt;{p.PartId}&lt;/span&gt;&amp;nbsp;| 厚度偏差：&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #C9D1D9;&quot; class=&quot;js_darkmode__425&quot;&gt;{p.ThicknessDev:+&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #79C0FF;&quot; class=&quot;js_darkmode__426&quot;&gt;0.000&lt;/span&gt;;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #79C0FF;&quot; class=&quot;js_darkmode__427&quot;&gt;-0.000&lt;/span&gt;}&lt;/span&gt;mm | 重量：&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #C9D1D9;&quot; class=&quot;js_darkmode__428&quot;&gt;{p.Weight}&lt;/span&gt;g&amp;quot;&lt;/span&gt;);&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Console.WriteLine(&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #A5D6FF;&quot; class=&quot;js_darkmode__429&quot;&gt;&amp;quot;【冲压零件不合格品清单（双超限）】&amp;quot;&lt;/span&gt;);&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__430&quot;&gt;foreach&lt;/span&gt;&amp;nbsp;(&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__431&quot;&gt;var&lt;/span&gt;&amp;nbsp;line&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FF7B72;&quot; class=&quot;js_darkmode__432&quot;&gt;in&lt;/span&gt;&amp;nbsp;rejectList)&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Console.WriteLine(line);&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #FFA657;&quot; class=&quot;js_darkmode__433&quot;&gt;int&lt;/span&gt;&amp;nbsp;rejectCount = measurements&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .Count(p =&amp;gt; Math.Abs(p.ThicknessDev) &amp;gt; thicknessDevLimit&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;amp;&amp;amp; p.Weight &amp;gt; weightUpperLimit);&lt;br/&gt;&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Console.WriteLine(&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #A5D6FF;&quot; class=&quot;js_darkmode__434&quot;&gt;$&amp;quot;\n本批次不合格品：&lt;span style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: #E5E5E5;color: #C9D1D9;&quot; class=&quot;js_darkmode__435&quot;&gt;{rejectCount}&lt;/span&gt;&amp;nbsp;件&amp;quot;&lt;/span&gt;);&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Console.ReadKey();&lt;br/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br/&gt;&amp;nbsp; &amp;nbsp; }&lt;br/&gt;}&lt;/code&gt;&lt;/pre&gt;&lt;section style=&quot;text-align: center;&quot;&gt;&lt;img data-src=&quot;https://mmbiz.qpic.cn/sz_mmbiz_png/ZAK2geyCdoIWZHNVu8mEGBuCicVdBQibicUvcjxUJ6frnzmicn0Vyx3qOkbPUMibRkSmsP5A1g6pwW353YPzytk8DbpNeSt8IVAyZKQvbLm2Yaqc/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1#imgIndex=1&quot; class=&quot;rich_pages wxw-img&quot; data-ratio=&quot;0.562037037037037&quot; data-s=&quot;300,640&quot; data-type=&quot;png&quot; data-w=&quot;1080&quot; type=&quot;block&quot; data-imgfileid=&quot;100001352&quot; data-aistatus=&quot;1&quot; data-original-style=&quot;null&quot; data-index=&quot;3&quot; src=&quot;https://mmbiz.qpic.cn/sz_mmbiz_png/ZAK2geyCdoIWZHNVu8mEGBuCicVdBQibicUvcjxUJ6frnzmicn0Vyx3qOkbPUMibRkSmsP5A1g6pwW353YPzytk8DbpNeSt8IVAyZKQvbLm2Yaqc/640?wx_fmt=png&amp;from=appmsg&amp;tp=wxpic&amp;wxfrom=5&amp;wx_lazy=1&amp;watermark=1#imgIndex=1&quot; _width=&quot;677px&quot; style=&quot;height: auto !important; visibility: visible !important; width: 676.969px !important;&quot; alt=&quot;图片&quot; data-before-load-time=&quot;1791428907045&quot; data-report-img-idx=&quot;1&quot; data-fail=&quot;0&quot;/&gt;&lt;/section&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__436&quot;&gt;运行后，控制台输出按偏差绝对值降序排列的不合格品清单，并统计总数——&lt;strong style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: inherit;color: rgb(0, 152, 116);&quot; class=&quot;js_darkmode__437&quot;&gt;整个筛选、排序、格式化逻辑，全部由 Lambda 表达式完成，没有定义任何单独的方法&lt;/strong&gt;。&lt;/p&gt;&lt;hr style=&quot;box-sizing: border-box;border-width: 2px 0px 0px;border-style: solid;border-color: rgba(0, 0, 0, 0.1);height: 0.4em;color: inherit;margin: 1.5em 0px;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;transform-origin: 0px 0px;transform: scale(1, 0.5);&quot; class=&quot;js_darkmode__438&quot;/&gt;&lt;h2 style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-size: 16.8px;font-weight: bold;margin: 4em auto 2em;text-align: center;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;display: table;padding: 0px 0.2em;color: rgb(255, 255, 255);background: rgb(0, 152, 116);&quot; class=&quot;js_darkmode__439&quot;&gt;⚠️ 避坑提醒&lt;/h2&gt;&lt;h3 style=&quot;box-sizing: border-box;border-width: 0px 0px 0px 3px;border-style: solid;border-color: rgb(229, 229, 229) rgb(229, 229, 229) rgb(229, 229, 229) rgb(0, 152, 116);font-size: 15.4px;font-weight: bold;margin: 2em 8px 0.75em 0px;text-align: left;line-height: 1.2;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;padding-left: 8px;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__440&quot;&gt;这几个坑，我替你踩过了&lt;/h3&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__441&quot;&gt;&lt;strong style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: inherit;color: rgb(0, 152, 116);&quot; class=&quot;js_darkmode__442&quot;&gt;坑 1：单参数 Lambda 多写了括号，逻辑没错但养成了冗余习惯&lt;/strong&gt;&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__443&quot;&gt;❌ 多余写法：&lt;code style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;&quot; class=&quot;js_darkmode__444&quot;&gt;sensorData.Where((t) =&amp;gt; t &amp;gt; 85f)&lt;/code&gt;&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__445&quot;&gt;✅ 简洁写法：&lt;code style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;&quot; class=&quot;js_darkmode__446&quot;&gt;sensorData.Where(t =&amp;gt; t &amp;gt; 85f)&lt;/code&gt;&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__447&quot;&gt;📌 原因：单参数时括号可以省略，省掉括号代码更干净；多参数时括号才是必须的&lt;/p&gt;&lt;hr style=&quot;box-sizing: border-box;border-width: 2px 0px 0px;border-style: solid;border-color: rgba(0, 0, 0, 0.1);height: 0.4em;color: inherit;margin: 1.5em 0px;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;transform-origin: 0px 0px;transform: scale(1, 0.5);&quot; class=&quot;js_darkmode__448&quot;/&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__449&quot;&gt;&lt;strong style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: inherit;color: rgb(0, 152, 116);&quot; class=&quot;js_darkmode__450&quot;&gt;坑 2：多行 Lambda 忘记写&amp;nbsp;&lt;code style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;&quot; class=&quot;js_darkmode__451&quot;&gt;return&lt;/code&gt;，编译报错找不到原因&lt;/strong&gt;&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__452&quot;&gt;❌ 错误做法：&lt;code style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;&quot; class=&quot;js_darkmode__453&quot;&gt;Select(r =&amp;gt; { r.MoldTemp &amp;gt; 85f; })&lt;/code&gt;（花括号内没有 return）&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__454&quot;&gt;✅ 正确做法：&lt;code style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;&quot; class=&quot;js_darkmode__455&quot;&gt;Select(r =&amp;gt; { return r.MoldTemp &amp;gt; 85f; })&lt;/code&gt;&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__456&quot;&gt;📌 原因：单行 Lambda 可以省略&amp;nbsp;&lt;code style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;&quot; class=&quot;js_darkmode__457&quot;&gt;return&lt;/code&gt;，但加了花括号变成语句块之后，&lt;code style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;&quot; class=&quot;js_darkmode__458&quot;&gt;return&lt;/code&gt;&amp;nbsp;就是必须的，这是初学者最容易忽略的一个细节&lt;/p&gt;&lt;hr style=&quot;box-sizing: border-box;border-width: 2px 0px 0px;border-style: solid;border-color: rgba(0, 0, 0, 0.1);height: 0.4em;color: inherit;margin: 1.5em 0px;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;transform-origin: 0px 0px;transform: scale(1, 0.5);&quot; class=&quot;js_darkmode__459&quot;/&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__460&quot;&gt;&lt;strong style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: inherit;color: rgb(0, 152, 116);&quot; class=&quot;js_darkmode__461&quot;&gt;坑 3：用 Lambda 订阅事件后想退订，发现退不掉&lt;/strong&gt;&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__462&quot;&gt;❌ 错误做法：&lt;code style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;&quot; class=&quot;js_darkmode__463&quot;&gt;device.OnAlarm += (s, e) =&amp;gt; HandleAlarm(e);&lt;/code&gt;&amp;nbsp;之后用同样的 Lambda 退订&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__464&quot;&gt;✅ 正确做法：将 Lambda 赋给具名变量&amp;nbsp;&lt;code style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;&quot; class=&quot;js_darkmode__465&quot;&gt;EventHandler&amp;lt;AlarmEventArgs&amp;gt; h = (s, e) =&amp;gt; HandleAlarm(e);&lt;/code&gt;，用变量订阅和退订&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__466&quot;&gt;📌 原因：每次写 Lambda 都是一个新的对象实例，&lt;code style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;&quot; class=&quot;js_darkmode__467&quot;&gt;-=&lt;/code&gt;&amp;nbsp;找不到&amp;quot;同一个&amp;quot;，退订静默失败，这个坑在工业长期运行程序里会造成内存泄漏&lt;/p&gt;&lt;hr style=&quot;box-sizing: border-box;border-width: 2px 0px 0px;border-style: solid;border-color: rgba(0, 0, 0, 0.1);height: 0.4em;color: inherit;margin: 1.5em 0px;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;transform-origin: 0px 0px;transform: scale(1, 0.5);&quot; class=&quot;js_darkmode__468&quot;/&gt;&lt;h2 style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-size: 16.8px;font-weight: bold;margin: 4em auto 2em;text-align: center;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;display: table;padding: 0px 0.2em;color: rgb(255, 255, 255);background: rgb(0, 152, 116);&quot; class=&quot;js_darkmode__469&quot;&gt;📝 本节总结&lt;/h2&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__470&quot;&gt;「学完本节，你掌握了：」&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__471&quot;&gt;Lambda 表达式是&amp;quot;写在调用处的匿名方法&amp;quot;，用 =&amp;gt; 符号分隔参数和逻辑，单行可省花括号和&amp;nbsp;&lt;code style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;&quot; class=&quot;js_darkmode__472&quot;&gt;return&lt;/code&gt;，多行需要花括号和显式&amp;nbsp;&lt;code style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;&quot; class=&quot;js_darkmode__473&quot;&gt;return&lt;/code&gt;。你知道了 Lambda 和具名方法在功能上完全等价，只是适用场景不同——只用一次的简单逻辑用 Lambda，复用多次或逻辑复杂的用具名方法。你还掌握了 Lambda 与&amp;nbsp;&lt;code style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;&quot; class=&quot;js_darkmode__474&quot;&gt;Where&lt;/code&gt;、&lt;code style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;&quot; class=&quot;js_darkmode__475&quot;&gt;Select&lt;/code&gt;、&lt;code style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;&quot; class=&quot;js_darkmode__476&quot;&gt;OrderBy&lt;/code&gt;、&lt;code style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;&quot; class=&quot;js_darkmode__477&quot;&gt;Count&lt;/code&gt;&amp;nbsp;等 LINQ 方法的基本组合方式，能在工厂数据筛选场景中直接上手。&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__478&quot;&gt;Lambda 是后续 LINQ 深度应用的钥匙，这节打好基础，后面会越来越顺。&lt;/p&gt;&lt;hr style=&quot;box-sizing: border-box;border-width: 2px 0px 0px;border-style: solid;border-color: rgba(0, 0, 0, 0.1);height: 0.4em;color: inherit;margin: 1.5em 0px;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;transform-origin: 0px 0px;transform: scale(1, 0.5);&quot; class=&quot;js_darkmode__479&quot;/&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__480&quot;&gt;📖&amp;nbsp;&lt;strong style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: inherit;color: rgb(0, 152, 116);&quot; class=&quot;js_darkmode__481&quot;&gt;本文是《C# 工业数字化应用开发专家》系列第 051 节&lt;/strong&gt;&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__482&quot;&gt;上一节：【事件（Event）：发布订阅模型】&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__483&quot;&gt;下一节：【Func&amp;lt;&amp;gt; 与 Action&amp;lt;&amp;gt; 委托】（明天更新）&lt;/p&gt;&lt;hr style=&quot;box-sizing: border-box;border-width: 2px 0px 0px;border-style: solid;border-color: rgba(0, 0, 0, 0.1);height: 0.4em;color: inherit;margin: 1.5em 0px;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;transform-origin: 0px 0px;transform: scale(1, 0.5);&quot; class=&quot;js_darkmode__484&quot;/&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__485&quot;&gt;💬&amp;nbsp;&lt;strong style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: inherit;color: rgb(0, 152, 116);&quot; class=&quot;js_darkmode__486&quot;&gt;你在工厂数据处理里有没有写过大量&amp;quot;筛选+判断&amp;quot;的重复代码？&lt;/strong&gt;&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__487&quot;&gt;是设备状态过滤、质检数据清洗，还是报表数据汇总？欢迎在评论区说说你的场景，说不定下一篇案例就从你这里来。&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);&quot; class=&quot;js_darkmode__488&quot;&gt;🔔&amp;nbsp;&lt;strong style=&quot;box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif;font-size: inherit;color: rgb(0, 152, 116);&quot; class=&quot;js_darkmode__489&quot;&gt;还没关注的同学记得点击关注&lt;/strong&gt;，系列课程持续更新，学完这 420 节，从工厂小白到工业软件开发专家，我们一起走。&lt;/p&gt;&lt;/section&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Thu, 08 Oct 2026 11:08:13 +0800</pubDate></item><item><title>Blazor：10K+ Star！C# 全栈 Web 开发，5 分钟让 .NET 程序员征服浏览器</title><link>https://www.codepub.top/post/702.html</link><description>&lt;blockquote style=&quot;line-height: 1.75; margin: 20px 0px; padding: 10px 10px 10px 20px; border-style: none none none solid; border-width: 3px; border-color: rgba(0, 0, 0, 0.4); border-radius: 0px; background: none left top / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0.05); width: auto; height: auto; box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px; overflow: auto;&quot; class=&quot;js_darkmode__6 js_darkmode__text__7&quot;&gt;&lt;p style=&quot;text-indent: 0em; padding: 8px 0px; font-size: 16px; line-height: 1.8em; letter-spacing: 0em; margin-top: 0px; margin-bottom: 0px;&quot; class=&quot;js_darkmode__7 js_darkmode__text__8&quot;&gt;&lt;strong style=&quot;font-weight: bold; background: none left top / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0); width: auto; height: auto; margin: 0px; padding: 0px; border-style: none; border-width: 3px; border-color: rgba(0, 0, 0, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__8 js_darkmode__text__9&quot;&gt;还在被迫学 JavaScript 写前端？&lt;/strong&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__11&quot;&gt; 身为 .NET 开发者，你是否想过用 C# 就能写 Web 应用？Blazor 让 C# 代码直接在浏览器里跑，全栈开发技术栈统一 100%！&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;h2 data-tool=&quot;mdnice编辑器&quot; style=&quot;margin: 44px 0px 16px; padding: 0px; line-height: 1.5;&quot; class=&quot;js_darkmode__text__12&quot;&gt;&lt;span style=&quot;font-size: 18px; color: #222222; letter-spacing: 0em; display: block; line-height: 1.5 !important;&quot; class=&quot;js_darkmode__9 js_darkmode__text__13&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__14&quot;&gt;一、项目背景及简介&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; style=&quot;color: rgb(62, 62, 62); font-size: 15px; line-height: 1.75; letter-spacing: 0em; text-indent: 0em; margin-top: 12px; margin-bottom: 12px; padding: 8px 0px;&quot; class=&quot;js_darkmode__10 js_darkmode__text__15&quot;&gt;&lt;strong style=&quot;color: rgb(0, 0, 0); font-weight: bold; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: left top; background-repeat: no-repeat; background-size: auto; width: auto; height: auto; margin: 0px; padding: 0px; border-style: none; border-width: 3px; border-color: rgba(0, 0, 0, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__11 js_darkmode__text__16&quot;&gt;Blazor&lt;/strong&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__18&quot;&gt; 是 .NET 生态最激动人心的技术突破，10K+ GitHub Star，让 C# 代码直接在浏览器中运行。通过 WebAssembly 或服务器端渲染，.NET 开发者终于可以用熟悉的技术栈征服 Web 前端——&lt;/span&gt;&lt;strong style=&quot;color: rgb(0, 0, 0); font-weight: bold; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: left top; background-repeat: no-repeat; background-size: auto; width: auto; height: auto; margin: 0px; padding: 0px; border-style: none; border-width: 3px; border-color: rgba(0, 0, 0, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__12 js_darkmode__text__19&quot;&gt;一套语言、一套工具、一套生态系统&lt;/strong&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__21&quot;&gt;。&lt;img data-src=&quot;https://mmbiz.qpic.cn/mmbiz_png/ugMtG2z4CGU5p9Lc4NQhXne8RXjUibkJP1cBUkmmF2aIaz8LZo5cA9iaRUr4Aibich9ibmWI3NjQBEAyKA4pwK8lS5JvhhhibYzQjiarZNDicKnB1ak/640?wx_fmt=png&amp;amp;from=appmsg#imgIndex=0&quot; class=&quot;rich_pages wxw-img&quot; data-ratio=&quot;0.5444444444444444&quot; data-type=&quot;png&quot; data-w=&quot;1080&quot; data-imgfileid=&quot;100029737&quot; data-aistatus=&quot;1&quot; data-original-style=&quot;null&quot; data-index=&quot;0&quot; src=&quot;https://mmbiz.qpic.cn/mmbiz_png/ugMtG2z4CGU5p9Lc4NQhXne8RXjUibkJP1cBUkmmF2aIaz8LZo5cA9iaRUr4Aibich9ibmWI3NjQBEAyKA4pwK8lS5JvhhhibYzQjiarZNDicKnB1ak/640?wx_fmt=png&amp;from=appmsg&amp;tp=wxpic&amp;wxfrom=5&amp;wx_lazy=1#imgIndex=0&quot; _width=&quot;384px&quot; __sec_open_place_holder__=&quot;true&quot; style=&quot;height: auto !important; visibility: visible !important; width: 323.969px !important;&quot; alt=&quot;图片&quot; data-before-load-time=&quot;1791380872491&quot; data-report-img-idx=&quot;0&quot; data-fail=&quot;0&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; style=&quot;color: rgb(62, 62, 62); font-size: 15px; line-height: 1.75; letter-spacing: 0em; text-indent: 0em; margin-top: 12px; margin-bottom: 12px; padding: 8px 0px;&quot; class=&quot;js_darkmode__13 js_darkmode__text__22&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__23&quot;&gt;由微软于 2018 年首次发布，2020 年随 .NET 5 正式稳定。.NET 8 引入 Unified 统一渲染，组件级选择服务端/客户端模式。对于拥有大量 .NET 开发者的企业，Blazor 意味着前端开发不再需要额外的技术栈切换。&lt;/span&gt;&lt;/p&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; style=&quot;color: rgb(62, 62, 62); font-size: 15px; line-height: 1.75; letter-spacing: 0em; text-indent: 0em; margin-top: 12px; margin-bottom: 12px; padding: 8px 0px;&quot; class=&quot;js_darkmode__14 js_darkmode__text__24&quot;&gt;&lt;strong style=&quot;color: rgb(0, 0, 0); font-weight: bold; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: left top; background-repeat: no-repeat; background-size: auto; width: auto; height: auto; margin: 0px; padding: 0px; border-style: none; border-width: 3px; border-color: rgba(0, 0, 0, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__15 js_darkmode__text__25&quot;&gt;项目地址&lt;/strong&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__27&quot;&gt;：https://github.com/dotnet/blazor&lt;img data-src=&quot;https://mmbiz.qpic.cn/sz_mmbiz_png/ugMtG2z4CGUibtZ5LAyvC9mibpicWSibKotKoIbialFgyaayFZdiaPMibbVN2804YEx9qWGuQTZiaUQ8WJgCNsK1c3GqqTbTKycqqibflgcTXalKaiaW4/640?wx_fmt=png&amp;amp;from=appmsg#imgIndex=1&quot; class=&quot;rich_pages wxw-img&quot; data-ratio=&quot;0.5444444444444444&quot; data-type=&quot;png&quot; data-w=&quot;1080&quot; data-imgfileid=&quot;100029738&quot; data-aistatus=&quot;1&quot; data-original-style=&quot;null&quot; data-index=&quot;1&quot; src=&quot;https://mmbiz.qpic.cn/sz_mmbiz_png/ugMtG2z4CGUibtZ5LAyvC9mibpicWSibKotKoIbialFgyaayFZdiaPMibbVN2804YEx9qWGuQTZiaUQ8WJgCNsK1c3GqqTbTKycqqibflgcTXalKaiaW4/640?wx_fmt=png&amp;from=appmsg&amp;tp=wxpic&amp;wxfrom=5&amp;wx_lazy=1#imgIndex=1&quot; _width=&quot;384px&quot; __sec_open_place_holder__=&quot;true&quot; style=&quot;height: auto !important; visibility: visible !important; width: 323.969px !important;&quot; alt=&quot;图片&quot; data-before-load-time=&quot;1791380873023&quot; data-report-img-idx=&quot;1&quot; data-fail=&quot;0&quot;/&gt;&lt;/span&gt;&lt;span leaf=&quot;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;strong style=&quot;color: rgb(0, 0, 0); font-weight: bold; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: left top; background-repeat: no-repeat; background-size: auto; width: auto; height: auto; margin: 0px; padding: 0px; border-style: none; border-width: 3px; border-color: rgba(0, 0, 0, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__16&quot;&gt;&lt;br/&gt;&lt;/strong&gt;&lt;/p&gt;&lt;h2 data-tool=&quot;mdnice编辑器&quot; style=&quot;margin: 44px 0px 16px; padding: 0px; line-height: 1.5;&quot; class=&quot;js_darkmode__text__28&quot;&gt;&lt;span style=&quot;font-size: 18px; color: #222222; letter-spacing: 0em; display: block; line-height: 1.5 !important;&quot; class=&quot;js_darkmode__17 js_darkmode__text__29&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__30&quot;&gt;二、目标客户&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;&lt;section data-tool=&quot;mdnice编辑器&quot; style=&quot;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;overflow-x: auto;&quot; class=&quot;js_darkmode__text__31&quot;&gt;&lt;table class=&quot;js_darkmode__text__32&quot;&gt;&lt;thead class=&quot;js_darkmode__text__33&quot;&gt;&lt;tr class=&quot;js_darkmode__text__34 firstRow&quot;&gt;&lt;th style=&quot;font-size: 16px; line-height: 1.5em; letter-spacing: 0em; text-align: left; background: none left top / auto no-repeat scroll padding-box border-box rgb(240, 240, 240); height: auto; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px; min-width: 85px;&quot; class=&quot;js_darkmode__18 js_darkmode__text__35&quot;&gt;&lt;section class=&quot;js_darkmode__text__36&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__37&quot;&gt;客户群体&lt;/span&gt;&lt;/section&gt;&lt;/th&gt;&lt;th style=&quot;font-size: 16px; line-height: 1.5em; letter-spacing: 0em; text-align: left; background: none left top / auto no-repeat scroll padding-box border-box rgb(240, 240, 240); height: auto; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px; min-width: 85px;&quot; class=&quot;js_darkmode__19 js_darkmode__text__38&quot;&gt;&lt;section class=&quot;js_darkmode__text__39&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__40&quot;&gt;痛点需求&lt;/span&gt;&lt;/section&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody class=&quot;js_darkmode__text__41&quot;&gt;&lt;tr style=&quot;background: none left top / auto no-repeat scroll padding-box border-box rgb(255, 255, 255); width: auto; height: auto;&quot; class=&quot;js_darkmode__20 js_darkmode__text__42&quot;&gt;&lt;td style=&quot;min-width: 85px; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__21 js_darkmode__text__43&quot;&gt;&lt;section class=&quot;js_darkmode__text__44&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__45&quot;&gt;.NET 开发团队&lt;/span&gt;&lt;/section&gt;&lt;/td&gt;&lt;td style=&quot;min-width: 85px; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__22 js_darkmode__text__46&quot;&gt;&lt;section class=&quot;js_darkmode__text__47&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__48&quot;&gt;不想学 JavaScript/TypeScript，技术栈统一&lt;/span&gt;&lt;/section&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;background: none left top / auto no-repeat scroll padding-box border-box rgb(248, 248, 248); width: auto; height: auto;&quot; class=&quot;js_darkmode__23 js_darkmode__text__49&quot;&gt;&lt;td style=&quot;min-width: 85px; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__24 js_darkmode__text__50&quot;&gt;&lt;section class=&quot;js_darkmode__text__51&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__52&quot;&gt;企业级应用&lt;/span&gt;&lt;/section&gt;&lt;/td&gt;&lt;td style=&quot;min-width: 85px; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__25 js_darkmode__text__53&quot;&gt;&lt;section class=&quot;js_darkmode__text__54&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__55&quot;&gt;需要强类型、可维护的全栈方案&lt;/span&gt;&lt;/section&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;background: none left top / auto no-repeat scroll padding-box border-box rgb(255, 255, 255); width: auto; height: auto;&quot; class=&quot;js_darkmode__26 js_darkmode__text__56&quot;&gt;&lt;td style=&quot;min-width: 85px; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__27 js_darkmode__text__57&quot;&gt;&lt;section class=&quot;js_darkmode__text__58&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__59&quot;&gt;全栈工程师&lt;/span&gt;&lt;/section&gt;&lt;/td&gt;&lt;td style=&quot;min-width: 85px; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__28 js_darkmode__text__60&quot;&gt;&lt;section class=&quot;js_darkmode__text__61&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__62&quot;&gt;希望前后端用同一套语言和工具&lt;/span&gt;&lt;/section&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;background: none left top / auto no-repeat scroll padding-box border-box rgb(248, 248, 248); width: auto; height: auto;&quot; class=&quot;js_darkmode__29 js_darkmode__text__63&quot;&gt;&lt;td style=&quot;min-width: 85px; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__30 js_darkmode__text__64&quot;&gt;&lt;section class=&quot;js_darkmode__text__65&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__66&quot;&gt;桌面应用迁移&lt;/span&gt;&lt;/section&gt;&lt;/td&gt;&lt;td style=&quot;min-width: 85px; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__31 js_darkmode__text__67&quot;&gt;&lt;section class=&quot;js_darkmode__text__68&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__69&quot;&gt;将 WPF/WinForms 技能迁移到 Web&lt;/span&gt;&lt;/section&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;background: none left top / auto no-repeat scroll padding-box border-box rgb(255, 255, 255); width: auto; height: auto;&quot; class=&quot;js_darkmode__32 js_darkmode__text__70&quot;&gt;&lt;td style=&quot;min-width: 85px; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__33 js_darkmode__text__71&quot;&gt;&lt;section class=&quot;js_darkmode__text__72&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__73&quot;&gt;实时交互应用&lt;/span&gt;&lt;/section&gt;&lt;/td&gt;&lt;td style=&quot;min-width: 85px; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__34 js_darkmode__text__74&quot;&gt;&lt;section class=&quot;js_darkmode__text__75&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__76&quot;&gt;需要 SignalR 级实时通信能力&lt;/span&gt;&lt;/section&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/section&gt;&lt;/p&gt;&lt;h2 data-tool=&quot;mdnice编辑器&quot; style=&quot;margin: 44px 0px 16px; padding: 0px; line-height: 1.5;&quot; class=&quot;js_darkmode__text__77&quot;&gt;&lt;span style=&quot;font-size: 18px; color: #222222; letter-spacing: 0em; display: block; line-height: 1.5 !important;&quot; class=&quot;js_darkmode__35 js_darkmode__text__78&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__79&quot;&gt;三、平台定位&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; style=&quot;color: rgb(62, 62, 62); font-size: 15px; line-height: 1.75; letter-spacing: 0em; text-indent: 0em; margin-top: 12px; margin-bottom: 12px; padding: 8px 0px;&quot; class=&quot;js_darkmode__36 js_darkmode__text__80&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__81&quot;&gt;Blazor 定位为&lt;/span&gt;&lt;strong style=&quot;color: rgb(0, 0, 0); font-weight: bold; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: left top; background-repeat: no-repeat; background-size: auto; width: auto; height: auto; margin: 0px; padding: 0px; border-style: none; border-width: 3px; border-color: rgba(0, 0, 0, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__37 js_darkmode__text__82&quot;&gt;&amp;quot;.NET 开发者的 Web 开发入场券&amp;quot;&lt;/strong&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__84&quot;&gt;——不需要学习新的语言、新的生态系统，用熟悉的 C# 和 .NET 就能构建现代 Web 应用。&lt;/span&gt;&lt;/p&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; style=&quot;color: rgb(62, 62, 62); font-size: 15px; line-height: 1.75; letter-spacing: 0em; text-indent: 0em; margin-top: 12px; margin-bottom: 12px; padding: 8px 0px;&quot; class=&quot;js_darkmode__38 js_darkmode__text__85&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__86&quot;&gt;核心愿景：让数百万 .NET 开发者无需上下文切换，就能成为全栈工程师。浏览器不再是 JavaScript 的专属领地。&lt;img data-src=&quot;https://mmbiz.qpic.cn/sz_mmbiz_png/ugMtG2z4CGXSXvnfsEHo2ibeSQWMONV4dTicwlM7DEJObWreUoQogqbIUmw1GRbzA7E1VrxAEhgMmSWicDa6AvfD9DqO9T9RGVkibBVRRZKz4Yo/640?wx_fmt=png&amp;amp;from=appmsg#imgIndex=2&quot; class=&quot;rich_pages wxw-img&quot; data-ratio=&quot;0.5444444444444444&quot; data-type=&quot;png&quot; data-w=&quot;1080&quot; data-imgfileid=&quot;100029736&quot; data-aistatus=&quot;1&quot; data-original-style=&quot;null&quot; data-index=&quot;2&quot; src=&quot;https://mmbiz.qpic.cn/sz_mmbiz_png/ugMtG2z4CGXSXvnfsEHo2ibeSQWMONV4dTicwlM7DEJObWreUoQogqbIUmw1GRbzA7E1VrxAEhgMmSWicDa6AvfD9DqO9T9RGVkibBVRRZKz4Yo/640?wx_fmt=png&amp;from=appmsg&amp;tp=wxpic&amp;wxfrom=5&amp;wx_lazy=1#imgIndex=2&quot; _width=&quot;384px&quot; __sec_open_place_holder__=&quot;true&quot; style=&quot;height: auto !important; visibility: visible !important; width: 323.969px !important;&quot; alt=&quot;图片&quot; data-before-load-time=&quot;1791380875367&quot; data-report-img-idx=&quot;2&quot; data-fail=&quot;0&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;h2 data-tool=&quot;mdnice编辑器&quot; style=&quot;margin: 44px 0px 16px; padding: 0px; line-height: 1.5;&quot; class=&quot;js_darkmode__text__87&quot;&gt;&lt;span style=&quot;font-size: 18px; color: #222222; letter-spacing: 0em; display: block; line-height: 1.5 !important;&quot; class=&quot;js_darkmode__39 js_darkmode__text__88&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__89&quot;&gt;四、平台技术&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;&lt;section data-tool=&quot;mdnice编辑器&quot; style=&quot;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;overflow-x: auto;&quot; class=&quot;js_darkmode__text__90&quot;&gt;&lt;table class=&quot;js_darkmode__text__91&quot;&gt;&lt;thead class=&quot;js_darkmode__text__92&quot;&gt;&lt;tr class=&quot;js_darkmode__text__93 firstRow&quot;&gt;&lt;th style=&quot;font-size: 16px; line-height: 1.5em; letter-spacing: 0em; text-align: left; background: none left top / auto no-repeat scroll padding-box border-box rgb(240, 240, 240); height: auto; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px; min-width: 85px;&quot; class=&quot;js_darkmode__40 js_darkmode__text__94&quot;&gt;&lt;section class=&quot;js_darkmode__text__95&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__96&quot;&gt;技术选型&lt;/span&gt;&lt;/section&gt;&lt;/th&gt;&lt;th style=&quot;font-size: 16px; line-height: 1.5em; letter-spacing: 0em; text-align: left; background: none left top / auto no-repeat scroll padding-box border-box rgb(240, 240, 240); height: auto; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px; min-width: 85px;&quot; class=&quot;js_darkmode__41 js_darkmode__text__97&quot;&gt;&lt;section class=&quot;js_darkmode__text__98&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__99&quot;&gt;选型理由&lt;/span&gt;&lt;/section&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody class=&quot;js_darkmode__text__100&quot;&gt;&lt;tr style=&quot;background: none left top / auto no-repeat scroll padding-box border-box rgb(255, 255, 255); width: auto; height: auto;&quot; class=&quot;js_darkmode__42 js_darkmode__text__101&quot;&gt;&lt;td style=&quot;min-width: 85px; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__43 js_darkmode__text__102&quot;&gt;&lt;strong style=&quot;font-weight: bold; background: none left top / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0); width: auto; height: auto; margin: 0px; padding: 0px; border-style: none; border-width: 3px; border-color: rgba(0, 0, 0, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__44 js_darkmode__text__103&quot;&gt;WebAssembly&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;min-width: 85px; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__45 js_darkmode__text__105&quot;&gt;&lt;section class=&quot;js_darkmode__text__106&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__107&quot;&gt;C# 代码编译为 WASM，浏览器原生执行&lt;/span&gt;&lt;/section&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;background: none left top / auto no-repeat scroll padding-box border-box rgb(248, 248, 248); width: auto; height: auto;&quot; class=&quot;js_darkmode__46 js_darkmode__text__108&quot;&gt;&lt;td style=&quot;min-width: 85px; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__47 js_darkmode__text__109&quot;&gt;&lt;strong style=&quot;font-weight: bold; background: none left top / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0); width: auto; height: auto; margin: 0px; padding: 0px; border-style: none; border-width: 3px; border-color: rgba(0, 0, 0, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__48 js_darkmode__text__110&quot;&gt;SignalR 实时通信&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;min-width: 85px; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__49 js_darkmode__text__112&quot;&gt;&lt;section class=&quot;js_darkmode__text__113&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__114&quot;&gt;Server 模式通过 WebSocket 实现 UI 同步&lt;/span&gt;&lt;/section&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;background: none left top / auto no-repeat scroll padding-box border-box rgb(255, 255, 255); width: auto; height: auto;&quot; class=&quot;js_darkmode__50 js_darkmode__text__115&quot;&gt;&lt;td style=&quot;min-width: 85px; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__51 js_darkmode__text__116&quot;&gt;&lt;strong style=&quot;font-weight: bold; background: none left top / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0); width: auto; height: auto; margin: 0px; padding: 0px; border-style: none; border-width: 3px; border-color: rgba(0, 0, 0, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__52 js_darkmode__text__117&quot;&gt;Unified 渲染&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;min-width: 85px; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__53 js_darkmode__text__119&quot;&gt;&lt;section class=&quot;js_darkmode__text__120&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__121&quot;&gt;.NET 8 组件级选择服务端/客户端模式&lt;/span&gt;&lt;/section&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;background: none left top / auto no-repeat scroll padding-box border-box rgb(248, 248, 248); width: auto; height: auto;&quot; class=&quot;js_darkmode__54 js_darkmode__text__122&quot;&gt;&lt;td style=&quot;min-width: 85px; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__55 js_darkmode__text__123&quot;&gt;&lt;strong style=&quot;font-weight: bold; background: none left top / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0); width: auto; height: auto; margin: 0px; padding: 0px; border-style: none; border-width: 3px; border-color: rgba(0, 0, 0, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__56 js_darkmode__text__124&quot;&gt;Razor 组件模型&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;min-width: 85px; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__57 js_darkmode__text__126&quot;&gt;&lt;code class=&quot;js_darkmode__text__127&quot;&gt;.razor&lt;/code&gt;&lt;section class=&quot;js_darkmode__text__129&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__130&quot;&gt;&amp;nbsp;文件融合 HTML 模板与 C# 代码&lt;/span&gt;&lt;/section&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;background: none left top / auto no-repeat scroll padding-box border-box rgb(255, 255, 255); width: auto; height: auto;&quot; class=&quot;js_darkmode__58 js_darkmode__text__131&quot;&gt;&lt;td style=&quot;min-width: 85px; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__59 js_darkmode__text__132&quot;&gt;&lt;strong style=&quot;font-weight: bold; background: none left top / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0); width: auto; height: auto; margin: 0px; padding: 0px; border-style: none; border-width: 3px; border-color: rgba(0, 0, 0, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__60 js_darkmode__text__133&quot;&gt;JS 互操作&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;min-width: 85px; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__61 js_darkmode__text__135&quot;&gt;&lt;code class=&quot;js_darkmode__text__136&quot;&gt;IJSRuntime&lt;/code&gt;&lt;section class=&quot;js_darkmode__text__138&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__139&quot;&gt;&amp;nbsp;无缝调用现有 JS 库&lt;/span&gt;&lt;/section&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;background: none left top / auto no-repeat scroll padding-box border-box rgb(248, 248, 248); width: auto; height: auto;&quot; class=&quot;js_darkmode__62 js_darkmode__text__140&quot;&gt;&lt;td style=&quot;min-width: 85px; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__63 js_darkmode__text__141&quot;&gt;&lt;strong style=&quot;font-weight: bold; background: none left top / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0); width: auto; height: auto; margin: 0px; padding: 0px; border-style: none; border-width: 3px; border-color: rgba(0, 0, 0, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__64 js_darkmode__text__142&quot;&gt;DI 集成&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;min-width: 85px; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__65 js_darkmode__text__144&quot;&gt;&lt;section class=&quot;js_darkmode__text__145&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__146&quot;&gt;与 ASP.NET Core DI 系统无缝集成&lt;/span&gt;&lt;/section&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/section&gt;&lt;/p&gt;&lt;h2 data-tool=&quot;mdnice编辑器&quot; style=&quot;margin: 44px 0px 16px; padding: 0px; line-height: 1.5;&quot; class=&quot;js_darkmode__text__147&quot;&gt;&lt;span style=&quot;font-size: 18px; color: #222222; letter-spacing: 0em; display: block; line-height: 1.5 !important;&quot; class=&quot;js_darkmode__66 js_darkmode__text__148&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__149&quot;&gt;五、平台核心功能&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;&lt;ul style=&quot;margin-top: 8px; margin-bottom: 8px; padding: 0px 0px 0px 25px;&quot; class=&quot;js_darkmode__67 js_darkmode__text__150 list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;section style=&quot;margin-top: 5px; margin-bottom: 5px; color: rgb(1, 1, 1); font-size: 16px; line-height: 1.8em; letter-spacing: 0em;&quot; class=&quot;js_darkmode__68 js_darkmode__text__152&quot;&gt;&lt;strong style=&quot;color: rgb(0, 0, 0); font-weight: bold; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: left top; background-repeat: no-repeat; background-size: auto; width: auto; height: auto; margin: 0px; padding: 0px; border-style: none; border-width: 3px; border-color: rgba(0, 0, 0, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__69 js_darkmode__text__153&quot;&gt;C# 全栈开发&lt;/strong&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__155&quot;&gt;：前端后端统一语言，代码复用率提升 60%+&lt;/span&gt;&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section style=&quot;margin-top: 5px; margin-bottom: 5px; color: rgb(1, 1, 1); font-size: 16px; line-height: 1.8em; letter-spacing: 0em;&quot; class=&quot;js_darkmode__70 js_darkmode__text__157&quot;&gt;&lt;strong style=&quot;color: rgb(0, 0, 0); font-weight: bold; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: left top; background-repeat: no-repeat; background-size: auto; width: auto; height: auto; margin: 0px; padding: 0px; border-style: none; border-width: 3px; border-color: rgba(0, 0, 0, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__71 js_darkmode__text__158&quot;&gt;WebAssembly 托管&lt;/strong&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__160&quot;&gt;：.NET 运行时编译为 WASM，浏览器原生执行&lt;/span&gt;&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section style=&quot;margin-top: 5px; margin-bottom: 5px; color: rgb(1, 1, 1); font-size: 16px; line-height: 1.8em; letter-spacing: 0em;&quot; class=&quot;js_darkmode__72 js_darkmode__text__162&quot;&gt;&lt;strong style=&quot;color: rgb(0, 0, 0); font-weight: bold; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: left top; background-repeat: no-repeat; background-size: auto; width: auto; height: auto; margin: 0px; padding: 0px; border-style: none; border-width: 3px; border-color: rgba(0, 0, 0, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__73 js_darkmode__text__163&quot;&gt;Server 模式&lt;/strong&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__165&quot;&gt;：组件服务端渲染，SignalR 同步 UI，首屏极快&lt;/span&gt;&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section style=&quot;margin-top: 5px; margin-bottom: 5px; color: rgb(1, 1, 1); font-size: 16px; line-height: 1.8em; letter-spacing: 0em;&quot; class=&quot;js_darkmode__74 js_darkmode__text__167&quot;&gt;&lt;strong style=&quot;color: rgb(0, 0, 0); font-weight: bold; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: left top; background-repeat: no-repeat; background-size: auto; width: auto; height: auto; margin: 0px; padding: 0px; border-style: none; border-width: 3px; border-color: rgba(0, 0, 0, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__75 js_darkmode__text__168&quot;&gt;Unified 渲染&lt;/strong&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__170&quot;&gt;：.NET 8 逐组件选择渲染模式，灵活最优&lt;/span&gt;&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section style=&quot;margin-top: 5px; margin-bottom: 5px; color: rgb(1, 1, 1); font-size: 16px; line-height: 1.8em; letter-spacing: 0em;&quot; class=&quot;js_darkmode__76 js_darkmode__text__172&quot;&gt;&lt;strong style=&quot;color: rgb(0, 0, 0); font-weight: bold; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: left top; background-repeat: no-repeat; background-size: auto; width: auto; height: auto; margin: 0px; padding: 0px; border-style: none; border-width: 3px; border-color: rgba(0, 0, 0, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__77 js_darkmode__text__173&quot;&gt;Razor 语法&lt;/strong&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__175&quot;&gt;：HTML + C# 融合，组件化开发直观高效&lt;/span&gt;&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section style=&quot;margin-top: 5px; margin-bottom: 5px; color: rgb(1, 1, 1); font-size: 16px; line-height: 1.8em; letter-spacing: 0em;&quot; class=&quot;js_darkmode__78 js_darkmode__text__177&quot;&gt;&lt;strong style=&quot;color: rgb(0, 0, 0); font-weight: bold; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: left top; background-repeat: no-repeat; background-size: auto; width: auto; height: auto; margin: 0px; padding: 0px; border-style: none; border-width: 3px; border-color: rgba(0, 0, 0, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__79 js_darkmode__text__178&quot;&gt;JavaScript 互操作&lt;/strong&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__180&quot;&gt;：兼容 Chart.js、D3.js 等现有生态&lt;/span&gt;&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section style=&quot;margin-top: 5px; margin-bottom: 5px; color: rgb(1, 1, 1); font-size: 16px; line-height: 1.8em; letter-spacing: 0em;&quot; class=&quot;js_darkmode__80 js_darkmode__text__182&quot;&gt;&lt;strong style=&quot;color: rgb(0, 0, 0); font-weight: bold; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: left top; background-repeat: no-repeat; background-size: auto; width: auto; height: auto; margin: 0px; padding: 0px; border-style: none; border-width: 3px; border-color: rgba(0, 0, 0, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__81 js_darkmode__text__183&quot;&gt;依赖注入&lt;/strong&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__185&quot;&gt;：ASP.NET Core DI 系统贯穿前后端&lt;/span&gt;&lt;/section&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;section style=&quot;margin-top: 5px; margin-bottom: 5px; color: rgb(1, 1, 1); font-size: 16px; line-height: 1.8em; letter-spacing: 0em;&quot; class=&quot;js_darkmode__82&quot;&gt;&lt;span leaf=&quot;&quot;&gt;&lt;img data-src=&quot;https://mmbiz.qpic.cn/mmbiz_png/ugMtG2z4CGUtG74Iqm0nvBb9pskttob9icRG6jPQFbHlp0zt34ia3DJkHf7dxJzRGDrUn2UAPezcA3GwW2rxibicqjjZE4gNoMTawTors0F9c4Q/640?wx_fmt=png&amp;amp;from=appmsg#imgIndex=3&quot; class=&quot;rich_pages wxw-img&quot; data-ratio=&quot;0.5444444444444444&quot; data-type=&quot;png&quot; data-w=&quot;1080&quot; data-imgfileid=&quot;100029735&quot; data-aistatus=&quot;1&quot; data-original-style=&quot;null&quot; data-index=&quot;3&quot; src=&quot;https://mmbiz.qpic.cn/mmbiz_png/ugMtG2z4CGUtG74Iqm0nvBb9pskttob9icRG6jPQFbHlp0zt34ia3DJkHf7dxJzRGDrUn2UAPezcA3GwW2rxibicqjjZE4gNoMTawTors0F9c4Q/640?wx_fmt=png&amp;from=appmsg&amp;tp=wxpic&amp;wxfrom=5&amp;wx_lazy=1#imgIndex=3&quot; _width=&quot;384px&quot; __sec_open_place_holder__=&quot;true&quot; style=&quot;height: auto !important; visibility: visible !important; width: 323.969px !important;&quot; alt=&quot;图片&quot; data-before-load-time=&quot;1791380875717&quot; data-report-img-idx=&quot;3&quot; data-fail=&quot;0&quot;/&gt;&lt;/span&gt;&lt;/section&gt;&lt;/p&gt;&lt;h2 data-tool=&quot;mdnice编辑器&quot; style=&quot;margin: 44px 0px 16px; padding: 0px; line-height: 1.5;&quot; class=&quot;js_darkmode__text__186&quot;&gt;&lt;span style=&quot;font-size: 18px; color: #222222; letter-spacing: 0em; display: block; line-height: 1.5 !important;&quot; class=&quot;js_darkmode__83 js_darkmode__text__187&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__188&quot;&gt;六、平台独特优势&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;&lt;section data-tool=&quot;mdnice编辑器&quot; style=&quot;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;overflow-x: auto;&quot; class=&quot;js_darkmode__text__189&quot;&gt;&lt;table class=&quot;js_darkmode__text__190&quot;&gt;&lt;thead class=&quot;js_darkmode__text__191&quot;&gt;&lt;tr class=&quot;js_darkmode__text__192 firstRow&quot;&gt;&lt;th style=&quot;font-size: 16px; line-height: 1.5em; letter-spacing: 0em; text-align: left; background: none left top / auto no-repeat scroll padding-box border-box rgb(240, 240, 240); height: auto; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px; min-width: 85px;&quot; class=&quot;js_darkmode__84 js_darkmode__text__193&quot;&gt;&lt;section class=&quot;js_darkmode__text__194&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__195&quot;&gt;对比维度&lt;/span&gt;&lt;/section&gt;&lt;/th&gt;&lt;th style=&quot;font-size: 16px; line-height: 1.5em; letter-spacing: 0em; text-align: left; background: none left top / auto no-repeat scroll padding-box border-box rgb(240, 240, 240); height: auto; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px; min-width: 85px;&quot; class=&quot;js_darkmode__85 js_darkmode__text__196&quot;&gt;&lt;section class=&quot;js_darkmode__text__197&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__198&quot;&gt;Blazor&lt;/span&gt;&lt;/section&gt;&lt;/th&gt;&lt;th style=&quot;font-size: 16px; line-height: 1.5em; letter-spacing: 0em; text-align: left; background: none left top / auto no-repeat scroll padding-box border-box rgb(240, 240, 240); height: auto; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px; min-width: 85px;&quot; class=&quot;js_darkmode__86 js_darkmode__text__199&quot;&gt;&lt;section class=&quot;js_darkmode__text__200&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__201&quot;&gt;React/Vue/Angular&lt;/span&gt;&lt;/section&gt;&lt;/th&gt;&lt;th style=&quot;font-size: 16px; line-height: 1.5em; letter-spacing: 0em; text-align: left; background: none left top / auto no-repeat scroll padding-box border-box rgb(240, 240, 240); height: auto; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px; min-width: 85px;&quot; class=&quot;js_darkmode__87 js_darkmode__text__202&quot;&gt;&lt;section class=&quot;js_darkmode__text__203&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__204&quot;&gt;ASP.NET MVC&lt;/span&gt;&lt;/section&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody class=&quot;js_darkmode__text__205&quot;&gt;&lt;tr style=&quot;background: none left top / auto no-repeat scroll padding-box border-box rgb(255, 255, 255); width: auto; height: auto;&quot; class=&quot;js_darkmode__88 js_darkmode__text__206&quot;&gt;&lt;td style=&quot;min-width: 85px; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__89 js_darkmode__text__207&quot;&gt;&lt;section class=&quot;js_darkmode__text__208&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__209&quot;&gt;开发语言&lt;/span&gt;&lt;/section&gt;&lt;/td&gt;&lt;td style=&quot;min-width: 85px; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__90 js_darkmode__text__210&quot;&gt;&lt;section class=&quot;js_darkmode__text__211&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__212&quot;&gt;C# 全栈&lt;/span&gt;&lt;/section&gt;&lt;/td&gt;&lt;td style=&quot;min-width: 85px; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__91 js_darkmode__text__213&quot;&gt;&lt;section class=&quot;js_darkmode__text__214&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__215&quot;&gt;JS/TS 前端 + 后端&lt;/span&gt;&lt;/section&gt;&lt;/td&gt;&lt;td style=&quot;min-width: 85px; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__92 js_darkmode__text__216&quot;&gt;&lt;section class=&quot;js_darkmode__text__217&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__218&quot;&gt;C# 后端 + JS 前端&lt;/span&gt;&lt;/section&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;background: none left top / auto no-repeat scroll padding-box border-box rgb(248, 248, 248); width: auto; height: auto;&quot; class=&quot;js_darkmode__93 js_darkmode__text__219&quot;&gt;&lt;td style=&quot;min-width: 85px; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__94 js_darkmode__text__220&quot;&gt;&lt;section class=&quot;js_darkmode__text__221&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__222&quot;&gt;学习成本&lt;/span&gt;&lt;/section&gt;&lt;/td&gt;&lt;td style=&quot;min-width: 85px; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__95 js_darkmode__text__223&quot;&gt;&lt;section class=&quot;js_darkmode__text__224&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__225&quot;&gt;低（.NET 开发者）&lt;/span&gt;&lt;/section&gt;&lt;/td&gt;&lt;td style=&quot;min-width: 85px; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__96 js_darkmode__text__226&quot;&gt;&lt;section class=&quot;js_darkmode__text__227&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__228&quot;&gt;高（新语言+生态）&lt;/span&gt;&lt;/section&gt;&lt;/td&gt;&lt;td style=&quot;min-width: 85px; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__97 js_darkmode__text__229&quot;&gt;&lt;section class=&quot;js_darkmode__text__230&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__231&quot;&gt;中&lt;/span&gt;&lt;/section&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;background: none left top / auto no-repeat scroll padding-box border-box rgb(255, 255, 255); width: auto; height: auto;&quot; class=&quot;js_darkmode__98 js_darkmode__text__232&quot;&gt;&lt;td style=&quot;min-width: 85px; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__99 js_darkmode__text__233&quot;&gt;&lt;section class=&quot;js_darkmode__text__234&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__235&quot;&gt;代码复用&lt;/span&gt;&lt;/section&gt;&lt;/td&gt;&lt;td style=&quot;min-width: 85px; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__100 js_darkmode__text__236&quot;&gt;&lt;section class=&quot;js_darkmode__text__237&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__238&quot;&gt;模型/逻辑 100%&lt;/span&gt;&lt;/section&gt;&lt;/td&gt;&lt;td style=&quot;min-width: 85px; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__101 js_darkmode__text__239&quot;&gt;&lt;section class=&quot;js_darkmode__text__240&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__241&quot;&gt;需维护两套&lt;/span&gt;&lt;/section&gt;&lt;/td&gt;&lt;td style=&quot;min-width: 85px; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__102 js_darkmode__text__242&quot;&gt;&lt;section class=&quot;js_darkmode__text__243&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__244&quot;&gt;仅后端&lt;/span&gt;&lt;/section&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;background: none left top / auto no-repeat scroll padding-box border-box rgb(248, 248, 248); width: auto; height: auto;&quot; class=&quot;js_darkmode__103 js_darkmode__text__245&quot;&gt;&lt;td style=&quot;min-width: 85px; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__104 js_darkmode__text__246&quot;&gt;&lt;section class=&quot;js_darkmode__text__247&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__248&quot;&gt;实时通信&lt;/span&gt;&lt;/section&gt;&lt;/td&gt;&lt;td style=&quot;min-width: 85px; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__105 js_darkmode__text__249&quot;&gt;&lt;section class=&quot;js_darkmode__text__250&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__251&quot;&gt;SignalR 内置&lt;/span&gt;&lt;/section&gt;&lt;/td&gt;&lt;td style=&quot;min-width: 85px; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__106 js_darkmode__text__252&quot;&gt;&lt;section class=&quot;js_darkmode__text__253&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__254&quot;&gt;需额外集成&lt;/span&gt;&lt;/section&gt;&lt;/td&gt;&lt;td style=&quot;min-width: 85px; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__107 js_darkmode__text__255&quot;&gt;&lt;section class=&quot;js_darkmode__text__256&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__257&quot;&gt;需 SignalR 配置&lt;/span&gt;&lt;/section&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;background: none left top / auto no-repeat scroll padding-box border-box rgb(255, 255, 255); width: auto; height: auto;&quot; class=&quot;js_darkmode__108 js_darkmode__text__258&quot;&gt;&lt;td style=&quot;min-width: 85px; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__109 js_darkmode__text__259&quot;&gt;&lt;section class=&quot;js_darkmode__text__260&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__261&quot;&gt;类型安全&lt;/span&gt;&lt;/section&gt;&lt;/td&gt;&lt;td style=&quot;min-width: 85px; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__110 js_darkmode__text__262&quot;&gt;&lt;section class=&quot;js_darkmode__text__263&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__264&quot;&gt;编译时严格&lt;/span&gt;&lt;/section&gt;&lt;/td&gt;&lt;td style=&quot;min-width: 85px; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__111 js_darkmode__text__265&quot;&gt;&lt;section class=&quot;js_darkmode__text__266&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__267&quot;&gt;运行时/TS&lt;/span&gt;&lt;/section&gt;&lt;/td&gt;&lt;td style=&quot;min-width: 85px; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__112 js_darkmode__text__268&quot;&gt;&lt;section class=&quot;js_darkmode__text__269&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__270&quot;&gt;仅后端&lt;/span&gt;&lt;/section&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;background: none left top / auto no-repeat scroll padding-box border-box rgb(248, 248, 248); width: auto; height: auto;&quot; class=&quot;js_darkmode__113 js_darkmode__text__271&quot;&gt;&lt;td style=&quot;min-width: 85px; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__114 js_darkmode__text__272&quot;&gt;&lt;section class=&quot;js_darkmode__text__273&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__274&quot;&gt;SEO 友好&lt;/span&gt;&lt;/section&gt;&lt;/td&gt;&lt;td style=&quot;min-width: 85px; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__115 js_darkmode__text__275&quot;&gt;&lt;section class=&quot;js_darkmode__text__276&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__277&quot;&gt;Server 模式支持&lt;/span&gt;&lt;/section&gt;&lt;/td&gt;&lt;td style=&quot;min-width: 85px; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__116 js_darkmode__text__278&quot;&gt;&lt;section class=&quot;js_darkmode__text__279&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__280&quot;&gt;SSR 需配置&lt;/span&gt;&lt;/section&gt;&lt;/td&gt;&lt;td style=&quot;min-width: 85px; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__117 js_darkmode__text__281&quot;&gt;&lt;section class=&quot;js_darkmode__text__282&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__283&quot;&gt;原生支持&lt;/span&gt;&lt;/section&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/section&gt;&lt;/p&gt;&lt;h2 data-tool=&quot;mdnice编辑器&quot; style=&quot;margin: 44px 0px 16px; padding: 0px; line-height: 1.5;&quot; class=&quot;js_darkmode__text__284&quot;&gt;&lt;span style=&quot;font-size: 18px; color: #222222; letter-spacing: 0em; display: block; line-height: 1.5 !important;&quot; class=&quot;js_darkmode__118 js_darkmode__text__285&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__286&quot;&gt;七、平台安装使用&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; style=&quot;color: rgb(62, 62, 62); font-size: 15px; line-height: 1.75; letter-spacing: 0em; text-indent: 0em; margin-top: 12px; margin-bottom: 12px; padding: 8px 0px;&quot; class=&quot;js_darkmode__119 js_darkmode__text__287&quot;&gt;&lt;strong style=&quot;color: rgb(0, 0, 0); font-weight: bold; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: left top; background-repeat: no-repeat; background-size: auto; width: auto; height: auto; margin: 0px; padding: 0px; border-style: none; border-width: 3px; border-color: rgba(0, 0, 0, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__120 js_darkmode__text__288&quot;&gt;安装 .NET SDK&lt;/strong&gt;&lt;/p&gt;&lt;pre data-tool=&quot;mdnice编辑器&quot; style=&quot;border-radius: 5px; box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px; margin-top: 10px; margin-bottom: 10px; padding: 0px;&quot; class=&quot;js_darkmode__121 js_darkmode__text__290&quot;&gt;&lt;code style=&quot;overflow-x: auto;padding: 16px;color: #abb2bf;padding-top: 15px;background: #282c34;border-radius: 5px;display: -webkit-box;font-family: Consolas, Monaco, Menlo, monospace;font-size: 12px;&quot; class=&quot;js_darkmode__122 js_darkmode__text__291&quot;&gt;&lt;span style=&quot;color: #5c6370;font-style: italic;line-height: 26px;&quot; class=&quot;js_darkmode__123 js_darkmode__text__292&quot;&gt;# macOS&lt;/span&gt;&lt;span leaf=&quot;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__294&quot;&gt;brew install dotnet&lt;/span&gt;&lt;span leaf=&quot;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;span leaf=&quot;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;span style=&quot;color: #5c6370;font-style: italic;line-height: 26px;&quot; class=&quot;js_darkmode__124 js_darkmode__text__295&quot;&gt;# 创建 Blazor 项目&lt;/span&gt;&lt;span leaf=&quot;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__297&quot;&gt;dotnet new blazor -o MyBlazorApp&lt;/span&gt;&lt;span leaf=&quot;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;span style=&quot;color: #e6c07b;line-height: 26px;&quot; class=&quot;js_darkmode__text__298&quot;&gt;cd&lt;/span&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__300&quot;&gt;&amp;nbsp;MyBlazorApp&lt;/span&gt;&lt;span leaf=&quot;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__301&quot;&gt;dotnet run&lt;/span&gt;&lt;span leaf=&quot;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; style=&quot;color: rgb(62, 62, 62); font-size: 15px; line-height: 1.75; letter-spacing: 0em; text-indent: 0em; margin-top: 12px; margin-bottom: 12px; padding: 8px 0px;&quot; class=&quot;js_darkmode__125 js_darkmode__text__302&quot;&gt;&lt;strong style=&quot;color: rgb(0, 0, 0); font-weight: bold; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: left top; background-repeat: no-repeat; background-size: auto; width: auto; height: auto; margin: 0px; padding: 0px; border-style: none; border-width: 3px; border-color: rgba(0, 0, 0, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__126 js_darkmode__text__303&quot;&gt;简单计数器组件&lt;/strong&gt;&lt;/p&gt;&lt;pre data-tool=&quot;mdnice编辑器&quot; style=&quot;border-radius: 5px; box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px; margin-top: 10px; margin-bottom: 10px; padding: 0px;&quot; class=&quot;js_darkmode__127 js_darkmode__text__305&quot;&gt;&lt;code style=&quot;overflow-x: auto;padding: 16px;color: #abb2bf;padding-top: 15px;background: #282c34;border-radius: 5px;display: -webkit-box;font-family: Consolas, Monaco, Menlo, monospace;font-size: 12px;&quot; class=&quot;js_darkmode__128 js_darkmode__text__306&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__307&quot;&gt;@page &amp;quot;/counter&amp;quot;&lt;/span&gt;&lt;span leaf=&quot;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;span leaf=&quot;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__308&quot;&gt;&amp;lt;h3&amp;gt;计数器&amp;lt;/h3&amp;gt;&lt;/span&gt;&lt;span leaf=&quot;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__309&quot;&gt;&amp;lt;p&amp;gt;当前计数: @currentCount&amp;lt;/p&amp;gt;&lt;/span&gt;&lt;span leaf=&quot;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__310&quot;&gt;&amp;lt;button @onclick=&amp;quot;IncrementCount&amp;quot;&amp;gt;点击+1&amp;lt;/button&amp;gt;&lt;/span&gt;&lt;span leaf=&quot;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;span leaf=&quot;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__311&quot;&gt;@code {&lt;/span&gt;&lt;span leaf=&quot;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__312&quot;&gt;&amp;nbsp; &amp;nbsp; private int currentCount = 0;&lt;/span&gt;&lt;span leaf=&quot;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__313&quot;&gt;&amp;nbsp; &amp;nbsp; private void IncrementCount() =&amp;gt; currentCount++;&lt;/span&gt;&lt;span leaf=&quot;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__314&quot;&gt;}&lt;/span&gt;&lt;span leaf=&quot;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; style=&quot;color: rgb(62, 62, 62); font-size: 15px; line-height: 1.75; letter-spacing: 0em; text-indent: 0em; margin-top: 12px; margin-bottom: 12px; padding: 8px 0px;&quot; class=&quot;js_darkmode__129 js_darkmode__text__315&quot;&gt;&lt;strong style=&quot;color: rgb(0, 0, 0); font-weight: bold; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: left top; background-repeat: no-repeat; background-size: auto; width: auto; height: auto; margin: 0px; padding: 0px; border-style: none; border-width: 3px; border-color: rgba(0, 0, 0, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__130 js_darkmode__text__316&quot;&gt;用户管理组件&lt;/strong&gt;&lt;/p&gt;&lt;pre data-tool=&quot;mdnice编辑器&quot; style=&quot;border-radius: 5px; box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px; margin-top: 10px; margin-bottom: 10px; padding: 0px;&quot; class=&quot;js_darkmode__131 js_darkmode__text__318&quot;&gt;&lt;code style=&quot;overflow-x: auto;padding: 16px;color: #abb2bf;padding-top: 15px;background: #282c34;border-radius: 5px;display: -webkit-box;font-family: Consolas, Monaco, Menlo, monospace;font-size: 12px;&quot; class=&quot;js_darkmode__132 js_darkmode__text__319&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__320&quot;&gt;@page &amp;quot;/users&amp;quot;&lt;/span&gt;&lt;span leaf=&quot;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__321&quot;&gt;@inject UserService UserService&lt;/span&gt;&lt;span leaf=&quot;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;span leaf=&quot;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__322&quot;&gt;&amp;lt;h3&amp;gt;用户管理&amp;lt;/h3&amp;gt;&lt;/span&gt;&lt;span leaf=&quot;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;span leaf=&quot;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__323&quot;&gt;&amp;lt;EditForm Model=&amp;quot;@newUser&amp;quot; OnValidSubmit=&amp;quot;HandleSubmit&amp;quot;&amp;gt;&lt;/span&gt;&lt;span leaf=&quot;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__324&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;lt;DataAnnotationsValidator /&amp;gt;&lt;/span&gt;&lt;span leaf=&quot;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__325&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;lt;InputText @bind-Value=&amp;quot;newUser.Name&amp;quot; /&amp;gt;&lt;/span&gt;&lt;span leaf=&quot;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__326&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;lt;InputText @bind-Value=&amp;quot;newUser.Email&amp;quot; /&amp;gt;&lt;/span&gt;&lt;span leaf=&quot;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__327&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;lt;button type=&amp;quot;submit&amp;quot;&amp;gt;添加&amp;lt;/button&amp;gt;&lt;/span&gt;&lt;span leaf=&quot;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__328&quot;&gt;&amp;lt;/EditForm&amp;gt;&lt;/span&gt;&lt;span leaf=&quot;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;span leaf=&quot;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__329&quot;&gt;&amp;lt;ul&amp;gt;&lt;/span&gt;&lt;span leaf=&quot;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__330&quot;&gt;&amp;nbsp; &amp;nbsp; @foreach (var user in users)&lt;/span&gt;&lt;span leaf=&quot;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__331&quot;&gt;&amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;span leaf=&quot;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__332&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;li&amp;gt;@user.Name - @user.Email&amp;lt;/li&amp;gt;&lt;/span&gt;&lt;span leaf=&quot;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__333&quot;&gt;&amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;span leaf=&quot;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__334&quot;&gt;&amp;lt;/ul&amp;gt;&lt;/span&gt;&lt;span leaf=&quot;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;span leaf=&quot;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__335&quot;&gt;@code {&lt;/span&gt;&lt;span leaf=&quot;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__336&quot;&gt;&amp;nbsp; &amp;nbsp; private List&amp;lt;UserDto&amp;gt; users = new();&lt;/span&gt;&lt;span leaf=&quot;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__337&quot;&gt;&amp;nbsp; &amp;nbsp; private UserInput newUser = new();&lt;/span&gt;&lt;span leaf=&quot;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;span leaf=&quot;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__338&quot;&gt;&amp;nbsp; &amp;nbsp; protected override async Task OnInitializedAsync() =&amp;gt;&lt;/span&gt;&lt;span leaf=&quot;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__339&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; users = await UserService.GetAllAsync();&lt;/span&gt;&lt;span leaf=&quot;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;span leaf=&quot;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__340&quot;&gt;&amp;nbsp; &amp;nbsp; private async Task HandleSubmit()&lt;/span&gt;&lt;span leaf=&quot;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__341&quot;&gt;&amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;span leaf=&quot;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__342&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; await UserService.CreateAsync(newUser);&lt;/span&gt;&lt;span leaf=&quot;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__343&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; users = await UserService.GetAllAsync();&lt;/span&gt;&lt;span leaf=&quot;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__344&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; newUser = new UserInput();&lt;/span&gt;&lt;span leaf=&quot;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__345&quot;&gt;&amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;span leaf=&quot;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__346&quot;&gt;}&lt;/span&gt;&lt;span leaf=&quot;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;h2 data-tool=&quot;mdnice编辑器&quot; style=&quot;margin: 44px 0px 16px; padding: 0px; line-height: 1.5;&quot; class=&quot;js_darkmode__text__347&quot;&gt;&lt;span style=&quot;font-size: 18px; color: #222222; letter-spacing: 0em; display: block; line-height: 1.5 !important;&quot; class=&quot;js_darkmode__133 js_darkmode__text__348&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__349&quot;&gt;八、应用场景及案例说明&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;&lt;section data-tool=&quot;mdnice编辑器&quot; style=&quot;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;overflow-x: auto;&quot; class=&quot;js_darkmode__text__350&quot;&gt;&lt;table class=&quot;js_darkmode__text__351&quot;&gt;&lt;thead class=&quot;js_darkmode__text__352&quot;&gt;&lt;tr class=&quot;js_darkmode__text__353 firstRow&quot;&gt;&lt;th style=&quot;font-size: 16px; line-height: 1.5em; letter-spacing: 0em; text-align: left; background: none left top / auto no-repeat scroll padding-box border-box rgb(240, 240, 240); height: auto; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px; min-width: 85px;&quot; class=&quot;js_darkmode__134 js_darkmode__text__354&quot;&gt;&lt;section class=&quot;js_darkmode__text__355&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__356&quot;&gt;场景&lt;/span&gt;&lt;/section&gt;&lt;/th&gt;&lt;th style=&quot;font-size: 16px; line-height: 1.5em; letter-spacing: 0em; text-align: left; background: none left top / auto no-repeat scroll padding-box border-box rgb(240, 240, 240); height: auto; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px; min-width: 85px;&quot; class=&quot;js_darkmode__135 js_darkmode__text__357&quot;&gt;&lt;section class=&quot;js_darkmode__text__358&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__359&quot;&gt;效果数据&lt;/span&gt;&lt;/section&gt;&lt;/th&gt;&lt;th style=&quot;font-size: 16px; line-height: 1.5em; letter-spacing: 0em; text-align: left; background: none left top / auto no-repeat scroll padding-box border-box rgb(240, 240, 240); height: auto; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px; min-width: 85px;&quot; class=&quot;js_darkmode__136 js_darkmode__text__360&quot;&gt;&lt;section class=&quot;js_darkmode__text__361&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__362&quot;&gt;典型案例&lt;/span&gt;&lt;/section&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody class=&quot;js_darkmode__text__363&quot;&gt;&lt;tr style=&quot;background: none left top / auto no-repeat scroll padding-box border-box rgb(255, 255, 255); width: auto; height: auto;&quot; class=&quot;js_darkmode__137 js_darkmode__text__364&quot;&gt;&lt;td style=&quot;min-width: 85px; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__138 js_darkmode__text__365&quot;&gt;&lt;strong style=&quot;font-weight: bold; background: none left top / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0); width: auto; height: auto; margin: 0px; padding: 0px; border-style: none; border-width: 3px; border-color: rgba(0, 0, 0, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__139 js_darkmode__text__366&quot;&gt;企业后台系统&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;min-width: 85px; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__140 js_darkmode__text__368&quot;&gt;&lt;section class=&quot;js_darkmode__text__369&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__370&quot;&gt;开发效率提升 50%&lt;/span&gt;&lt;/section&gt;&lt;/td&gt;&lt;td style=&quot;min-width: 85px; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__141 js_darkmode__text__371&quot;&gt;&lt;section class=&quot;js_darkmode__text__372&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__373&quot;&gt;数据录入、报表、管理界面&lt;/span&gt;&lt;/section&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;background: none left top / auto no-repeat scroll padding-box border-box rgb(248, 248, 248); width: auto; height: auto;&quot; class=&quot;js_darkmode__142 js_darkmode__text__374&quot;&gt;&lt;td style=&quot;min-width: 85px; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__143 js_darkmode__text__375&quot;&gt;&lt;strong style=&quot;font-weight: bold; background: none left top / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0); width: auto; height: auto; margin: 0px; padding: 0px; border-style: none; border-width: 3px; border-color: rgba(0, 0, 0, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__144 js_darkmode__text__376&quot;&gt;.NET 团队转型&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;min-width: 85px; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__145 js_darkmode__text__378&quot;&gt;&lt;section class=&quot;js_darkmode__text__379&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__380&quot;&gt;学习成本降低 80%&lt;/span&gt;&lt;/section&gt;&lt;/td&gt;&lt;td style=&quot;min-width: 85px; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__146 js_darkmode__text__381&quot;&gt;&lt;section class=&quot;js_darkmode__text__382&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__383&quot;&gt;无需招聘前端工程师&lt;/span&gt;&lt;/section&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;background: none left top / auto no-repeat scroll padding-box border-box rgb(255, 255, 255); width: auto; height: auto;&quot; class=&quot;js_darkmode__147 js_darkmode__text__384&quot;&gt;&lt;td style=&quot;min-width: 85px; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__148 js_darkmode__text__385&quot;&gt;&lt;strong style=&quot;font-weight: bold; background: none left top / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0); width: auto; height: auto; margin: 0px; padding: 0px; border-style: none; border-width: 3px; border-color: rgba(0, 0, 0, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__149 js_darkmode__text__386&quot;&gt;实时数据大屏&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;min-width: 85px; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__150 js_darkmode__text__388&quot;&gt;&lt;section class=&quot;js_darkmode__text__389&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__390&quot;&gt;延迟 &amp;lt;100ms&lt;/span&gt;&lt;/section&gt;&lt;/td&gt;&lt;td style=&quot;min-width: 85px; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__151 js_darkmode__text__391&quot;&gt;&lt;section class=&quot;js_darkmode__text__392&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__393&quot;&gt;金融行情、IoT 监控&lt;/span&gt;&lt;/section&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;background: none left top / auto no-repeat scroll padding-box border-box rgb(248, 248, 248); width: auto; height: auto;&quot; class=&quot;js_darkmode__152 js_darkmode__text__394&quot;&gt;&lt;td style=&quot;min-width: 85px; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__153 js_darkmode__text__395&quot;&gt;&lt;strong style=&quot;font-weight: bold; background: none left top / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0); width: auto; height: auto; margin: 0px; padding: 0px; border-style: none; border-width: 3px; border-color: rgba(0, 0, 0, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__154 js_darkmode__text__396&quot;&gt;桌面应用迁移&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;min-width: 85px; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__155 js_darkmode__text__398&quot;&gt;&lt;section class=&quot;js_darkmode__text__399&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__400&quot;&gt;代码复用率 70%&lt;/span&gt;&lt;/section&gt;&lt;/td&gt;&lt;td style=&quot;min-width: 85px; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__156 js_darkmode__text__401&quot;&gt;&lt;section class=&quot;js_darkmode__text__402&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__403&quot;&gt;WPF/WinForms → Web&lt;/span&gt;&lt;/section&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;background: none left top / auto no-repeat scroll padding-box border-box rgb(255, 255, 255); width: auto; height: auto;&quot; class=&quot;js_darkmode__157 js_darkmode__text__404&quot;&gt;&lt;td style=&quot;min-width: 85px; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__158 js_darkmode__text__405&quot;&gt;&lt;strong style=&quot;font-weight: bold; background: none left top / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0); width: auto; height: auto; margin: 0px; padding: 0px; border-style: none; border-width: 3px; border-color: rgba(0, 0, 0, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__159 js_darkmode__text__406&quot;&gt;渐进式 Web 应用&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;min-width: 85px; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__160 js_darkmode__text__408&quot;&gt;&lt;section class=&quot;js_darkmode__text__409&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__410&quot;&gt;离线体验原生级&lt;/span&gt;&lt;/section&gt;&lt;/td&gt;&lt;td style=&quot;min-width: 85px; border-color: rgba(204, 204, 204, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__161 js_darkmode__text__411&quot;&gt;&lt;section class=&quot;js_darkmode__text__412&quot;&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__413&quot;&gt;PWA 离线功能&lt;/span&gt;&lt;/section&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/section&gt;&lt;/p&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; style=&quot;color: rgb(62, 62, 62); font-size: 15px; line-height: 1.75; letter-spacing: 0em; text-indent: 0em; margin-top: 12px; margin-bottom: 12px; padding: 8px 0px;&quot; class=&quot;js_darkmode__162 js_darkmode__text__414&quot;&gt;&lt;strong style=&quot;color: rgb(0, 0, 0); font-weight: bold; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: left top; background-repeat: no-repeat; background-size: auto; width: auto; height: auto; margin: 0px; padding: 0px; border-style: none; border-width: 3px; border-color: rgba(0, 0, 0, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__163 js_darkmode__text__415&quot;&gt;实战案例&lt;/strong&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__417&quot;&gt;：某制造企业将原有的 WPF 桌面管理系统迁移至 Blazor Server，原有 C# 业务逻辑 70% 直接复用，开发周期缩短 40%，运维成本降低 60%。&lt;img data-src=&quot;https://mmbiz.qpic.cn/mmbiz_png/ugMtG2z4CGVR5jaukVU9qofS5I8g9cVZ459DfH72xxAscYdiatGru7cZicJsibhibtJmwrGzoXgvadozzCj1iaMEDwOZ215SlZQYUT4PbIH8sLyk/640?wx_fmt=png&amp;amp;from=appmsg#imgIndex=4&quot; class=&quot;rich_pages wxw-img&quot; data-ratio=&quot;0.5444444444444444&quot; data-type=&quot;png&quot; data-w=&quot;1080&quot; data-imgfileid=&quot;100029739&quot; data-aistatus=&quot;1&quot; data-original-style=&quot;null&quot; data-index=&quot;4&quot; src=&quot;https://mmbiz.qpic.cn/mmbiz_png/ugMtG2z4CGVR5jaukVU9qofS5I8g9cVZ459DfH72xxAscYdiatGru7cZicJsibhibtJmwrGzoXgvadozzCj1iaMEDwOZ215SlZQYUT4PbIH8sLyk/640?wx_fmt=png&amp;from=appmsg&amp;tp=wxpic&amp;wxfrom=5&amp;wx_lazy=1#imgIndex=4&quot; _width=&quot;384px&quot; __sec_open_place_holder__=&quot;true&quot; style=&quot;height: auto !important; visibility: visible !important; width: 323.969px !important;&quot; alt=&quot;图片&quot; data-before-load-time=&quot;1791380876884&quot; data-report-img-idx=&quot;4&quot; data-fail=&quot;0&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;hr style=&quot;margin: 10px 0px; padding: 0px; border-style: solid none none; border-bottom-width: 3px; border-left-width: 3px; border-right-width: 3px; border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4); border-radius: 0px; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: left top; background-repeat: no-repeat; background-size: auto; width: auto; height: 1px;&quot; class=&quot;js_darkmode__164&quot;/&gt;&lt;blockquote style=&quot;line-height: 1.75; margin: 20px 0px; padding: 10px 10px 10px 20px; border-style: none none none solid; border-width: 3px; border-color: rgba(0, 0, 0, 0.4); border-radius: 0px; background: none left top / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0.05); width: auto; height: auto; box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px; overflow: auto;&quot; class=&quot;js_darkmode__165 js_darkmode__text__418&quot;&gt;&lt;p style=&quot;text-indent: 0em; padding: 8px 0px; font-size: 16px; line-height: 1.8em; letter-spacing: 0em; margin-top: 0px; margin-bottom: 0px;&quot; class=&quot;js_darkmode__166 js_darkmode__text__419&quot;&gt;&lt;strong style=&quot;font-weight: bold; background: none left top / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0); width: auto; height: auto; margin: 0px; padding: 0px; border-style: none; border-width: 3px; border-color: rgba(0, 0, 0, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__167 js_darkmode__text__420&quot;&gt;金句&lt;/strong&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__422&quot;&gt;：Web 开发不应该是一场语言的学习竞赛。Blazor 让 .NET 开发者用熟悉的武器，在新的战场上同样能打胜仗。&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p data-tool=&quot;mdnice编辑器&quot; style=&quot;color: rgb(62, 62, 62); font-size: 15px; line-height: 1.75; letter-spacing: 0em; text-indent: 0em; margin-top: 12px; margin-bottom: 12px; padding: 8px 0px;&quot; class=&quot;js_darkmode__168 js_darkmode__text__423&quot;&gt;&lt;strong style=&quot;color: rgb(0, 0, 0); font-weight: bold; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: left top; background-repeat: no-repeat; background-size: auto; width: auto; height: auto; margin: 0px; padding: 0px; border-style: none; border-width: 3px; border-color: rgba(0, 0, 0, 0.4); border-radius: 0px;&quot; class=&quot;js_darkmode__169 js_darkmode__text__424&quot;&gt;项目地址&lt;/strong&gt;&lt;span leaf=&quot;&quot; class=&quot;js_darkmode__text__426&quot;&gt;：https://github.com/dotnet/blazor&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Wed, 07 Oct 2026 21:49:43 +0800</pubDate></item></channel></rss>