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

neo4j 图数据库:Cypher 查询语言、医学知识图谱

neo4j 图数据库:Cypher 查询语言、医学知识图谱

    • Cypher 查询语言
      • 创建数据
      • 查询数据
        • 查询并返回所有节点
        • 查询并返回所有带有特定标签的节点
        • 查询特定属性的节点及其所有关系和关系的另一端节点
        • 查询从名为“小明”的节点到名为“小红”的节点的路径
      • 更新数据
        • 更新一个节点的属性
        • 添加新属性
        • 更新关系的属性
      • 删除数据
        • 删除节点
        • 删除关系
        • 删除属性
      • 三元组导入知识图谱
        • 对于 `kg_triples_small.txt`
        • 对于 `CPubMed-KGV_1.1.txt`
        • 深度级联查询 - 获取全面的症状-疾病网络
      • Python 交互 Neo4j
        • 步骤 1: 安装 Neo4j Python 驱动程序
        • 步骤 2: 建立连接
        • 步骤 3: 执行查询
        • 步骤 4: 处理事务
        • 步骤 5: 关闭驱动
      • 查询性能优化
        • 使用索引
        • 合理使用标签
        • 优化Cypher查询
        • 使用参数化查询
        • 使用更高效的查询模式
        • 监控和分析查询性能

 


Cypher 查询语言

Cypher 是 neo4j 查询语言。

以下列举一些最少必要知识,能用就行。

其他用法,可以问大模型。

创建数据

CREATE (n:User {name:"小明", age:18}) RETURN n
# 创建一个属性为 name:"小明" 和 age:18 的 User 类型的节点,并返回这个节点。CREATE (n:User {name:"小明"}) -[r:LOVE{time:"一万年"}]-> (m:User{name:"小红"}) return n,r,m
# 创建了两个用户节点:小明 和 小红。它还创建了一个从 小明 指向 小红 的 LOVE 类型的关系,并设置了属性 time:"一万年"。该命令返回这两个节点以及他们之间的关系。CREATE (n:User {name:"小明"}) <-[r:LOVE{time:"一万年"}]- (m:User{name:"小红"}) return n,r,m
# 与第二条命令类似,但关系的方向相反。

在 Cypher 查询语言中,用于图数据库操作的特定符号有特殊意义,这里对您提到的符号进行详细解释:

  1. {}(花括号):

    花括号用于定义节点或关系的属性。

    在创建节点或关系时,花括号内可以包含一系列的键值对,键与值之间用冒号分隔。例如:

    CREATE (n:User {name: "小明", age: 18})
    

    这里 {name: "小明", age: 18} 定义了一个 User 类型的节点,具有 nameage 两个属性。

  2. :(冒号):
    冒号在 Cypher 中用于指定节点的标签或关系的类型。

    标签通常用来分类或标识不同的节点,而关系的类型用来描述节点之间的连接方式。

    例如:

    MATCH (n:User) -[:FRIEND]-> (m:User)
    

    这里 :User 表明 nmUser 类型的节点,而 :FRIEND 指明两者之间的关系类型为 FRIEND

  3. ->(箭头):
    箭头用于指明关系的方向。

    在图数据库中,关系可以是有向的,箭头显示了从一个节点指向另一个节点的路径。例如:

    CREATE (n) -[:LIKES]-> (m)
    

    这表示从节点 n 到节点 m 存在一个 LIKES 类型的关系,并且方向是从 n 指向 m

  4. ()(圆括号):

    圆括号用于围绕节点,并可与其他符号结合表示关系和属性。

    在定义节点时,圆括号内可以包含节点的变量名(可选)、标签(可选)和属性(可选)。例如:

    MATCH (n) -[:KNOWS]-> (m)
    

    这里 (n)(m) 分别代表图中的两个节点,通过 KNOWS 关系相连。

这些符号的组合使得 Cypher 查询语言能够直观地描述和操作图数据结构。

