VS的安装和配置

目录

 概述

安装Visual Studio

下载引导安装包

在线安装(推荐)

使用Visual Studio进行开发

创建项目

配置项目

项目 VS 解决方案(重要)

命名

完成项目创建

创建源文件

编写代码

VS项目目录的说明(补充)

HelloWorld程序的注意事项(重点)

多项目的解决方案如何启动?

其他补充

更好用的代码提示功能

查看或修改C语言版本

修改启动快捷键

选择启动项目的插件

固定当前项目为启动项目

VS的一些快捷键

配置代码模板(必做)


 概述

对于一名C语言程序员而言,进行C语言程序的开发一般需要一个文本编辑器加上一个编译器就足够了。但为了方便起见,我们选择使用集成开发环境——Visual Studio(简称VS)。

什么是集成开发环境?

集成开发环境(Integrated Development Environment),也普遍简称IDE,指的是一个提供用于软件开发的全套工具的环境。这些工具通常包括代码的文本编辑器、编译器、调试器,以及其他用于简化软件开发过程的工具和库。

IDE能够让开发者在一个统一的界面下进行代码编写、调试、测试等多种任务,从而提高效率。

一些非常著名的IDE:

  1. Java:Eclipse、MyEclipse、IntelliJ IDEA
  2. Python:PyCharm

以上是一些语言专用的IDE,像我们今天要讲的Visual Studio以及它的好兄弟Visual Studio Code则可以通过安装插件,扩展等方式,理论上作为所有语言的集成开发环境。

其中VSCode作为一个轻量级的编辑器,它更适合用于开发前端、脚本开发等场景。

VS则功能更强大,更适用于处理大型项目。VS是比较常见的C/C++开发使用的IDE。

最后,我们要强调的是无论使用什么IDE还是其它编辑器,归根结底都只是工具,工具的目的是提升效率,而不是根本。

到了Linux阶段以及很多公司当中,我们都会直接在一个文本编辑器中编写C语言代码,所以大家也不要太过于依赖VS。

安装Visual Studio

下面讲一下如何安装VS,按照步骤完成即可。这里提供两种方式安装:

  1. 在线引导安装
  2. 离线安装

建议优先选择第一种安装方式,两种方式所需要的安装文件都可以在百度网盘中获取:

链接:百度网盘 请输入提取码

提取码:mu6f

下载引导安装包

引导安装包可以从官网下载:下载 Visual Studio Tools - 免费安装 Windows、Mac、Linux

选择下载社区版Community即可

图 1. VS下载引导安装包

VS下载引导安装包

如果是Mac笔记本,可以选择下方的Mac版本:

图 2. VS下载引导安装包-Mac版

VS下载引导安装包-Mac版

引导安装包直接双击打开,即可开始VS的安装。

在线安装(推荐)

双击引导安装包后,就会进入工作负荷以及安装位置的选择:

  1. 工作负荷选择(也就是选择特定开发任务的工具组件集合):

    VS安装-工作负荷选择

    直接按照图示中选择C++桌面开发即可,其他的不要选择。

  2. 安装位置选择:

    VS安装-安装位置选择

    建议将三个路径放在同一级目录下,这样便于管理,可以参考图片中给出的路径。

    建议安装目录不要放在系统盘下,VS作为IDE会占用较多磁盘空间。

  3. 上述设置完成后,点击安装即可。安装过程会下载较多资源,请耐心等待。

    VS安装-联网下载安装

    此过程需要连接微软服务器进行在线安装,通常情况下即便不挂梯子也能正常完成安装。

  4. 安装完成后,建议重启电脑。

注意事项

  1. 安装完成后,VS一般不会自动创建桌面快捷方式,可以在开始菜单中找到VS,点击启动。建议将它发送桌面快捷方式或者钉到任务栏,后续一段时间我们会经常使用VS。
  2. 第一次启动VS,会提示登录微软账号,这一步相当于激活VS。建议登录,如果没有微软账户,建议注册一个。

    VS安装-登录微软账号

  3. 如果在线安装失败(比如碰到始终卡顿在某个进度,或者直接失败),这是微软服务器的问题,此时可以考虑离线安装VS。

 

