【Neo4j教程之CQL命令基本使用】

news2024/12/24 20:57:27

在这里插入图片描述

🚀 Neo4j 🚀

🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀
🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨
🌲 作者简介:硕风和炜,CSDN-Java领域优质创作者🏆,保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享💎💎💎
🌲 恭喜你发现一枚宝藏博主,赶快收入囊中吧🌻
🌲 人生如棋,我愿为卒,行动虽慢,可谁曾见我后退一步?🎯🎯

🚀 Neo4j 🚀

在这里插入图片描述
在这里插入图片描述

🍔 目录

    • 🌟 Neo4j的CQL详细使用教程
    • 🚩 Neo4j官方CQL手册
    • 🌟 CQL 基本语法
      • 🥗 创建节点
      • 🥗 创建关系
      • 🥗 查询节点
      • 🥗 修改节点
      • 🥗 DELETE命令
        • 🍗 CQL中的DELETE基本语法
        • 🍗 CQL案例演示
          • 🌭 案例一:删除节点
          • 🌭 案例二:删除一类节点
          • 🌭 案例三:删除关系
          • 🌭 案例四:批量删除
      • 🥗 REMOVE命令
        • 🍗 CQL中的REMOVE基本语法
        • 🍗 CQL案例演示
          • 🌭 案例一:移除节点属性
          • 🌭 案例二:移除节点列表属性
      • 🥗 ORDER BY排序
      • 🥗 UNION合并
        • 🍗 UNION合并命令的语法
        • 🍗UNION合并命令的案例演示
          • 🌭 案例一:合并两个查询结果集
          • 🌭 案例二:合并多个查询结果集
          • 🌭 案例三:合并多个关系查询结果集
      • 🥗 UNION ALL子句
        • 🍗 UNION ALL合并命令的语法
        • 🍗UNION ALL合并命令的案例演示
          • 🌭 案例一:合并两个查询结果集
          • 🌭 案例二:合并多个查询结果集
          • 🌭 合并多个关系查询结果集
      • 🥗 LIMIT和SKIP子句
        • 🍗 CQL中的LIMIT和SKIP基本语法
        • 🍗 CQL案例演示
          • 🌭 案例一:使用LIMIT和SKIP合并命令限制查询结果
          • 🌭 案例二:使用LIMIT和SKIP合并命令控制返回的关系
          • 🌭 案例三:使用组合LIMIT和SKIP合并命令实现分页
      • 🥗 Merge合并
        • 🍗 CQL中的MERGE基本语法
        • 🍗 CQL案例演示
          • 🌭 案例一:使用MERGE创建新节点
          • 🌭 案例二:使用MERGE更新现有节点
          • 🌭 案例三:使用MERGE创建或更新关系
      • 🥗 NULL值
      • 🥗 IN操作符
    • 🌟 总结
    • 💬 共勉

🌟 Neo4j的CQL详细使用教程

Neo4j是一款高度可伸缩的图形数据库,它使用Cypher查询语言处理图形数据。但是,Neo4j还可以使用CQL(Cypher Query Language)作为处理和查询数据的替代方式。本篇博客将介绍如何使用CQL查询语言在Neo4j中创建、修改和查询数据,以及一些常见的案例演示。
image.png

🚩 Neo4j官方CQL手册

Neo4j官方指导手册
在这里插入图片描述

🌟 CQL 基本语法

在学习CQL之前,有必要先学习一些基本的语法、键和操作符。

🥗 创建节点

要在Neo4j中创建一个节点,需要使用以下语法:

CREATE (node_name:label_type {property:value});

其中:

  • CREATE: 创建新节点。
  • node_name: 节点的名称。
  • label_type: 节点所属的标签类型。
  • property:value: 节点属性和值。

例如,要创建一个名为John的人员节点,具有名为age的属性和值为30的值,可以使用以下命令:

CREATE (John:Person { age: 30 });

如果要创建多个带有相同标签的节点,则可以使用以下语法:

CREATE (node_name_1:label_type {property:value}), (node_name_2:label_type {property:value}), ...;

例如,要创建两个分别名为JohnSandra的人员节点,都属于Person标签,可以使用以下命令:

CREATE (John:Person { age: 30 }), (Sandra:Person { age: 25 });

🥗 创建关系

