Dynamics 365插件注册全流程解析:从零基础到生产就绪
1. 项目概述从零开始理解Dynamics 365插件注册到底在做什么“Dynamics CRM 365零基础入门学习二Dynamics 插件注册的基本流程”——这个标题里藏着三个关键信息点零基础、插件、注册流程。它不是讲怎么写C#代码也不是教你怎么部署服务器而是聚焦在一个非常具体、但又极易被新手忽略的实操环节把写好的业务逻辑“挂载”到系统事件上并让平台真正识别、加载、执行它。我带过不少刚接触Dynamics 365的开发者他们能写出逻辑清晰的插件类却卡在最后一步——点击“注册”按钮后系统报错或者注册成功了但事件触发时毫无反应。问题往往不出在代码本身而在于对“注册”这件事的理解偏差它不是简单的文件上传而是一次完整的元数据绑定安全上下文配置执行路径声明过程。插件注册的本质是告诉平台“当用户在联系人表单上点击保存时请调用我提供的这段代码并以‘系统管理员’身份运行且只在主组织数据库中生效”。这个动作背后涉及插件程序集签名、步骤绑定、过滤条件、执行阶段Pre/Post/Async、安全上下文Impersonation等一整套机制。对零基础者来说跳过这步直接看代码示例就像学开车先背发动机原理却不碰方向盘——知道原理但永远无法上路。本文不假设你懂.NET框架或SQL Server所有操作都基于Power Apps门户内嵌的Plugin Registration ToolPRT工具展开每一步截图级说明背后的意图比如为什么必须勾选“Run in User’s Context”、为什么异步插件不能访问UI层、为什么同一个程序集注册两次会触发冲突。这不是一份操作手册而是一份帮你建立“注册思维”的认知地图。2. 插件注册的核心设计逻辑与方案选型依据2.1 为什么必须用Plugin Registration Tool不用Power Automate或自定义工作流替代很多初学者看到“插件能实现自动更新字段”第一反应是“Power Automate也能做啊拖拽几个动作就完事。”这确实是事实但二者解决的是完全不同的问题域。Power Automate适用于跨系统、低延迟、用户可编辑的自动化场景比如“当新邮件到达Outlook时自动创建CRM中的线索”。而插件解决的是高一致性、强事务性、不可绕过的业务规则比如“在订单创建前必须校验客户信用额度是否超限且该校验必须在数据库写入前完成不允许被用户跳过”。这里的关键差异在于执行时机与事务边界插件可以绑定到Create消息的PreValidation阶段在任何数据库操作发生前介入且与主事务共用同一个数据库连接和事务上下文一旦校验失败整个Create请求会被回滚用户看到的是明确的错误提示而不是一个半成品记录。Power Automate则是在记录创建成功后才被触发此时数据库已落库若要回滚需额外编写删除逻辑且存在并发风险。因此注册插件的第一步就是明确它的不可替代性——它不是“另一种自动化方式”而是保障核心业务数据质量的最后一道闸门。选择PRT而非其他工具是因为它是微软官方唯一支持完整生命周期管理的客户端工具它能生成强命名程序集、自动处理插件类型注册、可视化绑定事件步骤、调试时注入跟踪日志。第三方工具或手动注册API调用虽然技术上可行但会丢失调试符号、增加部署复杂度对零基础者极不友好。2.2 程序集签名与强名称为什么注册前必须给DLL加签名当你编译好一个插件项目得到一个.dll文件它还不能直接注册。PRT会拒绝未签名的程序集报错“Assembly is not strongly named”。这不是微软故意设卡而是Dynamics 365安全模型的硬性要求。强名称Strong Name由四部分组成程序集名称、版本号、文化信息、公钥令牌。其中公钥令牌是核心——它确保程序集来源可信且内容未被篡改。想象一下你的插件被注册到生产环境它有权读写所有客户数据。如果攻击者替换掉这个DLL注入恶意代码系统如何识别强名称签名就是那把“数字指纹锁”注册时PRT将公钥令牌写入数据库元数据每次插件执行前平台会重新计算DLL的哈希值并与存储的公钥令牌比对不一致则直接拒绝加载。零基础者常犯的错误是跳过这步试图用“不签名”模式开发。这在本地调试环境可能通过但一旦部署到云端或启用了沙盒模式的组织必然失败。实际操作中签名不是一次性动作每次代码修改后重新编译都需用同一对密钥.snk文件签名否则版本号虽变公钥令牌已不同系统会视为全新程序集导致旧注册项失效。我建议新手直接在Visual Studio项目属性中勾选“Sign the assembly”并指定一个本地.snk文件这样每次生成DLL时自动完成签名避免手动调用sn.exe命令的繁琐。2.3 同步 vs 异步执行选错阶段等于埋下性能地雷插件注册时最关键的选项之一是“Execution Mode”执行模式分为Synchronous同步和Asynchronous异步。新手常凭字面理解“异步更快所以选异步”。这是巨大误区。同步插件在主事务线程中执行用户操作如点击保存会等待插件完成才返回结果异步插件则由后台服务队列处理用户操作立即返回成功插件稍后执行。选择依据不是“快慢”而是业务语义与用户体验预期。例如一个校验客户邮箱格式的插件必须同步执行用户填错邮箱点击保存应立刻看到红色提示“邮箱格式不正确”而不是先显示“保存成功”几秒后弹出错误通知。反之一个“发送欢迎邮件”的插件必须异步邮件发送可能因网络延迟耗时数秒若同步执行用户会长时间卡在保存界面体验极差。更深层的影响是事务范围同步插件可访问IPluginExecutionContext中的SharedVariables可在Pre和Post阶段传递数据异步插件因脱离原事务无法访问这些变量且不能执行Update等可能引发死锁的操作。我曾遇到一个案例某团队为提升性能将所有插件改为异步结果导致“创建订单后自动创建发票”功能失效——因为发票创建依赖订单ID而异步插件执行时订单记录虽已提交但其GUID可能尚未被索引查询失败。最终解决方案是校验类逻辑用同步Pre-Operation通知类逻辑用异步Post-Operation严格按语义分层。3. 插件注册全流程实操详解与关键参数解析3.1 准备工作环境连接与权限校验三步确认法在打开Plugin Registration Tool前必须完成三项基础确认缺一不可。这不是形式主义而是避免90%注册失败的前置检查。第一步确认组织URL与认证方式启动PRT后点击“Create New Connection”在“Server URL”栏输入你的Dynamics 365环境URL格式必须为https://yourorg.api.crm.dynamics.com/XRMServices/2011/Organization.svc。注意不能是网页版地址如https://yourorg.crm.dynamics.com也不能省略/XRMServices/2011/Organization.svc后缀。认证方式选择“Office 365”输入有系统管理员角色的账号密码。这里有个隐藏陷阱如果你的账号启用了多因素认证MFAPRT旧版本v4.x不支持必须升级到v5.0否则会卡在登录页。验证方法很简单点击“Test Connection”成功后应显示组织名称和版本号如“Version: 9.2.22022.178”。第二步确认插件项目编译输出确保你的Visual Studio项目已设置为.NET Framework 4.6.2或更高版本Dynamics 365 v9强制要求目标平台为x64不是Any CPU。编译后在bin\Debug目录下找到.dll文件右键属性→“数字签名”选项卡确认已签名。若无此选项说明未启用强名称签名需返回项目属性设置。第三步确认安全角色权限登录Dynamics 365网页端进入“设置→安全→用户”找到你用于连接的账号点击“管理角色”。必须勾选至少两个角色“System Administrator”和“Customizer”。前者提供注册插件的底层权限后者允许修改自定义实体和消息绑定。缺少任一角色PRT在注册步骤时会报“Access is denied”错误且错误信息极其模糊新手往往在此耗费数小时排查。提示每次连接新环境前务必点击PRT右上角的“Clear Cache”按钮。缓存的旧连接信息可能导致认证失败尤其在切换测试/生产环境时。3.2 注册程序集从DLL到可执行模块的转化连接成功后点击“Register→Register New Assembly”进入核心注册向导。这一步看似简单但每个选项都决定后续成败。Step 1选择程序集文件点击“Browse”定位到你编译好的.dll文件。PRT会自动读取程序集元数据显示名称、版本、公钥令牌。注意核对公钥令牌是否与你签名时生成的一致可用sn -Tp yourplugin.dll命令行验证。若显示“ ”说明未签名必须返回VS重新编译。Step 2配置程序集属性Isolation Mode隔离模式必须选“Sandbox”。这是Dynamics 365在线版的强制要求它将插件运行在受限沙盒环境中禁止访问文件系统、注册表、外部网络除Microsoft服务外。本地部署版可选“None”但为兼容性统一选Sandbox。Location位置选“Database”。这是最常用且最安全的选项程序集DLL直接存储在CRM数据库的PluginAssembly表中随组织备份一起迁移。选“Disk”需手动维护服务器文件路径不推荐。Create Step创建步骤暂时取消勾选。这是新手最大误区——以为注册程序集就要同时绑定步骤。实际上注册程序集只是“安装插件引擎”绑定步骤是独立操作。过早勾选会导致步骤配置混乱建议分两步走。Step 3高级选项Restrict to Custom Entities仅限自定义实体默认不勾选。若你的插件只处理自定义实体如new_product勾选此项可提升安全性防止被误绑定到标准实体。Restrict to Custom Messages仅限自定义消息同理处理自定义工作流活动时才需勾选。点击“Register”后PRT会显示进度条完成后在左侧树形菜单中出现新节点“YourPluginName (1.0.0.0)”。此时程序集已入库但尚无任何触发逻辑。注意注册成功后不要关闭PRT窗口。后续步骤需在同一会话中进行否则需重新连接且已注册的程序集不会自动刷新到列表。3.3 绑定插件步骤将代码与业务事件精准挂钩程序集注册完毕下一步是“绑定步骤”Register New Step这才是插件真正生效的关键。点击左侧程序集节点→右键“Register New Step”。Step 1选择消息与实体Message消息下拉菜单列出所有可拦截的CRUD操作如Create、Update、Delete、Retrieve等。选择与你插件逻辑匹配的项。例如校验客户电话号码选Update自动填充订单编号选Create。Primary Entity主实体指定该插件作用的实体如account账户、contact联系人、opportunity商机。注意必须输入实体的逻辑名称logical name不是中文显示名。可在Dynamics 365网页端“设置→自定义→自定义实体”打开实体详情页查看“Schema Name”字段。Secondary Entity辅助实体仅当消息涉及关联实体时使用如Associate消息需指定主辅实体。大多数场景留空。Step 2配置执行细节Event Pipeline Stage事件管道阶段这是最易混淆的选项。Dynamics 365将每个消息处理分为四个阶段Pre-validation消息刚进入系统尚未做任何校验。适合快速失败检查如必填字段为空。Pre-operation主业务逻辑执行前事务已开启。适合数据修改、权限校验。Post-operation主业务逻辑执行后事务已提交。适合发送通知、更新关联记录。Async Post-operation异步执行无事务上下文。适合耗时操作如调用外部API。 选择错误阶段会导致插件无法获取所需数据。例如在Pre-validation阶段尝试读取Target实体的Id字段会返回null因为此时记录还未生成ID。Execution Mode执行模式如前所述同步/异步。同步插件必须选Pre-validation或Pre/Post-operation异步只能选Async Post-operation。Secure Configuration安全配置输入JSON字符串用于向插件传递敏感配置如API密钥。插件代码中通过context.PluginExecutionContext.SharedVariables[Configuration]读取。生产环境必须使用此方式而非硬编码密钥。Step 3过滤条件与深度控制Filtering Attributes筛选属性指定仅当哪些字段被修改时才触发插件。例如只在contact实体的emailaddress1字段更新时触发此处填emailaddress1。多个字段用逗号分隔。不填则任何字段变更都触发。Depth深度默认为1表示只响应用户直接操作如用户点击保存。若设为2则由工作流、插件等系统操作触发也会执行。设为2需谨慎可能引发递归调用插件A更新记录→触发插件B→插件B更新同一记录→再次触发插件A。点击“Register”后步骤即绑定成功。此时在左侧树形菜单中程序集节点下会出现子节点“Create of account (Pre-operation)”等。至此插件已具备触发能力。3.4 调试与日志让看不见的执行过程变得透明注册完成不等于万事大吉。插件在后台静默运行出错时用户看不到任何提示只表现为“功能没生效”。因此调试是注册流程不可或缺的一环。启用追踪日志在PRT中右键已注册的插件步骤→“Enable Plugin Trace Log”。这会在CRM数据库中创建追踪记录。当插件执行时所有ITracingService.Trace()输出的内容都会被捕获。例如在插件代码中加入tracingService.Trace(插件开始执行当前用户ID: {0}, context.UserId); tracingService.Trace(Target实体字段: {0}, target.GetAttributeValuestring(name));执行后登录Dynamics 365网页端“设置→系统→系统作业→插件跟踪日志”即可查看详细日志。日志包含时间戳、执行用户、错误堆栈、自定义Trace信息是排查问题的第一手资料。本地调试Attach to Process对于同步插件可直接在Visual Studio中调试。启动PRT并触发插件如保存一条记录在VS中点击“调试→附加到进程”找到w3wp.exe进程IIS工作进程附加后在插件代码中设断点即可单步执行。注意必须确保VS项目引用的SDK版本与CRM环境一致否则断点无法命中。实操心得我习惯在每个插件入口处添加一行tracingService.Trace( {0} 开始 , this.GetType().Name)并在出口处加tracingService.Trace( {0} 结束 , this.GetType().Name)。这样在日志中能快速定位执行范围避免被海量日志淹没。4. 常见问题排查与独家避坑指南4.1 典型错误速查表从报错信息反推根本原因报错信息英文原文中文含义最可能原因快速验证方法Assembly is not strongly named程序集未强名称签名项目未启用强名称或编译后DLL被手动替换右键DLL→属性→数字签名或运行sn -Tp your.dllThe plugin type could not be found in the plugin assembly插件类型在程序集中未找到代码中public class YourPlugin : IPlugin未继承IPlugin或类名拼写错误在VS中检查类定义确认using Microsoft.Xrm.Sdk;已引用Access is denied访问被拒绝连接账号缺少“System Administrator”或“Customizer”角色登录网页端检查该用户的安全角色分配An error occurred when verifying security for the message消息安全验证失败插件尝试执行非沙盒允许的操作如访问System.IO检查插件代码移除所有文件IO、网络请求除WebClient调用Microsoft服务外The step is invalid because it references an entity that does not exist步骤引用的实体不存在“Primary Entity”填写了中文名如“客户”而非逻辑名如account进入实体自定义页复制“Schema Name”字段值4.2 隐藏陷阱那些文档不会写的实战教训陷阱一插件注册后功能不生效但日志无错误现象注册步骤后用户操作无任何反应追踪日志也为空。根源插件未部署到正确的组织。Dynamics 365支持多组织如开发、测试、生产PRT连接的是哪个组织插件就注册到哪个组织。新手常在一个组织注册却在另一个组织测试。验证在PRT连接时仔细核对左下角显示的组织名称或在网页端“设置→系统→系统信息”查看“Organization Unique Name”与PRT连接URL中的域名部分比对。解决方案断开PRT重新连接目标组织重新注册。陷阱二插件执行时报“Object reference not set to an instance of an object”现象日志中出现空引用异常但代码中已做判空。根源context.InputParameters[Target]在某些阶段为null。例如在Pre-validation阶段Target是EntityReference只有ID不是完整实体在Post-operation阶段Target是EntityReference需用service.Retrieve()重新获取。解决方案始终用if (context.InputParameters.Contains(Target) context.InputParameters[Target] is Entity target)做双重判空而非直接强转。陷阱三异步插件执行缓慢队列积压现象大量“Send Welcome Email”插件在“系统作业”中状态为“等待”延迟数小时。根源异步插件服务Asynchronous Service资源不足。该服务默认只分配有限线程若插件中有阻塞操作如Thread.Sleep(1000)会占用线程导致队列堵塞。解决方案彻底移除所有Sleep、WaitOne等阻塞调用将耗时操作拆分为多个小任务在生产环境联系管理员调整异步服务线程池大小。4.3 版本管理与回滚当注册出错时如何安全撤退插件注册不是单向操作必须掌握回滚能力。PRT提供了完整的生命周期管理禁用步骤右键插件步骤→“Disable Step”。这比删除更安全禁用后插件不再触发但所有配置保留可随时启用。删除步骤右键→“Delete Step”。仅删除绑定关系不影响程序集。删除程序集右键程序集→“Delete Assembly”。警告这会删除所有绑定到该程序集的步骤且无法恢复生产环境严禁直接删除必须先禁用所有步骤再删除。版本升级当插件逻辑更新需发布新版本。在VS中修改程序集版本号如1.0.0.0→1.1.0.0重新编译签名用PRT“Register New Assembly”注册新版本。旧版本程序集会自动停用新版本接管。无需手动删除旧版。我的版本管理铁律每次发布新版本必须在PRT中为旧版本添加注释如“v1.0.0.0 - 2023-10-01 上线已停用”。方法是右键旧程序集→“Edit Assembly”在“Description”字段填写。这样半年后排查问题一眼就能看出哪个版本在何时运行。5. 从注册到落地插件工程化实践的延伸思考插件注册流程本身是标准化的但将其融入真实项目还需考虑更多工程化维度。这些不是PRT能教你的而是多年踩坑后沉淀的实战经验。配置驱动 vs 代码硬编码新手常把所有业务规则写死在插件代码里如“信用额度阈值10000”。这导致每次规则变更都要重新编译、注册、测试。成熟做法是将规则外置在CRM中创建一个自定义实体new_businessrule字段包括RuleName、EntityName、FieldName、ThresholdValue。插件执行时动态查询该实体获取当前阈值。这样业务人员可在网页端直接修改规则无需开发介入。注册时只需确保插件有读取该实体的权限即可。单元测试的不可替代性很多人认为插件必须在CRM环境中测试。这是误区。Microsoft.CrmSdk.CoreAssemblies提供了模拟上下文的类库。你可以编写纯.NET单元测试模拟IPluginExecutionContext、IOrganizationService验证插件逻辑是否正确。例如测试“邮箱校验”插件只需传入一个含非法邮箱的Entity对象断言是否抛出InvalidPluginExecutionException。这比在PRT中反复触发快十倍且能覆盖边界情况如空字符串、超长字符串。监控与告警生产环境中插件失败不应静默。我建议在每个插件的catch块中添加发送告警的逻辑调用Dynamics 365内置的Email消息向运维邮箱发送失败详情。或者将错误日志推送到Azure Application Insights设置失败率超过1%时自动告警。注册流程的终点不是“注册成功”而是“可观测、可预警、可追溯”。我个人在实际操作中的体会是插件注册的熟练度不取决于你点击了多少次“Register”按钮而取决于你对每一次失败报错的解读深度。当看到“Access is denied”时第一反应不是重试而是立刻打开用户角色页面当追踪日志为空时第一反应不是怀疑代码而是检查PRT连接的组织URL。这种条件反射式的排查思维才是零基础走向专业的分水岭。注册流程本身很短但背后支撑它的是对Dynamics 365安全模型、事务机制、执行管道的深刻理解。把这些理解写进每一次注册操作里插件才真正从一段代码变成业务系统的有机组成部分。

