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

【PyTorch】PyTorch Geometric(PyG)安装指南:如何高效配置图神经网络环境

目录

  • 引言
  • 一、通过 Anaconda 安装
  • 二、通过 PyPi 安装
  • 三、从 Wheels 安装
  • 四、从 ROCm 安装
  • 五、从源代码安装
    • 5.1 确保 CUDA 环境设置正确
      • 5.1.1 检查 PyTorch 是否支持 CUDA
      • 5.1.2 设置 CUDA 环境变量
      • 5.1.3 验证 `nvcc` 是否可用
    • 5.2 安装 PyTorch Geometric 所需软件包
    • 5.3 强制重新安装和调试
  • 六、常见安装问题及解决方案
    • 6.1 出现 “undefined symbol: make_function_schema” 错误
    • 6.2 安装时出现 “ModuleNotFoundError” 错误
    • 6.3 CUDA 版本不匹配
    • 6.4 如何确认安装成功?
    • 6.5 如何调整 CUDA 版本?
  • 七、安装流程图示
  • 总结

引言

PyTorch Geometric(PyG)是一个强大的图神经网络(GNN)库,基于 PyTorch 进行构建,专门用于处理图数据的深度学习任务。随着图神经网络在图像处理、社交网络分析、推荐系统等领域的广泛应用,PyG 成为许多研究人员和开发者的首选工具之一。通过 PyG,你可以轻松地实现图卷积、图采样、图分类等复杂操作,从而构建出更为高效和准确的图神经网络模型。

然而,安装 PyTorch Geometric 可能会因为系统配置、依赖库版本或硬件环境的不同而变得复杂。为了帮助你顺利安装 PyG,并确保你的环境准备工作无误,本博客将为你提供多种安装方法,并详细介绍如何通过 Anaconda、PyPi、源代码等方式进行安装。同时,我们还将讨论如何解决安装过程中常见的错误,确保你能够快速、顺利地开始你的图神经网络之旅。

支持的 Python 版本

  • Python 3.9 到 3.12 是 PyTorch Geometric 当前支持的版本。
  • 如果你正在使用 Python 3.8 或更低版本,建议升级 Python 版本以确保兼容性。

一、通过 Anaconda 安装

PyG 现在支持通过 Anaconda 在所有主流操作系统、PyTorch 和 CUDA 的组合上进行安装。如果你还没有安装 PyTorch,请参考 PyTorch 官方文档 通过 conda 安装 PyTorch。确保你安装的 PyTorch 版本至少是 1.11.0。安装完成后,可以通过以下命令安装 PyG:

安装步骤

  1. 安装 PyTorch

    首先,确保你已经安装了 PyTorch。你可以使用以下命令通过 Anaconda 安装 PyTorch:

    conda install pytorch -c pytorch
    

    如果你希望在 CUDA 上进行加速,确保选择相应的 CUDA 版本。例如,安装支持 CUDA 11.8 的 PyTorch:

    conda install pytorch cudatoolkit=11.8 -c pytorch
    
  2. 安装 PyTorch Geometric

    安装完 PyTorch 后,可以通过以下命令来安装 PyTorch Geometric:

    conda install pyg -c pyg
    

    注意:目前,Conda 包在 Windows 和 M1/M2/M3 Mac 上不可用。如果你是 Windows 或 Mac 用户,建议使用 pip 安装。

  3. 指定 CUDA 版本

    如果 Conda 安装时未正确识别你系统的 CUDA 版本,你可以通过显式指定 CUDA 版本来进行安装。命令如下:

    conda install pyg=*=*cu* -c pyg
    

