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

Windows 安装 WSL2 并运行 Ubuntu 22.04 指南

Windows 安装 WSL2 并运行 Ubuntu 22.04 指南

本文为 Windows 10 和 Windows 11 用户提供从零开始搭建 WSL2 环境的详细指南,涵盖安装 Ubuntu 22.04、自定义存储位置、性能优化以及常见问题排查。无论你是开发者、运维工程师还是 Linux 爱好者,本文将助你快速上手 WSL2。


为什么要选择 WSL2 而非 VirtualBox 等虚拟机?

在选择运行 Linux 环境时,WSL2(Windows Subsystem for Linux 2)与 VirtualBox、VMware 等传统虚拟机相比具有显著优势。以下是选择 WSL2 的主要理由:

1. 更高的性能和资源效率

  • 轻量级虚拟化:WSL2 使用 Hyper-V 架构的轻量级虚拟机,相比 VirtualBox 的完整虚拟化,占用更少的 CPU 和内存资源。
  • 动态内存管理:WSL2 支持动态分配内存,并在空闲时通过 autoMemoryReclaim 释放内存,而 VirtualBox 通常需要预分配固定内存。
  • 快速启动:WSL2 可在数秒内启动 Linux 环境,而 VirtualBox 启动完整虚拟机通常需要更长时间。

2. 无缝的 Windows 与 Linux 集成

  • 文件系统互操作:WSL2 支持直接访问 Windows 文件系统(通过 /mnt/),并提供高性能的文件共享,而 VirtualBox 需要配置共享文件夹,性能较低。
  • 命令行集成:WSL2 可在 Windows Terminal 或 PowerShell 中直接运行 Linux 命令,无需切换到虚拟机界面。
  • 端口转发:WSL2 支持 localhost 端口无缝转发,方便开发和测试,而 VirtualBox 需要复杂网络配置。

3. 开发体验优化

  • 工具链支持:WSL2 与 Visual Studio Code、Docker Desktop 等开发工具深度集成,适合现代化开发工作流。VirtualBox 需额外配置以实现类似功能。
  • WSLg(GUI 支持):Windows 11 的 WSL2 支持运行 Linux GUI 应用(如 Firefox),无需额外安装 X 服务器,VirtualBox 则需要手动配置图形界面。
  • 嵌套虚拟化:WSL2 支持在 Linux 环境中运行 Docker 或其他虚拟化工具,适合云原生开发,而 VirtualBox 的嵌套虚拟化配置复杂。

4. 简化的管理与更新

  • 一键安装:WSL2 可通过 wsl --install 快速部署,相比 VirtualBox 的繁琐安装和配置过程更简单。
  • 自动更新:WSL2 内核通过 Windows Update 自动更新,Ubuntu 发行版通过 apt 维护,管理成本低。VirtualBox 需要手动更新虚拟机镜像和扩展包。
  • 存储优化:WSL2 使用虚拟硬盘(.vhdx)动态扩展存储,占用空间小,而 VirtualBox 虚拟机镜像通常占用较大固定空间。

5. 微软官方支持

  • WSL2 是微软官方产品,与 Windows 生态高度兼容,社区活跃,更新频繁。VirtualBox 虽功能强大,但依赖第三方维护,可能存在兼容性问题。
  • WSL2 提供详细的官方文档和 GitHub 社区支持,问题排查更便捷。

适用场景对比

特性WSL2VirtualBox
性能高(轻量级虚拟化)中等(完整虚拟化)
Windows 集成无缝(文件、端口、命令行)有限(需共享文件夹、网络配置)
GUI 支持原生支持(Windows 11 WSLg)需要额外配置 X 服务器或图形界面
开发工具集成优秀(VS Code、Docker 等)一般(需手动配置)
管理复杂度低(一键安装、自动更新)高(手动配置、更新)
存储占用动态扩展(小)固定分配(较大)

什么时候选择 VirtualBox?

  • 需要运行完整的 Linux 桌面环境(如 GNOME、KDE)或非 Ubuntu 发行版。
  • 需要模拟复杂网络拓扑或多虚拟机环境。

结论:对于开发者、学生或需要在 Windows 上快速运行 Linux 环境的个人,WSL2 提供更高效、便捷的体验。对于需要完整虚拟化或特殊硬件模拟的场景,VirtualBox 可能更适合。


一、前置条件:确认操作系统支持性

