【Neo4j系列】Neo4j之CQL语句和函数介绍

本文将对Neo4j中的CQL语句和CQL函数进行详细介绍。

作者:后端小肥肠

目录

1. 前言

2. CQL语句

2.1. CQL简介

2.2. CREATE命令

2.3. MATCH命令

2.4. RETURN命令

2.5. MATCH和RETURN

2.6. CREATE+MATCH+RETURN命令

2.7. 关系基础

2.8. CREATE创建标签

2.9. WHERE子句

2.10. DELETE命令

2.11. REMOVE命令

2.12. SET子句

2.13. ORDER BY排序

2.14. UNION和UNION ALL

2.15. LIMIT和SKIP子句

2.16. MERGE

2.17. IN操作符

3. CQL函数

3.1. 字符串函数

3.2. AGGEGATION聚合

3.3. 关系函数

4.结语


1. 前言

CQL是Neo4j的查询语言,专为图数据库设计,使得对图形数据的操作变得简单而直观。本文我们将深入研究CQL的基本语法和一些强大的函数,为读者提供全面的了解,让大家能够更好地利用Neo4j构建和查询图数据库。

2. CQL语句

2.1. CQL简介

Neo4j的Cypher语言是为处理图形数据而构建的,CQL代表Cypher查询语言。像Oracle数据库具有查询 语言SQL,Neo4j具有CQL作为查询语言。CQL是Neo4j图形数据库的查询语言,是一种声明性模式匹配语言,遵循SQL语法,其语法是非常简单且人性化、可读的格式。

CQL命令用法
CREATE创建节点,关系和属性
MATCH检索有关节点,关系和属性数据
RETURN返回查询结果
WHERE提供条件过滤检索数据
DALETE删除节点和关系
REMOVE删除节点和关系的属性
ORDER BY排序检索数据
SET添加或更新标签

2.2. CREATE命令

CQL中的CREATE命令可以实现以下操作:

1. 创建没有属性的节点

2. 使用属性创建节点

3. 在没有属性的节点之间创建关系

4. 使用属性创建节点之间的关系

5. 为节点或关系创建单个或多个标签

语法格式:

CREATE (<node-name>:<label-name>)

语法说明 : 

语法元素描述
CREATE一个Neo4j CQL命令
<node-name>我们要创建的节点名称
<label-name>一个节点标签名称

注意事项 -

1. Neo4j数据库服务器使用此<node-name>将此节点详细信息存储在Database中作为Neo4j DBA或Developer,我们不能使用它来访问节点详细信息。

2. Neo4j数据库服务器创建一个<label-name>作为内部节点名称的别名。作为Neo4j DBA或Developer,我们应该使用此标签名称来访问节点详细信息。

2.3. MATCH命令

CQL中的MATCH命令可以实现以下操作:

1. 从数据库获取有关节点和属性的数据

2. 从数据库获取有关节点,关系和属性的数据

语法格式:

MATCH (<node-name>:<label-name>)

语法说明:

语法元素描述
<node-name>节点名称
<label-name>0标签名称

2.4. RETURN命令

CQL中的RETURN命令可以实现以下操作:

1. 检索节点的某些属性

2. 检索节点的所有属性

3. 检索节点和关联关系的某些属性

4. 检索节点和关联关系的所有属性

语法格式:

RETURN <node-name>.<property1-name>,........<node-name>.<propertyn-name>

语法说明:

语法元素描述
<node-name>节点名称
<propertyn-name>属性名称

2.5. MATCH和RETURN

CQL中我们不能单独使用MATCH或RETURN命令,因此我们应该合并这两个命令以从数据库检索数据:

1. 检索节点的某些属性

2. 检索节点的所有属性

3. 检索节点和关联关系的某些属性

4. 检索节点和关联关系的所有属性

语法格式:

MATCH Command
RETURN Command

语法说明:

语法元素描述
MATCH命令
RETURN命令

2.6. CREATE+MATCH+RETURN命令

现在演示一下CREATE+MATCH+RETURN命令组合用的场景:

1.创建一个标签为xfc的节点,name为小肥肠,age为18

2.查询小肥肠节点对应信息

2.7. 关系基础

Neo4j图数据库遵循属性图模型来存储和管理其数据。根据属性图模型,关系应该是定向的, 否则,Neo4j将抛出一个错误消息。基于方向性,Neo4j关系被分为两种主要类型。

  • 单向关系

  • 双向关系

