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

使用VS Code通过SSH编译Linux上的C++程序

引言

在软件开发领域,跨平台开发是一项常见需求。特别是对于C++开发者来说,有时需要在Windows环境下编写代码,但却需要在Linux环境中编译和运行。这种情况在系统编程、嵌入式开发或高性能计算领域尤为常见。

Visual Studio Code (VS Code) 提供了强大的远程开发功能,通过SSH扩展,开发者可以直接在本地VS Code界面中编辑、编译和调试远程Linux服务器上的C++代码。本文将详细介绍如何配置和使用VS Code的SSH远程开发功能,实现无缝的跨平台C++开发体验。

前提条件

在开始之前,请确保你已经具备以下条件:

  1. 本地Windows系统安装了VS Code
  2. 可访问的Linux服务器(物理机或虚拟机)
  3. Linux服务器上已安装SSH服务
  4. Linux服务器上已安装C++编译工具链(GCC/G++)
  5. 本地Windows系统安装了OpenSSH客户端

第一步:安装必要的VS Code扩展

首先,我们需要在VS Code中安装Remote Development扩展包:

  1. 打开VS Code
  2. 点击左侧边栏的扩展图标(或按下Ctrl+Shift+X
  3. 在搜索框中输入"Remote Development"
  4. 找到Microsoft发布的Remote Development扩展包并安装
  5. 或者直接安装其中的"Remote - SSH"扩展

第二步:配置SSH连接

安装完扩展后,我们需要配置SSH连接:

  1. 按下F1Ctrl+Shift+P打开命令面板
  2. 输入"Remote-SSH: Connect to Host…"并选择
  3. 选择"Add New SSH Host…"选项
  4. 输入SSH连接命令,格式为:ssh username@hostname_or_ip
    • 例如:ssh developer@192.168.1.100ssh developer@my-linux-server
  5. 选择配置文件保存位置(通常选择第一个选项,即用户配置文件)
  6. 连接成功后,VS Code会打开一个新窗口,连接到远程服务器

如果你需要使用SSH密钥进行身份验证,请确保已经正确设置了SSH密钥对。你可以使用以下命令生成SSH密钥:

ssh-keygen -t rsa -b 4096

然后使用以下命令将公钥复制到服务器:

ssh-copy-id username@hostname_or_ip

第三步:在远程服务器上安装C++开发工具

连接到远程服务器后,我们需要确保服务器上安装了必要的C++开发工具:

  1. 在VS Code的远程窗口中,打开终端(Ctrl+

  2. 根据Linux发行版,安装C++开发工具:

    • 对于Ubuntu/Debian系统:

      sudo apt update
      sudo apt install build-essential gdb cmake
      
    • 对于CentOS/RHEL系统:

      sudo yum groupinstall "Development Tools"
      sudo yum install gdb cmake
      
    • 对于Arch Linux系统:

      sudo pacman -S base-devel gdb cmake
      

第四步:安装C++扩展到远程服务器

在远程VS Code窗口中,我们需要安装C++扩展:

  1. 点击左侧边栏的扩展图标
  2. 注意此时显示的是"远程服务器"的扩展列表
  3. 搜索"C++"并安装Microsoft的C/C++扩展
  4. 可选:安装CMake和CMake Tools扩展,如果你使用CMake构建系统

第五步:创建或打开C++项目

现在,我们可以在远程服务器上创建或打开C++项目:

  1. 在VS Code中,选择"文件 > 打开文件夹"
  2. 浏览并选择远程服务器上的项目文件夹
  3. 如果是新项目,可以创建新文件夹并添加C++源文件

下面是一个简单的C++项目结构示例:

my_project/
├── .vscode/
│   ├── c_cpp_properties.json
│   ├── launch.json
│   └── tasks.json
├── src/
│   ├── main.cpp
│   └── utils.cpp
├── include/
│   └── utils.h
├── CMakeLists.txt
└── README.md

第六步:配置C++项目

为了能够编译和调试C++代码,我们需要配置VS Code的任务和启动设置:

创建tasks.json(编译任务)

  1. 按下F1Ctrl+Shift+P打开命令面板
  2. 输入"Tasks: Configure Default Build Task"并选择
  3. 选择"Create tasks.json file from template"
  4. 选择"Others"创建自定义任务

将以下内容添加到.vscode/tasks.json文件中:

{"version": "2.0.0","tasks": [{"label": "build","type": "shell","command": "g++","args": ["-g","${workspaceFolder}/src/*.cpp","-I","${workspaceFolder}/include","-o","${workspaceFolder}/bin/program"],"group": {"kind": "build","isDefault": true},"problemMatcher": ["$gcc"]}]
}

创建launch.json(调试配置)

  1. 切换到调试视图(按下Ctrl+Shift+D
  2. 点击"创建launch.json文件"
  3. 选择"C++ (GDB/LLDB)"环境

将以下内容添加到.vscode/launch.json文件中:

{"version": "0.2.0","configurations": [{"name": "g++ - 构建和调试活动文件","type": "cppdbg","request": "launch","program": "${workspaceFolder}/bin/program","args": [],"stopAtEntry": false,"cwd": "${workspaceFolder}","environment": [],"externalConsole": false,"MIMode": "gdb","setupCommands": [{"description": "为 gdb 启用整齐打印","text": "-enable-pretty-printing","ignoreFailures": true}],"preLaunchTask": "build","miDebuggerPath": "/usr/bin/gdb"}]
}

创建c_cpp_properties.json(IntelliSense配置)

  1. 按下F1Ctrl+Shift+P打开命令面板
  2. 输入"C/C++: Edit Configurations (JSON)"并选择

将以下内容添加到.vscode/c_cpp_properties.json文件中:

{"configurations": [{"name": "Linux","includePath": ["${workspaceFolder}/**","${workspaceFolder}/include"],"defines": [],"compilerPath": "/usr/bin/g++","cStandard": "c11","cppStandard": "c++17","intelliSenseMode": "linux-gcc-x64"}],"version": 4
}

第七步:编写C++代码

现在,让我们创建一个简单的C++程序:

  1. include文件夹中创建utils.h
#ifndef UTILS_H
#define UTILS_H#include <string>std::string getGreeting(const std::string& name);#endif // UTILS_H
  1. src文件夹中创建utils.cpp
#include "../include/utils.h"std::string getGreeting(const std::string& name) {return "Hello, " + name + "! Welcome to remote C++ development!";
}
  1. src文件夹中创建main.cpp
#include <iostream>
#include "../include/utils.h"int main() {std::string name;std::cout << "Enter your name: ";std::getline(std::cin, name);std::string greeting = getGreeting(name);std::cout << greeting << std::endl;return 0;
}

第八步:编译和运行C++程序

现在我们可以编译和运行我们的C++程序:

  1. 确保远程服务器上存在bin目录(如果不存在,创建它):

    mkdir -p bin
    
  2. 按下Ctrl+Shift+B运行默认构建任务(我们在tasks.json中配置的任务)

  3. 在终端中运行编译后的程序:

    ./bin/program
    

第九步:调试C++程序

VS Code提供了强大的调试功能:

  1. 在代码中设置断点(点击行号左侧)
  2. 按下F5开始调试
  3. 程序将在断点处暂停,你可以:
    • 查看变量值(悬停在变量上或使用变量面板)
    • 使用调试控制台执行表达式
    • 使用调试工具栏控制程序执行(继续、单步执行等)

VS Code调试界面

第十步:使用CMake构建系统(可选)

对于更复杂的C++项目,推荐使用CMake构建系统:

  1. 在项目根目录创建CMakeLists.txt文件:
cmake_minimum_required(VERSION 3.10)
project(RemoteCppProject)set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)include_directories(include)file(GLOB SOURCES "src/*.cpp")add_executable(program ${SOURCES})
  1. 安装VS Code的CMake Tools扩展(在远程服务器上)

  2. 按下F1Ctrl+Shift+P打开命令面板,输入"CMake: Configure"并选择

  3. 选择编译器(通常是GCC)

  4. 使用CMake工具栏构建和运行项目

