当前位置: 首页 > news >正文

linux主网站设计点击图片跳转到网站怎么做链接

linux主网站设计,点击图片跳转到网站怎么做链接,网站建设实验报告模板,快站app官网下载写在前面 本文看下序列化和反序列化相关的内容。 源码 。 1#xff1a;为什么#xff0c;什么是序列化和反序列化 Java对象是在jvm的堆中的#xff0c;而堆其实就是一块内存#xff0c;如果jvm重启数据将会丢失#xff0c;当我们希望jvm重启也不要丢失某些对象#xff…写在前面 本文看下序列化和反序列化相关的内容。 源码 。 1为什么什么是序列化和反序列化 Java对象是在jvm的堆中的而堆其实就是一块内存如果jvm重启数据将会丢失当我们希望jvm重启也不要丢失某些对象或者是需要将某些对象传递到其他服务器rpc有没有时就需要使用到序列化和反序列化因为序列化就是将Java对象转换为文件而反序列化就是加载文件并生成对象在堆中。 2Java的序列化和反序列化 Java想要序列化和反序列化必须实现java.io.Serializable接口并给变量serialVersionUID赋值该值用来标识Java类文件的版本。如下序列化和反序列化的例子 SneakyThrows private static void javaDeserialize() {ObjectInputStream objectInputStream new ObjectInputStream(new FileInputStream(d:\\test\\xxx.obj));Student student (Student) objectInputStream.readObject();System.out.println(java反序列化student完成);System.out.println(student); }SneakyThrows private static void javaSerialize() throws IOException {Student student new Student();student.setName(张三);student.setAge(99);ObjectOutputStream objectOutputStream new ObjectOutputStream(new FileOutputStream(d:\\test\\xxx.obj));// 如果没有实现java.io.Serializable接口将会抛出异常java.io.NotSerializableExceptionobjectOutputStream.writeObject(student);objectOutputStream.close();System.out.println(java序列化student完成); }java序列化的问题: 1:无法跨平台如Java对象序列化的结果反序列化为python的对象这样就限制了其不适合某些使用场景如rpc的场景中就无法使用这种序列化方式因为rpc需要支持异构的系统 2序列化的文件大这样占用磁盘大网络传输速度慢占用带宽反序列化的速度也慢这样就限制了其不适合某些使用场景如rpcrpc需要尽量快的序列化和反序列化速度,以提高性能 3序列化的速度慢还是因为其序列化结果的内容多以上的问题我们可以使用专门的序列化框架来解决如hessian。 3hessian的序列化和反序列化 dubbo 默认使用的是该序列化方式将来可能会优化成性能更优的序列化方式如kryofst等。 hessian支持语言无关的序列化和反序列化并且速度更快序列化的结果更小如下 private void hessianSerialize() {Student stu new Student(hessian,1);byte[] obj serialize(stu);System.out.println(hessian serialize result length obj.length);byte[] obj2 serialize2(stu);System.out.println(hessian2 serialize result length obj2.length);byte[] other jdkSerialize(stu);System.out.println(jdk serialize result length other.length);Student student deserialize2(obj2);System.out.println(deserialize result entity is student); }具体看文章头源码。 运行结果如下 hessian serialize result length 65 hessian2 serialize result length 59 jdk serialize result length 101 deserialize result entity is Student(namehessian, age1)可以看到结果的大小jdk序列化hessian序列化hessian2序列化所以如果工作中有这种需求建议使用hessian2。 4arvo的序列化和反序列化 使用步骤如下 1:定义.avsc描述文件 2通过avro-tool.jar以.avsc描述文件作为输入生成pojo 3通过avro.jar的API进行序列化生成.avro文件和反序列化首先我们需要定义IDL命名为User.avsc: {namespace: dongshi.daddy.seriablize.avro,type: record,name: User,fields: [{name: name, type: string},{name: id, type: int},{name: salary, type: int},{name: age, type: int},{name: address, type: string}] }接着通过avro-tools.jar生成pojo如下 $ java -jar avro-tools-1.8.2.jar compile schema User.avsc res Input files to compile:User.avsc log4j:WARN No appenders could be found for logger (AvroVelocityLogChute). log4j:WARN Please initialize the log4j system properly. log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.然后我们将生成的User.java文件拷贝到classpath的dongshi.daddy.seriablize.avro目录接着就可以执行序列化和反序列化了首先执行序列化 Test public void testAvroSerialize() throws Exception { // 声明并初始化User对象// 方式一User user1 new User();user1.setName(wqbin);user1.setId(1);user1.setSalary(1000);user1.setAge(20);user1.setAddress(beijing);// 方式二 使用构造函数 // Alternate constructorUser user2 new User(wang, 2, 1000, 19, guangzhou);// 方式三使用Build方式 // Construct via builderUser user3 User.newBuilder().setName(bin).setId(3).setAge(21).setSalary(2000).setAddress(shenzhen).build();String userDir System.getProperty(user.dir);System.out.println(userDir is: userDir);String path userDir /User.avro; // avro文件存放目录DatumWriterUser userDatumWriter new SpecificDatumWriterUser(User.class);DataFileWriterUser dataFileWriter new DataFileWriterUser(userDatumWriter);dataFileWriter.create(user1.getSchema(), new File(path)); // 把生成的user对象写入到avro文件dataFileWriter.append(user1);dataFileWriter.append(user2);dataFileWriter.append(user3);dataFileWriter.close(); }生成文件如下 接着执行反序列化 Test public void testAvroDeserialize() throws Exception {DatumReaderUser reader new SpecificDatumReaderUser(User.class);DataFileReaderUser dataFileReader new DataFileReaderUser(new File(System.getProperty(user.dir) /User.avro), reader);User user null;while (dataFileReader.hasNext()) {user dataFileReader.next();System.out.println(user);} }输出如下内容则为成功 {name: wqbin, id: 1, salary: 1000, age: 20, address: beijing} {name: wang, id: 2, salary: 1000, age: 19, address: guangzhou} {name: bin, id: 3, salary: 2000, age: 21, address: shenzhen}Process finished with exit code 05kryo的序列化和反序列化 kryo是底层使用了ASM字节码技术所以其只能使用在基于JVM的语言上如Javascalakotlin等接下来看下其如何使用。 首先引入pom dependencygroupIdcom.esotericsoftware/groupIdartifactIdkryo/artifactIdversion5.2.0/version /dependency序列化 Test public void testKrypSerialize() throws Exception {Kryo kryo new Kryo();kryo.register(SomeClass.class);SomeClass someClass new SomeClass();someClass.value dongshidaddy;Output output new Output(new FileOutputStream(userDir /someCls.bin));kryo.writeObject(output, someClass);output.close(); }运行后 反序列化 Test public void testKrypDeserialize() throws Exception {Kryo kryo new Kryo();kryo.register(SomeClass.class);Input input new Input(new FileInputStream(userDir /someCls.bin));SomeClass someClassFromBin kryo.readObject(input, SomeClass.class);System.out.println(someClassFromBin.value); }运行后 dongshidaddyProcess finished with exit code 06fst的序列化和反序列化 java的序列化和反序列化方式性能优秀jdk原生序列化速度的10倍序列化结果体积1/3左右如果有序列化的需求可以考虑使用。看下如何使用。 引入pom dependencygroupIdde.ruedigermoeller/groupIdartifactIdfst/artifactIdversion2.04/version /dependency序列化和反序列化 // fst序列化和反序列化 Test public void testFstSerializeAndDescrialize() {dongshi.daddy.seriablize.fst.User bean new dongshi.daddy.seriablize.fst.User();bean.setUsername(xxxxx);bean.setPassword(123456);bean.setAge(1000000);byte[] byteBean configuration.asByteArray(bean);System.out.println(序列化的字节大小是 byteBean.length);// 反序列化dongshi.daddy.seriablize.fst.User resultBean (dongshi.daddy.seriablize.fst.User) configuration.asObject(byteBean);System.out.println(fst反序列化的结果是 resultBean); }输出如下内容则为成功 序列化的字节大小是68 fst反序列化的结果是User(usernamexxxxx, age1000000, password123456)Process finished with exit code 0写在后面 巨人的肩膀 再来认识一下 Java 序列化 。 Hessian序列化实例 。 Avro从入门到入土 。 深入浅出序列化2——Kryo序列化 。 Kryo 和 FST 序列化 。
http://www.dnsts.com.cn/news/54631.html

