易语言大漠多线程启动模板:架构设计与踩坑实战
开头我先说个结论易语言加大漠插件做多线程自动化核心难点从来不是“怎么把线程启动起来”而是线程之间怎么隔离、怎么同步、怎么安全地停下来。很多人一上来就启动线程跑了一会儿就崩溃、卡死、窗口句柄乱传、日志乱跳最后只能重启软件。我在这套“易语言大漠多线程模板”上反复打磨过好几轮今天把整个多线程启动的架构、代码和踩过的坑一次性拆开讲清楚。这篇文章适合正在用易语言做大漠自动化、批量窗口操作、并行任务处理的开发者参考。你要是只想抄一段启动代码也能用但建议把前三节看完因为真正的稳定是靠“模板设计”撑起来的不是靠一句启动线程撑起来的。1. 先弄明白为什么大漠脚本必须上多线程1.1 单线程串行模式的瓶颈易语言默认写自动化脚本时代码基本是一条路走到黑取窗口句柄 → 执行操作 → 等待结果 → 再取下一条。这种串行模式在窗口数量少、任务简单的时候没有问题可一旦要同时处理多个窗口劣势马上就出来了。第一个瓶颈是等待浪费。操作一个窗口时如果某个动作需要等待响应、等待加载整个程序就在那儿干等其他窗口全部闲置。比如你处理 5 个窗口每个窗口操作要 3 秒串行跑就是 15 秒其中大量时间浪费在“等”而不是“做”上。第二个瓶颈更致命单线程里一个阻塞点会拖垮整条任务链。某个窗口被弹窗挡住、某个控件状态异常子程序陷入循环或延时等待后面所有任务都要排队。实际运行中经常就是“跑了一个小时突然卡在一个窗口上后面的全没执行”。第三个瓶颈是易语言窗口程序本身的消息机制。如果在一个线程里做大量循环操作窗口界面很容易出现“无响应”状态拖动窗口、点击按钮都会变卡严重时系统会提示强制结束进程。这不是易语言的问题任何单线程 UI 程序都一样。1.2 多线程模板到底在解决什么问题多线程的价值不是“看起来高级”而是把并行任务从架构上拆开每个窗口或每个任务独立一条执行流互不阻塞统一受控。那“模板”又是什么意思很多人写多线程是临时起意需要并发就开几个线程任务跑完就不管了。这种写法的问题在于线程的启动、参数传递、数据同步、停止控制全部混在业务代码里改一次业务动一次线程出问题极难排查。我设计和维护的这套模板核心目标有三个启动标准化不管要跑几个任务、几个窗口启动流程都是同一套配置 → 初始化 → 创建线程 → 状态上报。新接一个需求时只需要替换线程里的业务子程序线程管理部分基本不动。资源隔离每个线程拥有独立的大漠对象、独立的窗口句柄、独立的参数区不共享可变对象。这解决的是多线程崩溃的第一大元凶——对象竞争。可受控停止所有线程通过标志位停止绝不使用强制结束线程这种粗暴操作。这样才能保证窗口绑定状态能正常释放下一次启动不会残留异常。多线程启动本质上是一个调度过程不是一次性的动作。你要在启动前分配好参数启动时记录句柄运行中监控状态结束时平滑回收。后续代码我会按照这个思路展开。2. 模板设计前的三个关键抉择对象隔离、线程参数、停止机制2.1 每个线程独立创建大漠对象大漠插件是一个 COM 组件很多初学者以为它在程序里是“全局唯一的只需要创建一次所有线程共用”。这是一个非常危险的认知。COM 组件的线程模型分几种大漠这类组件在易语言里通过“对象”类型调用时最稳妥的做法就是每个线程单独创建自己的实例。原因有两层第一COM 对象内部有状态。窗口绑定信息、当前操作的句柄、内部缓存都可能保存在对象实例上。如果多个线程共用一个对象线程 A 刚绑定窗口 1线程 B 又来调用同一个对象绑定窗口 2两者直接互相覆盖行为完全不可控。第二从稳定角度讲单独实例能避免跨线程的 COM 调用冲突。我实际测试过共用一个对象实例时短时间运行可能没问题但只要并发量上来、操作频率一高就会出现莫名其妙的调用失败、返回空值甚至直接内存错误。所以在模板里我从来不在全局创建大漠对象而是在工作线程的入口处创建局部对象.子程序 工作线程 .参数 索引, 整数型 .局部变量 大漠对象, 对象 .局部变量 窗口句柄, 整数型 大漠对象.创建 (“dm.dmsoft”, )这句大漠对象.创建 (“dm.dmsoft”, )是模板的标准开头。每个线程进来之后第一件事就是创建自己的对象离开时释放。各线程的大漠对象互不干扰这是整套模板稳定性的地基。提示创建对象之前要确认插件已经在系统里注册过。如果没注册这句会返回失败或抛异常。关于注册问题第 4 节我会专门讲排查方法。2.2 线程参数的传递方式与数据映射线程启动时启动线程命令一般只允许传递一个整数参数。而实际业务里每个线程至少需要知道任务编号、窗口句柄、目标标题、运行参数等等。怎么把多个参数塞进一个线程这里有几种常见做法第一种包装成自定义数据类型传数据指针。定义一个数据类型填好所有字段然后取它的内存地址作为参数传给线程在线程里再通过指针操作还原数据。这种方式灵活但需要自己管理内存稍不留神就是内存泄漏。第二种用全局数组做索引映射。启动线程时把参数数组的下标作为整数参数传进去。线程内部通过下标读取自己的配置信息。这种方式最简单也是我这套模板默认采用的方式。第三种用窗口句柄本身作为线程参数。如果业务就是一个线程处理一个窗口直接把窗口句柄传给线程内部再根据句柄反查其他配置。适合窗口和线程一一对应的场景。我推荐第二种作为通用方案原因在于它把“线程标识”和“业务数据”解耦了。线程参数只是“我是几号任务”拿到编号后再去读自己的配置逻辑清晰也不容易在传参时丢数据。模板里的参数数组结构大概是这样的.全局变量 任务配置, 任务信息, , 0 .数据类型 任务信息 .成员 窗口句柄, 整数型 .成员 窗口标题, 文本型 .成员 执行次数, 整数型 .成员 延时毫秒, 整数型每个线程启动时通过下标访问任务配置[索引]只读不写天然避免了竞争问题。2.3 安全停止机制不是强制结束线程多线程启动对应的是多线程停止。很多人的程序跑着跑着要退出直接调用强制结束线程把线程句柄一杀了之。这是稳定性的大忌。为什么不推荐强制结束因为强制结束线程会跳过线程内部所有清理代码。如果线程已经绑定了窗口还没来得及调用解绑命令就被杀掉插件对象内部状态会残留。下次启动再绑定同一个窗口大概率失败甚至会产生多个无效绑定占用资源。正确的做法是标志位轮询退出用一个全局逻辑型变量作为“停止信号”线程在每个任务循环的头部检查这个标志一旦发现要停止就正常退出绑定、释放资源、结束子程序。.全局变量 停止标记, 逻辑型 .循环判断首 () 如果真 (停止标记 真) 跳出循环 如果真结束 这里放具体的业务操作 处理任务 (索引) 延时 (任务配置[索引].延时毫秒) .循环判断尾 ()停止时的完整流程是先置停止标记 真然后等待所有线程自然结束最后释放线程句柄数组。如果需要带倒计时退出还可以在线程内部加一个超时判断防止某个线程卡在延时里无法快速退出。这里的关键点是线程句柄数组要在所有线程都结束后再清空。很多人启动完线程就把句柄数组重新定义导致后续无法等待线程结束这是停止逻辑混乱的主要原因。3. 多线程启动完整实操从模板初始化到并发运行3.1 模板的全局变量与常量设计先把整套模板的全局区设计出来。以下是我实际使用的骨架.版本 2 .支持库 EThread .支持库 spec .程序集 窗口程序集_启动窗口 .全局变量 线程句柄, 整数型, , 0 .全局变量 停止标记, 逻辑型 .全局变量 任务总数, 整数型 .全局变量 活动线程数, 整数型 .全局变量 任务配置, 任务信息, , 0 .全局变量 许可证, 整数型几个变量的用途我分别说明线程句柄整数型数组保存所有已启动线程的句柄。后续所有对线程的操作都要依赖它。停止标记逻辑型全局停止信号。置真后所有线程会依次退出。任务总数本次任务需要启动的线程数量。活动线程数当前还在运行的线程数量。每启动一个线程它加 1每结束一个线程它减 1。它用来判断任务是否全部跑完。任务配置自定义数据类型的动态数组。下标和线程编号一一对应。许可证整数型。用来控制全局变量的访问临界区比如活动线程数的增减、日志的输出都必须通过许可证保护。为什么活动线程数要加许可证因为它是被多个线程同时修改的共享变量。没有锁的话两个线程同时执行“加一”操作理论上会出现只加了一次的情况。易语言的整数操作虽然没有直接崩溃的风险但在高并发下计数不准确是真实存在的。3.2 工作线程的实现任务循环与许可证工作线程是整套模板的核心。它负责创建大漠对象、读取自己的配置、执行任务循环。下面给出一个比较完整的代码骨架.子程序 工作线程 .参数 索引, 整数型 .局部变量 大漠对象, 对象 .局部变量 窗口句柄, 整数型 .局部变量 循环次数, 整数型 每个线程独立创建大漠对象 大漠对象.创建 (“dm.dmsoft”, ) 如果真 (大漠对象.是否为空 ()) 输出调试文本 (“线程”, 索引, “创建大漠对象失败”) 返回 如果真结束 窗口句柄 任务配置[索引].窗口句柄 尝试绑定窗口失败则直接退出该线程 如果真 (大漠对象.通用方法 (“绑定”, 窗口句柄, “dx”, “windows”, “normal”, 0) 0) 输出调试文本 (“线程”, 索引, “绑定窗口失败”) 返回 如果真结束 循环次数 0 .判断循环首 (停止标记 假 且 循环次数 任务配置[索引].执行次数) 业务操作区域实际项目中替换为具体的窗口操作逻辑 大漠对象.通用方法 (“移动”, 100, 100) 大漠对象.通用方法 (“左键单击”, ) 循环次数 循环次数 1 进入许可证 (许可证) 输出调试文本 (“线程”, 索引, “已完成任务, 次数”, 循环次数) 退出许可证 (许可证) 延时 (任务配置[索引].延时毫秒) .判断循环尾 () 正常退出前解绑窗口并释放资源 大漠对象.通用方法 (“解绑”, ) 进入许可证 (许可证) 活动线程数 活动线程数 - 1 输出调试文本 (“线程”, 索引, “结束, 剩余活动线程数”, 活动线程数) 退出许可证 (许可证)注意这段代码的几个细节绑定失败就返回不要让线程裸跑。如果绑定都没成功后续所有操作都是无效的还占着一个线程名额。绑定模式参数中的dx、windows、normal是插件接口的标准绑定模式。具体项目里要根据窗口类型选择但这个调用位置的逻辑是一致的绑定成功才继续。退出前必须解绑。这是避免下次启动残留的关键。线程正常结束之前先解绑再退出顺序不能反。日志输出放在许可证里。因为输出调试文本在高并发下也涉及共享资源不加锁会出现日志内容穿插混乱甚至调试文本缓冲区崩溃。3.3 核心步骤多线程启动入口与线程句柄管理启动入口是整个模板的命令中心。它会完成配置初始化、许可证创建、线程启动、运行监控四步。这个过程我建议单独写成一个子程序便于多处调用.子程序 启动所有线程 .局部变量 i, 整数型 第一步重置全局状态 停止标记 假 活动线程数 0 第二步创建许可证只有一个 许可证 创建进入许可证 () 第三步根据任务数据逐条启动线程 重定义数组 (线程句柄, 假, 任务总数) 变量循环首 (i 1, 任务总数, 1, i) 进入许可证 (许可证) 活动线程数 活动线程数 1 退出许可证 (许可证) 启动线程 (工作线程, i, 线程句柄[i]) 输出调试文本 (“已启动线程: ”, i) 变量循环尾 () 第四步等待所有线程自然结束 .判断循环首 (活动线程数 0 且 停止标记 假) 延时 (100) .判断循环尾 () 第五步释放许可证等待句柄状态一致 删除进入许可证 (许可证)这里的几个关键步骤我单独强调一下先自增再启动。活动线程数的加一操作要放在启动线程之前。因为线程一旦启动内部马上可能开始执行如果先启动再自增会出现线程已经跑完退出、你还没来得及计数的情况最终导致等待结束时的判断失真。启动线程传递的参数是循环变量 i。注意易语言的循环变量在启动线程内部会被复制一份不存在变量覆盖问题但为了方便阅读和交流我仍然建议在循环体内先把 i 赋值给局部变量再传递。等待循环放在启动者内部。如果你需要启动后立刻返回界面也可以把等待循环放到另一个线程中但模板默认采用同步等待逻辑最简单。这里再补充一个点线程句柄数组在启动完成后不要立刻清理。等待循环结束后可以逐一关闭句柄变量循环首 (i 1, 任务总数, 1, i) 如果真 (线程句柄[i] ≠ 0) 关闭线程句柄 (线程句柄[i]) 如果真结束 变量循环尾 ()关闭句柄和强制结束线程是两回事。关闭句柄只是释放系统对线程内核对象的引用并不会杀掉线程。在线程已经自然结束后这一步主要是防止句柄泄漏。3.4 启动后的运行状态监控很多模板只负责“启动”不管“运行得怎么样”。这在实际项目里是不够的。最简单有效的监控手段是在等待循环里定期检查所有线程是否还活着并在界面上显示当前活动线程数。我一般会在窗口上加一个标签控件每秒刷新一次.子程序 刷新状态 .局部变量 i, 整数型 .局部变量 存活数, 整数型 存活数 0 变量循环首 (i 1, 任务总数, 1, i) 如果真 (线程句柄[i] ≠ 0 且 线程是否存活 (线程句柄[i])) 存活数 存活数 1 如果真结束 变量循环尾 () 标签_状态.标题 “活动线程: ” 到文本 (存活数) “ / ” 到文本 (任务总数)如果手动刷新不够也可以加一个定时器每秒调用一次。这套监控代码的价值在于当线程意外崩溃时你能迅速发现异常而不是等任务全部结束后才发现结果缺失。4. 多线程启动阶段的踩坑实录常见问题与排查方法4.1 高频问题速查表我自己实际跑过的项目里出问题的场景主要集中在下面这些。整理成表方便对照现象可能原因排查方向启动后立即崩溃全局对象被多线程共用检查是否在全局创建了大漠对象线程启动后没有任何输出绑定失败后直接返回检查窗口句柄是否有效、绑定模式是否匹配运行几分钟后卡死日志竞争或控件操作跨线程检查输出调试文本是否加锁、是否直接操作窗口控件停止按钮无效线程卡在延时循环里延时改成可中断的计次延时或设置最大等待时间活动线程数统计不准未使用许可证保护计数所有增减操作都放进许可证再次启动时报绑定失败上次线程未解绑确认退出路径中都执行了解绑大漠对象创建失败插件未注册或权限不足检查系统注册表、以管理员身份运行4.2 典型案例排查过程崩溃与假死我印象最深的一次是某次接的窗口自动化任务并发 8 个线程刚启动 10 秒钟程序直接崩。刚开始怀疑是大漠插件版本问题后来把线程数降成 1 个运行就正常加到 2 个以上就崩。这个现象强烈指向共享对象冲突。排查时我在工作线程入口加了两行日志打印对象是否创建成功。奇怪的是所有线程都显示创建成功但崩溃点集中在某个绝不可能出错的行上。后来仔细看代码才发现有人在公共模块里定义了一个“大漠对象”作为全局变量而工作线程用的是另一个局部变量名。表面看每个线程都有独立对象实际上某个业务子程序内部又调用了全局对象线程竞争直接打崩了 COM 调用。这个教训促成了一条模板红线多线程代码中大漠对象一律局部化任何全局对象都不允许在业务子程序中出现。排查这种问题没有捷径就是把所有涉及对象调用的地方全部列出来逐一确认归属线程。还有一种假死现象更加隐蔽线程不崩溃但程序像死了一样界面点不动。这种通常是子线程直接操作了窗口控件。易语言的窗口控件消息必须在创建它的线程中处理子线程直接改标题、操作组件轻则控件不刷新重则消息循环堵塞。如果确实要更新界面不要直接改控件用“发送消息”或“投递消息”让主窗口处理更新请求或者简单点只在主线程的定时器里通过全局变量读取状态并显示。4.3 注册失败、绑定失败与线程数限制再讲几个启动前期就容易被卡住的点。大漠对象创建失败首先要检查插件有没有注册成功。注册不是把 DLL 放到目录里就行而是要regsvr32或使用插件注册命令把 COM 信息写进系统。注册命令要使用管理员权限运行否则在部分系统上会静默失败。绑定失败的原因大多是窗口句柄失效。线程启动前拿到句柄后到真正去绑定的那几十毫秒内窗口可能已经被关闭或销毁。另外不同窗口类型适用的绑定模式不一样我在模板里默认用的dx模式只是通用方案遇到特殊渲染窗口时要根据窗口特征调整。调试时可以在绑定失败分支里打印错误码再对着文档去查。关于线程数限制不要以为任务开得越多就越快。大漠对象本身有资源开销每个线程还有独立的消息循环线程数超过 CPU 核心数太多后CPU 上下文切换成本会显著吃掉收益。我的经验是普通窗口操作场景下线程数控制在实际核心数的 2 倍以内超过后收益递减而且崩溃概率会成倍上升。如果只是 IO 等待类的任务可以适当多开但不建议超过 2 倍太多。5. 稳定性扩展日志、异常恢复和动态线程控制5.1 日志输出不加锁的坑让日志异步化很多易语言程序习惯用输出调试文本直接打印日志。单线程时没问题多线程时就得小心了。如果多个线程同时调用它轻则日志乱序、内容交错重则调试文本缓冲区报错。我在模板里的做法是两层第一层是在工作线程内部用许可证保护日志输出保证当前线程的日志不会和别人的日志拼接在一起第二层是提供全局日志数组工作线程只把自己要写的日志追加到数组尾部再由界面定时器统一读取显示。.全局变量 日志队列, 文本型, , 0 .子程序 写日志 .参数 内容, 文本型 进入许可证 (许可证) 加入成员 (日志队列, 内容) 退出许可证 (许可证)界面上的定时器每 500 毫秒检查一次日志队列有新内容就追加到编辑框末尾。这样既保证了日志不丢不乱又不占用工作线程时间去刷新界面。这个技巧在长时间运行任务时特别有用否则日志框刷新本身就会成为性能瓶颈。5.2 线程异常后的自恢复与重新拉起的闭环线程因为绑定失败、窗口异常等原因退出后活动线程数会减少但这并不意味着整个任务失败。如果业务场景允许模板可以加一个简单的“补充线程”机制。思路是这样的在等待循环里如果监测到活动线程数小于任务总数说明可能有线程提前退出了。此时检查对应窗口句柄是否还有效如果有效就重新启动线程补位。 在等待循环内追加补位逻辑 变量循环首 (i 1, 任务总数, 1, i) 如果真 (线程句柄[i] ≠ 0 且 线程是否存活 (线程句柄[i]) 假) 如果真 (窗口是否有效 (任务配置[i].窗口句柄)) 输出调试文本 (“线程”, i, “异常退出, 准备重新拉起”) 关闭线程句柄 (线程句柄[i]) 启动线程 (工作线程, i, 线程句柄[i]) 如果真结束 如果真结束 变量循环尾 ()补位时要注意防止无限拉起。如果窗口已经失效还不停重启线程只会造成资源浪费。判断窗口依然有效是补位的必要条件。另外如果某个线程反复异常可以在全局加一个“失败次数数组”失败超过 3 次就不再拉起避免死循环。5.3 动态调整线程数量的思路任务数固定的场景相对简单复杂一点的需求是任务总量固定但性能要求随时调整。比如上午任务多要开 10 个线程下午任务少只开 3 个。模板层面要支持这种动态调整可以引入“线程池”概念。每种实现都基于同一个原则线程名册和活动开关解耦。线程启动后不是一直执行同一个任务而是去“领取”任务编号执行完再领下一个。这样线程数量可以随时增减任务分片也能动态平衡。.全局变量 下一个任务编号, 整数型 .子程序 线程池工作线程 .参数 线程编号, 整数型 .局部变量 当前任务号, 整数型 判断循环首 (停止标记 假) 进入许可证 (许可证) 如果真 (下一个任务编号 任务总数) 退出许可证 (许可证) 跳出循环 如果真结束 当前任务号 下一个任务编号 下一个任务编号 下一个任务编号 1 退出许可证 (许可证) 处理任务 (当前任务号) .判断循环尾 ()这种模式下线程数只是一个资源参数不需要和任务列表一一绑定。动态减少线程时只要把对应的线程句柄关闭让线程在领不到任务后自然退出。动态增加线程时直接按新数量启动即可。这个思路比“每个线程固定一个窗口”更贴近真实项目需求但代码复杂度也更高。新手建议先跑透前面的固定模板再考虑升级线程池。再补充一个实际心得无论用固定模板还是线程池所有线程的退出路径必须只有一条。有些人在业务代码里写返回有些分支里写跳出循环有些分支里忘了退出直接掉到子程序末尾最终导致活动线程数没有减一。这不是难解决的问题但要靠代码规范来保证。我在工作线程里规定好只有唯一一个返回点任何业务子程序都不允许直接结束线程。这个约束帮我节省了大量排查时间。最后分享一个小技巧模板里所有延时调用尽量拆散不要一次性延时太长。比如需要延时 5 秒我通常拆成延时 (500)的循环加停止标记判断。这样停止按钮的响应速度会好很多任务也能在真正需要退出时快速退出而不是干瞪眼等那 5 秒结束。这个小细节用在了上面所有的循环代码里也是我长期运行这套模板不卡死的关键之一。