在Neo4j中,关系是将两个节点连接在一起的东西。要在Neo4j中创建关系,需要使用以下语法:

CREATE (node_name_1:label_type)-[:relationship_type {property:value}]->(node_name_2:label_type);

其中:

  • node_name_1: 路径的开始节点。
  • label_type: 开始节点的标签类型。
  • relationship_type: 路径的关系类型。
  • property:value: 关系属性和值。

例如,要在两个已经创建的节点之间创建FRIENDS_WITH关系,可以使用以下命令:

MATCH (node1:Person {name: "John"}), (node2:Person {name: "Sandra"})
CREATE (node1)-[:FRIENDS_WITH {years:3}]->(node2);

🥗 查询节点

要在Neo4j中查询节点,需要使用以下语法:

MATCH (node_name:label_type) WHERE node_name.property = value RETURN node_name;

其中:

  • MATCH: 匹配查询模式。
  • node_name: 匹配节点的名称。
  • label_type: 匹配节点所属标签类型。
  • WHERE: 匹配额外的条件。
  • property: 节点属性。
  • value: 节点属性的值。
  • RETURN: 返回匹配到的结果。

例如,要查询某条关系的节点,可以使用以下命令:

MATCH (:Person {name: "John"})-[:FRIENDS_WITH]->(p:Person) RETURN p;

🥗 修改节点

要在Neo4j中修改节点信息,需要使用以下语法:

MATCH (node_name:label_type {property:value}) SET node_name.new_property = new_value;

其中:

  • MATCH: 匹配查询模式。
  • node_name: 匹配节点的名称。
  • label_type: 匹配节点所属标签类型。
  • property: 节点属性。
  • value: 节点属性的值。
  • SET: 设置节点的新属性。
  • new_property: 节点新的属性。
  • new_value: 节点新属性的值。

例如,要更改John节点的年龄属性为40,可以使用以下命令:

MATCH (p:Person {name: 'John'})
SET p.age = 40
RETURN p;

🥗 DELETE命令

在Neo4j的CQL(Cypher Query Language)中,DELETE命令是用于删除节点和关系的重要命令。本篇博客将介绍如何使用DELETE命令在Neo4j中删除数据,以及一些实际的案例演示。

🍗 CQL中的DELETE基本语法

要在Neo4j中删除节点和关系,您可以使用以下语法:

MATCH (node_name:label_type {property:value}) OPTIONAL MATCH (node_name)-[relation:relationship_type]-()
DELETE node_name, relation;

其中:

  • MATCH: 匹配查询模式。
  • node_name: 匹配节点的名称。
  • label_type: 匹配节点所属标签类型。
  • property: 节点属性。
  • value: 节点属性的值。
  • OPTIONAL MATCH: 连接可选的查询模式。
  • relationship_type: 查询模式中的关系类型。
  • relation: 匹配的关系。
  • DELETE: 删除匹配的节点和关系。

例如,要删除节点名称为JanePerson节点和连接至该节点的所有关系,可以使用以下命令:

MATCH (p:Person {name: 'Jane'})
OPTIONAL MATCH (p)-[r]-()
DELETE p, r;

这将删除节点p以及与之相关的所有关系。

🍗 CQL案例演示

接下来,我们将介绍一些关于使用CQL进行删除的实际案例。

🌭 案例一:删除节点

假设我们要删除一个标签类型为Person的节点。以下是删除节点操作的示例代码:

MATCH (p:Person {name: 'John'})
OPTIONAL MATCH (p)-[r]-()
DELETE p, r;

这将删除名为JohnPerson节点及其连接的关系。

🌭 案例二:删除一类节点

假设我们要删除标签类型为Person的所有节点。以下是删除所有Person节点及其关系的示例代码:

MATCH (p:Person)
OPTIONAL MATCH (p)-[r]-()
DELETE p, r;

这将删除所有标签类型为Person的节点及其与之关联的关系。

🌭 案例三:删除关系

此时,我们要删除John节点和Sandra节点之间的FRIENDS_WITH关系。以下是删除指定关系的示例代码:

MATCH (:Person {name: "John"})-[r:FRIENDS_WITH]-(:Person {name: "Sandra"})
DELETE r;

这将删除JohnSandra节点之间的FRIENDS_WITH关系。

🌭 案例四:批量删除

