Nebula Graph-01-Nebula Graph简介和安装以及客户端连接

前言

NoSQL 数据库

图数据库并不是可以克服关系型数据库缺点的唯一替代方案。现在市面上还有很多非关系型数据库的产品,这些产品都可以叫做 NoSQL。NoSQL 一词最早于上世纪 90 年代末提出,可以解释为“非 SQL” 或“不仅是 SQL”,具体解释要根据语境判断。为便于理解,这里 NoSQL 可以解释成 “非关系型数据库”。不同于关系型数据库,NoSQL 数据库提供的数据存储、检索机制并不是基于表关系建模的。 NoSQL 数据库可以分为四类:

  • 键值存储(key-value stores)
  • 列式存储(column-family stores)
  • 文件存储(document stores)
  • 图数据库(graph databases)

下面将分别介绍这四类数据库。

  • 键值存储
    键值存储,顾名思义,就是使用键值对存储数据的数据库。不同于关系型数据库,键值存储是没有表和列的。如果一定要做类比,键值数据库本身就像一张有很多列(也就是键)的大表。在键值存储数据库中,数据(即键值对中的值)都是通过键来存储和查询的,通常用哈希列表来实现。这比传统的 SQL 数据库要简单得多,而且对于某些 web 应用来说,这就足够了。

    键值模型对于 IT 系统来说优势在于简单、易部署。多数情况下,这种存储方式对非关联的数据很适用。如是只是存储数据而无需查询的话,使用这种存储方法就没有问题。但是如果 DBA 只对部分值进行查询或更新的时候,键值模型就显得效率低下了。常见的键值存储数据库有:Redis、Voldemort、Oracle BDB。

  • 列式存储
    NoSQL 数据库的列式存储与 NoSQL 数据库的键值存储有许多相似之处,因为列式存储仍然在使用键进行存储和检索。区别在于列式存储数据库中,列是最小的存储单元,每一列均由键、值以及用于版本控制和冲突解决的时间戳组成。这在分布式扩展时特别有用,因为在数据库更新时,可以使用时间戳定位过期数据。由于列式存储良好的扩展性,因此适用于非常大的数据集。常见的列式存储数据库有:HBase、Cassandra、HadoopDB 等。

  • 文档存储
    准确来说,NoSQL 数据库文档存储实际上也是基于键值的数据库,只不过对功能做了增强。数据仍然以键值的形式存储,但是文档存储中的值是结构化的文档,而不仅仅是一个字符串或单个值。也就是说,由于信息结构的增加,文档存储能够执行更优化的查询,并且使数据检索更加容易。因此,文档存储特别适合存储、索引并管理面向文档的数据或者类似的半结构化数据。

    从技术上讲,作为一个半结构化的信息单元,文档存储中的文档可以是任何形式可用的文档,包括 XML、JOSN、YAML 等,这取决于数据库供应商的设计。 比如,JSON 就是一种常见的选择。虽然 JSON 不是结构化数据的最佳选择,但是 JSON 型的数据在前端和后端应用中都可以使用。常见的文档存储数据库有:MongoDB、CouchDB、Terrastore 等。

  • 图存储
    最后一类 NoSQL 数据库是图数据库。本书重点讨论的 NebulaGraph 也是一种图数据库。虽然同为 NoSQL 型数据库,但是图数据库与上述 NoSQL 数据库有本质上的差异。图数据库以点、边、属性的形式存储数据。其优点在于灵活性高,支持复杂的图形算法,可用于构建复杂的关系图谱。我们将在随后的章节中详细讨论图数据库。不过在本章中,你只要知道图数据库是一种 NoSQL 类型的数据库就可以了。常见的图数据库有:NebulaGraph、Neo4j、OrientDB 等。

为什么要有图数据库

虽然关系型数据库(MySQL)与 XML/JSON 等半结构类型的数据库,都可以用来描述图结构的数据模型。

