XStream类性能问题
2016-11-18 15:32
1021 查看
XStream类
1.首先了解包结构(引用其它第三方包 XStream-1.4.7.jar)
com.thoughtworks.xstream;
2.常用的方法
2.1 Class(java.lang.Class)转 string
XStream xstream = new XStream(newDomDriver("UTF-8", new XmlFriendlyNameCoder("-_","_")));
stream.alias("xml",tClass);
Objcet object=xstream .fromXML(str)
2.2 string 转Objce
XStream xstream = new XStream(newDomDriver("UTF-8", new XmlFriendlyNameCoder("-_","_")));
stream.alias("xml",tClass);
String xmlStr=xstream .toXML(str)
3.线程安全
原因:
查看源码HierarchicalStreamDriver为顶层抽象类,那fromXML举例代码如下:
我们不难发现调用了this.hierarchicalStreamDriver.createReader(input)
这个实现代码如下
注意选中的部分,这个方法的需要使用了同步锁而且使用了工厂反射获取对象并且使用了单例模式,这是保证这个类安全的主要代码
4.解决方案
根据 换为类型(class) 创建单例模式
public class XStreamFactory {
private static volatile Map<String,XStream> streamMap = newHashMap<String, XStream>();
private static volatile XStream xStream = null;
public static XStreamgetStream(Class tClass) {
XStream stream=null;
if(streamMap.containsKey(tClass.getName())) {
stream=streamMap.get(tClass.getName());
}else {
stream = new XStream(newDomDriver("UTF-8", new XmlFriendlyNameCoder("-_","_")));
stream.alias("xml", tClass);
streamMap.put(tClass.getName(),stream);
}
return stream;
}
public static XStreamgetXStream(){
if (xStream== null) {
xStream = new XStream(newDomDriver("UTF-8", new XmlFriendlyNameCoder("-_", "_")));
}
return xStream;
}
}
1.首先了解包结构(引用其它第三方包 XStream-1.4.7.jar)
com.thoughtworks.xstream;
2.常用的方法
2.1 Class(java.lang.Class)转 string
XStream xstream = new XStream(newDomDriver("UTF-8", new XmlFriendlyNameCoder("-_","_")));
stream.alias("xml",tClass);
Objcet object=xstream .fromXML(str)
2.2 string 转Objce
XStream xstream = new XStream(newDomDriver("UTF-8", new XmlFriendlyNameCoder("-_","_")));
stream.alias("xml",tClass);
String xmlStr=xstream .toXML(str)
3.线程安全
原因:
查看源码HierarchicalStreamDriver为顶层抽象类,那fromXML举例代码如下:
我们不难发现调用了this.hierarchicalStreamDriver.createReader(input)
这个实现代码如下
注意选中的部分,这个方法的需要使用了同步锁而且使用了工厂反射获取对象并且使用了单例模式,这是保证这个类安全的主要代码
4.解决方案
根据 换为类型(class) 创建单例模式
public class XStreamFactory {
private static volatile Map<String,XStream> streamMap = newHashMap<String, XStream>();
private static volatile XStream xStream = null;
public static XStreamgetStream(Class tClass) {
XStream stream=null;
if(streamMap.containsKey(tClass.getName())) {
stream=streamMap.get(tClass.getName());
}else {
stream = new XStream(newDomDriver("UTF-8", new XmlFriendlyNameCoder("-_","_")));
stream.alias("xml", tClass);
streamMap.put(tClass.getName(),stream);
}
return stream;
}
public static XStreamgetXStream(){
if (xStream== null) {
xStream = new XStream(newDomDriver("UTF-8", new XmlFriendlyNameCoder("-_", "_")));
}
return xStream;
}
}
相关文章推荐
- 飞不起来的火箭与蝴蝶效应,细节决定成败----关于应用程序的性能问题
- 由一个性能问题引出的.net概念
- DB2的性能问题
- 利用CodeDom来解决反射性能问题
- SQL SERVER中一些常见性能问题的总结(转载)
- 不改一行代码定位线上性能问题
- SQL SERVER中一些常见性能问题的总结[转]
- 一个不起眼的问题导致性能的严重的下降
- .NET中一些常见代码的性能问题
- 你的站点有性能问题吗?问题出现在哪里?
- .NET中一些常见代码的性能问题
- Array.IndexOf的性能问题
- sqlite3数据库的性能问题报告
- 问题征解3:SQL SERVER的性能问题
- 如何评估你的数据库性能以及问题诊断
- 令我感到惊诧的性能问题——Delegate
- 目前博客园程序存在的性能问题
- sqlserver2000的jdbc驱动和PreparedStatement的性能问题。
- 关于递归的性能问题
- SQL SERVER中一些常见性能问题的总结