有时候,我们需要根据某些条件,对数据进行批量删除。例如,我们要删除所有Person节点的年龄小于30岁或超过40岁的节点。以下是示例代码:

MATCH (p:Person)
WHERE p.age < 30 OR p.age > 40
OPTIONAL MATCH (p)-[r]-()
DELETE p, r;

这将删除所有Person节点的年龄小于30岁或大于40岁的节点及其与之关联的所有关系。

🥗 REMOVE命令

🍗 CQL中的REMOVE基本语法

要在Neo4j中修改节点属性,可以使用以下语法:

MATCH (node_name:label_type {property:value})
REMOVE node_name.property_name;

其中:

  • MATCH: 匹配查询模式。
  • node_name: 匹配节点的名称。
  • label_type: 匹配节点所属标签类型。
  • property: 节点属性。
  • value: 节点属性的值。
  • REMOVE: 删除匹配节点的指定属性名及其值。

例如,要删除名为JohnPerson节点的age属性,可以使用以下命令:

MATCH (p:Person {name: 'John'})
REMOVE p.age;

这将删除名为JohnPerson节点的age属性。

🍗 CQL案例演示

接下来,我们将介绍一些关于使用CQL进行属性修改的实际案例。

🌭 案例一:移除节点属性

此时,我们要移除名为JohnPerson节点的age属性。以下是移除指定属性的示例代码:

MATCH (p:Person {name: 'John'})
REMOVE p.age;

这将删除名为JohnPerson节点的age属性。

🌭 案例二:移除节点列表属性

如果要删除节点上的列表属性中的某个元素,可以使用以下语法:

MATCH (n {name: 'Alice'})
REMOVE n.prop[index];

例如,在删除一个名为Alice节点上的列表属性prop的第二个元素时,可以使用以下命令:

MATCH (n {name: 'Alice'})
REMOVE n.prop[1];

这将删除节点nprop列表属性的第二个元素。

🥗 ORDER BY排序

CQL还提供了用于排序结果的功能。

  • 过滤条件可以使用WHERE语句指定,例如根据属性值过滤节点或关系。
  • 排序可以使用ORDER BY语句指定,例如按属性值对结果进行升序或降序排序。
MATCH (node:Label)
WHERE node.property = value
RETURN node
ORDER BY node.property ASC|DESC

🥗 UNION合并

UNION合并命令是CQL中的一种关键字,它将两个或多个相同类型的查询结果合并成一个结果集返回给用户。UNION合并命令通常用于将多个子查询的结果集合并为一个完整的结果集,并对这些结果进行排序和筛选。

🍗 UNION合并命令的语法

MATCH (n:Label)
WHERE n.property = 'value'
RETURN n.property
UNION 
MATCH (m:Label)
WHERE m.property = 'other_value'
RETURN m.other_property
ORDER BY n.property DESC

🍗UNION合并命令的案例演示

假设我们有一个图,其中包含了多个节点和关系,我们需要查询这个图中与“Tom”节点和“Jerry”节点相连的所有节点,并将结果用UNION合并命令合并起来。

🌭 案例一:合并两个查询结果集

假设我们需要查询两个标签类型为Person的节点集合,并将它们合并为一个结果集。以下是合并两个查询结果集的示例代码:

MATCH (p:Person)
WHERE p.age > 30
RETURN p.name
UNION
MATCH (p:Person)
WHERE p.gender = 'male'
RETURN p.name;

这将返回age大于30岁和性别为male的所有人的名称,其中重复的结果会被合并成一个结果。

🌭 案例二:合并多个查询结果集

如果我们想从多个标签类型为Person的节点集合中检索信息,比如想查看所有age超过40岁或者性别为female的人。以下是合并多个查询结果集的示例代码:

MATCH (p:Person)
WHERE p.age > 40
RETURN p.name
UNION
MATCH (p:Person)
WHERE p.gender = 'female'
RETURN p.name
UNION
MATCH (p:Person)
WHERE p.nationality = 'USA'
RETURN p.name;

这将返回满足年龄、性别和国籍条件的所有人的名称,其中重复的结果会被合并成一个结果。

🌭 案例三:合并多个关系查询结果集

此时,我们想要找到与特定节点相关联的所有朋友和家庭成员。以下是基于关系合并多个查询结果集的示例代码:

MATCH (n:Person {name: 'John'})-[:FRIENDS_WITH]->(f)
RETURN f.name
UNION
MATCH (n:Person {name: 'John'})-[:IS_FAMILY_OF]->(f)
RETURN f.name;

这将返回名称为John的Person节点的朋友和家庭成员名称。

🥗 UNION ALL子句

在Neo4j的CQL(Cypher Query Language)中,UNION ALL是一种用于合并多个查询结果集的关键字,它与UNION的区别是它不会合并重复的结果。本篇博客将介绍如何使用UNION ALL命令在Neo4j中合并多个查询结果集,以及一些实际的案例演示。

🍗 UNION ALL合并命令的语法

要在Neo4j中将多个查询结果集合并,可以使用以下语法:

QUERY1
UNION ALL
QUERY2
UNION ALL
QUERY3
...

其中,QUERY1,QUERY2,QUERY3等都是要合并的查询语句,UNION ALL命令用于合并这些查询结果集并返回一个整体的结果集,不去除任何重复的结果。

🍗UNION ALL合并命令的案例演示

接下来,我们将介绍一些使用CQL进行结果集合并的实际案例。

🌭 案例一:合并两个查询结果集

假设我们需要查询两个标签类型为Person的节点集合,并将它们合并为一个结果集。以下是合并两个查询结果集的示例代码:

MATCH (p:Person)
WHERE p.age > 30
RETURN p.name AS name
UNION ALL
MATCH (p:Person)
WHERE p.gender = 'male'
RETURN p.name AS name;

这将返回age大于30岁和性别为male的所有人的名称,没有去除任何重复的结果。

🌭 案例二:合并多个查询结果集

如果我们想从多个标签类型为Person的节点集合中检索信息,比如想查看所有age超过40岁或者性别为female的人。以下是合并多个查询结果集的示例代码:


MATCH (p:Person)
WHERE p.age > 40
RETURN p.name AS name
UNION ALL
MATCH (p:Person)
WHERE p.gender = 'female'
RETURN p.name AS name
UNION ALL
MATCH (p:Person)
WHERE p.nationality = 'USA'
RETURN p.name AS name;

这将返回满足年龄、性别和国籍条件的所有人的名称,并将它们合并为一个结果集,没有去除任何重复的结果。

🌭 合并多个关系查询结果集

此时,我们想要找到与特定节点相关联的所有朋友和家庭成员。以下是基于关系合并多个查询结果集的示例代码:

MATCH (n:Person {name: 'John'})-[:FRIENDS_WITH]->(f)
RETURN f.name AS name
UNION ALL
MATCH (n:Person {name: 'John'})-[:IS_FAMILY_OF]->(f)
RETURN f.name AS name;

这将返回名称为John的Person节点的朋友和家庭成员名称,并将它们合并为一个结果集,没有去除任何重复的结果。

🥗 LIMIT和SKIP子句

在Neo4j的CQL(Cypher Query Language)中,LIMITSKIP是两个用于控制查询结果集返回的子句,可以被组合在一起使用来限制查询的结果。本篇博客将介绍如何使用LIMITSKIP子句合并命令来控制查询结果集的返回顺序,以及一些实际的案例演示。

🍗 CQL中的LIMIT和SKIP基本语法

要在Neo4j中限制查询结果集返回的数量,可以使用以下语法:

MATCH (n)
RETURN n.property
LIMIT n
SKIP m

其中,n表示要返回的结果集数量,m表示要跳过的结果集数量。使用LIMITSKIP子句时,返回的结果集将会是从跳过指定数量的结果集之后的前n个结果集。

🍗 CQL案例演示

接下来,我们将介绍一些使用CQL进行结果集控制的实际案例。

🌭 案例一:使用LIMIT和SKIP合并命令限制查询结果

假设我们需要查询标签类型为Person的节点集中年龄大于30岁的前5个结果。以下是限制查询结果的示例代码:

MATCH (p:Person)
WHERE p.age > 30
RETURN p.name AS name
ORDER BY p.age DESC
SKIP 0
LIMIT 5;

这将返回年龄大于30岁的前5个人的名称,并按照年龄降序排序。

🌭 案例二:使用LIMIT和SKIP合并命令控制返回的关系

假设我们需要查询与标签类型为Person的节点集中Tom节点相邻的所有节点,并且我们想返回这些节点的前3个结果。以下是控制返回关系的示例代码:

MATCH (n:Person { name: "Tom" })--(m)
RETURN m.name AS name
LIMIT 3;

这将返回与名称为Tom的Person节点相邻的前3个节点的名称。

🌭 案例三:使用组合LIMIT和SKIP合并命令实现分页

假设我们希望为查询结果分页,每页显示5个结果集,我们可以使用组合LIMITSKIP子句的方法实现分页。以下是对查询结果分页的示例代码:

MATCH (p:Person)
WHERE p.age > 30
RETURN p.name AS name, p.age AS age
ORDER BY p.age DESC
SKIP 5
LIMIT 5;

这将返回年龄大于30岁的结果中的第二页(跳过前5个结果集)中的前5个结果,以姓名和年龄的形式呈现。

🥗 Merge合并

在Neo4j的CQL(Cypher Query Language)中,MERGE是一种用于创建或更新节点和关系的关键字。它可以用于合并现有的节点和关系,也可以用于创建新的节点和关系。本篇博客将介绍如何使用MERGE子句合并命令来创建或更新节点和关系的操作,以及一些实际的案例演示。

🍗 CQL中的MERGE基本语法

要在Neo4j中使用MERGE子句创建或更新节点和关系,可以使用以下语法:

MERGE (n:Node { property: value })
ON CREATE SET n.property_1 = value_1, n.property_2 = value_2, ...
ON MATCH SET n.existing_property = value

其中,n表示要创建或更新的节点,Node表示节点的标签,property表示节点的属性,value表示属性的值。ON CREATEON MATCH子句分别表示在创建和更新节点时设置属性的值。

🍗 CQL案例演示

接下来,我们将介绍一些使用CQL进行节点和关系处理的实际案例。

🌭 案例一:使用MERGE创建新节点

假设我们要在名称为Person的节点集合中创建一个名为Tom的新节点,并将它的年龄设置为28岁。以下是创建新节点的示例代码:

MERGE (p:Person {name: 'Tom'})
ON CREATE SET p.age = 28;

这将在名称为Person的节点集合中创建一个名为Tom的新节点,并将它的属性age设置为28岁。

🌭 案例二:使用MERGE更新现有节点

假设我们要更新名称为Person的节点集合中名称为Tom的节点的属性age29岁。以下是更新现有节点的示例代码:

MERGE (p:Person {name: 'Tom'})
ON MATCH SET p.age = 29;

这将查询名称为Person的节点集合中名称为Tom的节点,如果它已经存在,则更新它的age属性为29岁。

🌭 案例三:使用MERGE创建或更新关系

此时,我们想要查找标志为Person的节点集合中的两个节点之间是否存在关系FRIENDS_WITH,如果不存在,则创建这个关系。以下是创建或更新关系的示例代码:

MATCH (p:Person {name: 'Tom'}), (q:Person {name: 'Jerry'})
MERGE (p)-[r:FRIENDS_WITH]->(q)
ON CREATE SET r.type = 'friendship', r.since = '2020'
ON MATCH SET r.type = 'friendship';

这将在节点TomJerry之间创建一个带有类型和时间戳的FRIENDS_WITH关系。如果已经存在该关系,则只更新它的type属性。

注意:
可以使用MERGE命令来查找现有的节点和关系,如果它们不存在,则创建它们;如果它们已经存在,则更新它们的属性。读者可以用这些命令来创建新节点和关系,更新现有节点和关系,在节点集合中搜索和处理数据。相信通过本篇博客的学习,读者已经能够熟练使用CQL中的MERGE子句合并命令了。

🥗 NULL值

  • Neo4j CQL将空值视为对节点或关系的属性的缺失值或未定义值。

  • 当我们创建一个具有现有节点标签名称但未指定其属性值的节点时,它将创建一个具有NULL属性值的新节点。

  • 还可以用null 作为查询的条件。

🥗 IN操作符

与SQL一样,Neo4j CQL提供了一个IN运算符,以便为CQL命令提供值的集合。

IN [<Collection-of-values>]

案例:

MATCH (e:Employee) 
WHERE e.id IN [12,34]
RETURN e.id,e.name,e.sal,e.deptno

🌟 总结

