`
baobeituping
  • 浏览: 1064701 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

XBlink 1.0.0版发布,更轻、更快、更好用

 
阅读更多

XBlink 1.0.0版发布,更轻、更快、更好用。

 

 

 

简介:

 

一个轻量级的通用型序列化反序列化工具

 

特点:

 

  • -- 当前版本,无需引入任何第三方jar包,JDK1.5以上适用,大小总共120K
  • -- 简单易用,基本上只需调用一个方法就能帮你搞定问题。
  • -- 无需配置Mapping文件,采用了基于注解的方式,对原有程序基本不造成任何负面影响,最大程度的降低耦合
  • -- 代码量少,结构简单,易于研究学习。
  • -- 采用全新架构,理论上支持所有以文本格式记录信息的文件的序列化工作。本产品将默认支持XMLJSONYAML格式。
  • -- 性能优秀,在速度上已经全面超越XStream,是目前最快的XML序列化工具。

 

XBlink当前情况:

 

该版本目前仅提供了XML的序列化支持,后续版本将支持JSON与YAML格式。

相比之前的版本,采用了新架构,jar包体积稍胖(比XStream还是小很多的),功能与性能上有了大幅提高,并提供了更多的扩展机制。

 

新版本的特性:

 

  • 精简后的注解,简化的API。
  • 支持无注解无配置,直接对现有系统中的类进行序列化。
  • 支持自定义转换器,定制你自己的输出格式。
  • 支持文本格式压缩,以适应开发与生产环境。
  • 支持替换底层输入输入器,你完成可以制造出个性化的“XML”。
使用示例:

定义两个类,Person与PhoneNumber。
Java代码 复制代码
  1. public class Person {   
  2.     private String firstname;   
  3.     private String lastname;   
  4.     private PhoneNumber phone;   
  5.     private PhoneNumber fax;   
  6.     // ... constructors and methods   
  7. }   
  8.   
  9. public class PhoneNumber {   
  10.     private int code;   
  11.     private String number;   
  12.     // ... constructors and methods   
  13. }  
public class Person {
	private String firstname;
	private String lastname;
	private PhoneNumber phone;
	private PhoneNumber fax;
	// ... constructors and methods
}

public class PhoneNumber {
	private int code;
	private String number;
	// ... constructors and methods
}
 

实例化一个Person对象。

 

Java代码 复制代码
  1. PhoneNumber phone = new PhoneNumber();   
  2. phone.setCode(123);   
  3. phone.setNumber("1234-456");   
  4.   
  5. PhoneNumber fax = new PhoneNumber();   
  6. fax.setCode(123);   
  7. fax.setNumber("9999-999");   
  8.   
  9. Person joe = new Person();   
  10. joe.setFirstname("Joe");   
  11. joe.setLastname("Walnes");   
  12. joe.setPhone(phone);   
  13. joe.setFax(fax);  
PhoneNumber phone = new PhoneNumber();
phone.setCode(123);
phone.setNumber("1234-456");

PhoneNumber fax = new PhoneNumber();
fax.setCode(123);
fax.setNumber("9999-999");

Person joe = new Person();
joe.setFirstname("Joe");
joe.setLastname("Walnes");
joe.setPhone(phone);
joe.setFax(fax);

 


注册本次序列化使用的类(这里是为了生成的文件格式更加适合阅读),这一步可以省略。

 

Java代码 复制代码
  1. XBlink.registerClassesToBeUsed(new Class[] { Person.class, PhoneNumber.class });  
XBlink.registerClassesToBeUsed(new Class[] { Person.class, PhoneNumber.class });

 

调用XBlink的序列化方法。

Java代码 复制代码
  1. System.out.println(XBlink.toXml(joe));  
System.out.println(XBlink.toXml(joe));

  

输出结果。

 

Java代码 复制代码
  1. <?xml version="1.0" encoding="UTF-8"?>   
  2. <person>   
  3.   <firstname>Joe</firstname>   
  4.   <lastname>Walnes</lastname>   
  5.   <phone>   
  6.     <code>123</code>   
  7.     <number>1234-456</number>   
  8.   </phone>   
  9.   <fax>   
  10.     <code>123</code>   
  11.     <number>9999-999</number>   
  12.   </fax>   
  13. </person>  
<?xml version="1.0" encoding="UTF-8"?>
<person>
  <firstname>Joe</firstname>
  <lastname>Walnes</lastname>
  <phone>
    <code>123</code>
    <number>1234-456</number>
  </phone>
  <fax>
    <code>123</code>
    <number>9999-999</number>
  </fax>
</person>

 

调用XBlink的反序列化方法。

 

Java代码 复制代码
  1. // 这里的xml就是刚才序列化生成的字符串   
  2. Person anthorJoe = (Person) XBlink.fromXml(xml);  
// 这里的xml就是刚才序列化生成的字符串
Person anthorJoe = (Person) XBlink.fromXml(xml);

 

怎么样,是不是如此简单!

 

性能测试:

 

常用的XML序列化框架有XStreamSimple

在速度与易用性上,XStream远远好于Simple,所以XBlink就一直以XStrem作为目标,无视Simple的存在(吐槽下,因为它是在是太难用啦,不信看这里)。


下面是基于上面那个Person示例的测试结果。


序列化比较:


 

序列化次数 XBlink XStream
1次 0 秒, 0 毫秒, 269 微秒 0 秒, 0 毫秒, 562 微秒
10次 0 秒, 2 毫秒, 2182 微秒 0 秒, 5 毫秒, 5426 微秒
100次 0 秒, 21 毫秒, 21454 微秒 0 秒, 37 毫秒, 37727 微秒
1000次 0 秒, 95 毫秒, 95380 微秒 0 秒, 116 毫秒, 116551 微秒
10000次 0 秒, 436 毫秒, 436216 微秒 0 秒, 623 毫秒, 623156 微秒


反序列化比较


 

反序列化次数 XBlink XStream
1次 0 秒, 0 毫秒, 557 微秒 0 秒, 0 毫秒, 767 微秒
10次 0 秒, 4 毫秒, 4231 微秒 0 秒, 5 毫秒, 5680 微秒
100次 0 秒, 21 毫秒, 21346 微秒 0 秒, 34 毫秒, 34830 微秒
1000次 0 秒, 84 毫秒, 84463 微秒 0 秒, 162 毫秒, 162964 微秒
10000次 0 秒, 616 毫秒, 616956 微秒 1 秒, 1282 毫秒, 1282416 微秒

 

相关测试用例请看http://code.google.com/p/xblink/source/browse/trunk/test/performance/testcase/demo/PersonTest.java

 

通过上面的对比,可以发现XBlink在性能上比XStream有大概30%-120%的提升,速度全面超越,基本上现有的框架中XBlink是最快的

 

说明:

 

终于XBlink发布了,算是还债了,呜呜呜。

虽然目前已经取得了一定的成绩,但是在稳定性,易用性与性能上还有很大的提高余地。

欢迎各位朋友下载,试用并提出您宝贵的意见与发现的Bug,ME将尽力尽快的改进,使其更加好用。

分享到:
评论
1 楼 seektolive 2012-04-06  
在学习序列化时看到 XBlink  并喜欢上 目前正在研读代码,非常支持创始者。在学习中发现您好长时间没有更新了,我想问的是换地址了(搜索了半天没有找到最新的托管)  还是此项目暂停了?其他爱好者十分可以修改项目中的bug  有什么要求么? 谢谢 

相关推荐

    xblink 关键代码

    * XBlink最NB的反序列方法,生成你需要的对象。 * * * 根据docTypeName与其格式特点,进行反序列化生成对象。 * * @param cs * 字符信息 * @param docTypeName * 任意你想要的文档格式...

    解压软件 ZArchiver.apk

    解压软件 ZArchiver.apk

    毕设项目:基于SSM框架+mysql开发的教务管理系统分前后台【附含源码+数据库+毕业论文】

    二、技术实现 后端:spring,springmvc,mybatis,mysql 前端采用:vue,css 运行环境及开发工具:jdk8,idea或者eclipse,Navicat 三、系统功能 系统登录角色分为:管理员、老师、学生 用户登录 用户注册 首页 个人中心 修改密码 个人信息 班级管理 成绩类型管理 公告类型管理 教程类型管理 第几节管理 院系管理 职称管理 专业管理 公告管理 课程管理 成绩管理等功能

    设计和仿真一个用于控制双质量弹簧阻尼系统位移的多变量控制系统.docx

    设计和仿真一个用于控制双质量弹簧阻尼系统位移的多变量控制系统.docx

    1-全国各地级市金融机构本外币与人民币存款和贷款2010-2020年-社科数据.zip

    这份数据集详细记录了2010至2020年间中国各城市金融机构的本外币存款和人民币贷款情况。数据涵盖了商业银行、农村合作银行、信用社等多种金融机构的存款数据,包括本币和外币存款情况。这些数据不仅反映了各城市金融机构的存款规模,也为分析金融市场的发展趋势、资金流动状况及城市经济活动提供了重要视角。数据来源于中国区域统计年鉴和各省市统计年鉴,以面板数据形式呈现,包含1948个样本。通过这些数据,金融机构、政策制定者、研究人员和投资者可以深入了解各城市的金融市场格局,辅助做出更准确的决策和分析。

    开发一个带有 PCIe Endpoint 设备的驱动程序并实现热插拔功能.docx

    开发一个带有 PCIe Endpoint 设备的驱动程序并实现热插拔功能

    NovaMaker-2.4.29-win-64-bit.zip

    NovaMaker-2.4.29-win-64-bit.zip

    Spring Boot相关的资源.txt

    Spring Boot相关的资源.txt

    Hive简易操作入门中文最新版本

    本文档主要讲述的是Hive简易操作入门;本流程中以putty为例,如果使用别的SSH客户端,界面上会不同,基本过程相似。希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看

    ASP+ACCESS软件信息发布系统设计(源代码+论文+开题报告+任务书+答辩PPT)(源代码+论文+说明文档).zip

    【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。

    浅析Sybase数据库系统性能调优中文最新版本

    本文档主要讲述的是浅析Sybase数据库系统性能调优;性能调优”是对应用程序的性能优化。SYBASE数据库“性能调优”的主要目的是减少对系统公共资源的争用。对sybase数据库系统的性能进行优化,是一项长期且受诸多因素影响的工作,希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看

    用VBS制作自己的进度条

    用VBS制作自己的进度条

    校际运动会管理系统程序设计基础课程设计报告.doc

    校际运动会管理系统程序设计基础课程设计报告.doc

    ORACLECRS日常维护命令中文最新版本

    本文档主要讲述的是ORACLE CRS日常维护命令;希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看

    [net毕业设计]ASP.NET教务信息管理系统的设计与实现(源代码+论文).zip

    【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。

    1-全国各省商品市场分割指数相对价格法计算过程+计算结果2000-2020年-社科数据.zip

    全国各省商品市场分割指数相对价格法的计算过程和结果数据集提供了2000至2020年间中国各省份市场分割的量化分析。该数据集基于12大类商品,包括粮食、纺织品、服装鞋帽等,利用地区间商品价格差异来分析市场分割状况。核心计算方法为相对价格法,通过比较不同地区同一商品的价格指数,来衡量市场分割程度。数据集包含原始数据、计算过程和最终结果,原始数据主要来源于统计年鉴中的商品价格指数。计算步骤包括计算历年资本边际产出比值、求均值、方差等,最终得出资本市场一体化程度。该数据集为研究中国国内市场一体化进程提供了重要参考。

    1-全国上市公司绿色投资者原始数据+计算代码+参考文献2008-2022年-社科数据.zip

    全国上市公司绿色投资者数据集(2008-2022年)提供了中国上市公司在环保和可持续发展方面的资金吸引力的详细视角。该数据集涵盖了股票代码、年份、会计年度、股票简称、STPT标识、行业名称及代码,以及绿色投资者数量等关键指标。它记录了超过42,000个观测值,涉及4,700多家样本企业,为投资者、金融分析师、政策制定者和环境研究者提供了评估企业环保表现、理解绿色投资趋势以及制定相关策略的辅助工具。数据集包括是否有绿色投资者的虚拟变量,以及绿色投资者数目加1的自然对数两个指标,可以用于衡量企业绿色治理情况。这些数据不仅展示了中国上市公司在环境保护方面的资金流向,也反映了投资者对绿色投资的关注动态,对于研究绿色投资与企业行为的关系提供了宝贵的实证数据支持。

    15da2b5d3ceeddc8af2f6a7eed26d7e0.JPG

    15da2b5d3ceeddc8af2f6a7eed26d7e0.JPG

    前端工程化实践课程下载

    视频课程下载——前端工程化实践

Global site tag (gtag.js) - Google Analytics