nebula graph 常用命令(updating)

2023-11-01

管理Storage主机

从 3.0.0 版本开始,在配置文件中添加的 Storage 主机无法直接读写,配置文件的作用仅仅是将 Storage 主机注册至 Meta 服务中。必须使用ADD
HOSTS 命令后,才能正常读写 Storage 主机。

向集群中增加 Storage 主机。

ADD HOSTS <ip>:<port> [,<ip>:<port> ...];
add hosts 10.199.4.142:9779

请先等待 2 个心跳周期(20 秒),再查看

show hosts

空间

创建空间

create space basketballplayer(
partition_num = 10,
replica_factor = 1,
vid_type = FIXED_STRING(30)
);

show spaces;

describe space basketballplayer;

drop space xxx_space;

use basketballplayer;


partition_num 指定图空间的分片数量。建议设置为集群中硬盘数量的 20 倍(HDD 硬盘建议为 2 倍)。例如集群中有 3 个硬盘,建议设置 60 个分片。默认值为 100。

创建标签

create tag player(name string, age int);
create tag team(name string);

show tags;

describe tag player;

create tag proper_free();


语法

INSERT EDGE [IF NOT EXISTS] <edge_type> ( <prop_name_list> ) VALUES
<src_vid> -> <dst_vid>[@<rank>] : ( <prop_value_list> )
[, <src_vid> -> <dst_vid>[@<rank>] : ( <prop_value_list> ), ...];
<prop_name_list> ::=
[ <prop_name> [, <prop_name> ] ...]
<prop_value_list> ::=
[ <prop_value> [, <prop_value> ] ...]
create edge follow(degree int);
create edge serve(start_year int , end_year int)
create  edge no_proerty()

show edges;
describe edge follow;

CREATE EDGE IF NOT EXISTS buy(number int);

INSERT EDGE follow(degree) VALUES "player101" -> "player100":(95);
INSERT EDGE follow(degree) VALUES "player101" -> "player102":(90);
INSERT EDGE follow(degree) VALUES "player102" -> "player100":(75);
INSERT EDGE serve(start_year, end_year) VALUES "player101" -> "team204":(1999, 2018),"player102" -> "team203":(2006, 2015);


fetch prop on follow player101 -> player102, player102 -> player103;

如果在两点之前插入多条同类型表,可以使用ranking参数

# 插入100 到101 rank为1的表
insert edge follow(degree) values 100 -> 101@1:(80)

# 查找100 到101 rank为1的表
fetch prop on follow 100 -> 101@1

语法

INSERT VERTEX [IF NOT EXISTS] [tag_props, [tag_props] ...]
VALUES <vid>: ([prop_value_list])
tag_props:
tag_name ([prop_name_list])
prop_name_list:
[prop_name [, prop_name] ...]
prop_value_list:
[prop_value [, prop_value] ...]

vid 是 Vertex ID 的缩写, vid 在一个图空间中是唯一的

INSERT VERTEX player(name, age) VALUES "player100":("Tim Duncan", 42);
INSERT VERTEX player(name, age) VALUES "player101":("Tony Parker", 36);
INSERT VERTEX player(name, age) VALUES "player102":("LaMarcus Aldridge", 33);
INSERT VERTEX team(name) VALUES "team203":("Trail Blazers"), "team204":("Spurs");

多标签插入

create tag test1(name string);
create tag test2(age int);

insert vertex test1(name), test2(age) values 199:("Multitags",33);

 insert vertex tag1(),tag2() values "m1":(),"m1":()

fetch prop on test1 199;
fetch prop on  test2 199;

查看插入结果

fetch prop on player player100;

fetch prop on player player100, player101, player103;

修改点和边
用户可以使用UPDATE 语句或UPSERT 语句修改现有数据。
UPSERT 是UPDATE 和INSERT 的结合体。当使用UPSERT 更新一个点或边,如果它不存在,数据库会自动插入一个新的点或边。

每个 partition 内部, UPSERT 操作是一个串行操作,所以执行速度比执行 INSERT 或 UPDATE 慢很多。其仅在多个 partition 之间有并发。

UPDATE 点

UPDATE VERTEX <vid> SET <properties to be updated>
[WHEN <condition>] [YIELD <columns>];

UPDATE 边

UPDATE EDGE <source vid> -> <destination vid> [@rank] OF <edge_type>
SET <properties to be updated> [WHEN <condition>] [YIELD <columns to be output>];

