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

Windows 11 开发详解:工具与高级用法

1. 引言

Windows 11 是微软最新的操作系统,它不仅带来了全新的用户界面和设计理念,还为开发者提供了强大的开发工具和平台支持。在过去的几年中,开发工具和技术栈发生了巨大的变化,Windows 11 通过其集成的开发环境、虚拟化技术、容器支持以及跨平台开发工具,为开发者提供了一个更加灵活的工作环境。

在本篇博客中,我们将从搭建开发环境开始,逐步探讨在 Windows 11 上进行开发的方方面面。无论你是桌面应用开发者、系统级开发者,还是跨平台应用的构建者,本博客都将为你提供详细的指导。

2. Windows 11 开发环境搭建

在开始开发之前,搭建一个高效的开发环境是至关重要的。在 Windows 11 中,你可以利用 Visual Studio 2024、Windows Terminal 和 WSL 2 等工具,创建一个强大的多平台开发环境。

2.1 安装与配置 Visual Studio 2024

Visual Studio 2024 是微软为 Windows 11 优化的最新集成开发环境 (IDE),它支持包括 C++、C#、Python 等多种编程语言,并且提供了丰富的调试和性能分析工具。

安装步骤
  1. 下载最新版本的 Visual Studio 2024。
  2. 启动安装程序,选择你所需要的工作负载,包括“桌面开发(C++)”、“Web 开发(ASP.NET)”、“跨平台开发”等。
  3. 确保安装 Windows 11 SDK,这是开发现代 Windows 应用的重要工具。
项目创建与代码示例

安装 Visual Studio 后,你可以创建一个简单的 C++ 项目来体验开发过程。以下是一个简单的 C++ 示例,它展示了如何在 Windows 环境中输出一段简单的文本。

#include <iostream>int main() {std::cout << "Hello, Windows 11 Development!" << std::endl;return 0;
}

该代码通过命令行在 Windows 上运行,并输出“Hello, Windows 11 Development!”。

使用 CMake 管理项目

为了更好地管理和构建跨平台项目,Visual Studio 2024 提供了对 CMake 的支持。CMake 是一个跨平台的构建工具,可以为多个开发环境生成编译配置。

以下是一个简单的 CMakeLists.txt 文件的示例,它用于构建 C++ 项目:

cmake_minimum_required(VERSION 3.10)project(HelloWindows)add_executable(HelloWindows main.cpp)

通过这种方式,你可以轻松地使用 CMake 管理大型项目,并在不同的平台上进行构建。

2.2 使用 Windows Terminal 与 PowerShell 高效工作

Windows Terminal 是 Windows 11 中强大的命令行工具,它集成了多个命令行环境,包括 PowerShell、CMD 和 WSL 2。通过 Windows Terminal,开发者可以轻松在不同的环境中切换,提高工作效率。

自定义 Windows Terminal

Windows Terminal 的强大之处在于它的高度可定制性。你可以通过修改 settings.json 文件,自定义终端的外观和行为。以下是一个自定义主题的示例,它展示了如何更改终端的颜色和字体:

{"profiles": {"defaults": {"background": "#282C34","foreground": "#ABB2BF","fontFace": "Cascadia Code","fontSize": 12},"list": [{"name": "PowerShell","commandline": "powershell.exe"},{"name": "Ubuntu","commandline": "wsl.exe"}]}
}
使用 PowerShell 进行系统管理

PowerShell 是 Windows 上的强大脚本语言,尤其适合自动化任务。你可以使用 PowerShell 管理系统配置、部署应用程序以及执行复杂的文件操作。

以下是一个简单的 PowerShell 脚本,它展示了如何批量重命名目录中的所有文件:

Get-ChildItem -Path "C:\Files" | ForEach-Object {Rename-Item $_.FullName -NewName ("New_" + $_.Name)
}

这个脚本会遍历 C:\Files 目录中的所有文件,并为每个文件添加 New_ 前缀。

2.3 使用 WSL 2 进行跨平台开发

