Linux系统下基于VSCode和Cmake进行C++开发

目录

  • 简介
  • 一、GCC编译器
    • 1.1创建cpp文件
    • 1.2编译过程
    • 1.3g++重要编译参数
  • 二、GDB调试器
  • 三、IDE-VScode
    • 3.1 VSCode常用快捷键
    • 3.2 swap测试
  • 四、CMake
    • 4.1CMake介绍
    • 4.2 CMake语法特性介绍
    • 4.3 CMake重要指令和常用变量
    • 4.4 CMake编译流程
    • 4.5CMake代码实践
  • 五、使用VSCode进行完整项目开发【实战】
    • 5.1 launch.json和task.json配置
  • 六、总结

简介

在 Linux 系统中,使用 Visual Studio Code (VSCode) 和 CMake 进行 C++ 开发是十分方便的。以下是整个工作流的简介:

  • VSCode 是由微软出品的一款轻量级、高度可扩展的代码编辑器,它支持几乎所有的主流编程语言,可以在多种操作系统(包括 Linux)上运行。

  • CMake 是一个开源的跨平台自动化建构系统,它用于控制编译过程,使其在多个平台上能够相同。在 VSCode 中,我们使用“CMake Tools”插件来调用和使用 CMake。

  • 在进行 C++ 开发时,首先在 VSCode 中创建一个新的工作区,并在其中创建源代码文件 .cpp 和你的 CMakeLists.txt 文件。CMakeLists.txt 是 CMake 的配置文件,其中定义了项目的编译和链接规则

  • 安装并配置好 CMake Tools 插件后,你可以选择 CMake Kit(对应你的编译器),并设置你的构建类型(例如 Debug 或 Release)。

  • 接下来,你可以使用 VSCode 的内置终端运行 CMake 命令,这将触发 CMake 对项目的编译。在编译完成后,你可以直接在 VSCode 中运行和调试你的应用。

通过 CMake 和 VSCode,你可以轻松地在 Linux 上进行 C++ 的编写、编译、运行和调试。并且,由于 CMake 具有良好的平台兼容性,你的代码可以很容易地在其它系统(如 windows,macOS)上重新编译和运行

这种开发方式允许你专注于代码的编写,而将复杂的编译和链接过程由 CMake 自动化处理。同时,VSCode 提供的丰富插件也可以大大提高你的开发效率。

一、GCC编译器

1.1创建cpp文件

使用vim编辑器创建一个cpp文件:

lg@lg-virtual-machine:~/cmake_class/0310$ vim test.cpp
#include<iostream>
using namespace std;

int main(){
  cout<<"hh"<<endl;
  return 0;
}

使用如下命令保存cpp文件并退出:

:wq

1.2编译过程

将cpp代码编译为机器语言的目标二进制代码 .o文件 ,并指定一个可执行文件的文件名:

lg@lg-virtual-machine:~/cmake_class/0310$ g++ test.cpp -o test
lg@lg-virtual-machine:~/cmake_class/0310$ ./test 
hh

1.3g++重要编译参数

  • -g 编译带调试信息的可执行文件
# -g 选项告诉 GCC 产生能被 GNU 调试器GDB使用的调试信息,以调试程序。
# 产生带调试信息的可执行文件test
g++ -g test.cpp
  • -O[n] 优化源代码
 ## 所谓优化,例如省略掉代码中从未使用过的变量、直接将常量表达式用结果值代替等等,这些操作
会缩减目标文件所包含的代码量,提高最终生成的可执行文件的运行效率。
# -O 选项告诉 g++ 对源代码进行基本优化。这些优化在大多数情况下都会使程序执行的更快。 -O2 
选项告诉 g++ 产生尽可能小和尽可能快的代码。 如-O2,-O3,-On(n 常为03)
# -O 同时减小代码的长度和执行时间,其效果等价于-O1
# -O0 表示不做优化
# -O1 为默认优化
# -O2 除了完成-O1的优化之外,还进行一些额外的调整工作,如指令调整等。
# -O3 则包括循环展开和其他一些与处理特性相关的优化工作。
# 选项将使编译的速度比使用 -O 时慢, 但通常产生的代码执行速度会更快。
# 使用 -O2优化源代码,并输出可执行文件
g++ -O2 test.cpp
  • -l 和 -L 指定库文件 | 指定库文件路径