这个命令的作用是安装 pyg(例如 PyTorch Geometric)并指定相关的 CUDA 版本。我们可以进一步解析命令中的参数。

  • pyg=*=*cu*:此部分用于指定需要安装的库及其版本。

    • pyg 是指需要安装的包名称,这里假设是 PyTorch Geometric(根据你的环境,包名称可能会有所不同)。
    • =* 表示匹配所有版本。
    • *cu* 用于指定 CUDA 版本(其中 *cu* 表示匹配包含 CUDA 支持的包版本,CUDA 版本会自动跟随选择)。
  • -c pyg:此参数指定了安装包的来源(频道),这里是 pyg 频道。你可以通过替换为其他合法频道来选择包源。

指定 CUDA 版本的实际示例

假设你需要安装 PyTorch Geometric(pyg),并且你希望使用特定版本的 PyTorch(例如 1.13.0)以及特定的 CUDA 版本(例如 CUDA 11.7)。你可以通过以下命令显式指定所需的 CUDA 版本:

conda install pyg=2.2.0=pygcu117 -c pyg -c pytorch

命令解析

  • pyg=2.2.0:指定安装 PyTorch Geometric 版本 2.2.0。
  • pygcu117:指定与 CUDA 11.7 兼容的版本。在 pyg 包中,cu117 表示与 CUDA 11.7 兼容的构建版本。注意,PyTorch 和 PyTorch Geometric 等包通常会有多个与不同 CUDA 版本兼容的版本。
  • -c pyg:指定使用 PyTorch Geometric 频道来获取包。
  • -c pytorch:指定使用 PyTorch 频道来获取 PyTorch 和其他相关依赖。

二、通过 PyPi 安装

如果你使用 pip 而非 conda,你可以直接通过 PyPi 安装 PyTorch Geometric。

安装步骤

  1. 安装 PyTorch

    在使用 PyG 之前,确保已经安装了 PyTorch。可以通过以下命令进行安装:

    pip install torch
    
  2. 安装 PyTorch Geometric

    从 PyG 2.3 版本开始,你可以仅通过 PyTorch 安装和使用 PyG,无需额外的外部库。只需运行以下命令:

    pip install torch_geometric
    

    这种方式会自动安装必要的依赖,并且适合大多数用户。

安装额外的库

PyTorch Geometric 提供了一些额外的库来扩展图神经网络的功能,尤其是在大规模图和复杂模型训练时提供了各种加速和优化操作。以下是一些推荐的库:

库名描述
pyg-lib支持异构图神经网络(Heterogeneous GNNs)和图采样功能。
torch-scatter高效的稀疏矩阵归约操作,广泛用于稀疏数据的图处理。
torch-sparse提供支持稀疏张量的操作,提升计算效率。
torch-cluster实现高效的图聚类操作,适用于图的分区和聚类任务。
torch-spline-conv支持基于样条的卷积(SplineConv)操作,用于图中的边际学习。

这些库能够提升图神经网络训练的效率和灵活性。如果你希望在使用 PyG 时充分发挥其性能,可以考虑安装这些额外的库:

pip install pyg-lib torch-scatter torch-sparse torch-cluster torch-spline-conv

这些库自带 CPU 和 GPU 内核实现,基于 PyTorch 的 C++/CUDA/hip(ROCm) 扩展接口。如果你刚开始使用 PyG,可以从最小安装开始,待实际需要时再安装额外的依赖库。

三、从 Wheels 安装

为了简化依赖库的安装过程,PyTorch Geometric 提供了多种预构建的 wheel 包,这些包支持多种操作系统、PyTorch 和 CUDA 版本的组合。你可以访问 PyG Wheel 下载页面 来选择与你的环境相匹配的版本。

警告:目前 M1/M2/M3 的 Mac 不支持使用 Wheels 安装。请从源代码安装扩展包。

检查 PyTorch 版本和 CUDA 版本

在安装 PyG 的额外依赖之前,需要确保你使用的 PyTorch 版本和 CUDA 版本正确,请确保你的 PyTorch 版本至少是 1.13.0。你可以通过以下命令检查:

python -c "import torch; print(torch.__version__)"
>>> 2.5.0  # 例如,显示 PyTorch 版本python -c "import torch; print(torch.version.cuda)"
>>> 12.4  # 显示 CUDA 版本