在以下场景中,我们可以使用Neo4j CQL CREATE命令来创建两个节点之间的关系。 这些情况适用于Uni和双向关系。

  • 在两个现有节点之间创建无属性的关系

  • 在两个现有节点之间创建有属性的关系

  • 在两个新节点之间创建无属性的关系

  • 在两个新节点之间创建有属性的关系

  • 在具有WHERE子句的两个退出节点之间创建/不使用属性的关系

下图为在两个节点之间创建关系例子:

2.8. CREATE创建标签

CQL中CREATE命令可以用来进行一下操作:

1. 可以创建单个标签或者多个标签

2. 可以根据CREATE语句来创建标签之间的关系

语法格式:

CREATE (node1-name:lable1-name) - [relationship-name:relationship-lable-name]->(node2-name:lable2-name)

语法说明:

语法元素描述
CREATE创建命令
node1-namefrom节点名称
lable1-namefrom节点标签
node2-nameto节点名称
lable2-nameto节点标签
relationship-name关系名称
relationship-lable-name关系标签

2.9. WHERE子句

像SQL一样,Neo4j CQL在CQL MATCH命令中提供了WHERE子句来过滤MATCH查询的结果。

语法格式:

WHERE <condition>

复杂语法格式:

WHERE <condition> <boolean-operator> <condition>

Neo4j支持以下布尔运算符在Neo4j CQL WHERE子句中使用以支持多个条件。

布尔运算符描述示例
ADN逻辑与操作符,用于组合两个或多个条件,只有当所有条件为真时,整个表达式才为真。MATCH (n:Person) WHERE n.age > 25 AND n.name = 'John' RETURN n;
OR逻辑或操作符,用于组合两个或多个条件,只要至少有一个条件为真,整个表达式就为真。MATCH (n:Person) WHERE n.age > 25 OR n.name = 'John' RETURN n;
NOT逻辑非操作符,用于取反一个条件的真假。MATCH (n:Person) WHERE NOT n.name = 'John' RETURN n;

Neo4j 支持以下的比较运算符,在 Neo4j CQL WHERE 子句中使用来支持条件。

比较运算符描述示例
=用于检查两个值是否相等。MATCH (n:Person) WHERE n.age = 25 RETURN n;
<>用于检查两个值是否不相等。MATCH (n:Person) WHERE n.name <> 'John' RETURN n;
<用于检查一个值是否小于另一个值。MATCH (n:Person) WHERE n.age < 30 RETURN n;
>用于检查一个值是否大于另一个值。

MATCH (n:Person) WHERE n.age > 25 RETURN n;

<=用于检查一个值是否小于或等于另一个值。MATCH (n:Person) WHERE n.age <= 30 RETURN n;
>=用于检查一个值是否大于或等于另一个值。MATCH (n:Person) WHERE n.age >= 25 RETURN n;
 

where子句也可以创建关系:

语法格式:

MATCH (<node1-label-name>:<node1-name>),(<node2-label-name>:<node2-name>) 
WHERE <condition>
CREATE (<node1-label-name>)-[<relationship-label-name>:<relationship-name>{<relationship-properties>}]->(<node2-label-name>)

语法说明:

上面的语句(语法格式)就是寻找两个已存在节点并在他两直接建立关系,我这里就不用表格拆开讲解了。

2.10. DELETE命令

CQL中DELETE命令可以用来进行以下操作:

1. 删除节点:

MATCH (n:Label)
WHERE n.property = 'value'
DELETE n;

这将删除所有符合条件的节点(不包含关系)。替换 "Label" 和 "property" 为你的节点标签和属性。 

2. 删除节点的特定关系:

MATCH (n:Label)-[r:RELATIONSHIP]->()
WHERE n.property = 'value'
DELETE r;

这将删除所有符合条件的节点的特定关系。

3. 删除节点及其关系:

MATCH (n:Label)
WHERE n.property = 'value'
DETACH DELETE n;

 这将删除节点及其关系。

2.11. REMOVE命令

CQL中,REMOVE命令用于删除图元素的属性和标签:

1. 移除节点(关系)的属性:

MATCH (n:Label)
WHERE n.property = 'value'
REMOVE n.property;

 筛选出 n.property = 'value'的节点,移除属性。

2. 移除节点(关系)的标签:

MATCH (n:Label)
REMOVE n:Label;

3. 同时移除节点(关系)的属性和标签:

MATCH (n:Label)
WHERE n.property = 'value'
REMOVE n.property, n:Label;

 筛选出 n.property = 'value'的节点,移除属性和标签。