使用Visual Studio进行开发

好了,到此你已经成功安装了VS,距离成为一名真正的C程序员又进了一大步。

下面我们来简单介绍一下如何使用VS进行开发,写出我们第一个C程序的演示代码——HelloWorld!。

创建项目

第一次打开VS,界面如下图所示:

图 9. 第一次打开VS的效果图

第一次打开VS的效果图

推荐直接选择"继续但无需代码",然后就进入了VS主界面:

图 10. VS主界面

VS主界面

注:初次进入还有一个新特性提醒界面,已经被我关闭了。

点击VS左上角菜单栏的"文件 --> 新建 --> 项目"

图 11. 使用VS创建项目

使用VS创建项目

然后进入创建新项目的选择,选择创建"控制台应用",因为我们程序的输出结果要依赖于控制台,所以创建控制台应用。

图 12. 创建控制台应用

创建控制台应用

随后就进入了创建新项目的配置页面:

图 13. 配置新项目页面

配置新项目页面

到这一步就是整个创建项目的流程,但最后一步"配置新项目"我们需要详细谈一谈。

配置项目

上图的配置页面中可以看到,我们主要可以调整三个选择:

  1. 项目名称。
  2. 位置。
  3. 解决方案名称。

我们先重点来讲一下VS当中项目(project)解决方案(solution),理解它们之间的关系是使用VS的一个重点。

项目 VS 解决方案(重要)

解决方案:

解决方案是VS当中进行代码开发的顶层结构,它是一个或多个项目的容器。用于协调多个项目之间的关系和依赖性,尤其是在大型应用程序开发中。解决方案不仅仅是项目的简单列表,它还包括项目之间的依赖关系、编译顺序以及其他元数据。

解决方案的文件夹下通常会自动生成一个扩展名为.sln的文件,来保存这些项目之间关系的信息。

项目:

项目是一个C程序构建过程中的基本组织单元。项目中会包含:源代码文件、资源文件(如图片或数据文件)、配置信息文件等。

通俗的说:

VS中的一个项目是进行开发的基本单元,一个解决方案至少有一个项目,也可以包含多个项目,这些项目可能相互依赖。解决方案会管理这些多个项目的关系。

如果你熟悉Java开发,那么可以使用IDEA和VS做一个类比:

  1. IDEA的module(模块)是开发的基本单元,project(工程)是模块的容器,一个工程最少有一个模块,但也可以有多个模块。
  2. VS的项目是开发的基本单元,解决方案是项目的容器,一个解决方案至少有一个项目,但也可以有多个项目。

命名

搞清楚它们之间的关系后,就要稍微浅谈一下命名了:解决方案和项目应该如何命名呢?

首先,我们要说一个大的原则,以后大家无论进行什么语言的程序开发,在遇到命名时,都一定会存在一个大前提:"简洁明了、见名知意"!

也就是说,这个命名应当明确表达功能和作用,这是最重要的原则。

其次,一般来说,名字都应该由合法的英文单词组成,不应出现中文或者中文拼音。

最后,解决方案和项目命名的普遍约定是:

  1. 采用大驼峰命名法(也叫帕斯卡命名法)。每个单词的首字母都大写,包括第一个单词,各个单词之间直接连接不用加下划线等符号。例如:FirstName、MyProgram等。
  2. 尽量避免出现空格,点、横杆等特殊字符。命名仅由英文字符和数字组成。

最后,关于命名并没有强制的一定的约束,具体还是要看各公司各研发单位的习惯而定。上面给出的只是大家普遍遵守的一些约定。

注意事项

为了让大家更清晰的看代码,上课时我会把解决方案、项目的命名前带上序号,比如:

  1. "00_HelloWorld":第一个项目,这个项目叫HelloWorld。
  2. "50C_Day01":第50期,C语言部分内容的第一天。

