首页

来自智得网
跳转至: 导航、​ 搜索

精选文章

Graphviz查看全文
Graphviz编写的Hash结构.svg
Graphviz 是一个开源的图形编辑语言,可以进行图形的可视化编辑,绘制结构化的图标和图形非常方便。

Graphviz 使用 DOT 语言来表示图形。 DOT语言可以用简单的文本来表示结点,连线,布局等。 DOT语言描述结点,连线,布局的文本都非常简单,而且从文本本身可以推测中起含义。 结点 DOT语言描述结点的方式是`NodeName`[label=`LabelName`]。 结点可以分为普通的节点和列表节点,列表节点可以使用竖线分隔多个Label来表示,`NodeName`[label=`LabelName1|LabelName2|LabelName3|...|LabelNameN`]。 列表节点的展示可以横排或者竖排,横排使用中括号[]还包裹列表元素,竖排使用{}包裹列表元素。 连线 使用`NodeName1`->`NodeName2`的方式可以绘制一条从节点1到结点2的直线。 `NodeName1`->{`NodeName2` `NodeName3`},可以使NodeName1的结点指向用{}包裹,空格分隔的多个结点。 splines=false;可以强制连线都是直线。 布局 布局可以分为水平布局(左右布局)和垂直布局,rankdir=LR;指定水平布局,在全局范围内生效。 水平布局的时候,可能有一些record需要垂直摆放,label="{}",如果和randdir一致,则不需要{}。 技巧 绘图过程中可以创建一些隐藏结点使得图形对齐。 Hash表 B+树

叶子节点对齐的时候注意,如果是普通的record节点,rank=same,不同的weight权重…
Neo4j查看全文
Neo4j是著名的图数据库。

图数据库是图数据库管理系统的简称,使用图形化的模型进行查询的数据库,通过节点、边和属性等方式来表示和存储数据,支持增删改查(CRUD)等操作。 存储引擎

Neo4j采用了免索引邻接的数据库引擎中,每个节点都会维护相邻节点的引用。每个节点都表现为其附近节点的微索引,通过这些微索引可以直接定位数据的位置信息。从而使得数据检索的时间复杂度从 O(log(n)) 优化到 O(1) 。
反射【Java】查看全文
Java的Class关系示意图.png
反射是Java语言的一种机制,可以在运行时获取操作对象的具体类型,而且通过类型可以获取类的构造,包括成员变量以及成员方法,并且可以动态的调用这些方法或者改变这些变量的值。

Java一般认为是一门静态语言。静态语言是指编译时就可以确定变量的数据类型的语言,大多数静态语言要求在使用变量之前必须声明数据的类型。常见的静态语言有C、C++、Golang等,Java通常也被认为是静态语言。 PHP、JavaScript、Python、Perl等语言的变量在使用前不需要声明数据类型,在运行时根据被赋值的值类型才确定数据的类型,此类语言称为动态语言。 而通过反射的能力,Java语言可以动态的改变对象的值,甚至可以动态改变数据类型,所以反射使得Java语言具备了动态语言的能力。 Java主要通过Class类来实现反射的能力,JVM在完成一个类的加载过程之后,在堆内存会构造一个Class类型的对象,该对象包含了类完整的构造信息,通过该类可以窥视到Java类的结构,通过Class类可以实例化类的对象,获取类的方法,修改方法的值。 反射是一种“语义同像”,语义同像将程序的一些内部状态,例如对象的属性,对象的方法指针等暴露给程序的运行态,通过这种能力,程序可以在运行时动态修改对象的值。 反射需要存储或者可以关联对象的元信息,因为静态语言在编译时已经可以确定对象的类型,所以这些信息不是运行时的必须信息,为了执行效率,这些信息往往在编译后的信息中剥离,如果要支持反射,就需要存储这些相关的信息。 反射违反了面向对象编程中的封装性。 Java中反射的核心来自Class类。

Class类是描述对象类型信息的类,除了Class类自身之外,所有类都有一个Class类型的对象…

热门分类

算法题库

精选内容