但是,图(数据库)不仅可以描述图结构与存储数据本身,更着眼于处理数据之间的关联(拓扑)关系。具体来说,图(数据库)有这么几个优点:

  • 图是一种更直观、更符合人脑思考直觉的知识表示方式。这使得我们在抽象业务问题时,可以着眼于“业务问题本身”,而不是“如何将问题描述为数据库的某种特定结构(例如表格结构)”。
  • 图更容易展现数据的特征,例如转账的路径、近邻的社区。
  • 图查询语言是针对图结构访问设计的,可以更加直观。
  • 由于存储引擎和查询引擎可以针对图的结构专门设计,图的遍历(对应 SQL 中的 join)要高效得多。
  • 图数据库具有广泛的适用场景。例如数据集成(知识图谱)、个性化推荐、欺诈与威胁检测、风险分析与合规、身份(与控制权)验证、IT 基础设施管理、供应链与物流、社交网络研究等。
  • 根据文献的统计,使用图技术最多的领域,依次是:信息技术(IT)、学术界研究、金融、工业界实验室、政府、医疗健康、国防、制药业、零售与电子商务、交通运输、电信、保险。

  图数据库是基于图论实现的一种NoSQL数据库,其数据存储结构和数据查询方式都是以图论为基础的,
图数据库主要用于存储更多的连接数据.

  图论〔Graph Theory〕是数学的一个分支。它以图为研究对象图论中的图是由若干给定的点及连接两点的线所构成的图形,这种图形通常用来描述某些事物之间的某种特定关系,用点代表事物,用连接两点的线表示相应两个事物间具有这种关系。

分析市面上主流图数据库

https://blog.csdn.net/Castlehe/article/details/121602870

Nebula Graph 介绍

1:Nebula Graph 简介

官网:https://docs.nebula-graph.com.cn/3.6.0/
NebulaGraph 是一款开源的、分布式的、易扩展的原生图数据库,能够承载包含数千亿个点和数万亿条边的超大规模数据集,并且提供毫秒级查询。
NebulaGraph 的优势

  • 开源
  • 高性能
  • 易扩展
  • 易开发
  • 高可靠访问控制
  • 生态多样化
  • 兼容 openCypher 查询语言
  • 面向未来硬件,读写平衡
  • 灵活数据建模
  • 广受欢迎(我觉得就是因为开源-免费的)

适用场景

  • 欺诈检测
  • 实时推荐
  • 知识图谱
  • 社交网络
    在这里插入图片描述

2:Nebula Graph 数据类型

NebulaGraph 数据模型使用 6 种基本的数据模型:

图空间(Space)

图空间用于隔离不同团队或者项目的数据。不同图空间的数据是相互隔离的,可以指定不同的存储副本数、权限、分片等。

点(Vertex)

点用来保存实体对象,特点如下:

  • 点是用点标识符(VID)标识的。VID在同一图空间中唯一。VID 是一个 int64,或者 fixed_string(N)。
  • 点可以有 0 到多个 Tag。(ebulaGraph 2.x 及以下版本中的点必须包含至少一个 Tag。)

边(Edge)

边是用来连接点的,表示两个点之间的关系或行为,特点如下:

  • 两点之间可以有多条边。
  • 边是有方向的,不存在无向边。
  • 四元组 <起点 VID、Edge type、边排序值 (rank)、终点 VID> 用于唯一标识一条边。边没有 EID。
  • 一条边有且仅有一个 Edge type。
  • 一条边有且仅有一个 Rank,类型为 int64,默认值为 0。Rank 可以用来区分 Edge type、起始点、目的点都相同的边。该值完全由用户自己指定。

标签(Tag)

Tag 由一组事先预定义的属性构成。

边类型(Edge type)

Edge type 由一组事先预定义的属性构成。

属性(Property)

属性是指以键值对(Key-value pair)形式表示的信息。

3:路径

图论中一个非常重要的概念是路径,路径是指一个有限或无限的边序列,这些边连接着一系列的点。
既连接图论中点和边的任意连接方式
路径的类型分为三种:walk、trail、path

walk

walk类型的路径由有限或无限的边序列构成。遍历时点和边可以重复。

trail

trail类型的路径由有限的边序列构成。遍历时只有点可以重复,边不可以重复。