相关新闻

Flutter+SQLite宠物生命周期管理App开发实战:AI辅助从零搭建

Flutter+SQLite宠物生命周期管理App开发实战:AI辅助从零搭建

1. 项目缘起与整体设计思路1.1 为什么选宠物生命周期管理这个方向做任何一个从零起步的项目,第一步永远不是写代码,而是想清楚"这东西到底给谁用、解决什么痛点"。宠物生命周期管理这个方向,乍看像是个小众赛道,但实际拆…

2026/10/15 23:00:25 阅读更多 →
AI编程实战:pytest、Nginx与重构中的认知协作者

AI编程实战:pytest、Nginx与重构中的认知协作者

1. 这不是“让AI写代码”,而是我每天真实推进项目的编程方式“我如何用 AI 做真实编程”——这句话里最需要被拆解的,是“真实”两个字。它不是指“用AI生成一段能跑通的Hello World”,也不是“把Stack Overflow答案喂给大模型再润色一遍”。…

2026/10/15 23:00:25 阅读更多 →
Cinder备份自动化:基于YAML策略的标准化运维实践

Cinder备份自动化:基于YAML策略的标准化运维实践

简介:这是一份面向OpenStack运维工程师与云平台开发者的Python工具脚本,专为解决Cinder卷备份服务在多租户场景下的功能局限而设计,如跨租户备份可见性控制、自动备份轮换、运行中卷的无中断备份等实际运维痛点。资源包共4个文件,…

