Chinaunix首页 | 论坛 | 博客
  • 博客访问: 235539
  • 博文数量: 19
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1182
  • 用 户 组: 普通用户
  • 注册时间: 2013-02-20 23:47
个人简介

如果人生是一条隐含马尔科夫模型,那维特比算法告诉我已经偏离最优路线了,但如果起点是现在呢?

文章分类

全部博文(19)

文章存档

2020年(2)

2014年(3)

2013年(14)

分类: Java

2013-03-20 23:53:30

相关文档:

nikita关键词

  1. Builder

    这个最简单,保存了对应clazz的实例以及javabean properties,是生成Descriptor的桥梁

  2. Descriptor

    这个最复杂,在最开始时编写的那个proto文件里对每一个字段的描述(name,类型,索引等等)都被保存在这个对象里面

  3. Messager

    符合PB标准的java messager对象,可直接用于生成二进制流,结构是一个大的mapkey是小descriptorvalue为对应的小messager,层层嵌套


Nikita序列化加速

最终目的:使得框架的序列化性能随着系统的启动运行而达到一个最终稳定的状态

  1. ClazzDescriptor:

    由于做了缓存,这部分消耗的时间在系统运行的整个生命周期中来说可以忽略

  2. ClazzBuilder:

    它的生成与获取跟descriptor同理,也可以忽略

  3. DescriptorMessager

    这部分就没法加缓存,因为跟具体实例挂钩。


Messager的结构大致是以descriptor作为key,它描述的值(不是基本类型就是嵌套出来的messager)作为value

其中key可以遍历descriptor中的子field得出,value利用反射可以计算出来

总结:从原生的Java对象到符合PB标准的Messager就是上述三个过程了,实例无关的描述信息都缓存上了,当同一个对象第二次序列化时,只需要执行步骤3即可

阅读(2638) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~