在 trail 类型中,还有cycle和circuit两种特殊的路径类型,以下图为例对这两种特殊的路径类型进行介绍。
在这里插入图片描述

  • cycle
    cycle 是封闭的 trail 类型的路径,遍历时边不可以重复,起点和终点重复,并且没有其他点重复。在此示例图中,最长路径由三条边组成:A->B->C->A或C->D->E->C
  • circuit
    circuit 也是封闭的 trail 类型的路径,遍历时边不可以重复,除起点和终点重复外,可能存在其他点重复。在此示例图中,最长路径为:A->B->C->D->E->C->A。

path

path类型的路径由有限的边序列构成。遍历时点和边都不可以重复。

walk、trail、path 总结对比

在这里插入图片描述

NebulaGraph 服务架构

NebulaGraph 架构总览

NebulaGraph 由三种服务构成:Graph 服务、Meta 服务和 Storage 服务,是一种存储与计算分离的架构。

每个服务都有可执行的二进制文件和对应进程,用户可以使用这些二进制文件在一个或多个计算机上部署 NebulaGraph 集群。

下图展示了 NebulaGraph 集群的经典架构。
在这里插入图片描述
如果这个看着比较乱,可以看这个:
在这里插入图片描述
简单来说:

  • Meta 服务是由 nebula-metad 进程提供的,负责元数据管理,例如 Schema 操作、集群管理和用户权限管理等。默认启动端口为:9559
  • Graph 服务是由 nebula-graphd 进程提供,Graph 服务负责处理计算请求,既用户的query引擎,默认启动端口为:9669
  • Storage 服务是由 nebula-storaged 进程提供,Storage 服务负责存储数据,默认启动端口为:9779

Meta 服务架构:默认启动端口为:9559

官网介绍:https://docs.nebula-graph.com.cn/3.6.0/1.introduction/3.nebula-graph-architecture/2.meta-service/

Meta 服务是由 nebula-metad 进程提供的,用户可以根据场景配置 nebula-metad 进程数量,
所有 nebula-metad 进程构成了基于 Raft 协议的集群,其中一个进程是 leader,其他进程都是 follower,leader 是由多数派选举出来,只有 leader 能够对客户端或其他组件提供服务,其他 follower 作为候补,如果 leader 出现故障,会在所有 follower 中选举出新的 leader。

Meta 服务功能:

  • 管理用户账号
  • 管理分片
  • 管理图空间
  • 管理 Schema 信息
  • 管理 TTL 信息(服务存储 TTL(Time To Live))
  • 管理作业

Graph 服务:默认启动端口为:9669

官网介绍:https://docs.nebula-graph.com.cn/3.6.0/1.introduction/3.nebula-graph-architecture/3.graph-service/

Graph 服务主要负责处理查询请求,包括解析查询语句、校验语句、生成执行计划以及按照执行计划执行四个大步骤,
在这里插入图片描述
查询请求发送到 Graph 服务后,会由如下模块依次处理:

  • Parser:词法语法解析模块。
  • Validator:语义校验模块。
  • Planner:执行计划与优化器模块。
  • Executor:执行引擎模块。

注:不论是nebula 的客户端连接服务还是java等代码连接服务,都要连接9669端口

Storage 服务:默认启动端口为:9779

官网介绍:https://docs.nebula-graph.com.cn/3.6.0/1.introduction/3.nebula-graph-architecture/4.storage-service/

NebulaGraph 的存储包含两个部分,一个是 Meta 相关的存储,称为 Meta 服务,在前文已有介绍。
另一个是具体数据相关的存储,称为 Storage 服务。其运行在 nebula-storaged 进程中。
优势

  • 高性能(自研 KVStore)
  • 易水平扩展(Shared-nothing 架构,不依赖 NAS 等硬件设备)
  • 强一致性(Raft)
  • 高可用性(Raft)
  • 支持向第三方系统进行同步(例如全文索引)

Nebula Graph 本地化安装部署

官方说明:https://docs.nebula-graph.com.cn/3.6.0/2.quick-start/3.quick-start-on-premise/2.install-nebula-graph/

部署Nebula Graph 的方法有太多种,目前只在此演示本地部署安装。其他Docker Desktop或者Docker Compose的方式,请大家参考官网基于 Docker 快速部署