WSL 2 (Windows Subsystem for Linux 2) 是 Windows 11 中的一项重要功能,它允许你在 Windows 中运行完整的 Linux 内核。通过 WSL 2,开发者可以轻松地在同一台设备上进行跨平台开发,尤其是开发需要依赖 Linux 环境的应用程序。

安装 WSL 2

在 Windows 11 中,安装 WSL 2 变得更加简单。你可以通过以下 PowerShell 命令一键安装:

wsl --install

安装完成后,使用以下命令查看可以安装的 Linux 发行版:

wsl --list --online

选择你喜欢的发行版并安装,例如:

wsl --install -d Ubuntu
在 WSL 2 中使用 C++ 开发

通过 WSL 2,开发者可以直接在 Windows 11 上运行 Linux 应用。以下是一个简单的 C++ 示例,它展示了如何在 WSL 2 中编译并运行 C++ 程序:

#include <iostream>int main() {std::cout << "Hello from WSL 2!" << std::endl;return 0;
}

在 WSL 2 中使用 GNU 编译器编译并运行程序:

g++ hello.cpp -o hello
./hello

通过这种方式,你可以在 Windows 11 上轻松开发和运行 Linux 应用。

2.4 环境变量与系统配置

在 Windows 开发中,管理环境变量是一个关键步骤,尤其是在设置编译器、库路径和系统工具时。通过系统设置或命令行工具,开发者可以为不同的项目配置合适的环境变量。

示例:设置 C++ 编译器路径

开发者可以通过 PowerShell 添加环境变量,例如为 C++ 项目添加编译器路径:

[System.Environment]::SetEnvironmentVariable("Path", $env:Path + ";C:\Path\To\Compiler", [System.EnvironmentVariableTarget]::Machine)

这种方式可以确保系统能够全局访问编译器工具链。


3. 桌面应用开发

桌面应用开发仍然是 Windows 平台的核心之一。Windows 11 通过 WinUI 3 引入了一系列现代化的开发框架,使开发者能够构建功能强大且用户体验良好的桌面应用。C++ 仍然是开发高性能桌面应用的重要语言,尤其在涉及复杂计算和高效资源管理时,C++ 提供了其他语言无法比拟的优势。

3.1 使用 WinUI 3 构建现代化桌面应用

WinUI 3 是 Windows App SDK 的核心 UI 框架,它为开发者提供了构建现代化 Windows 桌面应用的工具。通过 WinUI 3,开发者可以使用 XAML 描述用户界面,并使用 C++ 或 C# 编写业务逻辑。

创建 WinUI 3 项目

你可以使用 Visual Studio 2024 创建一个新的 WinUI 3 项目:

  1. 打开 Visual Studio,选择“创建新项目”。
  2. 在项目模板中,选择“WinUI 3 桌面应用 (C++)”。
  3. 设置项目名称并创建。

WinUI 3 支持丰富的 UI 控件和布局系统。以下是一个简单的 XAML 界面示例:

<Windowx:Class="WinUIApp.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"Title="WinUI 3 App"Width="400"Height="300"><Grid><TextBlock Text="Hello, Windows 11!"HorizontalAlignment="Center"VerticalAlignment="Center"FontSize="24"/></Grid>
</Window>

这个简单的界面会在应用程序中显示一段文本“Hello, Windows 11!”。

绑定数据与 MVVM 模式

WinUI 3 强调与 MVVM (Model-View-ViewModel) 模式的集成,这使得代码逻辑和 UI 呈现可以更好地解耦。通过使用绑定和数据上下文,开发者可以创建更加可维护的代码架构。


4. 系统级开发与驱动开发

对于需要与硬件和系统层次交互的开发者来说,Windows 11 提供了 Windows Driver Kit (WDK) 和丰富的 Windows API。通过这些工具,开发者可以编写和调试驱动程序,开发系统级的应用程序。

4.1 Windows Driver Kit (WDK) 驱动开发详解