2026/10/15 23:00:25 阅读更多 →

最新新闻

子网划分原理与实战:从课后题1理解网络分段本质

子网划分原理与实战:从课后题1理解网络分段本质

1. 这道题不是“做作业”,而是打开网络世界的第一把钥匙“计算机网络原理 课后题1”——看到这行字,很多人第一反应是翻教材、查答案、抄个IP地址配个子网掩码就完事。但我在某高校连续带了七年《计算机网络原理》实验课,带过三百多名学生&am…

2026/10/15 23:46:00 阅读更多 →
Qt5范例开发大全:从目录索引到可运行工程的最小闭环

Qt5范例开发大全:从目录索引到可运行工程的最小闭环

简介:《Qt5范例开发大全(完整目录版)》面向具备一定C基础、希望系统掌握Qt5跨平台界面与功能开发的程序员及在校学生。全书以实例驱动,从开发环境搭建与Hello World起步,依次覆盖窗体应用、控件应用、组件应用、文件操…

2026/10/15 23:46:00 阅读更多 →
Claude Code官方插件机制深度解析:从接入规范到自定义开发实践

Claude Code官方插件机制深度解析:从接入规范到自定义开发实践

1. 从"官方插件"这个词说起:它到底解决了什么问题很多人第一次看到claude-plugins-official这个仓库名,第一反应是"官方插件合集,装就完事了"。但真去翻一遍目录结构,会发现它跟传统意义上的"插件市场&q…