但一般而言,这种序号在实际开发中不会使用。

完成项目创建

上面的所有内容都了解后,就可以完成一个项目的创建了,大家参考我的命名和配置:

图 14. VS项目创建配置图

VS项目创建配置图

具体的解释都已经在图中贴出了,设置完成后,点击创建即可完成项目创建。

创建源文件

完成项目创建后,还需要在项目下创建C语言源文件,在一个C语言的源文件当中才能够开始写C语言代码。

点击创建项目后,首先你会直接进入以下页面:

图 15. VS项目主界面-HelloWorld

VS项目主界面-HelloWorld

VS会默认创建一个"HelloWorld.cpp"文件,这是一个C++源代码文件,但我们学习的是C语言,所以我们可以直接删除这个文件。

然后"右键点击源文件 --> 添加 --> 新建项"

图 16. VS新建项

VS新建项

此时可能会弹出以下两种窗口:

图 17. 新建项选择-情况1

新建项选择-情况1

图 18. 新建项选择-情况2

新建项选择-情况2

无论出现哪一种情况都一样,直接修改名字为"xxx.c",即可在源文件下面创建一个C语言源文件。

其中"xxx"代表此源文件的名字,关于源文件的命名,建议大家采取以下策略:

  1. C语言源文件通常以".c"结尾。
  2. 见名知意,使用合法的英文单词。
  3. 单词字母全部小写,如果文件名由多个单词组成,通常使用下划线"_"来分隔这些单词。
  4. 不要出现下划线以外的特殊字符。原则上只使用下划线、英文字母和数字作为命名且不要用数字开头。

举几个例子:

  1. a.c
  2. main.c
  3. hello.c
  4. hello_world.c
  5. ...

.c和.cpp的区别

在VS当中,用.cpp写代码会使用C++编译器来编译代码,遵循C++语言标准。

而使用.c写代码会使用C编译器来编译代码,遵循C语言标准。

大家都知道C++就是以C语言为基础扩展而来的编程语言,C++是兼容C语言的。所以理论上来说,用C++编译器来编译C语言代码,也是可以照常编译执行的。

但我们要注意的是:

  1. C++并不是完全兼容C语言的,C语言中存在极少的某些语法并不被C++支持(虽然这些语法不常用)。
  2. C++相比C语言增加了很多新特性,这就导致C++的编译器会执行更严格的编译检查。所以如果用C++编译器编译C语言代码,需要让你的C语言代码反过来符合C++规范。这有时会限制你编写C语言程序。
  3. C++最初确实是以C语言为基础设计的,但随着时间的推移,两者已经发展成为两个独立的、具有各自特性和用途的编程语言。希望大家不要把这两门语言混为一谈。

总之,即便大多数情况下用.cpp写C语言代码是没问题的,但为了避免踩坑出问题,也为了谨记C不是C++,还是请大家用.c来编写C语言代码,安全省心。

编写代码

创建完毕.c文件后,双击打开此文件,然后编写代码。

在本小节中,我们只管写代码运行,下节我们再讲这些代码的含义。

代码块 2. 一个简单的hello world案例

#include <stdio.h>
int main() {printf("hello world!\n");return 0;
}

代码编写完成后,你可以使用以下两个按钮来启动程序(在VS主界面的上方菜单栏):

图 19. VS-启动程序的两个按钮

VS-启动程序的两个按钮

这两个按钮的差别是:

  1. 点击按钮1"本地 Windows 调试器"启动程序,此时程序会以Debug模式启动。
  2. 点击按钮2"开始执行(不调试)"启动程序,此时程序会以正常模式启动。

关于Debug模式和正常启动程序的区别,后续课程会详细讲解。在日常的开发中,我们更建议大家使用按钮1,以Debug模式来启动程序。

点击启动程序后,若正常运行不出意外,你会看到控制台如下图所示:

图 20. VS-HelloWorld运行结果

VS-HelloWorld运行结果