查询数据

这三个 Cypher 查询示例都是用来从图数据库中检索数据的:

查询并返回所有节点
MATCH (n) 
RETURN n
  • MATCH (n): 匹配图中的所有节点,这里 n 是节点的变量名,可以用来引用任何被匹配到的节点。
  • RETURN n: 返回所有匹配到的节点。
  • 注释:// 匹配并返回图中的所有节点
查询并返回所有带有特定标签的节点
MATCH (n:User) 
RETURN n
  • MATCH (n:User): 匹配图中所有标记为 User 的节点,:User 指定了节点的标签。
  • RETURN n: 返回所有带有 User 标签的节点。
  • 注释:// 查询并返回所有标为“User”的节点
查询特定属性的节点及其所有关系和关系的另一端节点
MATCH (n:User {name:"小明"}) -[r]- (m) 
RETURN n, r, m
  • MATCH (n:User {name:"小明"}) -[r]- (m): 匹配图中名为 “小明” 的 User 类型节点,并匹配该节点的所有关系 r 及关系的另一端节点 m。关系 [r] 没有指定方向,表示可以是任何方向。
  • RETURN n, r, m: 返回与名为 “小明” 的 User 节点有关系的所有节点和这些关系。写成 return * 等同
  • 注释:// 查询名为“小明”的用户节点及其所有关系和关联节点
查询从名为“小明”的节点到名为“小红”的节点的路径
MATCH path = (a:User {name: "小明"})-[*]->(b:User {name: "小红"})
RETURN path

这条查询的解释如下:

  • MATCH path = (a:User {name: "小明"})-[*]->(b:User {name: "小红"}): 这里定义了一个变量 path 来保存从“小明”到“小红”的路径。(a:User {name: "小明"})(b:User {name: "小红"}) 分别指定了起点和终点节点,而 [*] 表示路径中可以包含任意数量和类型的关系,并且是有方向的,从“小明”指向“小红”。
  • RETURN path: 返回找到的所有路径。

如果你想限制路径的长度,例如,查找最多经过3个关系的路径,可以修改查询如下:

MATCH path = (a:User {name: "小明"})-[*..3]->(b:User {name: "小红"})
RETURN path

这个修改使得查询只返回最多包含三个关系的路径。

这样的限制有助于避免在大图中执行过于复杂的查询,从而可能导致性能问题。

此外,如果你对路径的详细信息感兴趣,比如路径中每个节点和关系的具体属性,你可以展开路径的返回内容:

MATCH path = (a:User {name: "小明"})-[*]->(b:User {name: "小红"})
RETURN nodes(path) AS nodes, relationships(path) AS relationships

这将返回路径中的所有节点和关系,使得你能够获取更多关于路径的具体细节。

这些查询覆盖了从最基本的节点检索到更具体的带有条件和关系的检索,适合不同的查询需求。

在实际使用时,根据图的大小和复杂性,你可能需要考虑查询的效率和性能。

更新数据

在 Cypher 查询语言中,更新数据通常涉及修改节点或关系的属性。这些操作通过 SET 关键词来实现。下面,我会给出一些常见的更新数据的示例:

更新一个节点的属性

假设你想更新名为“小明”的用户的年龄。你可以使用以下Cypher命令:

MATCH (n:User {name: "小明"})
SET n.age = 20
RETURN n

这条命令的解释如下:

  • MATCH (n:User {name: "小明"}): 找到所有名为“小明”的 User 节点。
  • SET n.age = 20: 将这些节点的 age 属性设置为 20
  • RETURN n: 返回更新后的节点。
添加新属性

如果你想给“小明”添加一个新的属性,比如 email

MATCH (n:User {name: "小明"})
SET n.email = "xiaoming@example.com"
RETURN n

这将给“小明”节点添加一个 email 属性,并设其值为 “xiaoming@example.com”。

更新关系的属性

假设你想更新“小明”和“小红”之间 LOVE 关系的时间属性:

MATCH (a:User {name: "小明"})-[r:LOVE]->(b:User {name: "小红"})
SET r.time = "两万年"
RETURN a, r, b

这条命令的解释如下:

  • MATCH (a:User {name: "小明"})-[r:LOVE]->(b:User {name: "小红"}): 找到从“小明”到“小红”的 LOVE 类型的关系。
  • SET r.time = "两万年": 更新这个关系的 time 属性。
  • RETURN a, r, b: 返回更新后的节点和关系。

删除数据

在 Cypher 查询语言中,删除操作涉及到移除节点、关系、属性或整个图结构的一部分。

删除节点

要删除特定的节点,你需要先匹配到这个节点,然后使用 DELETE 命令。

需要注意的是,如果该节点还有任何关系,直接删除会失败,因为图数据库要求任何存在的关系都必须有明确的起点和终点。

如果你想删除一个节点及其所有关系,可以使用 DETACH DELETE

示例:删除名为“小红”的用户节点及其所有关系:

MATCH (n:User {name: "小红"})
DETACH DELETE n

这里,DETACH DELETE n 会删除匹配到的节点 n 及其所有关系。

删除关系

如果你想单独删除节点之间的关系而保留节点本身,可以匹配到这些关系然后删除它们。

示例:删除“小明”和“小红”之间的所有关系:

MATCH (a:User {name: "小明"})-[r]-(b:User {name: "小红"})
DELETE r

这条命令不会删除任何节点,只会删除两个用户之间的所有关系。

删除属性

你可以使用 REMOVE 命令来删除节点或关系上的某个属性。

示例:删除“小明”节点的 age 属性:

MATCH (n:User {name: "小明"})
REMOVE n.age
RETURN n

执行后,“小明”的节点将不再有 age 属性。

三元组导入知识图谱

对于 kg_triples_small.txt
  1. 检查数据格式

    • 确认每行是不是标准的三元组形式,例如 "主体, 关系, 宾体"
  2. 导入到Neo4j

    • 如果文件已经是CSV格式,直接使用如下Cypher命令导入:
      LOAD CSV FROM 'file:///path_to_kg_triples_small.csv' AS line
      MERGE (subject:Entity {name: line[0]})
      MERGE (object:Entity {name: line[2]})
      MERGE (subject)-[r:RELATION {type: line[1]}]->(object)
      
对于 CPubMed-KGV_1.1.txt

CPubMed-KGV_1.1.txt 格式有点特别。

是@@形式,这种和三元祖形式有差异,要怎么处理呢?

这种数据是人工做的标识文本,是分类,特有的设计模式,直接导入就可以了。

可以用llamaindex,可以直接导入,因为AI帮你处理了数据,就不用你手动写代码转csv。

深度级联查询 - 获取全面的症状-疾病网络

在医学领域,构建和查询症状与疾病之间的网络可以极大地帮助医生和研究人员理解疾病的复杂关系,从而改进诊断和治疗方法。

在这样的应用场景中,深度级联查询可以用来探索症状和疾病之间的多级关联,比如通过中间状态或其他相关症状/疾病来链接起始症状和目标疾病。

首先,我们需要构建一个图模型,其中包含两种基本类型的节点:Symptom(症状)和Disease(疾病)。

这些节点通过关系如INDICATES(表征)、LEADS_TO(导致)或ASSOCIATED_WITH(相关联)相连。

例如:

  • 症状A INDICATES 疾病B
  • 疾病B LEADS_TO 疾病C
  • 症状A ASSOCIATED_WITH 症状D

假设我们想要探索某个特定症状如何通过一系列其他症状和疾病最终可能导致某个具体疾病。

这种查询不仅有助于诊断,还能揭示潜在的病理路径。

MATCH path = (s:Symptom {name: "Persistent Cough"})-[:INDICATES|ASSOCIATED_WITH*1..4]->(d:Disease {name: "Lung Cancer"})
RETURN path

