在Windows 11 中安装和使用 WSL 2

2023-11-04

列出可安装的发行版/分发

在安装 WSL 之前,可以通过以下命令查看可供安装的发行版:

wsl --list --online

在这里插入图片描述

安装WSL 2

参考:使用 WSL 在 Windows 上安装 Linux:https://learn.microsoft.com/zh-cn/windows/wsl/install

如果不指定发行版,则该命令将安装 WSL 和 Linux 的默认 Ubuntu 发行版:

wsl --install

如果要安装指定的 Linux 发行版,需要添加参数 --distribution

wsl --install --distribution <发行版名称>

例如要安装 Ubuntu-22.04

wsl --install --distribution Ubuntu-22.04

安装时可能会报错,部分错误如下所示

  1. WslRegisterDistribution failed with error: 0x80370114 Error: 0x80370114 ???
  2. 由于未安装所需的特性,无法启动操作。Error code: Wsl/Service/CreateInstance/CreateVm/HCS_E_SERVICE_NOT_AVAILABLE

这时先重启电脑,然后输入刚才安装的发行版的名称:

Ubuntu-22.04

如果能成功打开,那么第一次打开时需要设置用户名和密码,设置好后就能正常使用了。

如果报错是找不到xxx文件、无法挂载xxx文件等,那么输入命令列出当前已下载到电脑上的发行版:

wsl -l -v

卸载刚才打开失败的发行版:

wsl --unregister <发行版名称>

再重新安装:

wsl --install --distribution <发行版名称>

常用命令

显示帮助

wsl --help

启动分发

输入 wsl 会启动默认分发

加上参数 -d <发行版名称> 会启动指定分发,例如启动 Ubuntu-22.04

wsl -d Ubuntu-22.04

如果在 C:\Users\admin\AppData\Local\Microsoft\WindowsApps 中有特定分发的exe文件,那么输入文件名如 ubuntu2204 则会启动对应的分发:
在这里插入图片描述
在这里插入图片描述

从powershell中退出分发

Ctrl+D 或输入 exit 或直接关闭powershell窗口

关闭正在运行的分发

wsl --terminate <发行版名称>

wsl -t <发行版名称>

立即终止所有正在运行的分发和 WSL 2轻型虚拟机。

wsl --shutdown

更新wsl

wsl --update

使用VSCode连接WSL

在扩展中搜索 remote ,安装Remote Development:
在这里插入图片描述

在远程资源管理器中找到要连接的发行版连接:
在这里插入图片描述

如果在同步插件时出现因网络问题下载失败的情况,尝试关闭防火墙然后重新下载。

设置代理

既然是在Windows上使用,那么共用同一个代理最方便,工具教程见链接(一定要开启TUN模式):https://bbs.huaweicloud.com/blogs/394280

在Windows上安装好后,只要设置好TUN模式,无需在wsl中进行任何设置,即可使用Windows上开启的代理。

换源

sudo sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
sudo sed -i 's/security.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
sudo apt update

WSL 与 Windows 11 共享文件

在文件资源管理器中输入 Linux 即可找到文件:
在这里插入图片描述

导入、导出 WSL 发行版

通过导入和导出,可以实现 WSL 发行版的备份、迁移,类似于 Docker 中将容器导出为 *.tar 文件。

参考:

  1. 企业环境:为公司设置适用于 Linux 的 Windows 子系统
  2. 导入要与 WSL 一起使用的任何 Linux 发行版

导出

  1. 关闭要导出的发行版
    使用 wsl --shutdown 一次关闭所有发行版,或使用 wsl -t <发行版名称> 关闭特定的发行版
  2. 执行导出命令:
    wsl --export <发行版名称> <tar文件保存路径>
    
    例如要导出一个名为 Ubuntu-22.04 的发行版,保存到 C:\Users\admin\Downloads\Ubuntu-2204.tar 中,那么命令为:
    wsl --export Ubuntu-22.04 C:\Users\admin\Downloads\Ubuntu-2204.tar
    
    在这里插入图片描述