Windows Driver Kit (WDK) 是用于编写和调试 Windows 驱动程序的工具集。WDK 提供了创建和测试内核驱动程序的完整工具链,尤其在 Windows 11 上,WDK 集成了最新的调试和性能分析工具。

安装与配置 WDK
  1. 下载并安装最新版本的 Windows Driver Kit。
  2. 通过 Visual Studio 创建一个新的驱动程序项目:
    • 选择“新建项目”,并在模板中找到“驱动程序”选项。
    • 根据需求选择“内核模式驱动程序”或“用户模式驱动程序”模板。
示例:编写简单的内核驱动

以下是一个简单的内核驱动示例,它创建了一个简单的字符设备,并处理用户的读写请求:

#include <ntddk.h>NTSTATUS DriverEntry(PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath) {DbgPrint("Hello, Kernel World!\n");return STATUS_SUCCESS;
}VOID DriverUnload(PDRIVER_OBJECT DriverObject) {DbgPrint("Goodbye, Kernel World!\n");
}

这段代码展示了如何编写最简单的内核驱动,并打印日志信息。通过 WDK 提供的调试工具,开发者可以在 Windows 11 中测试和调试驱动程序。

4.2 使用 Windows API 进行系统调用

Windows API 是 Windows 操作系统提供的底层接口,它允许应用程序与操作系统进行交互。开发者可以使用 C++ 调用 Windows API,实现文件操作、进程管理、内存控制等系统级任务。

示例:使用 Windows API 读取文件

以下是一个使用 Windows API 读取文件内容的 C++ 示例:

#include <windows.h>
#include <iostream>int main() {HANDLE hFile = CreateFile(L"example.txt", GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);if (hFile == INVALID_HANDLE_VALUE) {std::cerr << "Failed to open file." << std::endl;return 1;}char buffer[1024];DWORD bytesRead;ReadFile(hFile, buffer, sizeof(buffer), &bytesRead, NULL);std::cout << "File content: " << buffer << std::endl;CloseHandle(hFile);return 0;
}

通过这种方式,开发者可以直接与系统进行交互,读取和操作文件。


5. 虚拟化与容器化开发

虚拟化和容器技术在现代开发中扮演着越来越重要的角色。Windows 11 通过集成 Hyper-V 和 Docker,为开发者提供了强大的虚拟化和容器化支持,特别适合于构建、测试和部署跨平台应用。

5.1 使用 Hyper-V 进行虚拟化开发

Hyper-V 是 Windows 内置的虚拟化平台,它允许开发者在单台物理机器上运行多个虚拟机,进行隔离的开发与测试环境。

安装与配置 Hyper-V
  1. 通过以下 PowerShell 命令启用 Hyper-V:

    Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
    

  2. 安装完成后,通过“Hyper-V 管理器”创建和管理虚拟机。

5.2 使用 Docker 进行容器化开发

Docker 作为现代开发和部署的核心工具,在 Windows 11 上的表现更为出色。通过 Docker,开发者可以创建轻量级、可移植的容器,并在开发、测试、生产环境中快速部署应用程序。Windows 11 直接支持 WSL 2(Windows Subsystem for Linux 2),这使得 Docker 容器可以在 Windows 上更高效地运行。

安装与配置 Docker
  1. 安装 Docker Desktop:

    • 前往 Docker 官方网站,下载并安装 Docker Desktop for Windows。
    • 启动 Docker Desktop,并确保使用 WSL 2 作为 Docker 的后端。
  2. 配置 WSL 2:

    • 通过以下命令启用 WSL 2:

      wsl --install
      

    • 设置默认 WSL 版本为 2:

      wsl --set-default-version 2
      

    • 通过 Docker Desktop 将 WSL 2 分发与 Docker 集成,以便在 Windows 上运行 Linux 容器。

示例:构建与运行一个简单的 Docker 容器