当然,如果出问题大概率就是代码中的单词拼错了,某一句代码漏了分号等问题。请检查一下VS的错误输出列表,修改代码即可!

注意事项:

  1. 请大家把编译器的版本从默认的x64(64位)改为x86(32位)。这么做的目的主要是为了上课方便以及规避一些可能存在的坑。

    即:

    选择32位平台编译器来编译代码

  2. 无论点击哪个按钮,以什么模式启动程序,都需要经历编译源代码,生成可执行程序,执行可执行程序的过程。(这个过程后续会详细讲解,现在你只需要知道代码被编译执行就可以了。)

图 21. 选择32位平台编译器来编译代码

VS项目目录的说明(补充)

在VS的解决方案资源管理器当中,我们可以清晰的看到一个项目下面又分了几个"层级",如下图所示:

图 22. VS项目的层级关系

VS项目的层级关系

我们可以在解决方案资源管理器当中选择一个项目,然后右键选项点击"在文件资源管理器中打开文件夹"。此时打开的就是此项目在本地的文件目录。

如下图所示:

图 23. VS项目目录

VS项目目录

我们可以发现这个项目的目录下并没有我们想象的:

  1. 头文件目录文件夹
  2. 源文件文件夹
  3. 资源文件文件夹
  4. ...

这是因为:VS的一个项目当中的"外部依赖项"、"头文件"、"源文件"等并不是一个物理目录,只是一个逻辑上的分类。实际上它们直接物理存储在同一个目录下!

此目录下存储的诸如.vcxproj作为后缀名的文件,实际上就是存储了这些同一个目录下的项目文件的关系。

所以就VS而言,解决方案,项目的关系可以用下图来描绘:

图 24. VS解决方案、项目组织图

VS解决方案、项目组织图

试想一下,如果在VS项目的"头文件"下面创建一个"hello.h",如下图所示:

图 25. 创建一个新的头文件

创建一个新的头文件

这两个文件在实际的项目目录下,是如何存储的呢?

答案很简单,直接存储在同一目录下。

HelloWorld程序的注意事项(重点)

对于一个简单的HelloWorld程序,代码如下:

代码块 3. 简单的HelloWorld-C程序

#include <stdio.h>
int main() {printf("hello world!\n");return 0;
}

请大家注意以下细节:

  1. "#include"和"<stdio.h>"之间一定要有一个空格!!!
  2. 代码中"int mian(){}"被成为main函数。对一个C语言程序而言,main函数(也叫主函数)是具有唯一性的,因为它是程序的入口,所有C语言的程序都会从main函数开始执行。

那么对于VS而言,若一个项目中出现了多个main函数,程序该从哪里执行呢?显然VS是不可能自己搞清楚这个事情的。

所以VS不允许一个项目中出现两个main函数,如果希望写两个main函数,请创建多个项目!

多项目的解决方案如何启动?

由于一个项目只能存在一个main函数,所以如果希望多个main函数共存,就需要创建存在多个项目的解决方案。

我们已经知道这个按钮的作用是:

图 26. VS-启动C程序

VS-启动C程序

编译代码,生成可执行程序,然后运行这个可执行程序。

那么如果此解决方案有多个项目,又是什么情况呢?

很简单,由于每个项目中最多只有一个main入口函数,那么VS会编译每一个项目中的代码,为每一个项目生成一个可执行文件。也就是会生成多个可执行文件。

那么问题又来了,多个可执行文件最终执行哪一个呢?还是时候全部都执行?

观察下图中同一个解决方案下的,两个项目的项目名,它们有什么区别?

图 27. 多项目解决方案

多项目解决方案

很显然,第一个项目HelloWorld的名字是加粗的。这种加粗意味着项目HelloWorld是启动项目,点击启动按钮,会执行该项目生成的可执行文件。

VS也提供了修改启动项目的功能,右键单击某个项目会出现如下图所示的菜单:

图 28. VS设置启动项目

VS设置启动项目

设定启动项目后,点击按钮就会运行对应项目中的main方法。