性能优化技巧

在使用VS Code进行远程C++开发时,以下是一些提高性能的技巧:

  1. 使用SSH配置优化连接
    编辑~/.ssh/config文件,添加以下配置:

    Host my-linux-serverHostName 192.168.1.100User developerCompression yesControlMaster autoControlPath ~/.ssh/sockets/%r@%h-%pControlPersist 600
    
  2. 使用工作区信任
    当VS Code提示是否信任工作区时,选择"信任"以启用所有功能。

  3. 优化文件监视
    在远程服务器上,增加inotify限制:

    echo "fs.inotify.max_user_watches=524288" | sudo tee -a /etc/sysctl.conf
    sudo sysctl -p
    
  4. 使用Git进行版本控制
    在远程服务器上初始化Git仓库,VS Code的Git集成将自动工作。

常见问题解决

连接问题

如果无法连接到远程服务器,请检查:

  1. SSH服务是否在服务器上运行:

    sudo systemctl status sshd
    
  2. 防火墙是否允许SSH连接(通常是22端口):

    sudo ufw status
    # 如果需要,允许SSH连接
    sudo ufw allow ssh
    
  3. 网络连接是否正常(可以使用ping测试)

编译问题

如果编译失败,请检查:

  1. 是否安装了所有必要的开发工具和库
  2. 编译命令是否正确
  3. 项目结构是否符合预期

