书籍推荐:

  实例代码 :http://download.csdn.net/detail/jiangtao_st/7677503

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvamlhbmd0YW9fc3Q=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

  1.  用户对象

    /**
    *
    * <p>
    *用户实体对象定义
    * </p>
    *
    * @author 卓轩
    * @创建时间:2014年6月20日
    * @产品: UIC
    * @version: V1.0
    */
    public class UserDO implements Serializable { private static final long serialVersionUID = 7289036533757178921L; /**
    * userid
    */
    private int userId; /**
    * email
    */
    private String email; /**
    * uname
    */
    private String uname; /**
    * unick
    */
    private String unick; /**
    * sex
    */
    private Integer sex; public int getUserId() {
    return userId;
    } public void setUserId(int userId) {
    this.userId = userId;
    } public String getEmail() {
    return email;
    } public void setEmail(String email) {
    this.email = email;
    } public String getUname() {
    return uname;
    } public void setUname(String uname) {
    this.uname = uname;
    } public String getUnick() {
    return unick;
    } public void setUnick(String unick) {
    this.unick = unick;
    } public Integer getSex() {
    return sex;
    } public void setSex(Integer sex) {
    this.sex = sex;
    } @Override
    public String toString() {
    return "UserDO ["+this.userId+"],["+this.uname+"],["+this.unick+"],["+this.email+"]";
    } public byte [] coder(){ ByteBuffer buffer = ByteBuffer.allocate(1024); byte [] email = this.email.getBytes();
    buffer.putInt(email.length);
    buffer.put(email); byte [] uname =this.uname.getBytes();
    buffer.putInt(uname.length);
    buffer.put(uname); byte [] unick = this.unick.getBytes();
    buffer.putInt(unick.length);
    buffer.put(unick); buffer.putInt(this.sex);
    buffer.putInt(this.userId); buffer.flip();
    byte[] result = new byte[buffer.remaining()];
    buffer.get(result);
    return result;
    } }
  2.  对例如案

    /**
    *
    * <p>
    * 对照对象编解码 优劣
    *
    * 代码通过从同一个对象,使用jdk序列化 和 二进制编解码 ,从运行时间,产生的字节大小作对照
    * </p>
    *
    * @author 卓轩
    * @创建时间:2014年7月8日
    * @version: V1.0
    */
    public class ObjectCoderCompare { /**
    * 对照序列化文件大小
    */
    @Test
    public void sizeByteCompare(){ try {
    UserDO zhuoxuan = new UserDO();
    zhuoxuan.setUserId(113445);
    zhuoxuan.setSex(1);
    zhuoxuan.setUname("卓轩");
    zhuoxuan.setUnick("zhuoxuan");
    zhuoxuan.setEmail("zhuoxuan@mogujie.com"); System.out.println("byte array 序列化大小:" + zhuoxuan.coder().length); //jdk 序列化对象
    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    ObjectOutputStream objectOutputStream = new ObjectOutputStream(bos);
    objectOutputStream.writeObject(zhuoxuan);
    objectOutputStream.flush();
    objectOutputStream.close();
    byte[] byteArray = bos.toByteArray();
    System.out.println("jdk序列化对象大小:" + byteArray.length);
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    } /**
    * 运行时间,性能对照
    */
    @Test
    public void performCompare(){ try {
    UserDO zhuoxuan = new UserDO();
    zhuoxuan.setUserId(113445);
    zhuoxuan.setSex(1);
    zhuoxuan.setUname("卓轩");
    zhuoxuan.setUnick("zhuoxuan");
    zhuoxuan.setEmail("zhuoxuan@mogujie.com"); long startTime = System.currentTimeMillis();
    int count = 1000000;
    for (int i = 0; i < count; i++) {
    zhuoxuan.coder();
    }
    long endTime = System.currentTimeMillis();
    System.out.println("byte array 运行时间:" + (endTime-startTime) + "ms"); startTime = System.currentTimeMillis();
    for (int i = 0; i < count; i++) {
    //jdk 序列化对象
    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    ObjectOutputStream objectOutputStream = new ObjectOutputStream(bos);
    objectOutputStream.writeObject(zhuoxuan);
    objectOutputStream.flush();
    objectOutputStream.close();
    byte[] byteArray = bos.toByteArray();
    }
    endTime = System.currentTimeMillis();
    System.out.println("jdk 序列化对象 运行时间:" + (endTime-startTime) + "ms");
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } }
    }
  3. 执行结果



    byte array 序列化大小:54

    jdk序列化对象大小:267

Java网络编程-对象编解码方案、优劣对照的更多相关文章

  1. 这份书单会告诉你,Java网络编程其实很重要

  2. Java 网络编程---分布式文件协同编辑器设计与实现

    目录: 第一部分:Java网络编程知识 (一)简单的Http请求 一般浏览网页时,使用的时Ip地址,而IP(Internet Protocol,互联网协议)目前主要是IPv4和IPv6. IP地址是一 ...

  3. Java网络编程和NIO详解9:基于NIO的网络编程框架Netty

    Java网络编程和NIO详解9:基于NIO的网络编程框架Netty 转自https://sylvanassun.github.io/2017/11/30/2017-11-30-netty_introd ...

  4. Java网络编程和NIO详解5:Java 非阻塞 IO 和异步 IO

    Java网络编程和NIO详解5:Java 非阻塞 IO 和异步 IO Java 非阻塞 IO 和异步 IO 转自https://www.javadoop.com/post/nio-and-aio 本系 ...

  5. Java网络编程与NIO详解11:Tomcat中的Connector源码分析(NIO)

    本文转载 https://www.javadoop.com 本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.c ...

  6. 20145205 《Java程序设计》实验报告五:Java网络编程及安全

    20145205 <Java程序设计>实验报告五:Java网络编程及安全 实验要求 1.掌握Socket程序的编写: 2.掌握密码技术的使用: 3.客户端中输入明文,利用DES算法加密,D ...

  7. Java 网络编程学习总结

    新手一枚,Java学习中,把自己学习网络编程的知识总结一下,梳理下知识,方便日后查阅,高手莫进. 本文的主要内容: [1]    网络编程认识                [2]  TCP/IP编程 ...

  8. 20145212 实验五《Java网络编程》

    20145212 实验五<Java网络编程> 一.实验内容 1.运行下载的TCP代码,结对进行,一人服务器,一人客户端: 2.利用加解密代码包,编译运行代码,一人加密,一人解密: 3.集成 ...

  9. 20145213《Java程序设计》实验五Java网络编程及安全

    20145213<Java程序设计>实验五Java网络编程及安全 实验内容 1.掌握Socket程序的编写. 2.掌握密码技术的使用. 3.设计安全传输系统. 实验预期 1.客户端与服务器 ...

随机推荐

  1. javascript:设置URL参数的方法,适合多条件查询

    适用场景:多条件查询情况,如下图所示: 通过设置URL参数,再结合数据源控件设置的RUL参数,就能进行简单的多条件查询了. javascript函数: <mce:script type=&quo ...

  2. 华为OJ:计算两个自然时间相加

    按要求一步步做就好 import java.util.Scanner; public class dateAdd { public static void main(String args[]){ S ...

  3. hdu4722之简单数位dp

    Good Numbers Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Tot ...

  4. 【AC大牛陈鸿的ACM总结贴】【ID AekdyCoin】人家当初也一样是菜鸟

    acm总结帖_By AekdyCoin 各路大牛都在中国大陆的5个赛区结束以后纷纷发出了退役帖,总结帖,或功德圆满,或死不瞑目,而这也许又会造就明年的各种"炸尸"风波.为了考虑在发 ...

  5. Swift - 给图片添加滤镜效果(棕褐色老照片滤镜,黑白滤镜)

    Core Image是一个强大的滤镜处理框架.它除了可以直接给图片添加各种内置滤镜,还能精确地修改鲜艳程度, 色泽, 曝光等,下面通过两个样例演示如何给UIImage添加滤镜. 1,棕褐色滤镜  -  ...

  6. 服务启动错误1053,一例解决方案(给用户添加NetworkService权限)

    WIndows XP的服务中,有一个服务需要以NT  AUTHORITY/NetworkService用户启动,但怎么也启动不起来,使用本地系统帐户启动没有任何问题,但是换成NetworkServic ...

  7. iphone开发教程下载

    iphone开发教程下载 3月份花了1个月研究ios 开发,看了几百页的iphone开发教程,累积了不少电子书,盘点一下 Beginning iPhone 4 Development: Explori ...

  8. MVC简单分页

    对Car汽车表分页 实现简单分页,放在这里方便查看回顾,自定义每页几条有点问题,有待完善······ 1.新建mvc项目 2.添加linq to sql 数据库连接 3.添加CarBF类 using ...

  9. 小细节--Extjs中,renderTo 和applyTo的区别

    说到web前端框架,extjs绝对算是非常优秀的一个. extjs中,两个方法很像,renderTo和applyTo,我在网上也搜了很多相关的内容,在这里举例为大家进行区分,欢迎大家交流指正. 主要区 ...

  10. css3动画与js动画的一些理解

    http://zencode.in/19.CSS-vs-JS%E5%8A%A8%E7%94%BB%EF%BC%9A%E8%B0%81%E6%9B%B4%E5%BF%AB%EF%BC%9F.html 首 ...