当前位置: 首页 > news >正文

人工智能学习用的电脑安装cuda、torch、conda等软件,版本的选择以及多版本切换

        接触人工智能的学习三个月了,每天与各种安装包作斗争,缺少依赖包、版本高了、版本低了、不兼容了、系统做一半从头再来了。。。这些都是常态。三个月把单位几台电脑折腾了不下几十次安装,是时候总结一下踩过的坑和积累的经验了。

        以一个典型的学习人工智能Ubuntu系统电脑为例,其软件结构和安装顺序为:ubuntu-->显卡相关(驱动、cuda、cudnn)-->anaconda-->pytorch(torch和vision)-->pycharm-->算法应用平台(比如mmdetection)。虽然算法应用平台是最后安装的,但是各个软件的版本选择却必须从算法应用平台的版本开始,因为所有的安装都是为了最后的算法应用平台服务的。这是初学的时候最容易踩的坑,往往费劲九牛二虎之力,到了最后的环节才发现版本不兼容,又得从头再来。我第一次安装用了一个星期才成功。

        下面就重新再从头安装一次系统,并作记录以备忘。

一、Ubuntu的版本选择

        Ubuntu的版本是向下兼容的,目前我安装过3个不同时期的版本,还没有遇到过由于版本过新造成的不兼容。所以Ubuntu的版本选择,原则上是越新越好。唯一需要注意的是,非常新的版本有可能对老硬件支持不好,比如我就在华硕x99主板电脑上安装v24.10Ubuntu不成功,换为v22.04Ubuntu后就安装成功了。

二、安装Ubuntu

        安装过程略,详见下面链接的文章:使用 MMDetection 实现 Pascal VOC 数据集的目标检测项目练习(二)系统安装_pascal voc数据集-CSDN博客

三、显卡驱动的版本选择

        显卡驱动可以新一些,它是向下兼容的,不选最新版,选较新版就可以,比较新的版本支持的最高cuda版本会高些,会让后面的使用多一些选择。

        在Ubuntu系统安装完成之后,从设置-->关于-->软件升级-->附加驱动那里安装,成功率会很高。不要用那种下载官网驱动然后本地安装的方法,很麻烦,很容易黑屏变砖。

注意别选open kernel版的,我没试过,看别人说的不要选。 

四、安装最高版本的cuda

        安装完Ubuntu之后,在安装Ubuntu时创建的这个默认用户下将系统软件和显卡驱动升级,并且安装最高版本的CUDA。

允许安装的最高CUDA版本,输入以下命令后查看:

nvidia-smi

        记住这个坑:CUDA VERSION 12.2,如果显示12.2,那么就装12.1,因为刚好pytorch在这个附近只有支持cuda12.1的版本,没有支持v12.2的。

打开:https://developer.nvidia.com/cuda-12-1-0-download-archive

        复制图中方框内的链接文字,用下载工具或者在浏览器地址栏输入链接,下载cuda12.1安装文件:cuda_12.1.0_530.30.02_linux.run。

        安装过程略,详见上面链接的文章。使用 MMDetection 实现 Pascal VOC 数据集的目标检测项目练习(二)系统安装_pascal voc数据集-CSDN博客

        之所以要先安装最高版本的cuda,是因为在安装多个版本cuda时,如果先装了一个低版本的,再安装高版本的时候就报错不允许安装,而安装了一个最高版本后,就可以继续随意安装比它低的版本。

        在这个cuda版本中,暂时没有需要的应用,所以cudnn、conda、torch等暂不安装,需要时再装。

        然后根据各个算法应用平台对于cuda和python、torch等的版本特定要求,创建新的用户,每个用户安装特定版本的cuda和其他软件。

五、特定版本的选择和下载安装

创建一个新用户,并添加sudo权限:

sudo adduser 新用户名
sudo usermod -aG adm 新用户名
sudo usermod -aG sudo 新用户名

        比如,我们这里新建一个名为mmde的用户,创建这个用户的目的是为了安装和运行mmdetection,下面就以运行mmdetection的平台配置为例:

sudo adduser mmde
sudo usermod -aG adm mmde
sudo usermod -aG sudo mmde

重启电脑登录新用户,开始安装特定版本的应用程序和软件框架。

        在mmdetection官网:https://mmdetection.readthedocs.io/zh-cn/latest/get_started.html