以下是一个简单的示例,展示如何在 Windows 上使用 Docker 创建并运行一个基于 Node.js 的容器化应用:

  1. 创建 Dockerfile: 创建一个名为 Dockerfile 的文件,并添加以下内容:

    # 使用官方的 Node.js 作为基础镜像
    FROM node:14# 创建应用目录
    WORKDIR /usr/src/app# 复制项目文件到工作目录
    COPY package*.json ./# 安装项目依赖
    RUN npm install# 复制其余的项目文件
    COPY . .# 暴露应用的端口
    EXPOSE 8080# 启动应用
    CMD [ "node", "app.js" ]
    

  2. 构建与运行容器: 在终端中运行以下命令,构建并启动容器:

    docker build -t my-node-app .
    docker run -p 8080:8080 my-node-app
    

    这将启动一个基于 Node.js 的应用程序容器,并在本地 8080 端口上提供服务。

  3. 检查运行状态: 通过 docker ps 命令查看正在运行的容器,确保应用正确启动。

多容器应用与 Docker Compose

在开发复杂的应用时,往往需要多个服务容器同时运行,例如数据库、缓存、API 服务等。Docker Compose 是管理多容器应用的理想工具。以下是一个使用 Docker Compose 管理多容器应用的示例:

  1. 创建 docker-compose.yml 文件: 创建一个名为 docker-compose.yml 的文件,并添加以下内容:

    version: '3'
    services:app:image: node:14working_dir: /usr/src/appvolumes:- .:/usr/src/appports:- "8080:8080"command: "npm start"db:image: mongoports:- "27017:27017"
    

  2. 运行 Docker Compose: 使用以下命令启动所有服务容器:

    docker-compose up
    

    这将同时启动应用服务和 MongoDB 数据库服务,方便进行本地开发和测试。


6. 性能优化与调试工具

Windows 11 为开发者提供了多种性能分析与调试工具,帮助优化代码和系统资源使用,确保应用程序在各种环境下的高效运行。

6.1 使用 Windows Performance Analyzer 进行性能分析

Windows Performance Analyzer (WPA) 是一款功能强大的性能分析工具,开发者可以使用它来捕获并分析系统的 CPU、内存、磁盘 I/O 等性能数据,以优化应用程序的性能。

捕获性能数据
  1. 打开 Windows Performance Recorder (WPR),并选择要捕获的性能数据类型,例如 CPU 使用率、磁盘 I/O 等。
  2. 点击“开始录制”按钮,运行你的应用程序,收集性能数据。
  3. 停止录制,并将生成的 .etl 文件导入到 Windows Performance Analyzer 中进行分析。
分析 CPU 使用率

在 WPA 中,开发者可以通过 CPU 使用率图表分析应用程序的瓶颈。例如,如果某一段代码导致 CPU 使用率过高,WPA 可以帮助找出具体的线程或函数调用,优化代码执行路径。

6.2 使用 Visual Studio Profiler 进行代码分析

Visual Studio 内置的 Profiler 提供了详尽的代码性能分析功能,可以帮助开发者识别性能瓶颈、内存泄漏等问题。

使用步骤
  1. 在 Visual Studio 中打开项目,点击“调试”菜单,选择“性能分析”。
  2. 选择适合的分析选项,例如“CPU 使用率”或“内存使用情况”。
  3. 启动性能分析,运行应用程序。
  4. 分析结果中,开发者可以找到性能较差的代码段,并进行针对性优化。
内存泄漏检测

Visual Studio Profiler 还可以用于检测 C++ 项目中的内存泄漏。通过内存使用情况图表,开发者可以直观地看到内存分配和释放情况,识别出未释放的内存块。


7. 小结

Windows 11 作为新一代操作系统,为开发者提供了从桌面应用开发、系统编程到容器化和虚拟化支持的完整开发生态。无论是使用 WinUI 3 构建现代化桌面应用,还是通过 Docker 进行容器化开发,开发者都可以在 Windows 11 上轻松实现高效的开发流程。

