Rust Ubuntu下编译生成环境win程序踩坑指南
前言:
1,公司要给一线搞一个升级程序,需要在win下跑。 之前都是找开发总监帮忙,但是他最近比较忙。就让我自己搞。有了下文.。说来惭愧,之前写过一篇ubuntu下编译windows的文章。里面的demo就一句话 fuck world。依赖的库很少。这个是公司的工程,依赖的库很多。想的有点简单了。大家还是要把底子打好
工程介绍。
需要编译patch.rs这个文件。
1,安装target
rustup target add x86_64-pc-windows-gnu
2,安装gcc
sudo apt-get install mingw-w64
执行编译后提示
第一个坑:
warning: sys-info@0.9.1: c/windows.c:4:10: fatal error: windows.h: No such file or directory
warning: sys-info@0.9.1: 4 | #include <windows.h>
warning: sys-info@0.9.1: | ^~~~~~~~~~~
warning: sys-info@0.9.1: compilation terminated.error: failed to run custom build command for sys-info v0.9.1Caused by:process didn't exit successfully: /data/anymembak/target/debug/build/sys-info-f88ff491732c39f9/build-script-build (exit status: 1)--- stdoutTARGET = Some("x86_64-pc-windows-gnu")OPT_LEVEL = Some("0")HOST = Some("x86_64-unknown-linux-gnu")cargo:rerun-if-env-changed=CC_x86_64-pc-windows-gnuCC_x86_64-pc-windows-gnu = Nonecargo:rerun-if-env-changed=CC_x86_64_pc_windows_gnuCC_x86_64_pc_windows_gnu = Nonecargo:rerun-if-env-changed=TARGET_CCTARGET_CC = Nonecargo:rerun-if-env-changed=CCCC = Some("/usr/bin/gcc")cargo:rerun-if-env-changed=CC_ENABLE_DEBUG_OUTPUTcargo:rerun-if-env-changed=CRATE_CC_NO_DEFAULTSCRATE_CC_NO_DEFAULTS = NoneDEBUG = Some("true")CARGO_CFG_TARGET_FEATURE = Some("cmpxchg16b,fxsr,sse,sse2,sse3")cargo:rerun-if-env-changed=CFLAGS_x86_64-pc-windows-gnuCFLAGS_x86_64-pc-windows-gnu = Nonecargo:rerun-if-env-changed=CFLAGS_x86_64_pc_windows_gnuCFLAGS_x86_64_pc_windows_gnu = Nonecargo:rerun-if-env-changed=TARGET_CFLAGSTARGET_CFLAGS = Nonecargo:rerun-if-env-changed=CFLAGSCFLAGS = Nonecargo:warning=c/windows.c:4:10: fatal error: windows.h: No such file or directorycargo:warning= 4 | #include <windows.h>cargo:warning= | ^~~~~~~~~~~cargo:warning=compilation terminated.--- stderrerror occurred: Command "/usr/bin/gcc" "-O0" "-ffunction-sections" "-fdata-sections" "-gdwarf-2" "-fno-omit-frame-pointer" "-m64" "-Wall" "-Wextra" "-o" "/data/anymembak/target/x86_64-pc-windows-gnu/debug/build/sys-info-20c4b6441d409db8/out/db3b6bfb95261072-windows.o" "-c" "c/windows.c" with args gcc did not execute successfully (status code exit status: 1).warning: build failed, waiting for other jobs to finish...
error: failed to run custom build command for openssl-sys v0.9.102Caused by:process didn't exit successfully: /data/anymembak/target/debug/build/openssl-sys-e6c4b7d6399b36bc/build-script-main (exit status: 101)--- stdoutcargo:rerun-if-env-changed=X86_64_PC_WINDOWS_GNU_OPENSSL_NO_VENDORX86_64_PC_WINDOWS_GNU_OPENSSL_NO_VENDOR unsetcargo:rerun-if-env-changed=OPENSSL_NO_VENDOROPENSSL_NO_VENDOR unsetcargo:rerun-if-env-changed=CC_x86_64-pc-windows-gnuCC_x86_64-pc-windows-gnu = Nonecargo:rerun-if-env-changed=CC_x86_64_pc_windows_gnuCC_x86_64_pc_windows_gnu = Nonecargo:rerun-if-env-changed=TARGET_CCTARGET_CC = Nonecargo:rerun-if-env-changed=CCCC = Some("/usr/bin/gcc")cargo:rerun-if-env-changed=CC_ENABLE_DEBUG_OUTPUTcargo:rerun-if-env-changed=CRATE_CC_NO_DEFAULTSCRATE_CC_NO_DEFAULTS = NoneDEBUG = Some("true")CARGO_CFG_TARGET_FEATURE = Some("cmpxchg16b,fxsr,sse,sse2,sse3")cargo:rerun-if-env-changed=CFLAGS_x86_64-pc-windows-gnuCFLAGS_x86_64-pc-windows-gnu = Nonecargo:rerun-if-env-changed=CFLAGS_x86_64_pc_windows_gnuCFLAGS_x86_64_pc_windows_gnu = Nonecargo:rerun-if-env-changed=TARGET_CFLAGSTARGET_CFLAGS = Nonecargo:rerun-if-env-changed=CFLAGSCFLAGS = Nonecargo:rerun-if-env-changed=AR_x86_64-pc-windows-gnuAR_x86_64-pc-windows-gnu = Nonecargo:rerun-if-env-changed=AR_x86_64_pc_windows_gnuAR_x86_64_pc_windows_gnu = Nonecargo:rerun-if-env-changed=TARGET_ARTARGET_AR = Nonecargo:rerun-if-env-changed=ARAR = NoneRUSTC_LINKER = Some("x86_64-w64-mingw32-gcc")cargo:rerun-if-env-changed=CROSS_COMPILECROSS_COMPILE = Nonecargo:rerun-if-env-changed=ARFLAGS_x86_64-pc-windows-gnuARFLAGS_x86_64-pc-windows-gnu = Nonecargo:rerun-if-env-changed=ARFLAGS_x86_64_pc_windows_gnuARFLAGS_x86_64_pc_windows_gnu = Nonecargo:rerun-if-env-changed=TARGET_ARFLAGSTARGET_ARFLAGS = Nonecargo:rerun-if-env-changed=ARFLAGSRANLIBFLAGS = Nonerunning cd "/data/anymembak/target/x86_64-pc-windows-gnu/debug/build/openssl-sys-22d1608ab45429ff/out/openssl-build/build/src" && env -u CROSS_COMPILE AR="x86_64-w64-mingw32-ar" CC="/usr/bin/gcc" RANLIB="x86_64-w64-mingw32-ranlib" "perl" "./Configure" "--prefix=/data/anymembak/target/x86_64-pc-windows-gnu/debug/build/openssl-sys-22d1608ab45429ff/out/openssl-build/install" "--openssldir=SYS$MANAGER:[OPENSSL]" "no-dso" "no-shared" "no-ssl3" "no-tests" "no-comp" "no-zlib" "no-zlib-dynamic" "--libdir=lib" "no-md2" "no-rc5" "no-weak-ssl-ciphers" "no-camellia" "no-idea" "no-seed" "no-capieng" "mingw64" "-O2" "-ffunction-sections" "-fdata-sections" "-gdwarf-2" "-fno-omit-frame-pointer" "-m64" "-Wa,-mbig-obj"Configuring OpenSSL version 3.2.1 for target mingw64Using os-specific seed configurationCreated configdata.pmRunning configdata.pmCreated Makefile.inCreated MakefileCreated include/openssl/configuration.h************************************************************************* ****** OpenSSL has been successfully configured ****** ****** If you encounter a problem while building, please open an ****** issue on GitHub <https://github.com/openssl/openssl/issues> ****** and include the output from the following command: ****** ****** perl configdata.pm --dump ****** ****** (If you are new to OpenSSL, you might want to consult the ****** 'Troubleshooting' section in the INSTALL.md file first) ****** *************************************************************************running cd "/data/anymembak/target/x86_64-pc-windows-gnu/debug/build/openssl-sys-22d1608ab45429ff/out/openssl-build/build/src" && "make" "depend"
因为没有配置变量。简单的说就是用了linux下的gcc ,肯定会失败的。没有找到对应的文件。
本质是 build-script 里调用的 C/汇编工具链仍然是 Linux 的 /usr/bin/gcc
/ /usr/bin/as
,而不是 MinGW-w64 的交叉编译器。于是:
rust 的配置文件中。增加env选项。
3,修改配置
.cargo/config.toml
[target.x86_64-pc-windows-gnu]
linker = "x86_64-w64-mingw32-gcc"
ar = "x86_64-w64-mingw32-ar"rustflags = ["-L/usr/x86_64-w64-mingw32/lib","-luser32","-lgdi32","-lkernel32","-ladvapi32",
][env]
CC_x86_64_pc_windows_gnu = "x86_64-w64-mingw32-gcc"
CXX_x86_64_pc_windows_gnu = "x86_64-w64-mingw32-g++"
AR_x86_64_pc_windows_gnu = "x86_64-w64-mingw32-ar"
RANLIB_x86_64_pc_windows_gnu = "x86_64-w64-mingw32-ranlib"
CFLAGS_x86_64_pc_windows_gnu = "-DWINVER=0x0600 -D_WIN32_WINNT=0x0600"
CXXFLAGS_x86_64_pc_windows_gnu = "-DWINVER=0x0600 -D_WIN32_WINNT=0x0600"
4、在执行
note: /usr/bin/x86_64-w64-mingw32-ld: cannot find -lUser32: No such file or directorycollect2: error: ld returned 1 exit status
ls /usr/x86_64-w64-mingw32/lib/libuser32.a 查看了下有文件。那就是没有建立链接。需要执行link命令
sudo ln -s /usr/x86_64-w64-mingw32/lib/libuser32.a \/usr/x86_64-w64-mingw32/lib/libUser32.a
原因:
-
在
x86_64-pc-windows-gnu
目标下,Rust 会让 MinGW-w64 链接器把 Windows 系统库 User32、Kernel32、Gdi32 … 加到命令行(见源码里-luser32 -lkernel32
等)GitHub。 -
这些库不是 DLL,而是 导入库(
libuser32.a
、libkernel32.a
…)。它们随 MinGW-w64 CRT/headers 包一起提供。 -
你的 Linux 系统上只装了
x86_64-w64-mingw32-gcc
,却 没有装对应的 CRT 和 Win32 API 导入库,结果链接阶段就找不到libuser32.a
,于是报错。
吐槽:不是哥们(linux大佬们),你们这样搞 真的好吗。。。
执行。成功。朋友们 ,欢呼吧 enjoy rust 。
但是体积非常大190M。原因:
默认的 cargo build
是 Debug 构建,再加上:
-
Windows GNU 目标会把 libstd、OpenSSL、Paho-MQTT 等一大堆依赖全都 静态地 链进去;
-
Debug 模式保留完整符号表,方便 gdb/VS Code 调试;
-
没有做 LTO/代码裁剪;
所以可执行文件非常大(上百 MB 很正常)。
执行优化命令
cargo build -p ${crate}--example patch --release --target x86_64-pc-windows-gnu
-
-p/--package test告诉 Cargo 只对 test这个包动手,避免工作区里其它 crate 被顺带编译。
-
--example patch 表示只编译 examples/patch.rs 生成的可执行文件。
体积:27M
继续优化
cargo build -p {$crate}--example patch --profile release-size --target x86_64-pc-windows-gnu
体积:1.6M 。完美。
解析:release-size
cargo.toml中添加 ;减少其他的附带项
[profile.release-size]
inherits = "release"
# https://www.aloxaf.com/2018/09/reduce_rust_size/
strip = true # Automatically strip symbols from the binary.
opt-level = 'z' # Optimize for size.
lto = true #
panic = 'abort'
codegen-units = 1
GAME OVER
====这不是最后的
error: linking with x86_64-w64-mingw32-gcc failed: exit status: 1|= note: LC_ALL="C" PATH="/home/bruce/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/bin:/home/bruce/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin:/opt/apps/com.volcengine.feilian/files/mdm/opt/corplink-mdm/bin:/usr/arm-linux-gnueabihf/bin:/opt/arm-linux-musleabihf-cross/bin:/usr/bin:/usr/arm-linux-gnueabihf/bin:/opt/arm-linux-musleabihf-cross/bin:/usr/bin:/usr/arm-linux-gnueabihf/bin:/opt/arm-linux-musleabihf-cross/bin:/usr/bin" VSLANG="1033" "x86_64-w64-mingw32-gcc" "-fno-use-linker-plugin" "-Wl,--dynamicbase" "-Wl,--disable-auto-image-base" "-m64" "-Wl,--high-entropy-va" "/home/bruce/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-pc-windows-gnu/lib/rsbegin.o" "/tmp/rustcXg6Ks4/symbols.o" "/data/a/target/x86_64-pc-windows-gnu/release-size/deps/apm-9332c89c545fc484.apm.49192088e6a58101-cgu.0.rcgu.o" "-L" "/data/a/target/x86_64-pc-windows-gnu/release-size/deps" "-L" "/data/a/target/release-size/deps" "-L" "/home/bruce/.cargo/registry/src/172.16.125.28-0c009ce4dc666fcd/windows_x86_64_gnu-0.48.5/lib" "-L" "/home/bruce/.cargo/registry/src/172.16.125.28-0c009ce4dc666fcd/windows_x86_64_gnu-0.52.5/lib" "-L" "/data/a/target/x86_64-pc-windows-gnu/release-size/build/openssl-sys-fc0e3cf9791f0c87/out/openssl-build/install/lib" "-L" "/data/a/target/x86_64-pc-windows-gnu/release-size/build/libz-ng-sys-4496acf21f6c5d86/out/lib" "-L" "/data/a/target/x86_64-pc-windows-gnu/release-size/build/libz-ng-sys-4496acf21f6c5d86/out/lib64" "-L" "/home/bruce/.cargo/registry/src/172.16.125.28-0c009ce4dc666fcd/winapi-x86_64-pc-windows-gnu-0.4.0/lib" "-L" "/data/a/target/x86_64-pc-windows-gnu/release-size/build/rdkafka-sys-c542daaeb01821a5/out/lib" "-L" "/data/a/target/x86_64-pc-windows-gnu/release-size/build/libz-sys-2a5b747d96b409af/out/lib" "-L" "/data/a/target/x86_64-pc-windows-gnu/release-size/build/libz-sys-2a5b747d96b409af/out/lib" "-L" "/data/a/target/x86_64-pc-windows-gnu/release-size/build/ring-b136e78e66c2fc5d/out" "-L" "/data/a/target/x86_64-pc-windows-gnu/release-size/build/bzip2-sys-deae5791ed63b43a/out/lib" "-L" "/data/a/target/x86_64-pc-windows-gnu/release-size/build/zstd-sys-b793f55346992187/out" "-L" "/home/bruce/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-pc-windows-gnu/lib" "-Wl,-Bstatic" "/tmp/rustcXg6Ks4/libzstd_sys-599e1ba35eab961b.rlib" "/tmp/rustcXg6Ks4/libbzip2_sys-ef97b0b83aecce6e.rlib" "/tmp/rustcXg6Ks4/librdkafka_sys-b6c359dfa7f2ba04.rlib" "/tmp/rustcXg6Ks4/liblibz_sys-cdbcc05b320ff190.rlib" "/tmp/rustcXg6Ks4/libopenssl_sys-03b3492ba7b502cd.rlib" "/tmp/rustcXg6Ks4/libring-c9a050c1e55b0ed1.rlib" "/tmp/rustcXg6Ks4/liblibz_ng_sys-0100ee76e53efe33.rlib" "/tmp/rustcXg6Ks4/libstd-a1f74822451877d1.rlib" "/home/bruce/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-pc-windows-gnu/lib/libcompiler_builtins-b44a9797859024b2.rlib" "-Wl,-Bdynamic" "-liphlpapi" "-lPacket" "-lgdi32" "-luser32" "-lcrypt32" "-lws2_32" "-ladvapi32" "-lwinapi_advapi32" "-lwinapi_cfgmgr32" "-lwinapi_comctl32" "-lwinapi_gdi32" "-lwinapi_kernel32" "-lwinapi_msimg32" "-lwinapi_opengl32" "-lwinapi_setupapi" "-lwinapi_user32" "-lwinapi_winspool" "-lwinapi_ws2_32" "-lkernel32" "-lwindows.0.52.0" "-lbcrypt" "-ladvapi32" "-lwindows.0.52.0" "-lntdll" "-lwindows.0.48.5" "-lwindows.0.52.0" "-lkernel32" "-ladvapi32" "-lkernel32" "-lntdll" "-luserenv" "-lws2_32" "-lkernel32" "-lws2_32" "-lkernel32" "-lgcc_eh" "-l:libpthread.a" "-lmsvcrt" "-lmingwex" "-lmingw32" "-lgcc" "-lmsvcrt" "-luser32" "-lkernel32" "-Wl,--nxcompat" "-L" "/home/bruce/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-pc-windows-gnu/lib" "-o" "/data/a/target/x86_64-pc-windows-gnu/release-size/deps/apm-9332c89c545fc484.exe" "-Wl,--gc-sections" "-no-pie" "-Wl,--strip-all" "-nodefaultlibs" "-Wl,--disable-runtime-pseudo-reloc" "/home/bruce/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-pc-windows-gnu/lib/rsend.o"= note: /usr/bin/x86_64-w64-mingw32-ld: cannot find -lPacket: No such file or directorycollect2: error: ld returned 1 exit status
之后我编译了整个crate,提示上面的问题。
cargo tree -e features | grep -i packet
能快速定位是哪条依赖链、哪个 feature 打开的,方便你决定 “装 SDK” 还是 “关 feature
-lPacket
指的是 WinPcap / Npcap SDK 里的 Packet.lib (或 libPacket.a)。
在 Windows 下,只要你链接了 librdkafka、pnet、winpcap 等底层网络库,build-rs 通常都会
没有lib文件
-
下载 Npcap SDK
https://npcap.com/#download → Npcap SDK(ZIP)。 -
拷贝头文件与静态库(假设 SDK 解压到
~/npcap-sdk
):sudo cp -R ~/npcap-sdk/Include/* /usr/x86_64-w64-mingw32/include/ sudo cp ~/npcap-sdk/Lib/x64/Packet.lib /usr/x86_64-w64-mingw32/lib/
在编译。成功。结束
相关文章:
Rust Ubuntu下编译生成环境win程序踩坑指南
前言: 1,公司要给一线搞一个升级程序,需要在win下跑。 之前都是找开发总监帮忙,但是他最近比较忙。就让我自己搞。有了下文.。说来惭愧,之前写过一篇ubuntu下编译windows的文章。里面的demo就一句话 fuck world。依赖…...
2025年- H12-Lc119-56.合并区间(普通数组)---java版
1.题目描述 2.思路 思路参考了代码随想录: 按照左边界从小到大排序之后,如果 intervals[i][0] < intervals[i - 1][1] 即intervals[i]的左边界 < intervals[i - 1]的右边界,则一定有重叠。(本题相邻区间也算重贴ÿ…...
合并两个有序链表
题目:21. 合并两个有序链表 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1: 输入:l1 [1,2,4], l2 [1,3,4] 输出:[1,1,2,3,4,4]示例 2: 输入&#x…...
rsync命令详解与实用案例
rsync命令详解与实用案例 rsync是一款功能强大的Linux文件同步工具,通过高效的增量传输算法,能够显著减少数据传输量和时间,是备份、镜像和跨平台文件同步的理想选择。其核心价值在于只传输文件的差异部分,而非全量复制ÿ…...
gitee 如何修改提交代码的邮箱
gitee 如何修改提交代码的邮箱 1. 修改全局提交邮箱2. 修改特定仓库的提交邮箱3. 修改已提交记录的邮箱 4. 可能遇到的问题git filter-repo 拒绝执行解决办法方法一:使用 --force 参数 (亲测有效)方法二:创建一个全新的克隆仓库 注…...
MATLAB画一把伞
% 伞的参数num_ribs 5; % 伞骨数量修改为5R 1; % 伞的半径height 0.5; % 伞的高度handle_length 2; % 伞柄长度semicircle_radius 0.26; % 伞柄末端半圆的半径% 生成伞叶网格theta linspace(0, 2*pi, 100);phi linspace(0, pi/2, 50);[Theta, Phi] meshgrid(theta, phi…...
vue 实现文件流下载功能 前端实现文件流下载
首先场景就是,一般的文件下载是通过后端返回的文件地址下载文件,但当后端返回的是文件流的时候,下载要做特殊处理 案例截图: 下载成功: 代码处理,首先就是要在接口封装的地方加上 在 Vue 前端开发中实现文件流下载与普通文件下载的核心区别在于 数据处理方式。文件流…...
[Android]导航栏中插入电源菜单
1. 新增 frameworks/base/packages/SystemUI/res/layout/power.xml <?xml version"1.0" encoding"utf-8"?> <com.android.systemui.navigationbar.buttons.KeyButtonView xmlns:android"http://schemas.android.com/apk/res/android"…...
VSCode Verilog环境搭建
VSCode Verilog环境搭建 下载Iverilog安装Iverilog验证安装VS Code安装插件 下载Iverilog 官网下载Iverilog 安装Iverilog 一定要勾选这两项 建议勾选这两项 验证安装 运行Windows PowerShell输入命令:iverilog输入命令:Get-Command gtkwave …...
Hadoop 和 Spark 生态系统中的核心组件
通过jps命令,可以看到如下进程名,请解释一下它们各自是哪个命令产生的,有什么作用?一、Worker 1.来源:Spark 集群的 工作节点(Worker Node),由 start-worker.sh 启动 2.作用&#…...
MySQL多表操作
熟能生巧,全部代码在最后!!! 一、多表关系 一对一关系、一对多关系、多对多关系 注意多对多关系必须有中间表进行关联 多对多的关系就相当于是两个一对多关系 二、创建外键约束 专门用于多表操作的一种约束方式 控制的那个表…...
WPF TextBlock控件性能优化指南
WPF TextBlock控件性能优化指南 1. 引言 TextBlock作为WPF中最基础且使用最广泛的文本显示控件,其性能优化对整个应用程序的响应速度和资源占用有着重要影响。尽管TextBlock是一个轻量级控件,但在大型应用或需要显示大量文本的场景中,不恰当…...
DotNet 入门:(一) 环境安装
一、前言 本想用 Go 语言实现一个通过小爱同学操作电脑的,比如我对着手机说打开音乐,或调小音乐,电脑能做相应的处理。奈何我一时间没看懂,就想着用.Net 来试一下,于是就有了下面这篇文章。 二、安装.Net 环境 1. 下…...
初识Redis · 分布式锁
目录 前言: 分布式锁 setnx lua脚本和看门狗 redlock算法 Redlock 的加锁流程(5 步) 前言: 到了分布式锁这一章之后,我们首先能联想到的问题就是线程安全的问题,线程安全指的是多个线程在并发执行的…...
使用 OpenCV 实现图像中心旋转
在图像处理中,围绕中心点旋转图像是一个常见的需求。无论是为了数据增强、视觉效果,还是图像对齐,旋转图像都是一项基础且重要的操作。本文将详细介绍如何使用 OpenCV 实现围绕图像中心旋转的功能,并深入探讨其背后的数学原理。 一…...
云钥科技红外短波工业相机
云钥科技的红外短波相机是一款基于短波红外(SWIR,波长范围约1-3微米)技术的成像设备,专为高精度检测、全天候成像及特殊场景应用设计。以下从核心技术、性能参数、应用场景及产品优势等方面进行详细介绍: 一、核心…...
npm如何安装pnpm
在 npm 中安装 pnpm 非常简单,你可以通过以下步骤完成: 1. 使用 npm 全局安装 pnpm 打开终端(命令行工具),运行以下命令: npm install -g pnpm2. 验证安装 安装完成后,可以检查 pnpm 的版本以确保安装成功: pnpm --version如果正确显示版本号(如 8.x.x),说明安…...
GTC Taipei 2025 医疗域前瞻:从AI代理到主权生态,解码医疗健康与生命科学的未来图景
引言 2025年,全球医疗健康领域正经历一场由人工智能、机器人技术与分布式计算驱动的范式转移。随着NVIDIA及其生态伙伴在GTC Taipei 2025大会上的深度布局,医疗行业的核心趋势愈发清晰:AI代理程序(Digital AI Agents)赋能临床协作、医疗大数据与精准医学加速落地、医学影…...
【AI学习】李宏毅新课《DeepSeek-R1 这类大语言模型是如何进行「深度思考」(Reasoning)的?》的部分纪要
针对推理模型,主要讲了四种方法,两种不需要训练模型,两种需要。 对于reason和inference,这两个词有不同的含义! 推理时计算不是新鲜事,AlphaGo就是如此。 这张图片说明了将训练和推理时计算综合考虑的关系&…...
npm打包内存不足- JavaScript heap out of memory
直接贴出报错信息 <--- Last few GCs --->[30904:0000010F60FE58E0] 22090 ms: Scavenge 2037.4 (2069.4) -> 2036.4 (2074.2) MB, 2.5 / 0.0 ms (average mu 0.228, current mu 0.216) allocation failure [30904:0000010F60FE58E0] 22101 ms: Scavenge 2…...
【最新 MCP 战神手册 08】工具使用详解:实现 AI 行动
文章目录 1. 开始啦!2. 第一部分:设计高效且安全的工具3. 第二部分:定义工具蓝图——参数、输出与约束条件4. 第三部分:弥合差距:LLM 兼容性(函数调用)5. 第四部分:实施与测试的最佳实践1. 开始啦! 在前几章中,我们将工具介绍为 AI 模型在 MCP 客户端引导下向 MCP 服…...
开发iOS App时,我常用的一款性能监控小工具分享
开发iOS App时,我常用的一款性能监控小工具分享 最近在做一个iOS应用的性能优化,频繁遇到内存泄露、界面卡顿和网络请求超时的问题。平时用Xcode Instruments虽然专业,但流程繁琐,临时排查问题不够灵活。 于是开始找有没有轻量一…...
如何防止 ES 被 Linux OOM Killer 杀掉
当 Linux 系统内存不足时,内核会找出一个进程 kill 掉它释放内存,旨在保障整个系统不至于崩溃。如果 ES 按照最佳实践去实施部署,会保留一半的内存,不至于发生此类事情。但事情总有例外,有的朋友可能 ES 和其他的程序部…...
Windows权限与icacls命令详解
在Windows操作系统中,权限管理是确保系统安全和资源访问控制的核心机制。特别是在使用NTFS(New Technology File System)文件系统的环境中,访问控制列表(ACL)用于定义哪些用户或组可以对文件、文件夹或其他…...
5.4.2 MVVM例2-用户控件的使用(水在水管中流动的实例)
本文以一个例子介绍用户控件的使用(UserControl),下图所示: 一、主要技术点 1.MainViewModel使用CommunityToolkit.Mvvm 这个Nuget包 2.LinearGradientBrush使用,下面代码可以产生如下的效果 <LinearGradientBrush x:Key="HorizontalBackground" …...
PHP代码-服务器下载文件页面编写
内部环境的服务资源下载页面有访问需求,给开发和产品人员编写一个简洁的下载页面提供资源下载。直接用nginxphp的形式去编写了,这里提供展示index.php文件代码如下: <?php // 配置常量 define(BASE_DIR, __DIR__); // 当前脚本所在目录作…...
51单片机快速入门之 SPI通信 2025年4月29日09:26:32
SPI通信 : SPI(Serial Peripheral Interface)通信是一种同步串行数据传输协议,主要用于嵌入式系统内部设备之间的通信。它由Motorola公司在2000年提出,广泛应用于微控制器、传感器、存储设备等之间的数据传输。 SPI通信的主要特点…...
SpringMVC再复习1
一、三层架构 表现层(WEB 层) 定义 :是应用程序与客户端进行交互的最外层,主要负责接收用户的请求,并将处理结果显示给用户。 作用 :在 Spring MVC 中,表现层通常采用 MVC 设计模式来构建。 技…...
音视频之H.265/HEVC网络适配层
H.265/HEVC系列文章: 1、音视频之H.265/HEVC编码框架及编码视频格式 2、音视频之H.265码流分析及解析 3、音视频之H.265/HEVC预测编码 4、音视频之H.265/HEVC变换编码 5、音视频之H.265/HEVC量化 6、音视频之H.265/HEVC环路后处理 7、音视频之H.265/HEVC熵编…...
01_微服务常见问题
文章目录 微服务常见问题一、常见问题概要一、问题详解1.1 服务拆分1.2 服务通信1.3 服务注册与发现1.4 服务治理1.5 数据一致性1.6 故障隔离与容错处理1.7 数据库设计1.8 性能测试与调优 微服务常见问题 一、常见问题概要 服务拆分:如何合理地拆分服务&#…...
Python在自动驾驶仿真环境中的应用:构建智能驾驶的虚拟世界
Python在自动驾驶仿真环境中的应用:构建智能驾驶的虚拟世界 引言 随着自动驾驶技术的迅速发展,仿真环境的构建变得愈发重要。传统的测试方法依赖物理车辆和道路进行验证,但这种方式不仅成本高昂,还存在一定的风险。为了加速自动驾驶技术的研发,仿真环境成为了一个必不可…...
【统计方法】交叉验证:Resampling, nested 交叉验证等策略 【含R语言】
Resampling (重采样方法) 重采样方法是从训练数据中反复抽取样本,并在每个(重新)样本上重新调整模型,以获得关于拟合模型的附加信息的技术。 两种主要的重采样方法 Cross-Validation (CV) 交叉验证 : 用于估计测试误…...
海外App数据隐私架构实战:构建GDPR、CCPA合规的全栈解决方案
一、隐私合规的架构范式转变 从“数据收集”到“数据最小化”传统模式:尽可能收集数据 → 导致合规风险隐私原生模式:默认不收集 → 按需申请 → 自动过期kotlin// Android权限动态申请示例(GDPR兼容) val request PermissionRe…...
Prometheus监控
1、docker - prometheusgrafana监控与集成到spring boot 服务_grafana spring boot-CSDN博客 2、【IT运维】普罗米修斯基本介绍及监控平台部署(PrometheusGrafana)-CSDN博客 3、Prometheus监控SpringBoot-CSDN博客 4、springboot集成普罗米修斯-CSDN博客…...
Vue3 Echarts 3D圆形柱状图实现教程以及封装一个可复用的组件
文章目录 前言一、实现原理二、series ——type: "pictorialBar" 简介2.1 常用属性 三、代码实战3.1 封装一个echarts通用组件 echarts.vue3.2 首先实现一个基础柱状图3.3 添加上下2个椭圆面3.4 进阶封装一个可复用的3D圆形柱状图组件 总结 前言 在前端开发的数据可视…...
洛谷P12238 [蓝桥杯 2023 国 Java A] 单词分类
[Problem Discription] \color{blue}{\texttt{[Problem Discription]}} [Problem Discription] Copy from luogu. [Analysis] \color{blue}{\texttt{[Analysis]}} [Analysis] 既然都是字符串前缀的问题了,那当然首先就应该想到 Trie \text{Trie} Trie 树。 我们可…...
【3D基础】顶点法线与平面法线在光照与PBR中的区别与影响
顶点法线与平面法线在光照与PBR中的区别与影响 在3D图形学中,法线(Normal)是影响光照计算、表面细节表现和渲染质量的核心参数之一。法线用于描述一个表面或顶点的朝向,直接关系到光的反射与分布,从而影响最终像素的颜…...
jmeter-Beashell获取http请求体json
在JMeter中,使用BeanShell处理器或BeanShell Sampler来获取HTTP请求体中的JSON数据是很常见的需求。这通常用于在测试计划中处理和修改请求体,或者在响应后进行验证。以下是一些步骤和示例代码,帮助你使用BeanShell来获取HTTP请求体中的JSON数…...
为网页LOGO视频增加电影质感表现
为网页LOGO视频增加电影质感表现 推荐超级课程: 本地离线DeepSeek AI方案部署实战教程【完全版】Docker快速入门到精通Kubernetes入门到大师通关课AWS云服务快速入门实战目录 为网页LOGO视频增加电影质感表现前几天,一个朋友开了一家烤肉店,给我发来了烤肉店的宣传视频,我…...
精益数据分析(32/126):电商指标优化与搜索策略解析
精益数据分析(32/126):电商指标优化与搜索策略解析 在创业和数据分析的探索之旅中,每一次深入学习都能为我们带来新的启发和成长。今天,我们继续秉持共同进步的理念,深入研读《精益数据分析》,…...
【空间数据分析】缓冲区分析--泰森多边形(Voronoi Diagram)-arcgis操作
泰森多边形(Voronoi Diagram):根据一组输入点生成多边形,使得每个多边形内的任意位置到其关联点的距离最近。 多边形之间无重叠,全覆盖研究区域。 边界是相邻两点连线的垂直平分线。 实验操作: 使用 Cre…...
JavaScript高级进阶(五)
操作节点属性 设置属性(先找属性再操作) setAttribute()方法添加指定的属性,并为其赋指定的值 语法: element.setAttribute(attributename/属性名,attributevalue/属性值) 例: <style> .box{ width: 200px; height: 200p…...
WPF之TextBlock控件详解
文章目录 1. TextBlock控件介绍2. TextBlock的基本用法2.1 基本语法2.2 在代码中创建TextBlock 3. TextBlock的常用属性3.1 文本内容相关属性3.2 字体相关属性3.3 外观相关属性3.4 布局相关属性 4. TextBlock文本格式化4.1 使用Run元素进行内联格式化4.2 其他内联元素 5. 处理长…...
串口通信协议
什么是串口通信? 串口通信是将数据在一条数据线上传输。 串口通信的特点是传输线少(相对于并行通信),长距离传输的成本低,但数据的传送控制比并行通信复杂。 常见的串行通信接口包括:USB,RS-…...
9.idea中创建springboot项目
9. idea中创建springboot项目 步骤 1:打开 IntelliJ IDEA 并创建新项目 启动 IntelliJ IDEA。在欢迎界面,点击 New Project(或通过菜单栏 File > New > Project)。 步骤 2:选择 Maven 项目类型 在左侧菜单中…...
详解大语言模型生态系统概念:lama,llama.cpp,HuggingFace 模型 ,GGUF,MLX,lm-studio,ollama这都是什么?
llama,llama.cpp,HuggingFace 模型 ,GGUF,MLX,lm-studio,ollama这些名词的概念给个详细的解释,彼此什么关系?是不是头很晕? 详解大语言模型生态系统概念 基础模型与架构…...
如何系统学习音视频
学习音视频技术涉及多个领域,包括音频处理、视频处理、编码解码、流媒体传输等。 第一阶段:基础知识准备 目标:掌握音视频学习所需的计算机科学和数学基础。 计算机基础 学习计算机网络基础(TCP/IP、UDP、HTTP、RTSP等协议&#…...
elementui里的el-tabs的内置样式修改失效?
1.问题图 红框里的是组件的内置样式,红框下的是自定义样式 2.分析 2.1scoped vue模板编译器在编译有scoped的stye标签时,会生成对应的postCSS插件,该插件会给每个scoped标记的style标签模块,生成唯一一个对应的 data-v-xxxhash…...
Webshell管理工具的流量特征
目录 一、常见Webshell工具流量特征 1. 中国菜刀(Chopper) 2. 冰蝎(Behinder) 3. 哥斯拉(Godzilla) 4. 蚁剑(AntSword) 5. C99 Shell…...
61.微服务保姆教程 (四) Gateway---SpringCloud微服务网关组件
Gateway—SpringCloud微服务网关组件 一、Spring Cloud Gateway简介 1.为什么要用Gateway? 在微服务架构中,通常一个系统会被拆分为多个微服务,微服务之间的调用可以用OpenFeign,但面对这么多微服务客户端调用会遇到哪些问题呢? 每个服务都需要鉴权、限流、跨域访问、权…...