Skip to content

Releases: hl845740757/Dson

2.1.0-rc1

15 May 14:19
Compare
Choose a tag to compare
2.1.0-rc1 Pre-release
Pre-release
  1. C# DsonCodec支持。
  2. 删除Java端 DsonLiteCodec 支持 —— 维护工作量太大。
  3. 增加Timestamp类型
  4. 优化Java端apt代码,CodecLinkerBean完整钩子支持

2.0.2

04 May 07:06
Compare
Choose a tag to compare
  1. 增加新的对象指针结构(ObjectLitePtr)
  2. 允许Binary的data部分为null。
  3. java afterCodec钩子调整,接收options参数。
  4. java 增加CodecLinkerBean注解,用于快捷配置外部类,生成DsonCodec
  5. C# 优化基础值类型的拆装箱

2.0.0

30 Mar 03:19
Compare
Choose a tag to compare

Dson2版本正式发布。
在较多使用Dson1之后,发现Dson1的行首设计大多数时候增加了输入负担,Dson2修改了行首设计,只在Dson文本块@"""下使用行首。

PS:这不仅降低了用户书写Dson文本的难度,也降低了代码复杂度。

1.4.0

06 Jan 15:36
Compare
Choose a tag to compare

V1.4 包含三个方面:性能优化,Dson投影,Java DsonCodec组件命名。

性能优化

前几日在C#端做了 Dson 和 System.Json,MongoDB.Bson,Newtonsoft.Json 之间的读写性能测试。
发现Dson在写文件的时候性能较差,最终定位到是由于每次换行都Flush的缘故 => 变更为达到4K再Flush。

在更改完Flush的问题后,Dson和Bson的读写性能相近(毕竟算法相似),但和系统库的Json还是有明显的差距;
由于没有其它高频IO操作,因此我猜测的字节数组拷贝(扩容)或字符串拼接的问题,于是制作了StringBuilderPool替换
Reader和Writer中的Builder,在完成此次优化后,Dson和System.Json的差距只有几毫秒,已经和Bson拉开距离。

最后我又做了数组缓存池,虽然减少了内存分配和GC,但速度上变化已不明显,和系统库的差距保持在几毫秒(520KB的Json文件,read差距5-6ms)。

投影

在最初,我仅仅是想支持GetSection这样的功能,但一想如果需要获取一个Object的多个Key呢?
最后决定实现我在MongoDB中使用的投影功能。

V1.4版本的投影功能还比较简单,目前可以实现正确的投影,但语法不够简单 -- 没有实现MongoDB的连续.指定key。
(我不想让.成功关键字)

DsonCodec重命名

DsonCodec是从Commons包中迁移回来的,命名上存在一些问题,在V1.4版本中进行了修正。

Bug修复

  1. C# 读到文件尾部的时候,继续读会返回0,而Java返回-1 -- C#条件判断错误导致死循环。
  2. V1.4版本之前,DsonTextWriter的列(column)统计,不是按照字符统计的,现变更为按照字符数统计。

1.2.0

27 Dec 14:44
Compare
Choose a tag to compare
  1. 1.2 版本的最大变化就是变更了对象 Header 的语法,对象头必须使用 @{} 样式!这可以提高清晰度,也可以避免错误。
  2. 版本重命名了部分类,主要为与C#的实现保持一致;
  3. 版本新增的特性为:TextWriter支持行首前额外缩进,可使得长文本更易阅读和编写。