获取到它推荐的一些版本信息:Python>=3.7,cuda>=9.2,pytorch>=1.8。

        后面的所有安装就基于以上的版本要求进行,千万不要一昧求新 ,虽然原则上很多软件都向下兼容,但是安装的软件版本过高有可能会出现兼容问题。比如,我就在 pytorch=2.2.2, python=3.11,cuda=11.8的基础上安装mmdetection失败,出错提示的内容是本地已安装的依赖包版本高于了所需版本。

        大部分的算法应用平台和框架的官网都会给出依赖软件推荐的版本,如果官网没有给出就多翻翻别人的安装文章,一定要先做好版本规划再开始安装整个系统,这很重要!!!做好系统规划,后面的安装基本上都是一次成功。

上面已知mmdetection的版本需求是:

        Python>=3.7

        cuda>=9.2

        pytorch>=1.8

各个版本的选择就要比推荐版本略高一点点,尽量保持先进性,又不至于过分超前。

        下面就从pytorch开始来选择版本,为什么是pytorch,因为pytorch只针对某些特定的cuda版本推出了安装包,就是说pytorch“挑”包。有无数人在这里翻车,比如安装了cuda12.2,发现pytorch只有cuda12.1的版本,又回头去安装cuda12.1。所以在确定cuda版本之前要先确认torch的版本。

        1、pytorch和torchvision的版本

打开清华源:

Index of /anaconda/cloud/pytorch/linux-64/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

我们的目标:

        pytorch>=1.8,所以在上面的网页中查找符合预期的版本,比如1.9;

        cuda>=9.2,选择cuda9.2+或者cuda10;

        Python>=3.7,选择3.8;

        基于以上,那么符合要求的就是:

点击下载,获得文件:pytorch-1.9.0-py3.8_cuda10.2_cudnn7.6.5_0.tar.bz2

从上面选定的torch的文件名还获取到了我们需要的各个版本信息:        

        pytorch=1.9

        python=3.8

        cuda=10.2

        cudnn=7.6.5

然后,参照下面的torch、vision、python的对照表,选择torchvision版本:

  至此,获取到了现阶段的版本清单:

        pytorch=1.9.0

        torchvision=0.10.0

        python=3.8

        cuda=10.2

        cudnn=7.6.5

在网页:Index of /anaconda/cloud/pytorch/linux-64/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

 中查找:vision-0.10.0-py38_cu102,就可以找到cudnn的链接,点击下载,得到文件:torchvision-0.10.0-py38_cu102.tar.bz2

2、anaconda的版本

• anaconda的版本选择依据:

        conda的base环境预置了一个基础的python和其他各种常用科学计算包、基础包,每个conda版本的这些包的出品的时期很接近。
        所以conda的版本就要从后面倒推回来:算法应用平台对python的版本要求-->conda的基础python版本-->conda版本。

根据下表:

 由mmdetection对python的要求:python=3.8,获得了anaconda的版本:2021.05       

打开清华源,搜索和下载:

Index of /anaconda/archive/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

得到文件:Anaconda3-2021.05-Linux-x86_64.sh 

3、pycharm的版本

    官网:PyCharm中文网

        pycharm的版本尽量新一些,功能会多一些,尤其是最近的版本,直接在IDE中内置了AI插件,很好用。另外在创建conda环境方面,新版也比老版好用得多,建议用次新版。

 下载2024.1.7版,得到文件:pycharm-community-2024.1.7.tar.gz       

        至此,已经明确了所有的版本并且已经下载了部分安装文件,下面就按照既定的版本按顺序下载和安装。

        安装顺序:cuda、cudnn-->anaconda-->pytorch(torch和vision)-->pycharm。所有的安装包都拷贝到本用户home/下的私有目录,省得因为权限问题纠缠。应用程序安装的路径要选择在所有用户可以访问到的的公用目录,比如:/opt,不要选在用户的私有目录,比如各用户的home/,否则会有共享权限的麻烦。    

4、cuda的下载和安装     

CUDA Toolkit Archive | NVIDIA Developer,以及:

https://developer.nvidia.com/cuda-10.2-download-archive

        复制图中方框内的链接文字,用下载工具或者在浏览器地址栏输入链接,下载cuda10.2安装文件:cuda_10.2.89_440.33.01_linux.run

        安装过程略,详见上面链接的文章。使用 MMDetection 实现 Pascal VOC 数据集的目标检测项目练习(二)系统安装_pascal voc数据集-CSDN博客

需要注意的是,由于当前的GCC版本过高,在安装cuda10.2的时候会出错,使用:Ubuntu中使用多版本的GCC-CSDN博客 

的方法来安装GCC7,并且用GCC7来安装cuda10.2。

这里注意要选no。

5、cudnn的下载和安装

https://developer.nvidia.com/rdp/cudnn-archive

记得这里有个坑,不要选deb格式!亲试安装不成功。

 点击下载,得到文件:cudnn-10.2-linux-x64-v7.6.5.32.tgz。安装过程见上面的链接。