# -l参数(小写)就是用来指定程序要链接的库,-l参数紧接着就是库名
# 在/lib和/usr/lib和/usr/local/lib里的库直接用-l参数就能链接
# 链接glog库
g++ -lglog test.cpp
# 如果库文件没放在上面三个目录里,需要使用-L参数(大写)指定库文件所在目录
# -L参数跟着的是库文件所在的目录名
# 链接mytest库,libmytest.so在/home/bing/mytestlibfolder目录下
g++ -L/home/bing/mytestlibfolder -lmytest test.cpp

二、GDB调试器

GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。你可以使用GDB调试各种被编译成可执行程序的语言,如C、C++、Java等。它提供了很多高级功能,例如设置断点、查看程序变量、单步执行等。
下面是一些基础的GDB命令:

  • gdb program:打开你的程序
  • run:运行你的程序
  • break:在特定的位置设置一个断点
  • step:执行下一行代码,如果下一行是一个函数调用,那么进入到这个函数中
  • next:执行下一行代码,不进入函数
  • print:打印变量的值
  • continue:继续执行程序,直到下一个断点或者程序结束
  • quit:退出GDB

为了使用GDB,在编译你的程序时,需要包含-g选项来生成额外的调试信息。

在GDB调试程序时,你可以设置断点来暂停程序的执行,观察和改变变量的值,然后继续执行,这对于查找和理解程序问题是十分有用的。

三、IDE-VScode

3.1 VSCode常用快捷键

Visual Studio Code(VSCode)是一款非常流行的开源文本编辑器,它支持多种编程语言,并且拥有许多可以提高编程效率的快捷键。这里将列举一些常用的VSCode快捷键:

  • Ctrl + \:分屏显示
  • Ctrl + P:快速打开文件
  • Ctrl + Shift + P:显示所有命令
  • Ctrl + B:隐藏或显示侧边栏
  • Ctrl + Shift + E:显示资源管理器 / 切换焦点到侧边栏
  • Ctrl + G:跳转到指定行数
  • Ctrl + F:当前文件内搜索
  • Ctrl + H:当前文件内搜索并替换
  • Ctrl + D:选取单词 - 可逐个添加相同的单词进行多项选择
  • Ctrl + Shift + L:选择所有出现在当前文件中的相同的词
  • Alt + Up 或 Alt + Down:上移或下移一行
  • Shift + Alt + Up 或 Shift + Alt + Down:向上或向下复制一行
  • Ctrl + Space:代码建议(代码补全)
  • F12:进入定义
  • Alt + F12:显示定义预览眼睛
  • Ctrl + Shift + F:全局搜寻文件内容
  • Ctrl + ~:打开或关闭终端
  • Ctrl + S:保存当前文件
  • Ctrl + /:注释或取消注释
  • Alt + Z:自动换行
  • Ctrl + Shift + I:格式化文档

VSCode的快捷键可以在键盘快捷方式设置中进行自定义,快捷键有助于我们更加有效率的进行编程工作。

3.2 swap测试

首先新建一个文件夹,然后点击进入该文件夹:
在这里插入图片描述
在该文件夹目录下打开VSCode:
在这里插入图片描述
进入VSCode之后,再新建include和src两个文件夹,分别用来存放头文件和源文件,最后新建一个主函数文件main.cpp:
在这里插入图片描述
代码如下:

  • swap.h:
#pragma once
#include <iostream>
using namespace std;

class myswap
{
public:
    myswap(int a, int b);

    void run();
    void printInfo();

private:
    int _a;
    int _b;
};

  • swap.cpp:
#include "swap.h"
myswap::myswap(int a, int b)
{
    this->_a = a;
    this->_b = b;
}
void myswap::run()
{
    int temp = _a;
    _a = _b;
    _b = temp;
}
void myswap::printInfo()
{
    cout << "a  =" << _a << "b = " << _b << endl;
}
  • main.cpp:
#include "swap.h"
int main(int argc, char *argv[])
{
    myswap test(2, 3);
    test.run();
    test.printInfo();
    return 0;
}

最后打开终端(Ctrl+~)编译并运行:

lg@lg-virtual-machine:~/cmake_class/0310/swapwithclass$ g++ main.cpp src/swap.cc -Iinclude -o main
lg@lg-virtual-machine:~/cmake_class/0310/swapwithclass$ ./main 
a  =3b = 2
lg@lg-virtual-machine:~/cmake_class/0310/swapwithclass$ 

四、CMake

4.1CMake介绍