相关文章:

  • 建设专业网站的利弊自己电脑上做网站怎么使用源码
  • 泰安工程建设信息网站保网官网
  • 专业网站建设哪家便宜大连建设执业资格注册中心网站
  • 四川建设机械网站建设一个网站需要做哪些事情
  • 内蒙建设厅官方网站免费的短视频app大全下载
  • 佛山高端网站建设报价制作网页链接的方法
  • 深圳工信部网站备案信息查询长宁区网站制作设计
  • 做的网站进不去后台如何创建一个简单的网页
  • 公司网站自己怎么建立如何注册个人网站
  • 网站接任务来做成都网站建站公司
  • 全国十大网站建设公司排名php网站源码安装教程
  • 网站服务器租一个月最近播放中文版在线观看电视剧
  • 龙华观澜网站建设做微信广告网站
  • 有哪些做投行网站绵阳学校网站建设
  • 泸州市网站建设wordpress备份文件
  • html网站开发事例教程新余市建设局网站
  • 深圳商城网站设计公司wordpress文章类插件
  • 乐都网站建设多少钱做项目搭建网站 构建数据库
  • 做网站用矢量图还是位图贵阳公司官方网站建设
  • 网站建设应该应聘什么岗位有个人做网站的
  • 做装修效果图的网站有哪些软件下载怎么做网站布局
  • 建设学校网站完整的网站建设平台协议书
  • 如何建设视频网站北京网站优化价格
  • 鸿运通网站建设怎么样吉林网络公司网站建设
  • 深圳公司网页设计推广报价网站优化建设哈尔滨
  • 建设部网站不支持360网站联盟的收益模式
  • 做pc端软件可以参考那些网站响应式网站是什么
  • 做外链音乐网站大型网站开发周期
  • 网站建设需要几步网站建设怎样中英文
  • 网站流量的转换率一般是多少南沙商城网站建设