6、anaconda的安装 

sudo bash Anaconda3-2021.05-Linux-x86_64.sh

Anaconda3-2021.05-Linux-x86_64.sh是之前下载的anaconda安装文件的文件名。

        注意,在选择安装路径这里,要选择到自己定义的以anaconda版本命名的目录下,我这里用的是/opt/anaconda2105:

使用conda list,可以看到 base环境预置了一个3.8.8版本的python,与我们的预期是一致的:

• 创建新环境

        安装完anaconda,使用conda创建新环境。如果不使用克隆base环境的方法,而是使用这个指令直接创建:

conda create --name 环境名 python=3.xx

        那么直接创建的新环境中就只有几十个必备的包,像常用的科学计算和图像处理包,如numpy、pillow等都没有预置,在后续的安装过程中就经常会提示依赖包不全而造成安装无法进行,有时候即使看上去安装成功了,运行时又提示缺少依赖包。而如果使用克隆base环境的方法,由于base环境已经包含了常用的很多科学计算包,后续安装的成功率就会高很多。克隆的唯一缺点是占用硬盘空间比较大,一个base环境大约一两个G的空间。

        另外,不建议在base下直接安装应用包,因为在新建的环境中如果安装乱了可以将其删除重建,而base环境一旦安装乱了,就没法收拾了。

• 使用克隆base,创建新环境的方法: 

conda create -n 新环境名字 --clone base

所以这里创建一个克隆base的新环境: 

conda create -n mmde --clone base

7、pytorch和torchvision的安装

在刚创建的名为mmde的新环境中安装pytorch和torchvision。

conda activate mmde

 安装pytorch

conda install pytorch-1.9.0-py3.8_cuda10.2_cudnn7.6.5_0.tar.bz2

 pytorch-1.9.0-py3.8_cuda10.2_cudnn7.6.5_0.tar.bz2是之前下载的pytorch安装文件的文件名。

 安装torchvision

conda install torchvision-0.10.0-py38_cu102.tar.bz2

torchvision-0.10.0-py38_cu102.tar.bz2 是之前下载的torchvision安装文件的文件名。

8、pycharm

新建文件夹:

sudo mkdir -p /opt/pycharm

将之前下载得到的文件解压缩到新建的文件夹内:

sudo tar -xzf pycharm-community-2024.1.7.tar.gz -C /opt/pycharm

        切换到/usr/share/applications/目录,这是存放应用程序快捷方式的目录。然后新建一个文本文件:pycharm.desktop 

cd /usr/share/applications/
sudo nano pycharm.desktop

在其中输入:

[Desktop Entry]
Name=PyCharm
Comment=Python IDE
Exec=/opt/pycharm/pycharm-community-2024.1.7/bin/pycharm.sh
Icon=/opt/pycharm/pycharm-community-2024.1.7/bin/pycharm.png
Terminal=false
Type=Application
Categories=Development;IDE;

 保存并退出,现在在应用程序菜单中就可以找到了pycharm的快捷方式:

六、环境变量路径的设置 

        至此,已经基本完成了系统的安装。不过由于没有设置cuda路径,所以输入:

nvcc -V

会出现未安装cuda toolkit:

1、单版本和单用户的cuda路径的设置方法

         用文本编辑器打开bashrc文件:

sudo gedit ~/.bashrc

        在bashrc文件的末尾加入:

export PATH=$PATH:/usr/local/cuda-xx.x/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-xx.x/lib64
export CUDA_HOME=$CUDA_HOME:/usr/local/cuda-xx.x

cuda-xx.x是cuda的实际版本,比如:11.2。

然后在pycharm中打开settings:

Environment variables新建两个路径: 

 LD_LIBRARY PATH=/usr/local/cuda-xx.x/lib64:/usr/local/cuda-xx.x/extras/CUPTI/lib64:$LD LIBRARY PATH

以及

CUDA_HOME=/usr/local/cuda-xx.x

        这样的话,pycharm的python控制台就指向了特定版本的cuda路径。用这种方式,多版本多用户,就需要在每个用户下单独安装pycharm。

2、多版本、多用户情况下的的路径设置

        如果所有用户既要共用pycharm,又想不同用户使用不同的cuda路径,只需要针对不同用户分配不同版本cuda路径,修改/etv/profile文件,根据不同用户的登录,在系统启动时就把cuda版本指定好,这样的好处是pycharm中不用再设置python控制台路径,也不用在每个用户的.bashrc中设置cuda路径。与bashrc文件相比,profile文件的作用域更大,起效时间更早。详见:

Ubuntu系统的.bashrc、/etc/profile 和 /etc/environment文件_ubuntu bashrc-CSDN博客

        具体如下:

sudo nano /etc/profile

 加入内容:

if [ "$USER" = "user1" ]; thenexport PATH="$PATH:/usr/local/cuda-xx.x/bin"export LD_LIBRARY_PATH="/usr/local/cuda-xx.x/lib64:/usr/local/cuda-xx.x/extras/CUPTI/lib64:$LD_LIBRARY_PATH"export CUDA_HOME="/usr/local/cuda-xx.x"
elif [ "$USER" = "user2" ]; thenexport PATH="$PATH:/usr/local/cuda-yy.y/bin"export LD_LIBRARY_PATH="/usr/local/cuda-yy.y/lib64:/usr/local/cuda-yy.y/extras/CUPTI/lib64:$LD_LIBRARY_PATH"export CUDA_HOME="/usr/local/cuda-yy.y"
fi

xx.x和yy.y是需要设置的cuda版本号,比如:10.2和12.1。

七、安装应用平台:mmdetection

按官网的推荐:

 • 执行第一步安装openmim,出现了依赖包不全的提示:

检查和补全依赖包:

pip check   # 检查缺少的依赖包
pip install spyder=4.2.5
pip check
pip install conda-repo-cli==1.0.4
pip check
pip install nanconda-project==0.9.1

每安装一个就使用pip check来确认是否还有缺少的包。直到:

• 执行第二步mim install mmengine,正常安装即可。

• 执行第三步:不要使用mim install "mmcv>=2.0.0",因为在我安装的这个时间节点(2024-11-25),它会安装一个2.2.0版的mmcv,但是它的实际运行中又有要求mmcv版本<2.2.0,这样就会报错。所以改为了mim install "mmcv==2.1.0",安装一个2.1.0版本的mmcv。

下面mmdetection具体的安装过程见: 使用 MMDetection 实现 Pascal VOC 数据集的目标检测项目练习(三)MMDetection安装-CSDN博客

 安装完后试运行:

一遍过! 

八、总结:

        系统中共有cuda toolkit、cudnn、anaconda、pytorch、pycharm以及应用平台(比如mmdetection)等软件和环境平台。

• Ubuntu的版本在硬件的支持范围内越新越好,pycharm也可以用较新的版本。

• 各个软件的版本的选择顺序:应用平台(比如mmdetection)的版本要求-->cuda系列和torch系列以及python版本-->由python版本获得anaconda版本。

• 除了pycharm之外,针对不同的cuda,每个用户安装一套版本的软件。

• cuda版本的路径切换在/etc/profile中设置,其余的用默认路径设置。

相关文章:

人工智能学习用的电脑安装cuda、torch、conda等软件,版本的选择以及多版本切换

接触人工智能的学习三个月了&#xff0c;每天与各种安装包作斗争&#xff0c;缺少依赖包、版本高了、版本低了、不兼容了、系统做一半从头再来了。。。这些都是常态。三个月把单位几台电脑折腾了不下几十次安装&#xff0c;是时候总结一下踩过的坑和积累的经验了。 以一个典型的…...

BERT模型的输出格式探究以及提取出BERT 模型的CLS表示,last_hidden_state[:, 0, :]用于提取每个句子的CLS向量表示

说在前面 最近使用自己的数据集对bert-base-uncased进行了二次预训练&#xff0c;只使用了MLM任务&#xff0c;发现在加载训练好的模型进行输出CLS表示用于下游任务时&#xff0c;同一个句子的输出CLS表示都不一样&#xff0c;并且控制台输出以下警告信息。说是没有这些权重。…...

InfluxDB 集成 Grafana

将InfluxDB集成到Grafana进行详细配置通常包括以下几个步骤&#xff1a;安装与配置InfluxDB、安装与配置Grafana、在Grafana中添加InfluxDB数据源以及创建和配置仪表板。以下是一个详细的配置指南&#xff1a; 一、安装与配置InfluxDB 下载与安装&#xff1a; 从InfluxDB的官…...

Vue跨标签通讯(本地存储)(踩坑)

我司有一个需求【用户指引】 需求是根标签有一个用户指引总开关&#xff0c;可以控制页面所有的用户指引是否在页面进入后初始是否默认打开&#xff0c;但是有些页面会新开标签这就设计到跨标签通讯了 我采取的方案是本地存储 重点:首先本地存储在页面是同源(即域名协议端口三…...

掌握创意之钥:全面解析HTML5 Canvas

在数字时代&#xff0c;表达创意的方式多种多样&#xff0c;而 HTML5 中的 <canvas> 元素无疑为网页开发者提供了一个强大的工具箱。无论你是想要创建动态图表、互动游戏还是复杂的可视化应用&#xff0c;掌握 Canvas 的基本用法都是迈向成功的关键一步。本文将带你一步步…...

