测试序列化后的长度

提示:需要用到的类,以及继承关系如下:

1.java.lang.Object
  |__ java.io.OutputStream
           |__ java.io.ByteArrayOutputStream
                  //description
                     public class ByteArrayOutputStream
                     extends OutputStream
                   //method
                     byte[] toByteArray()   //Creates a newly allocated byte array.
2.java.lang.Object
      |__ java.io.OutputStream
               |__ java.io.FilterOutputStream
                        |__ java.io.DataOutputStream
                             //description
                                public class DataOutputStream
                                extends FilterOutputStream
                                implements DataOutput
3. java.lang.Object
      |__ java.io.OutputStream
           // description
               public abstract class OutputStream
               extends Object
                implements Closeable, Flushable
            //mdthods
               void close()
               void flush()
               void write(byte[] b)
               void write(byte[] b, int off, int len)
               abstract void write(int b)
4.org.apache.hadoop.io
Interface Writable
 //description
    public interface Writable
 //methods
   void readFields(DataInput in)
   void write(DataOutput out)
5. java.lang.Object
       |__ org.apache.hadoop.io.IntWritable
              //description
                 public class IntWritableextends Object
                 implements   WritableComparable
               // methods
                   int get()
                   void readFields(DataInput in)
                   void set(int value)
                   void write(DataOutput out)
6. java.lang.Object
      |__ org.apache.hadoop.util.StringUtils
            //description
              public class StringUtils
              extends Object
            //method
               static String byteToHexString(byte[] bytes)
               static String capitalize(String s)
               static String[] split(String str)
               static Path[] stringToPath(String[] str)
               static URI[] stringToURI(String[] str)
               static String uriToString(URI[] uris) 

代码:

import java.io.DataOutputStream;
import java.io.ByteArrayOutputStream;
import java.lang.Byte;

import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.IOUtils;
import org.apache.hadoop.util.StringUtils;
public class TestWritable extends IntWritable {

  public static byte[] serialize(IntWritable writable) throws Exception {
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    DataOutputStream dataOut = new DataOutputStream(out);
    writable.write(dataOut);
    dataOut.close();
    return out.toByteArray();
  }

  public static void main(String[] args) throws Exception {
    IntWritable i = new IntWritable();
    i.set(8);
    System.out.println(i.get());
    byte[] bytes = serialize(i);
    System.out.println(bytes.toString().length());
    System.out.println(StringUtils.byteToHexString(bytes));
  }
}

hadoop2.2编程:序列化的更多相关文章

  1. hadoop2.2编程: 重写comparactor

    要点: 类型比较在hadoop的mapreduce中非常重要,主要用来比较keys; hadoop中的RawComparator<T>接口继承自java的comparator, 主要用来比 ...

  2. hadoop2.2编程:使用MapReduce编程实例(转)

    原文链接:http://www.cnblogs.com/xia520pi/archive/2012/06/04/2534533.html 从网上搜到的一篇hadoop的编程实例,对于初学者真是帮助太大 ...

  3. hadoop2.2编程:各种API

    hadoop2.2 API http://hadoop.apache.org/docs/r0.23.9/api/index.html junit API http://junit.org/javado ...

  4. hadoop2.2编程:DFS API 操作

    1. Reading data from a hadoop URL 说明:想要让java从hadoop的dfs里读取数据,则java 必须能够识别hadoop hdfs URL schema, 因此我 ...

  5. hadoop2.2编程:mapreduce编程之二次排序

    mr自带的例子中的源码SecondarySort,我重新写了一下,基本没变. 这个例子中定义的map和reduce如下,关键是它对输入输出类型的定义:(java泛型编程) public static ...

  6. c#基础语言编程-序列化

    引言 程序员在编写应用程序的时候往往要将程序的某些数据存储在内存中,然后将其写入某个文件或是将它传输到网络中的另一台计算机上以实现通讯.这个将程序数据转化成能被存储并传输的格式的过程被称为" ...

  7. ASP.NET Web API编程——序列化与内容协商

    1 多媒体格式化器 多媒体类型又叫MIME类型,指示了数据的格式.在HTTP协议中多媒体类型描述了消息体的格式.一个多媒体类型包括两个字符串:类型和子类型. 例如: text/html.image/p ...

  8. Python高级编程-序列化

    在程序运行的过程中,所有的变量都是在内存中,比如,定义一个dict: dict1 = {'name': 'Rob', 'age': 19, 'score': 90} 可以随时修改变量,比如把age改成 ...

  9. python IO编程-序列化

    原文链接:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/00143192607 ...

随机推荐

  1. 关于onSaveInstanceState的javadoc的渣渣翻译

    /** * Called to retrieve per-instance state from an activity before being * killed so that the state ...

  2. Jquery为下拉列表动态赋值与取值,取索引

    接触前端也不久对jquery用的也只是皮毛,写过去感觉能复用的发出来,大家指点下 1.下拉列表动态赋值 function initddlYear() { var mydate = new Date() ...

  3. 九度OJ 1079 手机键盘

    题目地址:http://ac.jobdu.com/problem.php?pid=1079 题目描述: 按照手机键盘输入字母的方式,计算所花费的时间 如:a,b,c都在“1”键上,输入a只需要按一次, ...

  4. python 自动化之路 day 08_2 网络编程

    本节内容 Socket介绍 Socket参数介绍 基本Socket实例 Socket实现多连接处理 通过Socket实现简单SSH 通过Socket实现文件传送 作业:开发一个支持多用户在线的FTP程 ...

  5. 安装交叉编译arm-linux-gcc环境

    设置好交叉编译的执行文件路径贴加到环境变量PATH 设置如下 export PATH=$PATH:/XXX/XXX/bin /etc/profile /~/.bashrc source  /etc/p ...

  6. js 验证输入框金额

    $("#ipt1").keyup(function () { var reg = $(this).val().match(/\d+\.?\d{0,2}/); var txt = ' ...

  7. node 无解回调 有解了

    http://cssor.com/javascript-workflow-by-tofishes.html

  8. Python httpsqs封装类

    ''' httpsqs队列封装 @author xp_go@qq.com a = HttpsqsClient('192.168.0.218','1218','httpsqsmmall.com') pr ...

  9. Flume用来收集日志,zeppelin用来展示

    Flume:Flume是一个分布式,可依赖的,用于高效率的收集.聚类.移动大量数据的服务.Flume使用基于流数据的简单而且可扩展的架构.由于拥有可调的依赖机制和许多故障恢复机制,Flume是健壮而且 ...

  10. Python中的redis学习笔记

    redis是一个key-value结构的数据库,value的格式可以使string,set,list,map(即python里面的dict),sorted set(有序集合) 1.初始化 1)直接连接 ...