除了设置固定的启动项目外,VS还可以直接将启动项目设置为当前打开的项目,如下所示:

图 29. VS设置启动项目为当前项目

VS设置启动项目为当前项目

两种方式,大家自行选择一种即可。

其他补充

VS在实际使用过程中,可以进行一些设置,使得它更好用。这一部分内容都不重要,也没什么必须的设置,大家感兴趣看一下,觉得无所谓就不要看了。

更好用的代码提示功能

使用VS写代码时,若想选择代码提示进行输入,需要按一下Tab键再回车,这未免麻烦了点,我们可以进行以下设置,使得可以直接回车选择代码提示:

  1. 打开 Visual Studio。
  2. 点击菜单栏中的"工具 --> 选项"
  3. 在左侧的导航树中,定位到"文本编辑器 --> C/C++ --> 高级"
  4. 在右侧的设置列表中,找到与 IntelliSense 相关的设置。
  5. 将"主动提交成员列表"从默认设置的False改成True。

图 30. 更好用的代码提示功能-设置界面

更好用的代码提示功能-设置界面

设置完成后,代码提示出现时就可以直接回车选择生成代码了,这样会更方便一些。

查看或修改C语言版本

要查看或修改在Visual Studio中使用的C语言版本:

  1. 打开你的项目。
  2. 右键点击项目名,选择 属性
  3. 在左侧导航窗格中,选择 配置属性--> 常规
  4. 查找与C语言标准相关的选项(C语言标准),并根据需要进行调整。

图 31. 项目属性当中的C语言标准

项目属性当中的C语言标准

那么上图中的MSVC是什么东西呢?

C语言标准中的旧MSVC是什么?

默认情况下,VS采用(旧MSVC)作为C语言的版本。那么MSVC是什么呢?

MSVC(Microsoft Visual C++)是微软公司自己开发的C、C++语言编译器套件,可以用来编译C或者C++程序。但它有自己的一套特性和扩展,并不完全遵循官方标准。

比如MSVC中的C语言编译器,它支持C90的全部特性和部分C99的特性,几乎不支持C11等更高版本。

在当下我们的学习中,这个编译器已经够用了,因为我们只学习C语言的基本概念语法。

MSVC存在一些特定于Windows平台的扩展和特性,这在某种程度上限制了其跨平台性,而且它对C语言的支持并不好。

为了更好的实现跨平台性,尤其是对Unix/Linux操作系统的支持,我们在后续会使用GCC作为编译器。

GCC(GNU Compiler Collection即GNU编译器套件),是Unix-like平台下最常用的C/C++语言编译器。它开源免费,性能优良,完整支持官方标准,扩展性和跨平台性好。

修改启动快捷键

点击菜单栏中的"工具 --> 选项",打开设置选项卡。按照下图输入"调试.启动"搜索找到该快捷键,然后即可进行修改。

图 32. 修改调试启动快捷键

修改调试启动快捷键

默认的Debug调试启动快捷键是F5,我一般都会修改成F1。

同样的操作,搜索"调试.开始执行不调试"可以找到正常启动快捷键,然后也可以进行修改。

图 33. 修改正常启动快捷键

修改正常启动快捷键

默认的正常不调试启动快捷键是Ctrl + F5,我一般都会修改成Ctrl + F1,但这个快捷键基本不会使用,改不改都不太所谓。

如果你想修改VS的其它快捷键,也可以仿照该案例去完成。

选择启动项目的插件

在使用VS编写C代码的过程中,毫无疑问需要经常创建多项目解决方案,此时频繁手动切换启动项目是比较麻烦的。所以推荐一个可视化选择启动项目的插件:

SwitchStartupProject

大家可以在"扩展--管理扩展"的"联机市场"中搜索此插件安装,然后重启VS即可。

安装成功后,主界面菜单栏下就会多一个下拉框用于选择当前启动项目,这个插件还是比较方便的,推荐安装。

图 34. 选择启动项目-插件

选择启动项目-插件