1:安装 NebulaGraph

RPM 和 DEB 是 Linux 系统下常见的两种安装包格式;

1:利用weget下载安装包

当前仅支持在 Linux 系统下安装 NebulaGraph,且仅支持 CentOS 7.x、CentOS 8.x、Ubuntu 16.04、Ubuntu 18.04、Ubuntu 20.04 操作系统。
URL 格式如下:

//Centos 7
https://oss-cdn.nebula-graph.com.cn/package/<release_version>/nebula-graph-<release_version>.el7.x86_64.rpm//Centos 8
https://oss-cdn.nebula-graph.com.cn/package/<release_version>/nebula-graph-<release_version>.el8.x86_64.rpm//Ubuntu 1604
https://oss-cdn.nebula-graph.com.cn/package/<release_version>/nebula-graph-<release_version>.ubuntu1604.amd64.deb//Ubuntu 1804
https://oss-cdn.nebula-graph.com.cn/package/<release_version>/nebula-graph-<release_version>.ubuntu1804.amd64.deb//Ubuntu 2004
https://oss-cdn.nebula-graph.com.cn/package/<release_version>/nebula-graph-<release_version>.ubuntu2004.amd64.deb

例如要下载适用于Centos 7.5的3.6.0安装包:

wget https://oss-cdn.nebula-graph.com.cn/package/3.6.0/nebula-graph-3.6.0.el7.x86_64.rpm

wget https://oss-cdn.nebula-graph.com.cn/package/3.6.0/nebula-graph-3.6.0.el7.x86_64.rpm.sha256sum.txt

下载适用于ubuntu 1804的3.6.0安装包:

wget https://oss-cdn.nebula-graph.com.cn/package/3.6.0/nebula-graph-3.6.0.ubuntu1804.amd64.deb

wget https://oss-cdn.nebula-graph.com.cn/package/3.6.0/nebula-graph-3.6.0.ubuntu1804.amd64.deb.sha256sum.txt

我这里下载Centos 7.5的3.6.0安装包
在这里插入图片描述

2:安装 NebulaGraph

安装 RPM 包

$ sudo rpm -ivh --prefix=<installation_path> <package_name>
–prefix为可选项,用于指定安装路径。如不设置,系统会将 NebulaGraph 安装到默认路径/usr/local/nebula/。

例如,要在默认路径下安装3.6.0版本的 RPM 包,运行如下命令:
sudo rpm -ivh nebula-graph-3.6.0.el7.x86_64.rpm

安装 DEB 包

$ sudo dpkg -i <package_name>
使用 DEB 包安装 NebulaGraph 时不支持自定义安装路径。默认安装路径为/usr/local/nebula/。
例如安装3.6.0版本的 DEB 包:
sudo dpkg -i nebula-graph-3.6.0.ubuntu1804.amd64.deb

2:启动 NebulaGraph 服务

使用脚本nebula.service管理服务,包括启动、停止、重启、中止和查看。

$ sudo /usr/local/nebula/scripts/nebula.service
[-v] [-c <config_file_path>]
<start | stop | restart | kill | status>
<metad | graphd | storaged | all>
在这里插入图片描述
例如:

* 启动服务:

sudo /usr/local/nebula/scripts/nebula.service start all

* 停止服务:

sudo /usr/local/nebula/scripts/nebula.service stop all

* 查看服务:

sudo /usr/local/nebula/scripts/nebula.service status all

如果返回类似如下结果,表示 NebulaGraph 服务异常,可以根据异常服务信息进一步排查

[INFO] nebula-metad: Running as 25600, Listening on 9559
[INFO] nebula-graphd: Exited
[INFO] nebula-storaged: Running as 25646, Listening on 9779

我这里进行查看,发现:
在这里插入图片描述
这是因为:
从 3.0.0 版本开始,在配置文件中添加的 Storage 主机无法直接读写,配置文件的作用仅仅是将 Storage 主机注册至 Meta 服务中。必须使用ADD HOSTS命令后,才能正常读写 Storage 主机。而我这里是最新的3.6.0,这个问题放在第4步【4:注册 Storage 服务】解决