如果你已经安装了合适的 PyTorch 版本(例如,PyTorch 2.5.0 和 CUDA 12.4),可以使用如下命令安装相关依赖库:

pip install pyg_lib torch_scatter torch_sparse torch_cluster torch_spline_conv -f https://data.pyg.org/whl/torch-${TORCH}+${CUDA}.html

其中 ${TORCH}${CUDA} 需要根据你的实际版本替换为你当前使用的 PyTorch 和 CUDA 版本。其中 ${TORCH}${CUDA} 应该被具体替换PyTorch和 CUDA 版本分别为:

  • PyTorch2.4: ${TORCH}=2.5.0${CUDA}=cpu|cu118|cu121|cu124
  • PyTorch2.4: ${TORCH}=2.4.0${CUDA}=cpu|cu118|cu121|cu124
  • PyTorch2.3: ${TORCH}=2.3.0${CUDA}=cpu|cu118|cu121
  • PyTorch2.2: ${TORCH}=2.2.0${CUDA}=cpu|cu118|cu121
  • PyTorch2.1: ${TORCH}=2.1.0${CUDA}=cpu|cu118|cu121
  • PyTorch2.0: ${TORCH}=2.0.0${CUDA}=cpu|cu117|cu118
  • PyTorch1.13: ${TORCH}=1.13.0${CUDA}=cpu|cu116|cu117

例如:

  • 对于 PyTorch 2.5 和 CUDA 12.4:

    pip install pyg_lib torch_scatter torch_sparse torch_cluster torch_spline_conv -f https://data.pyg.org/whl/torch-2.5.0+cu124.html
    
  • 对于 PyTorch 2.4 和 CUDA 11.8:

    pip install pyg_lib torch_scatter torch_sparse torch_cluster torch_spline_conv -f https://data.pyg.org/whl/torch-2.4.0+cu118.html
    

以下是一些常见的版本组合:

PyTorch 版本CUDA 版本下载链接
2.5.0cu124https://data.pyg.org/whl/torch-2.5.0+cu124.html
2.4.0cu118https://data.pyg.org/whl/torch-2.4.0+cu118.html
2.3.0cu121https://data.pyg.org/whl/torch-2.3.0+cu121.html
2.2.0cu118https://data.pyg.org/whl/torch-2.2.0+cu118.html
2.0.0cu117https://data.pyg.org/whl/torch-2.0.0+cu117.html
1.13.0cu116https://data.pyg.org/whl/torch-1.13.0+cu116.html

注意:还提供了旧版本的二进制文件PyTorch1.4.0、1.5.0、1.6.0、1.7.0/1.7.1、1.8.0/1.8.1、1.9.0、1.10.0/1.10.1/1.10.2、1.11.0、1.12.0/1.12.1、1.13.0/1.13.1、2.0.0/2.0.1、2.1.0/2.1.1/2.1.2、2.2.0/2.2.1/2.2.2 和 2.3.0/2.3.1(按照相同的程序)。对于较旧的版本,您需要明确指定最新支持的版本号或通过安装,以防止从源手动安装。您可以在此处查找最新支持的版本号。

pip install --no-index

四、从 ROCm 安装

如果你使用的是 ROCm 平台,可以参考 pyg-rocm-build 存储库,这里提供了 PyTorch Geometric 相关的轮子包(Whl 文件)和安装详细说明。你可以根据该文档中的步骤进行安装。

如果你在安装过程中遇到问题,欢迎在 GitHub Issues 提出问题,我们会尽快解决。

五、从源代码安装

如果你发现我们的轮子包无法满足你的需求(例如,某些版本不支持),你可以选择从源代码进行安装。以下是从源代码安装的详细步骤。

5.1 确保 CUDA 环境设置正确

如果你计划在 ROCm 上安装 PyTorch Geometric,首先需要确保你的 CUDA 环境已正确配置,尽管 ROCm 主要用于支持 AMD GPU,但在一些兼容模式下,CUDA 仍然有用。

