工具篇 | WSL使用入门教程以及基于WSL和natApp内网穿透实践 - 对比VMWare

介绍

在开发工具中,Windows Subsystem for Linux (WSL)VMWare 它们都可以实现了在 Windows 上运行 Linux系统。

文章概览

WSL Vs VMWare

我们将简单比对 WSL 和 VMWare,在性能、资源消耗等方面的差异,以协助您做出更加明确的选择。

深入探索 WSL使用细节与实践

本文主要研究 WSL 在现代开发中的应用和优势,并将深入探讨其对开发流程的影响。

💡 提示: 在选定工具时,要考虑好自身具体使用场景,例如资源、性能和开发便利性。工具本身是为人服务,没有优劣之分,只在于用的人。


2 WSL的安装和配置

2.1 准备工作

💡 必须运行 Windows 10 版本 2004 及更高版本(内部版本 19041 及更高版本)或 Windows 11 才能使用以下命令。 如果使用的是更早的版本,请参阅手动安装页。

同时,需要启用虚拟化技术,可以在BIOS或UEFI设置中进行调整。在任务管理器中可以看是否开启了虚拟化技术,如图所示:
在这里插入图片描述

2.2 安装步骤

1. 开启Windows功能

打开“控制面板” > “程序” > “启用或关闭Windows功能”,勾选如下内容(我勾的可能多了,可以把Hyper-V去掉):
在这里插入图片描述

2. 设置WSL默认版本

打开 PowerShell 并以管理员身份运行。键入以下命令来设置WSL默认使用的版本:

wsl --set-default-version 2

3. 安装Linux系统

由于网络问题,我这里选择应用商店进行安装Linux系统。打开 Microsoft Store,并从中选择 Linux 系统进行安装,如 Ubuntu。
在这里插入图片描述

2.3 配置Linux系统

完成安装后,运行已经安装的 Linux 系统,首次运行将要求您创建一个用户帐户和密码。

2.4 完成与验证

至此,WSL 应该已经配置好并可以使用了。您可以通过在 PowerShell 中输入 wsl 命令来运行 Linux,也可以直接从开始菜单运行您安装的 Linux 发行版。
在这里插入图片描述

💡 提示: 要确保一切运行顺利,请务必按照指引一步步来进行操作,并确保系统满足所有的前提条件。


3 WSL与VMWare快速对比

维度WSLVMware
系统资源占用WSL的系统资源占用相对较低,因为它是直接在Windows内核上运行,无需模拟整个操作系统。VMware需要模拟整个操作系统,因此会占用更多的系统资源。
性能WSL的性能通常优于VMware,因为它直接在Windows内核上运行,无需通过任何虚拟化层。VMware的性能可能会受到虚拟化层的影响,尤其是在进行高强度计算时。
兼容性WSL与Windows的兼容性非常好,可以直接访问Windows文件系统,并在Windows和Linux之间无缝切换。但是,WSL可能无法完全支持所有Linux应用程序和功能。VMware可以运行任何Linux发行版,并完全支持所有Linux应用程序和功能。但是,它不能像WSL那样直接访问Windows文件系统,或在Windows和Linux之间无缝切换。
易用性WSL易于安装和使用,特别是对于那些主要使用Windows但偶尔需要访问Linux功能的用户来说。VMware的安装和配置可能会更复杂一些,但它提供了更多的自定义选项和控制。

💡 提示: 选择 WSL 还是 VMWare,主要取决于具体需求和使用场景,需要权衡性能、资源消耗和使用便利性。


通过WSL无缝将代码运行至Linux环境

4.1 接入WSL目录

通过 IntelliJ IDEA 在 \\wsl$ 目录下创建项目
在这里插入图片描述
我在该目录下创建了一个java-demo的环境:
在这里插入图片描述

4.2 配置运行环境

4.3.1 安装 JDK

为了将项目可以运行在Linux中,我们需要安装JDK环境

sudo apt update
sudo apt install openjdk-11-jdk

在这里插入图片描述

4.3.2 验证 JDK 安装

通过运行下面的命令来确认 JDK 是否已成功安装和配置:

java -version

在这里插入图片描述

4.4 在Ubuntu中执行jar包

我们找到Main方法的位置,执行如下命令:
在这里插入图片描述
可以看到操作系统和版本号成功打印出来了。


5 基于NatApp实现远程访问虚拟机

在我们的日常开发工作中,能够远程访问和操作虚拟机大大提升了工作的灵活性和效率。这一章,我们将使用NatApp这一专业的内网穿透工具,实现远程访问虚拟机的目标。

5.1 内网穿透与NatApp简介

