Dev-C++编译的Windows更新重置工具实战指南
简介这是一款专为Windows用户设计的更新故障修复工具面向系统维护人员、IT支持工程师及希望自主解决更新失败问题的进阶用户可快速重置Windows Update服务、清理组件缓存、重启相关服务有效应对补丁安装卡顿、0x8007xxxx错误、服务异常等典型问题。资源包共132个文件含54份Markdown文档含使用说明、开发日志与技术解析、24页HTML页面含交互式帮助界面与功能导航、14个C头文件与1个核心cpp源码体现Dev-C开发痕迹辅以CSS/JS前端资源、VBS/CMD脚本及多张操作引导图示整体仅1.66MB轻量易部署。目前已有444人学习下载读者可直接运行命令行工具完成自动化修复亦能深入源码学习C调用Windows服务API的实践方法并参考完整项目结构含.gitattributes、.editorconfig、license等工程规范文件开展二次开发或教学演示。1. 为什么一个用 Dev-C 写的 Windows 更新重置工具至今还在被一线运维悄悄传阅这不是一个“新项目”也不是某大厂开源的现代化 GUI 工具。它是一段用 Dev-C 5.11 编译、依赖 MinGW32 运行时、界面只有 3 个按钮和 1 块日志框的 Win32 程序——但过去三年里我在某高校 IT 支持组、某制造企业产线工控终端维护群、某省级政务云驻场团队的共享网盘里反复看到同一个压缩包WinUpdateReset_v2.3.zip解压后是WinUpdateReset.exereadme.txt。它不联网、不调用 PowerShell、不写注册表键值却能在 Windows 10/11 22H2–24H2 多个累积更新卡死场景下5 分钟内清空 SoftwareDistribution 和 Catroot2 并重置 Windows Update 服务状态。真正让它活下来的原因不是功能多炫而是在 BitLocker 加密盘、组策略锁死、WSUS 强制代理、甚至系统文件损坏但未蓝屏的灰色地带它仍能跑起来、有输出、不崩溃。如果你正面对一台“检查更新永远转圈”“错误代码 0x80073712 / 0x80246007 / 0x80070005”的物理终端且不能重装、不敢进 PE、PowerShell 被禁用——这篇笔记就是为你写的。它不讲原理图谱只讲怎么从零编译、怎么安全运行、哪些按钮真能按、哪些日志行必须盯住。2. 为什么选 Dev-C不是 Visual Studio也不是 Rust 或 Go2.1 Dev-C 的不可替代性静态链接 零依赖 无 UAC 弹窗链很多人第一反应是“都 2024 年了还用 Dev-C是不是过时了”——恰恰相反这是经过大量现场验证后的主动选择。Dev-C 默认使用 MinGW-w64本项目实测为 TDM-GCC 4.9.2 兼容版其生成的.exe可通过-static-libgcc -static-libstdc实现完全静态链接。这意味着不需要目标机器安装 Visual C Redistributable不触发 Windows SmartScreen 对“未知发布者”的拦截因为无数字签名反而更少弹窗不依赖任何.dll双击即运行连msvcr120.dll缺失都不会报错更关键的是它默认以medium integrity级别启动不会自动触发 UAC 提权弹窗——而 Windows Update 服务重置操作中90% 的失败源于“程序请求管理员权限 → 用户点否 → 后续所有服务操作静默失败”。本工具所有提权动作均由用户显式点击“以管理员身份运行”完成之后全程在 elevated 进程内执行避免了 PowerShell 脚本中Start-Process -Verb RunAs导致的句柄丢失、管道中断等玄学问题。提示本项目不打包 manifest 文件也不嵌入requireAdministrator声明。是否提权由用户右键菜单决定——这是对现场环境不确定性的最大尊重。2.2 比较Dev-C vs PowerShell vs CMD 批处理的真实落地差距维度Dev-C 工具PowerShell 脚本CMD 批处理执行环境兼容性Windows 7 SP1 全支持含 Server 2008 R2Windows 8.1 默认启用Win7 需手动升级 WMF 5.1易失败兼容性最好但逻辑表达能力极弱服务控制可靠性直接调用OpenService()ControlService(SERVICE_CONTROL_STOP)可捕获ERROR_SERVICE_NOT_ACTIVE等细粒度错误码Stop-Service在服务处于PAUSED或START_PENDING状态时常超时或假成功net stop wuauserv无法处理依赖服务如 cryptsvc、bits常报“服务有依赖关系”目录清理安全性使用RemoveDirectoryA()SHFileOperation()双保险对只读/加密/正在使用的文件返回明确错误码并跳过Remove-Item -Recurse -Force在 BitLocker 加密卷上可能触发 EFS 解密失败导致进程挂起rd /s /q遇到占用文件直接报错退出无重试/跳过机制日志可追溯性每步操作写入 UTF-8 编码log.txt含毫秒级时间戳、API 返回值、 GetLastError()Start-Transcript日志格式混乱含 ANSI 转义符无法被 LogParser 直接解析 log.txt无编码声明中文系统下为 GBK跨设备查看乱码结论很直白当你面对的是 200 台分布在车间、仓库、窗口的 Windows 10 IoT Enterprise 设备其中 37% 禁用了 PowerShell、42% 的本地组策略禁止脚本执行、且没有统一域控——一个 1.2MB 的.exe比一段需要解释“为什么得先解禁 ExecutionPolicy”的脚本靠谱十倍。2.3 Dev-C 工程结构拆解四个核心源文件的作用边界本工具虽小但模块划分清晰全部源码共 4 个.cpp文件无头文件.h降低编译链路复杂度main.cppWin32 窗口主循环创建按钮、日志框、消息响应不包含任何业务逻辑仅做 UI 调度service_ctrl.cpp封装advapi32.lib调用实现StopWuaServices()/StartWuaServices()严格按依赖顺序操作cryptsvc → bits → wuauserv → appidsvc → trustedinstallerfolder_clean.cpp调用shell32.lib的SHFileOperation()清理SoftwareDistribution和Catroot2自动检测并跳过正在被 TrustedInstaller 占用的子目录这是 0x80070005 错误的核心成因log_writer.cpp使用CreateFileA()WriteFile()写入 UTF-8 日志强制 BOM 头确保 Notepad/VS Code/Logstash 均能正确识别编码。所有 API 调用均带错误检查例如// service_ctrl.cpp 中 StopWuaServices() 片段 SC_HANDLE hSCM OpenSCManagerA(NULL, NULL, SC_MANAGER_CONNECT); if (!hSCM) { LogError(OpenSCManagerA failed, error: %lu, GetLastError()); return false; }每行LogError()都会同步输出到 UI 日志框和磁盘日志形成双向可审计痕迹。3. 从零编译在 Windows 10 上用 Dev-C 5.11 复现可运行版本3.1 环境准备只装这三样拒绝“全家桶污染”Dev-C 官方已停止维护但社区维护版如 Orwell Dev-C 5.11仍稳定可用。严禁安装任何带“TDM-GCC”“MinGW-w64”字样的独立编译器套件——它们会覆盖 Dev-C 自带的 GCC 版本导致链接失败。只需三步下载 Orwell Dev-C 5.11官网存档版大小约 52MB安装路径不要含中文或空格例C:\Dev-Cpp安装时勾选 “Add to PATH” 和 “Run Dev-C after installation”启动后进入Tools → Compiler Options → Settings → Code Generation确认Compiler为TDM-GCC 4.9.2Linker选项卡中勾选☑️Static libgcc☑️Static libstdc☑️Generate debugging information注意若编译时报undefined reference to GetTickCount64说明目标系统需兼容 Win7须在Project Options → Parameters → Linker中添加-lkernel32——此函数在 Win7 SP1 存在但 MinGW 4.9.2 默认不链接 kernel32.lib。3.2 创建工程四步建立最小可运行框架File → New → Project选择Windows Application语言选C项目名填WinUpdateReset路径设为C:\Projects\WinUpdateReset删除自动生成的main.cpp新建 4 个空文件main.cpp、service_ctrl.cpp、folder_clean.cpp、log_writer.cpp将以下基础框架代码粘贴至main.cpp仅保留 Win32 窗口骨架无业务逻辑// main.cpp #include windows.h #include commctrl.h #pragma comment(lib, comctl32.lib) // 声明外部函数实际定义在其他 .cpp 中 extern bool StopWuaServices(); extern bool StartWuaServices(); extern bool CleanUpdateFolders(); extern void LogMessage(const char* msg); extern void LogError(const char* fmt, ...); // 窗口过程 LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { static HWND hBtnStop, hBtnClean, hBtnStart, hLog; switch(msg) { case WM_CREATE: InitCommonControls(); hLog CreateWindowExA(0, EDIT, , WS_CHILD | WS_VISIBLE | WS_VSCROLL | ES_MULTILINE | ES_READONLY, 10, 10, 560, 300, hwnd, (HMENU)1, NULL, NULL); hBtnStop CreateWindowExA(0, BUTTON, 停止更新服务, WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 10, 320, 120, 30, hwnd, (HMENU)101, NULL, NULL); hBtnClean CreateWindowExA(0, BUTTON, 清理更新缓存, WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 140, 320, 120, 30, hwnd, (HMENU)102, NULL, NULL); hBtnStart CreateWindowExA(0, BUTTON, 启动更新服务, WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 270, 320, 120, 30, hwnd, (HMENU)103, NULL, NULL); break; case WM_COMMAND: if (LOWORD(wParam) 101 HIWORD(wParam) BN_CLICKED) { LogMessage(【操作】点击停止更新服务); StopWuaServices(); } else if (LOWORD(wParam) 102 HIWORD(wParam) BN_CLICKED) { LogMessage(【操作】点击清理更新缓存); CleanUpdateFolders(); } else if (LOWORD(wParam) 103 HIWORD(wParam) BN_CLICKED) { LogMessage(【操作】点击启动更新服务); StartWuaServices(); } break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hwnd, msg, wParam, lParam); } return 0; } int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { const char CLASS_NAME[] WinUpdateResetWindow; WNDCLASS wc {}; wc.lpfnWndProc WndProc; wc.hInstance hInstance; wc.lpszClassName CLASS_NAME; RegisterClass(wc); HWND hwnd CreateWindowExA(0, CLASS_NAME, Windows 更新重置工具 v2.3, WS_OVERLAPPEDWINDOW ~WS_MAXIMIZEBOX, CW_USEDEFAULT, CW_USEDEFAULT, 600, 400, NULL, NULL, hInstance, NULL); if (hwnd NULL) return 0; ShowWindow(hwnd, nCmdShow); MSG msg {}; while (GetMessage(msg, NULL, 0, 0)) { TranslateMessage(msg); DispatchMessage(msg); } return 0; }这段代码仅构建 UI 框架所有按钮点击后调用外部函数尚未定义确保编译通过即可验证环境。3.3 关键函数实现service_ctrl.cpp中的服务控制逻辑service_ctrl.cpp是本工具最硬核的部分它绕过了net start/stop的黑盒直连 SCMService Control Manager。以下是StopWuaServices()的完整实现含依赖顺序与错误恢复// service_ctrl.cpp #include windows.h #include stdio.h #include log_writer.cpp // 注意此处直接包含避免头文件管理 // 服务名数组按依赖顺序排列逆序停止正序启动 const char* SERVICE_NAMES[] { wuauserv, // Windows Update appidsvc, // Application Identity cryptsvc, // Cryptographic Services bits, // Background Intelligent Transfer Service trustedinstaller // Windows Modules Installer }; const int SERVICE_COUNT sizeof(SERVICE_NAMES)/sizeof(SERVICE_NAMES[0]); bool StopWuaServices() { SC_HANDLE hSCM OpenSCManagerA(NULL, NULL, SC_MANAGER_CONNECT); if (!hSCM) { LogError(OpenSCManagerA failed, error: %lu, GetLastError()); return false; } // 逆序停止先停 wuauserv再停依赖它的服务 for (int i 0; i SERVICE_COUNT; i) { SC_HANDLE hSvc OpenServiceA(hSCM, SERVICE_NAMES[i], SERVICE_STOP | SERVICE_QUERY_STATUS); if (!hSvc) { DWORD err GetLastError(); if (err ERROR_SERVICE_DOES_NOT_EXIST || err ERROR_ACCESS_DENIED) { LogMessage(【跳过】服务 %s 不存在或无权限, SERVICE_NAMES[i]); continue; } LogError(OpenServiceA(%s) failed, error: %lu, SERVICE_NAMES[i], err); CloseServiceHandle(hSCM); return false; } SERVICE_STATUS status; if (!QueryServiceStatus(hSvc, status)) { LogError(QueryServiceStatus(%s) failed, error: %lu, SERVICE_NAMES[i], GetLastError()); CloseServiceHandle(hSvc); CloseServiceHandle(hSCM); return false; } if (status.dwCurrentState SERVICE_STOPPED || status.dwCurrentState SERVICE_STOP_PENDING) { LogMessage(【状态】服务 %s 已停止或正在停止, SERVICE_NAMES[i]); CloseServiceHandle(hSvc); continue; } if (!ControlService(hSvc, SERVICE_CONTROL_STOP, status)) { DWORD err GetLastError(); if (err ERROR_SERVICE_NOT_ACTIVE) { LogMessage(【状态】服务 %s 当前未运行, SERVICE_NAMES[i]); } else { LogError(ControlService(STOP, %s) failed, error: %lu, SERVICE_NAMES[i], err); } } else { LogMessage(【执行】已发送停止指令给服务 %s, SERVICE_NAMES[i]); } CloseServiceHandle(hSvc); } CloseServiceHandle(hSCM); return true; }参数说明与可调点SERVICE_CONTROL_STOP是标准停止指令比net stop更底层QueryServiceStatus()检查当前状态避免对已停止服务重复发令ERROR_SERVICE_NOT_ACTIVE被显式捕获并记录而非视为失败——这是现场常见状态如trustedinstaller常驻内存但状态为STOPPED若某服务停止失败如cryptsvc因证书服务占用后续服务仍继续尝试保证最大范围清理。4. 避坑指南现场踩过的 5 个真实翻车点与血泪修复方案4.1 现象点击“清理更新缓存”后程序无响应日志框空白任务管理器显示进程 CPU 占用 0%但不退出原因SHFileOperation()在清理Catroot2时遇到被TrustedInstaller进程独占的catroot2\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}目录该 API 默认阻塞等待释放最长可达 30 秒。而 UI 线程未做PeekMessage()检查导致界面冻结。解决在folder_clean.cpp中改用IFileOperationCOM 接口Vista设置FOF_NOERRORUI | FOF_SILENT | FOF_NOCONFIRMATION并调用SetOperationFlags(FOFX_EARLYFAILURE)强制快速失败。同时在调用前用CreateFileA()尝试以GENERIC_READ打开该目录下的任意文件若失败则跳过整个子目录。4.2 现象工具以管理员身份运行但“停止更新服务”按钮点击后日志显示OpenSCManagerA failed, error: 5拒绝访问原因目标机器启用了“本地组策略 → 计算机配置 → Windows 设置 → 安全设置 → 本地策略 → 安全选项 → 网络访问: 不允许 SAM 账户和共享的匿名枚举”该策略会阻止非 SYSTEM 账户调用OpenSCManagerA(NULL, NULL, ...)。解决将OpenSCManagerA的第二个参数lpMachineName从NULL改为.本地计算机名第三个参数从SC_MANAGER_CONNECT改为SC_MANAGER_ENUMERATE_SERVICE权限要求更低实测在 99% 的锁定环境中生效。4.3 现象清理完成后重启服务“启动更新服务”按钮日志显示StartServiceA failed, error: 1053服务未及时响应原因wuauserv启动依赖cryptsvc完全就绪而cryptsvc初始化证书库需数秒。StartServiceA()返回成功仅表示命令已发出并不保证服务进入RUNNING状态。解决在StartWuaServices()中对每个服务启动后循环调用QueryServiceStatus()最多 10 次每次间隔 1 秒直到dwCurrentState SERVICE_RUNNING或超时。超时则记录警告但不中断后续服务启动。4.4 现象日志文件log.txt中文显示为乱码如“【操作】鐐瑰嚮锛氬仠姝㈡洿鏂拌鏈嶅姟”原因LogWriter.cpp中WriteFile()写入的是 ANSI 字符串char*但 Windows 记事本默认用当前系统区域设置如简体中文 GBK解码而 Dev-C 源码保存为 UTF-8 无 BOM导致解码错位。解决在LogWriter.cpp开头写入 UTF-8 BOM0xEF 0xBB 0xBF并在每次WriteFile()前将char*字符串转换为 UTF-8 编码使用WideCharToMultiByte(CP_UTF8, ...)。已在LogMessage()函数内固化此逻辑。4.5 现象在 Windows 11 23H2 上工具运行后“检查更新”仍报错0x80073712CBS_E_INVALIDOPERATION原因该错误本质是组件存储Component Store损坏SoftwareDistribution清理无效。必须额外执行DISM /Online /Cleanup-Image /RestoreHealth但此命令需调用dism.exe而某些精简版系统删除了该文件。解决在main.cpp中增加第四个按钮“修复组件存储”点击后检测C:\Windows\SysNative\dism.exe是否存在。若存在则用CreateProcessA()启动dism.exe /Online /Cleanup-Image /RestoreHealth /NoRestart并重定向 stdout/stderr 到日志框若不存在提示用户“需手动挂载 Windows ISO 并指定/Source参数”。5. 进阶技巧如何让这个工具成为你运维包里的“后悔药”5.1 一键打包把.exe 依赖项压缩成免解压自运行包很多现场不允许解压 ZIP但允许运行.exe。我们可以用开源工具iExpressWindows 自带将WinUpdateReset.exe、readme.txt、log.txt预置模板打包为单文件 SFX 包运行iexpress.exe位于C:\Windows\System32选 “Create new Self Extraction Directive file” → “Extract files only”在 “Files to extract” 页面添加WinUpdateReset.exe设为“运行此程序”readme.txt设为“提取但不运行”log.txt空文件确保日志目录可写在 “Prompt user for path to extract files” 取消勾选设提取路径为%TEMP%\WinUpdateReset生成WinUpdateReset_SFX.exe大小约 1.8MB双击即运行无任何中间解压步骤。提示SFX 包内所有路径均为相对路径WinUpdateReset.exe启动后自动SetCurrentDirectory(%TEMP%\\WinUpdateReset)确保日志写入可控位置。5.2 日志分析自动化用 Python 脚本解析log.txt生成诊断报告运维人员没时间逐行看日志。我写了一个 32 行的analyze_log.py输入log.txt输出 HTML 报告# analyze_log.py import re from datetime import datetime def parse_log(file_path): with open(file_path, r, encodingutf-8-sig) as f: lines f.readlines() report {success: 0, error: 0, warning: 0, steps: []} for line in lines: if 【操作】 in line: report[steps].append(line.strip()) elif 【执行】 in line: report[success] 1 elif 【跳过】 in line or 【状态】 in line: report[warning] 1 elif LogError in line or failed in line.lower(): report[error] 1 # 生成 HTML html fhtmlbody h2WinUpdateReset 诊断报告/h2 p生成时间{datetime.now().strftime(%Y-%m-%d %H:%M:%S)}/p p成功步骤{report[success]} | 警告{report[warning]} | 错误{report[error]}/p h3关键操作序列/h3 ul for step in report[steps][-5:]: # 只取最后 5 步 html fli{step}/li html /ul/body/html with open(diagnosis_report.html, w, encodingutf-8) as f: f.write(html) print(报告已生成diagnosis_report.html) if __name__ __main__: parse_log(log.txt)将此脚本与log.txt放同一目录双击运行立即获得可读性极强的诊断页——这是给非技术人员看的“结果说明书”。5.3 安全加固给你的定制版加一层“防误触”保护曾有同事误将工具放在公用桌面新员工双击“清理更新缓存”导致产线终端更新服务瘫痪 2 小时。现在我的所有分发版都加了启动校验在WinMain()开头插入// 检查是否从可信路径启动防双击误操作 char szPath[MAX_PATH]; GetModuleFileNameA(NULL, szPath, MAX_PATH); char* pLastSlash strrchr(szPath, \\); if (pLastSlash) { *(pLastSlash 1) \0; // 截断到目录 if (strcmp(szPath, C:\\IT_Tools\\) ! 0 strcmp(szPath, D:\\Admin\\) ! 0) { MessageBoxA(NULL, 请从指定运维目录运行本工具\n如 C:\\IT_Tools\\, 安全警告, MB_ICONWARNING | MB_OK); return 0; } }只要不是从C:\IT_Tools\或D:\Admin\启动直接弹窗阻止——简单粗暴但有效。我坚持用 Dev-C 编译这个工具不是因为怀旧而是因为它用最原始的 Win32 API把“确定性”刻进了每一行汇编。当 PowerShell 被策略锁死、当 CMD 因编码崩掉、当 Python 脚本找不到解释器——这个 1.2MB 的.exe依然能双击运行告诉你哪一步成功、哪一步跳过、哪一步必须人工介入。它不炫技不联网不申请权限只做一件事在系统还能喘气的时候帮你把 Windows Update 的“呼吸管”重新插回去。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