UPSERT 点或边

UPSERT {VERTEX <vid> | EDGE <edge_type>} SET <update_columns>
[WHEN <condition>] [YIELD <columns>];

用UPDATE 修改 VID 为player100 的球员的name 属性,然后用FETCH 语句检查结果。

nebula> UPDATE VERTEX "player100" SET player.name = "Tim";
nebula> FETCH PROP ON player "player100" YIELD properties(vertex);
+------------------------+
| properties(VERTEX) |
+------------------------+
| {age: 42, name: "Tim"} |
+------------------------+

用UPDATE 修改某条边的degree 属性,然后用FETCH 检查结果。

nebula> UPDATE EDGE "player101" -> "player100" OF follow SET degree = 96;
nebula> FETCH PROP ON follow "player101" -> "player100" YIELD properties(edge);
+------------------+
| properties(EDGE) |
+------------------+
| {degree: 96} |
+------------------+

用INSERT 插入一个 VID 为player111 的点,然后用UPSERT 更新它。

nebula> INSERT VERTEX player(name,age) VALUES "player111":("David West", 38);
nebula> UPSERT VERTEX "player111" SET player.name = "David", player.age = $^.player.age + 11 \
WHEN $^.player.name == "David West" AND $^.player.age > 20 \
YIELD $^.player.name AS Name, $^.player.age AS Age;
+---------+-----+
| Name | Age |
+---------+-----+
| "David" | 49 |
+---------+-----+

删除点和边

删除点

DELETE VERTEX <vid1>[, <vid2>...]
nebula> DELETE VERTEX "player111", "team203";

删除边

DELETE EDGE <edge_type> <src_vid> -> <dst_vid>[@<rank>]
[, <src_vid> -> <dst_vid>...]
nebula> DELETE EDGE follow "player101" -> "team204";

索引

用户可以通过 CREATE INDEX 语句为 Tag 和 Edge type 增加索引。

MATCH 和LOOKUP 语句的执行都依赖索引,但是索引会导致写性能大幅降低(降低 90%甚至更多)。请不要随意在生产环境中使用索引,除非很清楚使用索引
对业务的影响。

必须为“已写入但未构建索引”的数据重建索引,否则无法在MATCH 和LOOKUP 语句中返回这些数据。参见重建索引。

创建索引

CREATE {TAG | EDGE} INDEX [IF NOT EXISTS] <index_name>
ON {<tag_name> | <edge_name>} ([<prop_name_list>]) [COMMENT = '<comment>'];

在这里插入图片描述

# 为变长字符串属性创建索引时,必须用 prop_name(length) 指定索引长度;
# 为 Tag 或 Edge type 本身创建索引时,忽略 <prop_name_list> 。
create edge index serve_index_0 on serve(start_year);

rebuild edge index serve_index_0;

重建索引

REBUILD {TAG | EDGE} INDEX <index_name>;

为没有指定长度的变量属性创建索引时,需要指定索引长度。在 utf-8 编码中,一个中文字符占 3 字节,请根据变量属性长度设置合适的索引长度。例如
10 个中文字符,索引长度需要为 30。详情请参见创建索引。

基于索引的LOOKUP 和MATCH 示例
确保LOOKUP 或MATCH 有一个索引可用。如果没有,请先创建索引。
找到 Tag 为player 的点的信息,它的name 属性值为Tony Parker 。

// 为 name 属性创建索引 player_index_1。
nebula> CREATE TAG INDEX IF NOT EXISTS player_index_1 ON player(name(20));
// 重建索引确保能对已存在数据生效。
nebula> REBUILD TAG INDEX player_index_1
+------------+
| New Job Id |
+------------+
| 31 |
+------------+
// 使用 LOOKUP 语句检索点的属性。
nebula> LOOKUP ON player WHERE player.name == "Tony Parker" \
YIELD properties(vertex).name AS name, properties(vertex).age AS age;
+---------------+-----+
| name | age |
+---------------+-----+
| "Tony Parker" | 36 |
+---------------+-----+
// 使用 MATCH 语句检索点的属性。
nebula> MATCH (v:player{name:"Tony Parker"}) RETURN v;
+-----------------------------------------------------+
| v |
+-----------------------------------------------------+
| ("player101" :player{age: 36, name: "Tony Parker"}) |
+-----------------------------------------------------+