这里的查询做了以下几点:

  • 起始节点:症状节点,名为“Persistent Cough”(持续性咳嗽)。
  • 目标节点:疾病节点,名为“Lung Cancer”(肺癌)。
  • 关系类型和深度:通过INDICATES(表征)或ASSOCIATED_WITH(相关联)关系,探索从起始症状到目标疾病的所有可能路径,路径的深度从1到4级不等。
  • 返回:返回从“持续性咳嗽”可能导致“肺癌”的所有路径。

为了进一步探索可能的中间疾病和症状,可以扩展查询来包含更多的关系类型和节点:

MATCH path = (s:Symptom {name: "Persistent Cough"})-[:INDICATES|ASSOCIATED_WITH|LEADS_TO*1..6]->(d:Disease {name: "Lung Cancer"})
RETURN path

在这个查询中,添加了LEADS_TO关系,这表示疾病到疾病的直接影响,允许探索更长的病理路径。

Python 交互 Neo4j

在项目中,一般是Python中执行Cypher查询语句,从而操作Neo4j数据库中的数据,而不是直接对着 neo4j 操作。

步骤 1: 安装 Neo4j Python 驱动程序

首先,确保你已经安装了neo4j包。如果还未安装,可以通过pip安装:

pip install neo4j
步骤 2: 建立连接

你需要创建一个与Neo4j数据库的连接。通常这涉及到指定数据库的URL、用户名和密码。

from neo4j import GraphDatabaseuri = "bolt://localhost:7687"  # Neo4j实例的Bolt URL
username = "neo4j"
password = "your_password"driver = GraphDatabase.driver(uri, auth=(username, password))
步骤 3: 执行查询

通过定义一个函数来执行查询。这个函数使用一个驱动实例来运行Cypher查询并返回结果。

def get_user(driver, name):with driver.session() as session:result = session.run("MATCH (u:User {name: $name}) RETURN u", name=name)return [record["u"] for record in result]# 调用函数
user_data = get_user(driver, "小明")
print(user_data)
步骤 4: 处理事务

为了处理更复杂的业务逻辑,可以在会话中执行多个操作作为一个事务。

def create_friendship(driver, name1, name2):with driver.session() as session:session.write_transaction(lambda tx: tx.run("MATCH (a:User), (b:User) ""WHERE a.name = $name1 AND b.name = $name2 ""CREATE (a)-[:FRIENDS_WITH]->(b)", name1=name1, name2=name2))create_friendship(driver, "小明", "小红")
步骤 5: 关闭驱动

操作完成后,确保关闭驱动连接。

driver.close()

查询性能优化

在医学问诊的场景中,使用Neo4j来存储和查询有关疾病、症状、治疗方法及其相互关系的数据时,可以采取以下优化策略来提升查询性能。每个策略下将给出一个具体的例子:

使用索引

应用场景:快速查找特定症状或疾病的记录。
示例:为疾病的名称创建索引,以便快速启动诊断过程。

CREATE INDEX ON :Disease(name)
合理使用标签

应用场景:确保查询只涉及相关类型的节点,以减少查询范围。
示例:在查询涉及特定类型的节点时,使用合适的标签。

MATCH (s:Symptom)-[:INDICATES]->(d:Disease)
WHERE s.name = 'Headache'
RETURN d.name

在此例中,SymptomDisease 标签帮助数据库引擎快速定位和查询相关节点。

优化Cypher查询

应用场景:避免返回不必要的数据,减少数据传输。
示例:只返回需要的属性,而不是整个节点。

MATCH (p:Patient)-[:HAS_SYMPTOM]->(s:Symptom)
RETURN s.name

这里,只返回症状名称而非整个症状节点的所有属性。

使用参数化查询

应用场景:提高查询的重用性和安全性。
示例:使用参数化的方式来查询具有特定症状的所有患者。

