Win11安装WSL2和Nvidia驱动(2022-12-19)

2023-11-09

前言

以前捣鼓过wsl,即Windows下的Linux子系统,但兼容性依然比不过原生的Linux系统,使用cmake等命令会出现奇怪的问题。

最近听说wsl2出来了,而且也可以在wsl上安装nvidia显卡驱动了,有网友实测跑深度学习模型速度能比Windows的快一倍左右,哈哈这就必须得捣鼓捣鼓了,如果兼容性真的没问题的话,那可比虚拟机或双系统要爽多了~

目前还发现,微软官网对wsl的使用教程也写的非常友好,推荐大家多看看官方教程,毕竟时效性可以保证~~

微软wsl官方教程:https://learn.microsoft.com/zh-cn/windows/wsl/install

更多文章欢迎来我的博客小站看呀,会有更多的技术细节~

系统环境

  • CPU:i5-12450
  • 内存:32G
  • 显卡:3060
  • Windows版本:Windows11 22H2 22621.963

本篇教程后面涉及到WSL2上的GPU加速,经网上帖子的建议,用最新的win11系统可以保证最大的成功率。如果是win10系统,需将win10升级为预览体验版本,建议谨慎折腾!

没特殊需求的,都建议将系统升级为win11再进行尝试。

WSL 1和WSL 2功能对比

从对比图中可以看到,除非对跨OS的文件系统性能有要求,WSL 2是全面优于WSL 1的。官方文档也建议使用VSCode对WSL中的文件进行访问和操作,所以WSL 2搭配VSCode应该是非常棒的组合~

在这里插入图片描述

安装WSL2

管理员模式下打开 PowerShell 或 Windows 命令提示符

查看可用发行版本列表

wsl --list --online

可以看到有Ubuntu-20.04这个发行版本,正是我们需要的~

安装Ubuntu-20.04发行版

wsl --install -d Ubuntu-20.04

这里默认安装的就是wsl2,如果对wsl1有需求,可以查阅官方文档哦,有很详尽的介绍~

安装大概花费5~10分钟左右,视电脑配置和网络状况,耐心等待即可~

提示安装成功后,重启电脑即可完成安装。重启后会默认弹出Linux powershell,设置完用户名和密码,安装正式完成,如下图~

在这里插入图片描述

更新和升级包

sudo apt update && sudo apt upgrade

配置VSCode

在VSCode中安装「 Remote Development 」扩展。除了远程 - SSH 和开发容器扩展,此扩展包还包括 WSL 扩展,使你能够在容器、远程计算机上或 WSL 中打开任何文件夹。

可以通过在WSL2命令行中输入code .就可以直接用VSCode打开Linux中的文件夹进行开发了~

配置GPU加速

安装Nvidia驱动

下载并安装 NVIDIA GPU 的最新驱动程序:https://www.nvidia.com/Download/index.aspx

我的笔记本是3060,所以可以按如下配置搜索

搜索出来后点击下载即可,可以看到驱动版本目前最新是527.56

在这里插入图片描述
在这里插入图片描述

这是您需要安装的唯一驱动程序。不要在 WSL 中安装任何 Linux 显卡驱动程序。 详情参阅Nvidia官方说明:WSL 2 上的
CUDA
入门

再次强调,不要在WSL中安装任何Linux版的Nvidia驱动!

下载完驱动后就可以安装了,我直接选择默认的NVIDIA 显卡驱动和 GeForce Experience选项,安装选项为精简,安装完成后重启下电脑即可~

打开powershell,输入nvidia-smi,可以看到Windows下已经正常输出显卡驱动信息了

输入wsl,可以进入Linux命令行,再次输入nvidia-smi,可以看到Linux环境下,也输出了显卡驱动信息,大功告成~

在这里插入图片描述
在这里插入图片描述

如果在wsl2命令行中输入nvidia-smi发现没有正常输出,而是报错,首先要检查的就是你的Windows版本是不是太低了,还是建议升级到最新的win11系统再进行折腾