drop tag

drop tag member
-1005:Conflict!

一旦标签创建了index直接删除标签就会出现如上错误

# 如果记不清楚具体是什么时可以用
show tag indexes;

在这里插入图片描述

DROP {TAG | EDGE} INDEX [IF EXISTS] <index_name>;
DROP TAG  INDEX member_index_0;
DROP TAG  member;

查询

go from "player100" over follow;

match

语句是查询图数据最常用的,可以灵活的描述各种图模式,但是它依赖索引去匹配 Nebula Graph 中的数据模型,性能也还需要调

语法

MATCH <pattern> [<clause_1>] RETURN <output> [<clause_2>];
match (u:player) return u limit 11;

match (e:member:tag2) -->(s1:store) where s1.store.id=="s2" return e,s1 limit 111

go

语句可以根据指定的条件遍历数据库。GO 语句从一个或多个点开始,沿着一条或多条边遍历,返回YIELD 子句中指定的信息

语法

GO [[<M> TO] <N> STEPS ] FROM <vertex_list>
OVER <edge_type_list> [{REVERSELY | BIDIRECT}]
[ WHERE <conditions> ]
YIELD [DISTINCT] <return_list>
[{ SAMPLE <sample_list> | <limit_by_list_clause> }]
[| GROUP BY {<col_name> | expression> | <position>} YIELD <col_name>]
[| ORDER BY <expression> [{ASC | DESC}]]
[| LIMIT [<offset>,] <number_rows>];

从vid 为player_100 开始,遍历所有被vid关注的点

go from player_100 over follow;

返回vid 为player_100 关注并且球员年龄大于35

go from 100 over follow where $$.player.age > 35 yield $$.player.name as teammate, $$player.age as Age;

返回vid 为player_100 所效忠的球队

go from 100 over follow yield follow._dst as id | 
go from $-.id over serve yield $$.team.name as Team, $^.player.name as Player;


# 方法2^
$var=go from 100 over follow yield follow._dst as id;
go from $var.id over serve yield $$.team.name as Team, $^.player.name as Player;

# 从 VID 为Aemon-Targaryen-(Dragonknight)开始,沿着边relation  找到连接的人
go from "Aemon-Targaryen-(Dragonknight)" over relation yield id($$);

# 从 VID 为player101 的球员开始,沿着边follow 查找年龄大于或等于 35 岁的球员,并返回他们的姓名和年龄,同时重命名对应的列
GO FROM "player101" OVER follow WHERE properties($$).age >= 35 
YIELD properties($$).name AS Teammate, properties($$).age AS Age;

在这里插入图片描述

从 VID 为player101 的球员开始,沿着边follow 查找连接的球员,然后检索这些球员的球队。为了合并这两个查询请求,可以使用管道符或临时变
量。

使用管道符

nebula> GO FROM "player101" OVER follow YIELD dst(edge) AS id | \
GO FROM $-.id OVER serve YIELD properties($$).name AS Team, \
properties($^).name AS Player;
+-----------------+---------------------+
| Team 			| Player 						|
+-----------------+---------------------+
| "Spurs" 		| "Tim Duncan" 				|
| "Trail Blazers" | "LaMarcus Aldridge" |
| "Spurs" 		| "LaMarcus Aldridge" 		|
| "Spurs" 		| "Manu Ginobili" 			|
+-----------------+---------------------+

在这里插入图片描述

使用临时变量

当复合语句作为一个整体提交给服务器时,其中的临时变量会在语句结束时被释放。

nebula> $var = GO FROM "player101" OVER follow YIELD dst(edge) AS id; \
GO FROM $var.id OVER serve YIELD properties($$).name AS Team, \
properties($^).name AS Player;
+-----------------+---------------------+
| Team | Player |
+-----------------+---------------------+
| "Spurs" | "Tim Duncan" |
| "Trail Blazers" | "LaMarcus Aldridge" |
| "Spurs" | "LaMarcus Aldridge" |
| "Spurs" | "Manu Ginobili" |
+-----------------+---------------------+

FETCH

可以获得点或边的属性

查询 Tag 属性

语法

FETCH PROP ON {<tag_name>[, tag_name ...] | *}
<vid> [, vid ...]
YIELD <return_list> [AS <alias>];

查询边属性
语法

FETCH PROP ON <edge_type> <src_vid> -> <dst_vid>[@<rank>] [, <src_vid> -> <dst_vid> ...]
YIELD <output>;