人脸表情识别课堂行为检测系统:OpenCV+CNN毕设级方案

人脸表情识别课堂行为检测系统:OpenCV+CNN毕设级方案

简介:这份基于Python的人脸表情识别课堂行为检测系统,是面向计算机视觉方向毕业设计的高分完整项目,适合需要快速搭建课堂行为分析原型的学生与开发者。系统以人脸表情识别为核心,可对课堂场景中的学生状态进行检测与记录&#xf…

2026/10/13 15:56:03 阅读更多 →
社保反欺诈Python项目拆解:特征工程到模型调优全流程

社保反欺诈Python项目拆解:特征工程到模型调优全流程

简介:一套以社会保险反欺诈为场景的人工智能分析实战资源,面向计算机专业正在完成毕业设计、课程设计或项目实战练习的学生。资源以5个Jupyter Notebook为核心,串联特征分析、特征衍生、特征选择、特征变换与模型参数调优等关键流程&#xff…

2026/10/14 3:02:18 阅读更多 →
ECG心电图5分类建模:Python信号处理与TCN时序建模实战

ECG心电图5分类建模:Python信号处理与TCN时序建模实战

简介:本资源是一套面向高校本科生及研究生的医学信号处理实战项目,聚焦心电图(ECG)信号的深度学习分类任务,适用于期末大作业、课程设计或毕业设计场景。项目基于Python实现端到端5分类模型,涵盖CNN、LSTM、…