MATCH (p:Patient)-[:HAS_SYMPTOM]->(s:Symptom {name: $symptomName})
RETURN p.name

参数 $symptomName 可以在运行时提供,这样同一查询可以用于不同的症状。

使用更高效的查询模式

应用场景:避免过于复杂的匹配模式,特别是在大型图中。
示例:使用较短的路径和限制结果集的大小来优化查询。

MATCH path = (s:Symptom {name: 'Fever'})-[:INDICATES*1..2]->(d:Disease)
RETURN d.name LIMIT 10

这里,路径长度限制为1到2跳,查询结果也限制为最多10个。

监控和分析查询性能

应用场景:识别和优化慢查询。
示例:使用PROFILE来分析查询并找出性能瓶颈。

PROFILE MATCH (p:Patient)-[:HAS_DISEASE]->(d:Disease)
WHERE d.name = 'Diabetes'
RETURN p.name

PROFILE 提供了关于查询如何执行的详细信息,包括每个操作的数据库命中次数和资源消耗。

通过应用这些策略,医学问诊系统的数据库查询可以更加快速和有效,从而提升系统的整体性能和用户体验。

相关文章:

neo4j 图数据库:Cypher 查询语言、医学知识图谱

neo4j 图数据库&#xff1a;Cypher 查询语言、医学知识图谱 Cypher 查询语言创建数据查询数据查询并返回所有节点查询并返回所有带有特定标签的节点查询特定属性的节点及其所有关系和关系的另一端节点查询从名为“小明”的节点到名为“小红”的节点的路径 更新数据更新一个节点…...

数据结构基础--------【二叉树基础】

二叉树基础 二叉树是一种常见的数据结构&#xff0c;由节点组成&#xff0c;每个节点最多有两个子节点&#xff0c;左子节点和右子节点。二叉树可以用来表示许多实际问题&#xff0c;如计算机程序中的表达式、组织结构等。以下是一些二叉树的概念&#xff1a; 二叉树的深度&a…...

数据开源 | Magic Data大模型高质量十万轮对话数据集

能够自然的与人类进行聊天交谈&#xff0c;是现今的大语言模型 (LLM) 区别于传统语言模型的重要能力之一&#xff0c;近日OpenAI推出的GPT-4o给我们展示了这样的可能性。 对话于人类来说是与生俱来的&#xff0c;但构建具备对话能力的大模型是一项不小的挑战&#xff0c;收集高…...

webpack之ts打包

tsconfig.json配置 // 是否对js文件进行编译&#xff0c;默认false"allowJs": true,// 是否检查js代码是否符合语法规范,默认false(引入的外部文件有可能语法有问题)"checkJs": true, allowJs和checkJs基本是同时出现&#xff0c;因为有了allowJs 这个检查…...

MATLAB数据统计描述和分析

描述性统计就是搜集、整理、加工和分析统计数据&#xff0c; 使之系统化、条理化&#xff0c;以显示出数据资料的趋势、特征和数量关系。它是统计推断的基础&#xff0c;实用性较强&#xff0c;在数学建模的数据描述部分经常使用。 目录 1.频数表和直方图 2 .统计量 3.统计…...

设计分享—国外后台界面设计赏析

国外后台界面设计将用户体验放在首位&#xff0c;通过直观易懂的布局和高效的交互设计&#xff0c;提升用户操作效率和满意度。 设计不仅追求美观大方&#xff0c;还注重功能的实用性和数据的有效展示&#xff0c;通过图表和图形化手段使数据更加直观易懂。 采用响应式布局&a…...

最小生成树(算法篇)

算法之最小生成树 最小生成树 概念&#xff1a; 最小生成树是一颗连接图G所有顶点的边构成的一颗权最小的树&#xff0c;最小生成树一般是在无向图中寻找。最小生成树共有N-1条边(N为顶点数)。 算法&#xff1a; Prim算法 概念&#xff1a; Prim(普里姆)算法是生成最小生…...

