import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import org.objenesis.strategy.StdInstantiatorStrategy;
import com.esotericsoftware.kryo.Kryo;
import com.esotericsoftware.kryo.io.Input;
import com.esotericsoftware.kryo.io.Output;
public class DefaultSerializeConverter
{
private ThreadLocal<Kryo> serializeThreadLocal = new ThreadLocal<Kryo>();
private static DefaultSerializeConverter instance = new DefaultSerializeConverter();
public static DefaultSerializeConverter getInstance() {
return instance;
}
private DefaultSerializeConverter() {
}
public Kryo getSerializeConverter() {
Kryo kryo = serializeThreadLocal.get();
if (kryo == null) {
kryo = new Kryo();
kryo.setRegistrationRequired(true);
kryo.setReferences(true);
kryo.setInstantiatorStrategy(new StdInstantiatorStrategy());
kryo.register(Class.class);
kryo.register(HashMap.class);
kryo.register(ArrayList.class);
kryo.register(BigDecimal.class);
kryo.register(Date.class);
serializeThreadLocal.set(kryo);
}
return kryo;
}
public byte[] toBytes(Object t) {
Kryo converter = getSerializeConverter();
Output output = new Output(1024, 4 * 1024);
converter.writeObject(output, t);
return output.toBytes();
}
public <T> T fromBytes(byte[] bytes, Class<T> clazz) {
Kryo converter = getSerializeConverter();
Input input = new Input(bytes);
return converter.readObject(input, clazz);
}
}
分享到:
相关推荐
tomcat kryo序列化,msm-memcached-session-manager-tc7-1.8.2
2. **内存优化**:Kryo序列化生成的数据通常比Java原生序列化更小,这减少了网络传输和存储的需求。 3. **对象共享**:Kryo支持对象引用的处理,能够在序列化和反序列化过程中保持对象间的引用关系,避免了深拷贝的...
Kryo序列化及反序列化用法示例 Kryo是Java对象图形序列化框架,它主要特点是性能高效和易用,该项目用来序列化对象到文件、数据库或者网络。序列化是指将对象转换为字节流的过程,而反序列化是指将字节流转换回对象...
本主题“netty传输kryo序列化的对象基于socket传输”探讨的是如何结合Netty和Kryo,实现高效、可靠的网络数据传输。首先,我们需要了解Kryo序列化的基本原理。Kryo通过跟踪对象引用和存储类型信息来优化序列化过程,...
该项目为基于Netty通信框架和Kryo序列化协议的Spring集成Nexus RPC框架设计源码,共计90个文件,涵盖70个Java源文件、8个XML配置文件、2个YAML文件、2个PNG图片文件、1个Git忽略文件、1个许可证文件和1个Markdown...
首先,我们来理解Kryo序列化机制。Kryo是一个高性能的对象图形序列化库,适用于Java和Scala。它的设计目标是速度和低内存占用,这使得Kryo非常适合在网络传输或持久化数据时使用。Kryo通过注册类和对象实例,能够...
寒意 扩展,包括序列化程序和一组类,以简化 Kryo 在 Hadoop、Storm、Akka 等系统中的配置。兼容性版本之间不保证序列化兼容性,因此,我们不建议将其用于长期存储。 序列化高度依赖于 scala 版本兼容性和底层 Kryo ...
"java原生序列化和Kryo序列化性能实例对比分析" 本文主要介绍了java原生序列化和Kryo序列化性能实例对比分析,涉及Java和kryo序列化和反序列化相关实例。下面是对标题、描述、标签和部分内容的详细说明: 1. 序列...
nginx+tomcat7+session共享 kryo序列化所需要包 1.将上面所提到的包全部拷贝到tomcat的lib下(三台tomcat都需要) 2.修改每台tomcat的conf目录下得context.xml文件或者server.xml文件,在其中加入如下任意一段代码...
Memchached+Tomcat6|7session共享 kryo序列化所需要包 (已经更新至1.8.2版本) 1.将所有的包拷贝至tomcat目录下的lib下面; 2.修改conf/context.xml加下面的代码: memcachedNodes="n1:127.0.0.1:11211" ...
akka-kryo-serialization, 基于Kryo的Akka序列化 akka-kryo-serialization-- Scala 和Akka基于kryo的序列化程序这个库为 Scala 和Akka提供定制的基于kryo的序列化程序。 它可以用于更高效的akka远程处理。它还可以...
【标题】:“Memcached-session-manager所需最新jar包-tomcat7-kryo序列”指的是在Tomcat7中使用Memcached作为会话管理器时,需要的特定版本的jar包,特别是与Kryo序列化相关的组件。 【描述】:“Memcached-...
在这个项目"ignite-persistence-cassandra"中,我们看到如何配置Ignite以使用Cassandra作为持久化存储,并且采用了Kryo序列化程序来优化数据处理。 首先,让我们了解Apache Cassandra。Cassandra是一个开源的NoSQL...
二、Kryo序列化 1. 安装与依赖 在使用Kryo之前,首先需要将其添加到项目依赖中。对于Maven项目,可以在pom.xml文件中加入以下依赖: ```xml <groupId>com.esotericsoftware</groupId> <artifactId>kryo ...
KryoCocoa 是 Kryo 高性能 Java 序列化框架的 Objective-C 移植版本,兼容 Java 版本的序列化格式。示例代码:Kryo *kryo = [Kryo new]; // ... NSOutputStream *outputStream = [NSOutputStream ...
1. **高速度**:Kryo序列化速度远超标准的Java序列化,这是由于它采用了字节码操作和预注册类的方式,减少了运行时反射的开销。 2. **低内存消耗**:Kryo通过对象池和对象引用跟踪机制,减少了序列化和反序列化过程...
- Kryo序列化是一种将Java对象转换为字节流的过程,以便于存储或在网络中传输。它提供了比标准Java序列化更快的速度和更小的存储开销。 - 序列化过程中,Kryo会跟踪对象引用,避免循环引用导致的无限递归问题。 2...
6. **msm-kryo-3.0.3.jar**: Kryo的库文件,用于实现Kryo序列化。 7. **msm-memcached-session-manager-1.9.6.jar**: 主要的memcached session manager实现。 8. **msm-flexjson-3.3.jar**: FlexJSON库,用于JSON...