2026/10/12 15:45:09 阅读更多 →

最新新闻

EPLAN电气项目图纸高效读图与安全复用指南

EPLAN电气项目图纸高效读图与安全复用指南

做电气设计这些年,我经手过不少EPLAN项目文件,有自己从头画的,也有从同行手里拿到后二次改造的。一个很直观的体会是:同样是"分享图纸",文件与文件之间的价值差距可以非常大。有的图纸打开就能当标准模板用&…

2026/10/14 5:12:02 阅读更多 →
多相流数值模拟实战:从水管到沙滩的建模选型与参数调试

多相流数值模拟实战:从水管到沙滩的建模选型与参数调试

做了十几年流体仿真,我越来越觉得多相流数值模拟是最能体现“流体魔法”的领域。一个水龙头看似平稳的水柱,背后是气液两相在高剪切下的剧烈纠缠;一片安安静静的沙滩,底下每分每秒都有颗粒在随波迁徙。你盯着云图上的气泡上升和沙…

2026/10/14 5:12:02 阅读更多 →
P2G与碳捕集耦合的热电联供综合能源系统双目标优化复现

P2G与碳捕集耦合的热电联供综合能源系统双目标优化复现

1. 复现项目的本质:搞懂这篇工作到底在优化什么做综合能源系统方向的人,对“考虑P2G和碳捕集设备的热电联供综合能源系统运行优化”这个题目应该不陌生。这是一篇发表在Energy上的SCI一区论文的复现任务,原文章本身的工作量集中在两个点上&am…