通过 Windows 11 提供的丰富工具链,C++ 开发者不仅可以编写高性能的系统级应用,还能够轻松集成现代开发技术,如虚拟化、容器化和性能优化等。充分利用这些工具和技术,将大大提升开发效率与应用性能。

文章提供的各类示例和工具介绍,旨在为开发者全面了解 Windows 11 上的 C++ 开发生态提供一个清晰的框架,帮助大家更好地进行应用开发和系统优化。

 

相关文章:

Windows 11 开发详解:工具与高级用法

1. 引言 Windows 11 是微软最新的操作系统&#xff0c;它不仅带来了全新的用户界面和设计理念&#xff0c;还为开发者提供了强大的开发工具和平台支持。在过去的几年中&#xff0c;开发工具和技术栈发生了巨大的变化&#xff0c;Windows 11 通过其集成的开发环境、虚拟化技术、…...

leetcode 292.Nim游戏

思路&#xff1a;数学 这有一点博弈论的味道&#xff0c;但是我们依然可以用数学的角度去思考。 我们的入手点在这里&#xff1a; 我们是先手的前提下&#xff0c;一共有4个石头&#xff0c;但是每个人只能一次拿其中的1-3个。在一共有4个石头的情况下&#xff0c;我们无论拿…...

《最优化方法》

课件是学习的核心内容 这门课&#xff0c;作业自己交&#xff0c;但是老师不做记录&#xff0c;上课不点名&#xff0c; 不记录平时成绩。 第一章 最优化问题的概述 1.1 概述&#xff08;和考试内容无关&#xff0c;了解内容&#xff09; 例题1.1.1运输问题 数学模型&#x…...

fork中的死锁问题

背景 当我们通过fork去创建子进程时&#xff0c;当父/子进程都涉及到锁的操作&#xff0c;可能会产生死锁。 代码样例 #include <iostream> #include <mutex> #include <unistd.h> std::mutex m; int main() {std::cout << "main process begi…...

Java面试题———SpringBoot篇

目录 1、项目中为什么选择SpringBoot 2、SpringBoot的自动装配原理 3、SpringBoot的核心注解是哪个 4、SpringBoot中的starter是干什么的 5、SpringBoot可以有哪些方式加载配置 6、bootstrap.yml和application.yml有何区别 7、SpringBoot读取配置的方式有几种 8、Spring…...

模块化沙箱:构建零信任架构的关键技术

在数字化时代&#xff0c;数据安全成为了企业和机构关注的焦点。模块化沙箱作为一种创新的数据安全解决方案&#xff0c;正逐渐成为保护敏感信息的有力工具。深信达模块化沙箱&#xff0c;凭借其高灵活性和高扩展性&#xff0c;为不同安全需求提供了定制化的解决方案。 模块化沙…...

10.14学习日志

一.矩阵 接上篇 11.伴随矩阵 设 A 是一个 nn 的方阵&#xff0c;其元素为 aij。伴随矩阵 adj(A)或A* 是一个 nn的矩阵&#xff0c;其第 i 行第 j 列的元素是 A 的余子式 Mji 的代数余子式 Cji&#xff0c;即&#xff1a; 其中 Mji是 A 的第j 行第i 列元素的余子式&#xff0…...

“我们为什么缺少科学精神”演讲内容拆解

演讲人张双南&#xff0c;视频链接&#xff1a; https://tv.cctv.com/2017/04/23/VIDEdqzdpmxStYXAmYBdgDP7170423.shtml...

openpyxl 3.0.7 中文教程

openpyxl 3.0.7 中文教程 python Execl 处理库教程 https://openpyxl-chinese-docs.readthedocs.io/zh-cn/latest/tutorial.html#id2 案例&#xff1a; 生成表格&#xff0c;设置单元格样式 from openpyxl import Workbook from openpyxl.styles import Font, Border, Side, …...

idea开发工具使用

idea开发工具使用 1.idea下载 2.idea设置 字体 编码格式 换行 忽略大小写 自动导包 各方法之间加横线 3.快捷键 4.导入工程 5.安装scala插件 6.运行代码 7.导入jar包 8.git托管 9.打jar包...

