游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

高性能的序列化与反序列化kryo的简单使用

  前言
  kryo是个高效的java序列化反序列化库,目前Twitter、yahoo、Apache、strom等等在使用该技术,比如Apache的spark、hive等大数据领域用的较多。为什么使用kryo而不是其他?
  因为性能足够好。比kyro更高效的序列化库就只有google的protobuf了(而且两者性能很接近),protobuf有个缺点就是要传输的每一个类的结构都要生成对应的proto文件(也可以都放在同一个proto文件中,如果考虑到扩展性的话,不建议放在一个proto文件中),如果某个类发生修改,还得重新生成该类对应的proto文件;另外考虑到项目中用的全部是java技术栈,不存在不同编程语言间的兼容性问题,因此最终采用了kryo作为序列化库。使用场景
  (数据交换或数据持久化)比如使用kryo把对象序列化成字节数组发送给消息队列或者放到redis等nosql中等等应用场景。
  注意:由于kryo不是线程安全的,针对多线程情况下的使用,要对kryo进行一个简单的封装设计,从而可以多线程安全的使用序列化和反序列化序列化和反序列化接口设计序列化工具(程序调用该接口来实现objbyte〔〕之间的序列化反序列化)authoreguidpublicinterfaceSerializer{序列化paramtparambytespublicvoidserialize(Objectt,byte〔〕bytes);序列化paramobjparambytesparamoffsetparamcountpublicvoidserialize(Objectobj,byte〔〕bytes,intoffset,intcount);反序列化parambytes字节数组returnTTpublicTTdeserialize(byte〔〕bytes);反序列化parambytesparamoffsetparamcountreturnpublicTTdeserialize(byte〔〕bytes,intoffset,intcount);}使用kryo实现上面的接口基于kyro的序列化反序列化工具authoreguidpublicclasskryoSerializerimplementsSerializer{由于kryo不是线程安全的,所以每个线程都使用独立的kryofinalThreadLocalKryokryoLocalnewThreadLocalKryo(){OverrideprotectedKryoinitialValue(){KryokryonewKryo();kryo。register(ct,newBeanSerializer(kryo,ct));returnkryo;}};finalThreadLocalOutputoutputLocalnewThreadLocalOutput();finalThreadLocalInputinputLocalnewThreadLocalInput();privateClasslt;?ctnull;publickryoSerializer(Classlt;?ct){this。ctct;}publicClasslt;?getCt(){returnct;}publicvoidsetCt(Classlt;?ct){this。ctct;}Overridepublicvoidserialize(Objectobj,byte〔〕bytes){KryokryogetKryo();OutputoutputgetOutput(bytes);kryo。writeObjectOrNull(output,obj,obj。getClass());output。flush();}Overridepublicvoidserialize(Objectobj,byte〔〕bytes,intoffset,intcount){KryokryogetKryo();OutputoutputgetOutput(bytes,offset,count);kryo。writeObjectOrNull(output,obj,obj。getClass());output。flush();}获取kryoparamtreturnprivateKryogetKryo(){returnkryoLocal。get();}获取Output并设置初始数组parambytesreturnprivateOutputgetOutput(byte〔〕bytes){Outputoutputnull;if((outputoutputLocal。get())null){outputnewOutput();outputLocal。set(output);}if(bytes!null){output。setBuffer(bytes);}returnoutput;}获取OutputparambytesreturnprivateOutputgetOutput(byte〔〕bytes,intoffset,intcount){Outputoutputnull;if((outputoutputLocal。get())null){outputnewOutput();outputLocal。set(output);}if(bytes!null){output。writeBytes(bytes,offset,count);}returnoutput;}获取InputparambytesparamoffsetparamcountreturnprivateInputgetInput(byte〔〕bytes,intoffset,intcount){Inputinputnull;if((inputinputLocal。get())null){inputnewInput();inputLocal。set(input);}if(bytes!null){input。setBuffer(bytes,offset,count);}returninput;}SuppressWarnings(unchecked)OverridepublicTTdeserialize(byte〔〕bytes,intoffset,intcount){KryokryogetKryo();InputinputgetInput(bytes,offset,count);return(T)kryo。readObjectOrNull(input,ct);}OverridepublicTTdeserialize(byte〔〕bytes){returndeserialize(bytes,0,bytes。length);}测试一下kryo的序列化和反序列化
  为什么使用纳秒,而不用毫秒?与java原生的序列化反序列化要耗时几毫秒不同,kryo序列化和反序列化太快了,单个对象的序列化反序列化速度都在0。0x毫秒左右(如果电脑性能更好的话,会更快)SerializersernewkryoSerializer(Msg。class);for(inti0;i10;i){MsgmsgnewMsg();msg。setVersionflag(newbyte〔〕{1,2,3});msg。setCrccode((short)1);msg。setMsgbody(newbyte〔〕{123,123,123,43,42,1,12,45,57,98});byte〔〕bytesnewbyte〔300〕;longstartSystem。nanoTime();ser。serialize(msg,bytes);System。err。println(序列化耗时:(System。nanoTime()start));System。out。println(msg);System。out。println(Arrays。toString(bytes));Msgnewmsgnull;startSystem。nanoTime();newmsgser。deserialize(bytes);System。err。println(反序列化耗时:(System。nanoTime()start));System。out。println(newmsg);}
  作者:eguid1
  链接:https:juejin。cnpost6953556788062978079

企业自用撬装加油合法吗选择新能源汽车的顾虑随着撬装加油站(企业加油站)逐渐出现在国内很多城市,受到了各大用油量大、内部车辆多的企业的关注。有企业选择自购装置来为员工提供加油服务,这样做到底合不合法呢?撬装加油站……越来越多人觉得生活无限极疲惫,其实不止是因为压力大现在生活节奏太快,越来越多的人产生了疲惫感,尽管有时候明明自己什么都没有做,但就是觉得很疲惫,其实压力大是一方面,但是疲惫感应是多方面造成的,我们应该及时改善。心里产生疲……拥有这些快乐,我可以宅家一个星期宅家,是一个安全又舒适的词,正因如此,人们特别喜欢在闲来无事时宅在属于自己的空间中,肆意放松。这个空间可以不用在意大小,但是不能少了一些愉悦自己的布置,比如应季的鲜花、地……智能窗帘一套500块终身可用不香吗?说起智能窗帘,大家都有一个误解。总感觉不好用,总是坏,这都是过去的老思想,传统观念。在没做智能窗帘之前,我也是这样想法。等到自己做了,发现不是这样的情况。首先介绍一……热点魅族推出新业务!面向政企客户,竟玩起了企业定制导语前有老对手华米OV,后有他们的子品牌redmi,一加,realme,iQOO。魅族现在的处境是越来越艰难了。老黄只好拓展起了新业务企业定制。主要是面向政企客户,以下是……年轻女性购机首选机型,小米Civi自拍能力真强这几年,小米可以说是取得了非常好的成绩,不仅发布的旗舰机很受欢迎,千元价位手机也是非常不错的,成为同价位产品中性价比最高的手机。如今,小米为了博得更多年轻女性的欢心,推出了高颜……OPPOAce2到底能不能打手游发展迅速的今天,影响游戏体验已经不再是硬件,软件也是相当的重要。因此,在昨日刚刚发布的OPPOAce2中,ColorOS带来不少的优化和新技术,那么到底在日常中能够为我们带……老罗的成功,是这个时代所决定的最开始关注老罗,是因为老罗语录就像很多锤粉那样我也听过全套的老罗语录极具讽刺意味的调侃再配上渣一样的音质和临场感极强的爆笑声当然了,我听了也会笑……小马哥请默克尔吃最后的晚餐!卡米拉嫌弃凯特漂亮但愚蠢会者定离,一期一祈,有相遇就会有别离。想到这里,法国爱丽舍宫的马某人用45仰望天空,终于还是没忍住在帅气的脸庞流下一滴泪水。01小马哥和默克尔最后的晚餐今天晚……落地将近200万,4。0T有600马力,暴徒的西装都不便宜随着国民生活水平的提高,车成了刚需,不过我们在选车的时候大都会比较纠结,毕竟谁都想买一辆各方面表现都非常优异的车,而今天小编要说的奥迪RS7就是这么一款车。外观方面,车身……不用再忍厚重的iPadPro保护壳了丨这款壳是真轻薄防护此文来自于粉丝投稿,原作者为EasyMoney本次分享的是来自PITAKA家的MagEZCaseforiPadPro超薄磁吸芳纶纤维保护壳。用过PITAKA家磁吸芳纶手机……仙剑奇侠传7即将来袭,你的电脑能畅玩吗?仙剑无论在电视剧,还是在游戏领域都是十分受欢迎的IP。近期,国产单机系列游戏《仙剑奇侠传》的第九部作品《仙剑奇侠传七》已在1月15日中午12点正式解锁试玩版。《仙剑奇侠传七》于……
从全球格局最新技术到开源工具,一文告诉你语音识别发展现状钛媒体旗下的钛坦白微信课第27期,也是AI已来系列分享第1期,请来了6位语音识别、自然语言处理领域的钛客进行分享。本文根据思必驰上海交大联合实验室副主任、上海交通大学计算机科学……安踏正式签约王一博,几家欢喜,几家愁五一期间,也是北京冬奥会特许上新日。徽章、会议杯套装、箱包等一系列纪念性和实用性兼备的一大波北京冬奥特许新品来袭,作为一直致力于为中国国家队打造专业运动装备的安踏,也正式官宣了……适的才是最好的,艾力绅锐混动的制胜之道人生是个万花筒,每个人都以自己的方式,表现出独具个性的色彩和姿态。但生活的美妙之处却在于,很多事情在我们没做到一定程度之前,其实是完全没法理解的就像阅车无数的人,最终为什……毛主席亲点少将军衔中将待遇,李云龙原型之一,哪位开国将军?钟伟是湖南平江人;原名钟步云,又名钟德泰。1929年入团,1930年入党并参加工农红军;在革命战争年代,先后在红三军团、十五军团担任团政委、师政治部主任;新四军第三师第十旅二十……某猿曝光美团面试骗局还没发offer就让自己离职,拒绝发of大多数人在职求职时,为了保险,都会等到offer到手才会提出离职。但一个新东方的程序员却遇到了这样一件糟心事:去美团面试,前两轮面试通过后,部门leader跟他说决定录用他,让……华强北电子世界风貌华强北商业区位于广东省深圳市福田区,其前身是生产电子、通讯、电器产品为主的工业区域,其拥有厂房40多栋。在华强北路南北930米,东西1560米,商业区总面积1。45平方公里左右……奔驰未来感十足的电动车,长度为141cm的大屏,EQS向S级BBA正在从头开始研发纯电动车型,电动化时代的到来也让它们都使出了看家本领,作为豪华品牌的它们开始针对它们旗下产品的设计和布局做出改变,作为其中的一员,奔驰就开始将更未来化的设……聪明人都会选贵的手机?目前这4部手机最值得考虑,你买了哪部?一部高端旗舰手机可以用很多年,可以让你省心省力,同时能给你带来好的体验,何乐而不为?细细想一下,好像是这么一回事,如果使用个5年时间的话,平均每年也就一千多元。现在有点理解那么……新iPhone消息,增加屏幕下指纹识别解锁?mini系列消失新iPhone的消息曝光了,当然从这个消息看,iPhone也要开始变成安卓化了?为什么这么说?因为看起来iPhone真的设计和一些功能要变成安卓手机的样子了?当然新机应该……运用全波形反演技术为地下油藏做个高清透视油气资源越采越深,勘探难度也越来越大。如何揭开地下深层构造的神秘面纱,绘制出高清的地震剖面成像图,更精准预测地下岩层和油气的分布情况?记者近日从中国石油石化物探技术研究院(以下……为什么曾经火极一时的曲面屏,如今却越来越被冷场?看股票看不到今天的那个K线,是什么感觉,你能理解么冷场这个词语用的不太准确,因为曲面形态的屏幕用户评价很分化,市场上的曲屏产品越来越多,怎么能说是冷场呢?那拿我们最常用的……初生牛犊不怕虎,自古英雄出少年华为的天才少年计划依靠天才少年计划,华为取得了丰硕的科研成果。就在不久前,依靠天才少年钟钊及其团队,华为实现了全球首个AutoML大规模商用。AutoML是英文AutomatedMachi……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网