2026/10/15 23:46:00 阅读更多 →
SpringBoot+Vue汽车资讯网站管理系统实战开发全流程

SpringBoot+Vue汽车资讯网站管理系统实战开发全流程

做JavaWeb项目这些年,SpringBootVue这对组合算是绕不开的搭配。前段时间刚完成一个汽车资讯网站管理系统,从需求梳理、数据库设计到前后端联调,最后打包部署,整个流程走下来收获不少。这个项目用JavaMySQLMyBatis做后端数据层&…

2026/10/15 23:46:00 阅读更多 →
AnyPS5:将DualSense手柄打造成跨平台万能输入设备

AnyPS5:将DualSense手柄打造成跨平台万能输入设备

1. 项目缘起与核心定位AnyPS5 这个名字第一次出现在我视野里的时候,我正被一堆跨平台输入设备的适配问题折腾得够呛。简单来说,AnyPS5 是一个把 PlayStation 5 的 DualSense 手柄变成“万能输入设备”的软件方案——它能让这块原本只服务于游戏主机的手柄…

2026/10/15 23:46:00 阅读更多 →
Python工具链Rust化:五个提升开发效率的新库实战指南

Python工具链Rust化:五个提升开发效率的新库实战指南

这两年 Python 生态里的话题,绕不开一个词:Rust 化。从包管理到 lint 再到数据验证,一堆新库选择直接用 Rust 重写底层,把之前 Python 工具链里让人头疼的慢、复杂、配置繁琐的问题挨个收拾了一遍。我最近在几个项目里把工具链切到…

2026/10/15 23:45:00 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/15 19:41:51 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

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

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

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

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

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

2026/10/15 9:49:14 阅读更多 →