- 浏览: 1071660 次
- 性别:
- 来自: 长沙
文章分类
- 全部博客 (639)
- 服务器配置篇 (58)
- hibernate篇 (14)
- spring篇 (33)
- struts篇 (28)
- JS篇 (46)
- 其他技术篇 (46)
- 数据库集群配置 (6)
- JAVA基础相关 (48)
- 分布式框架HadHoop的应用 (2)
- FLEX篇 (8)
- SQLSERVER技术 (32)
- Android学习 (13)
- amchart学习笔记 (1)
- openfire+smark搭建即时通讯 (9)
- Linux学习 (18)
- Oracle数据库 (15)
- 网站优化技术 (12)
- mysql数据库 (2)
- 项目学习总结 (18)
- 工具类(JAVA) (12)
- 工具类(JS) (2)
- 设计模式 (10)
- Lucene学习 (24)
- EJB3学习 (6)
- Sphinx搜索引擎 (3)
- 工作中用到的软件小工具 (5)
- .NET (49)
- JAVA 连接SQLSERVER2008步骤 (1)
- MongoDB (19)
- Android手机开发 (3)
- Maven (6)
- vue (9)
- Shiro (4)
- mybatis (3)
- netty框架 (1)
- SpringCloud (3)
- spring-cloud (7)
- Git (1)
- dubbo (2)
- springboot (13)
- rocketmq (1)
- git学习 (2)
- kafka服务器 (2)
- linux (10)
- WEB系统辅助项目 (1)
- jenkins (2)
- docker (4)
- influxdb (3)
- python (2)
- nginx (1)
最新评论
-
jiangfuofu555:
这样数据量大,效率怎么样?
sqlserver 实现分页的前台代码 以及后台的sqlserver语句 -
w156445045:
博主请问下,如何做到实时的刷新呢,
另外我后台是Java 谢谢 ...
web 版本的汽车仪表盘,非常好看。还有各种图形 -
jackyin5918:
<transportConnector name=&qu ...
ActiveMQ的activemq.xml详细配置讲解 -
握着橄榄枝的人:
你这个不是spring1.x的吧
spring1.x使用AOP实例 -
xiaophai:
全乱套了!
openfire+spark搭建完美的及时通讯
XBlink 1.0.0版发布,更轻、更快、更好用。
简介:
一个轻量级的通用型序列化反序列化工具
特点:
- 轻 -- 当前版本,无需引入任何第三方jar包,JDK1.5以上适用,大小总共120K。
- 易 -- 简单易用,基本上只需调用一个方法就能帮你搞定问题。
- 简 -- 无需配置Mapping文件,采用了基于注解的方式,对原有程序基本不造成任何负面影响,最大程度的降低耦合。
- 学 -- 代码量少,结构简单,易于研究学习。
- 通 -- 采用全新架构,理论上支持所有以文本格式记录信息的文件的序列化工作。本产品将默认支持XML,JSON与YAML格式。
- 快 -- 性能优秀,在速度上已经全面超越XStream,是目前最快的XML序列化工具。
XBlink当前情况:
该版本目前仅提供了XML的序列化支持,后续版本将支持JSON与YAML格式。
相比之前的版本,采用了新架构,jar包体积稍胖(比XStream还是小很多的),功能与性能上有了大幅提高,并提供了更多的扩展机制。
新版本的特性:
- 精简后的注解,简化的API。
- 支持无注解无配置,直接对现有系统中的类进行序列化。
- 支持自定义转换器,定制你自己的输出格式。
- 支持文本格式压缩,以适应开发与生产环境。
- 支持替换底层输入输入器,你完成可以制造出个性化的“XML”。
使用示例:
定义两个类,Person与PhoneNumber。
- 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
- }
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对象。
- 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);
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);
注册本次序列化使用的类(这里是为了生成的文件格式更加适合阅读),这一步可以省略。
XBlink.registerClassesToBeUsed(new Class[] { Person.class, PhoneNumber.class });
调用XBlink的序列化方法。
System.out.println(XBlink.toXml(joe));
输出结果。
- <?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>
<?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的反序列化方法。
// 这里的xml就是刚才序列化生成的字符串 Person anthorJoe = (Person) XBlink.fromXml(xml);
怎么样,是不是如此简单!
性能测试:
在速度与易用性上,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将尽力尽快的改进,使其更加好用。
- XBlink-1.0.0.zip (758.8 KB)
- 下载次数: 3
评论
1 楼
seektolive
2012-04-06
在学习序列化时看到 XBlink 并喜欢上 目前正在研读代码,非常支持创始者。在学习中发现您好长时间没有更新了,我想问的是换地址了(搜索了半天没有找到最新的托管) 还是此项目暂停了?其他爱好者十分可以修改项目中的bug 有什么要求么? 谢谢
发表评论
-
JVM调优总结
2019-07-10 17:14 376https://www.cnblogs.com/andy-zh ... -
JAVA RESULTSET 使用详解
2012-03-20 21:01 3161调用ResultSet中的last()方法时,提示: java ... -
JAVA采用JDBC执行批处理操作注意的问题
2012-03-20 20:50 1982让我们看看如何使用JDBC API在Java中执行批量插入。虽 ... -
java 各种加密算法详细比较
2012-03-15 11:07 2299本篇内容简要介绍BASE64、MD5、SHA、HMAC几种加密 ... -
java:大数据文件写入,读取,分割,排序,合并
2012-03-05 20:21 2037/** * 大数据排序合并 * * @param ar ... -
JAVA 连接池,方便在平时使用
2012-02-21 15:03 1038java连接池使用 -
Java动态代理实现
2012-02-28 09:19 1003Java动态代理实现 在目前的Java开发包中包含 ... -
Java Socket实战之五 使用加密协议传输对象
2012-02-16 13:49 1131本文地址:http://blog.csdn.net/kongx ... -
Java Socket实战之四 传输压缩对象
2012-02-16 13:48 1021转载:http://blog.csdn.net/kongxx/ ... -
Java Socket实战之三 传输对象
2012-02-16 13:48 685转载:http://blog.csdn.net/kongxx/ ... -
Java Socket实战之二 多线程通信
2012-02-16 13:47 1153本文地址:http://blog.csdn.net/kongx ... -
Java Socket实战之一 单线程通信
2012-02-16 13:46 1026转载:http://blog.csdn.net/kongx ... -
java5 新增线程池的使用
2012-02-09 09:26 1174package net.itdos.concurrent; ... -
P2P之UDP穿透NAT的原理与实现
2012-01-11 11:03 1254关键词: P2P UDP NAT 原理 穿透 Traveral ... -
火车票网上订票软件
2012-01-11 09:05 1914JAVA程序GOHOME自动抢票成功!非常棒~~~不多说,直接 ... -
java tcp/ip 通讯服务端和客户端
2011-12-15 08:20 1362java tcp/ip 通讯服务端和客户端 -
java 读取服务器上的某个文件,并解决UTF-8 BOM文件的问号问题
2011-11-28 15:16 1443JAVA读取UTF-8 BOM文件的时候会在文件头产生一个?号 ... -
JAVA 多线程学习笔记
2011-10-12 09:03 1091JAVA 多线程学习笔记 -
db4o 文件整理(收缩)
2011-09-29 22:26 1488一直都不敢大胆使用db4o,不是因为它不好用,不稳定,而 ... -
网站应用通过139邮箱发送短信做到日志提醒功能
2011-09-15 09:36 1825首先在139注册一个邮箱,然后再邮箱设置中设置收到邮件通过短信 ...
相关推荐
* XBlink最NB的反序列方法,生成你需要的对象。 * * * 根据docTypeName与其格式特点,进行反序列化生成对象。 * * @param cs * 字符信息 * @param docTypeName * 任意你想要的文档格式...
VMware workstation
光伏蓄电池单相并网模型:MPPT升压电路、桥式逆变与智能控制策略仿真结果展示,光伏蓄电池单相并网模型。 带参考文件,模型说明文件 模型内容: 1.光伏+MPPT+boost升压电路+桥式逆变 2.电池模型+电池控制器+直流母线控制 3.稳定交流负载+功率控制器+pwm调制 仿真结果: 1.直流母线380V稳定输出 2.逆变输出与单相220V电网同频同相 3.光伏功率充足时为电池充电,光伏输出不足电池放电 ,光伏蓄电池单相并网模型; 光伏MPPT; boost升压电路; 桥式逆变; 电池模型; 电池控制器; 直流母线控制; 稳定交流负载; 功率控制器; pwm调制; 380V直流母线稳定输出; 逆变输出与电网同频同相; 光伏充放电管理。,光伏储能单相并网模型:实现功率调度与电压稳定研究报告
欧洲新闻 English_Botox 肉毒杆菌行业分数据 英语 John.pdf
启蒙小游戏
基于MATLAB与Cplex求解器的冷热电多微网系统双层优化储能服务配置策略研究,MATLAB代码:基于储能电站服务的冷热电多微网系统双层优化配置 电网技术文章,《基于储能电站服务的冷热电多微网系统双层优化配置》复现 仿真平台:MATLAB,需要用到cplex求解器 ,关键词:基于储能电站服务;冷热电多微网系统;双层优化配置;MATLAB代码;cplex求解器;电网技术文章;复现;仿真平台。,"MATLAB仿真复现:多微网系统双层优化配置及其在储能电站服务的实践"
三相异步电机本体模型Matlab Simulink仿真模拟与性能研究参考模型,三相异步电机本体模型 Matlab Simulink仿真模型(成品) 本模型利用数学公式搭建了三相异步电机的模型,可以很好的模拟三相异步电机的运行性能,适合研究电机本体时修改参考,电机的各波形都很好可以很好的模拟三相电机 ,三相异步电机本体模型; Matlab Simulink仿真模型; 数学公式搭建模型; 运行性能模拟; 电机波形模拟。,基于Matlab Simulink的三相异步电机本体模型仿真研究
qt-opensource-windows-x86-5.12.12.zip.004
1、文件内容:google-guice-3.1.3-9.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/google-guice-3.1.3-9.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装
1、文件内容:gnome-getting-started-docs-cs-3.28.2-1.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/gnome-getting-started-docs-cs-3.28.2-1.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装
Matlab Simulink下的二阶线性自抗扰控制器(LADRC)仿真模型:快速响应与优异抗干扰性能,成功应用于电机速度控制,matlab simulink二阶线性自抗扰控制器(LADRC)仿真模型,已经封装完成,响应速度快,抗扰能力相较于传统pi更优秀。 采用线性ADRC相较于非线性ADRC大大减少了调参难度,已成功用于电机速度环替代传统pi。 ,关键词:Matlab Simulink;二阶线性自抗扰控制器(LADRC);仿真模型;封装完成;响应速度快;抗扰能力优秀;线性ADRC;调参难度低;电机速度环;传统PI替代。,Matlab Simulink:二阶线性自抗扰控制器(LADRC)仿真模型,调参简便,响应快速且抗扰性强
适用操作系统:linux。 适用CPU架构:x64。
欧洲新闻 RF Mixer(ENG) 射频混频器行业分数据 英语 Kira.pdf
1、文件内容:gnutls-c++-3.3.29-9.el7_6.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/gnutls-c++-3.3.29-9.el7_6.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装
该工具主要实现jar包目录共享
RS422与MIL-STD-1553B协议转换:BU61580逻辑替代与扩展配置特性解析,RS422-MIL1553B 协议转 支持BC RT BM 1553B逻辑可以原位替BU61580协议芯片 配置寄存器和BU61580一样 存储器范围和BU61580一样4K*16bit 可外接扩展64K*16bit 实现过程:通过RS422去配置1553B寄存器和存储器 然后将数据通过RS422打印出来 PCI CPCI接口类似 可设计板卡也可以代码移植 ,核心关键词:RS422; MIL1553B协议转换; BC RT BM支持; 1553B逻辑原位替换BU61580协议芯片; 配置寄存器与BU61580相同; 存储器范围4K*16bit可扩展至64K*16bit; RS422配置1553B寄存器和存储器; 数据打印通过RS422; PCI CPCI接口; 设计板卡; 代码移植。,"RS422-MIL1553B协议转换卡:BU61580芯片替代方案"
内容概要:本研究围绕七鳃鳗(lamprey)适应性别比例机制,采用数学建模和生态系统评估的方法,探究了该机制对七鳃鳗种群及其所在生态系统的正面与负面影响。首先,在引入七鳃鳗生活史的基础上提出了两个模型:一是七鳃鳗种群迭代模型(Model I),二是包含物种丰富度、稳定性和生物量评估的BDS评价模型(Model II)。这两个模型共同用于量化适应性别比率对生态稳定性以及系统内部竞争动态的影响,并揭示出该比率能促进生物多样性和生物质量,但也会降低种群抵御环境压力的能力。随后,通过仿真验证,研究发现这种特性提高了整个生态系统的韧性并在环境改善时加快平衡重建速度;然而它同时也削弱了一些物种的竞争地位并减少了某些特定寄生鱼类的数量。 适用人群:对于从事生态学、动物学及相关跨学科研究人员而言是一份有价值的内容。此外,也适合作为高级生物课程的补充材料。 使用场景及目标:本文有助于深入理解入侵物种如何响应外部环境因素改变自身属性以达到适应性进化的效果,适用于那些希望进一步探索生态学中复杂互动关系的人士;也可作为教学案例,展示多维度视角下生态系统的定量研究方法和结论推导过程。 其他说明:本文提供的数据和模型不仅可用于七鳃鳗种群的具体研究中,还可以作为类似物种研究的一个通用框架来应用到其它生物类型的建模工作中去,从而提供广泛的参考价值。同时文章还指出了现有工作的局限性和未来改进的方向。
模块化多电平变换器(MMC)仿真研究:逼近调制与环流抑制策略及双闭环解耦控制揭秘,模块化多电平变器(MMC)matlab仿真 最近电平逼近调制-载波层叠-载波移相调制 二倍频负序环流抑制 子模块电容电压排序 整流 逆变—电压电流双闭环解耦控制 快速学习MMC必备 ,模块化多电平变换器(MMC); MATLAB仿真; 最近电平逼近调制; 载波层叠; 载波移相调制; 二倍频负序环流抑制; 子模块电容电压排序; 整流逆变; 电压电流双闭环解耦控制; 快速学习MMC必备。,"模块化多电平变换器(MMC)的Matlab仿真研究:多调制策略与环流抑制"
1、文件内容:glusterfs-6.0-61.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/glusterfs-6.0-61.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装