重构笔记2-原则、测试

原则 重构原则,这属于定义性内容,这里不多写。 测试 文中的 JUnit 比较老,现在的 JUnit 技术很新很复杂很强大,后续会专门抽出一节内容介绍并且实践JUnit。

重构笔记3-重新组织函数

其实重新组织函数的方法,我们在没有学过重构的情况下,也是经常使用的。只不过我们没有统一规范,每次使用都要分析使用情况,都比较费劲。 例如有时候

重构笔记4-一次重构尝试

搞了这么久,我觉得有必要对我的项目重构一下。已经学了那么多,再加上我写的代码那么烂,重构肯定是很容易上手。 本文没什么干货,纯属自己的一点记录

重构笔记5-在对象之间搬移特性

上一次重构尝试好失败,不过学习还是要继续的,而且上次没学习的情况下搬移代码,易出错。这次我们学的是在对象之间搬移。学好了再尝试一下。 这一部分

重构笔记6-重新组织数据

这一次重新组织数据,我还没看之前,感觉并不是主动进行重构,二是为了后续重构提供便利。 自封装字段(Self Encapsulate Field) 其实很多人觉得这个有点

重构笔记7-简化条件表达式

简化条件表达式一方面是简化代码,另外也是提高可读性。 9.1 Decompose Conditional(分解条件表达式) Consolidate Conditional Expression(合并条件表达式) Consolidate

重构笔记8-简化函数调用

个人感觉简化函数调用不属于重构,二是开发就应该注意的事情。 函数改名 函数改名,应该遵循一些原则。例如函数名字应该指明做了什么而不是怎么做。 Add P

重构笔记9-处理概括关系

处理概括关系是重构重点,这些东西开发的时候可能没注意到 Pull Up Field(字段上移) 类似提取超类。 Pull Up Method(函数上移) 类似提取超类。 Pull Up

LPA

简介 neo4j LPA文档 “Near linear time algorithm to detect community structures in large-scale networks” 图算法

tinkerpop源码解析1-简单例子debug

tinkerpop 源码是JanusGraph 源码解析的第一步,我们需要大概有个了解。 demo 编写 我们可以直接复制来自 tinkerpop 官方的源码: public static void main(String[] args) { TinkerGraph graph = TinkerGraph.open(); GraphTraversalSource g = graph.traversal(); Vertex v

tinkerpop源码解析3-策略植入

前面我们大概看了tinkerpop 的代码怎么一步步变成 Traversal 和 Step,然后怎么调用和执行。我们忽略了 strategy 的相关操作。 官方介绍 在查看源码之前我们尽

janus官方实例调试解析

开始 打好断点。主要类: JanusGraphFactory.build() 建造者模式。 // new GraphDatabaseConfiguration // 创建两个 conf 对象 BasicConfiguration localBasicConfiguration = new BasicConfiguration(ROOT_NS,localConfig, BasicConfiguration.Restriction.NONE); ModifiableConfiguration overwrite = new ModifiableConfiguration(ROOT_NS,new CommonsConfiguration(), BasicConfiguration.Restriction.NONE); // get storeManager,根据配置反射生成。 final KeyColumnValueStoreManager storeManager =

JVM调优

problem janusgraph 导数据工具,数据量大的时候,一直卡主。调参意义不大。 通过 -XX:-UseGCOverheadLimit -verbose:gc -XX:+PrintGCDetails 并不能看出啥信息。 fix jmap [yangzhiyong@d28-235 graph_kg]$ jmap -heap 15294 Attaching to process ID 15294, please wait... Debugger attached successfully. Server compiler detected. JVM version is 25.74-b02 using thread-local object allocation.

平衡二叉树 平衡二叉树,就是左右最高差都不大于1的树。和二叉查找树不一样在于,在插入和删除的时候通过左旋和右旋的方式,使得树保持平衡。 实现可以