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

Ubuntu22.04系统安装软件、显卡驱动、cuda、cudnn、pytorch

Ubuntu22.04系统安装软件、显卡驱动、cuda、cudnn、pytorch

  • 安装 Nvidia 显卡驱动
  • 安装 CUDA
  • 安装 cuDNN
  • 安装 VSCode
  • 安装 Anaconda 并更换源
  • 在虚拟环境中安装 GPU 版本的 PyTorch
  • Reference

这篇博文主要介绍的是 Ubuntu22.04 系统中软件、显卡驱动、cuda、cudnn、pytorch 等软件和环境的安装和配置,在上一篇博文 Ubuntu22.04 双系统安装、配置及常用设置 中介绍了 Ubuntu22.04 双系统的安装、配置、终端常用操作的快捷键以及一些常用设置(如同步时间、更改启动默认项、添加右击新建文件选项、创建桌面快捷方式等),有需要的可自行点击链接查看。

安装 Nvidia 显卡驱动

本节按照 【超详细】【ubunbu 22.04】 手把手教你安装nvidia驱动,有手就行,隔壁家的老太太都能安装的教程安装的。

  1. 在 英伟达官网 根据选择自己的显卡型号->Search->下载相应的驱动(博主选择的是第一个,大家可以自行下载相应的驱动)NVIDIA-Linux-x86_64-535.146.02.run ,然后复制到主目录(用户目录)下(避免路径中出现中文)。
    在这里插入图片描述

  2. 在终端输入以下命令,更新软件列表并安装一些必要的软件、依赖。

    # 更新软件列表
    sudo apt-get update
    # 安装g++
    sudo apt-get install g++
    # 安装gcc
    sudo apt-get install gcc
    # 安装make
    sudo apt-get install make
    
  3. 禁用默认驱动
    安装 NVIDIA 驱动之前需要禁止系统自带显卡驱动 nouveau,在终端输入下面命令打开 blacklist.conf 文件。

    sudo gedit /etc/modprobe.d/blacklist.conf
    

    在打开的 blacklist.conf 文件末尾输入以下两行代码并保存,然后关闭:

    blacklist nouveau
    options nouveau modeset=0
    

    之后更新一下系统的 initramfs 镜像文件,并在终端中输入:

    sudo update-initramfs -u
    

    完成以上步骤后,重启电脑。然后在终端中输入下面的命令,如果没有输出的话就说明禁用了 nouveau。

    lsmod | grep nouveau
    
  4. 进入 tty 模式
    进入 tty 模式就关闭了图形界面进入命令行模式,因此后续安装推荐使用其他设备阅读该教程进行安装。
    在终端输入下面的命令进入 tty 模式,此时会进入全黑的命令行界面。

    sudo telinit 3
    

    (在 tty 模式下输入sudo telinit 3 命令可以重新打开图形界面)
    进入 tty 模式后,需要输入用户名和密码进行登录,对于一些字符可能显示的为白色菱形可能是编码格式的问题不用管。

  5. 安装驱动
    步骤1 已经将下载后的驱动文件放在了主目录(用户目录),因此在 tty 模式的终端中进入主目录(用户目录),通过 ls 命令查看目录中是否存在下载的 NVIDIA 驱动文件(NVIDIA-Linux-x86_64-535.146.02.run),之后通过下面的命令进行安装即可。

    # 给下载的驱动赋予可执行权限
    sudo chmod 777 NVIDIA-Linux-x86_64-535.146.02.run  
    # 安装 
    # -no-opengl-files:只安装驱动文件,不安装OpenGL文件    
    # -no-x-check:安装驱动时关闭X服务,不设置可能导致安装失败。
    sudo ./NVIDIA-Linux-x86_64-535.146.02.run –no-opengl-files -no-x-check   
    

    安装时会出现以下几个选择界面:

    1. An alternate method of installing the NVIDIA driver was detected. (This is usually a package provided by your distributor.) A driver installed via that method may integrate better with your system than a driver installed by nvidia-installer.
      Please review the message provided by the maintainer of this alternate installation method and decide how to proceed:
      选择 Continue installation
    2. 在 Install NVIDIA’s 32-bit compatibility libraries?
      选择 No
    3. Would you like to run the nvidia-xconfig utility to automatically update your X configuration file so that the NVIDIA X driver dill be used dhen you restart X? Any pre-existing X configuration file will be backed up.
      选择 Yes
    4. Your x configuration file has been successfully updated. Installation of the NVIDIA Accelerated Graphics Driver for Linux-x86_64 (version 535.146.02) is now complete.
      选择 Ok
  6. 安装完成后,返回图形界面并进行验证
    输入下面的命令,再次启动图形界面。

    sudo service gdm3 start
    

    进入图形化界面后,打开终端(Ctrl+Alt+T),并输入下面的命令打印出显卡信息则说明安装成功了。

    nvidia-smi
    