因为有网友已经实践,升级到win11后啥都不用做,直接就把wsl2链接到GPU了

所以看到报错先检查Windows版本,千万不要在WSL中安装任何Linux版的Nvidia驱动!不需要的!

安装Cuda Toolkit

接下来就有两种方式了:

一个是按Nvidia官方说明:WSL 2 上的 CUDA 入门上的,在CUDA Toolkit下载界面选择适合WSL的CUDA Toolkit进行安装,如下图所示

在这里插入图片描述

另一种是根据网友的评论,可以依赖于conda和pytorch直接安装gpu版本的pytorch,安装成功后cuda也是可以直接用了。pytorch官方给出的安装命令如下图,可以看到其中也包含了cuda 11.7

在这里插入图片描述

这两种的区别,据有网友说第二种方式安装的CUDA Toolkit貌似只适用于Pytorch,所以如果想将CUDA Toolkit和C++搭配使用的话,还是得要用第一种方式安装一次CUDA Toolkit

但经博主亲自实践,用conda安装的cuda,也是可以直接和C++搭配使用的!

所以接下来的内容就是,用第二种方式安装pytorch的gpu版本,即可将cuda安装好。然后编写一个c++脚本测试一下,都没问题的话,即WSL2的GPU加速配置大功告成~

本节教程和微软wsl官方教程中的GPU加速配置有区别,好像是官方教程里好像设置了Docker什么的,我目前好像还用不到这么深,所以就没参考微软wsl的官方教程

通过PyTorch安装CUDA Toolkit

界面截图如上图所示,PyTorch直接给出了安装命令,如下

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

因此,我们直接在Linux的命令行中,切换到我们自己创建的python虚拟环境,运行以上命令进行安装,以下是conda给出安装前的输出信息,可以看到里面就包含了CUDA Toolkit