本篇博客向读者介绍了CQL基本语法,包括创建节点、创建关系、查询节点、修改节点等基础操作。相信通过本篇博客的学习,读者已经掌握了如何在Neo4j中使用CQL进行数据处理和查询。

💬 共勉

最后,我想和大家分享一句一直激励我的座右铭,希望可以与大家共勉!

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

Python基础篇(二):入门基础必备知识

Python基础篇(一)&#xff1a;如何使用PyCharm创建第一个Python项目(包含tools) 入门基础必备知识 1. 标识符2. 关键字2.1 关键字字典 3. 引号3.1 表示字符串3.2 在字符串中使用引号3.3 创建多行字符串3.4 在注释中使用引号 4. 编码5. 输入输出5.1 输入示例5.2 输出示例5.3 格…

王道计算机网络学习笔记(3)——数据链路层

前言 文章中的内容来自B站王道考研计算机网络课程&#xff0c;想要完整学习的可以到B站官方看完整版。 三&#xff1a;数据链路层 3.1&#xff1a;数据链路层功能概述 结点&#xff1a;主机、路由器 链路&#xff1a;网络中两个结点之间的物理通道&#xff0c;链路的传输介…

PolarFormer:Multi-camera 3D Object Detection with Polar Transformer——论文笔记

参考代码&#xff1a;PolarFormer 1. 概述 介绍&#xff1a;在仓库RoboBEV中总结了现有的一些bev感知算法在不同输入情况下的鲁棒性&#xff0c;在这些感知算法中PolarFormer拥有较为不错的泛化性能。这个算法的思想是将之前由直角坐标系栅格化构建bev网格&#xff0c;转换到由…

Unity之透明度混合与ps的透明度混合计算结果不一致

一、问题 前段时间学习shader时发现了一个问题&#xff0c;一张纯红色透明度为128的图片叠加在一张纯绿色的图片上得出的结果与ps中的结果不一致。网上查找了ps中的透明混合的公式为 color A.rgb*A.alpha B.rgb*(1-A.alpha)。自己使用代码在unity中计算了一下结果总是不对。…

Python--异常处理

Python--异常处理 <font colorblue>一、异常<font colorblue>二、异常处理语句<font colorblue>1、try...except语句<font colorblue>2、try...except...else语句<font colorblue>3、try...except...finally语句<font colorblue>4、raise语…

leetcode354. 俄罗斯套娃信封问题(动态规划-java)

俄罗斯套娃信封问题 leetcode354. 俄罗斯套娃信封问题题目描述:解题思路代码演示 动态规划专题 leetcode354. 俄罗斯套娃信封问题 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;https://leetcode.cn/problems/russian-doll-envelopes 题目描述: 给你…

c++学习之模板

目录 一&#xff0c;模板的概述 二&#xff0c;函数模板 1.函数模板的定义 2.函数模板的注意事项 3.函数模板的重载 4.函数模板的局限性 三&#xff0c;类模板 1.类模板的概念 2.类模板定义方式 3.类模板的成员函数在类外实现 4.函数模板作为类模板的友元 5.在写程…

《大学英语4》期末考试复习(一)听力原文+答案速记

目录 Unit 1 Long conversation Passage 1 Unit 2 Long conversation Passage 1 Unit 3 Long conversation Passage 1 Unit 4 Long conversation Passage 1 Unit 5 Long conversation Passage 1 Unit 6 Long conversation Passage 1 Unit 7 Long conversat…

Java线程池小结

目录 一.什么是线程池 二.线程池的好处是什么 三.四种基本线程池及其使用 newCachedThreadPool newFixedThreadPool newScheduledThreadPool newSingleThreadExecutor 线程池的四种拒绝策略 选择一:AbortPolicy 选择二:CallerRunsPolicy 选择三:DiscardPolicy 选择四…

【Java】Java核心要点总结70

文章目录 1. volatile 如何保证变量的可⻅性&#xff1f;2. volatile 可以保证原⼦性么&#xff1f;3. synchronized 关键字4. synchronized 和 volatile 的区别5. synchronized 和 ReentrantLock 的区别 1. volatile 如何保证变量的可⻅性&#xff1f; 在Java中&#xff0c;使…

html实现多种风格的时间轴(附源码)