如果安装失败的话或者之后想卸载显卡驱动的,可通过如下的命令卸载显卡驱动。

sudo apt-get remove --purge nvidia*

安装 CUDA

本节按照 ubuntu系统安装CUDA和CUDNN(CUDA安装) 安装的 CUDA。CUDA 官方下载链接为 CUDA Toolkit Archive
注意:通过显卡驱动的nvidia-smi命令,可以看到自己显卡所支持的最高 CUDA 版本,安装 CUDA 时需要注意安装的 CUDA 版本号不能高于这里显示的最高版本号。
注意:本节安装的 CUDA 版本号决定了后续要安装的 PyTorch 的版本号,详情可参见后面博文在虚拟环境中安装 GPU 版本的 PyTorch 部分。
在这里插入图片描述

  1. 在 CUDA官网 CUDA Toolkit Archive 找到自己要下载的 CUDA 的版本号(通过 nvidia-smi 命令显示的是 12.2,因此选择的 CUDA 版本不能高于 12.2,博主选择的是 12.1),然后点击进入下载页面。
    在这里插入图片描述在下载页面,根据需要(红色框)选择相应的版本,然后最下方(蓝色框内)就会出现安装命令。
    在这里插入图片描述

  2. 根据上述下载命令,安装 CUDA
    打开终端,依次执行下面的命令即可安装。

    # 下载CUDA,需要几分钟的时间
    wget https://developer.download.nvidia.com/compute/cuda/12.1.0/local_installers/cuda_12.1.0_530.30.02_linux.run
    # 安装下载的CUDA
    sudo sh cuda_12.1.0_530.30.02_linux.run
    

    安装时会出现以下几个选择界面:
    Do you accept the above CUDA?(accepted/decline/quit):
    输入 accept 按下回车
    在 CUDA Installer 页面,在第一行 Driver 上按下空格取消驱动的安装(因为之前的步骤已经手动安装过驱动了),然后按下方向键下键到 Install 行按下回车即可安装。

  3. 添加环境变量

    # 打开终端(Ctrl+Alt+T),通过gedit编辑器打开.bashrc文件
    gedit ~/.bashrc
    # 在该文件的最后添加下面两行
    # `注意:下面两行命令的cuda-x.x需要根据自己安装的版本号进行修改,如博主安装的是12.1版本,所以下面两行修改为cuda-12.1` 
    export PATH=/usr/local/cuda-12.1/bin:${PATH}
    export LD_LIBRARY_PATH=/usr/local/cuda-12.1/lib64:${LD_LIBRARY_PATH}
    # 使得修改后的环境变量生效
    source ~/.bashrc
    
  4. 验证 CUDA 是否安装成功
    在终端中输入下面的命令查看 CUDA 的版本号,出现版本号就表示安装成了。下面的两条命令均可以查看当前安装的CUDA的版本号,选择其中一条尝试即可。

    nvcc --version
    # 或者
    nvcc -V
    

安装 cuDNN