教师管理小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;教师管理&#xff0c;个人认证管理&#xff0c;课程信息管理&#xff0c;课堂记录管理&#xff0c;课堂统计管理&#xff0c;留言板管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;课程信息…...

Selenium 等待

环境&#xff1a; Python 3.8 selenium3.141.0 urllib31.26.19 Chromium 109.0.5405.0 &#xff08;32 位&#xff09; # 1 固定等待&#xff08;time&#xff09; # 固定待是利用python语言自带的time库中的sleep()方法&#xff0c;固定等待几秒。 # 这种方式会导致这个脚本运…...

安装easy-handeye

一、aruco_ros配置 mkdir -p ~/ros_ws/src cd ~/ros_ws/src git clone -b melodic-devel https://github.com/pal-robotics/aruco_ros.git cd .. catkin_make 二、visp配置(需要联外网下载东西&#xff0c;不然会一直出问题&#xff09; sudo apt-get install ros-melodic-…...

【面试题】MySQL 索引(第二篇)

1.索引 索引是数据库中的一个核心概念&#xff0c;它对于提高数据库查询效率至关重要。以下是索引的详细概念解析&#xff1a; 一、索引的定义 基本定义&#xff1a;索引是一个排序的列表&#xff0c;其中存储着索引的值和包含这些值的数据所在行的物理地址&#xff08;或逻…...

4. 小迪安全v2023笔记 javaEE应用

4. 小迪安全v2023笔记 javaEE应用 ​ 大体上跟随小迪安全的课程&#xff0c;本意是记录自己的学习历程&#xff0c;不能说是完全原创吧&#xff0c;大家可以关注一下小迪安全。 若有冒犯&#xff0c;麻烦私信移除。 默认有java基础。 文章目录 4. 小迪安全v2023笔记 javaEE应…...

anaconda修改安装的默认环境

&#x1f4da;博客主页&#xff1a;knighthood2001 ✨公众号&#xff1a;认知up吧 &#xff08;目前正在带领大家一起提升认知&#xff0c;感兴趣可以来围观一下&#xff09; &#x1f383;知识星球&#xff1a;【认知up吧|成长|副业】介绍 ❤️如遇文章付费&#xff0c;可先看…...

MySQL 9.0 正式发行Innovation创新版已支持向量

从 MySQL 8.1 开始&#xff0c;官方启用了新的版本模型&#xff1a;MySQL 创新版 (Innovation) 和长期支持版 (LTS)。 根据介绍&#xff0c;两者的质量都已达到可用于生产环境级别。区别在于&#xff1a; 如果希望尝试最新的功能和改进&#xff0c;并喜欢与最新技术保持同步&am…...

基于Java+SpringMvc+Vue技术的智慧校园系统设计与实现

博主介绍&#xff1a;硕士研究生&#xff0c;专注于信息化技术领域开发与管理&#xff0c;会使用java、标准c/c等开发语言&#xff0c;以及毕业项目实战✌ 从事基于java BS架构、CS架构、c/c 编程工作近16年&#xff0c;拥有近12年的管理工作经验&#xff0c;拥有较丰富的技术架…...

【蔬菜网元宇宙】—— 探索农业的未来之旅

在数字化时代的浪潮中&#xff0c;技术和创新不断塑造着我们的生活方式。现在&#xff0c;这种变革已经延伸到了农业领域。蔬菜网&#xff0c;一个专注于农产品供应链的领先平台&#xff0c;自豪地宣布我们正式迈入元宇宙的世界——一个全新的虚拟空间&#xff0c;旨在彻底改变…...

淘宝商品历史价格查询(免费)

当前资料来源于网络&#xff0c;禁止用于商用&#xff0c;仅限于学习。 淘宝联盟里面就可以看到历史价格 并且没有加密 淘宝商品历史价格查询可以通过以下步骤进行&#xff1a; 先下载后&#xff0c;登录app注册账户 打开淘宝网站或淘宝手机App。在搜索框中输入你想要查询的商…...