2.12. SET子句

有时,我们需要向现有节点或关系添加新属性,要做到这一点,Neo4j CQL 提供了一个SET子句,可以进行以下操作:

1. 设置节点属性

MATCH (n:标签 {id: 1})
SET n.属性 = '新值'

这个查询会匹配具有标签 "标签" 和属性 "id" 值为 1 的节点,并将它的 "属性" 属性设置为 "新值"。 

2. 设置关系属性

MATCH (a:节点标签)-[r:关系标签]->(b:节点标签)
WHERE a.id = 1 AND b.id = 2
SET r.属性 = '新值'

这个查询会将从节点 a 到节点 b 的关系的 "属性" 设置为 "新值"。 

3. 添加新属性或更新多个属性

MATCH (n:标签 {id: 1})
SET n.属性1 = '新值1', n.属性2 = '新值2'

2.13. ORDER BY排序

CQL在MATCH命令中提供了“ORDER BY”子句,对MATCH查询返回的结果进行排序。我们可以按升序或降序对行进行排序。默认情况下,它按升序对行进行排序。 如果我们要按降序对它们进行排序,我们需要使用DESC子句。以下是一些示例用法:

1. 按节点属性升序排序:

MATCH (n:Label)
RETURN n.property
ORDER BY n.property

这将按节点的 "property" 属性的升序顺序返回结果。 

2. 按节点属性降序排序:

MATCH (n:Label)
RETURN n.property
ORDER BY n.property DESC

 这将按节点的 "property" 属性的降序顺序返回结果。

2.14. UNION和UNION ALL

与SQL一样,Neo4j CQL有两个子句,将两个不同的结果合并成一组结果

  • UNION

  • UNION ALL

UNION子句:

它将两组结果中的公共行组合并返回到一组结果中。 它不从两个节点返回重复的行。

限制:结果列类型和来自两组结果的名称必须匹配,这意味着列名称应该相同,列的数据类型应该相同。

MATCH (cc:CreditCard)
RETURN cc.id as id,cc.number as number,cc.name as name,cc.valid_from as valid_from,cc.valid_to as valid_to
UNION
MATCH (dc:DebitCard)
RETURN dc.id as id,dc.number as number,dc.name as name,dc.valid_from as valid_from,dc.valid_to as valid_to

UNION ALL子句:

它结合并返回两个结果集的所有行成一个单一的结果集。它还返回由两个节点重复行。

限制:结果列类型和来自两组结果的名称必须匹配,这意味着列名称应该是相同的,列的数据类型应该是相同的。

MATCH (cc:CreditCard)
RETURN cc.id as id,cc.number as number,cc.name as name,cc.valid_from as valid_from,cc.valid_to as valid_to
UNION ALL
MATCH (dc:DebitCard)
RETURN dc.id as id,dc.number as number,dc.name as name,dc.valid_from as valid_from,dc.valid_to as valid_to

2.15. LIMIT和SKIP子句

CQL中,LIMITSKIP 用于控制查询结果的数量和偏移。以下是它们的用法:

1. 使用 LIMIT 限制结果数量:

MATCH (n:Label)
RETURN n.property
LIMIT 10

这将返回满足条件的前 10 个节点的 "property" 属性。LIMIT 用于限制结果集的大小。 

2. 使用 SKIP 跳过指定数量的结果:

MATCH (n:Label)
RETURN n.property
SKIP 5

这将返回从满足条件的节点中跳过前 5 个节点的 "property" 属性。SKIP 用于指定结果集中要跳过的数量。 

3. 结合使用 LIMITSKIP 进行分页:

MATCH (n:Label)
RETURN n.property
SKIP 10
LIMIT 5

这将从满足条件的节点中跳过前 10 个,并返回接下来的 5 个节点的 "property" 属性。结合使用 SKIPLIMIT 可以实现分页效果

2.16. MERGE

CQL中,MERGE 用于根据指定的模式创建或匹配节点和关系。其作用是确保在图数据库中存在满足指定条件的节点和关系,如果不存在,则创建它们,如果已存在,则不做任何更改。以下是 MERGE 的一些用法示例:

1. 使用 MERGE 创建或匹配节点:

MERGE (n:Label {id: 1})
ON CREATE SET n.property = 'value'
RETURN n

这将创建一个具有标签 "Label" 和属性 "id" 值为 1 的节点,如果这样的节点已存在,则不会创建,并且如果节点是新创建的,将设置属性 "property" 为 'value'。 

