最新常见的图数据库对比,选型,架构,性能对比
图数据库排名
- 地址:https://db-engines.com/en/ranking/graph+dbms
知识图谱查询语言
SPARQL、Cypher、Gremlin、PGQL 和 G-CORE
语法 / 语义 / 特性
SPARQL
Cypher
Gremlin
PGQL
G-CORE
图模式匹配查询
语法
CGP
CGP
CGP(无可选)1
CGP
CGP
语义
子图同态、包 2
无重复边、包 2
子图同态、包 2
子图同构 3、包 2
子图同态、包 2
导航式查询
语法
RPQ 超集 (增加反向边和属性集上的否定)
RPQ 子集 (* 只能作用在单边)
RPQ 超集 (增加通过表达式比较属性值)
RPQ 超集 (增加比较路径上的顶点和边)
RPQ 超集 (增加复杂路径表达式)
语义
任意路径、集合 4
无重复边 5、包 2
任意路径 6、包 2
最短路径 7、包 8
最短路径 9、包 2
分析型查询
聚合函数
聚合函数
聚合函数、PageRank、PeerPressure 聚类
聚合函数
聚合函数
查询可组合性
否
是
是
否
是
数据更新语言 DML
CRUD10
CRUD
无
无
CR
数据定义语言 DDL
无
有
无
无
无
实现系统
Jena、RDF4J、gStore、Virtuoso 等
Neo4j、AgensGraph 等
TinkerTop 等
Oracle PGX
无
-
Gremlin 不显式支持可选 (optional) 操作, 但可以通过其他语法特性等价模拟.
-
可通过 DISTINCT 关键字支持集合语义.
-
PGQL 默认的图模式匹配查询语义是子图同构, 可使用 ALL 关键字改为子图同态.
-
SPARQL 中只有当使用 * 运算使得属性路径查询无法等价写为 CGP 时才使用集合语义.
-
Cypher 可通过 shortestPath 函数支持最短路径语义.
-
Gremlin 中其他语义可以被模拟出来.
-
PGQL 路径查询可通过用户定义函数实现其他语义.
-
PGQL 路径查询返回单条最短路径, 集合和包语义相同.
-
G-CORE 路径查询可通过 ALL 关键字改为任意路径语义.
-
CRUD 分别代表 CREATE 创建、READ 读取、UPDATE 更新和 DELETE 删除
知识图谱存储方式
- 关系型存储
存储大规模知识图谱,且便于对知识进行更新,但当知识图谱查询的选择性较大时,查询性能明显下降
- 原生图存储
无邻接索引的特性能够高效处理复杂的知识图谱查询,但有限的存储容量和不灵活的更新机制使得原生图存储不能很好地应用于大规模知识图谱中
基于关系的知识图谱存储管理
关系数据库目前仍是使用最多的数据库管理系统。基于关系的知识图谱存储方案, 包括: 三元组表、水平表、属性表、垂直划分、六重索引和 DB2RDF。
三元组表
三元组表 (triple table) 是将知识图谱存储到关系数据库的最简单、最直接的办法, 就是在关系数据库中建立 一张具有 3 列的表, 该表的模式为 triple_table(subject,predicate,object),subject、predicate 和 object 这 3 列分别表示主语、谓语和宾语。
-
三元组表存储方案虽然简单明了,但三元组表的行数与知识图谱的边数相等,其最大问题在于将知识图谱查询翻译为 SQL 查询后会产生三元组表的大量自连接操作
-
RDF 数据库系统 3store
水平表
水平表 (horizontal table) 存储方案同样非常简单。水平表的每行记录存储知识图谱中一个主语的所有谓语 和宾语。实际上, 水平表相当于知识图谱的邻接表。水平表的列数是知识图谱中不同谓语的数量, 行数是知识图 谱中不同主语的数量。
-
RDF 数据库系统 DLDB
-
水平表的缺点在于:
-
(1) 所需列的数目等于知识图谱中不同谓语数量,在真实知识图谱数据集中,不同 谓语数量可能为几千个到上万个,很可能超出关系数据库所允许的表中列数目上限
-
(2) 对于一行来说,仅在极 少数列上具有值, 表中存在大量空值, 空值过多会影响表的存储、索引和查询性能
-
(3) 在知识图谱中,同一主语 和谓语可能具有多个不同宾语,即一对多联系或多值属性,而水平表的一行一列上只能存储一个值,无法应对这种情况 (可以将多个值用分隔符连接存储为一个值,但这违反了关系数据库设计的第一范式);
-
(4) 知识图谱的更新往往会引起谓语的增加、修改或删除,即水平表中列的增加、修改或删除,这是对于表结构的改变,成本很高。
-
属性表
属性表 (property table) 存储方案是对水平表的细分,将同类主语存到一个表中,解决了表中列数目过多的问题。
-
RDF 三元组库 Jena
-
属性表既克服了三元组表的自连接问题,又解决了水平表中列数目过多的问题。实际上,水平表就是属性表的一种极端情况,即水平表是将所有主语划归为一类,因此属性表中的空值问题得到很大的缓解。
-
属性表仍存 在如下一些缺点:
-
(1) 对于规模稍大的真实知识图谱数据,主语的类别可能有几千到上万个,需要建立几千到上万个表,这往往超过了关系数据库的限制
-
(2) 即使在同一类型中,不同主语具有的谓语集合也可能差异较大,会造成与水平表中类似的空值问题
-
(3) 水平表中存在的一对多联系或多值属性存储问题在属性表中仍然存在
-
垂直划分
垂直划分 (vertical partitioning) 存储方案,为每种谓语建立一张两列的表(subject,object), 表中存放知识图谱中由该谓语连接的主语和宾 语, 表的总数量即知识图谱中不同谓语的数量.
-
SW-Store
-
优点:
-
(1) 谓语表仅存储出现在 知识图谱中的三元组, 解决了空值问题;
-
(2) 一个主语的一对多联系或多值属性存储在谓语表的多行中, 解决了 多值问题;
-
(3) 每个谓语表都按主语列的值进行排序, 能够使用归并排序连接 (merge-sort join) 快速执行不同谓 语表的连接查询操作.
-
-
缺点:
-
(1) 需要创建的表的数目与知识图谱中不同谓语数目相等,而大规模的真实知识图谱 (如 DBpedia、YAGO、WikiData 等) 中谓语数目可能超过几千个,在关系数据库中维护如此规模的表需要花费很大开销
-
(2) 越是复杂的知识图谱查询操作,需要执行的表连接操作数量越多,而对于未指定谓语的三元组查询,将发生需要连接全部谓语表进行查询的极端情况
-
(3) 谓语表的数量越多,数据更新维护代价越大,对于一个主语的更新将涉及多张表,产生很高的更新时 I/O 开销。
-
六重索引
六重索引 (sextuple indexing) 存储方案是对三元组表的扩展,是一种典型的 “空间换时间” 策略,其将三元组全部 6 种排列对应地建立为 6 张表,即 spo(主语,谓语,宾语)、pos(谓语,宾语,主语)、osp(宾语,主语,谓语)、sop(主语,宾语,谓语)、pso(谓语,主语,宾语)和 ops(宾语,谓语,主语)。不难看出,其中 spo 表就是原来的三元组表。六重索引通过 6 张表的连接操作不仅缓解了三元组表的单表自连接问题,而且提高了某些典型知识图谱查询的效率。
-
RDF-3X , Hexastore
-
优点:
-
(1) 知识图谱查询中的每种三元组模式查询都可以直接使用相应的索引进行快速 前缀范围查找;
-
(2) 可以通过不同索引表之间的连接操作 直接加速知识图谱上的连接查询.
-
-
缺点:
-
(1) 虽然部分缓解了三元组表的单表自连接问题, 但需要花费 6 倍的存 储空间开销、索引维护代价和数据更新时的一致性维护代价, 随着知识图谱规模的增大, 该问题会愈加突出;
-
(2) 当知识图谱查询变得复杂时, 会产生大量的连接索引表查询操作, 依然不可避免索引表的自连接.
-
-
DB2RDF 是一种面向实体的 RDF 知识图谱存储方案
- IBM DB2
原生知识图谱存储管理
Neo4j
Neo4j 是目前最流行的属性图数据库,其原生图存储层的最大特点是具有 “无索引邻接(index-free adjacency)” 特性。所谓 “无索引邻接” 是指,每个顶点维护着指向其邻接顶点的直接引用,相当于每个顶点都可看作是其邻接顶点的一个 “局部索引”,用其查找邻接顶点比使用“全局索引” 节省大量时间。这就意味着图导航操作代价与图大小无关,仅与图的遍历范围成正比
gStore
gStore 将 RDF 数据图中每个资源的所有属性和属性值映射到一个二进制位串上。具体而言,对于每个属性 或属性值,gStore 都定义一个固定长度的位串并将位串中所有位置为 0。然后利用若干个预先定义的字符串哈希函数将属性或属性值按照标识符映射到若干个小于位串长度的整数值,进而将位串上这些值所对应的位置置为 1。
分布式图数据库:JanusGraph
JanusGraph 是在原有 Titan 系统基础上继续开发的开源分布式图数据库。JanusGraph 的存储后端与查询引擎是分离的, 可使用分布式 Bigtable 存储库 Cassandra 或 HBase 作为存储后端。JanusGraph 借助第三方分布式索引库 ElasticSearch、Solr 和 Lucene 实现各类型数据的快速检索功能,包括地理信息数据、数值数据和全文搜索。JanusGraph 还具备基于 MapReduce 的图分析引擎,,可将 Gremlin 导航查询转化为 MapReduce 任务。
图计算框架(TinkerPop)
数据存储(Cassandra,HBase,BerkeleyDB)
索引存储(Elasticsearch,Solr,Lucene)
JanusGraph从其框架上来说,是起到一个桥梁的作用。将各种开源的软件连接到一起,形成一个大型图数据库。
OrientDB
OrientDB 最初是由 OrientDB 公司开发的多模型数据库管理系统。OrientDB 虽然支持图、文档、键值、对象、关系等多种数据模型, 但其底层实现主要面向图和文档数据存储管理的需求设计。其存储层中数据记录之间的联系并不是像关系数据库那样通过主外键的引用,而是通过记录之前直接的物理指针。OrientDB 对于数据模式的支持相对灵活,可以管理无模式数据 (schema-less),也可以像关系数据库那样定义完整的模式(schema-full),还可以适应介于两者之间的混合模式(schema-mixed) 数据。在查询语言方面,OrientDB 支持扩展的 SQL 和 Gremlin 用于图上的导航式查询;OrientDB 的 MATCH 语句实现了声明式的模式匹配,这类似于 Cypher 语言查询模式。
Cayley
Cayley 是由 Google 公司工程师开发的一款轻量级开源图数据库。Cayley 的开发受到了 Freebase 知识图谱和 Google 知识图谱背后的图数据存储的影响。Cayley 使用 Go 语言开发,可以作为 Go 类库使用;对外提供 REST API,具有内置的查询编辑器和可视化界面;支持多种查询语言,包括:基于 Gremlin 的 Gizmo、GraphQL 和 MQL;支持多种存储后端, 包括:键值数据库 Bolt、LevelDB, NoSQL 数据库 MongoDB、CouchDB、PouchDB、ElasticSearch,关系数据库 PostgreSQL、MySQL 等。
NebulaGraph
NebulaGraph 是一款完全由**杭州悦数科技有限公司自主研发的开源分布式图数据库产品,擅长处理千亿节点万亿条边的超大规模数据集,同时保持毫秒级查询延时。自 2019 年 5 月开源以来,被多家互联网头部企业竞相采用,广泛应用于金融风控、实时推荐、知识图谱等业务场景。早期采用者包括腾讯、美团、京东、360数科、微众银行、小红书、知乎、快手、BOSS****直聘等知名互联网企业,随着图数据库技术的日益普及以及业务场景的不断发掘,越来越多行业加入了 NebulaGraph 社区,包括中国移动、众安保险、****泰康人寿**等。
性能高效:高可用,高吞吐低时延
NebulaGraph 的图数据库采用原生分布式结构,得益于其 shared-nothing 以及存储与计算分离的架构设计,NebulaGraph 具备在线水平扩缩容能力;原生分布式架构,使用 Raft 协议保证数据一致性,确保集群高可用;同时兼容 openCypher,能够无缝对接 Neo4j 用户,降低学习及迁移成本。
开源社区:数千名成员,日常互动活跃
NebulaGraph 的开发者社区聚集了几千名社区成员和超百位社区代码贡献者,项目在 GitHub 上积累了超过 7800 个 star。近期被 CSDN 选为 2021 年的 “年度开源项目”。英国投资公司 OXX.VC 也将 NebulaGraph 评选为 2021 年成长最快的开源公司,与 Airbyte、Supabase 等广受欢迎的开源项目并列。
官网:https://www.nebula-graph.com.cn/
git:https://github.com/vesoft-inc/nebula
性能对比:https://discuss.nebula-graph.com.cn/t/topic/11727
文档:https://docs.nebula-graph.com.cn/3.6.0/1.introduction/1.what-is-nebula-graph/
其他原生图数据库
Amazon 云平台的 Amazon Neptune 多模型图数据库 Arango DB 微软的 Azure CosmosDB DataStax 的 Enterprise Graph Sparsity 的 Sparksee TigerGraph
图数据库选型准则
在图数据库的选型上我们主要考虑了以下 5 点:
-
(A) 项目开源,暂不考虑需付费的图数据库
-
(B) 分布式架构设计,具备良好的可扩展性
-
© 毫秒级的多跳查询延迟
-
(D) 支持千亿量级点边存储
-
(E) 具备批量从数仓导入数据的能力
针对主流图数据库,进行选型分析
DB-Engines Ranking of Graph DBMS 剔除不开源的项目,可分为:
-
Neo4j、ArangoDB、Virtuoso、TigerGraph、RedisGraph。 此类图数据库只有单机版本开源可用,性能优秀,但不能应对分布式场景中数据的规模增长,即不满足选型要求(B)、(D)。
-
JanusGraph、HugeGraph。 此类图数据库在现有存储系统之上新增了通用的图语义解释层,图语义层提供了图遍历的能力,但是受到存储层或者架构限制,不支持完整的计算下推,多跳遍历的性能较差,很难满足 OLTP(on-line transaction processing)场景下对低延时的要求,即不满足选型要求(C)。
-
DGraph、NebulaGraph。 此类图数据库根据图数据的特点对数据存储模型、点边分布、执行引擎进行了全新设计,对图的多跳遍历进行了深度优化,基本满足我们的选型要求。
图数据库对比
NebulaGraph vs. Dgraph vs. HugeGraph
NebulaGraph vs. Dgraph vs. HugeGraph 的对比分析
部署方案
实时数据写入
查询对比
Neo4j vs HugeGraph vs NebulaGraph
Neo4j vs HugeGraph vs NebulaGraph 的对比分析
图形数据大小
平台
数据导入
一跳查询
两查询
共享好友查询
1000 万条边
Neo4j
26 秒
6.618 秒
6.644 秒
6.661 秒
HugeGraph
89 秒
16 毫秒
22 毫秒
72 毫秒
NebulaGraph
32.63 秒
1.482 毫秒
3.095 毫秒
0.994 毫秒
1 亿条边
Neo4j
1 分 21 秒
42.921 秒
43.332 秒
44.072 秒
HugeGraph
10 分
19 毫秒
20 毫秒
5 秒
NebulaGraph
3 分 52 秒
1.971 毫秒
4.34 毫秒
4.147 毫秒
10 亿条边
Neo4j
8 分 34 秒
165.397 秒
176.272 秒
168.256 秒
HugeGraph
65 分
19 毫秒
651 毫秒
3.8 秒
NebulaGraph
29 分 35 秒
2.035 秒
22.48 毫秒
1.761 毫秒
80 亿条边缘
Neo4j
1 小时 23 分钟
314.34 秒
393.18 秒
608.27 秒
HugeGraph
16 小时
68 毫秒
24 秒
541 毫秒
NebulaGraph
~30 分钟
小于 1s
小于 5 秒
小于 1s
架构:
Dgraph vs. HugeGraph vs. JanusGraph vs. NebulaGraph vs. Neo4j
Dgraph vs. HugeGraph vs. JanusGraph vs. NebulaGraph vs. Neo4j 的对比分析
主要知识图谱数据库对比
常见知识图谱数据库管理系统的比较
类型
名称
许可证
数据模型 / 存储方案
查询语言
是否活跃
基于关系
3store
开源
RDF 图 / 三元组表
SPARQL
否
DLDB
研究原型
RDF 图 / 水平表
SPARQL
早期系统, 水平表存储方案的代表性系统
Jena
开源
RDF 图 / 属性表
SPARQL
主流的语义 Web 工具库、RDF 数据库和 OWL 推理工具
SW-Store
研究原型
RDF 图 / 垂直划分
SPARQL
科研原型系统, 垂直划分存储方案的代表性系统
IBM DB2
商业
RDF 图 / DB2RDF
SPARQL/ SQL
支持 RDF 的主流商业数据库
Oracle 18c
商业
RDF 图 / 关系存储
SPARQL/ PGQL
支持 RDF 的主流商业数据库
RDF 三元组库
RDF4J
开源
RDF 图 / SAIL API
SPARQL
是
RDF-3X
开源
RDF 图 / 六重索引
SPARQL
科研原型系统, 六重索引存储方案的代表性系统
gStore
开源研究原型
RDF 图 / VS * 树
SPARQL
科研原型系统, 原生图存储, 使用了基于位串图存储技术
Virtuoso
商业 / 开源
RDF 图 / 多模型混合
SPARQL/ SQL
语义 Web 项目常用的 RDF 数据库, 基于成熟的 SQL 引擎
AllegroGraph
商业
RDF 图 / 三元组索引
SPARQL
对语义推理功能具有较为完善的支持
GraphDB
商业
RDF 图 / 三元组索引
SPARQL
支持语义 Web 标准的主流产品, 支持 SAIL 层推理功能
BlazeGraph
商业
RDF 图 / 三元组索引
SPARQL/ Gremlin
基于 RDF 三元组库的图数据库, 实现了 SPARQL 和 Gremlin
StarDog
商业
RDF 图 / 三元组索引
SPARQL
对 OWL2 推理机制具有良好的支持
原生图数据库
Neo4j
商业 / 开源
属性图 / 原生图存储
Cypher
是
JanusGraph
开源
属性图分布式存储
Gremlin
分布式图数据库, 存储后端与查询引擎分离, 实现了 Gremlin
OrientDB
商业
属性图 / 原生图存储
SQL/ Gremlin
支持多模型的原生图数据管理系统, 对数据模式的灵活支持
Cayley
开源
RDF 图 / 外部存储
Gremlin/ GraphQL
轻量级开源图数据库, 易于扩展对新语言和存储后端的支持
分布式系统与框架
Sempala
开源研究原型
RDF 图 / 分布式存储
SPARQL
否
TriAD
开源研究原型
RDF 图 / 分布式存储六重索引
SPARQL
基于 MPI 框架的异步通信协议
H2RDF+
开源研究原型
RDF 图 / 分布式存储六重索引
SPARQL
基于 HBase 构建六重索引
S2RDF
开源研究原型
RDF 图 / 分布式存储垂直划分
SPARQL
基于 Spark 框架建立大量索引
Stylus
开源研究原型
RDF 图 / 分布式存储属性表优化
SPARQL
基于分布式内存键值库的 RDF 三元组库
Apache Rya
开源
RDF 图 / 分布式存储三元组索引
SPARQL
基于列存储 Accumulo 的 RDF 三元组库
Cypher for Apache Spark
开源
属性图 / 分布式存储 DataFrame
Cypher
基于 Spark 框架的 Cypher 引擎
JanusGraph(尚可)、Neo4j(老牌先入为主不一定最佳)、Dgraph(尚可)、NebulaGraph(推荐) 四款图数据库比较。
特性
JanusGraph
Neo4j
Dgraph
NebulaGraph
首次发布
2017 年
2007 年
2016 年
2019 年
开发语言
Java
Java
Go
C++
开源
是
是
是
是
属性图模型
完整的属性图模型
完整的属性图模型
类 RDF 存储
完整的属性图模型
架构
分布式
单机
分布式
分布式
存储后端
Hbase、Cassandra、
BerkeleyDB
自定义文件格式
键值数据库 BadgerDB
键值数据库
RocksDB
高可用性
支 持
不支持
支持
支持
高可靠性
支 持
不支持
支持
支持
一致性协议
Paxos 等
无
RAFT
RAFT
跨数据中心复制
支 持
不支持
支持
不支持
事务
ACID 或 BASE
完全的 ACID
0mid 修改版
不支持
分区策略
随机分区,支持显式指定分区策略
不支持分区
自动分区
静态分区
大数据平台集成
Spark、Hadoop、Giraph
Spark
不支持
Spark、Flink
查询语言
Gremlin
Cypher
GraphQL
nGQL
全文检索
ElasticSearch、Solr、Lucene
内置
内置
ElasticSearch
多个图
支持创建任意多图
一个实例只能有一个图
一个集群只能有一个图
支持创建任意多图
属性图模式
多种约束方法
可选模式约束
无模式
强制模式约束
客户端协议
HTTP、WebSockets
HTTP、BOLT
HTTP、gRPC 等
HTTP
客户端语言
Java、Python、C#、Go、Ruby
等
Java、Python、Go 等
Java、Go、Python、等
Python、Java 等
相关文章:
最新常见的图数据库对比,选型,架构,性能对比
图数据库排名 地址:https://db-engines.com/en/ranking/graphdbms 知识图谱查询语言 SPARQL、Cypher、Gremlin、PGQL 和 G-CORE 语法 / 语义 / 特性 SPARQL Cypher Gremlin PGQL G-CORE 图模式匹配查询 语法 CGP CGP CGP(无可选)1 CGP CGP 语义 子…...
混合合并两个pdf文件
混合两个pdf 1、在线免费交替和混合奇数和偶数PDF页面2、有什么软件把两个 PDF 交叉合并?3、pdfsam本地合并 如何Google翻译的原文和译文合并,(沉浸式翻译效果相对较好) 1、在线免费交替和混合奇数和偶数PDF页面 https://deftpd…...
OpenCV-Python实战(9)——滤波降噪
一、均值滤波器 cv2.blur() img cv2.blur(src*,ksize*,anchor*,borderType*)img:目标图像。 src:原始图像。 ksize:滤波核大小,(width,height)。 anchor:滤波核锚点,…...
uniapp——微信小程序读取bin文件,解析文件的数据内容(三)
微信小程序读取bin文件内容 读取用户选择bin文件,并解析数据内容,分包发送给蓝牙设备; 文章目录 微信小程序读取bin文件内容读取文件读取内容返回格式 API文档: getFileSystemManager 关于App端读取bin文件,请查看&…...
Python 中常用的算法
1. 排序算法 用于将数据按特定顺序排列。 冒泡排序(Bubble Sort)选择排序(Selection Sort)插入排序(Insertion Sort)快速排序(Quick Sort)归并排序(Merge Sort…...
xadmin后台首页增加一个导入数据按钮
xadmin后台首页增加一个导入数据按钮 效果 流程 1、在添加小组件中添加一个html页面 2、写入html代码 3、在urls.py添加导入数据路由 4、在views.py中添加响应函数html代码 <!DOCTYPE html> <html lang...
Kubernetes: NetworkPolicy 的实践应用
一、Network Policy 是什么,在云原生领域有和作用 Network Policy 是 Kubernetes 官方提出来的一种网络策略的规范,用户通过编写符合对应规范的规则来控制 k8s 集群内 L3 和 L4 层的网络流量。 NetworkPolicy 主要的功能就是实现在云原生领域的容器网络管控它给用…...
计算机体系结构期末复习3:GPU架构及控制流问题
目录 一、GPU设计思路 1.简化流水线、增加核数 2.单指令多线程(SIMT) 3.同时驻留大量线程 4.总思路:多线程单指令多线程 二、GPU的控制流问题 1.什么是控制流问题 2.怎么应对分支分歧 一、GPU设计思路 1.简化流水线、增加核数 2.单指…...
excel怎么删除右边无限列(亲测有效)
excel怎么删除右边无限列(亲测有效) 网上很多只用第1步的,删除了根本没用,还是存在,但是隐藏后取消隐藏却是可以的。 找到右边要删除的列的第一个空白列,选中整个列按“ctrlshift>(向右的小箭头)”&am…...
ChatGPT-4助力学术论文提升文章逻辑、优化句式与扩充内容等应用技巧解析。附提示词案例
目录 1.扩写(expansion/paraphrasing) 2.优化(optimization) 3.缩写(optimization) 4.提取关键词(keyword extraction) 5.短语转换(phrase transformationÿ…...
C++和OpenGL实现3D游戏编程【连载19】——着色器光照初步(平行光和光照贴图)(附源码)
1、本节要实现的内容 我们在前期的教程中,讨论了在即时渲染模式下的光照内容。但在我们后期使用着色器的核心模式下,会经常在着色器中使光照,我们这里就讨论一下着色器光照效果,以及光照贴图效果,同时这里知识会为后期的更多光照效果做一些铺垫。本节我们首先讨论冯氏光照…...
html+css网页制作 美食 美食网5个页面
htmlcss网页制作 美食 美食网5个页面 网页作品代码简单,可使用任意HTML辑软件(如:Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作)。 获取源码 1࿰…...
Mac 12.1安装tiger-vnc问题-routines:CRYPTO_internal:bad key length
背景:因为某些原因需要从本地mac连接远程linxu桌面查看一些内容,必须使用桌面查看,所以ssh无法满足,所以决定安装vnc客户端。 问题: 在mac上通过 brew install tiger-vnc命令安装, 但是报错如下: > D…...
遥感图像车辆检测-目标检测数据集
遥感图像车辆检测-目标检测数据集(包括VOC格式、YOLO格式) 数据集: 链接: https://pan.baidu.com/s/1XVlRTVWpXZFi6ZL_Xcs7Rg?pwdaa6g 提取码: aa6g 数据集信息介绍: 共有 1035 张图像和一一对应的标注文件 标注文件格式提供了…...
51c自动驾驶~合集43
我自己的原文哦~ https://blog.51cto.com/whaosoft/12930230 #ChatDyn 上交大最新ChatDyn:一句话操纵三维动态 理解和生成真实的三维虚拟世界是空间智能的核心。所生成的三维虚拟世界能够为自动驾驶、具身智能等AI系统提供高质量闭环仿真训练场,高效…...
随机变量是一个函数-如何理解
文章目录 一. 随机变量二. 随机变量是一个函数-栗子(一对一)1. 掷骰子的随机变量2. 掷骰子的随机变量(求点数平方)3. 抛硬币的随机变量4. 学生考试得分的随机变量 三. 随机变量是一个函数-理解(多对一) 一. 随机变量 随机变量就是定义在样本空间上的函数…...
云计算在医疗行业的应用
云计算在医疗行业的应用广泛而深入,为医疗服务带来了前所未有的变革。以下是对云计算在医疗行业应用的详细解析: ### 一、医疗数据共享与整合 云计算平台具有强大的数据存储和处理能力,使得医疗数据共享与整合成为可能。通过云计算平台&…...
Cursor提示词
你是一位经验丰富的项目经理,对于用户每一次提出的问题,都不急于编写代码,更多是通过深思熱虑、结构化的推理以产生高质量的回答,探索更多的可能方案,并从中寻找最佳方案。 约束 代码必须可以通过编译回答尽量使用中…...
C++ 设计模式:单例模式(Singleton Pattern)
链接:C 设计模式 链接:C 设计模式 - 享元模式 单例模式(Singleton Pattern)是创建型设计模式,它确保一个类只有一个实例,并提供一个全局访问点来访问这个实例。单例模式在需要全局共享资源或控制实例数量的…...
C++中生成0到180之间的随机数
在C中生成0到180之间的随机数,可以使用标准库中的和头文件。提供了rand()函数来生成随机数,而提供了time()函数来设置随机数生成的种子。这样每次运行程序时,生成的随机数序列都会不同。 以下是一个简单的示例代码,展示了如何生成…...
[.闲于修.]Autosar_UDS_笔记篇_ISO14229-1
前言:闲来无事,摸鱼无趣,准备细读一下14229,记录一些容易被忽略掉的内容 正文:(以下数字代表章节) 7、Application layer protocol 7.5.6 多个并发请求消息 常见的服务器实现在服务器中只有一…...
如何利用云计算进行灾难恢复?
云计算环境下的灾难恢复实践指南 天有不测风云,企业的IT系统也一样,我见过太多因为没有做好灾备而吃大亏的案例。今天就和大家聊聊如何用云计算来做灾难恢复。 一个惊心动魄的真实案例:某电商平台的主数据中心因为市政施工不小心挖断了光纤…...
Redis - 1 ( 7000 字 Redis 入门级教程 )
一: Redis 1.1 Redis 简介 Redis 是一种基于键值对(key-value)的 NoSQL 数据库,与其他键值对数据库不同,Redis 的值可以是多种数据结构和算法的组合,如字符串(string)、哈希&#…...
[羊城杯 2024]不一样的数据库_2
题目描述: 压缩包6 (1).zip需要解压密码: 尝试用ARCHPR工具爆破一下: (字典可自行在github上查找) 解压密码为:753951 解压得到13.png和Kee.kdbx文件: 二维码图片看上去只缺了正常的三个角&…...
租赁系统的数字化转型与高效管理新模式分析
内容概要 在当今瞬息万变的市场环境中,租赁系统的数字化转型显得尤为重要。信息技术的迅猛发展不仅改变了我们的生活方式,也迫使企业重新审视其运营模式。为了顺应这一潮流,租赁系统亟需通过高效管理新模式来提升运营效率,从而保…...
Selenium+Java(21):Jenkins发送邮件报错Not sent to the following valid addresses解决方案
问题现象 小月妹妹近期在做RobotFrameWork自动化测试,并且使用Jenkins发送测试邮件的时候,发现报错Not sent to the following valid addresses,明明各个配置项看起来都没有问题,但是一到邮件发送环节,就是发送不出去,而且还不提示太多有用的信息,急的妹妹脸都红了,于…...
【每日学点鸿蒙知识】文字识别、快捷登录、输入法按钮监听、IDE自动换行、资产访问等
【每日学点鸿蒙知识】24.09.07 1、API使用: hms.ai.ocr.textRecognition(文字识别)? 需要接入API文档https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/core-vision-text-recognition-api-V5中的文字识别…...
LabVIEW化工实验室设备故障实时监测
化工实验室中,各类设备的运行状态直接影响实验的精度与安全性。特别是重要分析仪器的突发故障,可能导致实验中断或数据失效。为了实现设备运行状态的实时监控与故障快速响应,本文提出了一套基于LabVIEW的解决方案,通过多参数采集、…...
小程序学习05——uniapp路由和菜单配置
目录 一、路由 二、如何管理页面及路由? 三、pages.json 页面路由 四、 tabBar 一、路由 路由:在前端,往往指代用不同地址请求不同页面,决定了用户如何在应用的不同页面之间导航。 菜单:对于每个路径(…...
漏洞分析 | Apache Struts文件上传漏洞(CVE-2024-53677)
漏洞概述 Apache Struts是美国阿帕奇(Apache)基金会的一个开源项目,是一套用于创建企业级Java Web应用的开源MVC框架。 近期,网宿安全演武实验室监测到Apache Struts在特定条件下,存在文件上传漏洞(网宿评…...
【VBA】EXCEL - VBA 遍历工作表的 5 种方法,以及注意事项
目录 1. 遍历单列数据并赋值 2. 遍历整个工作表的数据区域并赋值 3. 遍历指定范围的数据并赋值 4. 遍历多列数据并赋值 5. 遍历所有工作表中的数据并赋值 注意事项: 1. 遍历单列数据并赋值 Sub UpdateColumnData()Dim ws As WorksheetSet ws ThisWorkbook.S…...
CSS浮动
浮动 可以让块级元素待在一行,紧挨着,没有空格 float:left 浮动的元素会脱离正常的文档系统,像浮云一样飘起来浮动元素后面的正常元素会自动补位浮动元素会被父元素的宽高所束缚,所以不算完全的脱离文档流当浮动元素…...
gitlab 还原合并请求
事情是这样的: 菜鸡从 test 分支切了个名为 pref-art 的分支出来,发布后一机灵,发现错了,于是在本地用 git branch -d pref-art 将该分支删掉了。之后切到了 prod 分支,再切出了一个相同名称的 pref-art 分支出来&…...
【GPT】Coze使用开放平台接口-【8】创建应用
coze 可以用来创建简单的应用啦,这样测试起来会比原本的 Agent 更加方便,我们来看看如何创建一个“语音Real不Real”的应用。这个应用就是来检测语音是否是伪造的,克隆或者是合成的。先看下原本 Agent 的样子: 深度伪造语音检测&a…...
海外盲盒系统开发,助力企业全球化发展
近几年来,在海外市场中,盲盒已经成为了一种新的时尚单品,深受东南亚等海外消费者的喜爱。同时,泡泡玛特在海外的成功也为国内企业提供了发展机遇,盲盒出海具有广阔的发展前景! 随着信息技术的快速发展&a…...
pytorch 梯度判断函数介绍
PyTorch 提供了一些函数用于判断当前的梯度计算状态以及张量是否需要梯度。这些函数帮助开发者在训练、推理和调试过程中了解和控制梯度计算行为。 PyTorch 梯度判断函数 1. torch.is_grad_enabled() 功能: 判断当前是否启用了全局的梯度计算状态。返回值: 布尔值,True 表…...
每日一题 367. 有效的完全平方数
367. 有效的完全平方数 低效率法 class Solution { public:bool isPerfectSquare(int num) {if(num 1){return true;}long num1 num;for(int i1;i< num/2;i){if((long)(i)*i num){return true;}}return false;} };二分法 class Solution { public:bool isPerfectSquar…...
图像转换 VM与其他格式互转
目录 前言 图像转换 1.相机取流转VM对应类型图像格式 1.1 相机采图转流程输入和Group输入(ImageBaseData_V2) 1.2 相机采图转图像源SDK输入(ImageBaseData) 1.3 相机采图转模块输入(InputImageData) 1.4 相机采图转算子输入(CmvdImage) 2.Bitmap取图与VM对应图像格式互…...
streamlit、shiny、gradio、fastapi四个web APP平台体验
streamlit、shiny、gradio、fastapi四个web APP平台体验 经常被问的问题就是:web APP平台哪个好?该用哪个?刚开始只有用streamlit和shiny,最近体验了一下gradio和fastapi,今天根据自己的体会尝试着回答一下。 使用R语…...
BootstrapTable处理表格
需求背景 历史项目使用 BootstrapTable 作为前端组件 应客户需要调整: 冻结前四列对于大文本文字显示部分内容,鼠标悬浮显示完整内容 冻结列 1、引入相关CSS,JS CSS <link rel"stylesheet" href"/css/bootstrap.min.css"> …...
家政预约小程序04活动管理表结构设计
目录 1 创建活动表2 创建活动规则表3 创建活动参与记录表总结 为了满足我们日常的营销,我们通常需要搞一些活动,比如满减、折扣、团购等。启动活动后,会在首页进行显示,当用户访问小程序的时候,就可以参与活动…...
WPF使用OpenCvSharp4
WPF使用OpenCvSharp4 创建项目安装OpenCvSharp4 创建项目 安装OpenCvSharp4 在解决方案资源管理器中,右键单击项目名称,选择“管理 NuGet 包”。搜索并安装以下包: OpenCvSharp4OpenCvSharp4.ExtensionsOpenCvSharp4.runtime.winSystem.Man…...
STM32-笔记23-超声波传感器HC-SR04
一、简介 HC-SR04 工作参数: • 探测距离:2~600cm • 探测精度:0.1cm1% • 感应角度:<15 • 输出方式:GPIO • 工作电压:DC 3~5.5V • 工作电流:5.3mA • 工作温度:-40~85℃ 怎么…...
4G报警器WT2003H-16S低功耗语音芯片方案开发-实时音频上传
一、引言 在当今社会,安全问题始终是人们关注的重中之重。无论是家庭、企业还是公共场所,都需要一套可靠的安全防护系统来保障人员和财产的安全。随着科技的飞速发展,4G 报警器应运而生,为安全防范领域带来了全新的解决方案。…...
机器学习中的欠拟合
当模型不能够准确地表达输入与输出的关系时,就是欠拟合。它在训练集和未见过的数据都会产生高误差率。过度拟合则在训练集表现出低误差率,只有对未见过的数据表现出高误差率。 当模型太过于简单时,它需要更多的训练时间、更多的输入特征、更…...
数据结构之栈和队列
栈的定义: 我们要记住这8个字,先进后出,后进先出 我们对于栈的操作只有两个,进栈和出栈 栈的顺序结构初始化:(和顺序表差不多) 代码实现: 栈的顺序结构进栈: 代码实现…...
【北京迅为】iTOP-4412全能版使用手册-第六十九章 Linux内核裁剪与定制
iTOP-4412全能版采用四核Cortex-A9,主频为1.4GHz-1.6GHz,配备S5M8767 电源管理,集成USB HUB,选用高品质板对板连接器稳定可靠,大厂生产,做工精良。接口一应俱全,开发更简单,搭载全网通4G、支持WIFI、蓝牙、…...
MF248:复制工作表形状到Word并调整多形状位置
我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的工作效率,而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套,分为初级、中级、高级三大部分,教程是对VBA的系统讲解&#…...
若依框架之简历pdf文档预览功能
一、前端 (1)安装插件vue-pdf:npm install vue-pdf (2)引入方式:import pdf from "vue-pdf"; (3)components注入方式:components:{pdf} (4&…...
常用的数据库类型都有哪些
在Java开发和信息系统架构中,数据库扮演着存储和管理数据的关键角色。数据库种类繁多,各有特色,适用于不同的应用场景。 1. 关系型数据库(RDBMS): • 关系型数据库是最为人熟知的数据库类型,数据…...