本节按照 手把手教你安装双系统 windows11+ubuntu 22.04(2)配置基础的深度学习环境 安装 Linux x86_64 (Tar) 的 cuDNN。

  1. 下载 cuDNN 安装包
    根据上面安装的 CUDA 版本 在 cuDNN 官网 cuDNN Archive 选择相应的 CUDA 版本 for 12.x (之前博主安装的 CUDA 版本是 12.1),然后下载 Tar 类型的 cuDNN 安装包(cudnn-linux-x86_64-8.9.6.50_cuda12-archive.tar.xz),并复制到 主目录(用户目录下)
    在这里插入图片描述
  2. 安装
    打开 cuDNN 的官方安装教程 Installation Guide (PDF),可参照它进行安装,其中的.tar 类型的适合所有的Linux系统,.deb 类型的适用于Debian 11, Ubuntu 18.04, Ubuntu 20.04, and 22.04等系统。(官方文档的解释:1.3. Installing on Linux. The following steps describe how to build a cuDNN dependent program. Choose the installation method that meets your environment needs. For example, the tar file installation applies to all Linux platforms. The Debian package installation applies to Debian 11, Ubuntu 18.04, Ubuntu 20.04, and 22.04. The RPM package installation applies to RHEL7, RHEL8, and RHEL9. )
    在这里插入图片描述
    按照教程的 1.3.1 Tar File Installation 部分的安装教程,通过下面的命令进行解压和安装已经下载的安装包 cudnn-linux-x86_64-8.9.6.50_cuda12-archive.tar.xz ,具体过程如下:
    # 解压下载的cuDNN压缩包,官方命令为tar -xvf cudnn-linux-$arch-8.x.x.x_cudaX.Y-archive.tar.xz
    # `将官方命令根据自己下载的cuDNN版本号进行修改cudnn-linux-x86_64-8.9.6.50_cuda12-archive.tar.xz`
    tar -xvf cudnn-linux-x86_64-8.9.6.50_cuda12-archive.tar.xz
    # 分别将解压的文件复制到相应目录
    sudo cp cudnn-*-archive/include/cudnn*.h /usr/local/cuda/include 
    sudo cp -P cudnn-*-archive/lib/libcudnn* /usr/local/cuda/lib64 
    sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*
    # 之后便可以手动删除主目录(用户目录)下解压的cuDNN文件了
    
  3. 验证
    在终端输入以下命令,查看安装的 cuDNN 的版本号,如果输出相应的结果则表明安装成功。
    sudo cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
    

下面是一些其他的一些安装教程,有需要的可以自行点击查看:
ubuntu22.04安装nvidia驱动+cuda11.7+cudnn8.6
Ubuntu 安装 GPU 驱动、CUDA、cuDNN,以及是否安装成功的检测
cuda版本与pytorch版本依赖关系 cuda8.0 pytorch

安装 VSCode

在相应软件的官网下载 Linux 的包,之后在终端进行安装。下面展示 .deb 格式的 VSCode 安装过程,其他 .deb 格式的软件安装过程类似,均使用 sudo dpkg -i XXX(你下载的安装包名).deb 进行安装。
到 VSCode 的官网 https://code.visualstudio.com/ 下载 code_1.85.1-1702462158_amd64.deb 安装包。
将安装包复制到用户目录(主目录)下,进入到终端进行安装。

# 列出当前目录下的文件,查看有无 VSCode 的安装包 code_1.85.1-1702462158_amd64.deb
ls
# 使用命令 sudo dpkg -i XXX(你下载的安装包名).deb 安装下载的安装包 
sudo dpkg -i code_1.85.1-1702462158_amd64.deb

安装完 VSCode 后,可以通过安装插件的方式来扩展 VSCode:点击左侧功能窗口中的 Extensions 中进行扩展。

  • 安装汉化插件:在 Extensions 的搜索框中搜索中文,点击搜索列表中 Chinese(Simplified)中文简体包旁边的 Install 进行安装,然后重启。
  • 安装 Python 插件:在 Extensions 的搜索框中搜索 python,安装 Python 插件,用于运行和调试已有的 Python 程序。
  • 打开文件夹指定相应的 python 环境:
    1. 左上角文件->打开文件夹(代码文件夹),之后点信任所有文件。
    2. 随便点击一个 .py 文件,然后点击界面最下面右边的 Python 后面的版本号,如 3.10.12 64-bit。
    3. 在顶部弹出的选择解释器窗口选择对应的 python 解释器(可以是配好的 conda 虚拟环境中的 python 解释器)。