Android map 获取值

Android Map 获取值的完整指南 在Android开发中&#xff0c;使用Map&#xff08;映射&#xff09;来存储和检索数据是非常常见的需求。Map是一种键值对集合&#xff0c;能够快速而高效地根据特定的键获取值。在这篇文章中&#xff0c;我们将深入探讨如何在Android应用中使用Ma…...

Leetcode.13 罗马数字转整数

关键词&#xff1a;to_string, string.size(), string.length() 1.题目 2.解答思路及解答 解答思路&#xff1a; 首先&#xff0c;罗马数字表达中和常规数学表达类似&#xff0c;基本是按照从后往前&#xff0c;从小到大排列。因此&#xff0c;理论上只需要从后往前相加即可。…...

骨架提取(持续更新)

一 什么是骨架提取 1.1 简介 骨架提取是图像处理或计算机视觉中的一种技术&#xff0c;用于从二值化图像中提取物体的中心线或轮廓&#xff0c;通常称为“骨架”或“细化图像”。这一技术主要用于简化形状表示&#xff0c;同时保留物体的拓扑结构。 这里我们强调了&#xff…...

B3622 枚举子集

1. 注意dfs内&#xff0c;for循环的遍历&#xff0c;想清楚把什么赋值给a[x] 2.本题只需要把0或1赋值给a[x]所以 #include<bits/stdc.h> using namespace std; int n; int a[20]; int vis[20]; void pr() {for (int i 1; i < n; i) {if (a[i] 0)cout << N;els…...

git submodule add用法

背景 介绍 git submodule add 命令用于将一个 Git 仓库作为子模块添加到另一个 Git 仓库中。子模块是一个独立的 Git 仓库&#xff0c;但它被嵌套在另一个 Git 仓库中&#xff0c;并且可以通过主仓库进行管理。当你需要在主项目中引用另一个项目&#xff08;子模块&#xff09…...

计算机毕业设计 基于Python的汽车销售管理系统的设计与实现 Python毕业设计 Python毕业设计选题【附源码+安装调试】

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…...

主流的安全测试工具知识点

1. 静态应用安全测试&#xff08;SAST&#xff09;工具 工具示例: SonarQube: 支持多种编程语言的代码质量和安全分析。Checkmarx: 提供全面的代码扫描和漏洞检测。知识点: 分析源代码或二进制代码以发现潜在的安全漏洞。早期发现和修复代码中的安全问题&#xff0c;减少修复成…...

如何接入实时期货行情数据 - 2024最新教程

期货市场通过标准化合约的交易&#xff0c;为投资者提供了在大宗商品、金融工具等方面进行风险对冲和投机的机会。量化交易以计算机模型为核心&#xff0c;通过历史数据和实时数据进行分析和策略执行&#xff0c;减少人为情绪对交易的干扰。由于期货市场的波动性强且价格变化迅…...

通义灵码:AI 编码的强大助力

一、通义灵码简介 通义灵码是阿里云推出的智能编码辅助工具&#xff0c;以通义大模型为基础&#xff0c;提供多种强大功能助力开发者高效编码。 通义灵码集成了行级 / 函数级实时续写、自然语言生成代码、单元测试生成、代码注释生成、代码解释、研发智能问答、异常报错排查等…...

docker 容器启动详解

1.启动容器 示例 1&#xff1a;启动一个复杂的 Web 应用容器 docker run -d \ -p 8080:80 \ -v /data/webapp:/app \ -e APP_ENVproduction \ -e DB_HOSTdb.example.com \ -it \ --network my_network \ --name webapp_container \ --restart always \ --memory 1g \ --cpu-sh…...

【spring ai】java 实现RAG检索增强,超快速入门

rag 需求产生的背景介绍&#xff1a; 在使用大模型时&#xff0c;一个常见的问题是模型会产生幻觉&#xff08;即生成的内容与事实不符&#xff09;&#xff0c;同时由于缺乏企业内部数据的支持&#xff0c;导致其回答往往不够精准和具体&#xff0c;偏向于泛泛而谈。这些问题…...

