测试序列化后的长度

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

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. 20160327javaweb 之JSP入门

    一.什么是JSP? JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术. JSP这门技术的最大的特点在于,写jsp就像在写h ...

  2. com.android.builder.packaging.DuplicateFile

    解决方法:     packagingOptions {        exclude 'META-INF/DEPENDENCIES'        exclude 'META-INF/NOTICE' ...

  3. c语言学习之基础知识点介绍(十七):写入读取结构体、数组、结构体数组

    一.结构体的写入和读取 //写入结构体 FILE *fp = fopen("/Users/ios/Desktop/1.data", "w"); if (fp) ...

  4. SQL 编译与重编译

    编译的含义 当SQLSERVER收到任何一个指令,包括查询(query).批处理(batch).存储过程.触发器(trigger) .预编译指令(prepared statement)和动态SQL语句 ...

  5. selenium2.0处理case实例(一)

    通过自动化脚本, 判断下拉框选项值是否按照字母顺序(忽略大小写)显示 case场景如下: 1)打开www.test.com;2)判断下拉框选项是否按照字母顺序排列(忽略大小写)3)选择其中一个任意选项 ...

  6. iOS-开发日志-UIButton

    UIButton属性 1.UIButton状态: UIControlStateNormal          // 正常状态    UIControlStateHighlighted     // 高 ...

  7. OC与Swift的区别一(文件结构)

    1.文件后缀名 oc的文件后缀名为:头文件.h  主体文件.m swift文件后缀名为:.swift 2. 代码分隔符 oc中使用分号;作为代码分隔符 swift中无需使用代码分隔符,以行作为代码分隔 ...

  8. IOS 学习笔记 20150314

    Objective--C 类与对象 1 关键字 @interace 类定义 @end 类结束 @implementation 类实现 : 继承 @public 公用 @private 私有 @prot ...

  9. Spring---Web MVC关于前台传值转换问题

    Cannot convert value of type [java.lang.String] to required type [java.util.List]. 问题在于:(String to E ...

  10. 一个关于hightcharts的x轴刻度问题

    最近做公司的一个报表系统,需要折线图,圆柱图形等来进行统计,经过最后考察,决定用当下较为流行的Highchart插件来进行实现,highchart用起来非常方便,只用对后台传过来的数据进行简单的处理后 ...