Spark GraphX是一个新的Spark API,它用于图和分布式图(graph-parallel)的计算。GraphX 综合了 Pregel 和 GraphLab 两者的优点,即接口相对简单,又保证性能,可以应对点分割的图存储模式,胜任符合幂律分布的自然图的大型计算。 本专题会详细介绍GraphX的实现原理,并对GraphX的存储结构以及部分操作作详细分析。
希望能够分析以太坊的代码来学习区块链技术和 GO 语言的使用,从依赖比较少的底层技术组件开始,慢慢深入到核心逻辑。
最近一直在看 vue 2.2.6 的源码,所以准备分几个模块分别记录一下。由于水平有限,对整个框架的源码还没有整体的把握。所以前期内容可能比较零散,更多的是记录自己看的过程。慢慢整理成比较完整的源码分析。 备注:最近为了加深印象,写了一个简单的 mvvm 的实现,参考了 Vue 中模板解析、数据监听、render 函数的生成 传送门。 该源码分析,会带着大家一起学习 Vue 的大部分代码,而不是简
算法的渐近分析是指定义其运行时性能的数学边界/框架。 使用渐近分析,我们可以很好地得出算法的最佳情况,平均情况和最坏情况。 渐近分析是输入约束,即,如果算法没有输入,则结论是在恒定时间内工作。 除了“输入”之外,所有其他因素都被认为是不变的。 渐近分析是指以数学计算单位计算任何操作的运行时间。 例如,一个操作的运行时间计算为f (n),并且可以用于另一个操作,其计算为g (n 2 )。 这意味着第
分析你的文本 问题到这里就变得稍微复杂了一些。传入到Document中的数据是如何转变成倒排索引的?查询语句是如何转换成一个个Term使高效率文本搜索变得可行?这种转换数据的过程就称为文本分析(analysis) 文本分析工作由analyzer组件负责。analyzer由一个分词器(tokenizer)和0个或者多个过滤器(filter)组成,也可能会有0个或者多个字符映射器(character
ObQuote... "One serious obstacle to the adoption of good programming languages is the notion that everything has to be sacrificed for speed. In computer languages as in life, speed kills." — Mike Vani
在“SQL”图表,你可以分析查询并确定查询速度慢的原因。 若要深入查看特定查询,请点击图例标签或双击图表上的条形段。你可以了解查询过去的执行情况,并在单个画面中查看所有相关的故障排除信息。点击选项卡以显示与查询有关的更多图表。 分析图表 选择“分析”选项卡,然后向下滚动页面以查看分析图表。将鼠标悬停在其中一个图表上的某个点上,会自动弹出带有垂直线的工具提示值。
提示: ●输入点、线、面指定距离为半径来创建区域。 ●保存图层可以是新建图层或是已有区域图层。 ●缓冲半径数值不能大于50000米。 操作步骤: ①选择"统计分析"模块。 ②点击"缓冲区分析"。 操作动图: [查看原图]
缓冲区分析 缓冲区分析,即以某个点为中心,创建一个指定距离为半径的圆,这种圆生成的是一个区划面,可以保存下来,存在缓冲区图层里,结合“点面互查”进行网点、区划的空间分析。 例如:一个广告牌是一个网点,那广告牌图层生成一个半径为2公里的缓冲区保存为缓冲区图层后,就可以通过店面互查功能,查询每个广告牌覆盖的客户网点图层,覆盖率有多少,从而帮助决策,是否应该剔除掉相邻比价近的广告排位,或者补充漏掉区域的
主要内容:1.LimitLatch 介绍,2.LimitLatch使用场景,3.LimitLatch 源码分析1.LimitLatch 介绍 之前分析的ReentrantLock和CountDownLatch都是JDK中对AQS的利用,分别实现了独占锁和共享锁。 接着我们再来看一个LimitLatch,来学习下我们可以怎么将AQS应用到我们自己的程序中。 LimitLatch则更像是java中的Semaphore,用于控制资源的使用。用作限流器。 2.LimitLatch使用场景 Tomcat使
主要内容:1.ReentrantReadWriteLock 介绍,2.读写锁,3.读写锁源码分析1.ReentrantReadWriteLock 介绍 ReentrantReadWriteLock即可重入读写锁,其同时应用了共享锁和排斥锁,写锁使用排斥锁,读锁使用共享锁,从而实现读读共享,读写互斥,写写互斥。 当读操作远远高于写操作时,这时候使用读写锁让读——读可以并发,提高性能。 1.1 Sync 读写锁使用的是一个Sync同步器(使用一个对象),可以分别创建。有公平锁和非公平锁两种子类进
主要内容:1.CountDownLatch 介绍,2.实例代码,3.源码分析1.CountDownLatch 介绍 CountDownLatch即减少计数,是AQS共享锁的另一个经典应用。其应用主要是一个(或多个)线程等待一系列线程完成某些操作后才继续向下执行的场景。 换种程序上的描述:A线程申请资源await,进行阻塞等待,一系列线程进行某些操作(共state个),每完成一个释放一次资源coutDown。所有操作完成后,A线程资源获取成功,继续向下执行。 2.实例代码
主要内容:1.Semaphore 介绍,2.实例代码,3.资源获取acquire,4.释放资源1.Semaphore 介绍 Semaphore即信号量,常用于同时限制访问某些资源的线程数量。 其内部抽象类Fair继承了AQS,Semaphore正是通过Sync实现数量的控制 1.1 Sync Semaphore是基于AQS原理实现的,但并不是说Semaphore继承了AbstractQueuedSynchronizer抽象类,而是其内部类进行了AbstractQueuedSynchroni
主要内容:1.Condition 介绍,2.等待方法介绍,3.唤醒方法介绍,4.整体逻辑介绍1.Condition 介绍 是AQS中基于排斥锁的另一应用,其await和sign,signAll方法可以用于替代Object的wait和notify,notifyAll方法。 借助可以实现多路选择通知,通过和方法可以实现等待/通知机制(单路通知) 具体实现类是的内部类 代码中调用的实际调用的是类中的方法。 1.1 结构介绍 Condition ConditionObject 内部维护了一个基于
主要内容:文章目录,1.案例说明,2.代码过程,3.问题解析1.案例说明 相当于3个客户访问一个线程。 2.代码过程 2.1 初始过程一 AQS 中的 state表示信号灯, 0表示没有人占用此线程 2.2 线程A的改变 通过CAS尝试将state从0变为1, 如果成功的话, 则获得资源, 失败的话, 进入到else中, 尝试获得资源。 compareAndSetState():底层调用的是unsafe的compareAndSwapInt,该方法是原子操作