Qt 5不再自带FTP库?QFtp模块编译与集成全攻略
1. 编译前必须搞懂的背景Qt 5 里为什么不带 FTP 库了我在接手某跨平台桌面项目时需要处理上位机与远程设备之间的文件传输。第一反应是直接用 Qt 自带的网络模块翻遍 Qt 5 的文档目录后才发现QFtp 类从 Qt 5.0 开始就被彻底移出了官方安装包。官方安装包里只剩 FTP 客户端相关的例程代码真正的传输模块变成了独立的源码仓库。这个变化让很多人第一次接触 Qt 5 网络编程时懵圈——明明 Qt 4 时代QT network就能用QFtp::connectToHost到了 Qt 5 就变成“需要自行编译第三方模块”。这里要先讲清楚为什么会有这种“退化”。FTP 协议本身是上世纪 70 年代的设计默认明文传输密码出站端口动态协商在防火墙和 NAT 环境下总是出问题。Qt 官方倾向于用 HTTP/HTTPS 取代 FTP 功能加上维护成熟的 FTP 客户端代码需要持续投入安全审计资源于是官方决定把 QFtp 从主仓库剥离改为独立维护的qt/qtftp仓库。项目管理上这叫“模块外置”好处是 FTP 代码的迭代节奏不再拖累整个 Qt 主库的发布周期坏处就是普通开发者必须自己完成一次编译集成。需要明确的是Qt 5 的 FTP 能力可以通过两种路径获得。第一条路径是使用官方提供的qtftp源码模块构建出QFtp库配合 Qt 5 自身的QNetworkAccessManager做上层封装第二条路径是干脆放弃 QFtp只借助QNetworkAccessManager的setUrl(ftp://...)完成基本的上传下载。如果你的需求只涉及匿名下载、无代理、无加密、无 FTP(S) 扩展用第二条路可以彻底绕开编译。但如果你需要支持 FTPSFTP over SSL、主动/被动模式精细控制、多连接断点续传就必须走第一条路自己把 QFtp 编译成一个静态库或动态库然后通过.pro文件的include()或.pri方式接入你的项目。我最终选择了编译官方qtftp模块。原因是项目里存在大量需要保持长连接、逐文件检查服务器目录结构、按需切换主动模式/被动模式的业务场景QNetworkAccessManager只适合做简单的单次传输可控性远不如 QFtp。这篇文章从选型、环境准备、完整编译流程、常见报错排查四个维度展开所有操作都基于我自己在 Windows 和 Linux 两端真实跑过的路径。2. 编译方案选型源码仓库、模块版本与依赖工具2.1 源码仓库找准正确的代码源编译的第一步是拿到正确版本的源码。Qt 官方维护着独立的 FTP 模块仓库在开源托管平台上通常以qt/qtftp形式存在。不同分支对应不同 Qt 版本的兼容性要求master分支适配最新的 Qt 5.155.15分支适配 Qt 5.15 LTS5.12分支则对应 Qt 5.12 LTS。我一开始直接拉取了默认分支结果编译时出现一堆QNetworkAccessManager接口变更导致的undefined reference这通常就是分支与本地 Qt 版本不匹配造成的。这里要特别提醒不要只因为仓库页面默认显示master就认为它一定兼容任意 Qt 5 小版本。Qt 从 5.9 到 5.15内部接口变动非常频繁qmake在链接时会去匹配本地 Qt 库的实现细节。我个人的经验是先确认你本地qmake -v的具体版本号然后拉取与这个版本号最接近的分支。比如本地是 Qt 5.15.2直接拉取5.15分支就是最稳定的方案本地是 Qt 5.12.10拉5.12分支才能避开Qt5Network模块在高版本上才有的导出符号。源码获取方式也分两种。第一种是直接通过版本控制工具克隆仓库git clone --branch 5.15 https://github.com/qt/qtftp.git这种方式的优点是能直接看到所有分支历史可以随时切换。缺点是仓库体积较大网络不好时有中断风险。第二种是直接在发布页下载对应源码压缩包优点是一次下载到位、体积小缺点是缺少版本控制历史。我在公司内网环境工作时通常选择下载压缩包并校验 SHA256在自己开发机上则直接克隆。2.2 环境依赖不是所有机器都能直接开编很多人拿到源码后直接敲qmake结果连configure都过不了问题往往出在缺少 Perl 环境。Qt 的构建系统至今依赖 Perl 脚本生成部分源码和头文件这属于历史遗留设计在configure阶段会调用 Perl 执行处理和解析脚本如果系统找不到 Perl整个构建流程会提前终止。Windows 环境下推荐安装 ActivePerl 或 Strawberry Perl装完后务必在命令行验证perl -v输出正常Linux 环境下用系统包管理器安装即可sudo apt install perl除了 Perl编译器工具链必须与 Qt 版本匹配。Qt 5.15 在 Windows 上既支持 MSVC 2015/2017/2019也支持 MinGW 8.1/7.3在 Linux 上要求 GCC 4.9 以上。常见的坑是 Windows 下 Qt 库用 MSVC 编译qup 的.pro却自动检测到 MinGW 编译器最后链接时报一堆 LNK2019。避免办法是直接用“开始菜单 - Qt 5.15.2 (MSVC 2019 64-bit)”打开命令行环境再执行 qmake 和 make保证工具链完全一致。另外编译动态库版本还需要确保依赖的 Qt 模块的 DLL 可以被编译系统找到最简单的做法是提前将 Qt 的bin目录加入 PATH。2.3 构建工具链qmake 和 make/nmake 的协作QT5 FTP 模块用的是 Qt 自己的qmake项目系统不需要单独的 CMake这跟很多现代 C 项目习惯不一样。整个流程就是qmake makeWindows MSVC 环境下用nmake本质是用 qmake 读取.pro文件生成 Makefile再交给系统编译器执行编译与链接。理解这一点后排查问题时思路会清晰很多先看qmake是否成功执行再看 Makefile 里的INCPATH和LIBS是否指向正确的 Qt 安装路径。编译参数里最值得关注的是-o参数和QT 配置选项。如果你想把编译产物输出到指定目录可以在命令行加qmake -o /path/to/output path/to/qtftp.pro如果想跳过测试代码直接编译库本身可以在运行 qmake 前编辑.pro文件注释掉SUBDIRS tests相关的行或者直接进入src子目录单独运行加载src.pro。我实际操作时为了省时间经常只编译静态库版本这样后续链接到目标项目时不用把一堆 DLL 拷到 exe 旁边部署交付会干净很多。3. 编译器选择与 OpenSSL 关联强制 TLS 集成带来的额外负担3.1 OpenSSL 是硬依赖还是可选依赖qtftp模块里有个QFtp的前身QAbstractSocket体系FTP over SSLFTPS依赖 OpenSSL 支持。在编写和测试中你会发现OPENSSL相关的检查会影响配置结果。先解释为什么会有这个牵连FTPS 协议就是在标准 FTP 报文外面套了一层 TLS 保护Qt 的网络安全层QSslSocket在运行时加载系统里的 OpenSSL 库而qtftp里的QFtp功能实现中使用了QSslSocket来支持QLocalSocket以外的 TLS 模式。因此如果你在构建时没有启用 SSL 支持Qt 运行时检测不到 OpenSSL 的 DLLWindows 上是 libeay32.dll 和 ssleay32.dll或者 OpenSSL 1.1 的 libssl-1_1-x64.dll 和 libcrypto-1_1-x64.dllFTPS 连接会在握手阶段直接失败。那么编译qtftp之前是否需要额外手工编译 OpenSSL答案是完全不需要你预先编译但你编译的目标 Qt 库本身必须带有 SSL 支持。大部分从官方下载的 Qt 5.15 安装包默认自带 OpenSSL 运行时支持只是靠加载外部 dll 的方式因此如果你只跑 FTP 普通模式QFtp也能正常用。可一旦你想在编译时开启QT_NO_SSL宏就需要确保 acl 交叉编译时使用同样的宏定义这一步容易出现“库编译成功、运行时却握手失败”的隐患。从我的实际经验看除非你对二进制体积有极端要求否则建议保持默认的 SSL 支持不主动关闭。3.2 编译器版本与 C 标准问题qtftp模块要求使用 C11 或更高标准这是 Qt 5.x 时代的最低门槛。用较老编译器时比如 GCC 4.8.5 或 MSVC 2013可能出现源码中部分与标准库适配的写法无法通过编译的问题。我遇到过std::unique_ptr相关类型的拷贝构造问题排查后发现是编译器标准库实现差异升级编译器到 GCC 7 后不再出现。这里有一个容易忽略的点不同类型的 Qt 安装包对应不同编译器混用编译器会造成运行时崩溃。比如 QFtp 库的目标平台是 MSVC 2019但目标应用是用 MinGW 编译的即使编译期链接通过运行时也可能因为 CRT 类型不匹配出现莫名崩溃。我的习惯是先处理编译器环境在项目根目录建立一个build_env.sh或.bat脚本反复确认 PATH 中的 qmake、编译器、Perl 一致避免后续操作反复踩坑。4. 完整编译实操从 qmake 到库文件生成的全过程4.1 步骤一整理目录结构与源码下面以我本机环境为实例演示Windows 10 Qt 5.15.2 MSVC2019 64 位openSUSE 系统上的 CMake 流程也可参照执行区别主要在编译命令。我习惯把所有第三方源码统一放在一个D:\ThirdParty目录下并建立清晰的子目录D:\ThirdParty\ qtftp\ .git\ src\ tests\ qtftp.pro build\ qtftp-static\ qtftp-shared\把qtftp源码克隆或解压到D:\ThirdParty\qtftp后不要直接在源码目录里就地编译。刻意把 build 目录和源码目录分开是为了避免生成的 Makefile、对象文件、临时文件污染原始源码树后续升级源码版本时可以干净地重新构建。4.2 步骤二配置静态库项目打开橡皮筋菜单里的 Qt 命令行环境。这里以 MSVC 2019 64 位为例开始菜单找到Qt 5.15.2 (MSVC 2019 64-bit)它会自动把环境变量指到正确的 Qt 根目录、编译器和 Perl。进入qtftp主目录后我习惯先用 qmake 的-v参数确认版本确实无误qmake -v正常输出类似Using Qt version 5.15.2 in C:/Qt/5.15.2/msvc2019_64/lib。确定正确后创建一个独立的构建目录进入目录然后指定 qmake 配置文件生成构建结果D: cd D:\ThirdParty\build\qtftp-static qmake D:\ThirdParty\qtftp\qtftp.pro -o Makefile nmake这里 qmake 会读取项目中包含的所有.pro文件和.pri文件解析出源码列表和依赖项。nmake对应 make 的 Windows 变体按 Makefile 指令逐文件编译。如果想同时生成 debug 和 release 两个版本的库可以在 qmake 命令后追加CONFIGdebug_and_release这样可以把调试符号和发布版本一起产出方便后续在不同配置的测试环境切换。4.3 步骤三生成动态库版本如果你打算让多个项目共享同一个 FTP 库文件需要编译动态库版本。操作与静态库基本一致唯一的区别是在.pro文件里控制CONFIGD: cd D:\ThirdParty\build\qtftp-shared qmake D:\ThirdParty\qtftp\qtftp.pro CONFIGshared -o Makefile nmake编译完成后lib目录下会出现Qt5Ftp.dll或Qt5Ftpd.dll用于 debug 版本和对应的导入库.lib。记得将生成的 DLL 拷贝到目标应用运行目录或者在系统 PATH 中加入该路径。从维护成本角度看动态库版本的优点是更新模块时无需重新编译整个目标项目缺点是部署交付时需要额外携带 DLL 文件若目标机器缺少 VC 运行库也会引发启动失败。4.4 步骤四将 QFtp 库集成到目标项目中编译出库文件后剩下的事情就是把你自己的项目指到编译产物。拿到Qt5Ftp.lib或静态库Qt5Ftp.a和头文件目录后你可以在.pro文件里使用自定义变量引入QT network INCLUDEPATH D:/ThirdParty/qtftp/src LIBS -LD:/ThirdParty/build/qtftp-static/lib -lQt5FtpLINUX 下稍有不同扩展名是.a链接路径写成-LD:/ThirdParty/build/... -lQt5Ftp也能通过。但需要注意动态库版本在 Windows 上不光要链接导入库还要保证运行时可以找到 DLL静态库版本则完全没有这个问题这也是我偏好静态编译的原因之一。集成完成后验证最简单的调用方式#include QFtp QFtp *ftp new QFtp(nullptr); ftp-connectToHost(192.168.1.100, 21); ftp-login(username, password);如果编译链接阶段没有报“未解析的外部符号”说明库已经成功集成。4.5 过程中值得记录的现场输出几乎每次编译都会遇到编译警告典型的如non-virtual destructor或extra qualification这些警告不影响最终库的使用但如果追求代码整洁可以从源码层面加以修正。我碰到过必须关注的错误是fatal error C1083: Cannot open include file: QtCore/qglobal.h这表示 qmake 生成的 MakefileINCPATH中缺少 Qt Core 的头文件路径主要原因是没有从 Qt 命令行环境启动编译系统找不到 Qt 的 include 目录。5. 常见问题与排查技巧实录5.1 QT_NO_SSL 宏导致的隐性问题早期我在一个 Linux 嵌入式设备上交叉编译qtftp为了削减依赖目标 Qt 库配置时加了-no-openssl顺手在qtftp.pro里加了DEFINES QT_NO_SSLqmake 和 make 均成功通过。但实际上测试时发现ftp-sslMode()相关接口无法正常工作连接 FTPS 服务器时在握手阶段报SSL handshake failed。查遍代码后发现问题出在QFtp的setTransferMode相关实现里有一段判断#ifndef QT_NO_SSL的预编译逻辑当宏被定义后SSL 相关代码被剥离只保留了“明文”模式。这个坑在源码注释里其实写了但容易忽略。我的建议是除非你的产品确实不需要任何加密传输否则不要删除 SSL 编译分支以免后续启用时被迫重新编库。5.2 处理不同版本的 Qt 子模块路径如果本地安装的是 Qt 5.15.2你是使用qmake直接指向qtftp.pro所在目录编译的那么生成的文件路径默认会定位到 Qt 安装目录的lib和相关目录下。但如果你需要把编译产物做成一个独立目录交付记得检查.pro文件里是否存在类似DESTDIR的配置。缺省情况下动态库可能直接在 build 目录下生成而静态库文件可能生成到 Qt 的lib目录。这一条容易被忽视直到你拷贝文件时才发现把编译产物散落到了 Qt 安装目录——虽然不影响使用但后续清理非常别扭。我在交付给同事时会在 qmake 阶段手动指定DESTDIR$$PWD/../lib把所有产物收拢到一个已知位置。5.3 链接时出现 LNK2019 或 undefined reference 的排查顺序链接阶段是问题的高发区。常见场景是编译库没问题把库接到业务项目中暴露出一堆未解析符号。我的排查顺序是第一步查LIBS顺序。在 Windows 的 MSVC 链接中静态库依赖顺序有时会导致符号解析失败。需要把 Qt5Ftp 放在依赖它的目标文件之后。第二步查编译器一致性。比较业务项目和 QFtp 库是否使用了同一套 Qt 编译配置MSVC vs MinGW、相同的 Debug/Release 模式。第三步查字符集和宏定义。如果库里用了UNICODE而业务项目没定义少数接口会出现符号不匹配。有一次排查了两小时最后发现竟然是因为 qmake 的CONFIG段里设置CONFIG console导致main函数入口不一致。这类现象不常见但值得一提碰到未解析符号先不要盯着代码花时间梳理构建配置远比阅读源码高效。5.4 运行时崩溃和登录失败库编译完成并链接成功不等于运行时无忧。第一个常见问题是找不到 DLLWindows 上有两种表现要么直接弹“找不到 Qt5Ftp.dll”要么程序启动时崩溃但无提示。第二种情况更隐蔽通常是因为把 Qt5Ftp.dll 放在了 debug 目录而运行的是 release 目标或者反过来。第二个常见问题是登录返回“无法连接或连接超时”。如果你的测试环境用了 Windows 防火墙建议测试时先暂时允许程序访问专用网络如果部署环境要求必须开防火墙则需要在防火墙规则里放行程序对应端口主动模式端口 20/21被动模式端口范围通常在服务器端配置。此外主动/被动模式的切换也与QFtp::Passive枚举有关很多嵌入式设备前置于 NAT 环境需要显式设置被动模式这点我在一次跨地测试时深有体会——办公室用的是公网 IP 直连到了客户现场变成了 NAT 内部原本正常的主动模式直接失败切换到被动模式后恢复正常。6. 实战经验总结从编译到交付的几点补充建议6.1 用版本控制锁定第三方代码一旦确定 Qt 版本和qtftp分支建议把源码连同编译脚本放进自己的代码仓库里。你也许觉得直接从开源平台拉取更简单但实际运行环境中可能存在平台访问限制或者不同成员电脑上拉取到不同 commit 导致行为不一致。锁定固定的提交 ID 可以确保团队里每个人编译出的是完全相同的库省掉大量“你那边能编我这边不行”的扯皮时间。6.2 合理规划链接方式静态库优先还是动态库优先前面提到动态库与静态库的选择。这里再针对实际场景多说一句如果你的产品是独立交付给客户运行且客户环境不可控建议静态编译直接取消CONFIG shared这样只需交付一个 exe 存在相依赖的 Qt DLL 仍需要带上但至少少了一个 Qt5Ftp 相关的运行约束。如果你的产品是一个 SDK 或组件需要集成到其他团队的主程序中建议动态编译让主程序统一管理依赖避免符号冲突。如果选择动态库建议顺手把 Qt 开发环境里的对应 Qt5Ftp.dll 名称写进文档因为不同模块的 DLL 依赖太多了靠人肉记忆极易遗漏。6.3 测试场景清单交付给测试人员之前建议至少覆盖以下场景避免上线前手忙脚乱匿名 FTP 服务器连接vysper 之类或用 docker 快速搭建的 vsftpd 容器。用户名密码认证服务器连接。主动模式QFtp::Active与被动模式QFtp::Passive切换。上传小文件与大文件低于 10MB 和高过 1GB。断点续传和QFtp::FileTransfer中间失败后的重复尝试。服务器主动关闭连接观察stateChanged和commandFinished信号是否正常触发。在我自己负责的模拟项目里日志系统会记录每个命令的编号与响应码早先的版本里遇到过服务器返回 550 后客户端状态没有复位后续命令全部异常的问题。Qftp 本身的信号机制能给足提示但前提是你了解调用命令的时序要求。6.4 交叉编译与离线部署的一次实战笔记最后分享一次嵌入式设备的完整实验记录。目标平台是一块 ARM 开发板Qt 是软件商预先编译好的交叉版qmake的路径在这个环境里分别指向交叉编译工具链。步骤一致性上预制好的 Qt 往往已经包含 Ftp 模块吗实际上不一定有些裁剪版 Qt 省掉了。我的做法是cd /opt/qt-5.15.2-arm ./configure -prefix /opt/qt-5.15.2-arm -opensource -confirm-license -xplatform linux-arm-gnueabi-g -no-opengl make -j4 make install这里-xplatform和工具链的选择必须与板子匹配。如果板子上缺少部分系统库编译qtftp时还会遇到libz或libssl相关问题按对应库补装即可。交叉编译时切勿使用宿主机的 qmake必须使用交叉包里的/opt/qt-5.15.2-arm/bin/qmake。编译出的库拷到开发板上后别忘了用ldd检查依赖关系这一步在嵌入式环境里特别关键缺库的报错往往在目标设备上才会出现提前检查可以缩短调试周期。我个人在实际操作中最深的体会是编译类问题大部分不是“代码不对”而是“环境不一致”。只要固定 Qt 版本、固定分支、固定编译工具链、固定 qmake 环境整体流程并不会绕太多弯子。最后再分享一个小技巧在 qmake 命令后面加上21 | tee build.log把完整输出保存下来。一旦在后续集成阶段遇到诡异问题回溯编译日志往往能快速定位到原因比自己反复猜测要高效得多。

相关新闻

Apache Mesos cgroups/devices Isolator:基于 Cgroups 设备白名单的容器设备隔离

Apache Mesos cgroups/devices Isolator:基于 Cgroups 设备白名单的容器设备隔离

云原生集群管理容器编排任务调度 【免费下载链接】mesos Apache Mesos 项目地址: https://gitcode.com/gh_mirrors/meso/mesos 点击查看 免费下载 Apache Mesos 的 cgroups/devices isolator 利用 Linux cgroups v1 的 devices 控制器,为 Mesos Contain…

2026/10/14 17:23:46 阅读更多 →
新榜智汇GEO与即推GEO在功能价格效果上有何区别

新榜智汇GEO与即推GEO在功能价格效果上有何区别

摘要新榜智汇GEO与即推GEO在功能、价格、效果上的区别主要体现在核心定位、功能闭环、计费模式和优化逻辑上,两者针对不同规模用户的需求设计,无绝对优劣之分,仅需匹配自身使用场景选择。前者偏向轻量型基础GEO工具,后者是AI驱动的…

2026/10/14 17:23:46 阅读更多 →
diy-layout-creator 的 Linux AppImage 构建环境搭建:WSL 与 AppImageTool 实战指南

diy-layout-creator 的 Linux AppImage 构建环境搭建:WSL 与 AppImageTool 实战指南

桌面应用 【免费下载链接】diy-layout-creator multi platform circuit layout and schematic drawing tool 项目地址: https://gitcode.com/gh_mirrors/di/diy-layout-creator 点击查看 免费下载 本篇指南基于 diy-layout-creator 仓库中的 WSL/AppImage 环境搭建…

2026/10/14 17:23:46 阅读更多 →

最新新闻

Semantic Router 与 vLLM AIBrix 集成部署实战:在 Kubernetes 上搭建可扩展的语义路由推理网关

Semantic Router 与 vLLM AIBrix 集成部署实战:在 Kubernetes 上搭建可扩展的语义路由推理网关

后端API网关模型推理服务AI Agent 【免费下载链接】semantic-router An open, programmable decision layer for models and compute. 项目地址: https://gitcode.com/gh_mirrors/sem/semantic-router 点击查看 免费下载 本指南以 Semantic Router 官方文档中「使用…

2026/10/14 18:48:03 阅读更多 →
Activiti HistoryService实战:历史数据查询、清理与归档指南

Activiti HistoryService实战:历史数据查询、清理与归档指南

1. 为什么流程明明跑完了,还得单独维护一套历史数据学习Activiti的时候,大多数人会把精力放在流程定义部署、RuntimeService启动流程、TaskService处理任务这些"正在发生"的事情上。我一开始也是这样,直到某个项目上线大半年后&…

2026/10/14 18:48:03 阅读更多 →
JavaSE初学者课堂作业

JavaSE初学者课堂作业

摘要:本文是计算机大一新生对 JavaSE 学习内容的课堂总结。文章首先介绍了数据类型与程序逻辑控制两大基础知识点,随后规划了后续学习路线,包括面向对象、集合框架、异常处理、IO 流四个核心模块,并逐一说明它们与 AI 应用开发岗位…

2026/10/14 18:48:03 阅读更多 →
AntDesignPro of Vue权限管理实战:路由与按钮级权限设计

AntDesignPro of Vue权限管理实战:路由与按钮级权限设计

1. 权限管理在后台系统里到底管什么后台管理系统做久了,你会发现一个规律:功能越堆越多,最先扛不住的往往不是性能,而是权限。谁能看到哪个菜单、谁只能看不能改、谁连按钮都不该看见,这些问题如果一开始没设计好&…

2026/10/14 18:48:03 阅读更多 →
ponytail:当代职场的情绪标点与轻量协作语言

ponytail:当代职场的情绪标点与轻量协作语言

1. 项目概述:从“ponytail”这个词开始,我们到底在聊什么?“ponytail”这个词最近频繁出现在社交平台的评论区、弹幕和短视频标题里,但它早已不是字典里那个“马尾辫”的简单释义。我做内容运营和用户行为分析十多年,见…

2026/10/14 18:48:03 阅读更多 →
React Native应用难以破解?morphe-patches的Hermes字节码十六进制补丁与哈希修复技巧

React Native应用难以破解?morphe-patches的Hermes字节码十六进制补丁与哈希修复技巧

【免费下载链接】morphe-patches 🍃 Human-made patches for Morphe 项目地址: https://gitcode.com/gh_mirrors/mor/morphe-patches 点击查看 免费下载 morphe-patches 是一个为 Android 补丁工具 Morphe 提供社区补丁的开源仓库,其中最硬核…

2026/10/14 18:47:02 阅读更多 →

日新闻

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/14 16:30:29 阅读更多 →
影刀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/14 7:53:34 阅读更多 →