在安装 WSL2 之前,需确保你的 Windows 系统满足最低要求。

Windows 11

  • 默认支持 WSL2,无需额外检查。
  • 推荐版本:22H2 或更高,以支持 systemd 和 WSLg(GUI 应用支持)。

Windows 10

  • 最低要求:1903 版本(Build 18362) 或更高。
  • 推荐版本:20H2 或更高,以获得更好的性能和功能支持。
查看系统版本
  1. Win + R,输入 winver,回车。
  2. 弹窗将显示 Windows 版本和 Build 号。
升级系统

若版本不符合要求:

  • 打开 设置 > Windows 更新 检查更新。
  • 或使用 Windows 10 更新助手进行升级。

提示:建议备份重要数据后再升级系统,以防意外情况。


二、安装 WSL2

WSL2 提供两种安装方式:一键安装(推荐新手)和手动安装(适合需要自定义的用户)。

方法一:一键安装(推荐)

  1. 以管理员身份打开 PowerShellWindows Terminal

  2. 执行以下命令:

    wsl --install
    
  3. 系统将自动:

    • 启用 WSL 和虚拟机平台功能。
    • 下载并安装最新 WSL2 内核。
    • 安装默认的 Ubuntu 发行版(若无其他指定)。
  4. 重启电脑以完成安装。

注意:若命令未自动安装 Ubuntu,可在后续步骤手动安装 Ubuntu 22.04.

方法二:手动安装

适合需要精确控制安装过程的高级用户。

  1. 启用必要功能
    以管理员身份运行 PowerShell,执行:

    dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
    dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
    
  2. 重启电脑

    shutdown /r /t 0
    
  3. 安装 WSL2 内核更新

    • 下载并安装 WSL2 Linux 内核更新包.
    • 按提示完成安装。
  4. 设置 WSL2 为默认版本

    wsl --set-default-version 2
    

提示:若需确认 WSL 是否安装成功,可运行 wsl --version 检查版本信息。


三、安装 Ubuntu 22.04

Ubuntu 22.04 LTS 是长期支持版本,稳定且适合大多数开发场景。以下提供两种安装方式。

方法一:通过 Microsoft Store 安装

  1. 打开 Microsoft Store
  2. 搜索 Ubuntu 22.04 LTS
  3. 点击 获取 并安装。
  4. 安装完成后,启动 Ubuntu,设置用户名和密码.

方法二:通过命令行安装

  1. 在 PowerShell 中运行:

    wsl --install -d Ubuntu-22.04
    
  2. 安装完成后,WSL 将自动启动 Ubuntu 并提示设置用户名和密码。

注意

  • 用户名和密码仅用于 Ubuntu 内部,与 Windows 账户无关。
  • 若 Microsoft Store 访问受限,推荐使用命令行方式。

四、管理存储:默认位置与自定义迁移

WSL2 的虚拟硬盘文件(.vhdx)默认占用系统盘空间,可能导致 C 盘空间不足。以下介绍如何查看默认存储位置并迁移到其他磁盘。

默认存储位置

Ubuntu 22.04 的文件默认位于:

C:\Users\<用户名>\AppData\Local\Packages\CanonicalGroupLimited...UbuntuonWindows_...
  • 包含一个扩展名为 .vhdx 的虚拟硬盘文件,存储 Ubuntu 的完整文件系统。
  • 默认占用空间约为 1-2GB,随使用逐渐增长。

自定义存储位置

通过导出和导入操作,可将 Ubuntu 迁移到其他磁盘(如 D 盘)。

  1. 导出 Ubuntu 发行版

    wsl --export Ubuntu-22.04 D:\WSL\Ubuntu2204_backup.tar
    
    • 将 Ubuntu 22.04 导出为 .tar 文件,存储在 D:\WSL 目录。
  2. 注销旧发行版

    wsl --unregister Ubuntu-22.04
    
    • 删除旧的 Ubuntu 发行版,释放 C 盘空间。
  3. 导入到新位置

    wsl --import Ubuntu-22.04 D:\WSL\Ubuntu2204 D:\WSL\Ubuntu2204_backup.tar --version 2
    
    • 将 Ubuntu 导入到 D:\WSL\Ubuntu2204 目录,确保使用 WSL2。
  4. 验证迁移

    wsl -l -v
    
    • 确认 Ubuntu-22.04 已正确导入并运行在 WSL2。

