当前位置: 首页 > news >正文

C++学习之路:从头搞懂配置VScode开发环境的逻辑与步骤

目录

  • 编辑器与IDE
  • 基于vscode的C++开发环境配置
    • 1. 下载vscode、浅尝编译。
      • 番外篇
    • 2. 安装插件,赋能编程。
    • 3. 各种json文件的作用。
      • c_cpp_properties.json
      • task.json
      • launch.json
  • 总结&&彩蛋

编辑器与IDE

 上一篇博客已经介绍过了C++程序的一个编译流程,从这篇文章开始进行编程的实验。
 正所谓“工欲善其事,必先利其器”,有很多小白入门时大把的时间都被浪费在配置和安装开发环境上,因此这篇博客将从易于理解的角度来讲讲怎么样配好一个C++的开发环境,目标是一次学习永远记忆。
 其实写一个能运行的程序是一个很简单的事情,如果你用的是windows系统可以直接创建一个扩展名为.cpp的文件,然后用自带的文本编辑器进行编辑,然后在终端使用g++编译器对其进行编译就能得到一个能运行的.exe文件了,因此C++开发环境只需要文本编辑器+编译器即可完成搭建。
 但事实上,为了更舒服与高效地写程序,我们还需要许多额外的功能,例如自动补全、语法纠错、程序调试 等。单个文本编辑器(例如vscode)不具备这样的功能,因此还需要安装额外的一些插件来配合使用,这就是这章主要讲的内容如何在vscode上安装与配置好C++开发需要的插件
 但对于IDE(集成开发环境)来说,这些插件功能与文本编辑器本身已经融为一体,不需要额外的安装配置,使用起来比vscode轻松简单很多,常见的IDE有,DevC++、VS、CLion,Eclipse等。但为什么还需要劳心费力地教大家学习使用vscode呢?

  1. 首先,vscode全开源,市面上大部分的IDE都需要收费与许可证。
  2. 其次,vscode可以在Windows也可以在Linux上使用,一次学习终身有用。
  3. 最重要的是vscode支持多种多样的插件与扩展功能,例如ai代码补全等,拥有传统IDE不具备的灵活性。
  4. 最后一点就是帅!能显得自己很专业。

基于vscode的C++开发环境配置

1. 下载vscode、浅尝编译。

做这一步前,请先确认你安装了MinGW编译环境
 点击这个链接进入官网进行下载,完成之后进行安装,这里要注意,安装路径不要出现中文!!!
在这里插入图片描述
安装好后我们打开vscode:
在这里插入图片描述
选做,只看就行)此时界面一片漆黑,还有很多看不懂的外国语。我们先不着急进行汉化,来浅尝一下vscode作为文本编辑器的功能,新建一个hello_world.cpp文件,并在其中写入经典开局代码:

#include<iostream>
int main()
{std::cout << "hello world!\n" <<endl;return 0;
}

明摆着告诉你,上面的代码里有些问题(自己去发现)。但是在vscode中显示的效果如下:
在这里插入图片描述
 我们可以发现,vscode作为一个文本编辑器,对于编程自带高亮功能,这表明它其实是专门设计用来编程的一个文本编辑器。并且重要的是,原生的vscode对于错误代码并没有纠错能力更不要说自动补全功能了。
 根据前面的知识,我们可以使用终端运行g++编译器来对上面的代码进行编译:
点击Terminal-->New Terminal在vscode中创建一个终端。
在这里插入图片描述
在终端中输入g++ --version查询一下编译器是否存在以及是否好用。如果显示你没有安装编译器,那么可以自行百度一些MinGW(推荐)或者MSVC的安装,十分简单。
在这里插入图片描述
输入g++编译指令,对代码进行手工编译:

g++ hello_world.c -o hell_world

在这里插入图片描述
如果你代码没改好,那么编译就会报错,显示endl前少了作用域std:: 补上这个部分,运行编译:
在这里插入图片描述
发现不再报错,同时我们的文件夹下多了一个hello_world.exe文件,输入:

.\hello_world.exe

执行结果如下,果然输出了hello_world!语句
在这里插入图片描述

番外篇

g++编译器利用-c选项可以只编译出.o文件,再通过手工链接的方式将.o·文件链接为.exe可执行文件。
在这里插入图片描述

2. 安装插件,赋能编程。

点击最左边的扩展,搜索扩展插件:
在这里插入图片描述
C/C++编程安装两个插件即可:

  1. Chinese (Simplified) (简体中文) Language Pack for Visual Studio Code(汉化包)
  2. C/C++ Extension Pack(这个包包含了C/C++、C\C++Themes、CMake Tools
    安装完重启后,如下图:
    在这里插入图片描述
    这下我们发现,vscode开始自动纠错了,并且补全等功能也有了,仿佛似乎它已然成为了一个IDE。并且注意右上角新出现的三角形
    在这里插入图片描述
    点击后发现有两个选项:
    在这里插入图片描述
    点击运行C/C++文件,在随后的选项框中选择我们需要的编译器g++:
    在这里插入图片描述
     这样,我们就可以实现代码一键运行功能了。
    总结:安装插件后,vscode得以实现自动纠错、代码补全、一键编译、一键调试等功能。

3. 各种json文件的作用。

在Visual Studio Code(VSCode)中,.vs文件夹是一个用于存储与项目相关的配置和临时数据的目录。下面介绍几个重要的.json文件。

c_cpp_properties.json

这个文件主要用来配置C/C++编辑器的自动补全和索引等功能。按下 F1 调出面板,输入 C/C++,选择编辑配置(UI)。
首先找到编译器路径选项,将编译器地址放入:
在这里插入图片描述
然后再配置IntelliSense模式,IntelliSense是代码补全工具,将其设置为与编译器兼容的格式,例如这里是gcc-x64。
在这里插入图片描述
接下来再配置自动补全的包含路径:包含路径就是#include文件所在的路径,这里面默认有了一个workspaceFolder,代表当前目录下的所有文件,如果使用的库不在当前的工作目录下则需要在这里手动添加进去。
在这里插入图片描述
一般情况下,标准库的文件编译器是会自动去寻找的,但有时候标准库文件会提示找不到库,那么就需要在这里手动地把库头文件路径包含进去了。具体查询方式如下:

g++ -v -x c++ -E -

在这里插入图片描述
将后面这几行粘贴进去(注意去掉前面的空格)。
最后再设置一下C++标准:
在这里插入图片描述
然后我们可以发现,.vs文件夹下多了个文件:c_cpp_properties.json

{"configurations": [{"name": "Win32","includePath": ["${workspaceFolder}/**"],"defines": ["_DEBUG","UNICODE","_UNICODE"],"windowsSdkVersion": "10.0.22621.0","cStandard": "c17","cppStandard": "c++17","intelliSenseMode": "windows-gcc-x64","compilerPath": "\"D:\\mingw64\\bin\\g++.exe\""}],"version": 4
}

其实就是把我们在窗口内配置的信息转成了json代码。

task.json

当我们选择了编译器后(点击一键运行),项目配置文件夹.vs下就会生成一个task.json文件。这个文件的内容如下:

{"tasks": [{"type": "cppbuild", "label": "C/C++: g++.exe 生成活动文件", #任务标签(名字)"command": "D:\\mingw64\\bin\\g++.exe", "args": ["-fdiagnostics-color=always","-g","${file}","-o","${fileDirname}\\${fileBasenameNoExtension}.exe"],"options": {"cwd": "${fileDirname}"},"problemMatcher": ["$gcc"],"group": { "kind": "build","isDefault": true },"detail": "调试器生成的任务。"}],"version": "2.0.0"
}

task.json文件主要是用来指导编译过程的,其中很重要的两条是:

"command": "D:\\mingw64\\bin\\g++.exe" //这条指定了用哪个编译器。"args": [ //这条指定了编译指令的参数"-fdiagnostics-color=always","-g", //启用调试学习"${file}", //源文件名"-o", //输出文件"${fileDirname}\\${fileBasenameNoExtension}.exe" //输出文件名]

launch.json

launch.jsons是调试配置文件,位于.vscode隐藏文件夹下。生成调试配置文件launch.json的方法很简单:打开vscode左边栏的运行于调试即可创建。
在这里插入图片描述
然后选择使用的调试器即可完成创建:
在这里插入图片描述
然后可以选择一种调试器的模板:
在这里插入图片描述
但是,这里我们需要对launch.json模板修改,代码如下:

{// 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387"version": "0.2.0","configurations": [{"name": "(gdb) 启动","type": "cppdbg","request": "launch","program": "输入程序名称,例如 ${workspaceFolder}/a.exe",//替换成task.json里生成的可执行文件名字"args": [], //传递给.exe的参数"stopAtEntry": false,"cwd": "${fileDirname}","environment": [],"externalConsole": false,"MIMode": "gdb","miDebuggerPath": "/path/to/gdb","setupCommands": [{"description": "为 gdb 启用整齐打印","text": "-enable-pretty-printing","ignoreFailures": true},{"description": "将反汇编风格设置为 Intel","text": "-gdb-set disassembly-flavor intel","ignoreFailures": true}]"preLaunchTask": "C/C++: gcc.exe 生成活动文件" //换成task.json的label名}]
}

各个参数的意义:
基础参数‌

name‌
作用‌: 调试配置的名称,显示在调试启动下拉列表中。
示例‌: “name”: “Python: Current File”
type‌
作用‌: 指定调试器类型,需与安装的调试扩展匹配(如 python, node, go, cppdbg)。
示例‌: “type”: “python”(使用 Python 扩展调试)
request‌
作用‌: 定义调试请求类型:
 launch: 启动新程序进行调试(默认)。
 attach: 附加到已运行的进程。
 示例‌: "request": "launch"
program‌
作用‌: 指定要调试的入口文件路径(适用于编译型或脚本语言)。
示例‌: "program": "${file}"(调试当前打开的文件)

语言/环境相关参数‌

args‌
作用‌: 传递给程序的命令行参数列表。
示例‌:
&emsp;"args": ["--port", "8080", "--verbose"]
env‌
作用‌: 设置调试时的环境变量。
示例‌:
"env": {"PYTHONPATH": "${workspaceFolder}/src", "DEBUG_MODE": "true"}
cwd‌
作用‌: 指定调试器的工作目录(程序运行的根路径)。
示例‌: “cwd”: “${workspaceFolder}/bin”

高级调试配置‌

preLaunchTask‌
作用‌: 调试前自动执行的任务(需在 tasks.json 中定义)。
任务名要和tasks.json里面的"label"值对应一致
console‌
作用‌: 控制调试控制台类型:
internalConsole: VSCode 内置终端(默认)。
integratedTerminal: 使用 VSCode 集成终端。
externalTerminal: 打开外部系统终端。
示例‌: “console”: “integratedTerminal”
stopOnEntry‌
作用‌: 是否在程序入口处自动暂停(用于逐行调试)。
示例‌: “stopOnEntry”: true

几个注意的点就是:

  1. program,改成与task.json中一致的
  2. preLaunchTask改成task.json的label值
    配置完成后即可开始程序的调试,例如打断点,查看变量等。

总结&&彩蛋

 本篇文章目的在于走通流程,具体的内容例如json文件怎么写,各个参数具体的含义还需要大家自己去查更多的资料。最后,留给大家一个彩蛋,这其实是一个vscode一键配置的程序,具体使用如视频所示。我看了一下,真的确实很方便,希望能带给大家帮助吧!

相关文章:

C++学习之路:从头搞懂配置VScode开发环境的逻辑与步骤

目录 编辑器与IDE基于vscode的C开发环境配置1. 下载vscode、浅尝编译。番外篇 2. 安装插件&#xff0c;赋能编程。3. 各种json文件的作用。c_cpp_properties.jsontask.jsonlaunch.json 总结&&彩蛋 编辑器与IDE 上一篇博客已经介绍过了C程序的一个编译流程&#xff0c;从…...

deploy myEclipse j2ee project to server没反应

解决办法 1.如果工作空间的问题,那么需要删除你工作空间的一个文件就可以解决了。 这个文件在Myeclipse工作区(workspace) .metadata\.plugins\org.eclipse.core.runtime\.settings目录...

react项目中当组件渲染的时候如何执行接口

最近遇到一个场景&#xff0c;就是组件渲染的时候去调用接口进行数据回填。这个在vue中很简单&#xff0c;在created生命周期函数中&#xff0c;直接调用接口即可。但是react没有created生命周期&#xff0c;所以在react中我们需要用到useEffect钩子函数。 在 React 函数组件中…...

python虚拟环境安装opus(windows)

python -m venv venv 创建虚拟环境后,并且安装软件包后,运行项目报错,提示如下: Could not find Opus library. Make sure it is installed 原因是缺少opus.dll, (先把项目内所有使用的第三方库都安装完成) 从以下页面下载.dll文件之后,放入venv\Scripts目录下即可 https://…...

手机怎么换网络IP有什么用?操作指南与场景应用‌

在数字化时代&#xff0c;手机已经成为我们日常生活中不可或缺的一部分&#xff0c;无论是工作、学习还是娱乐&#xff0c;手机都扮演着至关重要的角色。而在手机的使用过程中&#xff0c;网络IP地址作为设备在互联网上的唯一标识符&#xff0c;其重要性和作用不容忽视。本文将…...

小程序内表格合并功能实现—行合并

功能介绍&#xff1a;支付宝小程序手写表格实现行内合并&#xff0c;依据动态数据自动计算每次需求合并的值&#xff0c;本次记录行内合并&#xff0c;如果列内合并&#xff0c;同理即可实现 前端技术&#xff1a;grid布局 display&#xff1a;grid 先看实现效果: axml&…...

基于Flask的通用登录注册模块,并代理跳转到目标网址

实现了用户密码的加密&#xff0c;代理跳转到目标网址&#xff0c;不会暴露目标路径&#xff0c;未登录的情况下访问proxy则自动跳转到登录页&#xff0c;使用时需要修改配置项config&#xff0c;登录注册页面背景快速修改&#xff0c;可以实现登录注册模块的快速复用。 1.app…...

nlohmann::json教程

nlohmann::json 核心函数和方法 1. 基础构造与初始化 函数/方法描述示例json j;创建一个空的 JSON 对象&#xff08;默认是 object 类型&#xff09;json j;json::object()显式创建一个空的 JSON 对象json j json::object();json::array()显式创建一个空的 JSON 数组json ar…...

多层感知机从0开始实现

《动手学深度学习》-4.2-笔记 多层感知机在输出层和输入层之间增加一个或多个全连接隐藏层&#xff0c;并通过激活函数转换隐藏层的输出。 常用的激活函数包括ReLU函数、sigmoid函数和tanh函数。 import torch from torch import nn from d2l import torch as d2lbatch_size …...

在K8S中使用ArgoCD做持续部署

一、了解argocd ArgoCD是一个基于Kubernetes的GitOps持续交付工具&#xff0c;应用的部署和更新都可以在Git仓库上同步实现&#xff0c;并自带一个可视化界面。本文介绍如何使用GitArgocd方式来实现在k8s中部署和更新应用服务。关于ci这一块这里不多介绍。主要讲解argocd如何实…...

Python中数据结构元组详解

在Python中&#xff0c;元组&#xff08;Tuple&#xff09;是一种不可变的序列类型&#xff0c;常用于存储一组有序的数据。与列表&#xff08;List&#xff09;不同&#xff0c;元组一旦创建&#xff0c;其内容无法修改。本文将详细介绍元组的基本操作、常见运算、内置函数以及…...

23种设计模式-命令(Command)设计模式

命令设计模式 &#x1f6a9;什么是命令设计模式&#xff1f;&#x1f6a9;命令设计模式的特点&#x1f6a9;命令设计模式的结构&#x1f6a9;命令设计模式的优缺点&#x1f6a9;命令设计模式的Java实现&#x1f6a9;代码总结&#x1f6a9;总结 &#x1f6a9;什么是命令设计模式…...

计算机网络——数据链路层的功能

目录 物理链路 逻辑链路 封装成帧&#xff08;组帧&#xff09; 帧定界 透明传输 SDU 差错控制 可靠传输 流量控制 介质访问控制 主机需要实现第一层到第五层的功能&#xff0c;而路由器这种节点只需要实现第一层到第三层的这些功能 假设左边用户需要给右边用户发送…...

Axure项目实战:智慧城市APP(一)首页(动态面板、拖动效果)

亲爱的小伙伴&#xff0c;在您浏览之前&#xff0c;烦请关注一下&#xff0c;在此深表感谢&#xff01; 课程主题&#xff1a;智慧城市APP 主要内容&#xff1a;首页、政务公告、公交查询页面设计 应用场景&#xff1a;各类政务型、B端APP均可参考 案例展示&#xff1a;&am…...

Unity网络开发快速回顾

知识点来源&#xff1a;总结人间自有韬哥在&#xff0c; 唐老狮&#xff0c;豆包 目录 1.网络通信-通信必备知识-IP地址和端口类2.网络通信中序列化和反序列化2进制数据3.Socket类4.TCP同步服务端和客户端基础实现4.1.服务端基本实现4.2.客户端实现&#xff1a; 5.区分消息类型…...

鸿蒙学习笔记(1)-文件解读、编写程序、生命周期

一、文件解读 .hvigor:装有一些编译过程中的依赖缓存。 .idea:工具自动生成的&#xff0c;标记我们的工具是基于idea。 AppScope:代表着整个APP的配置&#xff0c;最后打包使用。之中的resources目录下是应用的名称和图片存放路径&#xff0c;其中app.json5&#xff1a; bund…...

多维动态规划 力扣hot100热门面试算法题 面试基础 核心思路 背题

多维动态规划 不同路径 https://leetcode.cn/problems/unique-paths/ 核心思路 比较简单 f[i][j] f[i - 1][j] f[i][j - 1] ; 示例代码 class Solution {public int uniquePaths(int n, int m) {int[][] f new int[n][m];for (int i 0; i < n; i)f[i][0] 1;for…...

C++ 多线程简要讲解

std::thread是 C11 标准库中用于多线程编程的核心类&#xff0c;提供线程的创建、管理和同步功能。下面我们一一讲解。 一.构造函数 官网的构造函数如下&#xff1a; 1.默认构造函数和线程创建 thread() noexcept; 作用&#xff1a;创建一个 std::thread 对象&#xff0c;但…...

乐仓VUE常用点

页面跳转 发送 router.push({ name: config.editRouteName, query: { type: create, from: route.name as string, }, }); router.push({ name: MbdCalScheme }); 接收 const route useRoute(); const type compu…...

单一主数据系统 vs. 统一主数据中心,哪种更优?

在企业中&#xff0c;主数据管理&#xff08;MDM&#xff09;已成为确保数据一致性和高效运营的关键。企业通常使用多个系统来处理业务数据&#xff0c;如ERP、CRM、SRM等。在这种多系统环境下&#xff0c;如何统一管理企业数据、避免数据孤岛&#xff0c;成为了一项重大挑战。…...

数据结构—树(java实现)

目录 一、树的基本概念1.树的术语2.常见的树结构 二、节点的定义三、有关树结构的操作1.按照数组构造平衡 二叉搜索树2.层序遍历树3.前、中、后序遍历树(1).前序遍历树(2).中序遍历树(3).后序遍历树(4).各种遍历的情况的效果对比 4.元素添加5.元素删除1.删除叶子节点2.删除单一…...

Modbus RTU ---> Modbus TCP透传技术实现(Modbus透传、RS485透传、RTU透传)分站代码实现、协议转换器

文章目录 Modbus RTU到Modbus TCP透传技术实现1. 透传技术概述1.1 透传基本原理- 协议帧格式转换- 地址映射与管理- 通信时序适配- 错误检测与处理 2. 透传网关硬件架构2.1 典型硬件结构- 微控制器/处理器(ARM、STM32等)- RS-485/RS-232收发器- 以太网控制器(如W5500)- 电源管理…...

Flask(三)路由与视图函数

在 Flask 中&#xff0c;路由 (Route) 是将 URL 地址映射到特定的视图函数 (View Function) 的机制。视图函数处理用户请求&#xff0c;并返回 HTTP 响应。理解路由和视图函数是构建 Flask 应用的基础。 3.1 路由的基本概念 Flask 使用 app.route() 装饰器来定义路由。以下是…...

mysql 磐维(opengauss)tidb误删数据之高级恢复

Mysql参考&#xff1a; Mysql 8.0 XtraBackupMysqlbinlog 完全恢复 - 墨天轮 Mysql 8.0 XtraBackupMysqlbinlog 完全恢复[TOC]# 一、安装mysql 8.0.19## 1.1https://www.modb.pro/db/509223MySQL 的全量备份、增量备份与 Binlog 时间点恢复_mysqlbinlog自动备份吗-CSDN博客文章…...

常见框架漏洞(一)----Thinkphp(TP)

Thinkphp框架介绍&#xff1a; ThinkPHP是为了简化企业级应⽤开发和敏捷WEB应⽤开发⽽诞⽣的&#xff0c;是⼀个快速、兼容⽽ 且简单的轻量级国产PHP开发框架&#xff0c;诞⽣于2006年初&#xff0c;原名FCS&#xff0c;2007年元旦正式更名为 ThinkPHP&#xff0c;遵循Apache…...

Git 使用指南:从设置用户信息到项目提交的全流程教程(持续更新)

一、设置 Git 用户信息 1.全局设置&#xff08;适用于所有 Git 仓库&#xff09;&#xff1a; git config --global user.name "Your Name" git config --global user.email youexample.com 2.仅针对当前仓库设置&#xff08;如果您只想为当前项目设置&#xff0…...

Json在扩展属性xdata中的应用实例——cad 二次开发c#

以下是一个使用AutoCAD C#.NET API实现你需求的示例代码&#xff0c;代码实现了提示用户选择一个实体&#xff0c;将一些字符串变量及其对应的值组成JSON格式数据存储到实体的扩展数据&#xff08;XData&#xff09;中&#xff0c;并在弹出窗口中显示该实体的所有扩展数据信息。…...

Unity Animation的其中一种运用方式

Animation是Unity的旧的动画系统&#xff0c;先说目的&#xff0c;其使用是为了在UI中播放动效&#xff0c;并且在动效播放结束后接自定义事件而设计的 设计的关键点在于&#xff0c;这个脚本不是通过Animation直接播放动画片段&#xff0c;而是通过修改AnimationState的nor…...

C++ 的基本内置类型(十二)

C 作为一门强大的编程语言&#xff0c;其内置类型是开发者必须掌握的基础。本文将详细介绍 C 的基本内置类型&#xff0c;包括算术类型和空类型&#xff0c;探讨它们的特性、尺寸以及在机器上的实现方式。 一、 基本内置类型概述 C 定义了一套基本数据类型&#xff0c;主要包…...

Android设计模式之单例模式

一、定义&#xff1a;确保一个类只有一个实例&#xff0c;并且自动实例化&#xff0c;并向整个系统提供这个实例。 二、使用场景&#xff1a;避免重复创建对象&#xff0c;过多消耗系统资源。 三、使用方式 3.1饿汉式&#xff1a;类加载时立即初始化&#xff0c;线程安全&…...

随笔(1)

1、解除切屏限制命令 document.body.onblur null2、vue3 getCurrentInstance import { getCurrentInstance } from vue const {proxy} getCurrentInstance() proxy.mittBus.emit(message,xxxx)3、 自定义双向绑定&#xff0c;modelValue 就是对应输入框的值 emit(update:mo…...

系统与网络安全------网络应用基础(3)

资料整理于网络资料、书本资料、AI&#xff0c;仅供个人学习参考。 路由器 认识路由器 负责在不同网络之间转发数据的设备 路由器决定到达目标的路径 路由器也为直连网络的主机充当”网关“角色 路由器是实现网络互连的最核心设备 工作原理 每台路由器维护一份路由表&…...

Java 基于微信小程序的开放实验室预约管理系统

博主介绍&#xff1a;✌Java徐师兄、7年大厂程序员经历。全网粉丝13w、csdn博客专家、掘金/华为云等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3fb; 不…...

Linux内核NIC网卡驱动实战案例分析

以下Linux 内核模块实现了一个虚拟网络设备驱动程序&#xff0c;其作用和意义如下&#xff1a; 1. 作用 &#xff08;1&#xff09;创建虚拟网络设备对 驱动程序动态创建了两个虚拟网络设备&#xff08;nic_dev[0]和nic_dev[1]&#xff09;&#xff0c;模拟物理网卡的功能。这两…...

R 基础语法

R 基础语法 引言 R 是一种针对统计计算和图形表示而设计的编程语言和环境。它广泛应用于统计学、生物信息学、数据挖掘等领域。本文将为您介绍 R 语言的基础语法,帮助您快速上手。 R 的基本结构 R 语言的基本结构包括:变量、数据类型、运算符、控制结构、函数等。 变量 …...

JDK 24 发布,新特性解读!

一、版本演进与技术格局新动向 北京时间3月20日&#xff0c;Oracle正式发布Java SE 24。作为继Java 21之后的第三个非LTS版本&#xff0c;其技术革新力度远超预期——共集成24项JEP提案&#xff0c;相当于Java 22&#xff08;12项&#xff09;与Java 23&#xff08;12项&#…...

在 Qt 中,不带参数或整形的参选的信号能够从 std::thread 发送成功,而带枚举离线的信号却发送失败

在 Qt 中&#xff0c;不带参数或整形的参选的信号能够从 std::thread 发送成功&#xff0c;而带枚举离线的信号却发送失败 当信号和槽在不同线程时&#xff0c;默认使用 队列连接&#xff08;Qt::QueuedConnection&#xff09;&#xff0c;信号会被放入接收线程的事件队列&…...

慧通测控汽车智能座舱测试技术

一、引言 随着科技的飞速发展&#xff0c;汽车正从单纯的交通工具向智能化移动空间转变。智能座舱作为这一转变的核心体现&#xff0c;融合了多种先进技术&#xff0c;为用户带来前所未有的驾驶体验。从简单的信息娱乐系统到高度集成的人机交互、智能驾驶辅助以及车辆状态监测…...

【CSS】CSS 使用全教程

CSS 使用全教程 介绍 CSS&#xff08;层叠样式表&#xff0c;Cascading Style Sheets&#xff09;是一种样式表语言&#xff0c;用于描述 HTML 或 XML 文档的布局和外观&#xff0c;它允许开发者将文档的内容结构与样式表现分离&#xff0c;通过定义一系列的样式规则来控制网页…...

【Linux知识】RPM软件包安装命令行详细说明

文章目录 概述安装软件包升级软件包卸载软件包查询软件包信息验证软件包从软件包中提取文件注意事项 概述 rpm&#xff08;Red Hat Package Manager&#xff09;是红帽系 Linux 发行版&#xff08;如 Red Hat、CentOS、Fedora 等&#xff09;用于管理软件包的工具&#xff0c;…...

SpringBoot3.0不建议使用spring.factories,使用AutoConfiguration.imports新的自动配置方案

文章目录 一、写在前面二、使用imports文件1、使用2、示例比对3、完整示例 参考资料 一、写在前面 spring.factories是一个位于META-INF/目录下的配置文件&#xff0c;它基于Java的SPI(Service Provider Interface)机制的变种实现。 这个文件的主要功能是允许开发者声明接口的…...

c++项目-KV存储-模仿redis实现kv键值对存储的基本功能。

KV存储引擎的技术解析&#xff1a;数组、哈希与红黑树实现及其在网络I/O中的应用。 内容概要&#xff1a;本文档深入介绍了基于数组、哈希表和红黑树的键值存储引擎的设计与实现。文档首先阐述了系统的总体架构与类图关系&#xff0c;之后分别对底层存储结构进行了详细解释&am…...

docker ssh远程连接

目录 操作命令&#xff1a; 确保 SSH 配置允许 root 登录&#xff1a; docker提交&#xff1a; 操作命令&#xff1a; # 进入容器 docker exec -ti lbg04 /bin/bash# 更新包管理并安装 SSH 服务&#xff08;Ubuntu/Debian 示例&#xff09; apt-get update apt-get install…...

边缘计算场景下的分布式推理系统架构设计

一、边缘节点推理优化 1.1 模型轻量化技术矩阵 1.2 TensorRT加速配置示例 # 使用TensorRT优化YOLOv8builder trt.Builder(TRT_LOGGER)network builder.create_network()parser trt.OnnxParser(network, TRT_LOGGER)with open("yolov8s.onnx", "rb") a…...

css基础-浮动

一、浮动是什么&#xff1f; 比喻&#xff1a;就像泳池里的救生圈 原始用途&#xff1a;让文字环绕图片&#xff08;像杂志排版&#xff09;意外发展&#xff1a;被用来做页面布局&#xff08;像用救生圈搭浮桥&#xff09; 二、浮动怎么产生的&#xff1f; 场景还原&#…...

Linux TTY设备汇总

目录 1. ‌tty(终端设备统称) 2. ‌ptm(伪终端主设备)与pts(伪终端从设备) 3. ‌ttys(串行端口终端) 4. ‌ttyACM(USB CDC ACM设备) 5. ‌ttyGS(USB Gadget Serial设备) 主要联系‌ ‌典型应用场景‌ TTY_CORE: drivers/tty/tty_io.c:tty_register_driver…...

Android studio组合教程--做出一个类似于QQ的登录页面

之前我们学过了html与Android的开发&#xff0c;以及各种组件的学习&#xff0c;这次我们做一个完整向的登录页面&#xff0c;作为一次大作业。 注意 里面的一图片可以自由发挥&#xff0c;但要注意文件路径保持准确&#xff0c;这里给出参考路径&#xff1a; 背景路径&…...

iPhone 16 Plus :凉凉了

大屏就是生产力&#xff0c;这句话就像思想钢印一样&#xff0c;深入人心。 但苹果用户是个例外&#xff0c;根据内行人的爆料&#xff0c;iPhone 16 Plus 彻底凉凉了&#xff0c;难怪它会是最后一代Plus。 根据知名博主数码闲聊站透露&#xff0c;截止3 月 9 号&#xff0c;i…...

【MySQL报错】:Column count doesn’t match value count at row 1

MySQL报错&#xff1a;Column count doesn’t match value count at row 1 意思是存储的数据与数据库表的字段类型定义不相匹配. 由于类似 insert 语句中&#xff0c;前后列数不等造成的 主要有3个易错点&#xff1a; 要传入表中的字段数和values后面的值的个数不相等。 由于类…...

2025 polarctf春季个人挑战赛web方向wp

来个弹窗 先用最基础的xss弹窗试一下 <script>alert("xss")</script>没有内容&#xff0c;猜测过滤了script&#xff0c;双写绕过一下 <scrscriptipt>alert("xss")</scscriptript>background 查看网页源代码 查看一下js文件 类…...