QtHttpServer HTTPS最小可信验证集:开箱即用的SSL二进制交付物
简介本资源是面向Qt开发者的一站式HTTP/HTTPS服务器开发支持包适用于需要在Qt应用中快速集成网络服务的中高级程序员解决HTTP服务搭建、HTTPS安全通信及库源码学习等实际问题。压缩包共264个文件涵盖50个头文件h与21个源文件cpp构成的完整QtHttpServer库源码17个pro工程文件用于跨平台构建18个dll动态库便于直接调用另含SSL证书.cert、私钥.key及配置文件.conf支撑HTTPS服务快速启用整体6.75MB结构清晰含示例测试用例test.c、http_parser.c等与构建脚本bat、makefile、cmake便于编译验证与原理剖析。已有558人学习下载读者可直接运行测试用例理解请求处理流程通过源码阅读掌握HTTP协议实现细节结合SSL文件实践HTTPS握手与加密配置是深入学习Qt网络编程与安全通信的理想实操素材。1. QtHttpServer 库包 SSL 支持文件 完整测试用例开箱即跑 HTTPS 服务的最小可信验证集你有没有试过在 Qt 项目里加一个轻量 HTTP 服务结果卡在 OpenSSL 链接失败、证书加载报错、或测试用例根本跑不起来不是代码逻辑问题而是缺了那一套「能对得上 Qt 版本、编译器 ABI、OpenSSL 运行时版本」的二进制胶水——QtHttpServer 官方只提供源码不打包预编译库更不附带可直接make test的完整验证环境。这份资源就是为解决这个“最后一公里”而整理的它不是教程不是文档而是一份经过实测的、带签名验证的二进制交付物集合——含 Qt6.5MSVC2019/MinGW11和 Qt5.15MSVC2017双版本支持的QtHttpServer.dll/.so/.dylib、配套的libssl.lib/libcrypto.lib及对应.dll、自签名 CA 与服务端证书PEM/PKCS#12 格式齐全、以及 12 个覆盖 GET/POST/HTTPS/路由匹配/错误注入的真实测试用例含qtestlib主程序和断言日志。适合正在做嵌入式 Web 控制台、本地调试代理、或需要内嵌 HTTPS API 的 Qt 桌面/工控项目的开发者尤其当你已经写完业务逻辑却卡在“连通性验证”这一步时它能帮你省掉至少两天的 OpenSSL 版本对齐、CMake 链接参数调试和证书格式转换时间。2. 为什么必须用这套组合QtHttpServer 的 ABI 黑匣子与 SSL 绑定陷阱QtHttpServer 不是 Qt 官方模块而是由 Qt 公司孵化、后移交社区维护的独立组件。它的构建高度依赖 Qt 的元对象系统moc、信号槽机制、以及底层网络栈QSslSocket的 ABI 稳定性。这意味着同一份源码用 Qt6.5.3 MSVC2019 编译出的.dll无法被 Qt6.5.2 或 Qt6.6.0 加载用 MinGW11 编译的.a文件也无法被 MSVC 链接器识别。这不是 bug是 C ABI 的天然壁垒。而 SSL 层更复杂——QtHttpServer 在运行时通过QSslConfiguration加载证书但QSslSocket的实际实现由 Qt 自带的openssl插件决定。若你系统 PATH 里有旧版 OpenSSL如 1.1.1w而 Qt 编译时链接的是 3.0.13就会出现SSL_CTX_new: library has no ciphers这类玄学错误。所以官方不提供二进制包是有道理的他们不敢保证兼容性。但我们实测发现只要锁定三个维度就能构建出稳定交付物Qt 构建工具链MSVC2019x64对应 Qt6.5.3官方离线安装包qt-unified-windows-x64-4.8.0-online.exe安装路径下6.5.3/msvc2019_64OpenSSL 构建方式静态链接libssl_static.lib和libcrypto_static.lib来自 OpenSSL 3.0.13 官方 Win64 VC-WIN64A 构建产物避免 DLL 冲突证书生成策略使用openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 3650 -nodes -subj /CNlocalhost生成且强制指定-addext subjectAltName DNS:localhost,IP:127.0.0.1否则现代浏览器会拒绝连接。下面我们就按这个锁定组合把库、证书、测试用例三者串成一条可复现的流水线。2.1 库文件结构与 ABI 对齐验证方法解压后你会看到如下目录结构以 Windows MSVC2019 版为例QtHttpServer-bin/ ├── lib/ │ ├── QtHttpServer6.dll # Qt6.5.3 msvc2019_64 ABI │ ├── QtHttpServer6.lib # 导入库用于链接 │ ├── libssl_static.lib # OpenSSL 3.0.13 静态链接版 │ └── libcrypto_static.lib ├── bin/ │ ├── QtHttpServer6.dll # 运行时需放在 exe 同目录 │ ├── libssl-3.dll # OpenSSL 动态运行时备用 │ └── libcrypto-3.dll ├── ssl/ │ ├── ca.pem # 自签名 CA用于客户端验证服务端 │ ├── server.pem # 服务端证书含私钥PEM 格式 │ ├── server.p12 # PKCS#12 格式含私钥证书可用于 Java/Python 客户端 │ └── server.key / server.crt # 拆分版key 无密码crt 为证书 └── tests/ └── httpserver_test.exe # qtestlib 编译产物提示不要试图用 Qt Creator 的“自动检测 Qt 版本”功能来加载此库。必须手动在.pro文件中指定QT httpserver并显式添加LIBS $$PWD/../lib/QtHttpServer6.lib否则 moc 会因找不到QHttpServer类声明而报错。验证 ABI 是否对齐最直接的方法是检查导出符号# 使用 Visual Studio 工具链中的 dumpbin非第三方工具 dumpbin /exports lib/QtHttpServer6.lib | findstr QHttpServer正常输出应包含?QHttpServerQtPrivateQEAAXZMSVC name mangling 后的构造函数符号。若为空说明该.lib是为其他 Qt 版本或编译器生成的必须更换。2.2 SSL 文件选型为什么不用系统 OpenSSL而用静态链接版Qt 的QSslSocket默认会尝试加载ssl插件位于plugins/ssl/并搜索系统 PATH 中的libssl-3.dll。但问题在于若你的机器装了 Git for Windows它自带 OpenSSL 1.1.1PATH 优先级更高 → Qt 加载 1.1.1 的 DLL但 QtHttpServer 编译时链接的是 3.0.13 的头文件 → 运行时QSslConfiguration::setLocalCertificate()报Unknown error若你用 vcpkg 安装了 OpenSSL 3.x但 vcpkg 默认构建动态库且.dll名为libssl.dll无版本号→ Qt 加载失败因为 Qt 查找的是libssl-3.dll。我们的解决方案是静态链接libssl_static.lib和libcrypto_static.lib并在CMakeLists.txt中显式禁用插件加载# CMakeLists.txt 片段用于你自己编译 QtHttpServer 时参考 find_package(OpenSSL REQUIRED CONFIG) target_link_libraries(QtHttpServer PRIVATE ${OPENSSL_SSL_LIBRARY} ${OPENSSL_CRYPTO_LIBRARY} ) # 关键禁止 Qt 自动加载 ssl 插件 target_compile_definitions(QtHttpServer PRIVATE QT_NO_SSL)注意QT_NO_SSL宏仅禁用插件加载不影响QSslSocket类本身它仍可用因为 QtHttpServer 内部已将 SSL 功能封装为独立模块。这样做的好处是彻底切断与系统 OpenSSL 的耦合所有 SSL 逻辑由静态库承载部署时只需QtHttpServer6.dll单一文件即可启动 HTTPS 服务。2.3 测试用例设计逻辑覆盖真实部署场景的 12 个断点测试用例不是简单 ping 通而是模拟真实交互链路。我们按“协议层 → 业务层 → 异常层”三级设计协议层4 个验证 HTTPS 握手、HTTP/1.1 头解析、Content-Type 自动识别、Chunked Transfer Encoding 解析业务层6 个测试/api/status返回 JSON、/upload接收 multipart/form-data、/redirect302 跳转、/authBasic Auth 验证、/streamServer-Sent Events 流式响应、/timeout30s 超时控制异常层2 个/error/500主动抛出异常触发全局错误处理器、/slow故意阻塞 5s 模拟高负载下的连接保持行为。每个测试用例均使用QTest::qExec()启动独立QApplication实例并通过QNetworkAccessManager发起请求最后断言响应状态码、Body 内容、Header 字段。例如tst_https.cpp中的关键断言void TestHttps::shouldHandleSelfSignedCert() { QHttpServer server; server.route(/test, [](const QHttpServerRequest req) { return QHttpServerResponse(OK); }); // 启动 HTTPS 服务使用 ssl/server.pem QVERIFY(server.listen(QHostAddress::LocalHost, 8080, QSslConfiguration::defaultConfiguration(), ssl/server.pem, ssl/server.key)); // 创建信任自签名 CA 的 QNAM QNetworkAccessManager nam; QSslConfiguration config nam.sslConfiguration(); config.setCaCertificates({QSslCertificate(:/ssl/ca.pem)}); nam.setSslConfiguration(config); QEventLoop loop; QNetworkReply *reply nam.get(QNetworkRequest(QUrl(https://localhost:8080/test))); QObject::connect(reply, QNetworkReply::finished, loop, QEventLoop::quit); loop.exec(); QCOMPARE(reply-attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); QCOMPARE(reply-readAll(), QByteArray(OK)); }参数说明server.listen(...)第 3、4 参数分别传入QSslConfiguration此处用默认、证书 PEM 路径、私钥路径。注意私钥文件server.key必须是无密码保护的否则QSslConfiguration::setPrivateKey()会静默失败无日志无异常服务监听成功但 HTTPS 握手永远超时。3. 避坑HTTPS 服务启动失败的 5 个高频现象与根因定位法QtHttpServer 的 HTTPS 启动失败90% 以上不是代码问题而是环境/配置/证书链的隐式冲突。以下是我们在某跨平台系统项目中踩过的血泪坑每条都附带可立即执行的诊断命令3.1 现象server.listen()返回 true但curl https://localhost:8080显示curl: (35) schannel: next InitializeSecurityContext failed: Unknown error (0x80092012) - The revocation function was unable to check revocation for the certificate.原因Windows SChannel默认 SSL 后端强制校验证书吊销状态而自签名证书无 CRL 分发点CRL Distribution Points扩展导致校验失败。Qt 默认使用 SChannel而非 OpenSSL。解决强制 Qt 使用 OpenSSL 后端。在main()函数最开头插入qputenv(QT_SSL_BACKEND, openssl); // 必须在 QCoreApplication 构造前调用 QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); QGuiApplication app(argc, argv);3.2 现象server.listen()返回 falseqDebug()输出QSslSocket: cannot call unresolved function SSLv23_client_method原因libssl-3.dll版本与 Qt 编译时链接的 OpenSSL 头文件不匹配。SSLv23_client_method是 OpenSSL 1.1.1 的函数在 3.0 中已被废弃QtHttpServer 源码若未适配会尝试调用不存在的符号。解决确认你使用的QtHttpServer6.dll是基于 OpenSSL 3.0 编译的见 2.2 节。若你自行编译请在CMakeLists.txt中添加add_definitions(-DOPENSSL_API_COMPAT30000) target_compile_definitions(QtHttpServer PRIVATE OPENSSL_NO_SSL2 OPENSSL_NO_SSL3)3.3 现象HTTPS 服务可访问但 Chrome 提示NET::ERR_CERT_AUTHORITY_INVALID且地址栏显示“不安全”原因证书缺少subjectAltNameSAN扩展。Chrome 从 58 版本起强制要求 HTTPS 证书必须包含 SAN否则拒绝建立连接。localhost也必须显式声明。解决重新生成证书必须加入-addext subjectAltName DNS:localhost,IP:127.0.0.1参数openssl req -x509 -newkey rsa:2048 -keyout ssl/server.key -out ssl/server.crt \ -days 3650 -nodes -subj /CNlocalhost \ -addext subjectAltName DNS:localhost,IP:127.0.0.1 # 合并为 PEM 格式 cat ssl/server.crt ssl/server.key ssl/server.pem3.4 现象tst_https.cpp测试用例中reply-attribute(QNetworkRequest::HttpStatusCodeAttribute)始终为 0reply-error()返回QNetworkReply::OperationCanceledError原因QNetworkAccessManager的事件循环未正确关联。QEventLoop loop;必须在QNAM实例创建之后、get()调用之前声明否则finished信号无法触发quit()。解决严格按以下顺序编写测试代码QNetworkAccessManager nam; // 1. 先创建 NAM QEventLoop loop; // 2. 再创建 loop关键 QNetworkReply *reply nam.get(...); // 3. 最后发请求 QObject::connect(reply, QNetworkReply::finished, loop, QEventLoop::quit); loop.exec(); // 4. 启动循环3.5 现象Linux 下./httpserver_test运行时报error while loading shared libraries: libQt6HttpServer.so.6: cannot open shared object file: No such file or directory原因LD_LIBRARY_PATH未包含lib/目录且libQt6HttpServer.so.6的RPATH未设置为$ORIGIN/../lib即运行时相对路径。解决使用patchelf修复 RPATHUbuntu/Debian 用户sudo apt install patchelf patchelf --set-rpath $ORIGIN/../lib bin/httpserver_test patchelf --set-rpath $ORIGIN/../lib lib/libQt6HttpServer.so.6补充macOS 用户请用install_name_tool -rpath loader_path/../lib -add_rpath loader_path/../lib替代。4. 从零构建可验证 HTTPS 服务三步完成最小闭环现在我们把前面所有知识点串成一条可执行的、无需修改代码的验证流水线。目标5 分钟内在你本地机器上跑起一个带证书验证、可被curl和浏览器访问的 HTTPS 服务并通过一个测试用例证明其可用性。整个过程不依赖 Qt Creator纯命令行驱动。4.1 步骤一环境准备与路径初始化1 分钟确保你已安装Qt6.5.3MSVC2019 x64 或 MinGW11CMake 3.22OpenSSL 3.0.13Windows 用户建议直接下载预编译版Win64_OpenSSL_v3.0.13.msiqmake或cmake在 PATH 中。创建工作目录并解压资源mkdir qt-httpserver-demo cd qt-httpserver-demo # 将你下载的资源包解压到当前目录假设为 qt-httpserver-bin.zip unzip qt-httpserver-bin.zip # 初始化 Qt 项目结构 mkdir src build cp -r qt-httpserver-bin/tests/* src/4.2 步骤二编译并运行测试用例2 分钟进入build目录用 CMake 配置以 MSVC2019 为例cd build cmake -G Visual Studio 16 2019 Win64 ^ -DCMAKE_PREFIX_PATHC:/Qt/6.5.3/msvc2019_64 ^ -DQtHttpServer_DIR../qt-httpserver-bin/lib/cmake/Qt6HttpServer ^ -DOPENSSL_ROOT_DIRC:/OpenSSL-Win64 ^ ../src cmake --build . --config Debug参数说明-DCMAKE_PREFIX_PATH指向 Qt 安装根目录确保find_package(Qt6 REQUIRED COMPONENTS HttpServer)能找到模块-DQtHttpServer_DIR指向资源包中lib/cmake/下的 Config 文件若无说明你拿到的是精简版需跳至 4.3 节手动链接-DOPENSSL_ROOT_DIR是 OpenSSL 安装路径CMake 会从中读取libssl.lib和头文件。编译完成后运行测试# 设置运行时库路径Windows set PATH%PATH%;%CD%\..\qt-httpserver-bin\bin # 运行测试会自动启动 HTTPS 服务并发起请求 Debug\httpserver_test.exe若看到PASS : TestHttps::shouldHandleSelfSignedCert()说明 HTTPS 服务已就绪。4.3 步骤三手写一个最小 HTTPS 服务并验证2 分钟在src/main.cpp中粘贴以下代码完全独立不依赖任何额外头文件#include QCoreApplication #include QHttpServer #include QHttpServerRequest #include QHttpServerResponse #include QSslConfiguration #include QSslCertificate #include QSslKey #include QDebug int main(int argc, char *argv[]) { QCoreApplication app(argc, argv); QHttpServer server; server.route(/hello, [](const QHttpServerRequest req) { return QHttpServerResponse(Hello from QtHttpServer over HTTPS!); }); // 加载证书和私钥使用资源包中提供的文件 QSslCertificate cert(:/ssl/server.pem); QSslKey key(:/ssl/server.key); if (cert.isNull() || key.isNull()) { qCritical() Failed to load SSL certificate or key; return -1; } QSslConfiguration config QSslConfiguration::defaultConfiguration(); config.setLocalCertificate(cert); config.setPrivateKey(key); bool ok server.listen(QHostAddress::LocalHost, 8443, config); if (!ok) { qCritical() Failed to start HTTPS server on port 8443; return -1; } qDebug() HTTPS server listening on https://localhost:8443/hello; qDebug() Press CtrlC to exit; return app.exec(); }注意:/ssl/server.pem是 Qt 的资源系统路径需将qt-httpserver-bin/ssl/目录添加为 Qt 资源.qrc文件。若你不想用资源系统改为绝对路径QSslCertificate(C:/path/to/qt-httpserver-bin/ssl/server.pem)。编译并运行# 在 build 目录下 cmake --build . --config Debug --target main Debug\main.exe然后在终端执行curl -k https://localhost:8443/hello # -k 忽略证书验证 # 输出Hello from QtHttpServer over HTTPS!或在 Chrome 访问https://localhost:8443/hello首次会提示“不安全”点击“高级” → “继续前往 localhost不安全”。5. 进阶技巧让 HTTPS 服务在生产环境真正“可用”的 3 个硬核操作跑通curl -k只是起点。真正的生产部署要解决证书信任、连接复用、错误可观测性三大问题。这里分享三个我在某工控网关项目中沉淀下来的、未经修饰的实战技巧。5.1 技巧一用 OpenSSL 命令行生成浏览器/Java/Python 全平台兼容的 PKCS#12 证书自签名证书要被 Chrome、Firefox、Edge、JavaHttpsURLConnection、Pythonrequests同时信任必须满足证书链完整CA server私钥加密强度 ≥ 2048 位PKCS#12 文件包含 CA 证书否则 Java 会报PKIX path building failed。用以下单行命令生成# 合并 CA 和 server 证书为 chain.pem cat qt-httpserver-bin/ssl/ca.pem qt-httpserver-bin/ssl/server.crt chain.pem # 生成带 CA 的 p12密码设为 changeitJava 默认 openssl pkcs12 -export -in chain.pem -inkey qt-httpserver-bin/ssl/server.key \ -name QtHttpServer -out qt-httpserver-bin/ssl/server-with-ca.p12 \ -passout pass:changeit验证命令openssl pkcs12 -info -in server-with-ca.p12 -passin pass:changeit | grep -E (friendlyName|CERTIFICATE|KEY)输出应同时包含friendlyName: QtHttpServer、CERTIFICATE两段一段是 server一段是 CA、KEY私钥。缺失任一则 Java/Python 客户端会失败。5.2 技巧二启用 HTTP/2 支持并验证 ALPN 协商绕过 TLS 1.2 兼容性陷阱QtHttpServer 默认只支持 HTTP/1.1。若你想启用 HTTP/2提升并发性能必须确保 OpenSSL 编译时启用了enable-tls1_3和enable-alpn在QSslConfiguration中显式设置 ALPN 协议列表客户端必须支持 HTTP/2如curl 7.85。修改main.cpp中的QSslConfigurationQSslConfiguration config QSslConfiguration::defaultConfiguration(); config.setLocalCertificate(cert); config.setPrivateKey(key); // 关键设置 ALPN 协议优先级 config.setAllowedNextProtocols({QSsl::AlpnProtocol::HTTP2_0, QSsl::AlpnProtocol::HTTP1_1}); // 强制 TLS 1.3若 OpenSSL 支持 config.setProtocol(QSsl::TlsV1_3); server.listen(QHostAddress::LocalHost, 8443, config);验证是否启用 HTTP/2curl -I --http2 -k https://localhost:8443/hello # 正常响应头应包含HTTP/2 200 # 若返回 HTTP/1.1则说明 ALPN 协商失败检查 OpenSSL 版本及编译选项5.3 技巧三为每个请求注入唯一 trace_id实现全链路日志追踪QtHttpServer 没有中间件概念但你可以利用QHttpServerRequest::headers()和QHttpServerResponse::setHeader()手动注入 trace_id。这是我们在某图像处理网关中实现的方案#include QUuid #include QDateTime QString generateTraceId() { return QString(trace-) QUuid::createUuid().toString(QUuid::WithoutBraces) - QDateTime::currentMSecsSinceEpoch(); } server.route(/api/process, [](const QHttpServerRequest req) { QString traceId req.headers().value(X-Trace-ID, generateTraceId()); // 记录日志输出到 qDebug实际项目中应接入 ELK qDebug() TRACE traceId START req.method() req.url().toString(); // 业务逻辑... QByteArray result processImage(req.body()); qDebug() TRACE traceId END result.size() bytes; QHttpServerResponse resp(result, image/jpeg); resp.setHeader(X-Trace-ID, traceId); // 回传给客户端 return resp; });这样前端 JavaScript 发起请求时带上X-Trace-ID后端日志就能串联起整个请求生命周期。从那以后我每次上线新服务都强制走一遍curl -H X-Trace-ID: test-123 https://localhost:8443/api/process看日志是否打出完整 trace再看响应头是否回传。这成了我的上线 checklist 第一条。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

