第九课 自定义序列化协议
来源:互联网 发布:大数据时代 全本下载 编辑:程序博客网 时间:2024/05/21 21:41
public class Test1 { public static void main(String[] args) throws IOException { int id= 101; int age= 21; ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); byteArrayOutputStream.write(int2byte(id)); byteArrayOutputStream.write(int2byte(age)); byte[] byteArray = byteArrayOutputStream.toByteArray(); System.out.println(Arrays.toString(byteArray)); System.out.println("=================================="); ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(byteArray); byte[] idbytes = new byte[4]; byteArrayInputStream.read(idbytes); System.out.println("id:"+byte2int(idbytes)); byte[] agebytes = new byte[4]; byteArrayInputStream.read(agebytes); System.out.println("age:"+byte2int(agebytes)); } /** * @param i * @return bytes * @category 大端字节序列(先写高位,在写低位)=====小端字节序列(先写低位,在写高位) */ public static byte[] int2byte(int i){ byte[] bytes=new byte[4]; bytes[0]=(byte)(i>>3*8); bytes[1]=(byte)(i>>2*8); bytes[2]=(byte)(i>>1*8); bytes[3]=(byte)(i>>0*8); return bytes; } /** * @param b */ public static int byte2int(byte[] b){ return b[0]<<3*8| b[1]<<2*8| b[2]<<1*8| b[3]<<0*8; }}
public class Test2 { public static void main(String[] args) { int id= 101; int age= 21; //指定大小 固定不变 ByteBuffer byteBuffer = ByteBuffer.allocate(8); byteBuffer.putInt(id); byteBuffer.putInt(age); //java.nio.BufferOverflowException buffer溢出 无法动态调整大小 //byteBuffer.putLong(1L); byte[] array = byteBuffer.array(); System.out.println(Arrays.toString(array)); ByteBuffer byteBuffer2 = ByteBuffer.wrap(array); System.out.println("id"+byteBuffer2.getInt()); System.out.println("age"+byteBuffer2.getInt()); System.out.println(); }}
public class Test3 { public static void main(String[] args) { ChannelBuffer dynamicBuffer = ChannelBuffers.dynamicBuffer(); dynamicBuffer.writeInt(101); dynamicBuffer.writeDouble(80.1); //byte[] stringByte = "abc".getBytes(); byte[] bytes = new byte[dynamicBuffer.writerIndex()]; dynamicBuffer.readBytes(bytes); System.out.println(Arrays.toString(bytes)); //反序列化 ChannelBuffer wrappedBuffer = ChannelBuffers.wrappedBuffer(bytes); System.out.println(wrappedBuffer.readInt()); System.out.println(wrappedBuffer.readDouble()); }}
public class Test4 { public static void main(String[] args) { //自定义序列化接口 该类继承了自定义的Serializer类 Player player = new Player(); player.setAge(20); player.setPlayId(100); player.getSkills().add(1); byte[] bytes = player.getBytes(); System.out.println(Arrays.toString(bytes)); Player player2 = new Player(); player2.readFromBytes(bytes); System.out.println(player2); }}
阅读全文
0 0
- 第九课 自定义序列化协议
- Protobuf序列化协议
- 通讯协议序列化
- protobuf (序列化协议)
- 序列化协议
- 序列化---自定义序列化
- 学习Hadoop第九课(理解RPC协议)
- 基于Netty的RPC架构笔记7之自定义序列化协议
- 自定义序列化
- 自定义 序列化1
- 自定义 序列化2
- 自定义 序列化3
- 自定义序列化过程
- 自定义序列化
- Serializable:自定义序列化
- hadoop自定义序列化
- java 自定义序列化
- 自定义序列化
- c3p0数据库连接池的使用
- 漫步最优化三十五——共轭
- IP正则匹配
- java作业1028/1029
- 创建登陆界面
- 第九课 自定义序列化协议
- SQL中的左连接与右连接,内连接有什么区别
- 利用wordpress搭建个人博客
- 如何debug caffe中的cu文件
- ART Method Execution
- Unknow tag(c:forEach)错误解决办法,jstl.jar包以及standard.jar包下载与导入
- C++ primer plus学习之路:字符串
- Mac下查看已安装的jdk版本及其安装目录
- 王川: 深度学习有多深, 学了究竟有几分?