mac port 安装redis 并设置为系统服务 自定义配置方法

mac系统中&#xff0c;port 包管理工具比brew的速度快N倍&#xff0c;今天就给大家分享一下在macos系统中如何使用 port安装 redis数据库并配置为服务自动启动和自定义redis.conf配置的方法。 1. 安装redis sudo port install redis 2. 启动redis服务 sudo port load redis …...

Agent AI: Surveying the Horizons of Multimodal Interaction---摘要、引言、代理 AI 集成

题目 智能体AI:多模态交互视野的考察 论文地址&#xff1a;https://arxiv.org/abs/2401.03568 图1&#xff1a;可以在不同领域和应用程序中感知和行动的Agent AI系统概述。Agent AI是正在成为通用人工智能&#xff08;AGI&#xff09;的一个有前途的途径。Agent AI培训已经证…...

二百七十八、ClickHouse——将本月第一天所在的那一周视为第一周,无论它是从周几开始的,查询某个日期是本月第几周

一、目的 ClickHouse指标表中有个字段week_of_month&#xff0c;含义是这条数据属于本月第几周。 而且将本月第一天所在的那一周视为第一周&#xff0c;无论它是从周几开始的。比如2024-12-01是周日&#xff0c;即12月第一周。而2024-12-02是周一&#xff0c;即12月第二周 二…...

Unity 相机旋转及角度限制

前言 由于欧拉角具有直观的可读性&#xff0c;做相机旋转时选择修改eulerAngles 来实现旋转&#xff0c;但实际效果与预期稍有不同&#xff0c;这是因为欧拉角受到万向锁&#xff08;Gimbal Lock&#xff09;的影响&#xff0c;在赋值时需要对输入的角度进行调整。 if (value…...

基于CentOS系统利用Kamailio搭建企业级SIP服务器

一、Kamailio简介 Kamailio是一款开源的SIP服务器&#xff0c;具有高性能、可扩展、模块化等特点。它广泛应用于VoIP、即时通讯、视频会议等领域。Kamailio支持多种操作系统&#xff0c;如Linux、FreeBSD等&#xff0c;可以与其他开源项目&#xff08;如 Asterisk、FreeSWITCH…...

部署项目报错