相关新闻

C66x多核DSP硬件设计实战:架构、电源与调试

C66x多核DSP硬件设计实战:架构、电源与调试

/* 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 1:35:09 阅读更多 →
开发者成长路径:从技术筑基到商业价值实现

开发者成长路径:从技术筑基到商业价值实现

1. 个人开发者成长全景图刚入行时我以为学会编程语言就能成为合格开发者,直到第一次独立交付项目时才意识到:从代码搬运工到具备完整交付能力的开发者之间,隔着产品思维、工程化能力、用户洞察等多重维度。真正的成长路径应该像建造金字塔——…

2026/10/14 1:35:09 阅读更多 →
图像压缩实战:从频率统计到Huffman编解码器完整实现

图像压缩实战:从频率统计到Huffman编解码器完整实现

/* 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 1:34:09 阅读更多 →

最新新闻

LaTeX 2025环境配置:texlive + TeXstudio

LaTeX 2025环境配置:texlive + TeXstudio

文章目录Latex2025环境配置一、LaTeX 简介1.1 什么是 LaTeX?1.2 为什么使用 LaTeX?1.3 如何开始使用 LaTeX?二、texlive下载安装2.1 texlive下载2.2 texlive安装2.3 常见问题2.3.1 用管理员权限打开install-tl-windows.bat 报错2.3.2 Latex安…

2026/10/14 2:20:23 阅读更多 →
从工勘图到资源库:提交 nVisual Studio 与机房设计全生命周期的闭环

从工勘图到资源库:提交 nVisual Studio 与机房设计全生命周期的闭环

从工勘图到资源库:提交 nVisual Studio 与机房设计全生命周期的闭环摘要:工勘图纸的价值在「进入可检索、可复用资源库」之后才被放大——本地文件解决现场与交付,平台解决长期资产。DCDesigner 的「提交 nVisual Studio」把工勘 JSON 一键回…

2026/10/14 2:20:23 阅读更多 →
因果推断教材实战:从AB实验到双重机器学习与策略学习

因果推断教材实战:从AB实验到双重机器学习与策略学习

简介:这份资源是斯坦福大学Stefan Wager于2024年9月更新的《Causal Inference: A Statistical Learning Approach》教科书草稿,面向数据科学、统计学、经济学与公共政策领域的学习者和研究者,帮助其系统掌握基于统计学习方法的因果推断理论与…

2026/10/14 2:20:23 阅读更多 →
游集美Day1:逛完学村走老巷,被这几家街坊常来的小店拦住了脚步

游集美Day1:逛完学村走老巷,被这几家街坊常来的小店拦住了脚步

很多人来集美,打卡完嘉庚建筑、龙舟池,拍几张照片就匆匆返程。 但集美真正动人的烟火,不在网红打卡点,藏在黄昏的社区老巷。 这条路线我按地理位置理顺,不跨区乱跑,骑行顺路,慢逛无赶路压力&…

2026/10/14 2:20:23 阅读更多 →
系统辨识实战教案:M序列设计、RLS实现与工业白化检验

系统辨识实战教案:M序列设计、RLS实现与工业白化检验

简介:本资源是一份面向自动化专业本科生与研究生的《系统辨识》课程教案,聚焦工程建模核心能力培养,解决从实际系统数据中构建可用数学模型的关键问题。教案覆盖实体与模型本质辨析、Zadeh三要素(数据/模型类/准则)理论…

2026/10/14 2:20:23 阅读更多 →
AI 辅助科研溯源闸门:输入·命令·决策·证据四类记录的失败含义与当天最小实验

AI 辅助科研溯源闸门:输入·命令·决策·证据四类记录的失败含义与当天最小实验

千笔-AIWritePaper https://www.aiwritepaper.com Agent 能很快从原始表跑出一张宇宙学风格的斜率图,不等于结果可审查。缺了输入校验和,文件可以被静默替换;命令行事后改参,YAML 里仍写着旧参数;决策条目没有理由&am…

2026/10/14 2:19:23 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 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/13 22:01:27 阅读更多 →
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/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练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/12 18:11:17 阅读更多 →