2026/10/14 5:12:02 阅读更多 →
深度神经网络训练核心逻辑:从原理到实战的完整指南

深度神经网络训练核心逻辑:从原理到实战的完整指南

1. 从“能跑通”到“真明白”:深度神经网络训练的核心逻辑拆解很多人学深度学习都有个类似的经历:跟着教程把模型搭起来,数据喂进去,损失曲线也能往下走,但一旦换个数据集、改个任务,就完全不知道从哪儿下手…

2026/10/14 5:12:02 阅读更多 →
CF1420D 区间计数与扫描线:组合数学在算法竞赛中的实战应用

CF1420D 区间计数与扫描线:组合数学在算法竞赛中的实战应用

CF1420D Rescue Nibel! 是我最近复盘次数最多的一道区间计数题。名字带点魔幻气息,但模型的本质非常朴素:给你一堆区间,让你从中选恰好 k 个,使得它们有公共交点。乍一看以为是区间贪心,实际却是组合数学和扫描线的混合…

2026/10/14 5:12:02 阅读更多 →
Cocos Creator 水波纹效果:Shader 扰动与交互涟漪实现

Cocos Creator 水波纹效果:Shader 扰动与交互涟漪实现

简介:这份资源是面向Cocos Creator开发者的一套水波纹特效项目源码,适合具备一定Shader与脚本基础、希望在游戏中实现动态水面、魔法或雨滴等视觉效果的开发者参考。压缩包共3个文件,以inscode工程配置、html页面与gitignore为主,…

2026/10/14 5:11:01 阅读更多 →

日新闻

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/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

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

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

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

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

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

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 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 阅读更多 →