3:连接 NebulaGraph 服务-原生命令行客户端 NebulaGraph Console 连接

本文介绍如何使用原生命令行客户端 NebulaGraph Console 连接 NebulaGraph 。
因为:首次连接到 NebulaGraph 后,必须先注册 Storage 服务,才能正常查询数据。

NebulaGraph 支持多种类型的客户端,包括命令行客户端、可视化界面客户端和流行编程语言客户端。

  • NebulaGraph Console:原生 CLI 客户端
  • NebulaGraph CPP:C++ 客户端
  • NebulaGraph Java:Java 客户端
  • NebulaGraph Python:Python 客户端
  • NebulaGraph Go:Go 客户端
    前提条件
  • NebulaGraph 服务已启动。
  • 运行 Nebula Console 的机器和运行 NebulaGraph 的服务器网络互通。
  • Nebula Console 的版本兼容 NebulaGraph 的版本。

1:在 Nebula Console 下载页面,确认需要的版本,单击 Assets。【建议选择最新版本】
在这里插入图片描述
2:(可选)为方便使用,重命名文件为nebula-console。【在 Windows 系统中,请重命名为nebula-console.exe。】

3:在运行 Nebula Console 的机器上执行如下命令,为用户授予 nebula-console 文件的执行权限。【Windows 系统请跳过此步骤。】

chmod 111 nebula-console

4:在命令行界面中,切换工作目录至 nebula-console 文件所在目录。
5:执行如下命令连接 NebulaGraph。

#Linux 或 macOS
./nebula-console -addr -port -u -p
[-t 120] [-e “nGQL_statement” | -f filename.nGQL]

#Windows
nebula-console.exe -addr -port -u -p
[-t 120] [-e “nGQL_statement” | -f filename.nGQL]

示例:

nebula-console.exe -addr 192.168.13.10 -port 9669 -u root -p 12345

连接成功的标识:

在这里插入图片描述

4:注册 Storage 服务

首次连接到 NebulaGraph 后,需要先添加 Storage 主机,并确认主机都处于在线状态。

前提条件
已连接 NebulaGraph 服务。

1:添加 Storage 主机。

执行如下命令添加主机:ADD HOSTS : [,: …];

示例:
ADD HOSTS 127.0.0.1:9779;
在这里插入图片描述

2:检查主机状态,确认全部在线。

SHOW HOSTS;
在这里插入图片描述

3:检查Nebula Graph 都已经启动了

在这里插入图片描述

NebulaGraph Studio-可视化web工具安装

1:什么是 NebulaGraph Studio

NebulaGraph Studio(简称 Studio)是一款可以通过 Web 访问的开源图数据库可视化工具,搭配 NebulaGraph 内核使用,提供构图、数据导入、编写 nGQL 查询等一站式服务。

产品功能¶
Studio 可以方便管理 NebulaGraph 数据,具备以下功能:

  • 使用 Schema 管理功能,用户可以使用图形界面完成图空间、Tag(标签)、Edge Type(边类型)、索引的创建,查看图空间的统计数据,快速上手 NebulaGraph 。
  • 使用导入功能,通过简单的配置,用户即能批量导入点和边数据,并能实时查看数据导入日志。
  • 使用控制台功能,用户可以使用 nGQL 语句创建 Schema,并对数据执行增删改查操作。

适用场景¶
如果有以下任一需求,都可以使用 Studio:

  • 已经安装部署了 NebulaGraph,想使用 GUI 工具创建 Schema、导入数据、执行 nGQL 语句查询。
  • 刚开始学习 nGQL(NebulaGraph Query Language),但是不习惯用命令行工具,更希望使用 GUI 工具查看语句输出的结果。

版本兼容性
Studio 版本发布节奏独立于 NebulaGraph 内核,其命名方式也不参照内核命名规则,两者兼容对应关系如下表。
在这里插入图片描述

2:部署 Studio

官网说明:https://docs.nebula-graph.com.cn/3.6.0/nebula-studio/deploy-connect/st-ug-deploy/
1:前提条件¶
在部署 RPM 版 Studio 之前,用户需要确认以下信息:

  • NebulaGraph 服务已经部署并启动。详细信息,参考 NebulaGraph 安装部署。
  • 使用的 Linux 发行版为 CentOS ,已安装 lsof。
  • 确保以下端口未被占用。