vue2项目部署后 Error: Cannot find module /views/*** 1.起因 登录页、首页等静态页面可以正常进入&#xff0c;后端访问也正常&#xff0c;可以获取到验证码。 但是登录之后会发现首页空白或者进入不到首页 F12查看有报错信息&#xff1a;Error: Cannot find module ‘/v…...

【AIGC】大模型面试高频考点-位置编码篇

【AIGC】大模型面试高频考点-位置编码篇 &#xff08;一&#xff09;手撕 绝对位置编码 算法&#xff08;二&#xff09;手撕 可学习位置编码 算法&#xff08;三&#xff09;手撕 相对位置编码 算法&#xff08;四&#xff09;手撕 Rope 算法&#xff08;旋转位置编码&#xf…...

钓鱼攻击详解:鱼叉攻击与水坑攻击

钓鱼攻击详解&#xff1a;鱼叉攻击与水坑攻击 在现代网络安全领域中&#xff0c;钓鱼攻击&#xff08;Phishing&#xff09;是一种最常见且有效的攻击手段。它通过欺骗用户&#xff0c;引导其泄露敏感信息或执行恶意操作&#xff0c;从而为攻击者打开大门。本文将深入介绍两种…...

如何在自动化安全测试中,实现多工具集成与数据融合,以提高对Spring Boot应用程序安全漏洞的检测效率与准确性?

为了在自动化安全测试中实现多工具集成与数据融合&#xff0c;以提高对Spring Boot应用程序安全漏洞的检测效率与准确性&#xff0c;可以采取以下策略和方法&#xff1a; 文章目录 1. 工具选择与集成2. 数据标准化与聚合3. 数据分析与融合4. 持续改进5. 实施示例 1. 工具选择与…...

框架篇面试

一、Spring框架中的单例bean的安全性 Spring框架中有一个Scope注解&#xff0c;默认的值就是singleton&#xff0c;单例的&#xff1b;因为一般在spring的bean中注入的都是无状态的对象&#xff0c;所以没有线程安全问题。但是如果在bean中定义了可修改的成员变量&#xff0c;…...

STM32滴答定时器SysTick理解+时基设置(4.1)

文章目录 1. 什么是滴答定时器&#xff1f;2. SysTick定时器初始化2.1 systick定时器时钟源&#xff1f;2.2 定时器四个寄存器 3 函数设置3.1SysTick_Config&#xff08;uint32_t ticks&#xff09;函数3.2初始化函数 4. 延时函数实现4.1 ms延时思路及实现4.2 us延时 1. 什么是…...

数字化时代下的企业合规管理:全球化背景下的挑战与机遇

在全球化浪潮的推动下&#xff0c;企业合规管理已成为企业发展中不可或缺的一部分。随着各国法规日益严格&#xff0c;以及数字化技术的飞速发展&#xff0c;企业在扩展业务的同时&#xff0c;也面临着越来越多的合规挑战。有效的合规管理不仅有助于提高企业的管理水平和运营效…...

读《Effective Java》笔记 - 条目17

条目17&#xff1a;使可变性最小化 为什么要使可变性最小化&#xff1f; 不可变对象天然是线程安全的&#xff0c;可以在多个线程之间安全共享。而可变对象需要添加额外的同步机制保证线程安全。不可变对象一旦创建就不会改变&#xff0c;便于追踪和理解代码。而可变对象的状态…...

对比json数据是否变化

在 JavaScript 中&#xff0c;你可以使用多种方法来对比两个 JSON 数据是否发生变化。以下是几种常见的方式&#xff1a; 1. 使用 JSON.stringify 最简单的方法是将两个 JSON 对象序列化为字符串&#xff0c;并比较这些字符串。但需要注意的是&#xff0c;这种方法对于对象属…...

云计算实验室建设方案

一、云计算实验室建设方案 云计算实验教学整体解决方案&#xff0c;包括&#xff1a;云计算服务器集群、云计算实训平台、实训课程体系、行业实战课程系统、行业数据等&#xff0c;系统性地解决云计算实训教学的痛点问题。 【硬件系统】云计算实训一体机 云计算实训一体机是唯…...

一、理论基础-PSI

之前参加了隐语第2期&#xff0c;对隐语SecretFlow框架有了大致的了解&#xff0c;这次参加隐语第4期&#xff0c;学习下PSI和PIR。 一、PSI定义 首先介绍PSI的定义&#xff0c;PSI&#xff08;隐私集合求交&#xff0c;Private Set Intersection即PSI)是安全多方计算&#x…...

C++学习0.2: RAII

引用&#xff1a; 【代码质量】RAII在C编程中的必要性_raii 在c中的重要性-CSDN博客 C RAII典型应用之lock_guard和unique_lock模板_raii lock-CSDN博客 前言: 常用的线程间同步/通信&#xff08;IPC&#xff09;方式有锁&#xff08;互斥锁、读写锁、自旋锁&#xff09;、…...

机器学习基础

了解机器学习的基本概念&#xff0c;如监督学习、无监督学习、强化学习、模型评估指标&#xff08;准确率、召回率、F1分数等&#xff09;。 机器学习&#xff08;Machine Learning&#xff0c;ML&#xff09;是人工智能&#xff08;AI&#xff09;的一个分支&#xff0c;它使计…...

传输层TCP_三次握手四次挥手的过程

三次握手四次挥手 三次握手 三次握手...

AI主流的生成式工作流框架

根据搜索结果&#xff0c;以下是一些2024年比较主流的生成式工作流框架&#xff1a; 1. LangChain&#xff1a;LangChain是一个用于构建生成式AI工作流的开发框架&#xff0c;它支持多种语言模型、工具、数据源及其他系统的集成。 2. DSPy&#xff1a;DSPy是一个生成式AI工作…...

【WRF后处理】WRF时区(UTC)需转化为北京时间(CST)!!!

目录 WRF运行时间标准注意事项-本地时区问题 输入数据&#xff1a;ERA5时间标准ERA5数据和WRF模型需要转换为北京时间&#xff01;&#xff01;&#xff01;北京时间&#xff08;CST&#xff09;与协调世界时&#xff08;UTC&#xff09;的关系转换方法 参考 WRF运行时间标准 …...

Qt 2D绘图之五:图形视图框架的结构、坐标系统和框架间的事件处理与传播

参考文章链接: Qt 2D绘图之五:图形视图框架的结构和坐标系统 Qt 2D绘图之六:图形视图框架的事件处理与传播 图形视图框架的结构 在前面讲的基本绘图中,我们可以自己绘制各种图形,并且控制它们。但是,如果需要同时绘制很多个相同或不同的图形,并且要控制它们的移动、…...

游戏引擎学习第34天

仓库:https://gitee.com/mrxiao_com/2d_game #这天内容比较多 开场介绍 游戏开发行业的基础是使用C和C编程&#xff0c;这是当今几乎所有游戏的开发标准。市面上广受欢迎的游戏&#xff0c;如《使命召唤》或《侠盗猎车手》&#xff0c;它们的底层代码和引擎几乎无一例外地采…...

深度学习笔记——模型压缩和优化技术(蒸馏、剪枝、量化)

本文详细介绍模型训练完成后的压缩和优化技术&#xff1a;蒸馏、剪枝、量化。 文章目录 1. 知识蒸馏 (Knowledge Distillation)基本概念工作流程关键技术类型应用场景优势与挑战优势挑战 总结 2. 权重剪枝 (Model Pruning)基本原理二分类1. 非结构化剪枝&#xff08;Unstructur…...

[在线实验]-RabbitMQ镜像的下载与部署

镜像下载 docker的rabbitmq镜像资源-CSDN文库 加载镜像 docker load --input rabbitmq.tar 给镜像打标签 这里发现镜像名为none&#xff0c;需要给镜像重命名下 docker tag [镜像id] [新镜像名称]:[新镜像标签] docker tag ebaf409ffbe2 rabbitmq:management 运行镜像…...

Netty 入门应用:结合 Redis 实现服务器通信

在上篇博客中&#xff0c;我们了解了 Netty 的基本概念和架构。本篇文章将带你深入实践&#xff0c;构建一个简单的 Netty 服务端&#xff0c;并结合 Redis 实现一个数据存取的示例。在这个场景中&#xff0c;Redis 作为缓存存储&#xff0c;Netty 作为服务端处理客户端请求。通…...

推荐 编译器c++

网页型 https://www.acgo.cn/playground C 在线工具 | 菜鸟工具 AcWing - 在线题库 ZJYYC在线测评系统 少儿编程竞赛在线学习 登录 - JOYSKID 余博士教编程_酷哥OJ_酷哥爱编程_酷哥创客AI编程 登录 - Luogu Spilopelia 软件型 DEV-c Dev C软件下载...

【新品发布】ESP32-P4开发板 —— 启明智显匠心之作,为物联网及HMI产品注入强劲动力

核心亮点&#xff1a; ESP32-P4开发板&#xff0c;是启明智显精心打造的一款高性能物联网开发板。它专为物联网项目及HMI&#xff08;人机界面&#xff09;产品而设计&#xff0c;旨在为您提供卓越的性能和稳定可靠的运行体验。 强大硬件配置&#xff1a; 双核400MHz RISC-V处…...

MeterSphere 使用脚本处理数据

1、前置/后置脚本 支持BeanShell(JSR223)、python、groovy、JavaScript脚本语言&#xff0c;推荐BeanShell(JSR223)。 在前置脚本中可以直接引用JMeter 预定义对象&#xff0c;例如&#xff1a; -- log&#xff1a;用于在脚本执行过程中打印日志 //打印“Hello World!”到info…...

如何获取谷歌新闻API密钥?

在信息获取和新闻传播领域&#xff0c;快速获取最新的新闻动态至关重要。谷歌新闻API为开发者提供了强大的工具&#xff0c;能够方便地集成全球各类新闻内容。通过使用该API&#xff0c;开发者可以实现对新闻的实时访问和管理&#xff0c;为用户提供丰富的信息服务。本文将指导…...

【全网最新】若依管理系统基于SpringBoot的前后端分离版本开发环境配置

目录 提前准备&#xff1a; 下载源代码 设置依赖 设置后台连接信息 运行后台 运行前端 安装npm依赖 启动前端 登录网页客户端 提前准备&#xff1a; 1、安装mysql 5以上就可以。 2、安装redis. 3、安装npm npm下载地址&#xff1a;https://nodejs.org/dist/v22.12…...

备赛蓝桥杯--算法题目(3)

1. 2的幂 231. 2 的幂 - 力扣&#xff08;LeetCode&#xff09; class Solution { public:bool isPowerOfTwo(int n) {return n>0&&n(n&(-n));} }; 2. 3的幂 326. 3 的幂 - 力扣&#xff08;LeetCode&#xff09; class Solution { public:bool isPowerOfT…...

如何解决 java.nio.charset.CoderMalfunctionError: 编码器故障错误问题?亲测有效的解决方法!

java.nio.charset.CoderMalfunctionError 是一个在 Java 中相对较少遇到的异常&#xff0c;通常与字符编码转换过程中的错误有关。当 Java 程序在进行字符编码转换时&#xff0c;遇到无法处理的字符或编码故障时&#xff0c;就会抛出该异常。 1. 问题描述 java.nio.charset.C…...

电气自动化 基于PLC控制的四路抢答器设计

摘要 本文描述了一款用三菱FX3U-48M可编程控制器设计的四路抢答器的系统构成、设计思路和功能。此抢答系统除了有基本抢答功能之外&#xff0c;还有计时、计算得分、亮灯提提示以及蜂鸣提醒功能。程序中设定答题时间&#xff0c;在主持人未按下开始抢答按钮之前&#xff0c;选…...

GA优化后的RBF神经网络

遗传算法&#xff08;Genetic Algorithm, GA&#xff09;优化后的RBF&#xff08;Radial Basis Function&#xff09;神经网络是一种结合进化算法与神经网络的混合模型&#xff0c;用于改进RBF神经网络的性能。以下是该模型的基本原理和相关公式&#xff1a; clear all close a…...

Scala:正则表达式

object test03 {//正则表达式def main(args: Array[String]): Unit {//定义一个正则表达式//1.[ab]:表示匹配一个字符&#xff0c;或者是a&#xff0c;或者是b//2.[a-z]:表示从a到z的26个字母中的任意一个//3.[A-Z]:表示从A到Z的26个字母中的任意一个//4.[0-9]:表示从0到9的10…...

vulnhub靶场之【hacksudo】1.0.1

前言 靶机&#xff1a;hacksudo 192.168.1.45 攻击&#xff1a;kali 192.168.1.16 都是虚拟机环境&#xff0c;桥接模式 主机发现 使用netdiscover或者arp-scan -l扫描 netdiscover -r 192.168.1.1/24信息收集 使用nmap扫描 因为看到2222是ssh服务&#xff0c;所以又扫…...

第4章:颜色和背景 --[CSS零基础入门]

在 CSS 中&#xff0c;颜色和背景属性是用于美化网页元素的重要工具。你可以通过多种方式定义颜色&#xff0c;并且可以设置元素的背景颜色、图像、渐变等。以下是关于如何在 CSS 中使用颜色和背景的一些关键点和示例。 1.颜色表示法 当然&#xff01;以下是使用不同颜色表示…...

Python实现PBKDF2_SHA256加密密码

加密保存格式&#xff1a;pbkdf2_sha256$迭代次数$盐$哈希值 admin可能的结果:pbkdf2_sha256$10000$yzsusUJwrGfonwZzVxlnA$vgf/OgLf5C4wtQLtfNY9d68Hhxgv8eqZ0mwfxCqqeU import os import hashlib import base64 def password_encrypt(password, saltNone, iterations1000…...

React第十三节开发中常见问题之(视图更新、事件处理)

一、视图更新有哪些方案&#xff1f; 1、对于数据变量 正常的增删改查&#xff0c;只会让数据更新&#xff0c;但是不会触发 React 视图的更新&#xff1b; 如&#xff1a; <script lang"jsx">const baseTable [{name:Andy, age: 18, id: 1},{name:Jack, a…...

PyTorch 深度学习框架简介:灵活、高效的 AI 开发工具

PyTorch 深度学习框架简介&#xff1a;灵活、高效的 AI 开发工具 PyTorch 作为一个深度学习框架&#xff0c;以其灵活性、可扩展性和高效性广受欢迎。无论是在研究领域进行创新实验&#xff0c;还是在工业界构建生产级的深度学习模型&#xff0c;PyTorch 都能提供所需的工具和…...

Vue 3 中的计算属性(Computed Properties)详解

目录 Vue 3 中的计算属性&#xff08;Computed Properties&#xff09;详解 引言 什么是计算属性&#xff1f; 创建和使用计算属性 示例 1&#xff1a;基本用法 示例 2&#xff1a;带有 getter 和 setter 的计算属性 计算属性 vs 方法 Vue 3 中的计算属性&#xff08;Co…...

RocketMQ 过滤消息 基于tag过滤和SQL过滤

RocketMQ 过滤消息分为两种&#xff0c;一种tag过滤&#xff0c;另外一种是复杂的sql过滤。 tag过滤 首先创建producer然后启动&#xff0c;在这里创建了字符串的数组tags。字符串数组里面放置了多个字符串&#xff0c;然后去发送15条消息。 15条消息随着i的增长&#xff0c;…...

AI开发: 知识图谱的初识,学会制作知识图谱- Python 机器学习

一、知识图谱的概念 知识图谱是一个通过图结构来表示和组织知识的工具&#xff0c;它将事物、概念和它们之间的关系以图的形式呈现出来&#xff0c;图中的节点代表实体&#xff08;比如人物、地点、事件等&#xff09;&#xff0c;而边代表这些实体之间的各种关系&#xff08;…...

windows系统的环境变量(系统变量)不能编辑可能是这个原因

有些电脑从开始菜单那搜索“环境变量”后是没法编辑系统变量的&#xff0c;只能从设置里面进”环境变量“来进行编辑。 可以观察到系统环境变量即便是点击到了,但还是无法进行编辑...