我接触的java序列化技术之序列化技术简介

序列化技术简介

Java序列化,本质是一种将Java对象的状态信息转换成某种标准数据格式的技术。

一、序列化技术简介
		Java序列化技术是Java编程的基础之一,其本质是一种将Java对象的状态信息转换成一种标准数据格式的技术。
	标准的数据格式对计算机而言意味着可读性和可解析,也就是可以反序列化。
	所以说Java序列化和反序列化的的核心是标准数据格式。
	目前流行的标准数据格式主要有Json和Protobuf,以后有机会再记录下来。
		序列化和反序列化是一种聚合的存在关系,互为彼此存在的意义,所以直接简称为序列化技术。
		这让笔者想起很早的一部电影:
	鬼子封锁根据地的食盐,于是老乡们把食盐溶解在清水里浸泡衣服,穿过封锁线后,再把衣服浸在清水里晒干还原出食盐。
	这大概可以用来类比序列化和反序列化:溶解食盐就是为了以后重新析出食盐,序列化就是为了以后反序列化的。
	
二、序列化技术和数据传输协议不一样
		对象序列化协议和数据传输协议是两种完全不同的技术标准,分别用来解决不同的编程需求。
	笔者工作中遇到很多人搞不清楚两者的关系,一些技术博客也喜欢把两者不加区分地放在一起介绍,
	岂不知这人世间,暧昧不清是最让人晕头转脑的
	关系了。笔者在这里首先试着分别阐述:
			1、序列化(技术),笔者这里称它为:“数据格式转化”,是一种将内存中的对象数据格式转化
		成另一种数据格式(Json、Protobuf)的过程。
		核心是数据格式转化。转化后的数据可以是字符串,也可以是byte数组,
		甚至是另一种类型的对象(String不也是对象么),甚至是任何一种用编程
		语言可表示的东西,你只要能保证把它还原成之前的类型的对象就行。
			2、数据传输(协议),这个学过计算机的都知道,目前都是传输二进制数据。
			它的核心是如何将连续的二进制流
			拆分成多个有意义的byte数组
		(或者反之,单指应用层协议),byte作为一般场景下的数据读写单位,可以和其它7种基本数据
		类型+String类型相互转换,进而组装成Java对象。
			3、如果说两者确有重合的地方,那就是作为数据传输协议中应用层协议一部分的
	(byte数组>>对象,或者反之)的过程,和序列化场景之一的
		(对象>>byte数组,或者反之)的过程,确实一样了。这正是初学的时候让人搞混的地方。
		
三、序列化技术的使用场景
	序列化技术主要是为了在不同的软件系统间传输数据用的,
	其次是在key-value缓存中存储Json字符串,
	另外就是在做日志输出的时候,有时会将日志输出为Json格式,以方便做日志分析。
	在OOP编程的场景下,万物皆是对象,大部分业务逻辑都是通过操作对象来完成。
	那么在根据业务需求对一个数据对象完成创建、修改之后,往往需要将该对象做进一步			
	的持久化和网络传输操作,以便保留业务进度和用户状态。
	目前的数据持久化技术,比较有代表性的是关系型数据库MYSQL和文档型数据库
	MongoDB,本质上ORM框架和GSON也可以认为是一种对象序列化技术。

上面是笔者想表达的一些关于Java序列化技术的理解,希望不会给阅读的人造成困扰的前提下,还能帮助他人理解序列化的含义。之后我还会就Json和Protobuf分别写记录笔记。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值