调试问题

如果调试不工作,请检查:

  1. GDB是否正确安装
  2. launch.json中的路径是否正确
  3. 程序是否以调试模式编译(使用-g标志)

结论

通过VS Code的远程SSH功能,我们可以在Windows环境中无缝地开发、编译和调试Linux上的C++程序。这种开发模式结合了Windows桌面环境的便捷性和Linux系统的强大开发能力,特别适合需要在Linux环境中编译和运行的C++项目。

无论是系统编程、嵌入式开发还是高性能计算,这种远程开发方式都能显著提高开发效率,减少环境切换的成本。随着VS Code不断完善其远程开发功能,这种开发模式将变得越来越流畅和强大。

参考资源

  • VS Code Remote Development
  • VS Code C++ Development
  • CMake Documentation
  • GCC Documentation

相关文章:

使用VS Code通过SSH编译Linux上的C++程序

引言 在软件开发领域&#xff0c;跨平台开发是一项常见需求。特别是对于C开发者来说&#xff0c;有时需要在Windows环境下编写代码&#xff0c;但却需要在Linux环境中编译和运行。这种情况在系统编程、嵌入式开发或高性能计算领域尤为常见。 Visual Studio Code (VS Code) 提…...

Datawhale 5月llm-universe 第2次笔记

第二章 使用 LLM API 开发应用 名词解释 Temperature 参数/场景低 Temperature&#xff08;0 ~ 0.3&#xff09;高 Temperature&#xff08;0.7 ~ 1.0&#xff09;输出特点保守、稳定、可预测创造性强、多样化、不可预测语言模型行为更少的随机性&#xff0c;倾向于选择高概…...

【Vue】CSS3实现关键帧动画

关键帧动画 两个重点keyframesanimation子属性 实现案例效果展示&#xff1a; 两个重点 keyframes 和 animation 作用&#xff1a;通过定义关键帧&#xff08;keyframes&#xff09;和动画(animation)规则&#xff0c;实现复杂的关键帧动画。 keyframes 定义动画的关键帧序列…...

Spring 模拟转账开发实战

一、转账业务场景分析 转账是金融类应用的核心场景之一&#xff0c;涉及付款方扣减金额和收款方增加金额两个关键操作。在开发中需解决以下问题&#xff1a; 业务层与数据层解耦&#xff1a;通过分层架构&#xff08;Service 层调用 Dao 层&#xff09;实现逻辑分离。数据库事…...

Baklib内容中台赋能资源管理升级

内容中台驱动管理升级 在数字化转型进程中&#xff0c;企业级内容管理工具的效能直接影响资源协同效率。以全渠道资源整合为核心的内容中台&#xff0c;通过集中化处理文档、FAQ及社区论坛等非结构化数据&#xff0c;有效解决信息孤岛问题。例如&#xff0c;某金融集团通过部署…...

数据结构(九)——排序

一、排序的基本概念 1.排序&#xff1a;重新排列表中的元素&#xff0c;使表中的元素满足按关键字有序 2.稳定性&#xff1a;Ri和Rj相对位置保持不变 3.内部排序&#xff1a;指在排序期间元素全部存在内存中的排序&#xff08;比较和移动&#xff09;&#xff0c;如插入排序…...

MinerU安装(pdf转markdown、json)

在Windows上安装MinerU&#xff0c;参考以下几个文章&#xff0c;可以成功安装&#xff0c;并使用GPU解析。 整体安装教程&#xff1a; MinerU本地化部署教程——一款AI知识库建站的必备工具 其中安装conda的教程&#xff1a; 一步步教你在 Windows 上轻松安装 Anaconda以及使…...

Spring框架核心技术深度解析:JDBC模板、模拟转账与事务管理

