开发工具分享
  • 首页
  • 计算科学
  • 文化旅游
  • 项目和网站
    • OSSEZ 计算技术
    • USRealEstate 社区
    • 地区文化
    • CWIKI.US
    • BUG.OSSEZ.COM
    • RSS.OSSEZ.COM
Computer Science
Computer Science

MessagePack Java Jackson Dataformat - POJO 的序列化和反序列化

在本测试代码中,我们定义了一个 POJO 类,名字为 MessageData,你可以访问下面的链接找到有关这个类的定义。 https://github.com/cwiki-us-demo/serialize-deserialize-demo-java/blob/master/src/main/java/com/insight/demo/serialize/model/msgpack/MessageData.java POJO 的序列化和反序列化 你仅仅需要对 MessagePackFactory 进行实例化,然后传递参数到 com.fasterxml.jackson.databind.ObjectMapper 的构造方法。 然后你就可以用与 jackson-databind 相同的方法使用 MessagePack 格式化数据。 本测试方法,可以在 https://github.com/cwiki-us-demo/serialize-deserialize-demo-java/blob/master/src/test/java/com/insight/demo/serialize/MessagePackSerializer.java 中找到。 /** * SerializationPOJO */ @Test public void testMessagePackSerializationPOJO() { byte[] bytes = new byte[0]; String uuid = UUID.randomUUID().toString(); // Instantiate ObjectMapper for MessagePack ObjectMapper objectMapper = new ObjectMapper(new MessagePackFactory()); MessageData pojo = new MessageData(); pojo.setUuid(uuid); pojo.setName("CWIKI.US"); try { // Serialize a Java object to byte array bytes = objectMapper.writeValueAsBytes(pojo); logger.debug("Length of Bytes: [{}]", bytes.length); // Deserialize the byte array to a Java object MessageData deserialized = objectMapper.readValue(bytes, MessageData.class); logger.debug("Deserialized Name: [{}]", deserialized.name); assertEquals("CWIKI.US", deserialized.name); } catch (JsonProcessingException ex) { logger.error("Serialize Error", ex); } catch (IOException e) { e.printStackTrace(); } } https://www.cwiki.us/display/Serialization/MessagePack+Jackson+Dataformat

2019年08月08日 0Comments 731Browse 0Like Read more
Computer Science

MessagePack Java Jackson Dataformat - 安装

中文标题【MessagePack 的 Jackson 数据格式】 本页面中的所有示例程序,请到代码库 https://github.com/cwiki-us-demo/serialize-deserialize-demo-java 中下载进行测试。 Jackson 扩展库是一个易读取,同时是使用  MessagePack 创建的组件库,用于从 jackson-databind API 对数据进行编码。 这个组件扩展了标准的 Jackson streaming API (JsonFactory, JsonParser, JsonGenerator), 同时能够更加无缝的集成更加高级别的数据抽象(数据绑定,树模型和插件扩展)。 更多有关 Jackson-annotations 细节,请参考  https://github.com/FasterXML/jackson-annotations。 这个库针对默认 POJO的序列化/反序列化(serialization/deserialization)不能兼容  msgpack-java v0.6 或者早期的版本。 安装 Maven <dependency>   <groupId>org.msgpack</groupId>   <artifactId>jackson-dataformat-msgpack</artifactId>   <version>(version)</version> </dependency> Sbt libraryDependencies += "org.msgpack" % "jackson-dataformat-msgpack" % "(version)" Gradle repositories {     mavenCentral() } dependencies {     compile 'org.msgpack:jackson-dataformat-msgpack:(version)' }   https://www.cwiki.us/display/Serialization/MessagePack+Jackson+Dataformat

2019年08月08日 0Comments 666Browse 0Like Read more
Computer Science

MessagePack Java 0.6.X 动态类型