5.1.1 检查 PyTorch 是否支持 CUDA

首先,你需要确认你的 PyTorch 是否已经安装并启用了 CUDA 支持:

python -c "import torch; print(torch.cuda.is_available())"
>>> True

输出结果应为 True,如果为 False,说明 CUDA 支持未正确安装,需要进行调试。

5.1.2 设置 CUDA 环境变量

在安装前,确保 CUDA 环境正确设置。需要将 CUDA 的路径添加到系统的环境变量中,确保安装过程能正确找到相关的库和工具。

假设 CUDA 安装路径为 /usr/local/cuda,则可以通过以下命令设置环境变量:

export PATH=/usr/local/cuda/bin:$PATH
echo $PATH
# 输出应包含 /usr/local/cuda/bin
>>> /usr/local/cuda/bin:...

接着,设置 CPATH 环境变量:

export CPATH=/usr/local/cuda/include:$CPATH
echo $CPATH
# 输出应包含 /usr/local/cuda/include
>>> /usr/local/cuda/include:...

如果你使用的是 Linux 系统,还需要将 CUDA 的共享库路径添加到 LD_LIBRARY_PATH 中:

export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
echo $LD_LIBRARY_PATH
# 输出应包含 /usr/local/cuda/lib64
>>> /usr/local/cuda/lib64:...

对于 macOS 用户,则应将路径添加到 DYLD_LIBRARY_PATH

export DYLD_LIBRARY_PATH=/usr/local/cuda/lib:$DYLD_LIBRARY_PATH
echo $DYLD_LIBRARY_PATH
# 输出应包含 /usr/local/cuda/lib
>>> /usr/local/cuda/lib:...

5.1.3 验证 nvcc 是否可用

nvcc 是 NVIDIA CUDA 编译器,你可以通过以下命令检查是否能从终端访问 nvcc

nvcc --version
# 输出应该显示当前安装的 CUDA 版本,例如:
# nvcc: NVIDIA (R) Cuda compiler driver
# Cuda compilation tools, release 11.8, V11.8.89
>>> 11.8

确保PyTorch并且系统 CUDA 版本匹配:

python -c "import torch; print(torch.version.cuda)"
>>> 11.8

5.2 安装 PyTorch Geometric 所需软件包

安装 PyTorch Geometric 及其依赖的扩展包。以下命令会安装 PyTorch Geometric 所需的各个子包,包括 torch-scatter, torch-sparse, torch-cluster 等。

pip install --verbose git+https://github.com/pyg-team/pyg-lib.git
pip install --verbose torch_scatter
pip install --verbose torch_sparse
pip install --verbose torch_cluster
pip install --verbose torch_spline_conv

这些命令会下载并编译各个依赖库,确保你能够顺利使用 PyTorch Geometric。

5.3 强制重新安装和调试

在极少数情况下,CUDA 或 Python 路径问题可能会导致安装失败。pip甚至可能表示安装成功,但执行会崩溃。我们在常见问题解答小节中收集了常见的安装错误。如果常见问题解答无法帮助您解决问题,请创建问题。在此之前,请按照官方安装指南验证您的 CUDA 是否已正确设置。
你可以尝试强制重新安装相关软件包,以避免由于缓存问题导致的错误:

pip --force-reinstall --no-cache-dir
pip --verbose

通过设置 --verbose 参数,你可以查看详细的安装日志,以帮助诊断安装过程中的问题。

六、常见安装问题及解决方案

6.1 出现 “undefined symbol: make_function_schema” 错误

如果你遇到如下错误:

undefined symbol: make_function_schema

通常原因如下

  1. 安装的 PyTorch 版本与 ${TORCH} 包指定的版本不匹配。
  2. 安装的 CUDA 版本与 PyTorch 所使用的 CUDA 版本不一致。

解决方案

  1. 检查 PyTorch 版本