一、JDBC模板技术&#xff1a;简化数据库操作 在传统JDBC开发中&#xff0c;繁琐的资源管理和重复代码一直是开发者的痛点。Spring框架提供的 JDBC模板&#xff08;JdbcTemplate) 彻底改变了这一现状&#xff0c;它通过封装底层JDBC操作&#xff0c;让开发者仅需关注SQL逻辑&a…...

LCD电视LED背光全解析:直下式 vs 侧光式、全局调光 vs 局部调光与HDR体验

Abstract: This article explores the various types of LED backlighting used in televisions and monitors. It categorizes backlight systems based on structural design—direct-lit and edge-lit—as well as by dimming technology—global dimming and local dimmin…...

ET EntityRef EntityWeakRef 类分析

EntityRef EntityWeakRef 相同点 也是这两个的作用&#xff1a;这两个都是用来表示一个实体引用。一般来说使用一个对象&#xff0c;直接持有对象就可以&#xff0c;但是如果对象来自于对象池&#xff0c;这个时候直接持有对象不合适&#xff0c;对象可能已经被对象池回收&…...

Python----神经网络(基于DNN的风电功率预测)

一、基于DNN的风电功率预测 1.1、背景 在全球能源转型的浪潮中&#xff0c;风力发电因其清洁和可再生的特性而日益重要。然而&#xff0c;风力发电功率的波动性给电网的稳定运行和能源调度带来了挑战。准确预测风力发电机的功率输出&#xff0c;对于优化能源管理、提高电网可靠…...

Web前端入门:JavaScript 的应用领域

截至目前&#xff0c;您应该对前端的 HTML CSS 应该有了很清楚的认知&#xff0c;至少实现一个静态网页已经完全不在话下了。 当然&#xff0c;CSS 功能绝不止这些&#xff0c;一些不太常用的 CSS 相关知识&#xff0c;后续将通过案例进行分享。 那么咱们接下来看看 JavaScrip…...

实用工具:微软软件PowerToys(完全免费),实现多台电脑共享鼠标和键盘(支持window系统)

实用工具&#xff1a;微软软件 PowerToys 让多台电脑共享鼠标和键盘 在如今的数字化办公与生活场景中&#xff0c;我们常常会面临同时使用多台电脑的情况。例如&#xff0c;办公时可能一台电脑用于处理工作文档&#xff0c;另一台用于运行专业软件或查看资料&#xff1b;家庭环…...

精益数据分析(61/126):移情阶段评分体系构建与实战案例解析

精益数据分析&#xff08;61/126&#xff09;&#xff1a;移情阶段评分体系构建与实战案例解析 在创业的移情阶段&#xff0c;如何科学评估用户需求的真实性与紧迫性&#xff0c;是决定后续产品方向的关键。今天&#xff0c;我们结合《精益数据分析》中的评分框架&#xff0c;…...

面试题:介绍一下JAVA中的反射机制

什么是反射机制&#xff1f; Java反射机制是指在运行状态中&#xff0c;对于任意一个类&#xff0c;都能够知道这个类的所有属性和方法&#xff1b;对于任意一个对象&#xff0c;都能够调用它的任意方法和属性。这种动态获取的信息以及动态调用对象的方法的功能称为Java语言的…...

yarn任务筛选spark任务,判断内存/CPU使用超过限制任务

yarn任务筛选spark任务&#xff0c;判断内存/CPU使用超过限制任务 curl -s “http://it-cdh-node01:8088/ws/v1/cluster/apps?statesRUNNING” | jq ‘select(.apps.app[].applicationType “SPARK”) | .apps.app[].id’ | xargs -I {} curl -s “http://it-cdh-node01:808…...

ArcGIS Pro地块图斑顺序编号(手绘线顺序快速编号)-004

ArcGIS全系列实战视频教程——9个单一课程组合系列直播回放_arcgis初学者使用视频-CSDN博客 4大遥感软件&#xff01;遥感影像解译&#xff01;ArcGISENVIErdaseCognition_遥感解译软件-CSDN博客 今天介绍一下在ArcGIS Pro地块图斑顺序编号&#xff08;手绘线顺序快速编号&am…...

红黑树解析

目录 一、引言 二、红黑树的概念与性质 2.1 红黑树的概念 2.2 红黑树的性质 三、红黑树的节点定义与结构 3.1 节点定义 四、红黑树的插入操作 4.1 插入步骤 4.2 插入代码实现 五、红黑树的验证 5.1 验证步骤 5.2 验证代码实现 六、红黑树迭代器的实现 6.1 迭代器的…...