2. 使用 MERGE 创建或匹配关系:

MATCH (a:Node), (b:Node)
WHERE a.id = 1 AND b.id = 2
MERGE (a)-[r:RELATIONSHIP]->(b)
ON CREATE SET r.property = 'value'
RETURN r

这将创建从节点 a 到节点 b 的关系 "RELATIONSHIP",如果这样的关系已存在,则不会创建,并且如果关系是新创建的,将设置属性 "property" 为 'value'。 

2.17. IN操作符

CQL中,IN 关键字用于筛选属性值是否在指定的值列表中。以下是 IN 的用法示例:

1. 使用 IN 进行单个属性的筛选:

MATCH (n:Label)
WHERE n.property IN ['value1', 'value2', 'value3']
RETURN n

这将返回具有标签 "Label" 并且属性 "property" 的值在 ['value1', 'value2', 'value3'] 中的节点。

 2. 使用 IN 结合其他条件进行复杂的筛选:

MATCH (n:Label)
WHERE n.type = 'Type1' AND n.status IN ['Active', 'Pending']
RETURN n

这将返回具有标签 "Label"、属性 "type" 为 'Type1' 且属性 "status" 在 ['Active', 'Pending'] 中的节点。 

3. CQL函数

3.1. 字符串函数

与SQL一样,Neo4J CQL提供了一组String函数,用于在CQL查询中获取所需的结果。 以下是一些常见的字符串函数及其用法示例:

  1. UPPERLOWER - 将字符串转为大写或小写:

    RETURN UPPER('hello') AS upper_result, LOWER('WORLD') AS lower_result

    这将返回字符串 "hello" 的大写形式和字符串 "WORLD" 的小写形式。

  2. SUBSTRING - 提取子字符串:

    RETURN SUBSTRING('Neo4j', 1, 3) AS substring_result

    这将返回从字符串 "Neo4j" 的位置 1 开始的长度为 3 的子字符串。

  3. LENGTH - 获取字符串长度:

    RETURN LENGTH('Graph Database') AS length_result

    这将返回字符串 "Graph Database" 的长度。

  4. TRIM - 去除字符串两端的空格:

    RETURN TRIM(' Hello ') AS trimmed_result

    这将返回去除了字符串两端空格的结果。

  5. CONCAT - 连接字符串:

    RETURN CONCAT('Hello', ' ', 'World') AS concatenated_result

    这将返回连接了三个字符串的结果。

3.2. AGGEGATION聚合

和SQL一样,Neo4j CQL提供了一些在RETURN子句中使用的聚合函数。 它类似于SQL中的GROUP BY子句。我们可以使用MATCH命令中的RETURN +聚合函数来处理一组节点并返回一些聚合值。以下是一些常见的聚合函数及其用法示例:

  1. COUNT - 计算匹配结果的数量:

    MATCH (n:Label) RETURN COUNT(n) AS node_count

    这将返回满足条件的节点数量。

  2. SUM - 计算数值属性的总和:

    MATCH (n:Label) RETURN SUM(n.property) AS total_property_sum

    这将返回满足条件的节点属性 "property" 的总和。

  3. AVG - 计算数值属性的平均值:

    MATCH (n:Label) RETURN AVG(n.value) AS average_value

    这将返回满足条件的节点属性 "value" 的平均值。

  4. MINMAX - 计算数值属性的最小值和最大值:

    MATCH (n:Label) RETURN MIN(n.age) AS min_age, MAX(n.age) AS max_age

    这将返回满足条件的节点属性 "age" 的最小和最大值。

  5. COLLECT - 将结果集中的值收集为列表:

    MATCH (n:Label) RETURN COLLECT(n.name) AS names

    这将返回满足条件的节点属性 "name" 的值作为列表。

3.3. 关系函数

CQL中提供了一组关系函数,以在获取开始节点,结束节点等细节时知道关系的细节。以下是一些常见的关系函数及其用法示例:

  1. TYPE - 获取关系的类型:

    MATCH (a)-[r]->(b) RETURN TYPE(r) AS relationship_type

    这将返回关系的类型,例如 "relationship_type" 可能是关系的标签。

  2. STARTNODEENDNODE - 获取关系的起始节点和结束节点:

    MATCH (a)-[r]->(b) RETURN STARTNODE(r) AS start_node, ENDNODE(r) AS end_node

    这将返回关系的起始节点和结束节点。

  3. NODES - 获取关系路径上的所有节点:

    MATCH path = (a)-[*]->(b) RETURN NODES(path) AS all_nodes

    这将返回关系路径上的所有节点的列表。

  4. LENGTH - 获取关系路径的长度(即节点之间的关系数量):

    MATCH path = (a)-[*]->(b) RETURN LENGTH(path) AS path_length

    这将返回关系路径的长度。

  5. RELATIONSHIPS - 获取关系路径上的所有关系:

    MATCH path = (a)-[*]->(b) RETURN RELATIONSHIPS(path) AS all_relationships

    这将返回关系路径上的所有关系的列表。