端口号 说明
7001 Studio 提供 web 服务使用。

Studio 下载链接:https://oss-cdn.nebula-graph.com.cn/nebula-graph-studio/3.8.0/nebula-graph-studio-3.8.0.x86_64.rpm?_gl=1ihkswg_gaODA1MTU2MTYzLjE3MTA4NDc5OTY._ga_BGGB2REDGM*MTcxMDg1NTcyNy4yLjEuMTcxMDg2MTQ1MC40NC4wLjA.

2:使用sudo rpm -i <rpm_name>命令安装 RPM 包。
例如,安装 Studio 3.8.0 版本需要运行以下命令,默认安装路径为/usr/local/nebula-graph-studio

$ sudo rpm -i nebula-graph-studio-3.8.0.x86_64.rpm

也可以使用以下命令安装到指定路径:

$ sudo rpm -i nebula-graph-studio-3.8.0.x86_64.rpm --prefix=

当屏幕返回以下信息时,表示 PRM 版 Studio 已经成功启动。
在这里插入图片描述

3:启动成功后,在浏览器地址栏输入 http://:7001。

如果在浏览器窗口中能看到以下登录界面,表示已经成功部署并启动 Studio。
在这里插入图片描述

卸载¶
用户可以使用以下的命令卸载 Studio。

$ sudo rpm -e nebula-graph-studio-3.8.0.x86_64

当屏幕返回以下信息时,表示 PRM 版 Studio 已经卸载。

NebulaGraph Studio removed, bye~

注:如果启动服务时遇到报错 ERROR: bind EADDRINUSE 0.0.0.0:7001,用户可以通过以下命令查看端口 7001 是否被占用。

$ lsof -i:7001
如果端口被占用,且无法结束该端口上进程,用户可以修改 studio 配置内的启动端口,并重新启动服务。

//修改 studio 服务配置。配置文件默认路径为/usr/local/nebula-graph-studio
$ vi etc/studio-api.yaml
//修改端口号,改成任意一个当前可用的即可。
Port: 7001
//重启服务
$ systemctl restart nebula-graph-studio.service

4:Studio 连接数据库

在成功启动 Studio 后,用户需要配置连接 NebulaGraph 。

前提条件¶
在连接 NebulaGraph 数据库前,用户需要确认以下信息:

  • Studio 已经启动。详细信息参考部署 Studio。
  • NebulaGraph 的 Graph 服务本机 IP 地址以及服务所用端口。默认端口为 9669。
  • NebulaGraph 登录账号信息,包括用户名和密码。

1:在 Studio 的 配置数据库 页面上,输入以下信息:

  • Graphd IP 地址:填写 NebulaGraph 的 Graph 服务本机 IP 地址。例如192.168.10.100
    即使 NebulaGraph 与 Studio 部署在同一台机器上,用户也必须填写这台机器的本机 IP 地址,而不是 127.0.0.1 或者 localhost。
  • Port:Graphd 服务的端口。默认为9669
  • 用户名 和 密码:根据 NebulaGraph 的身份验证设置填写登录账号和密码。
    如果未启用身份验证,可以填写默认用户名 root 和任意密码。
    如果已启用身份验证,但是未创建账号信息,用户只能以 GOD 角色登录,必须填写 root 及对应的密码 nebula。
    如果已启用身份验证,同时又创建了不同的用户并分配了角色,不同角色的用户使用自己的账号和密码登录。

3:点击连接
在这里插入图片描述
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

查找众数及中位数 - 华为OD统一考试(C卷)

OD统一考试&#xff08;C卷&#xff09; 分值&#xff1a; 100分 题解&#xff1a; Java / Python / C 题目描述 众数是指一组数据中出现次数量多的那个数&#xff0c;众数可以是多个。 中位数只是指把一组数据从小到大排列&#xff0c;最中间的那个数&#xff0c;如果这组数…

整蛊小教程|让朋友手足无措的电脑自动关机

