准备工作

2019-07-26  本文已影响0人  Love_Miss_11

    YangMap中比较重要的一点,就是摈弃掉HashMap的数组结构,因为HashMap的最大缺点就是大对象,而大对象产生的原因就是有一个特别巨大的数组table,这个数组直接导致了大对象的产生,从而导致OutOfMemoryException.

    YangMap需要解决的第一个问题,就是大对象的问题。

    首先先写一些粗略的东西吧:

    第一个肯定需要摒弃掉 数组,因为大数组对于JVM来说就是一场灾难。

    那么,如果有多个不同的对象,存放在YangMap当中,又要达到HashMap的同样的效果,首先第一点,就是要找到对象和对象之间的关联。

    这里先创造几个概念:

    1.对象和对象之间没有直接联系,对象和对象之间通过拐点进行通信。

    1.1 A->B的拐点是不可逆的,也就是说B->A是一个新的拐点。

    2.拐点有几种不同的类型,目前我想到的就是cornerNode和circleNode.

    3.拐点有一个基本特性,可以把这个称为Direction(方向),这里可以检点理解为Vector(向量机)。

    4.Pipeline(管道),因为进行转向需要时间,说简单点就是需要次数,pipeLine是一个容器,它就像一条复杂的N字路口,

    简单点来说就是在路口你可以有N种不同的选择,当你开车的时候,你可以往任何一个你想去的路口的下一个入口前进,当你进入某一个路口之后,走了一段之后你会进入下一个路口,你也发现或多或少的路口,每一次想到达一个确定的终点可以走很多不同的路,这些路的组合,

你可以通过控制步骤,在不同的时间点到达不同的路口,这个有些复杂,后面再说。

    5.Distance(距离),进入一个路口后,进入下一个路口的中间时间差。

    6.(Judgement)决定,进入某一个路口,决定进入哪一个路口的方法,下一个路口的决定怎么影响后续路口的决定。

    7.extension hole(扩展点’),可以想象成打洞,某一个对象上加入属性,这些属性可以为后续“拐点”或者pipeline交汇处进行合理设计提供依据。

上一篇 下一篇

猜你喜欢

热点阅读