注:此插件偶尔会有bug无法选择启动项目,此时重启解决方案即可解决。

固定当前项目为启动项目

拥有上面一个插件后,虽然让我们的VS启动项目操作变得简单很多了,但实际还是不太方便的,还是需要每次都点击选择启动项。

实际上我们更希望,点击哪个项目中的main.c文件,哪个项目就是启动项目。VS支持这样的设置,参考下列步骤设置:

点击菜单栏中的"工具 --> 选项",打开设置选项卡。按照下图输入"生成并运行"搜索找到对应选项框,勾选它即可。

图 35. 更好用的启动项目设置-图示

更好用的启动项目设置-图示

这样设置后,你每次创建的新的解决方案,都会固定使用当前选定的项目作为启动项目。

VS的一些快捷键

VS常用快捷键:

Ctrl + L: 快速删除当前行

Ctrl + D: 快速复制当前行到下一行

Ctrl + 空格: 强制显示代码提示

Ctrl + Alt + L: 打开解决方案资源管理器。

Ctrl + K + D(按住Ctrl后再按K和D两个键位): 标准格式排版整个文件中的代码

Ctrl + Shift + /:快速注释以及释放注释。

配置代码模板(必做)

如果每次新建项目时,都选择"空项目"或者"控制台应用",那么接下来就需要自己动手新建一个".c"文件编写main函数代码,这是比较麻烦的。所以建议大家配置一个代码模板,这样便于大家快速创建一个C程序骨架。

按照以下流程走:

1.创建一个标准的C项目

  1. 打开Visual Studio
  2. 新建一个C++"控制台应用"项目。
  3. 在解决方案资源管理器中,删除所有默认生成的.cpp文件。
  4. 添加一个新的.c文件,命名为main.c
  5. main.c文件中,输入你想要的默认内容。

这里推荐一个"main.c"文件的代码内容:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>/**/int main(void) {printf("hello world!\n");return 0;
}

其中:

  1. "#define _CRT_SECURE_NO_WARNINGS" 是微软的MSVC平台下特有的宏定义,用于禁用运行时编译警告。
  2. "#include <stdio.h>"包含头文件,这样就可以使用"printf"等函数。

导出项目为模板

  1. 在VS的文件菜单上选择“项目 --> 导出模板”。
  2. 选择“项目模板”,然后点击下一步。
  3. 输入模板的名称、描述等相关信息,然后点击完成。(注意模板的名称必须是英文的,不能用中文)
  4. 记住你输入的模板的名字,方便后续创建项目时使用。

图 36. 导出项目为模板-图

导出项目为模板-图

使用新模板创建项目

  1. 当你下次新建一个项目时,你可以在模板中下拉找到你创建的项目模板。
  2. 选择你刚才保存的模板,输入你的项目名,并创建。
  3. 这个新项目会自动生成一个main.c文件,内容和你在模板中设置的完全相同。

你还可以将你的模板固定在项目创建的左页面,比如下图:

图 37. 固定项目模板到页面

固定项目模板到页面

这样下一次你就可以更快的找到你创建的模板了。

修改项目模板的代码

在很多时候,我们需要随着学习进度来修改模板的代码,比如我想要在模板当中添加一些宏定义或者头文件包含指令。首先你需要找到模板的.c文件文件存储的路径,它一般在:

C:\Users(用户)\(用户名)\Documents(文档)\Visual Studio 2022\Templates\ProjectTemplates

比如在我的电脑当中,这个文件就在:

图 38. 模板代码文件位置

此时打开这个模板文件,修改当中的main.c文件即可:

图 39. 修改模板代码文件

修改模板代码文件

修改后,再次使用VS新建项目,就可以看到模板代码已经发生了变化。(旧项目没有任何影响)

以上,就完成了VS项目模板的配置和使用。

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

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

相关文章

linux模拟HID USB设备及wireshark USB抓包配置

