国外做水广告网站大全/黄冈网站推广软件
解密图数据库与多模型数据库:特性、查询语言和成功案例的全景展示
前言
图数据库和多模型数据库在当今数据处理领域扮演着重要的角色。本文将介绍四个主要的图数据库和多模型数据库:Neo4j、Apache TinkerPop、JGraphT和ArangoDB,探索它们的特点、查询语言以及适用的应用场景。
欢迎订阅专栏:Java万花筒
文章目录
- 解密图数据库与多模型数据库:特性、查询语言和成功案例的全景展示
- 前言
- 1. Neo4j(图数据库)
- 1.1 特点与优势
- 1.2 数据模型与存储结构
- 1.2.1 图节点(Node)
- 1.2.2 图关系(Relationship)
- 1.3 查询语言与API
- 1.3.1 Cypher 查询语言
- 1.3.2 Java API
- 1.4 应用场景与案例
- 2. Apache TinkerPop(图处理框架)
- 2.1 概述与背景
- 2.2 图处理模型
- 2.2.1 图遍历(Traversal)
- 2.3 Gremlin 语言
- 2.3.1 Gremlin 查询语言
- 2.3.2 Gremlin 语言特性
- 2.4 应用场景与案例
- 3. JGraphT(图理论库)
- 3.1 库概述
- 3.2 图模型与数据结构
- 3.2.1 有向图(Directed Graph)
- 3.2.2 无向图(Undirected Graph)
- 3.3 图算法与操作
- 3.3.1 最短路径算法
- 3.3.2 最小生成树算法
- 3.4 图可视化与扩展
- 3.4.1 图可视化工具
- 3.4.2 JGraphT 扩展模块
- 4. ArangoDB(多模型数据库)
- 4.1 多模型数据库概述
- 4.2 数据模型与查询语言
- 4.2.1 文档型数据模型
- 4.2.2 图型数据模型
- 4.2.3 键-值型数据模型
- 4.3 多模型数据操作与API
- 4.3.1 AQL 查询语言
- 4.3.2 Java API
- 4.4 应用场景与案例
- 总结
1. Neo4j(图数据库)
1.1 特点与优势
Neo4j是一种流行的图数据库,具有以下特点和优势:
- 高性能:Neo4j通过使用原生图存储和查询模型,实现了高效的图操作和查询。
- 灵活的数据模型:Neo4j的数据模型是基于节点和关系的图结构,可以轻松表示复杂的关系和连接。
- 高度可扩展:Neo4j支持水平扩展,可以处理大规模的图数据。
- 冗余数据消除:Neo4j使用索引和数据压缩技术来减少冗余数据,提高存储效率。
- ACID事务支持:Neo4j支持ACID(原子性、一致性、隔离性和持久性)事务,确保数据一致性和完整性。
1.2 数据模型与存储结构
Neo4j的数据模型是基于节点和关系的图结构。
1.2.1 图节点(Node)
图节点是数据的基本单元,可以存储属性和标签。节点通过唯一的标识符(ID)进行引用,可以通过属性进行查询。
import org.neo4j.driver.*;
import static org.neo4j.driver.Values.parameters;public class Neo4jNodeExample {public static void main(String[] args) {try (Driver driver = GraphDatabase.driver("bolt://localhost:7687", AuthTokens.basic("neo4j", "password"))) {try (Session session = driver.session()) {session.run("CREATE (n:Person {name: $name, age: $age})", parameters("name", "John", "age", 30));session.run("CREATE (n:Person {name: $name, age: $age})", parameters("name", "Alice", "age", 25));}}}
}
1.2.2 图关系(Relationship)
图关系用于表示节点之间的连接和关系。关系具有类型、方向和属性,并且可以具有唯一的标识符。关系可以通过节点和属性进行查询。
import org.neo4j.driver.*;
import static org.neo4j.driver.Values.parameters;public class Neo4jRelationshipExample {public static void main(String[] args) {try (Driver driver = GraphDatabase.driver("bolt://localhost:7687", AuthTokens.basic("neo4j", "password"))) {try (Session session = driver.session()) {session.run("MATCH (a:Person), (b:Person) WHERE a.name = $name1 AND b.name = $name2 " +"CREATE (a)-[r:KNOWS {since: $year}]->(b)", parameters("name1", "John", "name2", "Alice", "year", 2020));}}}
}
1.3 查询语言与API
Neo4j提供了Cypher查询语言和Java API来进行图数据库的查询和操作。
1.3.1 Cypher 查询语言
Cypher是Neo4j的查询语言,用于在图数据库中执行查询和操作。
import org.neo4j.driver.*;
import static org.neo4j.driver.Values.parameters;public class Neo4jCypherExample {public static void main(String[] args) {try (Driver driver = GraphDatabase.driver("bolt://localhost:7687", AuthTokens.basic("neo4j", "password"))) {try (Session session = driver.session()) {StatementResult result = session.run("MATCH (n:Person) WHERE n.age > $age RETURN n.name", parameters("age", 25));while (result.hasNext()) {Record record = result.next();System.out.println(record.get("n.name").asString());}}}}
}
1.3.2 Java API
Neo4j还提供了完整的Java API,使开发人员可以使用Java编程语言访问和操纵图数据库。
import org.neo4j.driver.*;
import static org.neo4j.driver.Values.parameters;public class Neo4jJavaAPIExample {public static void main(String[] args) {try (Driver driver = GraphDatabase.driver("bolt://localhost:7687", AuthTokens.basic("neo4j", "password"))) {try (Session session = driver.session()) {Transaction transaction = session.beginTransaction();transaction.run("CREATE (n:Person {name: $name, age: $age})", parameters("name", "John", "age", 30));transaction.run("CREATE (n:Person {name: $name, age: $age})", parameters("name", "Alice", "age", 25));transaction.commit();}}}
}
1.4 应用场景与案例
Neo4j广泛应用于各种领域的图数据管理,例如:
- 社交网络分析:通过表示用户、朋友关系和兴趣等关系,进行社交网络分析和推荐系统。
- 知识图谱:构建和查询关于实体和关系的图谱,用于语义搜索和知识图谱的构建。
- 身份和访问管理:使用图数据库来处理和查询用户、组织和权限之间的关系,实现高效的身份和访问管理系统。
2. Apache TinkerPop(图处理框架)
2.1 概述与背景
Apache TinkerPop是一个开源的图计算框架,旨在统一不同图数据库的查询和操作接口。它提供了一种通用的图处理模型和查询语言,称为Gremlin。
2.2 图处理模型
TinkerPop的图处理模型基于图遍历,可以通过一系列步骤来遍历和查询图中的节点和关系。遍历可以定义复杂的图查询逻辑。
2.2.1 图遍历(Traversal)
图遍历是指从图中的一个或多个起始节点出发,按照一定的规则遍历图中的节点和关系。TinkerPop使用Gremlin遍历语言来定义图遍历。
import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal;
import org.apache.tinkerpop.gremlin.structure.Vertex;
import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraph;public class TinkerPopTraversalExample {public static void main(String[] args) {TinkerGraph graph = TinkerGraph.open();GraphTraversalSource g = graph.traversal();g.addV("person").property("name", "John").property("age", 30).next();g.addV("person").property("name", "Alice").property("age", 25).next();GraphTraversal<Vertex, String> traversal = g.V().has("age", P.gt(25)).values("name");while (traversal.hasNext()) {System.out.println(traversal.next());}}
}
2.3 Gremlin 语言
2.3.1 Gremlin 查询语言
Gremlin是TinkerPop的查询语言,用于在不同的图数据库上执行通用的图查询操作。它具有类似SQL的语法,支持复杂的图查询和数据操作。
2.3.2 Gremlin 语言特性
Gremlin具有许多强大的特性,例如条件过滤、遍历步骤、聚合操作和图形操作。它还提供了丰富的内置函数和操作符来处理图数据。
import org.apache.tinkerpop.gremlin.structure.Graph;
import org.apache.tinkerpop.gremlin.structure.T;
import org.apache.tinkerpop.gremlin.structure.Vertex;
import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraph;
import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.*;public class GremlinLanguageExample {public static void main(String[] args) {Graph graph = TinkerGraph.open();Vertex john = graph.addVertex(T.label, "person", "name", "John", "age", 30).next();Vertex alice = graph.addVertex(T.label, "person", "name", "Alice", "age", 25).next();graph.traversal().V().has("age", P.gt(25)).values("name").forEachRemaining(System.out::println);}
}
2.4 应用场景与案例
Apache TinkerPop广泛应用于以下领域:
- 图分析和挖掘:使用TinkerPop进行复杂的图分析和挖掘任务,如社区检测、路径分析和影响力分析。
- 图数据库中间件:作为图数据库中间件,提供统一的查询接口和图处理能力,使不同的图数据库可以互操作。
- 大数据图处理:与大数据处理框架(如Apache Spark和Apache Flink)集成,进行大规模图处理和分布式图计算。
以上是关于图数据库和图处理库的简介和示例代码。希望对您有帮助!如果您有任何问题,请随时提问。
3. JGraphT(图理论库)
3.1 库概述
JGraphT是一个开源的Java图理论库,用于表示和操作各种类型的图。它提供了丰富的图模型、图算法和图操作,使开发人员能够使用图理论进行复杂的图分析和处理。
3.2 图模型与数据结构
JGraphT支持多种图模型和数据结构,包括有向图和无向图。
3.2.1 有向图(Directed Graph)
有向图是一种图模型,其中每条边都有一个方向。有向图中的边称为有向边,表示从一个顶点指向另一个顶点的方向。
import org.jgrapht.Graph;
import org.jgrapht.graph.DefaultDirectedGraph;
import org.jgrapht.graph.DefaultEdge;public class JGraphTDirectedGraphExample {public static void main(String[] args) {Graph<String, DefaultEdge> directedGraph = new DefaultDirectedGraph<>(DefaultEdge.class);directedGraph.addVertex("A");directedGraph.addVertex("B");directedGraph.addVertex("C");directedGraph.addEdge("A", "B");directedGraph.addEdge("B", "C");directedGraph.addEdge("C", "A");}
}
3.2.2 无向图(Undirected Graph)
无向图是一种图模型,其中边没有方向。无向图中的边可以双向连接两个顶点。
import org.jgrapht.Graph;
import org.jgrapht.graph.DefaultUndirectedGraph;
import org.jgrapht.graph.DefaultEdge;public class JGraphTUndirectedGraphExample {public static void main(String[] args) {Graph<String, DefaultEdge> undirectedGraph = new DefaultUndirectedGraph<>(DefaultEdge.class);undirectedGraph.addVertex("A");undirectedGraph.addVertex("B");undirectedGraph.addVertex("C");undirectedGraph.addEdge("A", "B");undirectedGraph.addEdge("B", "C");undirectedGraph.addEdge("C", "A");}
}
3.3 图算法与操作
JGraphT提供了许多常用的图算法和操作,使开发人员能够对图进行复杂的分析和操作。
3.3.1 最短路径算法
JGraphT提供了多种最短路径算法,如Dijkstra算法和Floyd-Warshall算法,用于在图中查找两个顶点之间的最短路径。
import org.jgrapht.Graph;
import org.jgrapht.alg.shortestpath.DijkstraShortestPath;
import org.jgrapht.graph.DefaultDirectedGraph;
import org.jgrapht.graph.DefaultEdge;public class JGraphTShortestPathExample {public static void main(String[] args) {Graph<String, DefaultEdge> directedGraph = new DefaultDirectedGraph<>(DefaultEdge.class);directedGraph.addVertex("A");directedGraph.addVertex("B");directedGraph.addVertex("C");directedGraph.addEdge("A", "B");directedGraph.addEdge("B", "C");directedGraph.addEdge("C", "A");DijkstraShortestPath<String, DefaultEdge> shortestPath = new DijkstraShortestPath<>(directedGraph);double distance = shortestPath.getPathWeight("A", "C");}
}
3.3.2 最小生成树算法
JGraphT提供了多种最小生成树算法,如Prim算法和Kruskal算法,用于在图中查找生成树。
import org.jgrapht.Graph;
import org.jgrapht.alg.spanning.PrimMinimumSpanningTree;
import org.jgrapht.graph.DefaultUndirectedGraph;
import org.jgrapht.graph.DefaultEdge;public class JGraphTMinimumSpanningTreeExample {public static void main(String[] args) {Graph<String, DefaultEdge> undirectedGraph = new DefaultUndirectedGraph<>(DefaultEdge.class);undirectedGraph.addVertex("A");undirectedGraph.addVertex("B");undirectedGraph.addVertex("C```javaGraph<String, DefaultEdge> undirectedGraph = new DefaultUndirectedGraph<>(DefaultEdge.class);undirectedGraph.addVertex("A");undirectedGraph.addVertex("B");undirectedGraph.addVertex("C");undirectedGraph.addEdge("A", "B");undirectedGraph.addEdge("B", "C");undirectedGraph.addEdge("C", "A");PrimMinimumSpanningTree<String, DefaultEdge> mst = new PrimMinimumSpanningTree<>(undirectedGraph);SpanningTree<DefaultEdge> spanningTree = mst.getSpanningTree();double weight = spanningTree.getTotalWeight();}
}
3.4 图可视化与扩展
3.4.1 图可视化工具
JGraphT本身并不提供图可视化功能,但可以与其他图可视化工具集成,如JUNG、GraphStream和yFiles。
3.4.2 JGraphT 扩展模块
JGraphT还提供了一些扩展模块,如jgrapht-ext
模块,它包含了一些额外的图算法和数据结构,如流网络算法、最大流算法和图的拓扑排序算法。
<dependency><groupId>org.jgrapht</groupId><artifactId>jgrapht-ext</artifactId><version>1.5.1</version>
</dependency>
4. ArangoDB(多模型数据库)
4.1 多模型数据库概述
ArangoDB是一个多模型数据库,可以存储和查询多种类型的数据模型,包括文档型、图型和键-值型数据模型。它提供了一个统一的查询语言和API,使开发人员能够灵活地处理不同类型的数据。
4.2 数据模型与查询语言
ArangoDB支持多种数据模型,包括文档型、图型和键-值型数据模型。每种数据模型都有自己的查询语言和操作。
4.2.1 文档型数据模型
文档型数据模型是一种基于文档的数据模型,数据以文档的形式存储,并使用类似JSON的格式表示。ArangoDB使用AQL(ArangoDB Query Language)作为文档型数据模型的查询语言。
4.2.2 图型数据模型
图型数据模型是一种用于表示实体和它们之间关系的数据模型。ArangoDB使用AQL和图查询语言(Gharial)来查询和操作图数据。
4.2.3 键-值型数据模型
键-值型数据模型是一种简单的键值对存储模型,每个数据项由一个唯一的键和对应的值组成。ArangoDB提供了键-值型数据存储引擎,并使用AQL进行查询操作。
4.3 多模型数据操作与API
ArangoDB提供了多种API来操作多模型数据,包括AQL查询语言和Java API。
4.3.1 AQL 查询语言
AQL是ArangoDB的查询语言,用于在多模型数据上执行查询和操作。它支持文档型数据和图数据的查询,提供了丰富的查询语法和操作符。
4.3.2 Java API
ArangoDB还提供了Java API,用于在Java应用程序中与ArangoDB进行交互。Java API提供了对多模型数据的CRUD操作和查询功能。
4.4 应用场景与案例
ArangoDB适用于多种应用场景,包括:
- 文档存储和查询:适用于存储和查询具有复杂结构的文档数据,如博客、新闻和社交媒体数据。
- 图分析和图数据库:适用于构建和查询具有复杂关系的图数据,如社交网络、知识图谱和推荐系统。
- 键值存储和缓存:适用于快速存储和检索键值对数据,如用户会话信息和配置数据。
- 分布式应用程序:适用于构建分布式应用程序,通过分片和复制来提供高可用性和可伸缩性。
一些使用ArangoDB的案例包括:
- 阿里巴巴:使用ArangoDB构建大规模的线上图数据库,用于社交网络分析和推荐系统。
- Grindr:使用ArangoDB构建社交网络应用程序的后端,用于存储和查询用户数据和关系。
- ArangoDB自身:ArangoDB使用自己的多模型能力来存储和查询文档、图和键值数据,以提供高性能和灵活性。
ArangoDB是一种多模型数据库,支持文档型、图型和键-值型数据模型。以下是一个使用ArangoDB Java API进行多模型数据操作的示例代码:
import com.arangodb.ArangoDB;
import com.arangodb.ArangoDatabase;
import com.arangodb.entity.CollectionEntity;
import com.arangodb.entity.DocumentCreateEntity;
import com.arangodb.entity.EdgeDefinition;
import com.arangodb.entity.GraphEntity;
import com.arangodb.model.DocumentCreateOptions;
import com.arangodb.model.EdgeCreateOptions;
import com.arangodb.model.GraphCreateOptions;public class ArangoDBExample {public static void main(String[] args) {// 连接到ArangoDB数据库ArangoDB arangoDB = new ArangoDB.Builder().build();// 创建数据库String dbName = "myDatabase";arangoDB.createDatabase(dbName);// 切换到指定数据库ArangoDatabase db = arangoDB.db(dbName);// 创建文档集合String collectionName = "myCollection";CollectionEntity collection = db.createCollection(collectionName);// 插入文档数据DocumentCreateEntity<MyDocument> document = db.collection(collectionName).insertDocument(new MyDocument("1", "John Doe"), new DocumentCreateOptions());// 创建图String graphName = "myGraph";EdgeDefinition edgeDefinition = new EdgeDefinition().collection(collectionName).from("vertexCollection").to("vertexCollection");GraphEntity graph = db.createGraph(graphName, edgeDefinition, new GraphCreateOptions());// 创建顶点DocumentCreateEntity<MyVertex> vertex1 = db.graph(graphName).vertexCollection("vertexCollection").insertVertex(new MyVertex("1", "Alice"));DocumentCreateEntity<MyVertex> vertex2 = db.graph(graphName).vertexCollection("vertexCollection").insertVertex(new MyVertex("2", "Bob"));// 创建边EdgeCreateOptions options = new EdgeCreateOptions().waitForSync(true);db.graph(graphName).edgeCollection(collectionName).insertEdge(new MyEdge("1", vertex1.getId(), vertex2.getId()), options);// 关闭数据库连接arangoDB.shutdown();}
}// 自定义文档类型
class MyDocument {private String id;private String name;// 构造函数、Getter和Setter省略// ...
}// 自定义顶点类型
class MyVertex {private String id;private String name;// 构造函数、Getter和Setter省略// ...
}// 自定义边类型
class MyEdge {private String id;private String from;private String to;// 构造函数、Getter和Setter省略// ...
}
在这个示例代码中,我们将ArangoDB的相关操作嵌入到 ArangoDBExample
类的 main
方法中。这里使用了ArangoDB的Java API来连接到ArangoDB数据库,并进行多模型数据操作。
请注意,你需要根据自己的环境和需求进行适当的配置和调整,例如更改数据库名称、集合名称以及自定义数据类型的属性。确保在运行代码之前,已经正确安装ArangoDB,并导入相应的ArangoDB Java驱动程序。
这个示例代码演示了如何创建ArangoDB数据库、集合、文档和图,以及如何插入和操作数据。根据你的具体需要,你可以根据ArangoDB的API文档进行更多的操作和查询。
总结
本文对Neo4j、Apache TinkerPop、JGraphT和ArangoDB进行了全面的介绍和比较。我们探讨了它们的特点、数据模型、查询语言和API,以及适用的应用场景。无论是需要处理复杂关系数据的图数据库,还是支持多种数据模型的多模型数据库,读者都可以根据自己的需求做出明智的选择。这些数据库在各自的领域中都有广泛的应用,可以帮助开发人员构建高效和灵活的数据处理解决方案。
相关文章:

【Java万花筒】图数据库 vs 多模型数据库:哪种数据库适合你的应用场景?
解密图数据库与多模型数据库:特性、查询语言和成功案例的全景展示 前言 图数据库和多模型数据库在当今数据处理领域扮演着重要的角色。本文将介绍四个主要的图数据库和多模型数据库:Neo4j、Apache TinkerPop、JGraphT和ArangoDB,探索它们的…...

【射影几何13 】梅氏定理和塞瓦定理探讨
梅氏定理和塞瓦定理 目录 一、说明二、梅涅劳斯(Menelaus)定理三、塞瓦(Giovanni Ceva)定理四、塞瓦点的推广 一、说明 在射影几何中,梅涅劳斯(Menelaus)定理和塞瓦定理是非常重要的基本定理。通过这两个定…...

Powershell Install 一键部署Openssl+certificate证书创建
前言 Openssl 是一个方便的实用程序,用于创建自签名证书。您可以在所有操作系统(如 Windows、MAC 和 Linux 版本)上使用 OpenSSL。 Windows openssl 下载 前提条件 开启wmi,配置网卡,参考 自签名证书 创建我们自己的根 CA 证书和 CA 私钥(我们自己充当 CA)创建服务器…...

SERVLET线程模型
1. SERVLET线程模型 Servlet规范定义了两种线程模型来阐明Web容器应该如何在多线程环境中处理servlet。第一种模型称为多线程模型,默认在此模型内执行所有servlet。在此模型中,每次客户机向servlet发送请求时Web容器都启动一个新线程。这意味着可能有多个线程同时访问servle…...

【开源】基于JAVA+Vue+SpringBoot的新能源电池回收系统
目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 用户档案模块2.2 电池品类模块2.3 回收机构模块2.4 电池订单模块2.5 客服咨询模块 三、系统设计3.1 用例设计3.2 业务流程设计3.3 E-R 图设计 四、系统展示五、核心代码5.1 增改电池类型5.2 查询电池品类5.3 查询电池回…...

【蓝桥杯冲冲冲】Prime Gift
【蓝桥杯冲冲冲】Prime Gift 蓝桥杯备赛 | 洛谷做题打卡day31 文章目录 蓝桥杯备赛 | 洛谷做题打卡day31Prime Gift题面翻译题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 样例 #2样例输入 #2样例输出 #2 提示题解代码我的一些话 Prime Gift 题面翻译 给你 n n n 个…...

【PyQt】06-.ui文件转.py文件
文章目录 前言方法一、基本脚本查看自己的uic安装目录 方法二、添加到扩展工具里面(失败了)方法二的成功步骤总结 前言 方法一、基本脚本 将Qt Designer(一种图形用户界面设计工具)生成的.ui文件转换为Python代码的脚本。 pytho…...

λ-矩阵知识点
原文:链接 λ-矩阵 若矩阵 A \mathbf{A} A 的元素为关于 λ λ λ 的多项式,则称 A \mathbf{A} A 为 λ λ λ-矩阵 (表示为 A ( λ ) \mathbf{A}(λ) A(λ)). λ λ λ-矩阵也存在秩、逆、初等变换、相抵的概念, 但是有一些不同. 定义. λ λ λ-矩阵的秩是…...

cocos creator 3.x 预制体无法显示
双击预制体,进入详情页,没有显示资源 Bomb 是个预制体,但是当我双击进来什么都没有了,无法对预制体进行可视化编辑 目前我只试出来一个解决方法: 把预制体拖进Canvas文件中,这样就能展示到屏幕上ÿ…...

Tomcat之虚拟主机
1.创建存放网页的目录 mkdir -p /web/{a,b} 2.添加jsp文件 vi /web/a/index.jsp <% page language"java" import"java.util.*" pageEncoding"UTF-8"%> <html> <head><title>JSP a page</title> </head> …...

前后端数据校验
前端校验内容 前端开发中的必要校验,可以保证用户输入的数据的准确性、合法性和安全性。同时,这些校验也有助于提供良好的用户体验和防止不必要的错误提交到后端。 1、必填字段校验: 对于必填的字段,需确保用户输入了有效的数据…...

Python把png图片转成jpg图片
在Python中,您可以使用PIL(Python Imaging Library,也被称为Pillow)库来将PNG图片转换为JPG格式。以下是一个简单的示例: 首先,确保你已经安装了Pillow库。如果没有安装,可以使用pip来安装&…...

STM32搭建开发环境
常用开发工具简介 集成开发环境 MDK:全名RealViewMDK,是Keil公司(已被ARM收购的)一款集成开发环境,界面美观,简单易用,是STM32最常用的集成开发环境EWARM:IAR公司的一款集成开发环…...

C#入门详解_01_课程简介、C#语言简介、开发环境和学习资料的准备
文章目录 1. 课程简介2. C#语言简介3.开发环境与学习资料 1. 课程简介 开设本课程的目的 传播C#开发的知识,让更多的人有机会接触到软件开发行业引导有兴趣或者想转行的朋友进入软件开发行业 课程内容 完整讲述C#语言在实际软件开发中的应用采用知识讲述加实例程序…...

C++服务器端开发(2):确定服务器框架
选择C服务器框架时,可以考虑: 并发性能:C的强项之一是其并发性能。选择一个具有高并发处理能力的服务器框架,可以更好地满足大量并发请求的需求。例如,libevent、Boost.Asio和CppServer都是具有良好并发性能的C服务器框…...

CGAL::2D Arrangements-5
5.Arrangement无界曲线 前几章中构建和操作的所有Arrangement都只由线段引起,线段尤其是有界曲线。这样的Arrangement总是具有一个包含所有其他Arrangement特征的unbounded face。在本节中,我们将解释如何构造无界曲线的Arrangement。为了简化说明&…...

登录+JS逆向进阶【过咪咕登录】(附带源码)
JS渗透之咪咕登录 每篇前言:咪咕登录参数对比 captcha参数enpassword参数搜索enpassword参数搜索J_RsaPsd参数setPublic函数encrypt加密函数运行时可能会遇到的问题此部分改写的最终形态JS代码:运行结果python编写脚本运行此JS代码:运行结果&…...

CTF秀 ctfshow WEB入门 web1-10 wp精讲
目录 web1_查看源码 web3_抓包 web4-9_目录文件 web10_cookie web1_查看源码 ctrlu 查看源码 web3_抓包 查看源码,无果 抓包,找到flag web4-9_目录文件 GitHub - maurosoria/dirsearch: Web path scanner 下载dirsearch工具扫一下就都出来了 web4-…...

centos安装inpanel
前置条件 安装python yum -y install python 安装 cd /usr/local git clone https://gitee.com/WangZhe168_admin/inpanel.git cd inpanel python install.py 安装过程需要设置账户 密码 端口号 我设置的是admin:admin 10050 使用 打开浏览器,输入 http://192.168.168.…...

聊聊PowerJob Worker的ServerAddress
序 本文主要研究一下PowerJob Worker的ServerAddress PowerJobAutoConfiguration tech/powerjob/worker/autoconfigure/PowerJobAutoConfiguration.java BeanConditionalOnMissingBeanpublic PowerJobSpringWorker initPowerJob(PowerJobProperties properties) {PowerJobPr…...

师傅带练|大数据人工智能在线实习项目特色
大数据人工智能八大在线实习项目: 某实习网站招聘信息采集与分析 股票价格形态聚类与收益分析 某平台网络入侵用户自动识别 某平台广东省区采购数据分析 产品订单的数据分析与需求预测 基于注意力机制的评论者满意度分析 基于锅炉工况实现…...

ant-design-vue表格嵌套子表格,实现子表格有数据才显示左侧加号图标
ant-design-vue表格嵌套子表格,实现子表格有数据才显示左侧加号图标 通过使用插槽的方式,以下为全部项目的代码,关键的代码就两块,看注释 <template><a-card><a-form class"kit_form" ref"formRef…...

浅谈垃圾回收、内存泄漏与闭包
什么是垃圾? 在js中,垃圾通常指的是不再被程序使用的内存或对象。也就是说,垃圾是指程序中分配的内存空间或对象,但不再被程序使用或无法被访问到的内容 function createIncrease() {const doms new Array(100000).fill(0).map((…...

2 月 7 日算法练习- 数据结构-树状数组
树状数组 lowbit 在学习树状数组之前,我们需要了解lowbit操作,这是一种位运算操作,用于计算出数字的二进制表达中的最低位的1以及后面所有的0。 写法很简单: int lowbit(int x){return x &am…...

[AIGC] 开源流程引擎哪个好,如何选型?
开源流程引擎是指一种自动化的工作流解决方案,它可以帮助你管理和协调你的业务流程和决策。但是,在开源世界里,有许多不同的流程引擎可以选择。因此,如何选择适合你的开源流程引擎,是一个具有挑战性和价值的话题。 文章…...

服务器使用过程中遇到常见故障及解决方案(包括蓝屏死机、无法删除的文件如何清理、网络卡、服务器连接不上等)
互联网时代,服务器的安全性和稳定性尤为重要,支撑着整个互联网行业的信息和数据安全。最近经常有客户咨询服务器的日常故障排除方法。由于服务器复杂的硬件结构和繁琐的运行原理,经常会出现这样那样的问题,有时即使是最小的问题也…...

【推荐算法】userid是否需要建模
看到一个din的源码,将userid也构建了emb table。 于是调研了一下。即推荐算法需要建模userid吗? 深度学习推荐算法中user-id和item-id是否需要放入模型中作为特征进行训练呢? 深度学习推荐算法中user-id和item-id是否需要放入模型中作为特…...

图解支付-金融级密钥管理系统:构建支付系统的安全基石
经常在网上看到某某公司几千万的个人敏感信息被泄露,这要是放在持牌的支付公司,可能就是一个非常大的麻烦,不但会失去用户的信任,而且可能会被吊销牌照。而现实情况是很多公司的技术研发人员并没有足够深的安全架构经验来设计一套…...

新概念英语第二册(58)
【New words and expressions】生词和短语(16) blessing n. 福分,福气 disguise n. 伪装 tiny adj. 极小的 possess v. 拥有 cursed …...

java和javascript的区别和联系
Java和JavaScript是两种非常流行的编程语言,尽管它们的名称相似,但实际上它们在设计、用途和运行环境等方面有很大的不同。以下是Java和JavaScript之间的主要区别和联系: 区别 设计目的和用途: Java 是一种通用的、面向对象的编程…...