## Package Plan ##

  environment location: /home/aayu/miniconda3/envs/py38

  added / updated specs:
    - pytorch
    - pytorch-cuda=11.7
    - torchaudio
    - torchvision


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    cuda-11.7.1                |                0           1 KB  nvidia
    cuda-cccl-11.7.91          |                0         1.2 MB  nvidia
    cuda-command-line-tools-11.7.1|                0           1 KB  nvidia
    cuda-compiler-11.7.1       |                0           1 KB  nvidia
    cuda-cudart-11.7.99        |                0         194 KB  nvidia
    cuda-cudart-dev-11.7.99    |                0         1.1 MB  nvidia
    cuda-cuobjdump-11.7.91     |                0         158 KB  nvidia
    cuda-cupti-11.7.101        |                0        22.9 MB  nvidia
    cuda-cuxxfilt-11.7.91      |                0         293 KB  nvidia
    cuda-demo-suite-12.0.76    |                0         5.0 MB  nvidia
    cuda-documentation-12.0.76 |                0          89 KB  nvidia
    cuda-driver-dev-11.7.99    |                0          16 KB  nvidia
    cuda-gdb-12.0.90           |                0         5.3 MB  nvidia
    cuda-libraries-11.7.1      |                0           1 KB  nvidia
    cuda-libraries-dev-11.7.1  |                0           2 KB  nvidia
    cuda-memcheck-11.8.86      |                0         168 KB  nvidia
    cuda-nsight-12.0.78        |                0       113.6 MB  nvidia
    cuda-nsight-compute-12.0.0 |                0           1 KB  nvidia
    cuda-nvcc-11.7.99          |                0        42.7 MB  nvidia
    cuda-nvdisasm-12.0.76      |                0        47.9 MB  nvidia
    cuda-nvml-dev-11.7.91      |                0          80 KB  nvidia
    cuda-nvprof-12.0.90        |                0         4.3 MB  nvidia
    cuda-nvprune-11.7.91       |                0          64 KB  nvidia
    cuda-nvrtc-11.7.99         |                0        17.3 MB  nvidia
    cuda-nvrtc-dev-11.7.99     |                0        16.9 MB  nvidia
    cuda-nvtx-11.7.91          |                0          57 KB  nvidia
    cuda-nvvp-12.0.90          |                0       114.3 MB  nvidia
    cuda-runtime-11.7.1        |                0           1 KB  nvidia
    cuda-sanitizer-api-12.0.90 |                0        16.6 MB  nvidia
    cuda-toolkit-11.7.1        |                0           1 KB  nvidia
    cuda-tools-11.7.1          |                0           1 KB  nvidia
    cuda-visual-tools-11.7.1   |                0           1 KB  nvidia
    cudatoolkit-10.1.243       |       h036e899_8       427.4 MB  nvidia
    gds-tools-1.5.0.59         |                0        40.9 MB  nvidia
    intel-openmp-2022.1.0      |    h9e868ea_3769         4.5 MB
    lcms2-2.12                 |       h3be6417_0         312 KB
    libcublas-11.10.3.66       |                0       286.1 MB  nvidia
    libcublas-dev-11.10.3.66   |                0       296.4 MB  nvidia
    libcufft-10.7.2.124        |       h4fbf590_0        93.6 MB  nvidia
    libcufft-dev-10.7.2.124    |       h98a8f43_0       197.3 MB  nvidia
    libcufile-1.5.0.59         |                0         754 KB  nvidia
    libcufile-dev-1.5.0.59     |                0          13 KB  nvidia
    libcurand-10.3.1.50        |                0        51.7 MB  nvidia
    libcurand-dev-10.3.1.50    |                0         449 KB  nvidia
    libcusolver-11.4.0.1       |                0        78.7 MB  nvidia
    libcusolver-dev-11.4.0.1   |                0        55.9 MB  nvidia
    libcusparse-11.7.4.91      |                0       151.1 MB  nvidia
    libcusparse-dev-11.7.4.91  |                0       309.5 MB  nvidia
    libnpp-11.7.4.75           |                0       129.3 MB  nvidia
    libnpp-dev-11.7.4.75       |                0       126.6 MB  nvidia
    libnvjpeg-11.8.0.2         |                0         2.2 MB  nvidia
    libnvjpeg-dev-11.8.0.2     |                0         1.9 MB  nvidia
    mkl-2022.1.0               |     hc2b9512_224       129.7 MB
    ninja-1.10.2               |       h06a4308_5           8 KB
    ninja-base-1.10.2          |       hd09550d_5         109 KB
    nsight-compute-2022.4.0.15 |                0       764.0 MB  nvidia
    pillow-9.2.0               |   py38hace64e9_1         666 KB
    pytorch-1.4.0              |py3.8_cuda10.1.243_cudnn7.6.3_0       433.1 MB  pytorch
    pytorch-cuda-11.7          |       h67b0de4_1           3 KB  pytorch
    torchaudio-0.4.0           |             py38         6.1 MB  pytorch
    torchvision-0.5.0          |       py38_cu101         9.1 MB  pytorch
    ------------------------------------------------------------
                                           Total:        3.91 GB