安装 Anaconda 并更换源

本节参考 Ubuntu安装Anaconda详细步骤(Ubuntu22.04.1,Anaconda3-2023.03) 安装 Anaconda,关于 anaconda3 的下载、安装、换源和使用 进行换源。
在 清华大学开源软件镜像站 下载 Anaconda 安装包,博主下载的是 Anaconda3-2023.03-1-Linux-x86_64.sh ,并将下载的安装包复制到 (主目录)用户目录下。

# 在用户目录下打开终端,查看当前目录下的文件
ls# 安装 anaconda 
bash Anaconda3-2023.03-1-Linux-x86_64.sh# 之后就是输入一连串的Enter,输yes,等待安装完成。
# 安装完成后在用户目录(主目录)下会生成一个anaconda3的文件夹,之后打开终端就可以看到 base 环境了

更换 Anaconda 的源:
(注意:更换源后在 PyTorch官网上 通过 conda 命令安装 pytorch 可能出现下面的错误,所以建议先不更换源安装 pytorch 等。
UnsatisfiableError: The following specifications were found to be incompatible with each other.
PackagesNotFoundError: The following packages are not available from current channels)

# 查看Anaconda中已存在的镜像源,第一次执行会在`主目录(用户目录)`生成一个.condarc文件 
conda config --show channels
# 永久添加镜像源
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
# 设置搜索时显示的通道地址
conda config --set show_channel_urls yes

在虚拟环境中安装 GPU 版本的 PyTorch

打开终端,使用 anaconda 创建虚拟环境并安装 GPU 版本的 PyTorch 环境,PyTorch官方网址 。根据之前安装的 CUDA 的版本号,选择对应的安装命令(如果安装的)

# 创建一个名为py39的虚拟环境,并指定了python的版本为3.9
conda create --name py39 python=3.9
# 然后输入y安装相应的包,即可创建该虚拟环境# 激活该虚拟环境
conda activate py39

下面在虚拟环境中根据 PyTorch官方网址 的命令进行安装, 安装时需要主要注意安装的 pytorch 的版本要和已经安装的 CUDA 的版本匹配,推荐使用官网提供的安装命令进行安装(根据 CUDA 的版本号选择对应的安装命令)。
具体步骤:在 PyTorch官方网址 选择 Linux、Conda、Python 以及已经安装好的 CUDA 版本号得到的安装命令(下图红色框圈出的命令)进行安装(如要安装低版本的 CUDA 对应的 pytorch,点击下图蓝色框圈出的链接根据安装的 CUDA 版本号寻找相应的 conda 安装命令即可)。
在这里插入图片描述
使用下面的命令安装 pytorch,该命令中的 -c 后面为安装包的源,-c pytorch 表示使用官方源,可能出现速度慢等问题,耐心等待即可。

conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia

安装好之后在 Python 环境中进行验证,在 conda 的安装完 pytorch 的虚拟环境终端,输入 python 进入该环境下的 Python 开发环境输入下面的命令进行验证(# 行为备注行 ,为了方便理解,不用输入到终端中)。

# 导入torch包
import torch
# 查看pytorch的版本号(version前后各有2个_)
torch.__version__ 
# 查看CUDA是否可用(GPU是否可用) 
# `如果下面的命令输出的结果显示为False,则安装的可能是cpu版本的pytorch,可通过下面方法进行解决`
torch.cuda.is_available()
# 查看当前使用的GPU序号
torch.cuda.current_device()
# 查看可用的GUDA数量(GPU数量)
torch.cuda.device_count()
# 查看cuda版本号
torch.version.cuda
# 查看cnDNN版本号
torch.backends.cudnn.version()# 如果上述命令均没问题,则GPU版本的PyTorch等安装成功,退出当前的Python开发环境即可
exit()

如果使用上述 pytorch 官方命令总是安装 cpu 版本的 pytorch(通过 conda list 检查发现 pytorch 是 py3.x_cpu_0),那么可能有以下几种原因:

  1. 参照 下载pytorch时总是下成CPU版本的一种解决办法, 由于当前(虚拟)环境内的 python 版本过低,可以在 https://download.pytorch.org/whl/torch_stable.html 上查看对应 cuda 版本所需的 python 版本。
    解决方法:创建虚拟环境时参照上述网址指定 python 版本号。
  2. 参照 安装pytorch-gpu时会默认安装cpu版本, 在安装 pytorch 时会默认安装一个名为 cpuonly 的库,这使 pytorch 以及 torchvision 的版本都默认为 cpu 版,即便你在安装时给出cudatoolkit 版本也无效。
    解决方法:通过 conda list 检查是否存在 cpuonly 的库,若存在则可通过 conda uninstall cpuonly 卸载,此时 cpu 版本的 pytorch 会 转成 gpu 版本。若通过 conda list 检查发现并没有 cpuonly 库但 pytorch 版本仍为 cpu(pytorch 是 py3.x_cpu_0),则只需先将 conda install cpuonly 安装 cpuonly 库,再 conda uninstall cpuonly 卸载 cpuonly 库即可。

参考链接:
pytorch cuda安装报错的解决方法
下载pytorch时总是下成CPU版本的一种解决办法
安装pytorch-gpu时会默认安装cpu版本

Reference

【超详细】【ubunbu 22.04】 手把手教你安装nvidia驱动,有手就行,隔壁家的老太太都能安装
ubuntu系统安装CUDA和CUDNN(CUDA安装)
手把手教你安装双系统 windows11+ubuntu 22.04(2)配置基础的深度学习环境
ubuntu22.04安装nvidia驱动+cuda11.7+cudnn8.6
Ubuntu 安装 GPU 驱动、CUDA、cuDNN,以及是否安装成功的检测
cuda版本与pytorch版本依赖关系 cuda8.0 pytorch
Ubuntu安装Anaconda详细步骤(Ubuntu22.04.1,Anaconda3-2023.03)
关于 anaconda3 的下载、安装、换源和使用

相关文章:

Ubuntu22.04系统安装软件、显卡驱动、cuda、cudnn、pytorch

Ubuntu22.04系统安装软件、显卡驱动、cuda、cudnn、pytorch 安装 Nvidia 显卡驱动安装 CUDA安装 cuDNN安装 VSCode安装 Anaconda 并更换源在虚拟环境中安装 GPU 版本的 PyTorchReference 这篇博文主要介绍的是 Ubuntu22.04 系统中软件、显卡驱动、cuda、cudnn、pytorch 等软件和…...

基于矩阵乘的CUDA编程优化过程

背景:网上很多关于矩阵乘的编程优化思路,本着看理论分析万遍,不如实际代码写一遍的想法,大概过一下优化思路。 矩阵乘的定义如下,约定矩阵的形状及存储方式为: A[M, K], B[K, N], C[M, N]。 CPU篇 朴素实现方法 按照…...

layuiadmin新建tabs标签页,点击保存,打开新的标签页并刷新

用的layuiamin前端框架 需求:新增的页面为一个标签页,保存后,需要刷新列表 1、新建customMethod.js文件,自定义自己的方法 layui.define(function (exports) {var $ layui.$var customMethod {// 表单点击保存后,…...

Rxjs概念 学习

RxJS 是一个流式编程库,用于处理异步数据流和事件流。它基于观察者模式和迭代器模式,提供了丰富的操作符和工具,用于处理和操作数据流。RxJS 的核心概念包括可观察对象(Observable)、观察者(Observer&#…...

pillow像型学操作(转载笔记) --- 西北乱跑娃

Opencv、Matplotlib(plt)、Pillow(PIL)、Pytorch读取数据的通道顺序 需注意:Pillow加载图像后的尺寸是二维,图形化是三维,但无法打印三维尺寸。 详细区别: Opencv:uint8的ndarray数据,通道顺序[h, w, c],颜色通道BGR。 导入模块:import cv2 (1)cv2.imread() (2)cv…...

JS作用域链和闭包

JS作用域链和闭包 引题作用域链词法作用域闭包思考题 闭包如何回收 引题 有没有人跟我一样,面试中要是问基础,最怕遇到的就是闭包问题,闭包在 JavaScript 中几乎无处不在,理解作用域链是理解闭包的基础,同时作用域链和…...

【Spring实战】15 Logback

文章目录 1. 依赖2. 配置3. 打印日志4. 启动程序5. 验证6. 调整日志级别7. 代码详细总结 Spring 作为一个现代化的 Java 开发框架,提供了很多便利的功能,其中包括灵活而强大的日志记录。本文将介绍如何结合 Spring 和 Logback 配置和使用日志&#xff0c…...

Stable Diffusion WebUI安装合成面部说话插件SadTalker

SadTalker可以根据一张图片、一段音频,合成面部说这段语音的视频。图片需要真人或者接近真人。 安装ffmpeg 下载地址: https://www.gyan.dev/ffmpeg/builds/ 下载ffmpeg-git-full.7z 后解压,将解压后的目录\bin添加到环境变量的Path中。 在…...

CSS 纵向顶部往下动画

<template><div class"container" mouseenter"startAnimation" mouseleave"stopAnimation"><!-- 旋方块 --><div class"box" :class"{ scale-up-ver-top: isAnimating }"><!-- 元素内容 -->&…...

科普:敏捷估算为什么用斐波那契数列

被一个同学问&#xff1a;敏捷估算为什么用斐波那契数列&#xff1f;有什么意义&#xff1f; 简单说说我自己的简介&#xff1a; 敏捷开发中使用斐波那契数列来估算的原因是&#xff0c;斐波那契数列可以用于估算任务的难度级别&#xff0c;并帮助团队预测完成任务所需的时间…...

HarmonyOS资源分类与访问

资源分类与访问 应用开发过程中&#xff0c;经常需要用到颜色、字体、间距、图片等资源&#xff0c;在不同的设备或配置中&#xff0c;这些资源的值可能不同。 应用资源&#xff1a;借助资源文件能力&#xff0c;开发者在应用中自定义资源&#xff0c;自行管理这些资源在不同…...

message: 没有找到可以构建的 NPM 包,请确认需要参与构建的 npm 都在 `miniprogra

第一步&#xff1a;修改 project.config.json 文件 "packNpmRelationList": [{"packageJsonPath": "./package.json","miniprogramNpmDistDir": "./miniprogram/"}], "packNpmManually": true 第二步&#xff1a;…...

基于C#的机械臂欧拉角与旋转矩阵转换

欧拉角概述 机器人末端执行器姿态描述方法主要有四种&#xff1a;旋转矩阵法、欧拉角法、等效轴角法和四元数法。所以&#xff0c;欧拉角是描述机械臂末端姿态的重要方法之一。 关于欧拉角的历史&#xff0c;由来已久&#xff0c;莱昂哈德欧拉用欧拉角来描述刚体在三维欧几里…...

【百度前端三面面试题】

在某乎看到的《百度前端三面面试题全部公开&#xff0c;三面的最后一个问题令我窒息》 其中下面三个问题没有给出答案&#xff0c;我虽然是前端出身&#xff0c;但也面试过一些人&#xff0c;大概分析一下这些问题。 面试中问这几个问题的目的是什么 &#xff0c;怎么回答 上…...

【Java面试题】HTTP与 HTTPS 的区别

HTTP 与 HTTPS 的区别 &#xff1a; 主要体现在三个方面&#xff0c;分别是 信息传输安全、证书和身份验证 、连接方式 信息传输安全&#xff1a; HTTP 是超文本传输协议&#xff0c;HTTP下的信息是明文传输的&#xff0c;因此使用HTTP协议可能导致信息被截获或者第三方恶意…...

vue3 v-model语法糖

vue2 中父子组件数据同步 父→子 子→父 如何实现&#xff1f; v-model“count” 或者 xxx.sync“msg” v-model 语法糖 完整写法 :value“count” 和 input“count$event” xxx.sync 语法糖 完整写法 :xxx“msg” 和 update:xxx“msg$event” 现在&#xff1a;一个 v-mo…...

【k8s】deamonset文件和说明

目录 deamonset的相关命令 deamonset的定义 deamonset的使用场景 deamonset的例子 deamonset字段说明 serviceAccountName DaemonSet的结构及其各个部分的作用 deamonset的相关命令 #查看<name-space>空间内有哪些deamonset kubectl get DaemonSet -n <na…...

Zookeeper-Zookeeper特性与节点数据类型详解

1.Zookeeper介绍 ZooKeeper 是一个开源的分布式协调框架&#xff0c;是Apache Hadoop 的一个子项目&#xff0c;主要用来解决分布式集群中应用系统的一致性问题。Zookeeper 的设计目标是将那些复杂目容易出错的分布式一致性服务封装起来&#xff0c;构成一高效可靠的原语集&…...

云计算复习提纲

第一章 大数据的概念&#xff1a;海量数据的规模巨大到无法通过目前主流的计算机系统在合理时间内获取、存储、管理、处理并提炼以帮助使用者决策 大数据的特点&#xff1a;①数据量大&#xff0c;存储的数据量巨大&#xff0c;PB级别是常态&#xff1b;②多样&#xff0c;数…...

Vue-响应式数据

一、ref创建基本类型的响应式数据 vue3可以使用ref、reactive去定义响应式数数据。 知识点汇总 使用ref需要先引入ref&#xff0c;import {ref} from vue在模板 template 中使用了添加ref 的响应式数据&#xff0c;变量的后面不用添加.value所有js代码里面&#xff0c;去操作r…...

(十)学生端搭建

本次旨在将之前的已完成的部分功能进行拼装到学生端&#xff0c;同时完善学生端的构建。本次工作主要包括&#xff1a; 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

【第二十一章 SDIO接口(SDIO)】

第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?

Otsu 是一种自动阈值化方法&#xff0c;用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理&#xff0c;能够自动确定一个阈值&#xff0c;将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章&#xff1f;AI自动生成&#xff0c;效率提升10倍&#xff01; 支持多语言、自动配图、定时发布&#xff0c;让内容创作更轻松&#xff01; AI内容生成 → 不想每天写文章&#xff1f;AI一键生成高质量内容&#xff01;多语言支持 → 跨境电商必备&am…...

服务器--宝塔命令

一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行&#xff01; sudo su - 1. CentOS 系统&#xff1a; yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...

代码随想录刷题day30

1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币&#xff0c;另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额&#xff0c;返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...

MySQL JOIN 表过多的优化思路

当 MySQL 查询涉及大量表 JOIN 时&#xff0c;性能会显著下降。以下是优化思路和简易实现方法&#xff1a; 一、核心优化思路 减少 JOIN 数量 数据冗余&#xff1a;添加必要的冗余字段&#xff08;如订单表直接存储用户名&#xff09;合并表&#xff1a;将频繁关联的小表合并成…...

wpf在image控件上快速显示内存图像

wpf在image控件上快速显示内存图像https://www.cnblogs.com/haodafeng/p/10431387.html 如果你在寻找能够快速在image控件刷新大图像&#xff08;比如分辨率3000*3000的图像&#xff09;的办法&#xff0c;尤其是想把内存中的裸数据&#xff08;只有图像的数据&#xff0c;不包…...

elementUI点击浏览table所选行数据查看文档

项目场景&#xff1a; table按照要求特定的数据变成按钮可以点击 解决方案&#xff1a; <el-table-columnprop"mlname"label"名称"align"center"width"180"><template slot-scope"scope"><el-buttonv-if&qu…...

Linux部署私有文件管理系统MinIO

最近需要用到一个文件管理服务&#xff0c;但是又不想花钱&#xff0c;所以就想着自己搭建一个&#xff0c;刚好我们用的一个开源框架已经集成了MinIO&#xff0c;所以就选了这个 我这边对文件服务性能要求不是太高&#xff0c;单机版就可以 安装非常简单&#xff0c;几个命令就…...