内网穿透是一种网络技术,能够让你在任何地方都可以访问到局域网中的设备,就像直接连接到局域网一样。NatApp则是一款优秀的内网穿透工具,以其稳定性和高效性受到了开发者的喜爱。

NatApp的主要优势在于其简单易用,能快速实现远程访问,而无需复杂的网络配置和设置。下面,我们将指导你如何配置和使用NatApp来实现远程访问虚拟机。

5.2 配置与使用NatApp

5.2.1 下载与安装

首先,需要访问NatApp官方网站下载对应的客户端,并按照提示完成安装过程。

5.2.2 创建穿透任务

  1. 打开NatApp客户端并登录。
  2. 购买隧道,使用免费隧道即可。
  3. 根据下图完成创建。
    在这里插入图片描述

5.2.3 启动穿透服务

修改安装的客户端目录下的config.ini文件,authtoken直接从之前的网页那边复制。
在这里插入图片描述
在这里插入图片描述

5.3 测试与验证

双击natapp.exe就建立成功了。
在这里插入图片描述
当然,在远程连接之前需要在ubuntu中安装ssh服务,具体安装教程可以见参考文献的第二点。接下来,我们在另一台机器进行远程连接,我所使用的远程连接工具是mobaXterm:
在这里插入图片描述s
输入上面的网址和端口号,就连接成功了。如同使用云服务一样。
在这里插入图片描述

💡 小提示: 在使用NatApp时,请确保网络稳定,并注意保护你的网络安全,避免暴露重要的个人信息和网络资源。

注意事项

  • 确保Windows防火墙允许SSH服务的入站连接。
  • 在进行内网穿透时,要格外注意网络安全,尤其是暴露了22端口之后。
  • 使用强密码,并考虑使用SSH密钥对进行身份验证,以增强安全性。

总结

在本文中,我们详细探讨了**WSL(Windows Subsystem for Linux)**的安装、配置和使用,指导读者如何在Windows系统中轻松设置和运行Linux环境。我们比较了WSL与VMWare在性能、资源消耗和使用便利性方面的差异,揭示了WSL在开发者日常工作中的实用性和优势。最后,我们还深入讲解了如何在WSL中通过IntelliJ IDEA开发Java项目,并在Ubuntu中配置和运行Java环境,实现在Linux下无缝运行Java项目。通过WSL,开发者可以更加高效、便捷地利用Linux的功能和特性,优化开发流程和提升工作效率。


参考文献

  1. WSL 使用教程 - 知乎
  2. 【WSL】WSL折腾之旅(3)SSH远程连接 - 知乎
  3. Windows 11 安装 WSL2 - 知乎
  4. 适用于 Linux 的 Windows 子系统文档 - microsoft官方

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/143036.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构与算法

目录 数据结构与算法 为什么要学习数据结构和算法? 常见的数据结构 常用算法 插入排序 一、概念及其介绍 二、适用说明 三、过程图示 希尔排序 一、概念及其介绍 二、适用说明 三、过程图示 归并排序 一、概念及其介绍 二、适用说明 三、过程图示 …

python抓取网页视频

1. 喜马拉雅音频 1-1 喜马拉雅 import requests import json import time import random import hashliburl https://www.ximalaya.com/revision/play/v1/audio?id46103875&ptype1headers { user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.3…

【量化】量化原理浅析

前言 模型在端侧运行时,会追求模型保持原有精度的同时,让模型的运行速度更快。基本方向为模型压缩和加速,着力于减少网络参数量、降低计算复杂度。可通过以下方式实现: 针对网络结构本身进行改进,常用的3x3的卷积的叠加…

从零搭建开发脚手架 顺应潮流开启升级 - SpringBoot 从2.x 升级到3.x

文章目录 涉及升级项导入包修改SpringBoot3.x中spring.factories功能被移除 涉及升级项 升级JDK 8 -> JDK17 Spring Boot 2.3.7 -> Spring Boot 3.1.3 Mysql5.7.x -> Mysql8.x Mybatis-Puls 3.4.2 -> 3.5.3 knife4j 2.x -> 4.3.x sa-token 1.24.x -> 1.…

基于Xilinx UltraScale+ MPSOC(ZU9EG/ZU15EG)的高性能PCIe数据预处理平台

PCIE707是一款基于PCIE总线架构的高性能数据预处理FMC载板,板卡具有1个FMC(HPC)接口,1路PCIe x4主机接口、1个RJ45千兆以太网口、2个QSFP 40G光纤接口。板卡采用Xilinx的高性能UltraScale MPSOC系列FPGA作为实时处理器&#xff0c…

vue3 - 使用 xlsx 库将数据导出到 Excel 文件