确认你安装的 PyTorch 版本及其支持的 CUDA 版本:

python -c "import torch; print(torch.__version__)"

输出示例:

1.13.0

接着,检查 PyTorch 支持的 CUDA 版本:

python -c "import torch; print(torch.version.cuda)"

输出示例:

11.8
  1. 检查 CUDA 版本

使用以下命令检查系统中安装的 CUDA 版本:

nvcc --version

输出示例:

nvcc: NVIDIA (R) Cuda compiler driver
Cuda compilation tools, release 11.8, V11.8.89

确保 PyTorch 版本的 CUDA 与系统安装的 CUDA 版本一致。

  1. 重新安装并清除缓存

若发现版本不匹配,强制重新安装 PyTorch 及相关依赖,并清除缓存:

pip install --force-reinstall --no-cache-dir torch
pip install --force-reinstall --no-cache-dir torch_scatter torch_sparse torch_cluster

若仍然存在问题,可以尝试从源代码重新安装相关扩展包:

pip install --force-reinstall --no-cache-dir
pip install --verbose

6.2 安装时出现 “ModuleNotFoundError” 错误

遇到 ModuleNotFoundError 错误时,通常是由于 PyG 的依赖库没有正确安装。可以尝试重新安装必要的依赖库:

pip install torch-scatter torch-sparse torch-cluster torch-spline-conv

6.3 CUDA 版本不匹配

如果出现以下错误:

  • CUDA version mismatch:表示 PyTorch 或 PyTorch Geometric 版本与 CUDA 版本不兼容。
  • No module named 'torch_scatter' 或类似错误:可能是安装了不兼容的版本。

解决方案

  • 确保安装了与系统 CUDA 版本兼容的 cudatoolkit
  • 使用的 PyTorch 和 PyTorch Geometric 版本与 CUDA 版本必须匹配。

6.4 如何确认安装成功?

安装完 PyG 后,运行以下代码验证安装是否成功:

import torch
import torch_geometric
print(torch.__version__)
print(torch_geometric.__version__)

如果没有报错,且版本号正确,则说明安装成功。

6.5 如何调整 CUDA 版本?

如果你的系统 CUDA 版本与当前版本不匹配,你可以选择不同版本的 CUDA 进行安装。例如,若要使用 CUDA 11.6,可以按如下方式安装:

conda install pytorch=1.13 torchvision torchaudio cudatoolkit=11.6 -c pytorch
conda install pyg=*=*cu116 -c pyg

这样,你可以根据自己的硬件和软件环境选择合适的 CUDA 版本进行安装。

七、安装流程图示

为了帮助更直观地理解整个安装流程,以下是 PyTorch Geometric 安装的简化流程图:

CSDN @ 2136
安装 Python 环境
安装 PyTorch
检查 CUDA 配置
安装 PyTorch Geometric
是否需要额外库?
安装 pyg-lib 等依赖
完成安装
测试安装是否成功
开始使用 PyTorch Geometric
可选: 安装其他扩展库
检查并解决常见问题
问题解决?
成功安装
处理安装错误
查看日志
根据日志修复问题
CSDN @ 2136

该流程图展示了从安装 PyTorch 到解决常见问题的整个过程,帮助用户理解每个步骤的关系。

总结

安装 PyTorch Geometric(PyG)并不复杂,但需要根据不同的环境和需求选择适合的安装方法。通过 Conda 或 PyPi 安装是最为常见且简便的方式,适合大多数用户。而对于需要更多定制或特定版本的用户,直接从源代码安装或通过 Wheels 安装也是不错的选择。无论你采用何种方式,确保 CUDA 环境正确配置以及安装所需的依赖包,都是顺利安装 PyG 的关键。

在安装过程中,用户可能会遇到一些常见的错误,例如 “undefined symbol: make_function_schema” 或 “ModuleNotFoundError” 错误。本文提供了详细的故障排查和解决方案,帮助你快速识别并解决这些问题。最终,随着正确安装和配置,你可以开始使用 PyTorch Geometric,进行高效的图神经网络建模和实验,推动你的项目和研究向前发展。