提示

  • 迁移后,建议定期备份 .tar 文件以便恢复。
  • 若需调整虚拟硬盘大小,可使用 wsl --manage 命令(Windows 11 24H2 及以上支持)。

五、WSL2 常用命令速查

以下是管理 WSL2 的核心命令,建议收藏以便随时参考。

命令说明
wsl --list / -l列出所有已安装的发行版
wsl --list --verbose / -l -v显示详细信息(包括版本和默认发行版)
wsl --set-version <发行版名> 2将指定发行版切换到 WSL2
wsl --set-default <发行版名>设置默认运行的发行版
wsl --set-default-version 2设置新安装的发行版默认使用 WSL2
wsl --shutdown关闭所有运行中的 WSL 实例
wsl --terminate <发行版名>强制终止指定发行版
wsl --unregister <发行版名>注销并删除指定发行版
wsl --export <发行版名> <文件路径>导出发行版到指定路径
wsl --import <发行版名> <路径> <文件>导入发行版到指定位置

提示:使用 wsl --help 可查看完整命令列表。


六、性能优化:配置 .wslconfig

WSL2 的性能可以通过全局配置文件 .wslconfig 进行优化,文件位于:

C:\Users\<用户名>\.wslconfig

若文件不存在,需手动创建。

推荐配置模板

[wsl2]
memory=6GB               # 限制最大内存使用量
processors=4             # 指定 CPU 核心数
swap=8GB                 # 交换空间大小
swapFile=D:\WSL\swap.vhdx # 自定义 swap 文件路径
autoMemoryReclaim=true   # 自动回收未使用内存
localhostForwarding=true # 启用 localhost 端口转发
guiApplications=true     # 启用 WSLg(GUI 应用支持)
gpu=true                 # 启用 GPU 加速(需支持的 GPU 驱动)
dns=8.8.8.8              # 使用 Google DNS
networkingMode=mirrored  # 启用镜像网络模式(支持 IPv6)
firewall=true            # 启用 WSL 防火墙集成
autoProxy=true           # 自动使用 Windows 代理
nestedVirtualization=true # 启用嵌套虚拟化(适合运行 Docker 等)

参数详解

参数说明
memory限制 WSL2 最大内存,避免占用过多宿主机资源。
processors指定分配的 CPU 核心数,建议设为物理核心数的一半。
swap设置交换空间大小,推荐为内存的 1-2 倍。
swapFile自定义交换文件路径,避免占用 C 盘。
autoMemoryReclaim启用后定期回收未使用内存,提升宿主机性能。
localhostForwarding允许 WSL2 与 Windows 共享 localhost 端口。
guiApplications启用 WSLg,支持运行 Linux GUI 应用(Windows 11 独有)。
gpu启用 GPU 加速,适合机器学习或图形密集型任务。
dns自定义 DNS 服务器,解决网络解析问题。
networkingMode设置为 mirrored 支持双栈网络(IPv4/IPv6)。
firewall启用防火墙集成,提升安全性。
autoProxy自动同步 Windows 代理设置,适合科学上网场景。
nestedVirtualization启用嵌套虚拟化,支持在 WSL2 内运行虚拟机或容器。

应用配置

  1. 保存 .wslconfig 文件。

  2. 执行:

    wsl --shutdown
    
  3. 重新启动 WSL 或重启电脑。

参考资料

  • Microsoft Learn - WSL 配置文档

七、Ubuntu 内部配置:/etc/wsl.conf

/etc/wsl.conf 是 WSL2 发行版内部的配置文件,用于控制挂载、网络和启动行为。

推荐配置模板

[boot]
systemd=true[automount]
enabled=true
root=/mnt/
options="metadata,umask=22,fmask=11"[network]
generateHosts=true
generateResolvConf=false[interop]
enabled=true
appendWindowsPath=true[user]
default=<你的用户名>

参数详解

说明
[boot]systemd启用 systemd(需 Windows 11 22H2 或更高)。
[automount]enabled启用 Windows 磁盘自动挂载。
[automount]root设置挂载点路径,默认 /mnt/
[automount]options挂载选项,如 metadata 启用文件权限映射。
[network]generateHosts是否生成 /etc/hosts 文件。
[network]generateResolvConf是否自动生成 /etc/resolv.conf(设为 false 可自定义 DNS)。
[interop]enabled启用 Windows 和 WSL 之间的互操作性。
[interop]appendWindowsPath将 Windows PATH 添加到 WSL 环境变量。
[user]default设置默认登录用户。