The following NEW packages will be INSTALLED:

  cuda               nvidia/linux-64::cuda-11.7.1-0
  cuda-cccl          nvidia/linux-64::cuda-cccl-11.7.91-0
  cuda-command-line~ nvidia/linux-64::cuda-command-line-tools-11.7.1-0
  cuda-compiler      nvidia/linux-64::cuda-compiler-11.7.1-0
  cuda-cudart        nvidia/linux-64::cuda-cudart-11.7.99-0
  cuda-cudart-dev    nvidia/linux-64::cuda-cudart-dev-11.7.99-0
  cuda-cuobjdump     nvidia/linux-64::cuda-cuobjdump-11.7.91-0
  cuda-cupti         nvidia/linux-64::cuda-cupti-11.7.101-0
  cuda-cuxxfilt      nvidia/linux-64::cuda-cuxxfilt-11.7.91-0
  cuda-demo-suite    nvidia/linux-64::cuda-demo-suite-12.0.76-0
  cuda-documentation nvidia/linux-64::cuda-documentation-12.0.76-0
  cuda-driver-dev    nvidia/linux-64::cuda-driver-dev-11.7.99-0
  cuda-gdb           nvidia/linux-64::cuda-gdb-12.0.90-0
  cuda-libraries     nvidia/linux-64::cuda-libraries-11.7.1-0
  cuda-libraries-dev nvidia/linux-64::cuda-libraries-dev-11.7.1-0
  cuda-memcheck      nvidia/linux-64::cuda-memcheck-11.8.86-0
  cuda-nsight        nvidia/linux-64::cuda-nsight-12.0.78-0
  cuda-nsight-compu~ nvidia/linux-64::cuda-nsight-compute-12.0.0-0
  cuda-nvcc          nvidia/linux-64::cuda-nvcc-11.7.99-0
  cuda-nvdisasm      nvidia/linux-64::cuda-nvdisasm-12.0.76-0
  cuda-nvml-dev      nvidia/linux-64::cuda-nvml-dev-11.7.91-0
  cuda-nvprof        nvidia/linux-64::cuda-nvprof-12.0.90-0
  cuda-nvprune       nvidia/linux-64::cuda-nvprune-11.7.91-0
  cuda-nvrtc         nvidia/linux-64::cuda-nvrtc-11.7.99-0
  cuda-nvrtc-dev     nvidia/linux-64::cuda-nvrtc-dev-11.7.99-0
  cuda-nvtx          nvidia/linux-64::cuda-nvtx-11.7.91-0
  cuda-nvvp          nvidia/linux-64::cuda-nvvp-12.0.90-0
  cuda-runtime       nvidia/linux-64::cuda-runtime-11.7.1-0
  cuda-sanitizer-api nvidia/linux-64::cuda-sanitizer-api-12.0.90-0
  cuda-toolkit       nvidia/linux-64::cuda-toolkit-11.7.1-0
  cuda-tools         nvidia/linux-64::cuda-tools-11.7.1-0
  cuda-visual-tools  nvidia/linux-64::cuda-visual-tools-11.7.1-0
  cudatoolkit        nvidia/linux-64::cudatoolkit-10.1.243-h036e899_8
  gds-tools          nvidia/linux-64::gds-tools-1.5.0.59-0
  intel-openmp       pkgs/main/linux-64::intel-openmp-2022.1.0-h9e868ea_3769
  lcms2              pkgs/main/linux-64::lcms2-2.12-h3be6417_0
  libcublas          nvidia/linux-64::libcublas-11.10.3.66-0
  libcublas-dev      nvidia/linux-64::libcublas-dev-11.10.3.66-0
  libcufft           nvidia/linux-64::libcufft-10.7.2.124-h4fbf590_0
  libcufft-dev       nvidia/linux-64::libcufft-dev-10.7.2.124-h98a8f43_0
  libcufile          nvidia/linux-64::libcufile-1.5.0.59-0
  libcufile-dev      nvidia/linux-64::libcufile-dev-1.5.0.59-0
  libcurand          nvidia/linux-64::libcurand-10.3.1.50-0
  libcurand-dev      nvidia/linux-64::libcurand-dev-10.3.1.50-0
  libcusolver        nvidia/linux-64::libcusolver-11.4.0.1-0
  libcusolver-dev    nvidia/linux-64::libcusolver-dev-11.4.0.1-0
  libcusparse        nvidia/linux-64::libcusparse-11.7.4.91-0
  libcusparse-dev    nvidia/linux-64::libcusparse-dev-11.7.4.91-0
  libnpp             nvidia/linux-64::libnpp-11.7.4.75-0
  libnpp-dev         nvidia/linux-64::libnpp-dev-11.7.4.75-0
  libnvjpeg          nvidia/linux-64::libnvjpeg-11.8.0.2-0
  libnvjpeg-dev      nvidia/linux-64::libnvjpeg-dev-11.8.0.2-0
  mkl                pkgs/main/linux-64::mkl-2022.1.0-hc2b9512_224
  ninja              pkgs/main/linux-64::ninja-1.10.2-h06a4308_5
  ninja-base         pkgs/main/linux-64::ninja-base-1.10.2-hd09550d_5
  nsight-compute     nvidia/linux-64::nsight-compute-2022.4.0.15-0
  pillow             pkgs/main/linux-64::pillow-9.2.0-py38hace64e9_1
  pytorch            pytorch/linux-64::pytorch-1.4.0-py3.8_cuda10.1.243_cudnn7.6.3_0
  pytorch-cuda       pytorch/noarch::pytorch-cuda-11.7-h67b0de4_1
  six                pkgs/main/noarch::six-1.16.0-pyhd3eb1b0_1
  torchaudio         pytorch/linux-64::torchaudio-0.4.0-py38
  torchvision        pytorch/linux-64::torchvision-0.5.0-py38_cu101