通过本文的指导,你应该能根据自己的环境需求选择最合适的安装方式,并确保 PyTorch Geometric 在你的机器上成功运行,开始图数据分析的探索旅程。


相关文章:

【PyTorch】PyTorch Geometric(PyG)安装指南:如何高效配置图神经网络环境

目录 引言一、通过 Anaconda 安装二、通过 PyPi 安装三、从 Wheels 安装四、从 ROCm 安装五、从源代码安装5.1 确保 CUDA 环境设置正确5.1.1 检查 PyTorch 是否支持 CUDA5.1.2 设置 CUDA 环境变量5.1.3 验证 nvcc 是否可用 5.2 安装 PyTorch Geometric 所需软件包5.3 强制重新安…...

SolidWorks21装配体中一个零件无法改为线架图

右键零件弹出栏中选择零部件显示改为默认显示,再切换线架图,就会发现整个装配体都能切换为线架图了!...

11.11机器学习_介绍和定义

一、 机器学习介绍与定义 1. 机器学习定义 机器学习(Machine Learning)本质上就是让计算机自己在数据中学习规律,并根据所得到的规律对未来数据进行预测。 机器学习包括如聚类、分类、决策树、贝叶斯、神经网络、深度学习(Deep…...

【代码审计】常见漏洞专项审计-业务逻辑漏洞审计

❤️博客主页: iknow181 🔥系列专栏: 网络安全、 Python、JavaSE、JavaWeb、CCNP 🎉欢迎大家点赞👍收藏⭐评论✍ 0x01 漏洞介绍 1、 原理 业务逻辑漏洞是一类特殊的安全漏洞,业务逻辑漏洞属于设计漏洞而非实…...

SpringBoot单体服务无感更新启动,动态检测端口号并动态更新

SpringBoot单体服务无感更新启动 package com.basaltic.warn;import cn.hutool.core.io.IoUtil; import lombok.SneakyThrows; import org.apache.commons.lang3.StringUtils; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplic…...

CSS基础知识04

文本溢出通常是指在限定的空间内不能容纳所输入的文字,导致文字超出了容器的边界 一、文本溢出 1.1.css属性处理 所用到的属性 属性属性值overflowvisible:默认值,内容不会被修剪,会呈现在元素框之外。hidden:内容会…...

python程序对服务器cpu和内存资源占用的管理。

背景 在服务器上部署了一套目标检测的程序,做成while true 的轮询检测数据更新的定时任务。 结果没想到那台服务器还有一套可视化程序要给领导演示看,结果演示的时候平台各种报错。 然后通过top查看了一下资源利用率发现python的程序cpu 130。&#xf…...

java算法性能调优:详尽探讨时间复杂度与空间复杂度的分析与优化“

接下来我将带领大家进入Java数据结构的深入学习,让我们一同享受Java数据结构中的奥秘。 一、引言 二、时间复杂度 三、空间复杂度 四、Java中的时间复杂度和空间复杂度 五、优化时间复杂度和空间复杂度 七、时间复杂度和空间复杂度的重要性 一:时间…...

人工智能:塑造未来的工作与生活

目录 人工智能技术的应用前景与影响 人工智能的历史与现状 人工智能的应用领域 人工智能的前景与挑战 个人视角:人工智能的应用前景与未来 人工智能在生活中的潜力 面对人工智能带来的挑战 我的观点与建议 结语 人工智能技术的应用前景与影响 随着人工智能…...

RK3568笔记六十九: 事件回调处理之Libevent 简单使用

若该文为原创文章,转载请注明原文出处。 一、前言 在项目开发过程中,事件处理使用相当多,特别是在UI处理的过程中,UI不能在非UI程里直接操作,否则会出现内存等异常,即不能在子线程里操作UI,所以用事件消息的方式通知UI线程刷新UI界面,在这一细节上掉了好多次坑。 Lib…...

MySQL如何解决幻读?

目录 一、什么是幻读? 1.1 幻读的定义 1.2 幻读的示例 1.3 幻读产生的原因? 1.4 读已提交(Read Committed) 1.4.1 确定事务等级 1.4.2 非锁定读取 准备 示例 结论 1.4.3 锁定读取 准备 示例 分析 结论 1.5 可重复读…...

Javascript_设计模式(二)

什么是迭代器模式?一般用在什么场景? 迭代器模式是一种行为型设计模式,它用于提供一种顺序访问聚合对象中各个元素的方法,而又不暴露该对象的内部表示。通过使用迭代器模式,可以遍历一个聚合对象,而无需关心该对象的内部结构和…...

时间同步服务器

1、时间同步服务:在多台主机协作时,确保时间同步,防止时间不一致造成的故障。 2、时间按同步实现: ntp 、chrony 3、命令:timedatectl timedatectl set-time "2024-02-13 10:41:55" timedatect…...

react+hook+vite项目使用eletron打包成桌面应用+可以热更新

使用Hooks-Admin的架构 Hooks-Admin: 🚀🚀🚀 Hooks Admin,基于 React18、React-Router V6、React-Hooks、Redux、TypeScript、Vite2、Ant-Design 开源的一套后台管理框架。https://gitee.com/HalseySpicy/Hooks-Adminexe桌面应用…...

STM32 ADC --- DMA乒乓缓存

STM32 ADC — DMA乒乓缓存 文章目录 STM32 ADC --- DMA乒乓缓存软件切换实现乒乓利用DMA双缓冲实现乒乓 通过cubeMX配置生成HAL工程这里使用的是上篇文章(STM32 ADC — DMA采样)中生成的工程配置 软件切换实现乒乓 cubeMX默认生成的工程中是打开DMA中断…...

SpringCloud基础 入门级 学习SpringCloud 超详细(简单通俗易懂)

Spring Cloud 基础入门级学习 超详细(简单通俗易懂) 一、SpringCloud核心组件第一代:SpringCloud Netflix组件第二代:SpringCloud Alibaba组件SpringCloud原生组件 二、SpringCloud体系架构图三、理解分布式与集群分布式集群 四、…...

【Windows 常用工具系列 20 -- MobaXterm 登录 WSL】

文章目录 MobaXterm 登录 WSL MobaXterm 登录 WSL 在 WSL 启动之后,打开 MobaXterm: 在 Distribution 中选择自己本地安装的 ubuntu 版本,我这里使用的是ubuntu-20.4,然后在 runmethod 中选择 Localhost connection. 连接成功之…...

【vmware+ubuntu16.04】ROS学习_博物馆仿真克隆ROS-Academy-for-Beginners软件包处理依赖报错问题

首先安装git 进入终端,输入sudo apt-get install git 安装后,创建一个工作空间名为tutorial_ws, 输入 mkdir tutorial_ws#创建工作空间 cd tutorial_ws#进入 mkdir src cd src git clone https://github.com/DroidAITech/ROS-Academy-for-Be…...

UniApp的Vue3版本中H5配置代理的最佳方法

UniApp的Vue3版本中H5项目在本地开发时需要配置跨域请求调试 最开始在 manifest.json中配置 总是报404,无法通过代理请求远程的接口并返回404错误。 经过验证在项目根目录创建 vite.config.js文件 vite.config.js内容: // vite.config.js import {defineConfig }…...

深入了解Pod

Pod是Kubernetes中最小的单元,它由一组、一个或多个容器组成,每个Pod还包含了一个Pause容器,Pause容器是Pod的父容器,主要负责僵尸进程的回收管理,通过Pause容器可以使同一个Pod里面的多个容器共享存储、网络、PID、IPC等。 1、Pod 是由一组紧耦合的容器组成的容器组,当然…...

基于Spider异步爬虫框架+JS动态参数逆向+隧道代理+自定义中间件的猎聘招聘数据爬取

在本篇博客中,我们将介绍如何使用 Scrapy 框架结合 JS 逆向技术、代理服务器和自定义中间件,来爬取猎聘网站的招聘数据。猎聘是一个国内知名的招聘平台,提供了大量的企业招聘信息和职位信息。本项目的目标是抓取指定城市的招聘信息&#xff0…...

Spring 中的 BeanDefinitionParserDelegate 和 NamespaceHandler

一、BeanDefinitionParserDelegate Spring在解析xml文件的时候&#xff0c;在遇到<bean>标签的时候&#xff0c;我们会使用BeanDefinitionParserDelegate对象类解析<bean>标签的内容&#xff0c;包括<bean>标签的多个属性&#xff0c;例如 id name class in…...

BERT模型核心组件详解及其实现

摘要 BERT&#xff08;Bidirectional Encoder Representations from Transformers&#xff09;是一种基于Transformer架构的预训练模型&#xff0c;在自然语言处理领域取得了显著的成果。本文详细介绍了BERT模型中的几个关键组件及其实现&#xff0c;包括激活函数、变量初始化…...

图论-代码随想录刷题记录[JAVA]

文章目录 前言深度优先搜索理论基础所有可达路径岛屿数量岛屿最大面积孤岛的总面积沉默孤岛Floyd 算法dijkstra&#xff08;朴素版&#xff09;最小生成树之primkruskal算法 前言 新手小白记录第一次刷代码随想录 1.自用 抽取精简的解题思路 方便复盘 2.代码尽量多加注释 3.记录…...

c#加载shellcode

本地加载bin文件 SharpPELoader项目如下&#xff1a; using System; using System.IO; using System.Runtime.InteropServices;namespace TestShellCode {internal class Program{private const uint MEM_COMMIT 0x1000;private const uint PAGE_EXECUTE_READWRITE 0x40;pr…...

HarmonyOS 开发环境搭建

HarmonyOS&#xff08;鸿蒙操作系统&#xff09;作为一种面向全场景多设备的智能操作系统&#xff0c;正逐渐在市场上崭露头角。为了进入HarmonyOS生态&#xff0c;开发者需要搭建一个高效的开发环境。本文将详细介绍如何搭建HarmonyOS开发环境&#xff0c;特别是如何安装和配置…...

【网络云计算】2024第46周周考-磁盘管理的基础知识-RAID篇

文章目录 1、画出各个RAID的结构图&#xff0c;6句话说明优点和缺点&#xff0c;以及磁盘可用率和坏盘数量&#xff0c;磁盘总的数量2、写出TCP五层模型以及对应的常用协议 【网络云计算】2024第46周周考-磁盘管理的基础知识-RAID篇 1、画出各个RAID的结构图&#xff0c;6句话说…...

深入理解 SQL_MODE 之 ANSI_QUOTES

引言 在 MySQL 数据库中&#xff0c;sql_mode 是一个重要的配置参数&#xff0c;它定义了 MySQL 应该遵循的 SQL 语法标准以及数据验证规则。其中&#xff0c;ANSI_QUOTES 是 sql_mode 中的一个重要选项&#xff0c;它改变了 MySQL 对于字符串和标识符的识别方式&#xff0c;使…...

容器技术在持续集成与持续交付中的应用

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 容器技术在持续集成与持续交付中的应用 容器技术在持续集成与持续交付中的应用 容器技术在持续集成与持续交付中的应用 引言 容器…...

【嵌入式软件-STM32】OLED显示屏+调试方法

目录 一、调试方式 1&#xff09;串口调试 优势 弊端 2&#xff09;显示屏调试 优势 弊端 3&#xff09;Keil调试模式 4&#xff09;点灯调试法 5&#xff09;注释调试法 6&#xff09;对照法 二、OLED简介 OLED组件 OLED显示屏 0.96寸OLED模块 OLED外观和种类…...