14-47 剑和诗人21 - 2024年如何打造AI创业公司

​​​​​ 2024 年&#xff0c;随着人工智能继续快速发展并融入几乎所有行业&#xff0c;创建一家人工智能初创公司将带来巨大的机遇。然而&#xff0c;在吸引资金、招聘人才、开发专有技术以及将产品推向市场方面&#xff0c;人工智能初创公司也面临着相当大的挑战。 让我来…...

WPF界面设计-更改按钮样式 自定义字体图标

一、下载图标文件 iconfont-阿里巴巴矢量图标库 二、xaml界面代码编辑 文件结构 &#xe653; 对应的图标代码 Fonts/#iconfont 对应文件位置 <Window.Resources><ControlTemplate TargetType"Button" x:Key"CloseButtonTemplate"…...

开源项目的机遇与挑战

随着全球经济和科技环境的快速变化&#xff0c;开源软件项目的蓬勃发展成为了开发者社区的热门话题。越来越多的开发者和企业选择参与开源项目&#xff0c;以推动技术创新和实现协作共赢。本文将从开源项目的发展趋势、参与开源的经验分享&#xff0c;以及开源项目的挑战三个方…...

Linux实现CPU物理隔离

文章目录 背景使用 taskset 命令使用 cgroups案例 背景 在 Linux 上实现 CPU 的物理隔离&#xff08;也称为 CPU 隔离或 CPU pinning&#xff09;&#xff0c;可以通过将特定的任务或进程绑定到特定的 CPU 核心来实现。这可以提高系统性能&#xff0c;尤其是在需要实时响应的应…...

springer latex模板参考文献不显示

原因 his is BibTeX, Version 0.99d (TeX Live 2024) The top-level auxiliary file: sn-article.aux I couldn’t open style file sn-mathphys-num.bst —line 2 of file sn-article.aux : \bibstyle{sn-mathphys-num : } I’m skipping whatever remains of this command I…...

使用Vue3、Pinia和Vite5打造高度还原的抖音仿制项目

douyin-vue 是一个模仿 抖音|TikTok 的移动端短视频项目。Vue 在移动端的"最佳实践"&#xff0c;媲美原生 App 丝滑流畅的使用体验。使用了最新的 Vue 技术栈&#xff0c;基于 Vue3、Vite5 、Pinia实现。数据保存在项目本地&#xff0c;通过 axios-mock-adapter 库拦…...

stm32基本定时器

Driver_TIM6.c 需要注意立即进入中断问题&#xff0c;原因是预分频寄存器并没有更新预分频系数。 #include "Driver_TIM6.h" #include "Delay.h" /*** description: 给定时器6进行初始化* return {*}*/ void Driver_TIM6_Init(void) {/* 1. 给定时器6开启…...

网络安全基础-1

棱角社区&#xff1a;[~]#棱角 ::Edge.Forum* 专业名词 操作系统 文件下载 linux:下载命令 1. wget命令 wget是一个非常强大的命令行下载工具&#xff0c;支持HTTP、HTTPS、FTP等多种协议&#xff0c;并具备断点续传、递归下载等功能。 基本用法&#xff1a; 下载文件到…...

SSH远程访问及控制

目录 一、SSH远程管理 1、SSH定义 2、SSH客户端和服务端 3、SSH工作类型 3.1、对称加密 3.2、非对称加密 4、SSH工作原理 公钥传输原理 4.1、基本概念 4.2、工作过程 5、OpenSSH服务器 二、SSH远程登录方式 1、SSH直接远程登录 2、SSH指定端口登录 3、黑白名单 …...

Qt 绘图详解

文章目录 头文件和构造函数启用反锯齿功能绘制矩形绘制圆角矩形绘制椭圆绘制圆弧绘制弦绘制凸多边形绘制图片绘制直线绘制多条直线绘制多点连接的线绘制路径绘制扇形绘制点绘制文本擦除矩形区域填充矩形填充路径 头文件和构造函数 #include "mainwindow.h" #include…...