应用配置

  1. 在 Ubuntu 中编辑

    /etc/wsl.conf
    

    sudo nano /etc/wsl.conf
    
  2. 保存后,重启 WSL:

    wsl --shutdown
    

提示:若需自定义 DNS,可手动编辑 /etc/resolv.conf,并确保 generateResolvConf=false


八、常见问题排查与解决方案

以下是 WSL2 使用中的常见问题及解决方法。

1. Ubuntu 启动提示 systemd 无效

原因:Windows 版本不支持 systemd 或配置错误。
解决

  • 确保系统为 Windows 11 22H2 或更高(运行 winver 检查)。
  • 确认 /etc/wsl.conf[boot] systemd=true
  • 执行 wsl --shutdown 后重试。

2. 网络访问异常(如无法访问公网)

原因:DNS 解析失败或网络模式配置错误。
解决

  • .wslconfig
    

    中设置:

    dns=8.8.8.8
    networkingMode=mirrored
    
  • 清理 Windows DNS 缓存:

    ipconfig /flushdns
    wsl --shutdown
    
  • 检查 Windows 防火墙,确保未阻止 WSL 网络流量。

3. WSL2 占用内存过高

原因:WSL2 默认动态分配内存,可能占用过多资源。
解决

  • .wslconfig
    

    中限制内存:

    memory=4GB
    autoMemoryReclaim=true
    
  • 定期运行 wsl --shutdown 释放内存。

4. 如何彻底重置 WSL?

步骤

  1. 注销发行版:

    wsl --unregister Ubuntu-22.04
    
  2. 关闭 WSL:

    wsl --shutdown
    
  3. (可选)禁用 WSL 功能:

    • 打开 控制面板 > 程序和功能 > 启用或关闭 Windows 功能
    • 取消勾选 适用于 Linux 的 Windows 子系统虚拟机平台
    • 重启后重新启用。

5. WSLg(GUI 应用)无法运行

原因:Windows 11 配置或驱动问题。
解决

  • 确保系统为 Windows 11 且启用 WSLg(.wslconfigguiApplications=true)。
  • 更新 GPU 驱动。
  • 安装 X11 服务器(如 VcXsrv)作为备用。

九、扩展功能与进阶用法

1. 使用 Windows Terminal

  • 安装 Windows Terminal(Microsoft Store 提供),统一管理 WSL、PowerShell 和 CMD。
  • 支持多标签页、自定义主题和快捷键,提升终端体验。

2. 运行 GUI 应用(WSLg)

  • Windows 11 支持 WSLg,可直接运行 Linux GUI 应用(如 geditfirefox)。

  • 安装示例:

    sudo apt update
    sudo apt install firefox
    firefox
    

3. 在 WSL2 中运行 Docker

  • 启用嵌套虚拟化(.wslconfignestedVirtualization=true)。
  • 安装 Docker Desktop 并启用 WSL2 后端,或直接在 Ubuntu 中安装 Docker CE.

4. 集成开发环境

  • 在 WSL2 中安装 VS Code Server,结合 Windows 的 VS Code 实现无缝开发。

  • 示例:

    curl -fsSL https://code-server.dev/install.sh | sh
    code-server
    

十、📄 WSL2 快速参考卡片(A4 一页版)

一页速查,涵盖安装、管理和优化,适合打印或保存为 PDF。

安装与管理

# 一键安装 WSL2
wsl --install# 安装 Ubuntu 22.04
wsl --install -d Ubuntu-22.04# 查看发行版
wsl -l -v# 设置默认 WSL2
wsl --set-default-version 2# 关闭 WSL
wsl --shutdown

性能优化:.wslconfig

路径:C:\Users\<用户名>\.wslconfig

[wsl2]
memory=6GB
processors=4
swap=8GB
autoMemoryReclaim=true
networkingMode=mirrored
guiApplications=true

内部配置:/etc/wsl.conf

[boot]
systemd=true[automount]
enabled=true
options="metadata"[network]
generateResolvConf=false

快速排查

  • Systemd 无效:检查 Windows 11 22H2+ 和 /etc/wsl.conf
  • 内存过高:设置 memory=4GBautoMemoryReclaim=true
  • 网络问题:启用 networkingMode=mirroreddns=8.8.8.8

