CS144--Chapter0--wsl2+docker环境搭建
我的笔记本配置
荣耀magicbook16,容量是500G,芯片是R7-5800
由于笔记本容量较小,因此考虑这个方案,对于台式机用户,建议可以直接用虚拟机或者双系统。
前言
斯坦福官网给出的方法是用他们的镜像(基于Ubuntu23.10)进行实验,但是国内访问他们的镜像的速度着实感人,同时无意间看到一位互联网知己写了这篇文章(友情链接),这篇文章写的非常nice,但是里面缺少了有关于使用windows中的wsl2功能结合docker在vscode里面实现轻量化编程的详细步骤,本人之前了解过docker,使用过wsl2做无人机,vscode也是家常便饭了,但是将这三者结合尚未尝试,于是这篇文章便产生了。
知识预备
什么是wsl
wsl就是微软官方出品的用于在windows系统中得到linux体验的一种东西,现在可以直接在微软商城里面下载。虽然说功能肯定没有原生的linux系统强劲,但只是做一个课设还是更有性价比,毕竟跟虚拟机动辄好多G相比已经非常轻量。这里的Ubuntu则是机器人领域编程常用的linux系统平台。

什么是docker
Docker,我的简单理解就是介于conda和虚拟机之间的一种操作系统级别的容器,想要获得ubuntu操作系统的体验,只需要拉去官网的微缩版本的镜像就可以,不用下载非常大的镜像。
软件界面长这样:

这里就是我使用的两个镜像,一个是docker教程使用的官方镜像.
系统配置步骤
一、安装wsl2
简单,直接到微软商城安装就行
二、安装docker desktop
简单,直接官网下载,所有默认操作即可
三、安装vscode以及相关的扩展
官网安装vscode可能会比较慢,等待一下就好
需要安装的扩展如下:
1.docker

2.wsl

3.remote development

四、拉取docker中的ubuntu镜像并运行
!小技巧:在命令行中直接运行以下shell脚本,如果没有那么会直接自动下载。
docker run -it --rm ubuntu:23.10 bash
完成下载以后就能在图形化界面中看到运行中的系统了。

五、通过vscode连接wsl进行开发
在左侧点击docker图标,就能看到运行中的ubuntu23.10系统了,进一步点开就能看到文件结构,之后就是常规命令行操作了。