我们知道 Java 是一个静态类型的语言。通过输入 Value MessagePack能够实现动态的特性。 Value 有方法来检查自己的类型(isIntegerType(), isArrayType(), 等...),同时也转换为自己的类型 (asStringValue(), convert(Template))。 本代码可以在 https://github.com/cwiki-us-demo/messagepack-6-demo-java/blob/master/src/test/java/com/insight/demo/msgpack/MessagePack6DynamicTyping.java 中查看。 package com.insight.demo.msgpack; import org.junit.Test; import org.msgpack.MessagePack; import org.msgpack.type.Value; import org.msgpack.unpacker.Converter; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.ArrayList; import java.util.List; import static org.msgpack.template.Templates.TString; import static org.msgpack.template.Templates.tList; /**  * MessagePack6Objects  *  * @author yhu  */ public class MessagePack6DynamicTyping {     final Logger logger = LoggerFactory.getLogger(MessagePack6DynamicTyping.class);     /**      * Test MessagePack6Objects      */     @Test     public void MessagePack6DynamicTyping() {         logger.debug("MessagePack6Objects for Objects");         // Create serialize objects.         List<String> src = new ArrayList<String>();         src.add("msgpack");         src.add("kumofs");         src.add("viver");         MessagePack msgpack = new MessagePack();                   try {             // Serialize             byte[] raw = msgpack.write(src);             // Deserialize directly using a template             List<String> dst1 = msgpack.read(raw, tList(TString));             // Or, Deserialze to Value then convert type.             Value dynamic = msgpack.read(raw);             List<String> dst2 = new Converter(dynamic).read(tList(TString));         } catch (Exception ex) {             logger.error("MessagePack Serialization And Deserialization error", ex);         }     } } https://www.cwiki.us/display/Serialization/QuickStart+For+MessagePack+Java+0.6.X

2019年08月07日 0Comments 639Browse 0Like Read more
Computer Science

MessagePack Java 0.6.X 可选字段