文章目录 1. 内核配置2. 设备配置附 wireshark USB抓包配置 linux下模拟USB HID设备的简单记录&#xff0c;其他USB设备类似。 1. 内核配置 内核启用USB Gadget&#xff0c;使用fs配置usb device信息。 Device Drivers ---> [*] USB support ---><*> USB …

【C++】vector的使用

1. vector的构造 (constrator)构造函数声明 接口说明 vector(); (重点) 无参构造 vector (const vector& x); &#xff08;重点&#xff09; 拷贝构造 vector (InputIterator first, InputIterator last); 使用迭代器区间进行初始化构造 vector (size_type n, co…

Easy Excel 通过【自定义批注拦截器】实现导出的【批注】功能

目录 Easy Excel 通过 【自定义批注拦截器】实现导出的【批注】功能需求原型&#xff1a;相关数据&#xff1a;要导出的对象字段postman 格式导出对象VO 自定义批注拦截器业务代码&#xff1a; 拦截器代码解释&#xff1a;详细解释&#xff1a;格式优化&#xff1a; Easy Excel…

Qt/C++基于重力模拟的像素点水平堆叠效果

本文将深入解析一个基于 Qt/C 的像素点模拟程序。程序通过 重力作用&#xff0c;将随机分布的像素点下落并水平堆叠&#xff0c;同时支持窗口动态拉伸后重新计算像素点分布。 程序功能概述 随机生成像素点&#xff1a;程序在初始化时随机生成一定数量的像素点&#xff0c;每个…

矩阵重构——sortrows函数

s o r t r o w s sortrows sortrows函数依据某列的属性对其元素所在的行进行排序从而进行矩阵的排序 s o r t r o w s sortrows sortrows函数常用方法&#xff1a; 1. 1. 1. s o r t r o w s ( a , [ c 1 , c 2 ] ) sortrows(a,[c_1,c_2]) sortrows(a,[c1​,c2​])&#xff0c…

Linux之网络基础

网络发展 网络的发展可以从人与人之间的工作模式开始谈起, 人与人的工作模式反应了机器与机器的工作模式: 1. 独立模式: 在网络发展的早期计算机间处于独立模式, 计算机之间相互独立 最开始计算机之间是独立运行的, 数据之间的交互需要人用软盘等存储介质拷贝过去, 一般涉及…

【pyspark学习从入门到精通22】机器学习库_5

训练-验证分割 TrainValidationSplit 模型为了选择最佳模型&#xff0c;会对输入数据集&#xff08;训练数据集&#xff09;进行随机分割&#xff0c;分成两个子集&#xff1a;较小的训练子集和验证子集。分割只执行一次。 在这个例子中&#xff0c;我们还将使用 ChiSqSelect…

【Petri网导论学习笔记】Petri网导论入门学习(十一) —— 3.3 变迁发生序列与Petri网语言

目录 3.3 变迁发生序列与Petri网语言定义 3.4定义 3.5定义 3.6定理 3.5例 3.9定义 3.7例 3.10定理 3.6定理 3.7 有界Petri网泵引理推论 3.5定义 3.9定理 3.8定义 3.10定义 3.11定义 3.12定理 3.93.3 变迁发生序列与Petri网语言 对于 Petri 网进行分析的另一种方法是考察网系统…

IDEA:配置Serializable class without ‘serialVersionUID’ 找不到

在使用Java原生序列化的时候&#xff0c;serialVersionUID起到了一个类似版本号的作用&#xff0c;在反序列化的时候判断serialVersionUID如果不相同&#xff0c;会抛出InvalidClassException。 File -> Settings -> Editor -> Inspections -> 搜索 Serialization …

win10 禁止更新

一、winR 输入 regedit 二、输入注册列表路径&#xff1a; &#xff08;1&#xff09;计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings &#xff08;2&#xff09;按照格式&#xff0c;创建文件命名: FlightSettingsMaxPauseDays &#xff08;3&…

OpenAI Whisper 语音识别 模型部署及接口封装