4.结语

        本文对Neo4j中的CQL语句和CQL函数进行了概念介绍和用例罗列,下一篇Neo4j系列文章将向大家展示我自己日常项目中积累的Neo4j中的工具类(结合Spring Boot),以及具体使用场景,喜欢这一系列内容的同学动动小手点点关注吧~

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

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

相关文章

面试高频 牛群的位置排序---搜索插入位置

题目描述 农场里有一群牛&#xff0c;每头牛都有一个标签值&#xff0c;这些标签值组成一个升序排列的数组 labels。现在农场主想知道&#xff0c;给定一个目标标签值 target&#xff0c;如果在牛群中存在这个标签&#xff0c;返回它的位置&#xff0c;如果不存在&#xff0c;…

vscode 配置opengl (glut), lib链接可参考

这里假定你已经配置好基础的vscode c环境 json介绍 这里其实主要配置的3种json, vscode其实就是通过launch.json和tasks.json来自动生成指令的 launch.json 这个用于启动程序用的&#xff0c;但是由于其可以指定preLaunchTask-即在启动之前需要做什么事情&#xff0c;所以这…

白嫖阿里云DSW做AI绘画的几点技巧(老鸟参考,新手免入)

白嫖方法就不说了&#xff0c;选择A10显卡或者V100显卡&#xff0c;能画些图&#xff0c;还能用三个月。可以感受一下顶级显卡的速度&#xff0c;当生产力工具肯定是不行的&#xff0c;毕竟5000个使用量用起来很快的。 问题一&#xff1a; 镜像版本选择-官方提供二个镜像&…

Unity笔记:C#基础(1)

杂项 虚函数 CSDN - C虚函数详解 cnblog - C#中的虚函数virtual 常量池与new 在C#中&#xff0c;string是不可变的&#xff0c;这意味着对string对象的操作通常会返回一个新的string对象&#xff0c;而不会修改原始的string对象。因此&#xff0c;几乎所有涉及更改string内…

鞋服品牌怎样合理把控订货深度和宽度

在鞋服品牌的运营管理中&#xff0c;订货深度和宽度是两个至关重要的概念。订货深度指的是某一款式或规格的产品数量&#xff0c;而订货宽度则代表品牌所涵盖的产品种类和款式。合理把控订货深度和宽度对于品牌的库存管理、销售情况以及顾客满意度都有着深远的影响。本文将探讨…

【牛客】VL74 异步复位同步释放

描述 题目描述&#xff1a; 请使用异步复位同步释放来将输入数据a存储到寄存器中&#xff0c;并画图说明异步复位同步释放的机制原理 信号示意图&#xff1a; clk为时钟 rst_n为低电平复位 d信号输入 dout信号输出 波形示意图&#xff1a; 输入描述&#xff1a; clk为时…

许多人可能还不了解这个信息差:美赛的第一批 EI 已经录用,不用再犹豫啦

格局打开&#xff0c;美赛论文转学术论文发表 &#x1f680;&#x1f680; 各位同学&#xff0c;美赛已经结束了一段时间&#xff0c;你们是否还在焦急地等待最终成绩的公布&#xff1f;一些有远见的同学已经提前收到了一份喜讯&#xff1a;他们的美赛论文已被转化为学术论文并…

CPU设计实战-加载和存储指令(2)

目录 一 ll和sc指令说明 二 ll和sc指令的实现 1 llbit寄存器 2 译码阶段 3 访存阶段 4 Load相关问题 5 流水线在取指阶段暂停 本章介绍两个比较特殊的加载存储指令ll和sc&#xff0c;这两个指令的存在用于实现信号量机制。 信号量机制&#xff1a;在多线程中为了保证某个…

smplx pkl格式可视化

smplx pkl格式可视化 import glob import os import pickleimport torch import numpy as npfrom smplpytorch.pytorch.smpl_layer import SMPL_Layer from display_utils import display_model, display_model_continuousfrom matplotlib import pyplot as plt from matplotl…