你可添加一个新的字段来保持可用性。在新字段中使用 @Optional 注解。 @Message public static class MyMessage {     public String name;     public double version;        // new field     @Optional     public int flag = 0; } 如果你尝试反序列化老版本数据的话,可选字段将会被忽略。   https://www.cwiki.us/display/Serialization/QuickStart+For+MessagePack+Java+0.6.X

2019年08月07日 0Comments 726Browse 0Like Read more
Computer Science

MessagePack Java 0.6.X 不使用注解(annotations)来序列化

如果你不能添加 @Message 到你的定义对象中但是你还是希望进行序列化。你可以使用 register 方法来在类中启用序列化对象。 如下的代码所示: MessagePack msgpack = new MessagePack(); msgpack.register(MyMessage2.class);   例如,如果 MyMessage2 类被包含到了外部的库中了。你没有办法比较容易的编辑源代码,添加 @Message 到源代码中。 register 方法能够允许为 MyMessage2 自动创建一个 serializer 和 deserializer 对。 你可以在执行方面后序列化对象 MyMessage2。   https://www.cwiki.us/display/Serialization/QuickStart+For+MessagePack+Java+0.6.X

2019年08月06日 0Comments 700Browse 0Like Read more
Computer Science

MessagePack Java 0.6.X List, Map 对象的序列化和反序列化

为了序列化原生的容器对象例如  List 和 Map 对象,你必须使用 Template。 Template 对象是 serializer 和 deserializer 的配对。例如,为了序列化一个 List 对象,在 List 对象中 Integer 对象为元素,你可以使用下面的方法来创建一个模板对象(Template object)。 Template listTmpl = Templates.tList(Templates.TInteger); 类 tList, TInteger 是静态方法,字段为 Templates。 一个 List 和 Map 对象的用例如下显示: 本代码可以在 https://github.com/cwiki-us-demo/messagepack-6-demo-java/blob/master/src/test/java/com/insight/demo/msgpack/MessagePack6Template.java 中查看。 package com.insight.demo.msgpack; import org.junit.Test; import org.msgpack.MessagePack; import org.msgpack.packer.Packer; import org.msgpack.template.Template; import org.msgpack.unpacker.Unpacker; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.math.BigInteger; import java.nio.ByteBuffer; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import static org.msgpack.template.Templates.*; /** * MessagePack6Template * * @author yhu */ public class MessagePack6Template { final Logger logger = LoggerFactory.getLogger(MessagePack6Template.class); /** * Test MessagePack6Template */ @Test public void testMessagePack6Template() { logger.debug("MessagePack6Template for Template"); MessagePack msgpack = new MessagePack(); try { // Create templates for serializing/deserializing List and Map objects Template<List<String>> listTmpl = tList(TString); Template<Map<String, String>> mapTmpl = tMap(TString, TString); // // Serialization // ByteArrayOutputStream out = new ByteArrayOutputStream(); Packer packer = msgpack.createPacker(out); // Serialize List object List<String> list = new ArrayList<String>(); list.add("msgpack"); list.add("for"); list.add("java"); packer.write(list); // List object // Serialize Map object Map<String, String> map = new HashMap<String, String>(); map.put("sadayuki", "furuhashi"); map.put("muga", "nishizawa"); packer.write(map); // Map object // // Deserialization // byte[] bytes = out.toByteArray(); ByteArrayInputStream in = new ByteArrayInputStream(bytes); Unpacker unpacker = msgpack.createUnpacker(in); // to List object List<String> dstList = unpacker.read(listTmpl); // to Map object Map<String, String> dstMap = unpacker.read(mapTmpl); } catch (Exception ex) { logger.error("MessagePack Serialization And Deserialization error", ex); } } } https://www.cwiki.us/display/Serialization/QuickStart+For+MessagePack+Java+0.6.X

2019年08月06日 0Comments 763Browse 0Like Read more
Computer Science

MessagePack Java 0.6.X 多种类型变量的序列化和反序列化(serialization/deserialization)

类 Packer/Unpacker 允许序列化和反序列化多种类型的变量,如后续程序所示。这个类启用序列化和反序列化多种类型的变量和序列化主要类型变量以及包装类,String 对象,byte[] 对象, ByteBuffer 对象等的方法相似。 如上面提示的,你可以序列化和反序列化你自己的对象,前提是你自己的对象需要使用 @Message 注解。 package com.insight.demo.msgpack; import org.junit.Test; import org.msgpack.MessagePack; import org.msgpack.packer.Packer; import org.msgpack.unpacker.Unpacker; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.math.BigInteger; import java.nio.ByteBuffer; /** * MessagePack6Types * * @author yhu */ public class MessagePack6Types { final Logger logger = LoggerFactory.getLogger(MessagePack6Types.class); /** * Test MessagePack6Types */ @Test public void testMessagePack6Types() { logger.debug("testMessagePack6Types for Types"); MessagePack msgpack = new MessagePack(); try { // // Serialization // ByteArrayOutputStream out = new ByteArrayOutputStream(); Packer packer = msgpack.createPacker(out); // Serialize values of primitive types packer.write(true); // boolean value packer.write(10); // int value packer.write(10.5); // double value // Serialize objects of primitive wrapper types packer.write(Boolean.TRUE); packer.write(new Integer(10)); packer.write(new Double(10.5)); // Serialize various types of arrays packer.write(new int[]{1, 2, 3, 4}); packer.write(new Double[]{10.5, 20.5}); packer.write(new String[]{"msg", "pack", "for", "java"}); packer.write(new byte[]{0x30, 0x31, 0x32}); // byte array // Serialize various types of other reference values packer.write("MessagePack"); // String object packer.write(ByteBuffer.wrap(new byte[]{0x30, 0x31, 0x32})); // ByteBuffer object packer.write(BigInteger.ONE); // BigInteger object // // Deserialization // byte[] bytes = out.toByteArray(); ByteArrayInputStream in = new ByteArrayInputStream(bytes); Unpacker unpacker = msgpack.createUnpacker(in); // to primitive values boolean b = unpacker.readBoolean(); // boolean value int i = unpacker.readInt(); // int value double d = unpacker.readDouble(); // double value // to primitive wrapper value Boolean wb = unpacker.read(Boolean.class); Integer wi = unpacker.read(Integer.class); Double wd = unpacker.read(Double.class); // to arrays int[] ia = unpacker.read(int[].class); Double[] da = unpacker.read(Double[].class); String[] sa = unpacker.read(String[].class); byte[] ba = unpacker.read(byte[].class); // to String object, ByteBuffer object, BigInteger object, List object and Map object String ws = unpacker.read(String.class); ByteBuffer buf = unpacker.read(ByteBuffer.class); BigInteger bi = unpacker.read(BigInteger.class); } catch (Exception ex)…

2019年08月06日 0Comments 665Browse 0Like Read more
Computer Science

MessagePack Java 0.6.X 使用一个消息打包(message-packable)类

使用注解 @Message 来让你可以序列化你自己类中对象的 public 字段。 本代码可以在 https://github.com/cwiki-us-demo/messagepack-6-demo-java/blob/master/src/test/java/com/insight/demo/msgpack/MessagePack6Object.java 中下载到本地后进行编译测试。 package com.insight.demo.msgpack; import org.junit.Test; import org.msgpack.MessagePack; import org.msgpack.annotation.Message; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.UUID; import static org.junit.Assert.assertEquals; /** * MessagePack6Objects * * @author yhu */ public class MessagePack6Object { final Logger logger = LoggerFactory.getLogger(MessagePack6Object.class); /** * MessageData Message Object */ @Message // Annotation public static class MessageData { // public fields are serialized. public String uuid; public String name; public double version; } /** * Test MessagePack6Objects */ @Test public void testMessagePack6Objects() { logger.debug("MessagePack6Objects for Objects"); String uuid = UUID.randomUUID().toString(); // INIT OBJ MessageData src = new MessageData(); src.uuid = uuid; src.name = "MessagePack6"; src.version = 0.6; try { MessagePack msgPack = new MessagePack(); // Serialization logger.debug("------ Serialization ------"); byte[] bytes = msgPack.write(src); logger.debug("Bytes Array Length: [{}]", bytes.length); // Deserialization logger.debug("------ Deserialization ------"); MessageData dst = msgPack.read(bytes, MessageData.class); logger.debug("Check Object for UUID: [{}]", dst.uuid); assertEquals(uuid, dst.uuid); } catch (Exception ex) { logger.error("MessagePack Serialization And Deserialization error", ex); } } }   如果你希望按照顺序序列化多个对象的话,你可以使用  Packer 和  Unpacker 多个对象。 这是因为 MessagePack.write(Object) 和 read(byte[]) 实际上每次都调用创建了 Packer 和 Unpacker 对象。 为了使用 Packer 和  Unpacker 对象,请调用 createPacker(OutputStream) 和  createUnpacker(InputStream)。 本代码可以 https://github.com/cwiki-us-demo/messagepack-6-demo-java/blob/master/src/test/java/com/insight/demo/msgpack/MessagePack6Objects.java 中查看。   package com.insight.demo.msgpack; import org.junit.Test; import org.msgpack.MessagePack; import org.msgpack.annotation.Message; import org.msgpack.packer.Packer; import org.msgpack.unpacker.Unpacker; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.util.UUID; import static org.junit.Assert.assertEquals; /** * MessagePack6Objects * * @author yhu */ public class MessagePack6Objects { final Logger logger = LoggerFactory.getLogger(MessagePack6Objects.class); /** * MessageData Message Objects */ @Message // Annotation public static class MessageData { // public fields are serialized. public String uuid; public String name; public double version; } /** * Test MessagePack6Objects */ @Test public void testMessagePack6Objects() { logger.debug("MessagePack6Objects for Objects"); String uuid = UUID.randomUUID().toString(); // INIT OBJ MessageData src1 = new MessageData(); src1.uuid = uuid; src1.name =…

2019年08月06日 0Comments 737Browse 0Like Read more
Computer Science

MessagePack Java 0.6.X 快速开始指南 - 安装

0.6.x 版本的 MessagePack 已经过期被淘汰了。如果你现在开始使用 MessagePack 话,请不要使用这个版本。 我们再这里保留 0.6.x 版本的内容主要用于参考用途。 最新的 MessagePack 版本请参考:https://github.com/msgpack/msgpack-java 中的项目源代码。 MessagePack 中文文档请参考:http://docs.ossez.com/messagepack-docs/index.html MessagePack 测试和示例源代码:https://github.com/cwiki-us-demo/serialize-deserialize-demo-java 这个指南提供了使用 msgpack-java 的快速指南。在开始的时候,我们将会介绍如何安装 msgpack-java,然后将会运行如何使用 msgpack 来对对象序列化/反序列化(serialize/deserizalize)对象。 安装 你可以使用下面 2 种方法来安装 msgpack-java —— 从 maven 下载或者直接构建 jar 包。 从 Maven2 仓库中进行安装 MessagePack 针对 Java 的使用已经发布到 Maven 的中央仓库中(Maven Central Repository)。你可以使用下面的参数来配置你项目的 pom.xml 文件。 <dependency>     <groupId>org.msgpack</groupId>     <artifactId>msgpack</artifactId>     <version>${msgpack.version}</version> </dependency> 你需要将 ${msgpack.version} 替换为当前的 MessagePack 版本,有关可以使用的具体版本你可以访问 http://repo1.maven.org/maven2/org/msgpack/msgpack/ 中的版本。 请注意,在 0.6.x 版本中最新的版本只更新到 0.6.12。 从 git 仓库中进行安装 你可以从代码仓库中获得最新的代码。 $ git clone git@github.com:msgpack/msgpack-java.git $ cd msgpack-java $ mvn package 使用上面的代码进行编译后,你将会在 msgpack-java/target 目录中得到 msgpack.jar 包。 同时你也需要 https://code.google.com/p/json-simple/ 和 https://github.com/jboss-javassist/javassist 来让 msgpack.jar 可以在项目中使用。否则你将会收到  NoClassDefFoundError 错误。   https://www.cwiki.us/display/Serialization/QuickStart+For+MessagePack+Java+0.6.X

2019年08月05日 0Comments 690Browse 0Like Read more
Confluence

Confluence 6 多媒体文件和在页面中显示文件列表

多媒体文件 文件的预览同时也支持 MP3 音频和 MP4 视频文件。Confluence 使用 HTML 5 来播放附加的音频和视频文件。这个意味着这些文件类型的文件格式,用户可以在支持的浏览器中直接进行播放。 你同时也可以显示其他很多类型的多媒体文件(视频,音频和动画),你需要使用  多媒体(Multimedia)宏. 显示在线视频(例如 YouTube 或者 Vimeo 视频),你需要使用  组件(Widget)连接器宏. 在页面中显示文件列表 为了在页面中显示文件列表,我们有多种办法来进行显示,你可以: 使用 附件(Attachments) Macro来显示当前页面中的附件。 使用 空间附件(Space Attachments) Macro 来显示空间中的所有附件文件。 使用 图片相册(Gallery)Macro 来显示附加到页面中的图片文件的缩略图。 你还可以针对上传,查看,管理文件列表使用 文件列表蓝图(File List blueprint)。 https://www.cwiki.us/display/CONF6ZH/Display+Files+and+Images

2019年08月04日 0Comments 750Browse 0Like Read more
1…162163164165166…237
Archives
  • June 2026
  • May 2026
  • April 2026
  • March 2026
  • February 2026
  • January 2026
  • December 2025
  • November 2025
  • October 2025
  • September 2025
  • August 2025
  • July 2025
  • June 2025
  • May 2025
  • April 2025
  • March 2025
  • February 2025
  • January 2025
  • December 2024
  • November 2024
  • October 2024
  • September 2024
  • August 2024
  • July 2024
  • June 2024
  • May 2024
  • April 2024
  • March 2024
  • February 2024
  • January 2024
  • December 2023
  • November 2023
  • October 2023
  • September 2023
  • August 2023
  • July 2023
  • June 2023
  • May 2023
  • April 2023
  • December 2022
  • November 2022
  • October 2022
  • September 2022
  • August 2022
  • May 2022
  • April 2022
  • March 2022
  • February 2022
  • January 2022
  • December 2021
  • November 2021
  • October 2021
  • September 2021
  • August 2021
  • July 2021
  • June 2021
  • May 2021
  • April 2021
  • March 2021
  • February 2021
  • January 2021
  • December 2020
  • November 2020
  • October 2020
  • September 2020
  • August 2020
  • July 2020
  • June 2020
  • May 2020
  • April 2020
  • March 2020
  • February 2020
  • January 2020
  • December 2019
  • November 2019
  • October 2019
  • September 2019
  • August 2019
  • July 2019
  • June 2019
  • May 2019
  • April 2019
  • March 2019
  • February 2019
  • January 2019
  • December 2018
  • November 2018
  • October 2018
  • September 2018
  • August 2018
  • July 2018
  • June 2018
  • May 2018
  • April 2018
  • March 2018
Categories
  • Computer Science (2,367)
    • Confluence (663)
    • Gradle (12)
  • U.S. (514)
  • 文化旅游 (146)

COPYRIGHT © 2020 CWIKIUS. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS

湘ICP备2020018253号-1