十一、总结与资源推荐

WSL2 是一个强大的工具,将 Linux 的灵活性与 Windows 的易用性结合,为开发者提供了高效的跨平台开发环境。通过本文的指南,你可以:

  • 快速安装并配置 WSL2 和 Ubuntu 22.04。
  • 优化存储、内存和网络性能。
  • 排查常见问题并探索进阶功能。

推荐资源

  • Microsoft WSL 官方文档
  • Ubuntu 官方 WSL 教程
  • WSL GitHub 社区
  • Windows Terminal 自定义指南

相关文章:

Windows 安装 WSL2 并运行 Ubuntu 22.04 指南

Windows 安装 WSL2 并运行 Ubuntu 22.04 指南 本文为 Windows 10 和 Windows 11 用户提供从零开始搭建 WSL2 环境的详细指南&#xff0c;涵盖安装 Ubuntu 22.04、自定义存储位置、性能优化以及常见问题排查。无论你是开发者、运维工程师还是 Linux 爱好者&#xff0c;本文将助你…...

AI情感陪伴在医疗领域的核心应用潜力

一、精准情绪监测与干预 多模态情感识别系统 通过整合语音语调分析&#xff08;降调与语速异常检测抑郁倾向&#xff09;、微表情捕捉&#xff08;面部肌肉运动追踪焦虑状态&#xff09;、生理指标监测&#xff08;心率变异幅度反映应激水平&#xff09;等技术&#xff0c;构建…...

【计算机网络】第1章:概述—分组延时、丢失和吞吐量

目录 一、分组延时、丢失 1. 节点处理延时&#xff1a; 2. 排队延时&#xff1a; 3. 传输延时: 4. 传播延时: 5. 节点延时 6. 排队延时 7. 分组丢失 二、吞吐量 三、总结 &#xff08;一&#xff09;分组延时 1. 处理延时&#xff08;Processing Delay&#xff09; …...

Python Day38

Task&#xff1a; 1.Dataset类的__getitem__和__len__方法&#xff08;本质是python的特殊方法&#xff09; 2.Dataloader类 3.minist手写数据集的了解 1. Dataset 类的 __getitem__ 和 __len__ 方法 在 PyTorch (或类似深度学习框架) 中&#xff0c;Dataset 是一个抽象基类&a…...

DeepSeek R1 模型小版本升级,DeepSeek-R1-0528都更新了哪些新特性?

DeepSeek-R1‑0528 技术剖析&#xff1a;思维链再进化&#xff0c;推理性能飙升 目录 版本概览深度思考能力再升级基准测试成绩功能与体验更新API 变动与示例模型开源与下载结语 版本概览 DeepSeek 团队今日发布 DeepSeek‑R1‑0528 —— 基于 DeepSeek V3 Base&#xff08;2…...

线路板厂家遇到的PCB元件放置的常见问题有哪些?

印刷电路板现在无处不在。尽管大多数人认为这是理所当然的&#xff0c;但工程师和设计师们充分意识到这些电路开发和生产背后的巨大努力。传统的PCB生产涉及复杂的机械和高昂的前期成本&#xff0c;因此必须将制造外包给专业工厂。 说到交货时间&#xff0c;你可能需要几周的时…...

【C/C++】无限长有序数组中查找特定元素

在无限长有序数组中查找特定元素&#xff0c;由于数组长度未知&#xff0c;需先定位搜索范围&#xff0c;再进行二分查找。以下是C实现&#xff1a; #include <iostream> #include <vector> #include <climits> using namespace std;// 假设数组访问函数&am…...

SQL正则表达式总结

