【序列化与反序列化】Java原生 & Hessian & protobuf

序列化应用场景:网络传输;将发送端信息序列化为二进制,通过流的方式发送到接收端后,反序列化还原对象

 

序列化方案:Java原生

待序列化对象必须implements Serializable

复制代码
//序列化对象
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("./objectFile.obj"));
Customer customer = new Customer();    
out.writeObject("你好!");    //写入字面值常量
out.writeObject(new Date());    //写入匿名Date对象
out.writeObject(customer);    //写入customer对象
out.close();
        
//反序列化对象
ObjectInputStream in = new ObjectInputStream(new FileInputStream("./objectFile.obj"));
System.out.println("obj1 " + (String) in.readObject());    //读取字面值常量
System.out.println("obj2 " + (Date) in.readObject());    //读取匿名Date对象
Customer obj3 = (Customer) in.readObject();    //读取customer对象
System.out.println("obj3 " + obj3);
in.close();
复制代码

 

序列化方案:Hessian

 

 代码样例:

复制代码
     // 序列化
public static <T extends Serializable> byte[] serialize(T t){ HessianOutput hessianOutput = null; try(ByteArrayOutputStream os = new ByteArrayOutputStream()){ hessianOutput = new HessianOutput(os); hessianOutput.writeObject(t); return os.toByteArray(); }catch(Exception e){ LOGGER.error("serialize", e); }finally { if(hessianOutput!=null){ try { hessianOutput.close(); } catch (IOException e) { LOGGER.error("serialize", e); } } } return null; } // 反序列化 public static <T extends Serializable> T deserialize(byte[] bytes){ HessianInput hessianInput = null; try(ByteArrayInputStream is = new ByteArrayInputStream(bytes)){ hessianInput = new HessianInput(is); return (T) hessianInput.readObject(); }catch(Exception e){ LOGGER.error("deserialize", e); }finally { if(hessianInput!=null){ hessianInput.close(); } } return null; }
复制代码

序列化方案: protobuf(谷歌出品)

待补充

 

几种序列化方式对比

 

posted @   飞翔在天  阅读(513)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示