【Java SE 题库】递归的魅力之--> 汉诺塔问题

&#x1f525;博客主页&#x1f525;&#xff1a;【 坊钰_CSDN博客 】 欢迎各位点赞&#x1f44d;评论✍收藏⭐ 目录 1. 题目 2. 分析 2.1 图解 2.2 代码解析 3. 完整代码 3.1 运行截图 4. 小结 1. 题目 汉诺塔问题是一个经典的递归问题&#xff0c;源自一个古老的印度传…...

《为什么要在三层交换机 VLAN 上配置 IP 地址?》

如果在三层交换机上划分了 VLAN10 和 VLAN20 但没有给 IP 地址的情况下&#xff0c;只有相同 VLAN 的端口之间才能相互通信。 这是因为在没有为 VLAN 配置 IP 地址&#xff08;即没有创建 SVI&#xff0c;交换虚拟接口&#xff09;时&#xff0c;三层交换机仅作为一个二层设备…...

Git的基本使用入门

参考&#xff1a;Git速查 git的基本概念 git常用命令大部分是基于三大分区来执行的。先来了解一些专有名词吧。 工作区&#xff0c;也叫 Working Directory暂存区&#xff0c;也叫 stage&#xff0c;index版本库&#xff0c;也叫本地仓库&#xff0c;commit History 将代码推…...

Elasticsearch 入门

ES 概述 ES 是一个开源的高扩展的分布式全文搜索引擎。 倒排索引 环境准备 Elasticsearch 官方地址&#xff1a;https://www.elastic.co/cn/ 下载地址&#xff1a; 注意&#xff1a;9300 端口为 Elasticsearch 集群间组件的通信端口&#xff0c;9200 端口为浏览器访问的 h…...

WebSocket 集成 Spring Boot 的实战指南

&#x1f341; 作者&#xff1a;知识浅谈&#xff0c;CSDN签约讲师&博客专家&#xff0c;华为云云享专家&#xff0c;阿里云专家博主&#xff0c;InfoQ签约作者 &#x1f4cc; 擅长领域&#xff1a;全栈工程师、爬虫、ACM算法&#xff0c;大数据&#xff0c;深度学习 &…...

无人机集群路径规划:四种优化算法(BKA、CO、PSO、PIO)求解无人机集群路径规划,提供MATLAB代码

一、单个无人机路径规划模型介绍 无人机三维路径规划是指在三维空间中为无人机规划一条合理的飞行路径&#xff0c;使其能够安全、高效地完成任务。路径规划是无人机自主飞行的关键技术之一&#xff0c;它可以通过算法和模型来确定无人机的航迹&#xff0c;以避开障碍物、优化…...

第二届 龙信杯 电子数据取证竞赛部分Writeup

大佬文章&#xff1a; 龙信杯复现&#xff08;23、24&#xff09; | BthclsBlog 手机部分 资料&#xff1a;2024年第二届龙信杯 WP_2024龙信杯wp-CSDN博客 1.分析手机检材&#xff0c;请问此手机共通过adb连接过几个设备&#xff1f;[标准格式&#xff1a;3] 2 /data/a…...

偷啥的都有!

好久不做地铁了&#xff0c;昨个儿加班儿太晚&#xff0c;就没骑车回家。早上到了地铁站&#xff0c;想起我前一阵儿下雨时候&#xff0c;把自行车放在了地铁站&#xff0c;结果尾灯被人偷了&#xff01; 真是偷啥的都有&#xff01; 2024年10月15日 7:41...

【中文注释】planning_scene_tutorial.cpp

planning_scene_tutorial.cpp #include <rclcpp/rclcpp.hpp>// MoveIt 相关头文件 #include <moveit/robot_model_loader/robot_model_loader.h> #include <moveit/planning_scene/planning_scene.h> #include <moveit/kinematic_constraints/utils.h>…...