【Windows 11】安装 Android子系统 和 Linux子系统
本文使用电脑系统:
文章目录
- 一、安卓子系统
- 1.1 安装 WSA
- 1.2 使用
- 二、Linux子系统
- 2.1 安装 WSL 以及WSL 相关概念
- 2.2 安装一个Linux发行版
- 2.21 从Microsoft Store 安装
- 2.22 用命令安装
- 2.23 拓展
- 三、拓展
- 3.1 存储位置
- 3.2 虚拟化技术
- 3.3 Windows 虚拟内存
- 3.3 wsl 帮助文件
一、安卓子系统
1.1 安装 WSA
主要就是安装一个名为:适用于Android的Windows子系统(WSA)的软件。
首先在电脑的设置里面:时间和语言——语言和地区里面把地区改为美国。
然后到微软商店搜索:Amazon AppStore
。
安装亚马逊应用商店的时候,会首先提示你安装前面说的WSA。如此,我们的目的就达成了。
至于亚马逊应用商店,不推荐使用了,他已经停止在国区的服务了。你可以注册一个美区的账号登录,自己去看(没必要)。
1.2 使用
现在,做一些设置之后就可以安装安卓APP了。
搜索栏搜Windows功能,在启用或关闭Windows功能里面,确保“虚拟机平台”、“
Hyper-V
”是勾选了的。同时,为了安装Linux子系统,这里把“适用于Linux的Windows子系统”也顺便勾选了。勾选之后,保存,重启电脑。(如果有关于WSL即Linux子系统的报错或提示,不要管)
打开WSA,在这里共享文件夹。目的:使安卓子系统可以访问Windows用户的文件,这样就可以安装我们下载到Windows的apk安装包了。
关闭WSA,去下载你要安装的软件的apk
安装包,自己去网上搜就行,这种网站应该很多,我用的是:https://apkpure.com/cn/app(好像需要魔法)
把安apk装包保存到电脑的下载文件夹,或者用户文件夹下面的其他目录也可以。
打开WSA,点击系统——文件,来到这个界面:就是拿你Windows的部分存储空间模拟Android系统。
点击Windows
,进去找到你保存的apk,单击,会弹出选项,选择安装即可。可能会报错,再试一次即可。
安装完成后就可以像使用其他Windows 软件一样打开了。
注:
现在先不要安装太多APP,等一下安装Linux子系统后可能会感染安装子系统,具体表现就是:启动安装APP的时候显示WSA已停止工作。 (我遇到了)
这时,在设置里面重置WSA就可以了,设置和安装的软件都会被清除,再重新走一遍流程就好了。
二、Linux子系统
2.1 安装 WSL 以及WSL 相关概念
在上一步,我们已勾选了“适用于Linux的Windows子系统”(WSL:Windows Subsystem for Linux)和“虚拟机平台”。
WSL 是一个为Windows 10和Windows Server 2019设计的兼容层,用于在Windows上运行Linux二进制可执行文件。以下是关于WSL的一些关键信息:
-
兼容性:WSL使您可以在Windows上运行Linux发行版的大多数命令行工具、应用程序和实用程序,而无需启动虚拟机或使用双启动。
-
集成:您可以在Windows和Linux之间无缝地移动文件,甚至可以在Windows的文件资源管理器中访问Linux文件。
-
性能:由于WSL是一个轻量级的兼容层,而不是完整的虚拟机,所以它的性能开销非常小。
-
开发者友好:WSL对开发者特别有用,因为它允许他们在Windows上使用Linux的开发工具,并在同一台机器上测试跨平台应用程序。
-
版本:WSL有两个版本,WSL 1和WSL 2。WSL 2引入了一个完整的Linux内核,提供了更好的性能和完整的系统调用兼容性。
从“Windows功能”中启用的WSL版本是WSL 1
。
建议使用WSL 2
,去微软商店搜索WSL,即可看到(微软官方的那个),安装它。
1 和 2的对比:
特性/方面 | WSL1 | WSL2 |
---|---|---|
架构 | 兼容性层 | 完整的Linux内核 |
性能 | 文件系统性能较慢 | 尤其在使用Linux原生文件系统时更快 |
系统调用 | 有限支持 | 完全的系统调用兼容性 |
Docker支持 | 有限 | 原生支持 |
网络 | 与主机共享IP | 使用自己的IP地址 |
文件系统 | 通过DrvFs访问Windows文件 | 通过9P协议访问Windows文件 |
启动时间 | 更快 | 由于VM启动而略慢(其实很快) |
内存使用 | 较低 | 由于VM而使用更多内存 |
发行版支持 | Microsoft Store中提供的所有发行版 | Microsoft Store中提供的所有发行版 + 自定义发行版 |
内核更新 | 与Windows更新绑定 | 可以独立更新 |
2.2 安装一个Linux发行版
WSL 2 包括一个完整的 Linux 内核。这是 WSL 1 和 WSL 2 之间的主要区别之一。
-
WSL 1:它使用一个兼容性层来运行 Linux 二进制文件。这意味着它不包括一个真正的 Linux 内核,而是模拟 Linux 内核的行为。这使得 WSL 1 在某些情况下的性能不如 WSL 2,特别是在涉及文件系统操作时。
-
WSL 2:它使用一个真正的 Linux 内核,并运行在一个轻量级的虚拟机中。这提供了更好的性能和完整的 Linux 系统调用兼容性。微软为 WSL 2 提供了一个专门的 Linux 内核,但用户也可以自行更新或修改这个内核。
这个内核是作为一个单独的组件与 Windows 一起分发的,这意味着它可以独立于 Windows 更新进行更新。这为用户提供了更大的灵活性,允许他们更容易地获取内核的新版本和功能。
即使WSL 2包含了一个完整的Linux内核,用户仍然需要下载一个Linux发行版,原因如下:
-
用户空间与内核空间:Linux操作系统可以分为两个主要部分:内核和用户空间。内核负责与硬件交互、管理资源等,而用户空间包含了所有用户级应用程序和工具。WSL 2提供了Linux内核,但用户仍然需要一个Linux发行版来提供用户空间的组件。
-
发行版的选择:Linux有多个发行版,如Ubuntu、Debian、Fedora等,每个发行版都有其特定的软件包、配置和工具。用户可以根据自己的需求和喜好选择合适的发行版。
-
软件包管理:每个Linux发行版都有自己的软件包管理器,如Ubuntu的
apt
、Fedora的dnf
等。这些工具允许用户轻松地安装、更新和管理软件。 -
环境配置:不同的Linux发行版可能会有不同的默认环境配置、服务和工具。下载特定的发行版允许用户获得他们期望的工作环境。
-
兼容性:某些应用程序或工具可能在特定的Linux发行版上运行得更好或只在特定的发行版上可用。
安装Linux发行版有多种方式,本文介绍最基本的2中。
2.21 从Microsoft Store 安装
直接去微软商店搜索你要安装的发行版即可,比如Ubuntu,然后选择你要的版本,下载。
下载完成后,双击,就会启动安装程序:期间需要你设置一个Linux用户
默认都是没有安装桌面的,启动方式有如下几种:
- 运行(win r),
wsl
,回车(将启动默认的WSL发行版如果只安装了一个发行版,如Ubuntu,那么它就是默认的); - 运行,
bash
,回车(早期命令,不建议,可能会与Git Bash之类的冲突); - 运行,
wt
(Windows终端),新建一个Ubuntu的标签页。
很多命令和命令行工作都是能正常使用的:
2.22 用命令安装
现在Powershell中运行wsl--help
,你就可以看到wsl的命令,中文的,很好理解,我放在文章末尾了。
这里做个示例:
(1)获取可供安装的Linux发行版:wsl --list --online
以下是可安装的有效分发的列表。
使用 'wsl.exe --install <Distro>' 安装。NAME FRIENDLY NAME
Ubuntu Ubuntu
Debian Debian GNU/Linux
kali-linux Kali Linux Rolling
Ubuntu-18.04 Ubuntu 18.04 LTS
Ubuntu-20.04 Ubuntu 20.04 LTS
Ubuntu-22.04 Ubuntu 22.04 LTS
OracleLinux_7_9 Oracle Linux 7.9
OracleLinux_8_7 Oracle Linux 8.7
OracleLinux_9_1 Oracle Linux 9.1
openSUSE-Leap-15.5 openSUSE Leap 15.5
SUSE-Linux-Enterprise-Server-15-SP4 SUSE Linux Enterprise Server 15 SP4
SUSE-Linux-Enterprise-15-SP5 SUSE Linux Enterprise 15 SP5
openSUSE-Tumbleweed openSUSE Tumbleweed
(2)安装你需要的发行版: wsl --install Ubuntu-22.04
其他的就没什么好说的了。
2.23 拓展
-
查看wsl版本:
wsl --version
这个命令输出的是wsl的具体软件版本,并不是我们说的WSL1和WSL2,比如
-
如果要查看使用的是WSL1还是WSL 2,可以使用:
wsl --list --verbose
或者使用:wsl --status
或者在运行的Linux里面使用:uname -a
查看
-
设置WSL的默认版本:
wsl --set-default-version 2
这个命令将设置未来安装的所有Linux发行版的默认WSL版本。已经安装的发行版的版本不会受到影响
如果要更改已安装的特定Linux发行版的版本,例:wsl --set-version Ubuntu 2
-
安装了多个Linux发行版,设置默认启动某一个发行版,示例:
wsl --set-default Ubuntu
三、拓展
建议安装Linux-Windows双系统或者使用服务器。建议在电脑上运行各种软件的电脑版。
这种虚拟化技术,有时候可能并不稳定,可以用来娱乐、学习。
3.1 存储位置
在WSL中,Linux发行版的文件系统被存储为一个特殊的文件,通常称为“磁盘映像”文件。对于WSL 1和WSL 2,这些文件的存储位置略有不同:
-
WSL 1:
- WSL 1的Linux发行版文件系统被存储在Windows文件系统中的一个隐藏文件夹中。通常,这个位置是:
其中C:\Users\<YourUsername>\AppData\Local\Packages\<DistroPackageName>\LocalState\rootfs\
<YourUsername>
是Windows用户名,<DistroPackageName>
是Linux发行版的包名,例如CanonicalGroupLimited.UbuntuonWindows
对于Ubuntu。
- WSL 1的Linux发行版文件系统被存储在Windows文件系统中的一个隐藏文件夹中。通常,这个位置是:
-
WSL 2:
- WSL 2使用了一个真正的Linux内核和一个轻量级的虚拟机。因此,它的文件系统被存储为一个VHDX文件,通常位于:
C:\Users\<YourUsername>\AppData\Local\Packages\<DistroPackageName>\LocalState\ext4.vhdx
- WSL 2使用了一个真正的Linux内核和一个轻量级的虚拟机。因此,它的文件系统被存储为一个VHDX文件,通常位于:
一般来说,这样安装的Ubuntu位于我们的C盘,包括内核、附加组件等等。我按照后,大概占用了20G左右(应该还包括其他内容)。
前面说过,WSL中的Linux要Windows是共享存储空间的,也就是说他会把Windows的各个磁盘、分区挂载到根目录下。当然了,他会拿出一部分存储空间为Linux系统服务,比如他会使用一个轻量性的虚拟机来运行Linux内核,这部分空间的文件系统是ext4(Linux主流文件系统)。
而原本的Windows的各个分区仍然保持他们原本的文件系统类型(比如NTFS),只不过采用“9P
”协议,挂载到Linux根目录下。
3.2 虚拟化技术
Hyper-V
是Microsoft提供的一种硬件虚拟化技术,允许用户在单个物理计算机上运行多个虚拟化的操作系统。它是Windows Server 2008中引入的,并且后来也被包括在某些Windows客户端版本中,如Windows 10和Windows 11的专业版和企业版。
以下是Hyper-V的一些关键特点和功能:
-
硬件虚拟化:Hyper-V使用硬件辅助虚拟化技术,这要求物理计算机的CPU支持虚拟化,并且这一功能已被启用。
-
隔离:每个虚拟机都在其自己的隔离环境中运行,这为每个虚拟机提供了操作系统级别的隔离。
-
灵活的资源管理:用户可以为每个虚拟机分配特定的CPU、内存、存储和网络资源。
-
虚拟硬盘:Hyper-V支持多种虚拟硬盘格式,如VHD和VHDX。
-
虚拟网络:Hyper-V允许创建和管理虚拟网络交换机,从而实现虚拟机之间以及虚拟机与外部网络之间的通信。
-
集成服务:这些是运行在虚拟机内部的特殊服务,用于提高性能和使虚拟机能够与Hyper-V宿主更好地交互。
-
快照和检查点:允许用户捕获虚拟机的当前状态,以便在将来需要时恢复到该状态。
-
与WSL 2的关系:虽然WSL 2使用了一个轻量级的虚拟机来运行Linux内核,但它不直接使用Hyper-V。然而,WSL 2和Hyper-V都依赖于相同的底层虚拟化技术。
-
兼容性:在启用Hyper-V后,某些其他的虚拟化解决方案可能无法正常工作,因为它们可能与Hyper-V冲突。
Hyper-V主要用于企业环境中的服务器虚拟化,但它也可以在桌面环境中用于开发、测试或学习目的。
“虚拟机平台”(Virtual Machine Platform)是Windows的一个可选功能,它为Windows提供了一个轻量级的虚拟化解决方案,特别是为了支持WSL 2。
以下是“虚拟机平台”的一些关键点:
-
WSL 2支持:与WSL 1不同,WSL 2使用了一个真正的Linux内核,并在轻量级的虚拟机上运行。为了支持这种虚拟化,Windows引入了“虚拟机平台”功能。
-
轻量级虚拟化:“虚拟机平台”提供了一个轻量级的虚拟化解决方案,与Hyper-V相比,它更为简单和高效。它专为运行WSL 2和其他轻量级虚拟化任务而设计。
-
与Hyper-V的关系:虽然“虚拟机平台”和Hyper-V都使用相同的底层虚拟化技术,但它们是为不同的用途设计的。可以同时启用“虚拟机平台”和Hyper-V。
-
启用/禁用:要使用WSL 2,需要启用“虚拟机平台”功能。这可以通过Windows功能设置或使用命令行工具完成。
-
硬件要求:“虚拟机平台”要求计算机支持硬件虚拟化,并且这一功能已被启用。
3.3 Windows 虚拟内存
同Linux的交换分区(文件)类似,Windows虚拟内存是一种内存管理功能,它使计算机可以使用硬盘空间作为RAM(随机存取存储器)。当计算机的物理RAM被使用完时,Windows会将部分数据移动到硬盘上的一个名为“页面文件”(或“交换空间”)的区域,从而释放RAM空间供其他程序使用
虚拟内存(页面文件)与Hyper-V和“虚拟机平台”是两个完全不同的概念,它们之间没有直接的依赖关系。
一般都是系统自动设置的,也可以自定义:
3.3 wsl 帮助文件
用法: wsl.exe [Argument] [Options...] [CommandLine]运行 Linux 二进制文件的参数:如果未提供命令行,wsl.exe 将启动默认 shell。--exec, -e <CommandLine>不使用默认 Linux shell 执行指定的命令。--shell-type <Type>使用提供的 shell 类型执行指定的命令。类型:standard使用默认 Linux shell 执行指定的命令。login使用默认 Linux shell 作为登录 shell 执行指定的命令。none不使用默认 Linux shell 执行指定的命令。--按原样传递命令行的剩余部分。选项:--cd <Directory>将指定的目录设置为当前工作目录。如果使用 ~,则将使用 Linux 用户的主路径。如果路径以/ 字符开头,它将解释为绝对 Linux 路径。否则,该值必须为绝对 Windows 路径。--distribution, -d <Distro>运行指定的分发。--user, -u <UserName>以指定的用户身份运行。--system启动 shell 进行系统分发用于管理适用于 Linux 的 Windows 子系统的参数:--help显示用法信息。--debug-shell打开 WSL2 调试 shell 以进行诊断。--event-viewer打开 Windows 事件查看器的应用视图。--install [Distro] [Options...]安装适用于 Linux 的 Windows 子系统分发。若要查看有效分发列表,请使用 'wsl.exe --list --online'。选项:--no-launch, -n安装后不要启动分发。--web-download从 Internet 而不是 Microsoft Store 下载分发。--no-distribution仅安装所需的可选组件,不安装分发。--mount <Disk>在所有 WSL 2 分发中附加并装载物理或虚拟磁盘。选项:--vhd指定 <Disk> 代表虚拟硬盘。--bare将磁盘附加到 WSL2 但不装载。--name <Name>为装入点使用自定义名称装载磁盘。--type <Type>装载磁盘时使用的文件系统,如果未指定则默认为 ext4。--options <Options>其他装载选项。--partition <Index>要装载的分区索引,如果未指定则默认为整个磁盘。--release-notes打开 Web 浏览器查看 WSL 发行说明页面。--set-default-version <Version>更改新分发的默认安装版本。--shutdown立即终止所有正在运行的分发和 WSL 2轻型虚拟机。--status显示适用于 Linux 的 Windows 子系统的状态。--unmount [Disk]从所有 WSL2 分发中卸载并分离一个磁盘。如果未使用参数调用,则卸载并分离所有磁盘。--update更新适用于 Linux 的 Windows 子系统程序包。选项:--web-download从 Internet 而不是 Microsoft Store 下载更新。--pre-release如果可用,则下载预发布版本。表示使用 --web-download。--version, -v显示版本信息。用于管理适用于 Linux 的 Windows 子系统中的分发的参数:--export <Distro> <FileName> [Options]将分发导出为 tar 文件。对于标准输出,文件名可以是 "-"。选项:--vhd指定应导出为 .vhdx 文件的分发。--import <Distro> <InstallLocation> <FileName> [Options]将指定的 tar 导入为新分发。对于标准输入,文件名可以是 "-"。选项:--version <Version>指定要为新分发使用的版本。--vhd指定提供的文件为 .vhdx 文件,而不是 tar 文件。此操作将在指定的安装位置生成一个 .vhdx 文件的副本。--import-in-place <Distro> <FileName>将指定的 .vhdx 导入为一个新分发。此虚拟硬盘必须使用 ext4 文件系统类型格式化。--list, -l [Options]列出分发。选项:--all列出所有分发,包括目前正在安装或卸载的分发。--running仅列出目前正在运行的分发。--quiet, -q仅显示分发名称。--verbose, -v显示所有分发的相关详细信息。--online, -o使用 'wsl.exe --install' 显示可以安装的可用分发列表。--set-default, -s <Distro>将分发设置为默认分发。--set-version <Distro> <Version>更改指定分发的版本。--terminate, -t <Distro>终止指定分发。--unregister <Distro>注销分发并删除根文件系统。
把 永 远 爱 你 写 进 诗 的 结 尾 ~
相关文章:

【Windows 11】安装 Android子系统 和 Linux子系统
本文使用电脑系统: 文章目录 一、安卓子系统1.1 安装 WSA1.2 使用 二、Linux子系统2.1 安装 WSL 以及WSL 相关概念2.2 安装一个Linux发行版2.21 从Microsoft Store 安装2.22 用命令安装 2.23 拓展 三、拓展3.1 存储位置3.2 虚拟化技术3.3 Windows 虚拟内存3.3 wsl …...

秒杀库存解决方案
电商系统中秒杀是一种常见的业务场景需求,其中核心设计之一就是如何扣减库存。本篇主要分享一些常见库存扣减技术方案,库存扣减设计选择并非一味追求性能更佳,更多的应该考虑根据实际情况来进行架构取舍。在商品购买的过程中,库存…...

[免费在线] 将 PDF 转换为 Excel 或 Excel 转换为 PDF | 5 工具
有了免费的在线 PDF 转换器,您可以轻松免费在线将 PDF 转换为 Excel 或 Excel 转换为 PDF。这篇文章为您筛选了 5 个最常用的工具。要从存储介质恢复错误删除或丢失的 PDF 文档、Excel 电子表格、Word 文件或任何其他文件,您可以使用免费的数据恢复程序 …...
PLC求解弹簧质量模型微分方程数值解(RK4梯形图程序)
微分方程的数值求解,属于数学分析类课程涉及的内容。大家可以参看相关书籍对Runge-Kutta法的介绍,弹簧质量阻尼模型详细的微分方程介绍可以查看下面文章,链接如下: 弹簧质量阻尼系统前馈PID位置控制(PLC闭环仿真SCL+ST代码)_RXXW_Dor的博客-CSDN博客带前馈控制的博途PID程…...