GitHub Demo 地址 在线预览 xlsx是由SheetJS开发的一个处理excel文件的JavaScript库。它可以读取、编写和操作 Excel 文件 安装xlsx npm install xlsx --save实现一个通过的数据导出工具类 import * as XLSX from xlsx/*** description: 导出excel* param {any} dataList* p…

公司新招了个字节拿36K的人,让我见识到了什么才是测试扛把子......

5年测试,应该是能达到资深测试的水准,即不仅能熟练地开发业务,而且还能熟悉项目开发,测试,调试和发布的流程,而且还应该能全面掌握数据库等方面的技能,如果技能再高些的话,甚至熟悉分…

枚举enum

使用enum关键字定义提供枚举类的对象,多个对象用逗号分开,结尾用分号结束提供构造方法,给属性赋值使用public statiac final来修饰是属性提供get方法提供toString方法 public enum Season {SPRING("春天", "春暖花开"),…

linux下解决tomcat错误问题

错误一: Linux下Tomcat启动报错:Neither the JAVA_HOME nor the JRE_HOME environment variable is defined 原因:可能是Linux环境变了,需要在catalina.sh文件里指定JDK路径 解决方式: 在/bin/catalina.sh配置文件中加…

CSS详细基础(二)文本样式

插播一条CSS的工作原理: CSS是一种定义样式结构如字体、颜色、位置等的语言,被用于描述网页上的信息格式化和显示的方式。CSS样式可以直接存储于HTML网页或者单独的样式单文件。无论哪一种方式,样式单包含将样式应用到指定类型的元素的规则。…

mySQL 安装

一、windows安装包下载 mysql官网提供了两种安装方式,一个是zip安装,另一个是msi安装,这里简绍第一种安装方式,第二种简单,不再简绍 官网下载,根据自己需要选择版本:MySQL :: MySQL Community…

C#设置自动关机

功能:自动设置电脑关机时间,可取消 创建一个shutdown函数,bool isCancle,传入值为ture就取消关机,interval间隔时间,unit不带符号的整型 private static void ShutdownPC(bool isCancel, uint interval){P…

【Java 进阶篇】数据定义语言(DDL)详解

数据定义语言(DDL)是SQL(结构化查询语言)的一部分,它用于定义、管理和控制数据库的结构和元素。DDL允许数据库管理员、开发人员和其他用户创建、修改和删除数据库对象,如表、索引、视图等。在本文中&#x…

数据备份文件生成--根据表名生成对应的sql语句文件

最近客户有个需求,希望在后台增加手动备份功能,将数据导出下载保存。 当然,此方法不适用于海量数据的备份,这只适用于少量数据的sql备份。 这是我生成的sql文件,以及sql文件里的insert语句,已亲测&#x…

Oracle物化视图(Materialized View)

与Oracle普通视图仅存储查询定义不同,物化视图(Materialized View)会将查询结果"物化"并保存下来,这意味着物化视图会消耗存储空间,物化的数据需要一定的刷新策略才能和基表同步,在使用和管理上比…

Fortinet 2023上半年全球威胁态势研究报告:勒索软件检测成下降趋势,针对性攻击持续升温

近日,专注于推动网络与安全融合的全球网络安全领导者Fortinet(NASDAQ:FTNT),发布《2023上半年全球威胁态势研究报告》。报告显示,2023 年上半年勒索软件检出数量继续下降、高级持续性威胁(APT&a…

秋招面经记录

秋招面经记录 MySQLRedis项目分布式框架java网络数据结构设计模式HR手撕 MySQL Mysql中有1000万条数据,每次查询10条,该如何优化(答:Limit子查询优化) select t.* from t_topic t LIMIT 90000,10; 对上面的mysql语句说…

距离矢量路由协议RIP(含Cisco模拟器实验命令配置)

距离矢量路由协议RIP(含Cisco模拟器实验命令配置) 简介 距离矢量路由协议(Routing Information Protocol, RIP)是一种内部网关协议,它位于应用层,使用520 UDP端口。RIP基于距离矢量算法(Bellham-Ford)根据…

Linux socket 字节序

socket介绍 字节序 验证什么字节序 #include<stdio.h> int main() {union {short value;char btypes[sizeof(short)];} test;test.value 0x0102;if(test.btypes[0] 1 && test.btypes[1] 2) {printf("大端字节序\n");}else{printf("小端字节序…

服务网关Gateway_微服务中的应用

没有服务网关 问题&#xff1a; 地址太多安全性管理问题 为什么要使用服务网关 网关是微服务架构中不可或缺的部分。使用网关后&#xff0c;客户端和微服务之间的网络结构如下。 注意&#xff1a; 网关统一向外部系统&#xff08;如访问者、服务&#xff09;提供REST API。在Sp…