LOOKUP

是基于索引的,和WHERE 子句一起使用,查找符合特定条件的数据。

LOOKUP ON {<vertex_tag> | <edge_type>}
[WHERE <expression> [AND <expression> ...]]
YIELD <return_list> [AS <alias>];
<return_list>
<prop_name> [AS <col_alias>] [, <prop_name> [AS <prop_alias>] ...];

统计

submit job stats;
show job 248

show stats;
match (e:member) with e limit 10000000 return count(*)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

nebula graph 常用命令(updating) 的相关文章

  • Azure:用户登录失败

    我做了什么 我在 Azure 中添加了资源组 添加了带有先前资源组的 Web 服务 添加了带有先前资源组的 SQL Server 数据库 从此数据库检索生成的连接字符串并在此处提供用户名和密码 将此连接字符串添加到Web服务中的应用程序设置
  • 如何使 R barplot 上的列标签变为斜体

    这可能是一个简单的问题 但是如何仅将条形图上的列标签设为斜体 而不是斜体x axis标签 但列标签是专门的 到目前为止我的代码是 bp barplot means names arg c CON TRI ylim c 0 120 ylab
  • 一个大连接或多个查询哪个提供更好的性能?

    我有一个名为订单的表 订单上的一列是 customer id我有一个名为 customers 的表 有 10 个字段 给定两个选项 如果我想构建订单对象数组并嵌入订单对象中的是客户对象 我有两个选择 选项1 A 首先查询订单表 b 循环遍历
  • 环回:原子读取和更新

    有没有办法在环回中实现类似的东西 LOCK READ INCREMENT UNLOCK 我想将计数器保留为数据库值 每个键都是一个计数器 或一个设置 并且它们不应该同时访问我的多个请求 此外 这也应该适用于本地请求 无 RemoteHook
  • 从数据库中删除重复的行

    我需要从数据库中删除重复的行 我可以用简单的sql查询来完成吗 如果没有 请告诉我一些快速算法来做到这一点 Example id field one field two 1 0000000 11111111 2 2222222 333333
  • 数百个别名/同义词与数据库表的完全限定名称

    考虑到多个模式中的数百个数据库表 在创建存储过程和视图时 您是否建议使用别名 同义词或完全限定名称 给定一些 schema table 像这样 Orders OrderHeader Production LineThroughput Sal
  • 如何在postgresql中查找具有特定列的表

    我正在使用 PostgreSQL 9 1 我有一个表的列名 是否可以找到具有此列的表 如果是这样 怎么办 你也可以做 select table name from information schema columns where colum
  • 限制 sqlite 表的最大行数

    我希望实现一种 活动日志 表 其中用户执行的操作存储在 sqlite 表中 然后呈现给用户 以便他们可以看到他们所做的最新活动 然而 自然地 我觉得没有必要保留每一个历史记录 所以我想知道是否有一种方法可以配置表以在达到最大设置限制后开始修
  • PHP 中的 MongoDB - 如何将项目插入集合中的数组中?

    这必须很容易 但我似乎无法弄清楚 假设我有一个集合users这是集合中的第一项 id ObjectId 4d8653c027d02a6437bc89ca name Oscar Godson email email protected cdn
  • 什么是数据库池?

    我只是想了解数据库连接池的概念以及它是如何实现的 数据库联系池是一种用于保持数据库连接打开的方法 以便其他人可以重用它们 通常 打开数据库连接是一项昂贵的操作 尤其是在数据库位于远程的情况下 您必须打开网络会话 进行身份验证 检查授权等等
  • Scrapy - 持续从数据库中获取要爬取的url

    我想不断地从数据库中获取要爬行的网址 到目前为止 我成功地从基地获取了 url 但我希望我的蜘蛛继续从该基地读取 因为该表将由另一个线程填充 我有一个管道 一旦爬行 工作 就会从表中删除 url 换句话说 我想使用我的数据库作为队列 我尝试
  • 绘制点之间的所有线

    我有以下 R 代码 x lt c 0 01848598 0 08052353 0 06741172 0 11652034 y lt c 0 4177541 0 4042247 0 3964025 0 4074685 d lt data fr
  • 如何在 Visual Studio 中更改 Azure 数据库表的列顺序

    我整个下午都在寻找在 MS Visual Studio 2022 中重新排序 Azure 数据库表列的方法 没有运气 在其他应用程序中 可以通过拖动或剪切和粘贴轻松重新排列列 这里无能为力 此时 我什至不确定可以在 VS 中移动列 我只对
  • 如何在不运行 PostgreSQL 服务器的情况下初始化 PostgreSQL 数据库

    在初始化脚本中 我想初始化 PostgreSQL 目录 但在此阶段不需要 也不希望 正在运行的 PostgreSQL 服务器 如果我只是创建集群 作为用户postgres initdb D 但是 我还需要创建 PostgreSQL 角色 创
  • Mysql 中 UNION 子句的替代方案

    我有两张桌子 表 a 表 b table a ID 1 2 3 4 5 7 table b ID 2 3 4 5 6 我必须得到这样的输出而无需UNION命令 ID 1 2 3 4 5 6 7 注意 我有一个联合解决方案 select fr
  • 在 SQL 数据库中存储“列表”的最正确方法是什么?

    因此 我读了很多关于如何将多个值存储到一个列中是一个坏主意 并且违反了数据标准化的第一条规则 令人惊讶的是 这不是 不要谈论数据标准化 所以我需要一些帮助 目前我正在为我工 作的地方设计一个 ASP NET 网页 我想根据此人所属的 Act
  • Python 和图形数据库。使用 java lib 包装器还是 REST api?

    我想问你在Python中使用图数据库 Neo4j 的最佳方法 你觉得我应该使用 neo4j python embedded neo4j python 嵌入式 http docs neo4j org chunked milestone pyt
  • 如何跨多个表强制执行 CHECK 约束

    我有一个在 Microsoft SQL Server 2012 Express 中记录奶牛繁殖信息的数据库 显然 一头牛只有在出生后才能配种 并且在其一生中可能会配种多次 我需要在我的数据库中强制执行这些约束 我目前已经根据下图安排了一个架
  • 用于捕获审计跟踪的数据库设计的想法[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 如何维护数据库中的数据日志 我必须维护对每一行所做的每次更改的日志 这意味着我不能允许DELETE and UPDATE待执行 我怎样才能保留这
  • 如何在首次运行时填充大型 SQLite 数据库

    我正在开发一个基于 SQLite 数据库的字典应用程序 该数据库包含超过 300 000 行 问题在于 最终形式的数据库文件由全文索引表组成 并且重量远远超过150Mb 我通过创建无内容的 fts4 表设法将 db 文件大小降至最低 数据库

随机推荐

  • C语言中的exit与return的区别

    exit 结束当前进程 当前程序 在整个程序中 只要调用 exit 就结束 exit 0 表示进程正常退出 返回 0 exit 1 表示进程非正常退出 返回 1 exit与return的区别 exit 函数与return语句的最大区别在于
  • 【博客689】监控进程的自愿与非自愿上下文切换

    监控进程的自愿与非自愿上下文切换 场景 有时候遇到机器没有性能瓶颈 但是进程出现性能瓶颈 这时候往往需要进程级别的监控 监控手段 process exporter https github com ncabatoff process exp
  • Python工程师常见的30个基础面试题

    一 Python 的特点和优点是什么 Python 是一门动态解释性的强类型定义语言 编写时无需定义变量类型 运行时变量类型强制固定 无需编译 在解释器环境直接运行 优点 1 解释性 Python 语言写的程序 不需要编译成二进制代码 可以
  • 字库制作和烧写

    文章目录 资源获取 一 介绍字库 1 GB2312 2 GBK 二 生成字库 1 打开字库生成软件 2 软件介绍 3 生成bin字库 三 烧录字库 1 打开串口烧录软件 2 配置软件 3 打开字库文件 4 将烧录程序下载到开发板 5 开始烧
  • MacOs 执行命令行报:permission denied:

    当前目录没有可执行权限 解决方案 代表文件目录 sudo chmod R 777
  • docker安装nacos2.0.3并配置mysql

    1 拉取镜像 docker pull nacos nacos server 2 0 3 2 创建数据目录 mkdir p mydata nacos2 0 3 logs mkdir p mydatadata nacos2 0 3 conf 3
  • Java 包(package)

    为了更好地组织类 Java 提供了包机制 用于区别类名的命名空间 包的作用 1 把功能相似或相关的类或接口组织在同一个包中 方便类的查找和使用 2 如同文件夹一样 包也采用了树形目录的存储方式 同一个包中的类名字是不同的 不同的包中的类的名
  • linux安装virtualbox命令,如何在CentOS 7.5上安装VirtualBox

    VirtualBox是一款开源的跨平台虚拟化软件 允许您同时运行多个客户操作系统 虚拟机 在本教程中 我们将向您展示如何从CentOS 7系统上的Oracle存储库安装VirtualBox 前提条件 在继续本教程之前 请确保以具有sudo权
  • 为网站接入前端异常监控系统 Sentry

    背景 众所周知 现在前端异常监控在实际生产环境中越来越重要了 通过给网站接入前端异常监控系统 我们能获得以下几个好处 收集页面的错误信息 辅助定位代码错误位置 在用户报障前发现问题 这对于提升线上系统质量 降低线上故障数量 都具有非常重要的
  • 【mysql基础系列十一】用户权限管理

    用户权限管理 在不同的项目中给不同的角色 mysql客户端用户 通常为开发者 不同的权限 为了保证数据库的数据安全 用户管理 mysql需要客户端进行连接认证才能进行服务器操作 需要用户信息 mysql中所有的用户 指mysql客户端用户
  • Spring的生态圈、Spring全家桶

    Springboot是伴随spring4诞生的 除了springboot之外 spring作为企业级应用开发的轻量级解决方案提供了许多子项目 这些子项目可以更好地理解其设计架构 思想并使用spring spring的整个生态系统包括以下内容
  • jenkins 链接远程服务器,执行shell脚本后台启动java工程,项目已启动成功,jenkins界面仍在转圈

    jenkins 链接远程服务器 执行shell脚本后台启动java工程 项目已启动成功 jenkins界面仍在转圈 如图 之前的shell nohup java jdk1 8 0 221 bin java jar jenkins proje
  • flink-sql读写hive-1.15

    1 版本说明 本文档内容基于flink 1 15 x 其他版本的整理 请查看本人博客的 flink 专栏其他文章 1 1 概述 Apache Hive 已经成为了数据仓库生态系统中的核心 它不仅仅是一个用于大数据分析和ETL场景的SQL引擎
  • MySql5.7 直接拷贝数据文件后出现table xxx doesn’t exist

    MySQL备份或者转移数据库时有一种方便的方法 就是直接拷贝MySQL目录下 data文件夹下对应的数据库文件夹 但当粘贴到另外的服务器下的data文件夹下后 虽然打开数据库后能看到各个table 但使用时却会提示table xxx doe
  • java concurrency基础

    本来是学习volatile关键字的 结果连带学习了这么多知识点 慢慢看吧 标记一下 1 深入浅出java concurrency http www blogjava net xylz archive 2012 05 30 325587 ht
  • 如何给6个整数的一维数组某个元素赋值_C++基础知识篇:C++ 数组

    C 支持数组数据结构 它可以存储一个固定大小的相同类型元素的顺序集合 数组是用来存储一系列数据 但它往往被认为是一系列相同类型的变量 数组的声明并不是声明一个个单独的变量 比如 number0 number1 number99 而是声明一个
  • 用好这 28 个工具,开发效率爆涨|云效工程师指北

    大家好 我是秦世成 我在云效负责制品仓库Packages的开发工作 作为一个有多年经验的资深CRUD后端工程师 使用过很多日常开发所需的工具软件 其中不少能堪称为 神器 这些 神器 能极大的提升日常开发的效率 小到一个复制粘贴操作 大到开发
  • Wireshark

    抓包工具 抓包工具是拦截查看网络数据包内容的软件 抓包工具由于其可以对数据通信过程中的所有lP报文实施捕获并进行逐层拆包分析 一直是传统固网数通维护工作中罐常用的故障排查工具 业内 流行的抓包软件有很多 Wireshark SnifferP
  • 【vue】$set怎么使用

    vue中在data 里的数据才是响应式的 有的场景 比如说后端返回的接口对象里 想再增加一个属性 作为响应式 这时候可以用到 set添加 set总共三个参数 第一个为当前对象 第二个为属性名 第三个为属性值
  • nebula graph 常用命令(updating)

    文章目录 管理Storage主机 空间 创建标签 边 点 增 改 删除点和边 索引 创建索引 重建索引 drop tag 查询 match go FETCH LOOKUP 统计 管理Storage主机 从 3 0 0 版本开始 在配置文件中