CSDN编程题-每日一练(2023-08-14)
CSDN编程题-每日一练(2023-08-14) 一、题目名称:小股炒股二、题目名称:王子闯闸门三、题目名称:圆小艺 一、题目名称:小股炒股 时间限制:1000ms内存限制:256M 题目描述: …...
【SA8295P 源码分析】69 - Android 侧添加支持 busybox telnetd 服务
【SA8295P 源码分析】69 - Android 侧添加支持 busybox telnetd 服务 一、下载 busybox-1.36.1.tar.bz2 源码包二、编译 busybox 源码三、将编译后的 busybox 打包编入Android 镜像中系列文章汇总见:《【SA8295P 源码分析】00 - 系列文章链接汇总》 本文链接:《【SA8295P 源码…...

OpenCV图像处理——模版匹配和霍夫变换
目录 模版匹配原理实现 霍夫变换霍夫线检测 模版匹配 原理 实现 rescv.matchTemplate(img,template,method)import numpy as np import cv2 as cv import matplotlib.pyplot as pltimgcv.imread(./汪学长的随堂资料/6/模板匹配/lena.jpg) templatecv.imread(./汪学长的随堂资…...

面试官的几句话,差点让我挂在HTTPS上
♥ 前 言 作为软件测试,大家都知道一些常用的网络协议是我们必须要了解和掌握的,比如 HTTP 协议,HTTPS 协议就是两个使用非常广泛的协议,所以也是面试官问的面试的时候问的比较多的两个协议;而且因为这两个协议有相…...
C语言char**,char*,char s[]赋值
目录 前言 赋值方法 char s[]: char* char** 问题 修改字符串常量 前言 char**,char*,char s[]赋值的方式是不同的,当你搞混的时候,系统会报出段错误(Segmentation Fault),所…...

一、Kubernetes介绍与集群架构
Kubernetes介绍与集群架构 一、认识容器编排工具 docker machine 主要用于准备docker host现已弃用建议使用docker desktop docker compose Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。使用 Compose,您可以使用 YAML 文件来配置应用程序的服务。…...

基于C#UI Automation自动化测试
步骤 UI Automation 只适用于,标准的win32和 WPF程序 需要添加对UIAutomationClient、 UIAutomationProvider、 UIAutomationTypes的引用 代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.D…...

深入了解Linux运维的重要性与最佳实践
Linux作为开源操作系统的代表,在企业级环境中的应用越来越广泛。而在保障Linux系统的正常运行和管理方面,Linux运维显得尤为关键。本文将介绍Linux运维的重要性以及一些最佳实践,帮助读者更好地了解和掌握Linux系统的运维技巧。 首先…...
90 | Python人工智能篇 —— 深度学习算法 Keras基于卷积神经网络的情感分类
情感分类是自然语言处理(NLP)领域的一个重要任务,它旨在将文本划分为积极、消极或中性等不同情感类别。深度学习技术,尤其是卷积神经网络(CNN),在情感分类任务中取得了显著的成果。Keras作为一个高级的深度学习框架,提供了便捷易用的工具来构建和训练情感分类模型。 文…...
自然语言处理从入门到应用——LangChain:记忆(Memory)-[记忆的类型Ⅲ]
分类目录:《自然语言处理从入门到应用》总目录 对话令牌缓冲存储器ConversationTokenBufferMemory ConversationTokenBufferMemory在内存中保留了最近的一些对话交互,并使用标记长度来确定何时刷新交互,而不是交互数量。 from langchain.me…...
【ARM 嵌入式 编译系列 10.3 -- GNU elfutils 工具小结】
文章目录 什么是 GNU elfutils?GNU elfutils 常用工具有哪些?objcopy 常用参数有哪些?GNU binutils和GNU elfutils区别是什么? 上篇文章:ARM 嵌入式 编译系列 10.2 – 符号表与可执行程序分离详细讲解 什么是 GNU elfu…...

黑马项目一阶段面试 项目介绍篇
我完成了一个外卖项目,名叫苍穹外卖,是跟着黑马程序员的课程来自己动手写的。 项目基本实现了外卖客户端、商家端的后端完整业务。 商家端分为员工管理、文件上传、菜品管理、分类管理、套餐管理、店铺营业状态、订单下单派送等的管理、数据统计等&…...
重构内置类Function原型上的call方法
重构内置类Function原型上的call方法 // > 重构内置类Function原型上的call方法 ~(function () {/*** call: 改变函数中的this指向* params* context 可以不传递,传递必须是引用类型的值,因为后面要给它加 fn 属性**/function myCall(context) {/…...

Nginx之lnmp架构
目录 一.什么是LNMP二.LNMP环境搭建1.Nginx的搭建2.安装php3.安装数据库4.测试Nginx与PHP的连接5.测试PHP连接数据库 一.什么是LNMP LNMP是一套技术的组合,Llinux,Nnginx,Mmysql,Pphp 首先Nginx服务是不能处理动态资源请求&…...

C# 使用FFmpeg.Autogen对byte[]进行编解码
C# 使用FFmpeg.Autogen对byte[]进行编解码,参考:https://github.com/vanjoge/CSharpVideoDemo 入口调用类: using System; using System.IO; using System.Drawing; using System.Runtime.InteropServices; using FFmpeg.AutoGen;namespace F…...
websocket是多线程的嘛
经过测试, onOpen事件的threadId和onMessage的threadId是不一样的,但是onMessage的threadId一直是同一个,就是说收消息的部分是单线程的,收到第一个Message后如果给它sleep较长时间,期间收到第二个,效果是它在排队&am…...
Vim 调用外部命令学习笔记
Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

关于nvm与node.js
1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...

使用分级同态加密防御梯度泄漏
抽象 联邦学习 (FL) 支持跨分布式客户端进行协作模型训练,而无需共享原始数据,这使其成为在互联和自动驾驶汽车 (CAV) 等领域保护隐私的机器学习的一种很有前途的方法。然而,最近的研究表明&…...

Psychopy音频的使用
Psychopy音频的使用 本文主要解决以下问题: 指定音频引擎与设备;播放音频文件 本文所使用的环境: Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...
Spring Boot面试题精选汇总
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...

论文笔记——相干体技术在裂缝预测中的应用研究
目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术:基于互相关的相干体技术(Correlation)第二代相干体技术:基于相似的相干体技术(Semblance)基于多道相似的相干体…...

无人机侦测与反制技术的进展与应用
国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机(无人驾驶飞行器,UAV)技术的快速发展,其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统,无人机的“黑飞”&…...
Java求职者面试指南:计算机基础与源码原理深度解析
Java求职者面试指南:计算机基础与源码原理深度解析 第一轮提问:基础概念问题 1. 请解释什么是进程和线程的区别? 面试官:进程是程序的一次执行过程,是系统进行资源分配和调度的基本单位;而线程是进程中的…...
机器学习的数学基础:线性模型
线性模型 线性模型的基本形式为: f ( x ) ω T x b f\left(\boldsymbol{x}\right)\boldsymbol{\omega}^\text{T}\boldsymbol{x}b f(x)ωTxb 回归问题 利用最小二乘法,得到 ω \boldsymbol{\omega} ω和 b b b的参数估计$ \boldsymbol{\hat{\omega}}…...