前言 这几天讲到shutdown关机命令&#xff0c;于是就出现了整蛊类的电脑教程。 这个故事我记得很清楚&#xff1a;在2012年的春天……当时的小白对电脑还不是很熟悉。某一天跟着朋友去网吧上网&#xff0c;这时候突然有个朋友发来一个.bat的文件&#xff0c;说双击打开有惊喜…

集合深入------理解底层。

集合的使用 前提&#xff1a;栈、堆、二叉树、hashcode、toString()、quesalus()的知识深入和底层理解。 1、什么是集合 集合就是咋们所说的容器 ​ 前面我们学习过数组 数组也是容器 ​ 容器&#xff1a;装东西的 生活中有多少的容器呀? 水杯 教室 酒瓶 水库 只要是…

Modbus TCP转Profinet网关如何实现Modbus主站与多设备通讯

在工业控制领域中&#xff0c;Modbus TCP转Profinet网关&#xff08;XD-ETHPN20&#xff09;扮演着连接不同设备间通讯的重要角色。当将Modbus主站与十几台服务器进行通讯时&#xff0c;通过modbus tcp转profinet网关&#xff08;XD-ETHPN20&#xff09;设备将不同协议间的数据…

关于OceanBase中旁路导入的应用分享

背景 前段时间&#xff0c;在用户现场协助进行OceanBase的性能测试时&#xff0c;我注意到用户常常需要运用 insert into select 将上亿行的数据插入到一张大宽表里&#xff0c;这样的批量数据插入操作每次都需要耗时半个小时左右。对这一情况&#xff0c;我提议用户尝试采用旁…

Class Re-Activation Maps for Weakly-Supervised Semantic Segmentation

摘要&#xff1a; 提取类激活映射(CAM)可以说是为弱监督语义分割(WSSS)生成伪掩码的最标准步骤。然而&#xff0c;我们发现伪掩码不理想的关键是在CAM中广泛使用的二进制交叉熵损失(BCE)。具体来说&#xff0c;由于BCE的池化方式是对类别求和&#xff0c;CAM中的每个像素可能对…

Linux课程____进程管理

记录工作日志 script 240319.log CTRLd 退出 cat 240319.log //查看 一、查看进程 1.静态 ps -aux ps -elf 2.动态 top 3.pgrep 查看特定条件的进程 pgrep -l “log” pgrep -l "ssh" pgrep -l -U redhat 4.pstree 查看进程树 pstree -aup 所有…

【Linux更新驱动、cuda和cuda toolkit】

目录 1. 更新显卡驱动1.1. 查看当前显卡驱动版本1.2. 删除原始显卡驱动1.3. 删除CUDA Toolkit1.4. 在NVIDIA官网找到2080Ti对应的最新驱动程序 2. 更新CUDA Toolkit2.1. 下载CUDA Toolkit2.2. 安装.run2.3. 添加环境变量2.4. 检查是否安装好了 最近需要更新服务器的显卡驱动和C…

目标检测——PP-YOLOv2算法解读

PP-YOLO系列&#xff0c;均是基于百度自研PaddlePaddle深度学习框架发布的算法&#xff0c;2020年基于YOLOv3改进发布PP-YOLO&#xff0c;2021年发布PP-YOLOv2和移动端检测算法PP-PicoDet&#xff0c;2022年发布PP-YOLOE和PP-YOLOE-R。由于均是一个系列&#xff0c;所以放一起解…

Fork - 将 GitHub 的某个特定仓库复制到自己的账户下

Fork - 将 GitHub 的某个特定仓库复制到自己的账户下 1. ForeverStrongCheng/OpenCV-tutorials2. Fork -> ForeverStrongCheng/R2CNN_Faster-RCNN_TensorflowReferences 访问仓库页面&#xff0c;点击 Fork 按钮创建自己的仓库。 Fork 是将 GitHub 的某个特定仓库复制到自己…

BetterDisplay Pro for Mac(显示器校准软件) v2.0.11激活版

BetterDisplay Pro是一款由waydabber开发的Mac平台上的显示器校准软件&#xff0c;可以帮助用户调整显示器的颜色和亮度&#xff0c;以获得更加真实、清晰和舒适的视觉体验。 软件下载&#xff1a;BetterDisplay Pro for Mac v2.0.11激活版 以下是BetterDisplay Pro的主要特点&…

