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

怎么推广网站wordpress upload

怎么推广网站,wordpress upload,装修公司起名字大全免费,网站建设推广哪里实惠最近由于工作需要#xff0c;需要研究常用的集中序列化方式#xff0c;主要目的是对象序列化后占用空间会大大减少#xff0c;便于存储和传输#xff0c;下面是几种序列化方式的使用demo1. Java自带的Serialize依赖jar包#xff1a;无代码示意#xff1a;import java.io.…最近由于工作需要需要研究常用的集中序列化方式主要目的是对象序列化后占用空间会大大减少便于存储和传输下面是几种序列化方式的使用demo1. Java自带的Serialize依赖jar包无代码示意import java.io.{ByteArrayInputStream, ByteArrayOutputStream, ObjectInputStream, ObjectOutputStream}object JavaSerialize {def serialize(obj: Object): Array[Byte] {var oos: ObjectOutputStream nullvar baos: ByteArrayOutputStream nulltry {baos new ByteArrayOutputStream()oos new ObjectOutputStream(baos)oos.writeObject(obj)baos.toByteArray()}catch {case e: Exception println(e.getLocalizedMessage e.getStackTraceString)null}}def deserialize(bytes: Array[Byte]): Object {var bais: ByteArrayInputStream nulltry {bais new ByteArrayInputStream(bytes)val ois new ObjectInputStream(bais)ois.readObject()}catch {case e: Exception println(e.getLocalizedMessage e.getStackTraceString)null}}}2. Jackson序列化方式依赖jar包json4s-jackson_2.10-3.2.11.jar、jackson-annotations-2.3.0.jar、jackson-core-2.3.1.jar、jackson-databind-2.3.1.jar(均可在maven上下载)代码示意import org.json4s.NoTypeHintsimport org.json4s.jackson.Serializationimport org.json4s.jackson.Serialization._object JacksonSerialize {def serialize[T : serializable with anyref : manifest t string{/pimplicit val formats Serialization.formats(NoTypeHints)write(obj)}def deserialize[T: Manifest](objStr: String): T {implicit val formats Serialization.formats(NoTypeHints)read[T](objStr)}}代码也是非常简单好处是序列化后的结果是以json格式显示可以直接阅读更人性化但是缺点是序列化耗时较久并且序列化后大小也不小3. Avro序列化方式依赖jar包avro-tools-1.7.7.jar(用于编译生成类)、avro-1.7.7.jar第一步定义数据结构scheme文件user.avsc如下{namespace: example.avro,type: record,name: User,fields: [{name: name, type: string},{name: favorite_number, type: [int, null]},{name: favorite_color, type: [string, null]}]}第二步通过工具生成类(1)将avro-tools-1.7.7.jar 包和user.avsc 放置在同一个路径下(2)执行 java -jar avro-tools-1.7.7.jar compile schema user.avsc java.(3)会在当前目录下自动生成User.java文件然后在代码中引用此类第三步代码示意import java.io.ByteArrayOutputStreamimport example.avro.Userimport org.apache.avro.file.{DataFileReader, DataFileWriter}import org.apache.avro.io.{DecoderFactory, EncoderFactory}import org.apache.avro.specific.{SpecificDatumReader, SpecificDatumWriter}object AvroSerialize {//将序列化的结果返回为字节数组def serialize(user: User): Array[Byte] {val bos new ByteArrayOutpua699tStream()val writer new SpecificDatumWriter[User](User.getClassSchema)val encoder EncoderFactory.get().binaryEncoder(bos, null)writer.write(user, encoder)encoder.flush()bos.close()bos.toByteArray}//将序列化后的字节数组反序列化为对象def deserialize(bytes: Array[Byte]): Any {val reader new SpecificDatumReader[User](User.getClassSchema)val decoder DecoderFactory.get().binaryDecoder(bytes, null)var user: User nulluser reader.read(null, decoder)user}//将序列化的结果存入到文件def serialize(user: User, path: String): Unit {val userDatumWriter new SpecificDatumWriter[User](User.getClassSchema)val dataFileWriter new DataFileWriter[User](userDatumWriter)dataFileWriter.create(user.getSchema(), new java.io.File(path))dataFileWriter.append(user)dataFileWriter.close()}//从文件中反序列化为对象def deserialize(path: String): List[User] {val reader new SpecificDatumReader[User](User.getClassSchema)val dataFileReader new DataFileReader[User](new java.io.File(path), reader)var users: List[User] List[User]()while (dataFileReader.hasNext()) {users : dataFileReader.next()}users}}这里提供了两种方式一种是通过二进制另一种是通过文件。方法相对上面两种有点复杂在hadoop RPC中使用了这种序列化方式4. Kryo序列化方式依赖jar包kryo-4.0.0.jar、minlog-1.2.jar、objenesis-2.6.jar、commons-codec-1.8.jar代码示意import java.io.{ByteArrayOutputStream}import com.esotericsoftware.kryo.{Kryo}import com.esotericsoftware.kryo.io.{Input, Output}import com.esotericsoftware.kryo.serializers.JavaSerializerimport org.objenesis.strategy.StdInstantiatorStrategyobject KryoSerialize {val kryo new ThreadLocal[Kryo]() {override def initialValue(): Kryo {val kryoInstance new Kryo()kryoInstance.setReferences(false)kryoInstance.setRegistrationRequired(false)kryoInstance.setInstantiatorStrategy(new StdInstantiatorStrategy())kryoInstance.register(classOf[Serializable], new JavaSerializer())kryoInstance}}def serialize[T : serializable with anyref : manifest t arrayval baos new ByteArrayOutputStream()val output new Output(baos)output.clear()try {kryo.get().writeClassAndObject(output, t)} catch {case e: Exception e.printStackTrace()} finally {}output.toBytes}def deserialize[T : serializable with anyref : manifest array t{/pval input new Input()try {input.setBuffer(bytes)kryo.get().readClassAndObject(input).asInstanceOf[T]} finally {}}}这种方式经过我本地测试速度是最快的关键是做好对kryo对象的复用因为大量创建会非常耗时在这里要处理好多线程情况下对kryo对象的使用spark中也会使用到kryo其实还有其他的序列化方式比如protobuf、thrify操作上也有一定复杂性由于环境问题暂时未搞定搞定了再发出来。
http://www.zqtcl.cn/news/960073/