导入

  1. 新建一个文件夹用于存储导入后的发行版的数据,例如我创建的文件夹路径为 C:\MyData\wslDistroStorage

  2. 执行导入命令:

    wsl --import <发行版名称> <发行版数据保存路径> <tar文件保存路径>
    
    • <发行版名称> 是自定义的名称,可以叫 Ubuntu-22.04 ,也可以叫 Ubuntu_22.04
    • <发行版数据保存路径> 就是第一步中创建的文件夹的路径
    • <tar文件保存路径> 是导出时 *.tar 文件的路径。

    例如导入我刚才导出的 Ubuntu-2204.tar ,并将导入的发行版命名为 Ubuntu_22.04

    wsl --import Ubuntu_22.04 C:\MyData\wslDistroStorage C:\Users\admin\Downloads\Ubuntu-2204.tar
    

    *标记的 Ubuntu-22.04 是wsl默认启动的发行版,是前面通过 wsl --install --distribution Ubuntu-22.04 命令安装的版本,下面的 Ubuntu_22.04 是刚才导入的发行版:
    在这里插入图片描述

  3. 设置默认用户
    导入的发行版启动之后默认是 root 用户,想要设置为指定用户(前提是存在),就需要修改 /etc/wsl.conf ,关于这个文件的更多信息见WSL 中的高级设置配置

    echo -e "[user]\ndefault=<用户名>" >> /etc/wsl.conf
    

    例如指定为 rog ,那么命令为:

    echo -e "[user]\ndefault=rog" >> /etc/wsl.conf
    

    关闭发行版,再次启动后就会更改成功

安装Docker Engine

参考:https://zhaoliangcheng.blog.csdn.net/article/details/130251071

  1. 更新apt包索引并安装包以允许apt通过 HTTPS 使用存储库:
sudo apt-get update
sudo apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release
  1. 添加 Docker 的官方 GPG 密钥:
sudo mkdir -p /etc/apt/keyrings

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
  1. 使用以下命令设置存储库:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  1. 更新apt包索引,安装最新版本的 Docker Engine、containerd 和 Docker Compose
sudo chmod a+r /etc/apt/keyrings/docker.gpg

sudo apt-get update

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
  1. 创建 docker 组
sudo groupadd docker
  1. 将用户添加到 docker 组中
sudo usermod -aG docker $USER
  1. 设置为开机自启
sudo systemctl enable docker.service
sudo systemctl enable containerd.service
  1. 重启wsl
    关闭原来正在运行wsl的powershell窗口,然后再打开新的powershell窗口,执行以下命令:
wsl --shutdown

使用GPU

需要在Windows中安装最新的显卡驱动,不能在WSL中安装显卡驱动

为WSL中的Docker启用GPU

参考官方文档:WSL 中 ML 的 GPU 加速入门

与在Ubuntu中安装一样,依次执行下列命令即可:

distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-docker-keyring.gpg
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-docker-keyring.gpg] https://#g' | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update
sudo apt-get install -y nvidia-docker2

直接在WSL中使用CUDA

参考官方文档:CUDA Support for WSL 2

使用Docker进行开发

参考:https://zhaoliangcheng.blog.csdn.net/article/details/126125106

wsl 中新建一个文件夹例如命名为 challenge_cup_docker,然后在该文件夹内进行之后的操作:

cd && mkdir challenge_cup_docker && cd challenge_cup_docker

制作镜像

如果有现成的镜像用,可以跳过这一步。

以制作一个基于官方的ROS 2 Humble镜像的自定义镜像为例。

Dockerfile

新建一个 Dockerfile 文件:

FROM osrf/ros:humble-desktop-full

RUN /bin/bash -c "sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list \ 
    && sed -i 's/security.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list \ 
    && apt update && apt upgrade -y && \
    DEBIAN_FRONTEND=noninteractive apt install tzdata git openssh-server vim zsh \ 
    build-essential pkg-config libavcodec-dev libavformat-dev libswscale-dev \ 
    libssl-dev openssl sudo net-tools inetutils-ping \ 
    usbutils x11-apps language-pack-zh* iproute2 ninja-build -y && \
    apt clean"