ideaSSM 工程车辆人员管理系统bootstrap开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 idea 开发 SSM 工程车辆人员管理系统是一套完善的信息管理系统&#xff0c;结合SSM框架和bootstrap完成本系统&#xff0c;对理解JSP java编程开发语言有帮助系统采用SSM框架&#xff08;MVC模式开发&#xff09;&#xff0c;系统具 有完整的源代码和数据库&…

uniapp 云开发省钱之调整函数执行内存大小

我这个5块钱一个月的服务空间配置&#xff1a; 现在还只有少量的用户和自己测试之用&#xff0c;目前消耗的情况&#xff1a; 云函数的使用量还是挺高的&#xff0c;目前还是正好能覆盖一个月的使用量&#xff0c;等用户量上来肯定是不行的&#xff0c;所以得想想办法压榨一下云…

玩转C语言——深入理解指针

一、指针概念 1.1 内存和地址 在开始学习指针前&#xff0c;我们先来讲一个例子&#xff0c;假如你身处一栋楼中&#xff0c;你点了一份外卖&#xff0c;那么&#xff0c;外卖员如何能找到你&#xff1f;有两种方法。法一&#xff1a;直接一间一间找&#xff0c;这样做不仅消耗…

【Auth Proxy】为你的 Web 服务上把锁

Auth Proxy 一个极简的用于 Web 服务鉴权的反向代理服务 极其简约的 UI对你的真实服务无任何侵入性支持容器部署&#xff0c;Docker Image 优化到不能再小&#xff08;不到 9MB&#xff09;GitHub&#xff1a;https://github.com/wengchaoxi/auth-proxy 效果 我在 http://lo…

幻兽帕鲁游戏搭建(docker)

系列文章目录 第一章&#xff1a; 幻兽帕陆游戏搭建 文章目录 系列文章目录前言一、镜像安装1.创建游戏目录2.拉取镜像3.下载配置文件4.启动游戏 二、自定义配置总结 前言 这段时间一直在写论文还有找工作&#xff0c;也没学啥新技术&#xff0c;所以博客也很长时间没写了&am…

【YOLOv5改进系列(2)】高效涨点----Wise-IoU详细解读及使用Wise-IoU(WIOU)替换CIOU

WIOU损失函数替换 &#x1f680;&#x1f680;&#x1f680;前言一、1️⃣ Wise-IoU解读---基于动态非单调聚焦机制的边界框损失1.1 &#x1f393; 介绍1.2 ✨WIOU解决的问题1.3 ⭐️论文实验结果1.4 &#x1f3af;论文方法1.4.1☀️Wise-IoU v11.4.2☀️Wise-IoU v21.4.3☀️…

jmeter之并发和顺序执行与特殊线程组-第四天

1.jmeter的并发执行 并发执行&#xff1a;多个线程同时执行&#xff0c;不能确定谁先结束 以上案例中http请求里面没有写任何内容&#xff0c;只是为了看这个并发执行的效果 2.jmeter的顺序执行 顺序执行&#xff1a;多个线程顺序执行 再测试计划中勾选“独立运行每个线程组…

VBA之Word应用:利用Bookmark属性返回选择区域的开始和结束位置

《VBA之Word应用》&#xff08;版权10178982&#xff09;&#xff0c;是我推出第八套教程&#xff0c;教程是专门讲解VBA在Word中的应用&#xff0c;围绕“面向对象编程”讲解&#xff0c;首先让大家认识Word中VBA的对象&#xff0c;以及对象的属性、方法&#xff0c;然后通过实…

什么是子网掩码、ip地址的网段?如何区分?

IP地址优化网写了很多相关的文章。 有些朋友对于子网掩码、IP地址网段等还不太了解&#xff0c;我们来看看网友经常问到的一些相关问题。 255.255.255.192 的位掩码是什么&#xff1f; 1.什么是子网掩码&#xff1f; 在了解IP地址的网段之前&#xff0c;我们先来了解一下子网…