CMake是一种开源的、跨平台的自动化构建系统,它用来控制软件编译过程,使得源代码与目标系统的编译过程可以分离出来。

CMake可以支持目录层次和应用程序,允许开发者在一个源代码目录树中存放不同的构建配置文件。当你的源代码由很多个不同的项目组成,每个项目都有自己的构建配置时,就可以非常洁净地采用CMake来管理。

CMake可以在一个目录里存在多个独立的构建环境,每个环境都有属于自己的构建配置。有了CMake,就可以在同一个目录里同时配备Debug版和Release版的应用程序。

CMake有许多语言的扩展阅读,例如:C,C++,Fortran,Java等,使得CMake在不同的系统和不同的编译环境下,生成适应的、原生的Makefile或项目文件,如Unix的Makefile,Visual Studio的工程文件等。

CMake的语法非常简单,大部分可用的指令和变量在CMake全局帮助文档中都有所介绍。其主要配置文件命名为CMakeLists.txt,在该文件中,你可以设置项目名称、版本、相关的环境参数等。

4.2 CMake语法特性介绍

CMake的语法相对来说比较简单,主要包括以下几种结构:

  • 1、设置变量:你可以使用set命令来设置一个变量,例如:
set(SOURCE_FILES main.cpp test.cpp)

这段代码定义了一个名为SOURCE_FILES的变量,它包含了两个文件:main.cpp和test.cpp。

  • 2、控制流语句:CMake提供了常见的条件判断和循环语句,例如if,elseif, else, endif, while,endforeach等。
if (${VARIABLE} STREQUAL "test")
    message("VARIABLE is test")
else()
    message("VARIABLE is not test")
endif()

这段代码会检查VARIABLE变量是否等于"test",然后输出相应的消息。

  • 3、包含和添加子目录:include和add_subdirectory命令可以用于组织你的CMakeLists.txt文件,让你的项目结构更清晰。

通过include(FileName),你可以把FileName文件里的内容插入到当前的CMake脚本文件中。
通过add_subdirectory(SubDirName),在生成构建系统的时候可以在子目录系中添加CMake的列表文件。

添加目标:使用add_executable、add_library等命令定义你的构建目标。

add_executable(MyApp main.cpp) 定义一个可执行目标,名为MyApp,源文件是main.cpp。
链接库:使用target_link_libraries命令链接库。

target_link_libraries(MyApp MyLibrary)

这段代码会让MyApp链接到MyLibrary库。

以上为CMake的基本语法,实际使用中,需要根据具体的项目需求,用更多的命令和更复杂的语句来编写你的CMakeLists.txt文件。

4.3 CMake重要指令和常用变量

CMake主要包括一下几个重要指令:

  • 1、cmake_minimum_required:设置对CMake版本的最低版本要求,如果不满足该版本,报告用户错误。例如:
cmake_minimum_required(VERSION 2.8.3)
  • 2、project:定义项目名称和支持的编程语言。例如:
project(HELLO C CXX)
  • 3、set:设置变量的值。例如:
set(SRC_LIST main.cpp test.cpp)
  • 4、message:输出消息,通常用于调试CMakeLists.txt文件。例如:
message(${SRC_LIST})
  • 5、add_executable:添加需要编译的可执行文件。例如:
add_executable(myapp ${SRC_LIST})
  • 6、add_library:添加库的构建命令,库源码由src2和src3命令生成。例如:
add_library(test SHARED src2.cpp src3.cpp)
  • 7、target_link_libraries:为目标添加需要的链接库。例如:
target_link_libraries(myapp test)
  • 8、find_package:用于加载配置文件,以便CMake使用。例如:
find_package(Qt5Core)
  • 9、include_directories:添加包含目录,相当于C++中的-I选项。例如:
include_directories("/usr/include/mylib")
  • 10、add_definitions:添加编译的定义,相当于C++中的-D选项。例如:
add_definitions("-DMY_DEFINE")

注意,CMake指令是不区分大小写的,你可以根据需要选择使用大写或者小写。

4.4 CMake编译流程