App开发者转型Unity游戏开发:认知地图与AI辅助实践路径

App开发者转型Unity游戏开发:认知地图与AI辅助实践路径

1. 从 App 到 Unity:为什么需要一张认知地图做了几年 App 开发的人,第一次打开 Unity 编辑器,大概率会经历一种很微妙的挫败感。明明自己写业务逻辑、调 UI、处理网络请求都很熟练,怎么换了个工具,连“让一个方块动起来…

2026/10/14 20:36:56 阅读更多 →
linux性能工具

linux性能工具

文章目录 Linux 性能排查命令速查手册 一、CPU、系统负载、内存 1. `uptime` —— 查看系统负载 2. `top` —— 查看进程和系统实时状态 3. `vmstat` —— 查看系统综合性能 4. `mpstat` —— 查看各 CPU 核心状态 5. `free` —— 查看内存使用情况 6. `ps` —— 查看进程快照 …

2026/10/14 20:36:56 阅读更多 →
从3.23学习笔记拆解:一套可复用的知识管理流程

从3.23学习笔记拆解:一套可复用的知识管理流程

3月23号晚上,我合上电脑前顺手给当天的学习笔记补了一行"一句话结论":**缺失值处理的本质是"三选一"——删除、填充、保留,选哪个取决于缺失机制和数据用途。**写完这行字,我意识到这份笔记已经具备了自己一直…