Chapter0代码部分配置
一、安装必要库
sudo apt update && sudo apt install git cmake gdb build-essential clang clang-tidy clang-format gcc-doc pkg-config glibc-doc tcpdump tshark
二、邮件传输
这一步跟着官网教程做就行,不是本文章叙述重点。
三、编写可靠数据流函数
本实验的目的是通过编写程序实现在两个主机之间实现可靠的数据流传输。
socket接口编程完成get_URL
socket接口就类似于是一条管道将两个主机连接起来,学过计算机网络的同学应该不陌生。
如果没学过可以参考这个教程(需要科学上网)。
代码如下:
void get_URL(const string& host, const string& path) {Address address(host,80); //construct using the ip+portTCPSocket tcpSocket;//connect to the servertcpSocket.connect(address);// Format the serverstring request = "GET " + path + " HTTP/1.1\r\n"+ "Host: " + host + "\r\n"+ "Connection: close\r\n"+ "\r\n";// Send the HTTP requesttcpSocket.write(request);//define the buffer to store the temp datastd::string buffer;while (true) {tcpSocket.read(buffer);if (buffer.empty()) {break; // No more data}cout << buffer;buffer.clear(); // Clear the buffer for the next read
}
}
相关文章:
CS144--Chapter0--wsl2+docker环境搭建
我的笔记本配置 荣耀magicbook16,容量是500G,芯片是R7-5800 由于笔记本容量较小,因此考虑这个方案,对于台式机用户,建议可以直接用虚拟机或者双系统。 前言 斯坦福官网给出的方法是用他们的镜像(基于Ubu…...
MGRE实验报告二
实验要求: 实验预览图: 实验分析: 1、对R1-R5配置IP地址,同时R1-R5每个路由器各有一个环回 2.1、对R1、R3、R4路由器开启虚拟接口1,分别配置隧道IP、接口封装协议,接口类型、定义封装源、开启伪广播功能&…...
算法设计与分析实验:最短路径算法
一、网络延迟时间 力扣第743题 本题采用最短路径的思想进行求解 1.1 具体思路 (1)使用邻接表表示有向图:首先,我们可以使用邻接表来表示有向图。邻接表是一种数据结构,用于表示图中顶点的相邻关系。在这个问题中&am…...
共用体与枚举法,链表的学习
结构体注意事项: 1.结构体类型可以定义在main函数里面,但是此时的作用域就被限定在该函数中 2.结构体的的的定义的形式:a.先定义类型,后定义变量-----struct stu s b.定义类型的同时,定义了变量:struct…...
SG2520CAA汽车用晶体振荡器
爱普生SG2520CAA是简单的封装晶体振荡器(SPXO),具有CMOS输出,这款SPXO是汽车和高可靠性应用的理想选择,符合AEC-Q200标准,功耗低,工作电压范围为1.8 V ~ 3.3 V类型,宽工作温度-40℃~…...
使用pip将第三方依赖包下载到本地指定位置
pip download -d save_path packages -d:后面接下载包路径(save_path) packages:安装包名称...
C语言探索:水仙花数的奥秘与计算
摘要: 水仙花数,一种特殊的三位数,其各位数字的立方和等于该数本身。本文将详细介绍水仙花数的定义、性质,以及如何使用C语言来寻找100至999范围内的水仙花数。 目录 一、水仙花数的定义与性质 二、用C语言寻找100至999范围内的…...
2024年人工智能应用与先进制造科学国际学术会议(ICAIAAMS 2024)
2024年人工智能应用与先进制造科学国际学术会议(ICAIAAMS 2024) 2024 International Conference on Artificial Intelligence Applications and Advanced Manufacturing Science (ICAIAAMS 2024) 会议简介: 2024年人工智能应用与先进制造科学国际学术会议ÿ…...
计算机图形学 实验
题目要求 1.1 实验一:图元的生成:直线、圆椭区域填充 你需要完成基本的图元生成算法,包括直线和椭圆。 在区域填充中,要求你对一个封闭图形进行填充。你需要绘制一个封 闭图形(例如多边形),并选…...
React + react-device-detect 实现设备特定的渲染
当构建响应式网页应用时,了解用户正在使用的设备类型(如手机、平板或桌面)可以帮助我们提供更优化的用户体验。本文将介绍如何在 React 项目中使用 react-device-detect 库来检测设备类型,并根据不同的设备显示不同的组件或样式。…...
文献速递:肿瘤分割----基于卷积神经网络的系统,用于前列腺癌[68Ga]Ga-PSMA PET全身图像的全自动分割
文献速递:肿瘤分割----基于卷积神经网络的系统,用于前列腺癌[68Ga]Ga-PSMA PET全身图像的全自动分割 01 文献速递介绍 前列腺特异性膜抗原(PSMA)PET/CT成像近年来在前列腺癌检测领域中获得了显著的重视。PSMA是一种在前列腺上皮…...
2024 IC FPGA 岗位 校招面试记录
引言 各位看到这篇文章时,24届校招招聘已经渐进尾声了。 在这里记录一下自己所有面试(除了时间过短或者没啥干货的一些研究所外,如中电55所(南京),航天804所(上海))的经…...
Linux 命令 —— top
Linux 命令 —— top 相对于 ps 是选取一个时间点的进程状态,top 则可以持续检测进程运行的状态。使用方式如下: 用法: top [-d secs] | [-p pid] 选项与参数: -d secs:整个进程界面更新 secs 秒。默认是 5 5 5 秒。…...
【Docker】使用VS创建、运行、打包、部署.net core 6.0 webapi
欢迎来到《小5讲堂》,大家好,我是全栈小5。 这是《Docker容器》系列文章,每篇文章将以博主理解的角度展开讲解, 特别是针对知识点的概念进行叙说,大部分文章将会对这些概念进行实际例子验证,以此达到加深对…...
抖音短视频矩阵营销系统源头独立开发搭建
开发背景 抖音短视频矩阵系统源码开发采用模块化设计,包括账号分析、营销活动、数据监控、自动化管理等功能。通过综合分析账号数据,快速发现账号的优势和不足,并提供全面的营销方案,以提高账号曝光率和粉丝数量。同时,…...
Springboot使用数据库连接池druid
springboot框架中可以使用druid进行数据库连接池,下面介绍druid在springboot中使用和参数配置介绍。 数据库连接池(Druid)是一种用于管理数据库连接的机制,其工作原理和常见使用方法如下: 原理:数据库连接…...
Springboot-前后端分离——第三篇(三层架构与控制反转(IOC)-依赖注入(DI)的学习)
本篇主要对ControllerServiceDAO三层结构以及控制反转(IOC)与DI(依赖注入)进行总结。 目录 一、三层架构: Controller/Service/DAO简介: 二、控制反转(IOC)-依赖注入(DI): 概念介绍: DOC与…...
Open CASCADE学习|曲面上一点的曲率及切平面
曲率(Curvature)是一个几何学的概念,用于描述一个物体的形状在某一点上的弯曲程度。在我们日常生活中,曲率与我们的生活息息相关,如道路的弯道、建筑物的拱形结构、自然界的山脉等等。了解曲率的概念和计算方法&#x…...
CentOS 8最小安装和网络配置
文章目录 简介下载地址VMware 17创建虚拟机最小化安装拥有的外部命令yum源有问题网络配置开启SSH Server服务关闭防火墙设置host配置JDK环境完整参考 简介 CentOS 8的IOS如果下载DVD版本至少有10G 这里我们直接选择最小安装,因此选择最小系统boot版本 CentOS-8.5.21…...
【代码随想录-链表】环形链表 II
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老导航 檀越剑指大厂系列:全面总结 jav…...
从Noise2Noise到Neighbor2Neighbor:图解自监督去噪的演进与核心‘采样’技巧
从Noise2Noise到Neighbor2Neighbor:自监督去噪技术的范式跃迁与工程实践 当你在昏暗环境下用手机拍摄一张照片时,那些恼人的彩色颗粒可能让你直接点击删除键。传统去噪方法需要大量"干净-噪声"图像对进行训练,而真实世界中获取完美…...
保姆级教程:用ArcGIS Pro搞定全国30米DEM数据下载与无缝拼接(附避坑指南)
全国30米DEM数据高效处理:ArcGIS Pro全流程实战指南 对于GIS从业者和研究者来说,获取并处理全国范围的数字高程模型(DEM)数据是一项基础但关键的工作。传统方法往往效率低下且容易出错,而ArcGIS Pro凭借其现代化架构和强大工具链,…...
健身房会员行为可视化涨点改进 | 全网独家复现,健康洞察实战篇 引入多维度可视化+用户分层分析,助力会员留存、课程优化、个性化指导有效涨点
目录 一、实战背景与核心目标(贴合健身房实际运营场景) 1.1 实战背景 1.2 核心目标 1.3 数据集说明(可直接获取,确保复现) 二、完整代码实现(全流程可复现,标注详细注释) 2.1 环境配置(明确版本,避免兼容问题) 2.2 数据加载与初步探索(补充异常值、冗余数据…...
仅剩47套!2024巴洛克风格LoRA微调模型包(附11种教堂穹顶材质映射参数表)
更多请点击: https://kaifayun.com 第一章:巴洛克美学的数字重生:LoRA微调模型包发布宣言 当黄金比例遇见梯度下降,当繁复雕花邂逅低秩矩阵分解——巴洛克精神在AI时代迎来一场静默而磅礴的复兴。本次发布的 LoRA 微调模型包并非…...
分布式团队的代码协作规范:从分支策略到提交信息格式
在分布式团队模式下,代码协作的地域分散、时区差异和沟通成本,给版本控制和质量保障带来了严峻挑战。作为软件测试从业者,我们不仅是代码质量的“守门员”,更需要深入理解并推动执行规范的代码协作流程,从分支管理到提…...
探索C/C++程序从源码到可执行文件的编译之旅
计算机程序设计语言可大致分为机器语言、汇编语言和高级语言三类。高级语言需经翻译成机器语言后方可执行,此翻译过程包括编译和解释两种方式。因此,高级语言可进一步细分为编译型语言和解释型语言。编译型语言如C、C、Java,其程序需经过预处…...
IDM激活脚本完全指南:3种方法实现永久免费使用
IDM激活脚本完全指南:3种方法实现永久免费使用 【免费下载链接】IDM-Activation-Script IDM Activation & Trail Reset Script 项目地址: https://gitcode.com/gh_mirrors/id/IDM-Activation-Script 还在为Internet Download Manager(IDM&…...
uml学习笔记(1)
UML学习笔记一:面向对象与UML基础入门 一、面向对象开发思想 两种开发范式对比 结构化方法:以功能、流程为核心拆分模块。逻辑简单直观,但复用性差、耦合度高、维护困难,不适合复杂大型项目。面向对象方法:以现实事物的…...
内部举报、纪检谈话等敏感场景,企业沟通工具需要具备哪些安全能力
一家组织处理内部举报时,沟通链路往往比事件本身更敏感。 举报人担心身份暴露,被举报部门担心信息扩散,纪检或内控人员需要核实事实,法务和审计又可能随后介入。一次谈话纪要、一张截图、一份附件、一个会议链接,都可能…...
【项目实训】法律文书智能摘要系统6
本开发周期内,团队围绕系统的核心业务能力与底层技术架构取得了重大进展。我们不仅完成了面向用户的批量处理、法规知识库等关键功能模块,还从底层重构了AI助手的长程记忆机制,并夯实了文本处理管线与用户认证体系。各项开发工作均按计划推进…...
