`
spark_li
  • 浏览: 19897 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论
文章列表
1. CyclicBarrier : 初始化count是固定的, 通常用于多个线程同时等待彼此,当所有线程到达某一点时,同时继续进行。例子:  Int N = 3; final CyclicBarrier cb = new CyclicBarrier(N); for (int i = 0; i < N; i++) { new Thread(new Runnable() { public void run() { Do xxx; cb.await( ...
package org.spark; public class app { public static void main(String[] args) { Convertor<Object> objConvertor = new Convertor<Object>(); String result = convert(2, objConvertor);// 协变, 看起来好像是把一个基类的对象转换为子类,其实不是。 System.out.print(result); ...
读取文件:   下图是HDFS读取文件的流程:   这里是详细解释:       1.当客户端开始读取一个文件时,首先客户端从NameNode取得这个文件的前几个block的DataNode信息。(步骤1,2)   2.开始调用read(),read()方法里,首先去读取第一次从NameNode取得的几个Block,当读取完成后,再去NameNode拿下一批Block的DataNode信息。(步骤3,
概念:HDFS会把一个很大的文件分块(与传统的文件系统类似),存放在不同的DataNode上。不过这个块是个逻辑概念,比较大,默认是64M。Hadoop以“管理者-工作者”模式运行。NameNode就是管理者,它保存了文件系统中所有文件以及目录信息。也记录了每个文件的分块信息。但这些分块具体在哪些机器上存储则由DataNode自己上报。容错:NameNode的容错:所有的文件访问都要通过NameNode来进行,所以NameNode至关重要。一旦NameNode发生毁坏,则整个系统都不可用。HDFS提供了两种容错机制来保证NameNode的可用性:1 第一种方法是把文件元数据写入NFS,备份在另一 ...
Hadoop不是万能的,有些场景适用,有些不适用。 Hadoop设计的目的主要包括下面几个方面,也就是所谓的适用场景: 1:超大文件      可以是几百M,几百T这个级别的文件。 2:流式数据访问       Hadoop适用于一次写入,多次读取的场景,也就是数据复制进去之后,长时间在这些数据上进行分析。 3:商业硬件       也就是说大街上到处都能买到的那种硬件,这样的硬件故障率较高,所以要有很好的容错机制。   接下来说说不适用的场景: 1: 低延迟数据访问        Hadoop设计的目的是大吞吐量,所以并没有针对低延迟数据访问做一些优化,如果要求低延迟, ...
在Hadoop中实现Map/Reduce模型,我们需要继承如下两个类:   public class MaxTemperatureMapper extends MapReduceBase implements Mapper<LongWritable, Text , Text , IntWritable>       public class MaxTemperatureReducer extends MapReduceBase implements Reducer、<Text , IntWritable , Text , IntWritable> ...
ASP.Net MVC 中配置Route的时候可以设置一个默认的Route。比如我要在输入http://localhost的时候默认进入http://localhost/home/index。可以在Global.asax中这么配置:   routes.MapRoute( "Default", // Route name "{controller}/{action}/{id}", // URL with parameters ...
在Ibatis中我们要执行一个事务,代码是这样的:   sqlMapClient.startTransaction (); sqlMapClient.add (xxxxx); sqlMapClient.update (xxxxx); sqlMapClient.commitTransaction (); 看到这段代码你会不会有一个问题,sqlMapClient里面到底是怎么做的? 我能猜到有两种做法:   1. 调用sqlMapClient.startTransaction时会通知数据库事务开始了,然后依次执行add和update,最后告诉数据库 ...
Razor的模板文件.cshtml会在运行时被编译为一个C#的class,基类为WebViewPage。 也就是说在cshtml中选中一个变量,比如说@Html 然后按F12. 会跳到WebViewPage的类定义中。  我在下载了MVC的源码,并把web工程中的引用指向源码的工程后,再在cshtml中F12过去的话,就跑到WebPage类中去了。困扰了好久,发现是个bug。正常引用官方的MVC dll的话是正常的。   解决问题的办法是在你的cshtml中显式指定BaseView,像这样: @inherits System.Web.Mvc.WebViewPage<YourM ...
大部分企业应用开发和互联网项目的开发都在应用IOC框架。 但是大部分时候,我们也就是这么用用,很少人有去考虑用的到底对不对,合适不合适。   大家都知道依赖倒置原则,这里给出定义: 高层模块不能依赖于底层模块,两者都应该依赖于抽象。   是不是有点颠覆三观!! 难道业务层不应该依赖数据访问层吗。难道是数据访问层依赖业务层吗?   下面是一个最常见的设计,业务层依赖 数据访问层,远程调用,文件访问,log模块等等: 这种设计被称之为 Naive Design。 一旦业务层依赖的任何一个模块发生变化,都会影响到业务层。变化通常是引入错误的原因。 那么我们以依赖倒置的原则来重新 ...
用习惯Visual Studio的人一开始学习Maven可能很难以理解。 VS里面有个solution的概念,一个sln可以包含多个project,这些project之间的依赖都可以通过可视化的方式添加。如下图: 这里有三个项目,main依赖dao和domain,dao依赖domain。   在Maven中没有solution的概念,一般是通过一个父工程来充当管理子工程的角色,达到和solution同样的目的。 这种关系在Maven中如何表达呢,看下图:  图中有4个工程,parent工程就充当了solution的作用,一般在它里边并不会写代码,只是用来组织子工程。 来看一下它 ...
依赖注入是指在创建一个对象时,自动地创建它依赖的对象,并注入。大家都知道有三种途径来实现依赖注入,我这里总结一下这三种方式的优缺点:   1.构造方法注入: 优点: 在构造方法中体现出对其他类的依赖,一眼就能看出这个类需要其他那些类才能工作。 脱离了IOC框架,这个类仍然可以工作,POJO的概念。 一旦对象初始化成功了,这个对象的状态肯定是正确的。 缺点: 构造函数会有很多参数(Bad smell)。 有些类是需要默认构造函数的,比如MVC框架的Controller类,一旦使用构造函数注入,就无法使用默认构造函数。 这个类里面的有些方法并不需要用到这些依赖(Bad ...
Global site tag (gtag.js) - Google Analytics