www.shuxiaolong.com 网站已经升级, 最新网址 请关注 www.ink-fx.com
架构师成长之路

『算法』001 Laura.Serialization算法思想

2014-03-13  (0/1361) ShuXiaolong

 
 001 Laura.Serialization算法思想

 

概述

Laura.Serialization序列化算法 是 2012创业时期 耗时5天完成的一个算法;

算法目标是为了 实现 字节流byte[] 的 跨 .Net-PC 和 .Net-WinCE 平台 序列化;

当Slithice服务器集群 框架完成时,Slithice服务器集群 为了跨Java服务端。于是 Laura.Serialization 算法目标 已经增加为 跨 Java平台;

而事实上,最终目标是 算法要实现:跨 .Net-PC、.Net-WinCE、Java、Andriod-Mono-.Net、Andriod-Java 等 PC和 移动设备 所有平台。

当然,基本认定为 实现 .Net 和 Java 两个平台 的话,就能实现 终极目标。

 

 

版本变迁

2012-07-09    Project版本库        BaseUtil项目  BaseUtil\Serializable     1516行源码           byte[]正反序列化

2013-06-10     Laura版本库          Laura.Serialization项目                     5253行源码           byte[],Json 正反序列化

2014-02-29     Long版本库           Java- Laura.Serialization项目            未知                      开始进行 跨Java平台尝试

 

 

算法最初手稿

(Ps.手稿中 Beetle 是 Project版本库 的 主命名空间:是 孝感学院时期 “Shi壳螂”团队的命名)

 

算法思想概述

>算法最后的 字节流byte[] 结构分为 类型区数据区结构区

>三区byte[] 中,最简单的 是 类型区,最复杂的 是 结构区;

>所有复杂对象 最终都会被 转换成 BinaryObject(一个树形结构对象);

>最终的 byte[] 只和 BinaryObject 相互转换;

       001 Laura.Serialization-序列化流程.png

 

算法思想详解


       类型区:

 

        数据区:

结构区:

 

              上图的结构区 实际表示的 对象结构如下:

              对应 结构区的字节流 图片,8个枚举黑点 对应的枚举 是:

                     0SchemaSplitE. ChildStart

                     1:  SchemaSplitE. ChildStart

                     2:  SchemaSplitE. ChildContinue

                     3:  SchemaSplitE. ChildEnd

                     4SchemaSplitE. ChildContinue

                     5SchemaSplitE. ChildContinue

6SchemaSplitE. ChildEnd

7SchemaSplitE. SchemaStop

              事实上,这几个 黑点的存在:其实 就是一个 递归划分 的过程。

             

类型区、数据区 的 byte[] 相对简单很多,具有 特别简单 的 读取规律;

结构区 的 byte[] 相对复杂很多,对象越复杂,则 读取桂林 就越复杂;

 

 

更多相关介绍,请参阅其他文章。

 

 

                                                                                                  舒小龙

                                                                                           2014-03-02 21:53

评论回复
共有:0 条评论信息
暂无任何评论信息

发表评论

点击刷新