Mahout版本:0.7,hadoop版本:1.0.4,jdk:1.7.0_25 64bit. 本篇开始之前先来验证前篇blog的分析结果,编写下面的测试文件来进行对上篇三个job的输出进行读取: package mahout.fansy.item; import java.io.IOException; import java.util.Map; import org.apache.hadoop.io.Writable; import mahout.fansy.utils.read.ReadA…
Mahout版本:0.7,hadoop版本:1.0.4,jdk:1.7.0_25 64bit. 经过了SimilarityJob的计算共生矩阵后,就可以开始下面一个过程了,这个过程主要是共生矩阵的乘法,要说这个共生矩阵的乘法是啥意思?我也不是很清楚,不清楚就看代码呗. 首先明确共生矩阵,即共生矩阵的输入文件(也是上面个SimilarityJob的输出文件): similarityMatrix================= {102={101:0.14201473202245876,106:0…
Mahout版本:0.7,hadoop版本:1.0.4,jdk:1.7.0_25 64bit. 本篇分析上篇的分析是否正确,主要是编写上篇输出文件的读取以及添加log信息打印相关变量. 首先,编写下面的测试文件分析所有的输出: package mahout.fansy.item; import java.io.IOException; import java.util.Map; import mahout.fansy.utils.read.ReadArbiKV; import org.apach…
Mahout版本:0.7,hadoop版本:1.0.4,jdk:1.7.0_25 64bit. mahout算法源码分析之Collaborative Filtering with ALS-WR 这个算法的并行主要就应该是ParallelALSFactorizationJob这里的并行了,下图是这个Job的大部分操作: 这里分析并行就是看每个job任务是否可以出现多个map或者reduce即可. (1)首先分析前面三个itemRatings,对应的输入是原始文件,如果原始文件很大的话,那么这个任务…
Mahout版本:0.7,hadoop版本:1.0.4,jdk:1.7.0_25 64bit. 首先来总结一下 mahout算法源码分析之Collaborative Filtering with ALS-WR (三),这个写了三篇,基本都是写QR分解,然后矩阵进过处理得到U或者M的过程,但是还是没有讲出个所以然来.mahout官网上说其是根据这篇文献得来的Large-scale Parallel Collaborative Filtering for the Netflix Prize,本来我是想…
Mahout版本:0.7,hadoop版本:1.0.4,jdk:1.7.0_25 64bit. 额,好吧,心头的一块石头总算是放下了.关于Collaborative Filtering with ALS-WR这个算法中的那个QR分析,真心是太复杂了.以至于国庆后面三天基本都是在郁闷中过来的,想着自己的矩阵学的是有多差呀...后来算法验证弄懂之后才发觉,尼玛,java太坑爹了吧,矩阵求个逆,有那么复杂么!!! 下面来开始验证:首先应该获得了两个变量分别是Ai和Vi,如果这两个变量不知道是啥东西,可…
diff.js列表对比算法 源码分析 npm上的代码可以查看 (https://www.npmjs.com/package/list-diff2) 源码如下: /** * * @param {Array} oldList 原始列表 * @param {Array} newList 新列表 * @param {String} key 键名称 * @return {Object} {children: [], moves: [] } * children 是源列表 根据 新列表返回 移动的新数据,比…
Solr4.8.0源码分析(19)之缓存机制(二) 前文<Solr4.8.0源码分析(18)之缓存机制(一)>介绍了Solr缓存的生命周期,重点介绍了Solr缓存的warn过程.本节将更深入的来介绍下Solr的四种缓存类型,以及两种SolrCache接口实现类. 1.SolrCache接口实现类 前文已经提到SolrCache有两种接口实现类:solr.search.LRUCache 和 solr.search.LRUCache. 那么两者具体有啥区别呢? 1.1 solr.search.LR…
原文链接:深入源码分析SpringMVC底层原理(二) 文章目录 深入分析SpringMVC请求处理过程 1. DispatcherServlet处理请求 1.1 寻找Handler 1.2 没有找到Handler的处理 1.3 根据Handler寻找Adapter 1.4 拦截器的处理 1.5 Adapter处理请求 1.6 异常视图的处理 1.7 页面的跳转 2.总结 在上一篇文章中我们讲到了SpringMVC的初始化,分别初始化两个ApplicationContext,并且初始化一些处理器…
JUC源码分析-线程池篇(二)FutureTask JDK5 之后提供了 Callable 和 Future 接口,通过它们就可以在任务执行完毕之后得到任务的执行结果.本文从源代码角度分析下具体的实现原理. 1. 接口介绍 1.1 Callable 接口 对于需要执行的任务需要实现 Callable 接口,Callable 接口定义如下: public interface Callable<V> { V call() throws Exception; } 可以看到 Callable 是个泛型…