CMake的编译流程主要包括以下几个步骤:

  1. 编写CMakeLists.txt文件:在你的项目主目录中,编写CMakeLists.txt文件,这个文件描述了你的项目如何构建。包括指定最小版本号,指定项目名称,查找依赖库,添加子目录,添加头文件目录,添加预编译宏,生成可执行文件,添加链接库等。

  2. 生成Makefile:在命令行中切到你的项目目录,然后执行’cmake .'。这会让CMake读取CMakeLists.txt文件,并产生在你的系统上编译代码所需的Makefile文件。如果是在windows上,并且安装了Visual Studio,那么CMake还能生成.sln工程文件。

  3. 编译项目:使用’cmake --build .‘或’make’(Unix/Linux)或’msbuild myproject.sln’(Windows),编译上一步生成的Makefile。

这里的’.'是指当前目录,等同于源代码目录(build in source)。实际上,在项目中,我们经常会新建一个build目录,然后在这个目录下运行cmake. .和make,这会把所有编译生成的文件都放在这个子目录,而源码目录下只保存源码文件,这样可以使源码目录干净整洁。这种方式称为out of source构建。

注意:在使用cmake生成Makefile之后,如果修改了CMakeLists.txt或者添加了新的.cpp/.h文件,必须重新执行cmake一遍才会生效。

4.5CMake代码实践

查看cmake版本:

lg@lg-virtual-machine:~$ cmake --version 
cmake version 3.16.3
CMake suite maintained and supported by Kitware (kitware.com/cmake).

编写CMakeLists.txt:

cmake_minimum_required(VERSION 3.16.3)

project(SWAP)

set(CMAKE_BUILD_TYPE Debug)//设置cmake构建类型为debug模式

include_directories(include)//头文件

add_executable(swapmain_cmake main.cpp src/swap.cc)//可执行的二进制文件名  , 源文件

新建一个build文件夹用来存放cmake编译产生的文件:

lg@lg-virtual-machine:~/cmake_class/0310/swapwithclass$ mkdir build
lg@lg-virtual-machine:~/cmake_class/0310/swapwithclass$ cd build/
lg@lg-virtual-machine:~/cmake_class/0310/swapwithclass/build$ cmake ..
lg@lg-virtual-machine:~/cmake_class/0310/swapwithclass/build$ make
Scanning dependencies of target swapmain_cmake
[ 33%] Building CXX object CMakeFiles/swapmain_cmake.dir/main.cpp.o
[ 66%] Building CXX object CMakeFiles/swapmain_cmake.dir/src/swap.cc.o
[100%] Linking CXX executable swapmain_cmake
[100%] Built target swapmain_cmake
lg@lg-virtual-machine:~/cmake_class/0310/swapwithclass/build$ ls
CMakeCache.txt  CMakeFiles  cmake_install.cmake  Makefile  swapmain_cmake
lg@lg-virtual-machine:~/cmake_class/0310/swapwithclass/build$ ./swapmain_cmake 
a  =3b = 2

五、使用VSCode进行完整项目开发【实战】

如何进行cpp项目的编译和运行在之前已经讲过,在这一章主要讲如何使用GDB调试器进行程序的debug。

5.1 launch.json和task.json配置

参考资料:VScode 调试教程 tasks.json和launch.json的设置(超详细)
launch.json和tasks.json都是Visual Studio Code编辑器的配置文件,主要用于启动和管理你项目的构建以及调试任务。配置好这两个文件之后,不需要在终端使用命令行去一步步编译和运行,比如cmake、make、./main等命令,可以直接打断点运行调试。

  • launch.json:该文件是Visual Studio Code用来配置和管理调试会话的。在这个文件中,你可以定制多种启动调试程序的配置,包括调试脚本的路径,启动参数,环境变量等等。每一个对象代表一个独立的调试配置。通过这个文件,你可以实现多种调试环境的切换和管理。
{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) 启动",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/build/main",
            "args": [], 
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                },
                {
                    "description": "将反汇编风格设置为 Intel",
                    "text": "-gdb-set disassembly-flavor intel",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "Build",
            "miDebuggerPath": "/usr/bin/gdb"
        }

    ]
}
  • tasks.json:该文件用于配置Visual Studio Code自动化工作流程,如编译,测试,部署等任务。用户可以通过个性化配置的方式来设定任务运行的条件,如何运行,以及运行的产出结果。
{   
    "version": "2.0.0",
    "options": {
        "cwd": "${workspaceFolder}/build"
    },
    "tasks": [
        {
            "type": "shell",
            "label": "cmake",
            "command": "cmake",
            "args": [
                ".."
            ]
        },
        {
            "label": "make",
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "command": "make",
            "args": [

            ]
        },
        {
            "label": "Build",
			"dependsOrder": "sequence", // 按列出的顺序执行任务依赖项
            "dependsOn":[
                "cmake",
                "make"
            ]
        }
    ]
}