贴一张安装过程中的截图哈哈

安装成功!用nvcc -V命令测试一下是否能正常输出,成功输出,如下图

在这里插入图片描述
在这里插入图片描述

导入Pytorch测试一下,正确链接到GPU,并识别出显卡

在这里插入图片描述

测试Nvcc

编写一个cuda脚本

#include "cuda_runtime.h"
#include <stdlib.h>
#include <assert.h>
#include <iostream>

// Device code
__global__ void VecAdd(float* A, float* B, float* C)
{
    int i = threadIdx.x;
    C[i] = A[i] + B[i];
}

// Host code
int main()
{
    int N = 1024;
    size_t size = N * sizeof(float);

    // Allocate input vectors h_A and h_B in host memory
    float* h_A = (float*)malloc(size);
    float* h_B = (float*)malloc(size);
    float* h_C = (float*)malloc(size);

    // Initialize input vectors
    for (size_t i = 0; i < N; i++)
    {
        h_A[i] = 1.;
        h_B[i] = 2.;
    }

    // Allocate vectors in device memory
    float* d_A;
    cudaMalloc(&d_A, size);
    float* d_B;
    cudaMalloc(&d_B, size);
    float* d_C;
    cudaMalloc(&d_C, size);

    // Copy vectors from host memory to device memory
    cudaMemcpy(d_A, h_A, size, cudaMemcpyHostToDevice);
    cudaMemcpy(d_B, h_B, size, cudaMemcpyHostToDevice);

    // Kernel invocation with N threads
    VecAdd<<<1, N>>>(d_A, d_B, d_C);

    // Copy result from device memory to host memory
    // h_C contains the result in host memory
    cudaMemcpy(h_C, d_C, size, cudaMemcpyDeviceToHost);
    for (size_t i = 0; i < N; i++){
        assert(h_C[i] == 3.);
    }
    std::cout << "\t\t\t\tDONE!" << std::endl;

    // Free device memory
    cudaFree(d_A);
    cudaFree(d_B);
    cudaFree(d_C);

    // Free host memory
    free(h_A);
    free(h_B);
    free(h_C);

    return 0;
}

然后在刚刚安装了cuda的python环境下用以下命令编译

nvcc cuda_test_1.cu -o cuda_test_1

编译成功后用./cuda_test_1运行,成功运行如下图

在这里插入图片描述

大功告成!