2026/10/14 20:36:56 阅读更多 →

最新新闻

Qt音频EQ曲线绘制重构:滤波器分层、对数采样与性能优化

Qt音频EQ曲线绘制重构:滤波器分层、对数采样与性能优化

做桌面音频工具这行,EQ曲线是个看似简单、实际一碰就头疼的模块。最近我把手头Qt源码里的EQ曲线绘制整体重写了一遍,完成了一次“升级版”重构。这次升级的重点不在样式的花活,而是把所有计算重新分层、把每个公式的来龙去脉整理成详尽注释&a…

2026/10/15 5:21:10 阅读更多 →
Flink SQL on YARN 提交避坑指南:资源、依赖与认证实战

Flink SQL on YARN 提交避坑指南:资源、依赖与认证实战

1. 为什么一个提交命令能折腾我一整天刚接触 Flink SQL on YARN 那会儿,我以为最难的应该是 SQL 语法或者状态管理,结果真正让我在工位上坐到凌晨的,是那个看起来平平无奇的提交命令。flink run敲下去,日志刷了几百行,…

2026/10/15 5:21:10 阅读更多 →
智能驾驶基础理论体系全解析:从感知到控制的分层架构与工程实践

智能驾驶基础理论体系全解析:从感知到控制的分层架构与工程实践

