被裁20240927 --- WSL-Ubuntu20.04安装cuda、cuDNN、tensorRT
cuda、cuDNN、tensorRT的使用场景
1. CUDA(Compute Unified Device Architecture)
作用:
- GPU 通用计算:CUDA 是 NVIDIA 的并行计算平台和编程模型,允许开发者直接利用 GPU 的并行计算能力,加速通用计算任务(如科学计算、图像处理、深度学习等)。
- 硬件抽象层:提供 API 和工具链(如编译器、调试器),让开发者能够编写运行在 NVIDIA GPU 上的代码。
使用场景:
- 深度学习训练与推理:为深度学习框架(如 TensorFlow、PyTorch)提供底层 GPU 加速支持。
- 高性能计算(HPC):加速物理模拟、分子动力学、金融建模等计算密集型任务。
- 图形渲染与游戏开发:支持 GPU 加速的图形渲染和实时计算。
核心特点:
- 支持 C/C++、Python 等语言的 GPU 编程。
- 提供多线程并行计算能力,显著提升计算效率。
2. cuDNN(CUDA Deep Neural Network Library)
作用:
- 深度学习专用加速库:cuDNN 是 NVIDIA 针对深度学习优化的 GPU 加速库,专注于加速神经网络的核心操作(如卷积、池化、归一化、激活函数等)。
- 框架集成:主流深度学习框架(如 TensorFlow、PyTorch、MXNet)依赖 cuDNN 实现高效的 GPU 加速。
使用场景:
- 训练深度学习模型:在模型训练阶段,cuDNN 加速卷积、循环神经网络(RNN)等操作。
- 推理加速:在模型推理阶段优化计算性能。
核心特点:
- 高度优化的算法实现,比直接使用 CUDA 实现更快。
- 支持自动选择最优算法(如根据输入尺寸选择最快的卷积算法)。
- 与 CUDA 紧密集成,需配合 CUDA 使用。
3. TensorRT(Tensor Runtime)
作用:
- 推理优化引擎:TensorRT 是 NVIDIA 的高性能深度学习推理(Inference)优化器和运行时引擎,专注于将训练好的模型部署到生产环境。
- 模型压缩与加速:通过层融合(Layer Fusion)、精度校准(INT8/FP16)、内核自动调优等技术,显著降低模型延迟、提高吞吐量。
使用场景:
- 生产环境部署:在边缘设备(如 Jetson 系列)、云端服务器或数据中心部署训练好的模型。
- 低延迟推理:适用于实时应用(如自动驾驶、视频分析、语音识别)。
- 资源受限环境:通过量化(INT8)减少模型内存占用和计算量。
核心特点:
- 支持模型格式转换(如 ONNX、TensorFlow、PyTorch → TensorRT 引擎)。
- 动态张量形状(Dynamic Tensor Shape)支持(适用于可变输入尺寸)。
- 跨平台部署(支持 Windows/Linux/Jetson 等)。
三者的关系与协作流程
-
训练阶段:
- 使用 CUDA 提供 GPU 计算能力。
- 依赖 cuDNN 加速深度学习框架的核心操作(如卷积)。
- 框架示例:PyTorch + CUDA + cuDNN 训练 ResNet 模型。
-
推理阶段:
- 使用 TensorRT 对训练好的模型进行优化(如 FP16/INT8 量化、层融合)。
- 最终生成轻量化的 TensorRT 引擎,在部署时显著提升推理速度。
- 示例:将训练好的 YOLOv5 模型转换为 TensorRT 引擎,部署到 NVIDIA Jetson 边缘设备。
总结对比
工具 | 定位 | 主要场景 | 依赖关系 |
---|---|---|---|
CUDA | GPU 通用计算平台 | 所有 GPU 加速任务 | 无 |
cuDNN | 深度学习专用加速库 | 训练和推理 | 依赖 CUDA |
TensorRT | 推理优化引擎 | 生产环境部署 | 依赖 CUDA 和 cuDNN |
注意事项
- 版本兼容性:CUDA、cuDNN、TensorRT 和深度学习框架(如 PyTorch)需版本匹配。
- 硬件限制:仅支持 NVIDIA GPU(如 RTX 系列、Tesla 系列、Jetson 系列)。
通过合理使用 CUDA、cuDNN 和 TensorRT,可以显著提升深度学习模型的训练效率和推理性能。
安装cuda、cuDNN、tensorRT
环境:WSL-Ubuntu20.04
参考资料:
- https://blog.csdn.net/JineD/article/details/131201121
- https://blog.csdn.net/qq_43515934/article/details/123897435
- https://zhuanlan.zhihu.com/p/615053337
- https://blog.csdn.net/weixin_45628358/article/details/130408132
- CUDA Toolkit Documentation
- CUDA on WSL User Guide
- NVIDIA cuDNN Documentation
- NVIDIA Deep Learning TensorRT Documentation
- NVIDIA TensorRT Documentation
- 阿木实验室SpireCV安装脚本
- DeepSeek
一些概念
- 安装CUDA即安装nvidia-cuda-toolkit
- 只要Windows中安装好了NVIDIA显卡驱动,在WSL中可以直接使用该驱动,最新的NVIDIA Windows GPU驱动程序将完全支持WSL,所以不要在WSL-Ubuntu20.04上安装任何的NVIDIA显卡驱动!以免造成覆盖问题!请不要
apt install nvidia-cuda-toolkit
,因为nvidia-cuda-toolkit
包含了一个显卡驱动! - CUDA
加速运算(科学计算、图形运算);
训练、推理过程中均可使用; - cuDNN
加速DNN的运算;
被TensorFlow、PyTorch、OpenCV等深度学习框架、模块调用;
训练、推理过程中均可使用; - TensorRT:优化深度学习网络的推理;
被TensorFlow、PyTorch、OpenCV等深度学习框架、模块调用;
只在推理过程中使用; - Cuda版本切换
如果机器上安装了多个版本的cuda,则会在/usr/local/中存在多个cuda-xx的文件夹,如下:
其中/usr/local/cuda文件夹是个软链接,链接到目前的cuda版本目录,所以如果要切换版本的话,只需要将原来cuda软链删除,重新建立指向另一个cuda-xx目录即可。 - 安装cuda的系统要求、硬件条件、编程语言要求、内核要求等、系统版本要求、编译器版本要求请查阅:Pre-installation Actions
- GPG、GPG public key:GPG(GNU Privacy Guard)是一个用于加密、签名和验证文件的开源加密工具。它可以帮助用户保护他们的数据免受未经授权的访问和篡改。您可以使用GPG来加密和签名电子邮件、文件和文本消息,以确保它们的安全性和完整性。
安装 CUDA
安装 CUDA 即安装 CUDA Toolkit
-
0)安装前的准备工作
确认WSL中可以正常访问GPU:nvidia-smi -
1)卸载WSL中为Ubuntu安装的显卡驱动
一旦在Windows 上安装了NVIDIA GPU驱动程序,CUDA就可以在WSL2中以libcuda.so的形式使用。因此,不要在WSL 2中安装任何NVIDIA显卡驱动,否则会造成驱动覆盖问题!假如安装了,要卸载掉并重启wsl2:sudo apt-get remove --purge nvidia* sudo reboot
-
2)卸载旧的 CUDA
卸载掉可能存在的旧 CUDA -Toolkit,以进行正确版本 CUDA 的安装:sudo apt-get --purge remove "*cuda*" "*cublas*" "*cufft*" "*cufile*" "*curand*" \"*cusolver*" "*cusparse*" "*gds-tools*" "*npp*" "*nvjpeg*" "nsight*" "*nvvm*" sudo apt-get autoremove
-
3)删除旧的 GPG key,GPG 秘钥用于从CUDA仓库中下载文件的身份认证!7fa2af80是旧的key,目前CUDA repository最新的key是3bf863cc,推荐使用cuda-keyring来安装最新的key:
sudo apt-key del 7fa2af80
-
4)查看显卡驱动版本
nvidia-smi
也可以在windows中的NVIDIA控制面板中查看!
- 二,当前安装的显卡驱动支持哪些版本的cuda?
查看方法:Table 2 CUDA Toolkit and Minimum Required Driver Version for CUDA Minor Version Compatibility.
注意:CUDA驱动程序是向后兼容的,例如:CUDA 11.6.x 要求显卡驱动版本 >= 450.80.02,假如你的显卡驱动版本是 536.67的话,那么你的显卡驱动同样可以兼容 CUDA 11.6.x. - 三,要选择与其他软件包互相兼容的cuda版本。
例如:你的程序使用了TensorRT包,那么在选择CUDA 版本时要考虑与TensorRT的相互兼容,或在选择TensorRT版本时要考虑与CUDA 版本的相互兼容!
- 二,当前安装的显卡驱动支持哪些版本的cuda?
-
5)在 WSL-Ubuntu 中安装 CUDA-Toolkit
安装Linux默认的CUDA-Toolkit时总是附带安装一个显卡驱动,因此不能使用这种方式给WSL2-Ubuntu安装CUDA-Toolkit。为了避免显卡驱动覆盖问题,应该使用下面的方式为WSL2-Ubuntu安装CUDA-Toolkit:- 5.1)从CUDA Toolkit Archive中选择一个合适的cuda版本,以cuda11.6为例:
- 5.2)安装类型选择 wsl-ubuntu :
- 5.3)在bash中执行安装命令(任选一种安装方式,推荐使用Network方式):
# Network 方式安装: wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600 sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/7fa2af80.pub sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/ /" sudo apt-get update sudo apt-get -y install cuda # Local方式安装: wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600 wget https://developer.download.nvidia.com/compute/cuda/11.6.0/local_installers/cuda-repo-wsl-ubuntu-11-6-local_11.6.0-1_amd64.deb sudo dpkg -i cuda-repo-wsl-ubuntu-11-6-local_11.6.0-1_amd64.deb sudo apt-key add /var/cuda-repo-wsl-ubuntu-11-6-local/7fa2af80.pub sudo apt-get update sudo apt-get -y install cuda
- 5.1)从CUDA Toolkit Archive中选择一个合适的cuda版本,以cuda11.6为例:
-
6)查看是否安装成功(先重启一下wsl)
# 先重启一下wsl dpkg -l cuda
-
7)安装完成可以删除掉.deb文件以释放存储空间
sudo rm cuda-repo-wsl-ubuntu-11-6-local_11.6.0-1_amd64.deb
-
CUDA默认安装路径为 /usr/local/cuda/
或/usr/cuda/
安装 cuDNN
-
0)准备工作
- 安装显卡驱动:在WSL中不需要这步;
- 安装CUDA Toolkit:在上一节中已安装;
- 安装Zlib
sudo apt-get install zlib1g
-
1)下载和已安装的CUDA相兼容的cuDNN安装文件:cuDNN Archive.
-
2)选择一个符合您环境的安装方法:tar文件安装适用于所有Linux平台;Deb文件安装适用于Debian 11、Ubuntu 18.04、Ubuntu 20.04和22.04;RPM文件安装适用于RHEL7、RHEL8和RHEL9;包管理工具(如apt)安装方式,适合联网条件下安装。
-
3)以apt-get安装方式为例,为wsl2-Ubuntu安装 cuDNN v8.4.1:
sudo apt-get install libcudnn8=8.4.1.*-1+cuda11.6
sudo apt-get install libcudnn8-dev=8.4.1.*-1+cuda11.6
sudo apt-get install libcudnn8-samples=8.4.1.*-1+cuda11.6 -
4)验证安装是否成功
查看cudnn_version.h或cudnn.h
如果出现版本号则安装成功cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2 或者: cat /usr/include/cudnn_version.h | grep CUDNN_MAJOR -A 如果cudnn_version.h文件不存在就搜索一下,安装路径可能有出入 sudo find / -name 'cudnn_version.h' 或查找文件cudnn.h
-
参考文献
官网:cuDNN installation Guide on Linux
博客:https://blog.csdn.net/qq_43515934/article/details/123897435
安装TensorRT
- 1)下载
查看与已安装的CUDA Toolkit、cuDNN版本相互兼容的TensorRT版本,并下载安装文件,以deb安装方式为例。 - 2)安装tensorrt,以TensorRT 8.4 EA、cuda11.6.0、cuDNN8.4.1为例
sudo dpkg -i nv-tensorrt-repo-ubuntu2004-cuda11.6-trt8.4.0.6-ea-20220212_1-1_amd64.deb
- 3)添加第三方仓库秘钥
sudo apt-key add /var/nv-tensorrt-repo-ubuntu2004-cuda11.6-trt8.4.0.6-ea-20220212/*.pub #或: sudo cp /var/nv-tensorrt-repo-ubuntu2004-cuda11.6-trt8.4.0.6-ea-20220212/*.gpg /usr/share/keyrings/
- 4)更新软件源,要保证运行后无错误提示
sudo apt-get update
- 5)安装tensorrt的依赖
TensorRT 提供三种安装模式:完整安装、lean runtime 安装、dispatch runtime安装,根据具体需要来进行安装!了解更多请参考:TensorRT Documentation。
以完整安装为例:sudo apt-get install tensorrt -y python3 -m pip install numpy sudo apt-get install python3-libnvinfer-dev
- 6)验证是否安装成功
显示如 tensorrt 8.6.1.x-1+cuda12.0 则表明安装成功!dpkg-query -W tensorrt
- 7)安装完毕后可以删除安装文件 *.deb 以释放空间。
- 参考文献
NVIDIA Deep Learning TensorRT Documentation
阿木实验室SpireCV安装脚本
卸载
- 卸载CUDA
# To remove CUDA Toolkit: sudo apt-get --purge remove "*cuda*" "*cublas*" "*cufft*" "*cufile*" "*curand*" \"*cusolver*" "*cusparse*" "*gds-tools*" "*npp*" "*nvjpeg*" "nsight*" "*nvvm*" # To remove NVIDIA Drivers: sudo apt-get --purge remove "*nvidia*" "libxnvctrl*" # To clean up the uninstall: sudo apt-get autoremove
- 卸载cuDNN
sudo apt-get --purge remove "*cuDNN*"sudo apt-get autoremove
- 卸载TensorRT
Uninstalling TensorRT
Troubleshooting
-
1)
the public key is not available: NO_PUBKEY F60F4B3D7FA2AF80 Hit:4 https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64 InRelease
原因:key不正确!!
解决办法:找到该源,为它重新配置一个正确的key(无效的源就删掉!)
-
2)
W: GPG error: https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64 InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY A4B469963BF863CC
E: The repository 'https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64 InRelease' is not signed.
原因:缺少公钥
解决办法:https://blog.csdn.net/A15130402745/article/details/131643433
https://keyserver.ubuntu.com/ -
3)
Version '8.4.1-1+cuda11.6' for 'libcudnn8' was not found
解决办法:sudo apt-get install libcudnn8=8.4.1.*-1+cuda11.6 -
4)安装libcudnn8-samples出现:
Version '8.4.1.*-1+cuda11.6' for 'libcudnn8-samples' was not found
解决办法:sudo apt-get install libcudnn8-samples -
5)
Processing triggers for libc-bin (2.31-0ubuntu9.14) ... /sbin/ldconfig.real: /usr/lib/wsl/lib/libcuda.so.1 is not a symbolic link
在安装完cuda或tensorRT后出现该问题。
解决办法:重新建立软连接,它们正确的关系应该是:libcuda.so -> libcuda.so.1 -> libcuda.so.1.1。步骤:
在windows Powershell中:cd C:\Windows\System32\lxss\lib rm libcuda.so rm libcuda.so.1
在wsl中:
cd /usr/lib/wsl/lib/ ln -s libcuda.so.1.1 libcuda.so.1 ln -s libcuda.so.1.1 libcuda.so
-
6)
export: bad variable name
待解决…
相关文章:

被裁20240927 --- WSL-Ubuntu20.04安装cuda、cuDNN、tensorRT
cuda、cuDNN、tensorRT的使用场景 1. CUDA(Compute Unified Device Architecture) 作用: GPU 通用计算:CUDA 是 NVIDIA 的并行计算平台和编程模型,允许开发者直接利用 GPU 的并行计算能力,加速通用计算任…...

uniapp写的h5跳转小程序
使用场景: 我们对接第三方支付的时候,对方只提供了原生小程序id和appid,由我们的app和h5平台跳转至小程序。 遇到的问题: app跳转本地正常,线上报错如下 解决办法: 需要去微信开放平台申请应用appid 易…...

[SWPUCTF 2022 新生赛]ez_rce
打开题目就在线环境,发现只有一句话:真的什么都没有吗 F12查看控制台和源代码也没发现任何信息,然后用虚拟机里面的dirsearch扫一下这个网站就能得到: 然后这里扫出来的结果查看的直接就是robots.txt,然后就能看到: …...

递归、搜索与回溯算法 —— 名词解析
目录 一、递归 1、什么是递归? 2、递归的数学类比 3、为什么要用到递归? 问题具有递归结构: 代码简洁易懂: 解决复杂问题: 处理嵌套结构: 4、如何理解递归? 明确基准条件: …...
【docker】docker swarm lock和unlock的区别,以及旧节点重启的隐患
docker swarm lock/unlock 的作用 Docker Swarm 提供了**加密集群状态(Encrypted Raft logs)**的功能,可以防止 Swarm 集群的管理数据(如任务分配、集群配置等)在磁盘上被未授权访问。 docker swarm lock:…...
Grafana使用日志5--如何重置Grafana密码
背景 有时候当账号太多的时候,根本记不住所有的账号密码,这时候就很容易登录失败,这时候怎么办呢? 接下来就让我来给大家演示一下Grafana的账号如果忘记了的话,该怎么找回自己的账号密码 操作 让我们来看一下具体的…...

ELK搭建初入
ELK搭建: 1、安装ElasticSearch (用于存储收集到的日志信息) 解压安装包 tar -xzvf elasticsearch-8.17.2-linux-x86_64.tar.gz 启动es:bin/elasticsearch –d(默认端口号9200) 浏览器输入es地址。出现…...
JVM 高级面试题及答案整理,最新面试题
JVM中的垃圾收集器有哪些,它们的工作原理是什么? JVM中的垃圾收集器主要包括以下几种: 1、 Serial收集器:它是一个单线程收集器,工作时会暂停所有其他工作线程("Stop-The-World")&a…...
第9章:LangChain结构化输出-示例5(基于大模型如何精确匹配POJO的字段)
如何使用LangChain4j框架创建和使用多种AI服务。它通过定义接口和注解,将自然语言处理任务(如情感分析、数字提取、日期提取、POJO提取等)封装为服务,并通过LangChain4j的AiServices动态生成这些服务的实现。 本章主要讲述基于LangChain调用大模型如何进行结构化输出的真实…...
ref和reactive的区别 Vue3
Vue3中ref和reactive的区别 ref 可以定义基本数据类型,也可定义对象类型的响应式数据 reactive 只能定义对象类型的响应式数据 ref和reactive定义对象类型的响应式数据有什么不同 不同点1 ref定义的响应式数据,取值时需要先 .value 不同点2 替换整…...
基于MATLAB的OFDM通信系统仿真设计
下面将为你详细介绍基于MATLAB的OFDM通信系统仿真设计的步骤和示例代码。 1. OFDM系统原理概述 正交频分复用(OFDM)是一种多载波调制技术,它将高速数据流通过串并转换,分配到多个正交的子载波上进行传输,这样可以有效…...

地铁站内导航系统:基于蓝牙Beacon与AR技术的动态路径规划技术深度剖析
本文旨在分享一套地铁站内导航系统技术方案,通过蓝牙Beacon技术与AI算法的结合,解决传统导航定位不准确、路径规划不合理等问题,提升乘客出行体验,同时为地铁运营商提供数据支持与增值服务。 如需获取校地铁站内智能导航系统方案文…...
JS复习练习题目、完整nodejs项目以及Commons、Es
### JS复习练习 -  1. 任务1:创建一个简单的问候函数 - 编写一个函数greet,接受一个名字作为参数,并返回一个问候语,例如:“Hello, [名字]! Welcome to Jav…...

Linux:理解O(1)调度算法的设计精髓
目录 一、从厨房看调度器本质 二、O(1)算法的核心架构 1.时间复杂度的革命 2.动态优先级魔法 三、算法运行的全景图 1.时间片分配策略 2.上下文切换的艺术 前言:前面文章提到关于并发的概念,并发针对的是单核的CPU上同时运行很多情况,…...

[C++][cmake]使用C++部署yolov12目标检测的tensorrt模型支持图片视频推理windows测试通过
最近悄悄出了yolov12框架,标志着目标检测又多了一个检测利器,于是尝试在windows下部署yolov12的tensorrt模型,并最终成功。 重要说明:安装环境视为最基础操作,博文不做环境具体步骤,可以百度查询对应安装步…...

Uppy - 免费开源、功能强大的新一代 web 文件上传组件,支持集成到 Vue 项目
Uppy 这个优质的前端组件,可以解决几乎所有的文件上传问题,最近发布了 TS 重写的 4.0 新版本,实用性更强了。 Uppy 是一个 UI 外观时尚、模块化的 JavaScript 文件上传组件,这个组件可以与任何 web 技术栈集成,不仅轻…...

【游戏——BFS+分层图】
题目 分析 但凡是最优方案可能需要访问同一个点的情况,都需要应用“拆点”,或者说分层图的技巧。多出来的维度主要是区分同一个点的不同状态而用。 对于本题,访问的时机便是一个区分点。 对于类似题“AB路线”,同一个K段的位置是…...

SSL 证书是 SSL 协议实现安全通信的必要组成部分
SSL证书和SSL/TLS协议有着密切的关系,但它们本质上是不同的概念。下面是两者的区别和它们之间的关系的表格: 属性SSL/TLS 协议SSL证书英文全称SSL(Secure Sockets Layer),TLS(Transport Layer Security&am…...
Spring 源码硬核解析系列专题(七):Spring Boot 与 Spring Cloud 的微服务源码解析
在前几期中,我们从 Spring 核心的 IoC、AOP、事务管理,到 Spring Boot 的自动装配,逐步揭示了 Spring 生态的底层原理。随着微服务架构的流行,Spring Boot 结合 Spring Cloud 成为了构建分布式系统的主流选择。本篇将深入 Spring Cloud 的核心组件,以服务注册与发现(Eure…...

嵌入式开发:傅里叶变换(5):STM32和Matlab联调验证FFT
目录 1. MATLAB获取 STM32 的原始数据 2. 将数据上传到电脑 3. MATLAB 接收数据并验证 STM32进行傅里叶代码 结果分析 STM32 和 MATLAB 联调是嵌入式开发中常见的工作流程,通常目的是将 STM32 采集的数据或控制信号传输到 MATLAB 中进行实时处理、分析和可视化…...
Ubuntu系统下交叉编译openssl
一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试
作者:Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位:中南大学地球科学与信息物理学院论文标题:BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接:https://arxiv.…...

大型活动交通拥堵治理的视觉算法应用
大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动(如演唱会、马拉松赛事、高考中考等)期间,城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例,暖城商圈曾因观众集中离场导致周边…...
java 实现excel文件转pdf | 无水印 | 无限制
文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...
ffmpeg(四):滤镜命令
FFmpeg 的滤镜命令是用于音视频处理中的强大工具,可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下: ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜: ffmpeg…...
ip子接口配置及删除
配置永久生效的子接口,2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...
laravel8+vue3.0+element-plus搭建方法
创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...
Pinocchio 库详解及其在足式机器人上的应用
Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库,专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性,并提供了一个通用的框架&…...

【iOS】 Block再学习
iOS Block再学习 文章目录 iOS Block再学习前言Block的三种类型__ NSGlobalBlock____ NSMallocBlock____ NSStackBlock__小结 Block底层分析Block的结构捕获自由变量捕获全局(静态)变量捕获静态变量__block修饰符forwarding指针 Block的copy时机block作为函数返回值将block赋给…...

leetcode73-矩阵置零
leetcode 73 思路 记录 0 元素的位置:遍历整个矩阵,找出所有值为 0 的元素,并将它们的坐标记录在数组zeroPosition中置零操作:遍历记录的所有 0 元素位置,将每个位置对应的行和列的所有元素置为 0 具体步骤 初始化…...