上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 20 下一页
摘要: Hadoop有两部分组成:HDFS(Hadoop DistributedFile System, Hadoop分布式文件系统)MapReduce1. HDFSHadoop分布式文件系统由一个管理节点(NameNode)和N个数据节点(DataNode)组成,每个节点均是一台普通的计算机。其底层实现为:把文件切割成若干个Block,然后把这些Block分散存储于不同的DataNode上,每个Block还可以复制数份存储于不同的DataNode上,达到容错容灾的目的。NameNode则是整个HDFS的核心,它通过维护一些数据结构,记录了每一个文件被切割成了多少个Block,这些Block可以从哪些 阅读全文
posted @ 2013-06-06 17:16 94julia 阅读(211) 评论(0) 推荐(0) 编辑
摘要: 处理器内存模型顺序一致性内存模型是一个理论参考模型,JMM和处理器内存模型在设计时通常会把顺序一致性内存模型作为参照。JMM和处理器内存模型在设计时会对顺序一致性模型做一些放松,因为如果完全按照顺序一致性模型来实现处理器和JMM,那么很多的处理器和编译器优化都要被禁止,这对执行性能将会有很大的影响。根据对不同类型读/写操作组合的执行顺序的放松,可以把常见处理器的内存模型划分为下面几种类型:放松程序中写-读操作的顺序,由此产生了total store ordering内存模型(简称为TSO)。在前面1的基础上,继续放松程序中写-写操作的顺序,由此产生了partial store order 内存 阅读全文
posted @ 2013-05-30 10:50 94julia 阅读(185) 评论(0) 推荐(0) 编辑
摘要: 与前面介绍的锁和volatile相比较,对final域的读和写更像是普通的变量访问。对于final域,编译器和处理器要遵守两个重排序规则:在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋值给一个引用变量,这两个操作之间不能重排序。初次读一个包含final域的对象的引用,与随后初次读这个final域,这两个操作之间不能重排序。下面,我们通过一些示例性的代码来分别说明这两个规则:public class FinalExample { int i; //普通变量 final int j; ... 阅读全文
posted @ 2013-05-30 10:49 94julia 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 锁的释放-获取建立的happens before 关系锁是java并发编程中最重要的同步机制。锁除了让临界区互斥执行外,还可以让释放锁的线程向获取同一个锁的线程发送消息。下面是锁释放-获取的示例代码:class MonitorExample { int a = 0; public synchronized void writer() { //1 a++; //2 } //3 public synchronized void rea... 阅读全文
posted @ 2013-05-30 10:47 94julia 阅读(153) 评论(0) 推荐(0) 编辑
摘要: volatile的特性当我们声明共享变量为volatile后,对这个变量的读/写将会很特别。理解volatile特性的一个好方法是:把对volatile变量的单个读/写,看成是使用同一个监视器锁对这些单个读/写操作做了同步。下面我们通过具体的示例来说明,请看下面的示例代码:class VolatileFeaturesExample { volatile long vl = 0L; //使用volatile声明64位的long型变量 public void set(long l) { vl = l; //单个volatile变量的写 } public ... 阅读全文
posted @ 2013-05-30 10:45 94julia 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 数据竞争与顺序一致性保证当程序未正确同步时,就会存在数据竞争。java内存模型规范对数据竞争的定义如下:在一个线程中写一个变量,在另一个线程读同一个变量,而且写和读没有通过同步来排序。当代码中包含数据竞争时,程序的执行往往产生违反直觉的结果(前一章的示例正是如此)。如果一个多线程程序能正确同步,这个程序将是一个没有数据竞争的程序。JMM对正确同步的多线程程序的内存一致性做了如下保证:如果程序是正确同步的,程序的执行将具有顺序一致性(sequentially consistent)--即程序的执行结果与该程序在顺序一致性内存模型中的执行结果相同(马上我们将会看到,这对于程序员来说是一个极强的保证 阅读全文
posted @ 2013-05-30 10:43 94julia 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 数据依赖性如果两个操作访问同一个变量,且这两个操作中有一个为写操作,此时这两个操作之间就存在数据依赖性。数据依赖分下列三种类型:名称代码示例说明写后读a = 1;b = a;写一个变量之后,再读这个位置。写后写a = 1;a = 2;写一个变量之后,再写这个变量。读后写a = b;b = 1;读一个变量之后,再写这个变量。上面三种情况,只要重排序两个操作的执行顺序,程序的执行结果将会被改变。前面提到过,编译器和处理器可能会对操作做重排序。编译器和处理器在重排序时,会遵守数据依赖性,编译器和处理器不会改变存在数据依赖关系的两个操作的执行顺序。注意,这里所说的数据依赖性仅针对单个处理器中执行的指令 阅读全文
posted @ 2013-05-30 10:41 94julia 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 并发编程模型的分类 在共享内存的并发模型里,线程之间共享程序的公共状态,线程之间通过写-读内存中的公共状态来隐式进行通信。在消息传递的并发模型里,线程之间没有公共状态,线程之间必须通过明确的发送消息来显式进行通信。同步是指程序用于控制不同线程之间操作发生相对顺序的机制。在共享内存并发模型里,同步是显式进行的。程序员必须显式指定某个方法或某段代码需要在线程之间互斥执行。在消息传递的并发模型里,由于消息的发送必须在消息的接收之前,因此同步是隐式进行的。Java的并发采用的是共享内存模型,Java线程之间的通信总是隐式进行,整个通信过程对程序员完全透明。如果编写多线程程序的Java程序员不理解... 阅读全文
posted @ 2013-05-30 10:30 94julia 阅读(187) 评论(0) 推荐(0) 编辑
摘要: 斯坦福大学机器学习斯坦福大学机器学习第十一课“机器学习系统设计(Machine learning system design)””学习笔记,本次课程主要包括5部分:1) Prioritizing what to work on: Spam classification example(工作的优先级:垃圾邮件分类例子)2) Error analysis(错误分析)3) Error metrics for skewed classes(不对称性分类的错误评估)4) Trading off precision and recall(精确度和召回率的权衡)5) Data for machine lea 阅读全文
posted @ 2013-05-29 19:35 94julia 阅读(365) 评论(0) 推荐(0) 编辑
摘要: 斯坦福大学机器学习斯坦福大学机器学习第十课“神经网络的学习(Neural Networks: Learning)”学习笔记,本次课程主要包括7部分:1) Deciding what to try next(决定下一步该如何做)2) Evaluating a hypothesis(评估假设)3) Model selection and training/validation/test sets(模型选择和训练/验证/测试集)4) Diagnosing bias vs. variance(诊断偏差和方差)5) Regularization and bias/variance(正则化和偏差/方差)6 阅读全文
posted @ 2013-05-29 19:34 94julia 阅读(300) 评论(0) 推荐(0) 编辑
上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 20 下一页