在线文档管理系统 spring boot➕vue|源码+数据库+部署教程

&#x1f4cc; 一、项目简介 本系统采用Spring Boot Vue ElementUI技术栈&#xff0c;支持管理员和员工两类角色&#xff0c;涵盖文档上传、分类管理、公告发布、员工资料维护、部门岗位管理等核心功能。 系统目标是打造一个简洁高效的内部文档管理平台&#xff0c;便于员工…...

Python3 简易DNS服务器实现

使用Python3开发一个简单的DNS服务器&#xff0c;支持配置资源记录(RR)&#xff0c;并能通过dig命令进行查询。 让自己理解DNS原理 实现方案 我们将使用socketserver和dnslib库来构建这个DNS服务器。dnslib库能帮助我们处理DNS协议的复杂细节。 1. 安装依赖 首先确保安装了d…...

雾锁王国开服联机教程-专用服务器

一。阿里云服务器搭建 服务器地址&#xff1a;1分钟畅玩&#xff01;一键部署联机服务器 《雾锁王国&#xff08;Enshrouded&#xff09;》融合了生存、制作以及动作 RPG 战斗&#xff0c;游戏背景设定在了一个基于体素构筑的辽阔大陆。无论是攀登山脉还是跨越沙漠&#xff0…...

鸿蒙OSUniApp 开发的一键分享功能#三方框架 #Uniapp

使用 UniApp 开发的一键分享功能 在移动应用开发中&#xff0c;分享功能几乎是必不可少的一环。一个好的分享体验不仅能带来更多用户&#xff0c;还能提升产品的曝光度。本文将详细讲解如何在 UniApp 框架下实现一个简单高效的一键分享功能&#xff0c;适配多个平台。 各平台分…...

Hive PredicatePushDown 谓词下推规则的计算逻辑

1. PredicatePushDown 谓词下推 谓词下推的处理顺序是先处理子节点的操作&#xff0c;子节点都处理完&#xff0c;然后处理父节点。 select web_site_sk from (select web_site_sk,web_name from web_site where web_cityPleasant Hill ) t where web_name <> site_…...

2024东北四省ccpc

F题 解题思路 数论 有限小数的条件 p q \frac{p}{q} qp​ 在 k k k 进制下是有限小数&#xff0c;当且仅当 q q q 的所有质因数都是 p p p 或 k k k 的质因数。 即&#xff0c;若 q q q 的质因数分解为 q ∏ i p i a i q \prod_{i} p_i^{a_i} q∏i​piai​​&#x…...

【C语言】初阶数据结构相关习题(二)

&#x1f386;个人主页&#xff1a;夜晚中的人海 今日语录&#xff1a;知识是从刻苦劳动中得来的&#xff0c;任何成就都是刻苦劳动的结果。——宋庆龄 文章目录 &#x1f384;一、链表内指定区间翻转&#x1f389;二、从链表中删去总和值为零的节点&#x1f680;三、链表求和&…...

DeepSeek执行流程加速指南:跨框架转换与编译优化的核心策略全解析

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

解决 Conda 安装 PyTorch 1.1.0 报错:excluded by strict repo priority(附三种解决方案)

# &#x1f4a5;解决 Conda 安装 PyTorch 1.1.0 报错问题&#xff1a;excluded by strict repo priority在使用旧版本 PyTorch&#xff08;例如 1.1.0&#xff09;时&#xff0c;有些开发者会遇到以下 conda 安装报错&#xff1a;LibMambaUnsatisfiableError: package pytorch-…...

面试从微前端拓展到iframe是如何通信的

