文章列表
Hadoop源代码分析——io.*(二)
- 博客分类:
- Hadoop
从官方的WordCount中不难看出,Hadoop在读取文本时的至少要有两种分割的功能。即可以将一篇文档按行切割分离,同时可以将一行中的文本依据空格切割出来。这样,类似与Java的I/O操作,只不过是以单词为单位向下迭代。每次迭代时读出一个单词并取出。
Text word = new Text();然后word.set(itr.nextToken());context.write(word, one) (one是数值为1的整数型变量)。将word逐次编号,并将word的value设置为1表示独到的单词已经出现了一次。最后将全部读取结果保存到Context ...
背景知识:
Hadoop类、接口的标识:
Hadoop的类、接口文件都要引入两个类InterfaceAudience;InterfaceStability;InterfaceAudience用于标 记该类文件可以被访问的权限。熟悉的有public、private。LimitedPrivate 只能在归属的架构中例如HDFS、HBase中被引用。InterfaceStability用于标记该类文件相对于Hadoop版本升级的稳定性。Stable:只有在主版本升级时可能不兼容。Evolving: 在子版本升级时可能不兼容。Unstable:最不稳定的,兼容性在任何版 ...
本文通过Java的I/O接口实现文件在电脑磁盘内的复制。仔细观察会发现,该程序复制文件的速度要远远比系统复制文件的速度慢,可能是由于系统在磁盘内复制是地址的发送过程,而该程序采用了输入、输出流完全抄写的方法。
import java.io.File;//文件类
import java.io.FileInputStream;//文件的输入流
import java.io.FileOutputStream;//文件的输出流
import java.io.FileNotFoundException;//文件未找到时的报错
public class Test { ...
本文旨在练习哈夫曼树的创建、遍历方法来生成码表对文字进行压缩。故读仅仅对英文.txt文本进行读取并压缩,生成文档。由于哈夫曼编码压缩是基于统计模型的编码压缩,适用于压缩静态文件流、同时希望元素重复频率高。因此该压缩算法没有推广到对于任意类型文件的压缩。
压缩思路:
英文文档中主要由26个英文字母 (区分大小写),空格、换行符、常用标点符号、阿拉伯数字组成。不妨将它们看作是标签不同的桶,以便进行大量文本的分类。这样,对于一片篇幅很大的英文文档 (如维克多-雨果的《悲惨世界》:约125万字),需要建立英文字符、空格、换行符、常用标点符号、阿拉伯数字的数组 ...
32位全范围的int查重方法
- 博客分类:
- 数据结构与算法
32位RAM处理器中,int代表4个字节,具有32位,它的范围是-2147483648~2147483647的整数。
若想对全范围整数进行查重,即对于任意数量任意大小的int变量I,判断I是否出现在已知的数组中。若通过整数数组int[]来表示全范围的整数,那么数组的长度为2^32。这样会使普通PC机器的内存溢出。考虑到任意int是由32位组成的,即如果能使每一int与32位形成唯一且互不重复的映射即可。故建立字节数组byte[] B。1 int = 8 bit,那么B的长度为2^29的长度,300MB的内存开销即可满足。
int[] 与byte[] 对 ...
关于JAVA线程的总结(一)
- 博客分类:
- JAVA语言学习总结
(一)进程与线程的关系:
系统每启动一个任务就会开启一个新的进程,一个任务的一个或者多个线程只能在该任务进程的作用域内运行,各各进程间互不干扰,没有共用的内存空间。
(二)JAVA创建进程的方法:
...
实现画板功能可通过现有的ImageView组件,也可以通过自定义DrawingView组件,添加新的画板功能。二组件都继承android.view.View类。
一:DrawingView程序部分: (1)继承View类,重写构造方法。在传入参数Context、AttributeSet的方法中新建画笔对象paint。 (2)重写onDraw(android.graphics.Canvas)方法:
public void onDraw(Canvas canvas) {
...