参考链接

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Win11安装WSL2和Nvidia驱动(2022-12-19) 的相关文章

  • 在 WSL Ubuntu 20.04 上安装 npm 后,我收到消息“/usr/bin/env: ‘bash\r’: No such file or directory”

    运行时我看到以下消息npm install or npm来自终端的命令 执行中node按预期工作 gt npm install usr bin env bash r No such file or directory 2023 年 7 月更
  • Windows平台下C语言控制串口DTR和RTS引脚

    如何在windows平台上控制串口的DTR和RTS引脚 我希望通过升高或降低电压来对其进行位敲击或操作 您需要使用EscapeComm 函数 https learn microsoft com en us windows desktop a
  • subprocess.Popen('start') 失败

    在 python 中运行此命令将导致 WindowsError 指出找不到指定的文件 FAILS import subprocess subprocess Popen start notepad exe 在命令窗口中 它可以工作 start
  • fprintf() 线程安全吗?

    我正在为野人就餐问题的某些变量编写一个 C 解决方案 现在 我创建线程 每个线程都将 FILE 获取到同一个调试文件 在线程内我正在使用 fprintf 进行一些打印 打印的语句不受任何类型的互斥锁等保护 我没有在调试文件中观察到任何交错行
  • 使用taskkill停止Windows服务

    我需要帮助来使用 C 终止 Windows 服务 现在要终止该服务 请使用以下选项 从命令 sc queryex ServiceName 发现后PID服务的 taskkill pid 1234 exemple f 为了便于阅读 但如果您明白
  • 提取证书中主题属性的所有值

    我目前正在使用CertGetNameString http msdn microsoft com en us library windows desktop aa376086 28v vs 85 29 aspx提取每个主题属性的值 如下所示
  • 如何使用 PowerShell 扩展 ZIP 存档(UTF-8 文件名)

    我的 zip 存档有一个文件 P re No l txt 该 zip 可以通过 Windows 文件资源管理器 7 Zip 或我尝试过的任何其他工具很好地扩展 但我不知道如何从 PowerShell 中做到这一点 显然我已经尝试过展开 存档
  • 无法启动 Windows 服务,错误 1064

    我编写了一个在 Win10 上运行的 Windows 服务 它运行得非常好 直到我决定对其进行一些更改 我重写了一些逻辑 在调试和发布配置中进行了测试 一切都很好 然后 我使用卸载了当前版本的服务installutil exe u serv
  • 批处理脚本 FOR 循环仅设置输出的第一个字母 wsl --list -q

    我正在编写一个批处理脚本 将文件从 Windows 目录复制到 WSL 发行版 其中一部分是选择将文件复制到哪个发行版 如果我使用命令wsl list q如果给我以下输出 Ubuntu 22 04 Ubuntu 18 04 我正在尝试使用此
  • Delphi中使用FindVCLWindow调用WinHelp32(WinXP Pro SP3 32bit)

    有什么问题吗 procedure TForm1 VCLHelpClick Sender TObject var Ctrl TWinControl begin Ctrl FindVCLWindow Mouse CursorPos if Ctr
  • 串行 I/O 与 Windows/Windows CE 重叠/不重叠

    抱歉 这不是一个大问题 但更多的是帮助那些在这些特定问题上遇到问题的人 我正在解决的问题需要使用串行 I O 但主要在 Windows CE 6 0 下运行 然而 最近有人问我该应用程序是否也可以在 Windows 下运行 所以我开始着手解
  • C++ 使用 Windows 命名管道

    由于某种原因 桅杆和从属装置都失败了 但是我可以找到任何关于它们如何工作的好例子 所以我不确定我哪里出了问题 在 ConnectNamedPipe 之后 主设备永远不会退出 WaitForSingleObject 并且从设备在第一个 boo
  • 如何在 Ubuntu VirtualBox 中运行 Meteor 应用程序并使用 Windows 主机上的编辑器进行编辑?

    我希望在运行 Ubuntu 的 virtualbox 来宾中运行一个用于开发目的的流星服务器 该项目将位于主机上的一个文件夹内 该文件夹将共享给来宾 该文件夹本身位于 Dropbox 文件夹内 这样我可以在多个虚拟机和工作站之间共享开发 但
  • 什么是WINVER?

    我正在查看一些代码 他们有这一行 define WINVER 0x0501 in stdafx h文件 为什么需要定义WINVER 它如何影响您的代码 有人可以解释一下吗 WINVER 确定构建应用程序所需的最低平台 SDK 这反过来又会在
  • 如何使用Python在Django for Windows中激活虚拟环境?

    我被告知要在 Django for Windows 中激活虚拟环境 我应该尝试 environment path Scripts activate 但是当我输入该命令时 cmd 返回此错误 该系统找不到指定的路径 我通过输入以下命令创建了虚
  • 所有平台上的java

    如果您想用 java 为 Windows Mac 和 Linux 编写桌面应用程序 那么所有这些代码都相同吗 您只需更改 GUI 即可使 Windows 应用程序更像 Windows 等等 如果不深入细节 它是如何工作的 Java 的卖点之
  • Git difftool 未启动外部 DiffMerge 程序

    我一直遵循 戴夫的博客条目 http www davesquared net 2009 05 setting up git difftool on windows html 链接在此answer https stackoverflow co
  • 如何在 Windows 下向 .sh 脚本传递参数?

    我正在尝试在 Windows 下执行 sh 脚本 我安装了 Git 它允许我执行 sh 文件 但是 如果不使用 sh 作为执行前缀 我似乎无法传递任何参数 我的 sh 文件 echo Test 1 如果我用以下命令执行它 gt sh tes
  • 如何为 Windows 构建静态 Qt 库并将其与 Qt Creator 一起使用

    我已经下载了以下 Qt 源 http download qt nokia com qt source qt everywhere opensource src 4 7 3 zip http download qt nokia com qt
  • 用于推送通知的设备令牌

    我正在实施推送通知服务 我需要创建一个数据库来存储 4 个移动平台的所有设备令牌 我想根据他们的平台 iOS Android BlackBerry WP7 来组织它们 但是有什么方法可以区分平台 这样如果我只想向 Android 用户发送消