1. 智能驾驶基础理论到底在讲什么1.1 从一次被问懵的经历说起前阵子有个刚入行的朋友找我聊天,说他面试一家做智能驾驶的公司,技术面聊得还行,结果终面被一位老工程师问了一句:“你觉得规划和控制之间,最本质的耦合点在…

2026/10/15 5:21:10 阅读更多 →
电厂本地部署大模型实战:从硬件选型到知识库落地

电厂本地部署大模型实战:从硬件选型到知识库落地

大模型在电力行业的落地速度,比大多数人想象的要慢,也比一些人想象的要值得做。我过去一年深度参与了几个电厂侧的人工智能落地项目,从最初的可行性论证,到硬件选型、模型部署、知识库搭建、业务系统对接,整套流程都实…

2026/10/15 5:21:10 阅读更多 →
SAP语言码转换全指南:从语言包安装到ABAP批量处理

SAP语言码转换全指南:从语言包安装到ABAP批量处理

搞SAP这么多年,语言码转换这件事,我最大的感触是:听起来太简单了,做起来全是细节。不就是把语言字段从“E”改成“1”吗?但真正处理过的人都知道,一个搞不好就会出现界面乱码、登录异常、文本表丢数据、主键…

2026/10/15 5:21:10 阅读更多 →
数据仓库极限存储实战:分层压缩与生命周期管理降本60%

数据仓库极限存储实战:分层压缩与生命周期管理降本60%

1. 数据仓库极限存储的核心思路拆解1.1 为什么“极限存储”是一个绕不开的命题做数据仓库这行的人都有一个共同的痛:数据量涨得永远比预算快。业务方今天要查三年订单明细,明天要拉五年用户行为日志,后天又要把埋点数据从冷备里翻出来做归因分…

2026/10/15 5:20:10 阅读更多 →

日新闻

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/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/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/14 7:53:34 阅读更多 →