Python 爬虫与 Java 爬虫:相似之处、不同之处和选项

在信息时代&#xff0c;网络上可用的数据量巨大且不断增长。为了从这些数据中提取有用的信息&#xff0c;爬虫已成为一种重要的技术。Python 和 Java 都是流行的编程语言&#xff0c;都具有强大的爬虫功能。本文将深入探讨 Python 爬虫和 Java 爬虫之间的差异&#xff0c;以帮助…...

视频监控汇聚平台LntonCVS视频监控系统解决智慧产业园的安全应用方案

近年来&#xff0c;随着全国各地数字化转型和相关政策的出台&#xff0c;数字化和智慧化在各行业迅速发展&#xff0c;尤其是作为产业集群重要组成部分的产业园区。然而&#xff0c;园区智慧化进程加快的同时&#xff0c;数字化转型面临着诸如视频监控数据分散、联通不畅、碎片…...

MAVLink代码生成-C#

一. 准备Windows下安装环境 Python 3.3 – 官网链接下载Python future模块 –pip3 install future TkInter (GUI 工具). – python for Windows自带&#xff0c;无需下载环境变量PYTHONPATH必须包含mavlink存储库的目录路径。 –set PYTHONPATH你的mavlink源码路径 源码下载在…...

网站原型的交互怎么做/产品运营方案

*题意&#xff1a; 在1到n之间添加‘’&#xff0c;‘-’&#xff0c;‘.’三种运算符令最后结果为0&#xff0c;输出前20种添加方法&#xff0c;若不足20种则全 输出&#xff0c;最后输出共有多少种添加方式。&#xff08;‘.’表示将其两侧的数连成一个数例&#xff1a…...

丹东做网站/网页制作软件dw

EnableTaskWindows DisableTaskWindows 在Delphi中显示一个窗口有两种方式,模态方式显示&#xff08;ShowModal&#xff09;和非模态方式显示&#xff08;Show&#xff09;&#xff0c;模态方式显示窗口时,必须在自身关闭后才能使父窗口起作用&#xff0c;但有时我们想要实现一…...

010-58813333 可信网站/合肥网络公司seo建站

今天楼主给大家讲一下在校学生都关心的问题&#xff0c;在学校的时候如何才能学好Java技术&#xff0c;并且在毕业之前有能力胜任软件公司的工作。 如果你是在校的学生&#xff0c;或许还不知道如今社会中工作的竞争也多大&#xff0c;目前这个时代来讲&#xff0c;大学生毕业…...

做网站无需备案/做网站企业

本篇文章给大家带来的内容是关于如何清理浮动&#xff1f;清除浮动的4种方式&#xff0c;有一定的参考价值&#xff0c;有需要的朋友可以参考一下&#xff0c;希望对你有所帮助。套路1&#xff1a;给浮动元素的父元素添加高度(扩展性不好)如果一个元素要浮动&#xff0c;那么它…...

帮人做网站要怎么赚钱/浙江短视频seo优化网站

当前有效matplotlib版本为&#xff1a;3.4.1。 figure函数概述 在pyplot模块中&#xff0c;figure函数用于创建新的图形&#xff0c;或激活已存在的图形。 函数的签名为matplotlib.pyplot.figure(numNone, figsizeNone, dpiNone, facecolorNone, edgecolorNone, frameonTrue…...

普陀网站建设/线上营销活动主要有哪些

因为嘉伟思杯里的一个脚本题目&#xff0c;16进制计算&#xff0c;python3正则还没学&#xff0c;所以没写出来。大佬跟我说也可以用BS4&#xff0c;从DOM上下手,直接爬下来直接一个eval就搞定了&#xff0c;eval可以像这样计算16进制,eval(0x2b0x37)。BUGKU已经写了很多了&…...