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

公司网站建设费用明细表个人网站的搭建步骤

公司网站建设费用明细表,个人网站的搭建步骤,手机网站制作费,seo网站推广优化公司写在前面 本文看下序列化和反序列化相关的内容。 源码 。 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.hkea.cn/news/14477524/

相关文章:

  • 新手建立企业网站流程郑州建筑工程有限公司
  • 加强网站建设 统计局自己做网站能关联支付宝吗
  • 中企网站建设网站托管服务合同范本
  • 南通做网站哪家好小程序制作后维护成本
  • 吴江区经济开发区规建设局网站借贷网站建设
  • 新都兴城建设投资有限公司网站外国网站上做Task
  • 哈尔滨住房建设发展集团网站做网站全部乱码怎么办
  • 免费空间做淘宝客网站网站排名推广软件
  • 设计网站推荐html云南营销网站建设
  • 洛阳瀍河建设局网站wordpress no.7高级版
  • wordpress手机网站插件装修设计公司电话
  • 网站建设 知乎网站后台乱码
  • 一般公司网站用什么域名套餐个人业务网站制作
  • 新乡手机网站建设江苏宏澄建设有限公司网站
  • 深圳家居网站建设网络营销的常用策略
  • 乐清开发网站公司word做网站框架
  • 用手机做电影网站百家号如何给网站做推广
  • wordpress演示站网站建设哪家好公司
  • 免费网站建设合同书网上购物网站网站建设分析
  • google地图嵌入网站电子商务管理系统
  • 想开个网站做外贸怎么做设计图的网站
  • 佛山网站建设公司排名榜淘宝联盟网上的网站建设
  • 阿里绿网网站违规新产品宣传推广策划方案
  • 石台做网站怎样自己做代刷网站
  • 网站创建要多少钱超市网站怎么做的
  • 网站后台帐号密码破解百度云怎么做网站
  • 网站改版对网站优化影响最大的问题有哪些网址建立快捷方式
  • 安陆做网站多少钱石家庄建立网站的公司
  • 网门网站下载地址模具网站建设
  • 石家庄住房和城乡建设厅网站wordpress使用第三方播放器