在这里插入图片描述
需要一样的地方
在这里插入图片描述
在这里插入图片描述

六、总结

在以后实际工作中,使用VSCode进行项目的开发,进行上面的步骤是比不可少的。本文,我们主要学会了以下几点:

  • 1、cpp工程怎么新建?
  • 2、如何使用GCC编译器和GDB调试器
  • 3、如何使用CMake?
  • 4、如何配置vscode怎么单步调试
    熟能生巧!保持进步!细心、耐心、坚持!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Gateway网关在url参数带有特殊字符的情况下转发失败(响应400)

本文主要分享了&#xff0c;SpringCloud Gateway网关在url参数带有空格或者特殊字符的情况下&#xff0c;转发失败导致响应错误码400的解决方案。 响应400错误码的2种场景&#xff1a; 1.参数带空格&#xff0c;Gateway会误认为该空格是切割符&#xff0c;如?phone 135****6…

B/S基于云计算的云HIS智慧医院管理系统源码带电子病历编辑器

目录 一、系统概述 二、开发环境 三、系统功能 1、门诊部分 2、住院部分 3、电子病历 4、药物管理 5、统计报表 6、综合维护 7、运营运维 云HIS系统&#xff1a;病案首页 云his系统源码 SaaS应用 功能易扩 统一对外接口管理 现如今&#xff0c;大数据、云计算、移动…

深入浅出计算机网络 day.2 概论⑥ 计算机网络体系结构

上帝疯狂杜撰世界悲情的命题 将凉薄和荒芜尽写 —— 24.3.13 内容概述 1.常见的三种计算机网络体系结构 2.计算机网路体系结构分层的必要性 3.计算机网络体系结构分层思想举例 4.计算机网络体系结构中的专用术语 一、常见的三种计算机网络体系结构 1.OSI参考模型 …

Linux第77步_处理Linux并发的相关函数

了解linux中的“原子整形数据”操作、“原子位数据”操作、自旋锁、读写锁、顺序锁、信号量和互斥体&#xff0c;以及相关函数。 并发就是多个“用户”同时访问同一个共享资源。如&#xff1a;多个线程同时要求读写同一个EEPROM芯片&#xff0c;这个EEPROM就是共享资源&#x…

运行vue项目时的问题

1.问题:在终端输入:npm run serve时&#xff0c;弹出选择应用以打开npm 2.解决方法: 在你的终端中输入&#xff1a;get-command npm&#xff08;第一次可能没反应 再输入一次&#xff09; 根据这个路径找到npm删除即可 再次运行npm run serve

谈谈你对Java平台的理解?

从你接触 Java 开发到现在&#xff0c;你对 Java 最直观的印象是什么呢&#xff1f;是它宣传的 “Write once, run anywhere”&#xff0c;还是目前看已经有些过于形式主义的语法呢&#xff1f;你对于 Java 平台到底了解到什么程度&#xff1f;请你先停下来总结思考一下。 今天…

VSCode提交代码

VSCode提交代码方式&#xff1a; 先在电脑本地文件夹中打开git的bash窗口使用git clone https://github.com/xxxx/克隆仓库地址到本地&#xff0c;并生成一个项目的文件夹打开VSCode&#xff0c;点击文件按钮&#xff0c;打开加载项目的文件夹对于VSCode设置Git路径&#xff…

【小黑嵌入式系统第十九课】结课总结(三)——操作系统部分(RTOSμC/OS-Ⅲ程序设计基础(任务函数时间临界区通信))

上一课&#xff1a; 【小黑嵌入式系统第十八课】结课总结&#xff08;二&#xff09;——软件部分&#xff08;系统架构&调试&测试&运行&系统软件设计&#xff09; 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0…

迷你洗衣机排名前十名:2024年十大性能超强内衣洗衣机优选

随着现在的生活水平的不断提高&#xff0c;高科技能帮我们搞定不少问题&#xff0c;如果你比较注重个人卫生、追求生活品质&#xff0c;可以考虑选择一台专用的迷你洗衣机&#xff0c;我们就无须自己亲自动手去清洗内衣物&#xff0c;从而导致浪费时间&#xff0c;如果你担心孩…

Docker常见指令