相关文章:

  • 荆州网站开发在线推广网站的方法
  • 可以查企业的网站网站建设的外国文献
  • 什么网站可以做相册视频企业网站开发时间
  • 德州市建设小学网站精品网站建设费用
  • 云主机可以做几个网站wordpress 自动发布
  • python网站开发简单吗小程序开发定制北京公司
  • 做网站什么都不懂 怎么做wordpress10款音乐插件
  • 何使网站的页面结构更为合理建用vs2013做网站案例
  • 帮人做空间网站怎么赚钱静态网站怎么维护
  • 3d网站带后台下载深圳建站公司设计深业集团
  • 上海人才中心网站电脑培训班
  • 桂林网站建设服务电话网页开发基础
  • 企业型网站建设策划网站案例模板
  • 怎么做产品网站wordpress ajax form
  • 智能建站设计开发电子商务网站的主流语言
  • 大型建站公司是干嘛的北京最富裕的三个区
  • 深圳网站建设设计公司苏州营销网站建设公司排名
  • 网站h1标签的应用漯河网站关键词优化
  • 企业做推广哪些网站比较好环球资源网官方网站
  • 没有网站如何做落地页城市门户网站建设
  • 网易梦幻西游手游官方网站下载制作网站谁家做的好
  • 北京网站制作外包如何在易语言上做网站
  • 中国的网站做欧美风广告设计是干什么的
  • 做酱菜网站做网站什么是解析什么是跳转
  • 西安企业网站备案一般得多少天网站建设公司2018
  • 网站建设安全方案许昌正规网站优化公司
  • 厦门 外贸网站一般什么企业需要建站
  • 代理注册公司需要什么条件网络推广优化服务
  • 做淘宝客网站需要备案吗物流企业
  • 珠海正规网站制作系统东莞建站多少钱