随机推荐

  • MySQL 性能优化神器 Explain 使用分析

    简介 MySQL 提供了一个 EXPLAIN 命令 它可以对 SELECT 语句进行分析 并输出 SELECT 执行的详细信息 以供开发人员针对性优化 EXPLAIN 命令用法十分简单 在 SELECT 语句前加上 Explain 就可以了
  • SpringBoot之logback-spring.xml详细配置

    logback官网 各种指导文件 有空自己去看 比如 我们需要调整的是布局 直接看Layouts pom xml
  • GIF动态图制作

    GIF动态图制作
  • JavaWeb项目实训——如何做一个jsp网页

    前提 成功安装配置了eclipse Jee tomcat9等 流程 设置编码格式为UTF 8 引入jar包 建立一个jsp文件 引入tomcat 浏览器查看网页 设置编码格式为UTF 8 设置js文件的默认编码格式为UTF 8 在Windo
  • 卸载vivo手机自带的应用程序

    https bbs nubia cn thread 960835 1 1 html vivo应用列表 http bbs xiaomi cn t 13228624 n3 小米可删应用 1 下载刷机大师 2 手机开启usb调试连接到电脑 3 手
  • Already up to date.问题解决

    一般在进行git操作的时候出现Already up to date 问题有两种情况 git合并分支遇到的问题 发现合并上去以后会被覆盖 这个时候你要检查一下自己的写文件顺序 检查顺序 一 当前分支的文件和远程仓库的文件不统一 这时候就需要将
  • 第2章 数据类型,运算符和表达式总结

    一 先举一个简单的例子 首先第1行是我们必不可少的头文件 其次从左至右那个int为返回参数 中间是方法名 可自定义 然后括号里面的是输入参数 那个中括号或者的是一个整体 下一行就是输出函数 括号内是输出内容 需要用双引号标注 然后就用分号结
  • Ajax实现异步请求的整个过程

    var xhr xhr new XMLHttpRequest 创建一个异步对象 xhr open Get test ashx true Get方式括号中的三个参数分别为 1 发送请求的方式 2 样请求的页面 3 是否异步 xhr open
  • 机器学习(一)——K-近邻(KNN)算法

    机器学习 一 K 近邻 KNN 算法 最近在看 机器学习实战 这本书 因为自己本身很想深入的了解机器学习算法 加之想学python 就在朋友的推荐之下选择了这本书进行学习 一 K 近邻算法 KNN 概述 最简单最初级的分类器是将全部的训练数
  • 【Blender】基础物体建模(5)

    Blender 布尔运算不起作用怎么办 当两个物体执行了布尔之后 不起作用 2 先检查每个物体的面是否是封闭的 可以看到是全部封闭的 3 注意 当我们执行了布尔时 有一个物体会变成线框 此时只需将物体属性中的视图显示修改为实体即可 4 开始
  • 2015C蓝桥杯第五题九数组分数

    题目 1 2 3 9 这九个数字组成一个分数 其值恰好为1 3 如何组法 下面的程序实现了该功能 请填写划线部分缺失的代码 include
  • Frontiers in Neuroscience:弥散张量成像(DTI)研究指南

    弥散张量成像 DTI 的研究越来越受到临床医生和研究人员的欢迎 因为它们提供了对脑网络连接的独特见解 然而 为了优化DTI的使用 必须考虑到几个技术和方法方面的问题 因为这些问题会影响到DTI研究结果的准确性和可重复性 本文由葡萄牙学者发表
  • 浅谈list与vector的区别

    目录 前言 一 list和vector为何有区别 二 链表和顺序表 数组 的优缺点 即list和vector优缺点 前言 在学习完list和vector这两个运用最广泛的容器后我们发现这两个容器有许多相似的用法 甚至在大多时候 有时候不行
  • 收集整理近700套微信朋友圈h5小游戏源码合集大放送

    收集整理近700套微信朋友圈小游戏源码合集 HTML5最新微信手机WAP端小游戏源码 内容全部无加密 可以修改成自己的内容 上传空间即可使用 附件下载 http www 51xyyx com 2762 html 空间要求 php mysql
  • 如何将JavaWeb项目部署到Linux服务器

    将JavaWeb项目部署到服务器需要先在服务器安装tomcat 数据库 Java环境 没有安装的同学先装好以上三件套 当装好这三样后就可以开始部署JavaWeb项目了 其实很简单 将项目打包成war文件后上传到tomcat下的webapps
  • 芯片学生党必会的行业英文术语

    转载至芯职业公众号 芯片领域有不少英文缩写术语 对学生党与初学者颇为费解 严重的还会给人 劝退 感 因此 在这个系列 我们将介绍一些常用的英文术语 旨在让大家了解这些英文的同时对芯片产业的全貌有一个大体的认识 并不作过分深究 Wafer D
  • Android 用surfaceview模拟帧动画的效果,解决帧动画的OOM问题

    最近做的项目 客户临时要求改版 我真的是最烦这个 要求跟换主页面的背景 换上新的背景图 要求是动态的 效果 我随便拿的五个图片做的gif 方案 帧动画方案 缺点 1 好像只能imageview才能播放帧动画 2 容易OOM 播三四张还行 播
  • 9款超级实用 VSCode 插件,让 Python 编程轻松愉悦

    1 Python preview Python Preview是一个适用于VSCode的Python代码预览插件 可以将Python代码转换为漂亮的HTML页面 并在浏览器中进行预览 通过该插件 程序员可以在VSCode中方便地预览Pyth
  • 点云Las文件读写c++库 Lasib_msvc2015

    点云Las文件读写c 库 Lasib msvc2015 前言 去官网下载laslib源码 发现编译错误 需要以下的几个依赖库 1 在进行编译之前我们首先需要编译Boost GDAL TIFF LASZIP和GeoTIFF的编译 大家可以参考
  • Win11安装WSL2和Nvidia驱动(2022-12-19)

    文章目录 前言 系统环境 WSL 1和WSL 2功能对比 安装WSL2 更新和升级包 配置VSCode 配置GPU加速 安装Nvidia驱动 安装Cuda Toolkit 通过PyTorch安装CUDA Toolkit 测试Nvcc 参考链