1.docker search mysql &#xff1a;从docker镜像仓库搜索和mysql有关的镜像 docker search mysql 2.docker pull mysql &#xff1a;从docker仓库拉取mysql镜像 docker pull mysql 3.docker run mysql &#xff1a;启动mysql镜像 docker run mysql 4.docker ps &#xff…

iconfont 字体应用

1、登录 打开阿里图标 https://www.iconfont.cn/ 2、选择心仪的图标制作 iconfont 字体。 3、图标全部选择入库之后&#xff0c; 点右上角的购物车。 添加到项目&#xff0c;是方便管理图标字体的。 也可以直接下载代码的 4、下载到本地之后&#xff0c;把里面的 iconfont.…

altgraph的安装和用途说明

前言 altgraph 是 graphlib 的一个分支&#xff1a;一个图&#xff08;网络&#xff09;包&#xff0c;用于构建图、BFS 和 DFS 遍历、拓扑排序、最短路径等&#xff0c;带有 graphviz 输出。 安装 pip install altgraph 函数和用例 生物链 from altgraph import Graph# 定…

linux查看服务器登录成功和登录失败的命令

last 查看成功登录服务器的信息&#xff0c;包括ip&#xff0c;时间&#xff0c;登录用户&#xff0c;时长。lastb 查看登录服务器失败的信息。 last命令实例&#xff1a; 其他参数&#xff1a; -a&#xff1a;把从何处登入系统的主机名称或ip地址&#xff0c;显示在最后一行…

软件设计师16--段页式存储

软件设计师16--段页式存储 考点1&#xff1a;页式存储存储管理 - 页式存储组织存储管理 - 页面置换算法例题&#xff1a; 考点2&#xff1a;段式存储存储管理 - 段式存储组织例题&#xff1a; 考点1&#xff1a;页式存储 存储管理 - 页式存储组织 页式存储&#xff1a;将程序…

MySQL数据表的增删改查(基础)(CRUD)

1.CRUD 注释&#xff1a;在SQL中可以使用“--空格描述”来表示注释说明. CRUD 即增加(Create)、查询(Retrieve)、更新(Update)、删除(Delete)四个单词的首字母缩写. 2.新增(Create) 语法: insert into 表名 values (值,值...); into --可以省略; values -- 关键字. 下面以一…

IDEA编写各种WordCount运行

目录 一、编写WordCount(Spark_scala)提交到spark高可用集群 1.项目结构 2.导入依赖 3.编写scala版的WordCount 4.maven打包 5.运行jar包 ​6.查询hdfs的输出结果 二、本地编写WordCount(Spark_scala)读取本地文件 1.项目结构 2.编写scala版的WordCount 3.编辑Edit …

HDFS的架构优势与基本操作

目录 写在前面一、 HDFS概述1.1 HDFS简介1.2 HDFS优缺点1.2.1 优点1.2.2 缺点 1.3 HDFS组成架构1.4 HDFS文件块大小 二、HDFS的Shell操作&#xff08;开发重点&#xff09;2.1 基本语法2.2 命令大全2.3 常用命令实操2.3.1 上传2.3.2 下载2.3.3 HDFS直接操作 三、HDFS的API操作3…

influxdb2使用

&#xff08;作者&#xff1a;陈玓玏&#xff09; influxdb2首次使用时&#xff0c;通过k8s部署的&#xff0c;所以进入pod内部执行命令。 先在k8sdashboard找到influx的pod&#xff0c;点击执行&#xff0c;即可进入命令行界面。 首次连接时&#xff0c;通过influx setup启动…

Tomcat部署web项目与idea中配置web项目方法【通俗易懂】

✨前言✨   本文章主要介绍tomcat环境的配置&#xff0c;idea配置web项目&#xff0c;idea一般项目中配置tomcat&#xff0c;内容有点长&#xff0c;建议点击目录跳转阅读&#xff0c;文中所含均为官方文件&#xff0c;请放心使用。 &#x1f352;欢迎点赞 &#x1f44d; 收藏…

Visual Studio 2022 配置“Debug|x64”的 Designtime 生成失败。IntelliSense 可能不可用。

今天写代码&#xff0c;无缘无故就给我整个这个错误出来&#xff0c;我一头雾水。 经过我几个小时的奋战&#xff0c;终于解决问题 原因就是这个Q_INTERFACES(&#xff09;宏&#xff0c;我本想使用Q_DECLARE_INTERFACE Q_INTERFACES这两个Qt宏实现不继承QObject也能使用qobjec…