- 浏览: 599154 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (669)
- oracle (36)
- java (98)
- spring (48)
- UML (2)
- hibernate (10)
- tomcat (7)
- 高性能 (11)
- mysql (25)
- sql (19)
- web (42)
- 数据库设计 (4)
- Nio (6)
- Netty (8)
- Excel (3)
- File (4)
- AOP (1)
- Jetty (1)
- Log4J (4)
- 链表 (1)
- Spring Junit4 (3)
- Autowired Resource (0)
- Jackson (1)
- Javascript (58)
- Spring Cache (2)
- Spring - CXF (2)
- Spring Inject (2)
- 汉字拼音 (3)
- 代理模式 (3)
- Spring事务 (4)
- ActiveMQ (6)
- XML (3)
- Cglib (2)
- Activiti (15)
- 附件问题 (1)
- javaMail (1)
- Thread (19)
- 算法 (6)
- 正则表达式 (3)
- 国际化 (2)
- Json (3)
- EJB (3)
- Struts2 (1)
- Maven (7)
- Mybatis (7)
- Redis (8)
- DWR (1)
- Lucene (2)
- Linux (73)
- 杂谈 (2)
- CSS (13)
- Linux服务篇 (3)
- Kettle (9)
- android (81)
- protocol (2)
- EasyUI (6)
- nginx (2)
- zookeeper (6)
- Hadoop (41)
- cache (7)
- shiro (3)
- HBase (12)
- Hive (8)
- Spark (15)
- Scala (16)
- YARN (3)
- Kafka (5)
- Sqoop (2)
- Pig (3)
- Vue (6)
- sprint boot (19)
- dubbo (2)
- mongodb (2)
最新评论
import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.Serializable; import java.util.ArrayList; import java.util.List; import org.apache.commons.codec.binary.Base64; import com.esotericsoftware.kryo.Kryo; import com.esotericsoftware.kryo.io.Input; import com.esotericsoftware.kryo.io.Output; import com.esotericsoftware.kryo.serializers.CollectionSerializer; import com.esotericsoftware.kryo.serializers.JavaSerializer; public class KyroTest { public static void main(String[] args) { List<Person> list = new ArrayList<Person>(); Person p ; for(int i=0;i<=100000;i++){ p = new Person(); p.setId(i); list.add(p); } long begin = System.currentTimeMillis(); String listStr = serializationList(list,Person.class); System.out.println(listStr.length()); System.out.println(System.currentTimeMillis()-begin); begin = System.currentTimeMillis(); deserializationList(listStr,Person.class); System.out.println(System.currentTimeMillis()-begin); } @SuppressWarnings("all") private static <T extends Serializable> String serializationList(List<T> obj, Class<T> clazz) { Kryo kryo = new Kryo(); kryo.setReferences(false); kryo.setRegistrationRequired(true); CollectionSerializer serializer = new CollectionSerializer(); serializer.setElementClass(clazz, new JavaSerializer()); serializer.setElementsCanBeNull(false); kryo.register(clazz, new JavaSerializer()); kryo.register(ArrayList.class, serializer); ByteArrayOutputStream baos = new ByteArrayOutputStream(); Output output = new Output(baos); kryo.writeObject(output, obj); output.flush(); output.close(); byte[] b = baos.toByteArray(); try { baos.flush(); baos.close(); } catch (IOException e) { e.printStackTrace(); } return new String(new Base64().encode(b)); } @SuppressWarnings("all") private static <T extends Serializable> List<T> deserializationList(String obj, Class<T> clazz) { Kryo kryo = new Kryo(); kryo.setReferences(false); kryo.setRegistrationRequired(true); CollectionSerializer serializer = new CollectionSerializer(); serializer.setElementClass(clazz, new JavaSerializer()); serializer.setElementsCanBeNull(false); kryo.register(clazz, new JavaSerializer()); kryo.register(ArrayList.class, serializer); ByteArrayInputStream bais = new ByteArrayInputStream(new Base64().decode(obj)); Input input = new Input(bais); return (List<T>) kryo.readObject(input, ArrayList.class, serializer); } /** * 序列化对象 * * @param obj * @return */ @SuppressWarnings("all") private static <T extends Serializable> String serializationObject(T obj) { Kryo kryo = new Kryo(); kryo.setReferences(false); kryo.register(obj.getClass(), new JavaSerializer()); ByteArrayOutputStream baos = new ByteArrayOutputStream(); Output output = new Output(baos); kryo.writeClassAndObject(output, obj); output.flush(); output.close(); byte[] b = baos.toByteArray(); try { baos.flush(); baos.close(); } catch (IOException e) { e.printStackTrace(); } return new String(new Base64().encode(b)); } /** * 反序列化 * * @param obj * @param clazz * @return */ @SuppressWarnings("all") private <T extends Serializable> T deserializationObject(String obj, Class<T> clazz) { Kryo kryo = new Kryo(); kryo.setReferences(false); kryo.register(clazz, new JavaSerializer()); ByteArrayInputStream bais = new ByteArrayInputStream(new Base64().decode(obj)); Input input = new Input(bais); return (T) kryo.readClassAndObject(input); } } class Person implements Serializable{ private static final long serialVersionUID = 1L; private int id ; public int getId() { return id; } public void setId(int id) { this.id = id; } }
发表评论
文章已被作者锁定,不允许评论。
-
java WeakHashMap学习(key是弱引用)
2018-06-21 09:31 1232在Java集合中有一种特殊的Map类型:WeakHashMap ... -
java HashMap TreeMap(key顺序) LinkedHashMap(插入顺序)学习
2018-06-07 10:27 950java为数据结构中的映射定义了一个接口java.util.M ... -
java RESTful 详解
2018-04-27 11:35 642(1)每一个URI代表一种资源,独一无二; (2)客户端 ... -
java 通过HttpsUrlConnection访问接口数据
2018-04-19 11:25 987server: ssl: key-stor ... -
java 使用多线程的场景总结
2018-04-10 14:35 1703在一个高并发的网站中,多线程是必不可少的。下面先说一下多线程在 ... -
java Enum枚举设置
2018-04-10 10:55 479/** * 数据状态:0:无效,1:有效 **/ ... -
java RestTemplate访问restful服务
2018-03-01 15:02 1621REST的基础知识 当谈论REST时,有一种常见的错误就是将其 ... -
java FYOpenApi实现短信发送
2018-01-02 17:10 11731.配置文件 sms.OpenUrl = http://s ... -
java JSONObject序列化包含Date类型数据的Java对象
2017-12-26 16:31 1617如果Date.class无法进行转换则使用Timestamp. ... -
java 用HttpsURLConnection进行传递中文时错误总结
2017-12-07 16:42 654传递中文时需要用Writer而不是OutputStream ... -
java 内存泄漏
2017-11-27 13:51 4941.内存溢出 out of memory ... -
ActiveMQ 三种发送消息方式(同步,异步,单向)
2017-11-17 10:25 2453MQ 发送普通消息有三种实现方式:可靠同步发送、可靠异步发送、 ... -
java Guava ListenableFuture实现线程回调功能
2017-11-14 10:17 1775java Future具有局限性。在实际应用中,当需要下 ... -
java Curator实现分布式锁
2017-09-05 14:39 1090Curator实现分布式锁主要依赖于zookeeper ... -
java Guava工具集学习(强大)
2017-09-05 10:28 432import java.util.Iterator ... -
java CyclicBarrier进行并发编程
2017-08-25 15:44 673CyclicBarrier允许一组线程相互等待达到一个公共的障 ... -
java 几种性能优化的总结
2017-08-23 14:08 3251、使用StringBuilder 一般 ... -
java 对重复电话号码进行排除的优化(排序和前后对比)
2017-08-22 14:14 7901.先对10万数据排序; 2.对比前后两条数据 ; 3.筛 ... -
ActiveMQ 结合Spring进行数据同步
2017-07-19 15:27 583注意事项hibernate配置文件必须设置自动提交否则不能插入 ... -
java 通过反射原理进行复制操作
2017-07-10 14:24 509// 这些实例的对象字段[sCode] String ...
相关推荐
4. 序列化性能对比:在本文中,我们对java原生序列化和Kryo序列化的性能进行了对比分析。结果表明,Kryo序列化的性能远远超过java原生序列化。Kryo序列化可以将对象序列化为字节流,并可以将字节流反序列化为对象,...
Kryo 是一个快速高效的Java对象图形序列化框架,主要特点是性能、高效和易用。该项目用来序列化对象到文件、数据库或者网络。示例代码:Kryo kryo = new Kryo(); // ... Output output = new Output(new...
在分布式环境中,序列化技术(如XML、JSON、Hessian、Avro、Protobuf、Kyro等)用于数据在网络间传输,选择合适的序列化方案对于性能和数据大小都有直接影响。 综上所述,IT行业的多线程编程、并发集合、分布式存储...
# 基于Netty+Kyro+Zookeeper的RPC框架 [中文](./README.md)|English ## 前言 通过这个简易的轮子,你可以学到 RPC 的底层原理及原理以及各种 Java 编码实践的运用。 ## 介绍 由于 Guide哥自身精力和能力...
基于kyro实现高效通用序列化协议; 基于zookeeper实现服务注册; 基于代理与反射使得接口简单易用; 客户端实现随机、一致性哈希、roundbin三种负载均衡算法; 客户端基于hystrix做限流和及时熔断; 对每一次客户端...
事务事件通过gRPC报告给协调器,事务负载由Kyro序列化/反序列化。 低入侵。 您需要做的就是添加2-3个注释和相应的补偿方法。 易于部署。 所有组件都可以通过docker引导。 支持正向(重试)和反向(补偿)恢复。 ...
guide-rpc-framework 是一款基于 Netty+Kyro+Zookeeper 实现的 RPC 框架。代码注释详细,结构清晰,并且集成了 Check Style 规范代码结构,非常适合阅读和学习。
guide-rpc-framework ...通过这个简易的轮子,你可以学到RPC的替代原理和原理以及各种Java编码实践的运用。 你甚至可以把当做你的毕设/项目经验的选择,这是非常不错!对比其他求职者的项目经验都是各种系统,造轮子
- **高性能**:事务事件通过 gRPC 报告,同时利用 Kyro 进行序列化和反序列化,提高性能。 - **低侵入**:只需要少量的注解和编写补偿方法即可实现分布式事务功能。 - **部署简单**:支持 Docker 快速部署。 - **...
Kyro Linux Tools允许Kyro 1/2图形卡的所有者进行配置和调整,以充分利用它
rpc框架前言学习javaGuide,自己动手造个轮子,通过这个简易的轮子,可以学到RPC的扭曲原理和原理以及各种Java编码实践的运用。介绍是一种基于Netty + Kyro + Zookeeper实现的RPC框架。设计思路一个基本的RPC框架...
这种结合使得开发具有高性能和响应式的全栈Web应用变得简单易行。 在实际开发中,你可以使用Akka HTTP的路由DSL来定义API,处理HTTP请求,同时在前端使用Scala.js创建用户界面并与后端通信。由于两个部分都使用...
第四章 Jenkins集成Gitlab应用管理->创建应用->配置重定向url配置前备份config.xml文件,如果jenkins前面有代理需要改一下upst
第六章 前端发布流水线(NodeJs)1. 项目设置项目配置部分主要是将网站源代码上传到github,然后搭建用户访问的web服务器。再经过Jenkins配置发
通过这个简易的轮子,你可以学到 RPC 的底层原理和原理以及各种 Java 编码实践的运用。 你甚至可以把 当做你的毕设/项目经验的选择,这是非常不错!对比其他求职者的项目经验都是各种系统,造轮子肯定是更加能赢得...
MRPC mrpc是一种简洁易用的分布式服务化治理框架。特性调用透明,像调用本地方法一样使用RPC服务高效支持分布式,基于Zookeeper的服务注册和发现完美集成Spring / SpringBoot项目HTTP传输协议多种负载均衡策略进行下...
它提供的功能已被证明可改善深度学习神经网络模型的运行时性能,同时具有较低的计算和内存需求,并且对任务准确性的影响最小。 AIMET设计用于和模型。 我们还托管-一组针对8位推理进行了优化的流行神经网络模型。...
3.有很多高级知识和设计模式 4.电商用户行为分析大数据平台(项目名称) 5.访问行为,购物行为,广告点击行为,对这些行为进行分析,使用大数据技术来帮助公司提升业绩。 6.主要的功能模块有用户session分析,页面单...
从dubbox-2.8.4开始,所有依赖库的使用方式将和dubbo原来的一样:即如果要使用REST、Kyro、FST、Jackson等功能,需要用户自行手工添加相关的依赖。用户名密码都默认为:root
Dubbox adds features like RESTful remoting, Kyro/FST serialization, etc to the popular . It's been used by several projects of , which is one of the major e-commerce companies in China. 主要贡献者 沉...