社区服务类创业项目推荐:抓住社区商业新机遇

大家好&#xff0c;我是一名90后鲜奶吧创业者&#xff0c;目前在社区经营5年时间&#xff0c;今天我想和大家分享一些关于社区服务类创业项目的推荐&#xff0c;都是这么多年我见证过生意最好的店面。 1、社区便利店&#xff1a; 随着人们生活节奏的加快&#xff0c;对便利购…

【Linux实践室】Linux常用命令:文件操作|文件夹操作

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;Linux实践室、网络奇遇记 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 一. ⛳️任务描述二. ⛳️相关知识2.1 &#x1f514;Linux文件操作2.1.1 &#x1f47b;创建文件2…

2024年第二届智能制造与自动化前沿国际会议 | Ei、Scopus双检索

会议简介 Brief Introduction 2024年第二届智能制造与自动化前沿国际会议&#xff08;CFIMA 2024&#xff09; 会议时间&#xff1a;2024年8月23 -25日 召开地点&#xff1a;中国包头 大会官网&#xff1a;www.cfima.org 随着全球新一轮科技革命和产业变革突飞猛进&#xff0c;…

Java Web开发---复试Tips复习

***********&#xff08;自用&#xff0c;摘录自各种文章和自己总结&#xff09;********** 小知识点理解 Web Web应用开发主要是基于浏览器的应用程序开发。一个Web应用由多部分组成 java web就是用java语言开发出可在万维网上浏览的程序 Web应用程序编写完后&#xff0c;…

ES分布式搜索-IK分词器

ES分词器-IK 1、为什么使用分词器&#xff1f; es在创建倒排索引时需要对文档分词&#xff1b;在搜索时&#xff0c;需要对用户输入内容分词。但默认的分词规则对中文处理并不友好。 我们在kibana的DevTools中测试&#xff1a; GET /_analyze {"analyzer": "…

day37 贪心算法part6

738. 单调递增的数字 中等 提示 当且仅当每个相邻位数上的数字 x 和 y 满足 x < y 时&#xff0c;我们称这个整数是单调递增的。 给定一个整数 n &#xff0c;返回 小于或等于 n 的最大数字&#xff0c;且数字呈 单调递增 。 不知道怎么讲思路……以9287举例&#xff0c;…

AntV L7的pointLayer点图层

本案例使用L7库和Mapbox GL JS创建点数据并加载进地图。 文章目录 1. 引入 CDN 链接2. 引入组件3. 创建地图4. 创建场景5. 创建点数据5.1. 普通 json 数据5.2. geojson 数据 6. 创建点图层6.1. 普通 json 数据6.2. geojson 数据 7. 演示效果8. 代码实现 1. 引入 CDN 链接 <s…

【网络连接】ping不通的常见原因+解决方案,如何在只能访问网关时诊断,并修复IP不通的问题

【网络连接】ping不通的常见原因解决方案&#xff0c;如何在只能访问网关时诊断&#xff0c;并修复IP不通的问题 写在最前面网络基础可能的问题、表现以及解决方案如何诊断和解决操作步骤 详细问题描述详细解决方案1. 防火墙或安全软件拦截2. IP配置错误3. 网络设备问题4. 物理…

面试官问:生成订单30分钟未支付,则自动取消,该怎么实现

今天给大家上一盘硬菜&#xff0c;并且是支付中非常重要的一个技术解决方案&#xff0c;有这块业务的同学注意自己试一把了哈&#xff01; 在开发中&#xff0c;往往会遇到一些关于延时任务的需求。例如 生成订单30分钟未支付&#xff0c;则自动取消 生成订单60秒后,给用户发短…

论文翻译:一种基于强化学习的车辆队列控制策略,用于减少交通振荡中的能量消耗

A Reinforcement Learning-Based Vehicle Platoon Control Strategy for Reducing Energy Consumption in Traffic Oscillations 一种基于强化学习的车辆队列控制策略&#xff0c;用于减少交通振荡中的能量消耗 文章目录 A Reinforcement Learning-Based Vehicle Platoon Cont…

QT中的信号和槽

信号和槽概述 在 Qt 中&#xff0c;用户和控件的每次交互过程称为⼀个事件。比如 “用户点击按钮” 是⼀个事件&#xff0c;“用户关闭窗口” 也是⼀个事件。每个事件都会发出⼀个信号&#xff0c;例如用户点击按钮会发出 “按钮被点击” 的信号&#xff0c;用户关闭窗口会发出…