这里写目录标题 一、元字符二、正则表达函数1、 regexp_like(x,pattern[,match_option])2、 regexp_instr(x,pattern[,start[,occurrence[,return_option[, match_option]]]]) 3、 REGEXP_SUBSTR(x,pattern[,start[,occurrence[, match_option]]]) 4、 REGEXP_REPLACE(x,patter…...

力扣经典算法篇-13-接雨水(较难,动态规划,加法转减法优化,双指针法)

1、题干 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 示例 1&#xff1a; 输入&#xff1a;height [0,1,0,2,1,0,1,3,2,1,2,1] 输出&#xff1a;6 解释&#xff1a;上面是由数组 [0,1,0,2,1,0,1,3…...

STM32 -- USB虚拟串口通信

本篇操作: 通过CubeMX Keil&#xff0c;配置STM32作为USB设备端&#xff0c;与电脑上位机进行通信&#xff08;CDC&#xff09;&#xff1b;通用带USB功能的 STM32 芯片 &#xff08;如F1、F4等&#xff0c;系统时钟配置不同&#xff0c;代码通用&#xff09;。 目录 一、 S…...

uni-app开发特殊社交APP

uni-app开发特殊社交APP 目录 1.展示APP功能 2.展示项目结构 3.关于我的GitHub 引言 博主最近自己在GitHub上面上传了一个关于社交软件的项目&#xff08;该项目早已开发完毕&#xff09;, 这个社交软件比较特殊, 被称之为blind-date&#xff0c; blind-date 是基于 uni-…...

Linux中Shell脚本的常用命令

一、设置主机名称 1、通过修改系统文件来修改主机名称 [rootsakura1 桌面]# vim /etc/hostname sakura /etc/hostname&#xff1a;Linux 系统中存储主机名的配置文件。修改完文件后&#xff0c;在当前的shell中是不生效的&#xff0c;需要关闭当前shell后重新开启才能看到效…...

RabbitMQ项目实战

先参考文章&#xff1a;&#xff08;必看&#xff09; 06-MQ基础_mq服务-CSDN博客 07-MQ高级&#xff08;幂等性&#xff09;-CSDN博客 https://cloud.iocoder.cn/message-queue/rabbitmq/#_2-0-%E5%BC%95%E5%85%A5%E4%BE%9D%E8%B5%96%E4%B8%8E%E9%85%8D%E7%BD%AE 1、Rabbi…...

安卓开发用到的设计模式(3)行为型模式

安卓开发用到的设计模式&#xff08;3&#xff09;行为型模式 文章目录 安卓开发用到的设计模式&#xff08;3&#xff09;行为型模式1. 命令模式&#xff08;Command Pattern&#xff09;2. 策略模式&#xff08;Strategy Pattern&#xff09;3. 观察者模式&#xff08;Observ…...

生成模型:从数据学习到创造的 AI 新范式

一、生成模型&#xff1a;定义与核心逻辑 生成模型是一类通过学习数据潜在分布来创造新样本的机器学习模型。其核心目标是构建数据的概率分布模型 P(X)&#xff0c;使生成的样本 X^ 与真实数据 X 具有相似的统计特征。 1.1 与判别模型的本质区别 维度生成模型判别模型核心目…...

尚硅谷redis7 90-92 redis集群分片之集群扩容

90 redis集群分片之集群扩容 三主三从不够用了&#xff0c;进行扩容变为4主4从 问题&#xff1a;1.新建两个redis实例&#xff0c;怎么加入原有集群&#xff1f;2.原有的槽位分3段&#xff0c;又加进来一个槽位怎么算&#xff1f; 新建6387、6388两个服务实例配置文件新建后启…...

RabbitMQ性能调优:关键技术、技巧与最佳实践

RabbitMQ作为一款高可靠、高扩展性的消息中间件&#xff0c;其性能表现直接影响到分布式系统的吞吐量和响应延迟。本文基于RabbitMQ官方文档和最佳实践&#xff0c;结合核心性能优化方向&#xff0c;详细探讨RabbitMQ性能调优的关键技术、技巧和策略。 通过以下优化策略&#…...

系统架构中的组织驱动:康威定律在系统设计中的应用

康威定律&#xff08;Conway’s Law&#xff09; 是由计算机科学家 Melvin Conway 在1967年提出的理论&#xff0c;其核心观点是&#xff1a;“系统的架构设计会不可避免地反映其开发组织的沟通结构。换句话说&#xff0c;软件系统的结构会与构建它的团队的组织结构高度相似。 …...

TypeScript 中高级类型 keyof 与 typeof的场景剖析。

文章目录 前言一、typeof&#xff1a;从值到类型的映射1. 核心概念2. 类型推导示例3. 常见用途 二、keyof&#xff1a;从类型到键的映射1. 核心概念2. 常见用途 三、typeof keyof&#xff1a;强强联合的实战场景1. 场景一&#xff1a;对象属性的安全访问2. 场景二&#xff1a;…...

Android LiveData 详解

一、LiveData 核心概念与特性 1.1 定义与基本功能 LiveData 是 Android Jetpack 架构组件中的一个可观察数据持有者类&#xff0c;其核心功能是实现数据与 UI 的响应式绑定。与传统观察者模式不同&#xff0c;LiveData 具有生命周期感知能力&#xff0c;能够自动根据观察者…...

为什么共现矩阵是高维稀疏的

为什么共现矩阵是高维稀疏的&#xff1f; 共现矩阵&#xff08;Co-occurrence Matrix&#xff09;的高维稀疏性是其固有特性&#xff0c;主要由以下原因导致&#xff1a; 1. 高维性的根本原因 词汇表大小决定维度&#xff1a; 共现矩阵的维度为 ( V \times V )&#xff0c;其…...

离散化算法的二分法应用

我们思考一个问题&#xff1a;其实这里的二分法回归本源也是基于下标映射的原理&#xff0c;只是实现是借助二分的形式。 在排序好的数组中对目标数值进行二分搜索&#xff0c;在 O(logn) 的时间复杂度内找到该数值是整体数据中的第几个。 具体的我们可以如下操作&#xff1a; …...

IntelliJ IDEA 中进行背景设置

&#x1f3a8; ​​一、全局主题切换​​ ​​操作路径​​ File → Settings → Appearance & Behavior → Appearance → Theme​​可选主题​​&#xff1a; ​​Darcula​​&#xff1a;深色模式&#xff08;默认暗黑主题&#xff09;​​IntelliJ Light​​&#xff…...

Dart语言学习指南「专栏简介」

Dart 是 Google 开发的一款开源通用编程语言&#xff0c;它不仅支持客户端和服务器端的应用开发&#xff0c;还因其与 Flutter 框架的深度集成&#xff0c;在移动端和 Web 开发中广受欢迎。Dart 适用于 Android 应用、iOS 应用、物联网&#xff08;IoT&#xff09;项目以及 Web…...

AWS之AI服务

目录 一、AWS AI布局 ​​1. 底层基础设施与芯片​​ ​​2. AI训练框架与平台​​ ​​3. 大模型与应用层​​ ​​4. 超级计算与网络​​ ​​与竞品对比​​ AI服务 ​​1. 机器学习平台​​ ​​2. 预训练AI服务​​ ​​3. 边缘与物联网AI​​ ​​4. 数据与AI…...

Docker 部署项目

使用 Docker 部署项目是一个很好的选择&#xff0c;可以避免服务器环境不兼容的问题&#xff0c;并且能够实现一致性和可移植性。我会给你一个详细的步骤&#xff0c;帮你从零开始理解 Docker&#xff0c;最终在服务器上部署 Roop 项目。 1. 安装 Docker 首先&#xff0c;你需…...

半导体厂房设计建造流程、方案和技术要点-江苏泊苏系统集成有限公司

半导体厂房设计建造流程、方案和技术要点-江苏泊苏系统集成有限公司 半导体厂房的设计建造是一项高度复杂、专业性极强的系统工程&#xff0c;涉及洁净室、微振动控制、电磁屏蔽、特殊气体/化学品管理等关键技术。 一、设计建造流程&#xff1a; 1.需求定义与可行性分析 &a…...

(c++)string的模拟实现

目录 1.构造函数 2.析构函数 3.扩容 1.reserve(扩容不初始化) 2.resize(扩容加初始化) 4.push_back 5.append 6. 运算符重载 1.一个字符 2.一个字符串 7 []运算符重载 8.find 1.找一个字符 2.找一个字符串 9.insert 1.插入一个字符 2.插入一个字符串 9.erase 10…...

一种通用图片红色印章去除的工具设计

朋友今天下午需要处理个事情&#xff0c;问我有没有什么好的办法能够去除&#xff0c;核心问题是要去除图片上的印章。记得以前处理过类似的需求&#xff0c;photoshop操作比较简单&#xff0c;本质是做运算。这种处理方式有很多&#xff0c;比如现在流行的大模型&#xff0c;一…...

企业应用AI对向量数据库选型思考

一、向量数据库概述 向量数据库是一种专门用于存储和检索高维向量数据的数据库系统&#xff0c;它能够高效地处理基于向量相似性的查询&#xff0c;如最近邻搜索等&#xff0c;在人工智能、机器学习等领域的应用中发挥着重要作用&#xff0c;为处理复杂的向量数据提供了有力的…...