然后构建镜像,我使用了阿里云的容器镜像服务托管镜像(教程见https://zhaoliangcheng.blog.csdn.net/article/details/125810516),所以镜像名称命名为 registry.cn-hangzhou.aliyuncs.com/2h1c_aliyun/challenge_cup_docker:latest

docker build -t=registry.cn-hangzhou.aliyuncs.com/2h1c_aliyun/challenge_cup_docker:latest .

使用容器

新建一个 docker-compose.yml 文件,各参数具体含义见https://zhaoliangcheng.blog.csdn.net/article/details/126125106

允许运行GUI程序

参考:https://zhaoliangcheng.blog.csdn.net/article/details/125771897

wsl 中安装x11-xserver-utils

sudo apt install x11-xserver-utils

然后执行命令:

xhost +

之后在容器中启动GUI程序,就能正常显示窗口了。

docker-compose.yml

version: '3.7'
name: challenge_cup_docker
services:
  challenge_cup_docker:
    init: true
    container_name: challenge_cup_docker
    network_mode: "host"
    privileged: true
    image: registry.cn-hangzhou.aliyuncs.com/2h1c_aliyun/challenge_cup_docker:latest
    command: bash -c "service ssh start && tail -f /dev/null"
    volumes:
      - "/tmp/.X11-unix:/tmp/.X11-unix:rw"
      - "/dev:/dev:rw"
      - "./Environments:/root/Environments:rw"
      - "./SHARE:/root/SHARE:rw" 
      - "/mnt:/mnt:rw"
      - "/tmp:/tmp:rw"
    devices:
      - "/dev:/dev:rw"
    working_dir: /root
    environment:
      - DISPLAY=$DISPLAY
      - LC_ALL=C.UTF-8
  • 为了防止因容器变动导致容器内需要保存的文件丢失(例如代码),可以将文件放在 /root/SHARE 中,这个目录对应 challenge_cup_docker 中的 SHARE (相当于共享文件夹),wsl和容器都能访问这个文件夹

创建、启动

第一次启动时需要先创建容器:

docker compose up -d

之后在你的电脑中会创建一个名为 challenge_cup_docker 的容器,每次启动容器只需运行:

docker start challenge_cup_docker

关闭

容器只会关闭,不会被删除,里面的数据也不会丢失:

docker stop challenge_cup_docker

删除

删除容器,里面的数据会丢失:

docker compose down

重置

先删除,后创建:

docker compose down
docker compose up -d

进入

docker exec -it challenge_cup_docker bash

或使用ssh命令连接:

ssh -p 2222 root@localhost -Y

退出

Ctrl+D 或输入 exit 或直接关闭窗口

导出/保存容器

先关闭容器:

docker stop challenge_cup_docker

然后在当前目录下导出为tar包:

docker export -o=challenge_cup_docker.tar challenge_cup_docker

导入为镜像并创建新的容器

在tar包所在目录执行:

docker import challenge_cup_docker.tar registry.cn-hangzhou.aliyuncs.com/2h1c_aliyun/challenge_cup_docker:latest

原来的 registry.cn-hangzhou.aliyuncs.com/2h1c_aliyun/challenge_cup_docker:latest 镜像名称会变为,可以通过 docker images -a命令查看:
在这里插入图片描述

旧镜像就没用了,可以先删除旧容器,然后用 docker rmi <镜像ID> 命令删除旧镜像:
在这里插入图片描述

然后在 docker-compose.yml 所在目录执行:

docker compose up -d

这样会删除原来的容器,然后创建新的容器,但 SHAREEnvironments 文件夹中的文件不会丢失

使用VSCode连接容器

与前面所讲的 使用VSCode连接WSL 类似,先用VSCode连接到wsl,再在左侧的远程资源管理器中选择 开发容器 ,右键选择 附加到容器 即可连接:
在这里插入图片描述
或者在 远程 中新建ssh连接:
在这里插入图片描述

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

在Windows 11 中安装和使用 WSL 2 的相关文章

  • PHP 致命错误:未找到“MongoClient”类

    我有一个使用 Apache 的网站 代码如下 当我尝试访问它时 我在 error log 中收到错误 PHP Fatal Error Class MongoClient not found 以下是可能错误的设置 但我认为没有错误 php i
  • 使用taskkill停止Windows服务

    我需要帮助来使用 C 终止 Windows 服务 现在要终止该服务 请使用以下选项 从命令 sc queryex ServiceName 发现后PID服务的 taskkill pid 1234 exemple f 为了便于阅读 但如果您明白
  • 在 Linux 中禁用历史记录 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 要在 Linux 环境中禁用历史记录 我执行了以下命令 export HISTFILESIZE 0 export HISTSIZE 0 u
  • 在Linux上编译C# + WPF以便在Windows上运行

    我有一个 C 应用程序 其中某些部分是使用 WPF 编写的 Mono 不支持 可以在 Linux 上编译这个应用程序吗 最终 该应用程序将在 Windows 上运行 但它是更大框架的一部分 并且我们的整个构建过程在 Linux 上运行 因此
  • xsel -o 对于 OS X 等效项

    是否有一个等效的解决方案可以在 OS X 中抓取选定的文本 就像适用于 Linux 的 xsel o 一样 只需要当前的选择 这样我就可以在 shell 脚本中使用文本 干杯 埃里克 你也许可以安装xsel在 MacOS 上 更新 根据 A
  • 如何修复“iptables:没有该名称的链/目标/匹配”?

    我在我的 Linux 嵌入式系统上构建并安装了 iptables 如果我列出所有规则 则一切正常 iptables list Chain INPUT policy ACCEPT target prot opt source destinat
  • 使用 find - 删除除任何一个之外的所有文件/目录(在 Linux 中)

    如果我们想删除我们使用的所有文件和目录 rm rf 但是 如果我希望一次性删除除一个特定文件之外的所有文件和目录怎么办 有什么命令可以做到这一点吗 rm rf 可以轻松地一次性删除 甚至可以删除我最喜欢的文件 目录 提前致谢 find ht
  • 为什么我收到“无法进行二进制日志记录”的信息。在我的 MySQL 服务器上?

    当我今天启动 MySQL 服务器并尝试使用以下命令进行一些更改时用于 MySQL 的 Toad http www quest com toad for mysql 我收到此消息 MySQL 数据库错误 无法进行二进制日志记录 消息 交易级别
  • 在 Linux 上更快地分叉大型进程?

    在现代 Linux 上达到与 Linux 相同效果的最快 最好的方法是什么 fork execve combo 从一个大的过程 我的问题是进程分叉大约 500MByte 大 并且一个简单的基准测试只能从进程中实现约 50 个分叉 秒 比较最
  • awk 子串单个字符

    这是columns txt aaa bbb 3 ccc ddd 2 eee fff 1 3 3 g 3 hhh i jjj 3 kkk ll 3 mm nn oo 3 我可以找到第二列以 b 开头的行 awk if substr 2 1 1
  • Android:ANT 构建失败,并显示 google-play-services-lib:“解析为没有项目的 project.properties 文件的路径”

    我正在尝试使用 ANT 构建我的应用程序 但在包含 google play services lib 库项目后 我惨遭失败 Step 1 我在 project properties 文件中设置了对库项目的引用 android library
  • 如何检测并找出程序是否陷入死锁?

    这是一道面试题 如何检测并确定程序是否陷入死锁 是否有一些工具可用于在 Linux Unix 系统上执行此操作 我的想法 如果程序没有任何进展并且其状态为运行 则为死锁 但是 其他原因也可能导致此问题 开源工具有valgrind halgr
  • 如何通过命令行将Flash .fla编译为.swf? [复制]

    这个问题在这里已经有答案了 如何在基于 Windows 的操作系统上通过命令行将 Flash fla 文件编译为 swf 需要安装的命令行工具就可以了 谁能建议我该怎么做 以直接的方式 谢谢 您可以使用JSFL为 Flash IDE 编写脚
  • 如何使用 bash 锁定文件

    我有一个任务从远程服务器同步目录 rsync av email protected cdn cgi l email protection srv data srv data 为了使其定期运行并避免脚本 reEnter 问题 我使用 rsyn
  • 应用程序无缘无故地被杀死。怀疑 BSS 高。如何调试呢?

    我已经在CentOs6 6中成功运行我的应用程序 最近 硬件 主板和内存 更新了 我的应用程序现在毫无理由地被杀死 root localhost PktBlaster PktBlaster Killed 文件和 ldd 输出 root lo
  • 从 Python 下载/安装 Windows 更新

    我正在编写一个脚本来自动安装 Windows 更新 我可以将其部署在多台计算机上 这样我就不必担心手动更新它们 我想用 Python 编写这个 但找不到任何关于如何完成此操作的信息 我需要知道如何搜索更新 下载更新并从 python 脚本安
  • Jenkins中找不到环境变量

    我想在詹金斯中设置很多变量 我试过把它们放进去 bashrc bash profile and profile of the jenkins用户 但 Jenkins 在构建发生时找不到它们 唯一有效的方法是将所有环境变量放入Jenkinsf
  • Rails Windows Vagrant 响应时间非常慢

    我在跑 Vagrant 1 7 1 Rails 4 1 4 Thin 1 6 1 Windows 7 每个静态文件的发送时间都超过一秒 在我的 PC 上加载一个页面可能需要大约 20 秒 而在同事的 Linux 机器上则只需瞬间 有一些帖子
  • 在 Windows 7 上的 Sourcetree 中比较 Word docx 文件

    我一直在尝试获取在 Windows 7 上的 Sourcetree 中工作的 Word docx 文件的文本差异 我已按照此处的说明进行操作将 Microsoft Word 与 git 结合使用 http blog martinfenner
  • 如何创建向后兼容 Windows 7 的缩放和尺寸更改每显示器 DPI 感知应用程序?

    我是 WPF 和 DPI 感知 API 的新手 正在编写一个在 Windows 7 8 1 和 10 中运行的应用程序 我使用具有不同每个显示器 DPI 设置的多个显示器 并且有兴趣将我的应用程序制作为跨桌面配置尽可能兼容 我已经知道可以将

随机推荐

  • 没有用到React,为什么我需要import引入React?

    没有用到React 为什么我需要import引入React 本质上来说JSX是React createElement component props children 方法的语法糖 所以我们如果使用了JSX 我们其实就是在使用React 所
  • 【华为OD机试真题 python】快递运输

    题目描述 运送的快递放在大小不等的长方体快递盒中 为了能够装载更多的快递同时不能让货车超载 需要计算最多能装多少个快递 注 快递的体积不受限制 快递数最多1000个 货车载重最大50000 输入描述 第一行输入每个快递的重量 用英文逗号隔开
  • 小爱控制HA上的开关(红外线)

    小爱同学控制homeassistant in 树莓派 by 红外线 前言 租了房子以后一直想搞智能家居自动化各种事情 最近终于腾出空可以搞辣 研究了一圈感觉拆开关太麻烦了 零火线还要撬开关 租的房子不敢瞎搞 想了一下可以用arduino 树
  • VMware Workstation 入门使用

    文章目录 名词解释 事先准备 安装 VMware Tools 将鼠标焦点从虚拟机中退出 共享剪切板 共享文件 夹 虚拟机为 Windows 虚拟机为 Linux 虚拟机快照的创建与加载 创建虚拟机快照 加载虚拟机快照 克隆虚拟机 构建宿主机
  • 【ztree应用】基于jquery实现带检索功能的ztree文件夹折叠效果(附源码下载)

    文章目录 写在前面 涉及知识 效果展示 1 搭建dom 2 引入ztree和jquery 3 实现搜索功能及调用 4 源码分享 1 百度网盘 2 123云盘 3 邮箱留言 总结 写在前面 前些日子 领导要求做一个关于数据库管理的工具 主要想
  • 循环点击链接selenium模拟

    https blog csdn net qq 43251443 article details 82819887转载
  • 私有地址和保留地址

    A类 10 X X X是私有地址 私有地址就是在互联网上不使用 而被用在局域网络中的地址 127 X X X是保留地址 用做循环测试用的 B类 172 16 0 0 172 31 255 255是私有地址 169 254 X X是保留地址
  • 深度学习进阶线路图

    研究动态 深度学习进阶线路图 一 在应用机器学习的时候 最耗时和重要的阶段是对原始数据进行特征提取 深度学习是一个新的机器学习的分支 他要做的就是跨过整个特征设计阶段 而是直接从数据中学习得到 大部分的深度学习方法都是基于神经网络的 在这些
  • Git命令大全

    Git命令大全 一 git config 二 git clone 三 git init 四 git status 五 git remote 六 git branch 七 git checkout 八 git add 九 git commit
  • 区块链技术对金融行业有什么冲击?

    区块链技术在经过了长达十年的发展 被越来越多的行业关注 特别是一些大型企业 对区块链技术还进行了深入的研究 区块链技术也在更多的领域被应用 区块链技术的热度虽然很高 但目前的发展还处在初级阶段 其过多的应用场景也是没有得到更大的发展 区块链
  • 蓝桥杯练习系统入门水题

    好几天没写代码了 上蓝桥杯的练习系统看了一下 做了四道巨水题之后发现有些题还要vip 无语 问题描述 Fibonacci数列的递推公式为 Fn Fn 1 Fn 2 其中F1 F2 1 当n比较大时 F
  • (计算机组成原理)指令的寻址方式

    指令寻址方式是指指令或者操作数有效地址的寻找方式 主要分为数据寻址和指令寻址 指令的地址码字段往往并不是操作数的真实地址 而是形式地址 用A表示 A 即操作数形式地址所指向的存储介质的数值 用形式地址结合指令的寻址方式可以计算出操作数的真实
  • 快速调整毕业论文格式:调整参考文献的引用样式和段落格式

    在撰写毕业论文的过程 我们需要参考并引用大量的参考文献 之前有介绍了如何在Word中使用Endnote插入参考文献 但是从Endnote样式网站下载的样式可能和学校要求的参考文献的引用格式和段落样式有些出入 我们需要根据需求在下载样式上进行
  • 二叉树 Binary Tree

    二叉树 二叉树的基本概念 1 什么是二叉树 2 二叉树的优点和缺点 3 二叉树的基本名词 4 二叉树的性质 5 特别的二叉树 满二叉树 Full Binary Tree 完全二叉树 Complete Binary Tree 平衡二叉树 Ba
  • 【C++】多态

    文章目录 1 多态的基本概念 2 动态联编和静态联编 2 多态的原理剖析 3 计算器案例 4 抽象类与纯虚函数 5 虚析构和纯虚析构函数 6 向上类型转换和向下类型转换 1 多态的基本概念 多态性提法接口和具体实现之间的另一层隔离 多态改善
  • 计算机硬件结构简略介绍

    前言 计算机硬件结构简略介绍 一 计算机硬件 从软件开发者的角度来看 计算机硬件有三个部件最为关键 分别是中央处理器CPU 内存 I O控制芯片 二 早期 早期计算机 CPU的核心频率不高 和内存的频率一样 他们都是直接连接在同一个总线 b
  • 面试之设计模式(简单工厂模式)

    案例 在面试时 面试官让你通过面对对象语言 用Java实现计算器控制台程序 要求输入两个数和运算符号 得出结果 大家可能想到是如下 public static void main String args Scanner scanner ne
  • GDB print 详解

    GDB print 详解 分类 Linux GDB 2013 04 08 11 07 145人阅读 评论 0 收藏 举报 Linux GDB 察看变量 目录 print命令的格式是 print xxx p xxx 1 print 操作符 是
  • 请说出三种减少页面加载时间的方法

    1 尽量减少页面中重复的HTTP请求数量 2 服务器开启gzip压缩 3 css样式的定义放置在文件头部 4 Javascript脚本放在文件末尾 5 压缩合并Javascript CSS代码 6 使用多域名负载网页内的多个文件 图片
  • 在Windows 11 中安装和使用 WSL 2

    文章目录 列出可安装的发行版 分发 安装WSL 2 常用命令 显示帮助 启动分发 从powershell中退出分发 关闭正在运行的分发 立即终止所有正在运行的分发和 WSL 2轻型虚拟机 更新wsl 使用VSCode连接WSL 设置代理 换