一、跨域通信 1、父页面发消息给 iframe const iframe document.getElementById(myIframe); iframe.contentWindow.postMessage(form parent, https://iframe-domain.com)// iframe 接收 window.addEventListener(message, (event) > {if (event.origin ! https://paren…...

PyTorch循环神经网络(Pytotch)

文章目录 循环神经网络&#xff08;RNN&#xff09;简单的循环神经网络长短期记忆网络&#xff08;LSTM&#xff09;门控循环单元&#xff08;GRU&#xff09; 循环神经网络&#xff08;RNN&#xff09; 循环神经网络&#xff08;RecurrentNeuralNetwork&#xff0c;RNN&#…...

django中用 InforSuite RDS 替代memcache

在 Django 项目中&#xff0c;InforSuite RDS&#xff08;关系型数据库服务&#xff09;无法直接替代 Memcached&#xff0c;因为两者的设计目标和功能定位完全不同&#xff1a; 特性MemcachedInforSuite RDS核心用途高性能内存缓存&#xff0c;临时存储键值对数据持久化关系型…...

Git 常用命令详解

Git 常用命令详解&#xff08;含详细示例&#xff09; 本文整理了 Git 日常使用中最常用的命令&#xff0c;适合初学者和日常查阅&#xff0c;如有错误&#xff0c;敬请指正&#xff0c;谢谢&#xff01; ☁️ Git 使用流程入门&#xff08;从 pull 和 push 开始&#xff09; …...

AI、机器学习、深度学习:一文厘清三者核心区别与联系

AI、机器学习、深度学习&#xff1a;一文厘清三者核心区别与联系 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;可以分享一下给大家。点击跳转到网站。 https://www.captainbed.cn/ccc 前言 在人工智能技术席卷全球的今天&…...

《数字藏品社交化破局:React Native与Flutter的创新实践指南》

NFT&#xff0c;这种非同质化代币&#xff0c;赋予了数字资产独一无二的身份标识&#xff0c;从数字艺术作品到限量版虚拟物品&#xff0c;每一件NFT数字藏品都承载着独特的价值与意义。当React Native和Flutter这两大跨平台开发框架遇上NFT数字藏品&#xff0c;一场技术与创意…...

工业操作系统核心技术揭秘

摘要 随着工业 4.0 与智能制造的深入推进&#xff0c;工业操作系统作为工业数字化转型的核心支撑&#xff0c;其技术发展备受关注。本文深入剖析工业操作系统的核心技术&#xff0c;包括实时性保障机制、硬件抽象层设计、多任务管理策略等&#xff0c;结合技术原理与实际应用场…...

Python logging模块使用指南

Python 的 logging 模块是一个灵活且强大的日志记录工具&#xff0c;广泛应用于应用程序的调试、运行监控和问题排查。它提供了丰富的功能&#xff0c;包括多级日志记录、多种输出方式、灵活的格式配置等。以下是详细介绍&#xff1a; 一、为什么使用 logging 模块&#xff1f;…...

沃伦森智能无功补偿系统解决电力电容器频繁投切的隐患

在现代电力系统中&#xff0c;无功补偿设备的稳定运行直接影响电网质量。然而&#xff0c;电力电容器的频繁投切问题长期存在&#xff0c;如同电网的“慢性病”&#xff0c;不仅加速设备老化&#xff0c;还可能引发系统性风险。作为电力电子领域的领军企业&#xff0c;沃伦森电…...

【HarmonyOS 5】鸿蒙mPaaS详解

【HarmonyOS 5】鸿蒙mPaaS详解 一、mPaaS是什么&#xff1f; mPaaS 是 Mobile Platform as a Service 的缩写&#xff0c;即移动开发平台。 蚂蚁移动开发平台mPaaS &#xff0c;融合了支付宝科技能力&#xff0c;可以为移动应用开发、测试、运营及运维提供云到端的一站式解决…...

PyTorch中.item()函数:提取单元素张量值

PyTorch中,.item()函数是什么 在PyTorch代码中,.item() 主要用于从一个只包含单个元素的张量(Tensor)中提取出对应的Python标量值 ,具体作用和使用场景如下: 作用 获取数值:当通过计算得到一个张量,且该张量仅包含一个元素时,使用 .item() 方法可以方便地将这个元素…...

PyTorch LSTM练习案例:股票成交量趋势预测

文章目录 案例介绍源码地址代码实现导入相关库数据获取和处理搭建LSTM模型训练模型测试模型绘制折线图主函数 绘制结果 案例介绍 本例使用长短期记忆网络模型对上海证券交易所工商银行的股票成交量做一个趋势预测&#xff0c;这样可以更好地掌握股票买卖点&#xff0c;从而提高…...

ARM A64 LDR指令

ARM A64 LDR指令 1 LDR (immediate)1.1 Post-index1.2 Pre-index1.3 Unsigned offset 2 LDR (literal)3 LDR (register)4 其他LDR指令变体4.1 LDRB (immediate)4.1.1 Post-index4.1.2 Pre-index4.1.3 Unsigned offset 4.2 LDRB (register)4.3 LDRH (immediate)4.3.1 Post-index…...

一些问题杂记

1. 在 SSH 会话/bash中仅使用cat命令查看文件后使用umount命令提示挂载点繁忙&#xff0c;lsof命令查看是bash有占用&#xff0c;但是并没有打开文件之类的情况 原因&#xff1a;当前工作目录仍在挂载点内&#xff0c;使用cat查看文件时&#xff0c;可能当前工作目录&#xff…...

【OpenGL学习】(一)创建窗口

文章目录 【OpenGL】&#xff08;一&#xff09;创建窗口 【OpenGL】&#xff08;一&#xff09;创建窗口 GLFW OpenGL 本身只是一套图形渲染 API&#xff0c;不提供窗口创建、上下文管理或输入处理的功能。 GLFW 是一个支持创建窗口、处理键盘鼠标输入和管理 OpenGL 上下文的…...

RTSP 播放器技术探究:架构、挑战与落地实践

RTSP 播放器为什么至今无法被淘汰&#xff1f; 在实时视频传输领域&#xff0c;RTSP&#xff08;Real-Time Streaming Protocol&#xff09;作为最基础、最常见的协议之一&#xff0c;至今依然被广泛用于监控设备、IP Camera、视频服务器等设备中。然而&#xff0c;要构建一个稳…...

【问题记录】08 MAC电脑,安装HP打印机驱动,提示:此更新需要macOS版本15.0或更低版本

问题描述&#xff1a; MAC电脑&#xff0c;升级了新系统之后&#xff08;v15.4.1&#xff09;。 这时&#xff0c;安装惠普&#xff08;HP&#xff09;打印机驱动&#xff0c;提示&#xff1a;This update requires macOS version 15.0 or earlier&#xff08;此更新需要macOS…...

场景新零售:基于开源AI大模型AI智能名片S2B2C商城小程序源码的商业本质回归与创新

摘要&#xff1a;本文聚焦场景新零售&#xff0c;探讨在新生代消费群体推动下传统零售模式的创新升级。通过分析新生代消费群体的特点以及场景新零售的发展趋势&#xff0c;阐述开源AI大模型AI智能名片S2B2C商城小程序源码在场景新零售中的应用优势&#xff0c;包括精准营销、供…...

16.2 VDMA视频转发实验之模拟源

文章目录 1 实验任务2 系统框图3 硬件设计3.1 IP核配置3.2 注意事项3.3 自定义IP核源码 1 实验任务 基于14.1&#xff0c;相较于16.1&#xff0c;使用自定义IP核vid_gen_motion替换Xilinx TPG IP核。 2 系统框图 基于14.1&#xff0c;添加自定义IP核vid_gen_motion作为视频源…...

PADS 9.5安装教程

1.安装包 https://pan.baidu.com/s/1bt6vE3y8VEmlFwJfoV32nA?pwdj2cg 2.PADS 9.5安装教程 PADS 9.5安装教程&#xff08;Windows11、超详细版&#xff09;_pads9.5-CSDN博客 3.出现的问题 1.打开无法使用鼠标滚轮 Win10 pads卡死问题解决&#xff0c;输入法的兼容性问…...

趣味编程:钟表

目录 1. 效果展示 2. 源码展示 3. 逻辑概述 3.1 表针绘制函数&#xff08;DrawHand&#xff09; 3.2 表盘绘制函数 3.3 主程序逻辑 4. 小结 概述&#xff1a;本篇博客主要介绍简易钟表的绘制。 1. 效果展示 该钟表会随着系统的时间变化而变化&#xff0c;动态的效…...

.NET 通过命令行解密web.config配置

在.NET应用系统中,保护数据库连接字符串的安全性至关重要。.NET 提供了一种通过 DataProtectionConfigurationProvider 加密连接字符串的方法,以防止敏感数据泄露。然而,在内网信息收集阶段,攻击者只需在目标主机上运行aspnet_regiis.exe这个命令行工具即可完成解密,获取数…...

【MySQL】多表连接查询

个人主页&#xff1a;Guiat 归属专栏&#xff1a;MySQL 文章目录 1. 多表连接查询概述1.1 连接查询的作用1.2 MySQL支持的连接类型 2. 内连接 (INNER JOIN)2.1 内连接的特点2.2 内连接语法2.3 内连接实例2.4 多表内连接 3. 左外连接 (LEFT JOIN)3.1 左外连接的特点3.2 左外连接…...