环境配置: 一、安装依赖&#xff1a; pip install -U openai-whisper 或者&#xff0c;以下命令会从这个存储库拉取并安装最新的提交&#xff0c;以及其Python依赖项&#xff1a; pip install githttps://github.com/openai/whisper.git 二、安装ffmpeg&#xff1a; cd …

springboot视频网站系统的设计与实现(代码+数据库+LW)

摘 要 使用旧方法对视频信息进行系统化管理已经不再让人们信赖了&#xff0c;把现在的网络信息技术运用在视频信息的管理上面可以解决许多信息管理上面的难题&#xff0c;比如处理数据时间很长&#xff0c;数据存在错误不能及时纠正等问题。 这次开发的视频网站系统管理员功…

安装QT6.8(MSVC MinGW)+QT webengine+QT5.15.2

本篇主要针对只使用过QT5的qmake&#xff0c;没有用过MSVC&#xff0c;VS的老同学。 建议一部分一部分安装&#xff0c;全部勾选安装遇到问题会中断&#xff0c;前功尽弃。 我自己需要的是QT5&#xff0c;编出的软件用在公司设备上。 QT6&#xff1a;建议也安装学习&#xf…

自动驾驶目标检测融合全貌

1、early fusion 早期融合&#xff0c;特点用到几何空间转换3d到2d或者2d到3d的转换&#xff0c;用像素找点云或者用点云找像素。 2、deep fusion 深度融合&#xff0c;也是特征级别融合&#xff0c;也叫多模态融合&#xff0c;如bevfusion范式 3、late fusion 晚融合&#x…

Microsoft Excel如何插入多行

1.打开要编辑的excel表&#xff0c;在指定位置&#xff0c;鼠标右键点击“插入”一行 2.按住shift键&#xff0c;鼠标的光标箭头会变化成如下图所示 3.一直按住shift键和鼠标左键&#xff0c;往下拖动&#xff0c;直至到插入足够的行

node.js基础学习-http模块-创建HTTP服务器、客户端(一)

http模块式Node.js内置的模块&#xff0c;用于创建和管理HTTP服务器。Node.js使用JavaScript实现&#xff0c;因此性能更好。 使用http模块创建服务器&#xff0c;我们建议使用commonjs模块规范&#xff0c;因为很多第三方的组件都使用了这种规范。当然es6写法也支持。 下面就是…

2024御网杯信息安全大赛个人赛wp(misc方向)

目录 一.信息安全大赛的通知二、编码转换1. 第一部分2. 第二部分3. 第三部分 三、1.txt四、buletooth 题目附件以及工具链接&#xff1a; 通过网盘分享的文件&#xff1a;御网杯附件 链接: https://pan.baidu.com/s/1LNA6Xz6eZodSV0Io9jGSZg 提取码: jay1 –来自百度网盘超级会…

浅谈pdfbox2.0和pdfbox3.0的运用与区别

前言 Apache PDFBox 是一个开源的Java库&#xff0c;可以用来对PDF文档做一些基本操作&#xff0c;比如实际应用中的pdf读取、写入、合并、拆分、写文字、写图片、加水印等&#xff0c;甚至还应用到了电子签章。本文逐个介绍对pdf的操作&#xff0c;以备作为后续参考使用。 一…

《解锁计算机专业宝藏:核心编程语言与学习资料全解析》

在当今数字化浪潮汹涌澎湃、技术迭代日新月异的时代&#xff0c;计算机专业宛如一座蕴藏无尽宝藏与无限机遇的神秘殿堂&#x1f3f0;。对于莘莘学子而言&#xff0c;精准掌握核心编程语言&#xff0c;并手握优质学习资料&#xff0c;恰似寻得开启这扇殿堂大门的秘钥&#xff0c…

【计算机网络】多路转接之epoll

epoll也是一种linux中的多路转接方案(epoll也是只负责IO过程中的"等") 一、epoll相关接口的使用 1.epoll_create int epoll_create(int size); ​功能&#xff1a;创建一个epoll模型 ① int size&#xff1a;没意义了 >0就行 返回值&#xff1a;返回一个文件…