文章目录 1.设计来源1.1 对称风格时间轴1.2 横向风格时间轴1.3 回忆风格时间轴1.4 记事风格时间轴1.5 简易风格时间轴1.6 科技风格时间轴1.7 列表风格时间轴1.8 跑道风格时间轴1.9 人物风格时间轴1.10 容器风格时间轴1.11 沙滩风格时间轴1.12 双边风格时间轴1.13 图文风格时间轴…

【verilog基础】时钟无毛刺切换电路 Clock Glitch Free

文章目录 一、时钟切换电路:容易产生毛刺二、时钟无毛刺切换电路:在S端增加一些控制通路三、异步时钟无毛刺切换电路:使用同步电路解决亚稳态问题四、真题题目解答一、时钟切换电路:容易产生毛刺 1、在芯片运行时经常需要切换时钟源,通常的实现方式是:通过mux来选择不同的…

用试题这把“剑“帮你破除指针与数组之间的那些猫腻

作者主页&#xff1a;paper jie的博客_CSDN博客-C语言,算法详解领域博主 本文作者&#xff1a;大家好&#xff0c;我是paper jie&#xff0c;感谢你阅读本文&#xff0c;欢迎一建三连哦。 本文录入于《系统解析C语言》专栏&#xff0c;本专栏是针对于大学生&#xff0c;编程小白…

【linux】在Linux系统开机的时候卡在/dev/nvme0n1p1:clean / files / blocks界面进不去

一、问题背景 开机的时候没办法开机&#xff0c;一直停留在下面这个界面。 x86/cpu: SGX disabled by BIOS dev/nvme0n1p3:clean, 21118/30523392 fies, 122066176/122070272 blocks dev/nvme0n1p4:clean, 486125/61038592 fies,21657184/244140544b1ocks 试过网上的一些方法…

Ubuntu20.04+Intel SGX(一):环境安装与测试

文章目录 测试环境一、检查服务器是否支持SGX方法1&#xff1a;cpuid查看是否支持SGX方法2&#xff1a;test-sgx.c测试是否支持SGX验证是否支持SPS 二、启动 SGX 服务参考文档启动 SGX方法1&#xff1a;BIOS 启动SGX方法2&#xff1a;软启动 SGX检查SGX是否开启成功 三、安装 S…

C++在线五子棋对战(网页版)项目:环境搭建

Centos-7.6环境搭建 安装wget工具 wget工具是Linux中的一个下载文件的工具&#xff0c;支持通过 HTTP、HTTPS、FTP 三个最常见的TCP/IP协议 下载&#xff0c;并可以使用 HTTP 代理。可以使用以下命令进行下载&#xff1a; sudo yum install wget 下载后&#xff0c;可以使用以…

【Linux】CentOS7 设定本机当前地区时间为虚拟机时间的简单操作

目录 情景系统环境操作 情景 新安装的虚拟机时间和当前本地系统时间不一致&#xff0c;现在想要将虚拟机和本机地区的时间调节为一致。 系统环境 CentOS Linux 7 系统界面大致如此。 操作 点击虚拟机界面左上角的 Applications 选项&#xff0c; 选择System-Tools-- Sett…

【C++】C++关于异常的学习

文章目录 C语言传统的处理错误的方式一、异常的概念及用法二、自定义异常体系总结 C语言传统的处理错误的方式 传统的错误处理机制&#xff1a; 1. 终止程序&#xff0c;如 assert &#xff0c;缺陷&#xff1a;用户难以接受。如发生内存错误&#xff0c;除 0 错误时就会终止…

【Python】元组 创建 访问 切片 拼接 解包

2.3 元组 元组在输出时总是有括号的。 元组在输入时可以没有。 像字符串一样&#xff0c;元组是不可变的。 索引、切片以及一些方法很多与列表相似。 1&#xff09;定义 元组是一种不可变序列&#xff0c;它与列表类似&#xff0c;但元组的元素不能修改。元组中的元素可以是任意…

【Vuejs】1720- 详细聊一聊 Vue3 动态组件

&#x1f449; 「相关文章」 深入浅出 Vue3 自定义指令6 个你必须明白 Vue3 的 ref 和 reactive 问题初中级前端必须掌握的 10 个 Vue 优化技巧分享 15 个 Vue3 全家桶开发的避坑经验 动态组件[1]是 Vue3 中非常重要的一个组件类型&#xff0c;它可以让我们在不同的场景下灵活地…