开发工具分享
  • 首页
  • 计算科学
  • 文化旅游
  • 项目和网站
    • OSSEZ 计算技术
    • USRealEstate 社区
    • 地区文化
    • CWIKI.US
    • BUG.OSSEZ.COM
    • RSS.OSSEZ.COM
CWIKIUS.CN
一个有独立思考和温度的清新站
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 666Browse 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 564Browse 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 650Browse 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 587Browse 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 658Browse 0Like Read more
Confluence

Confluence 6 图片文件

当你对一个页面进行编辑的时候,选择一个图片,将会显示图片属性面板。这个面板允许你设置显示大小,添加边控和特效和链接这个图片到其他页面。 从图片的属性面板,你可以: 为以图片选择一个 显示大小(preset size)。 为一个图片输入 宽度(width)(输入的宽度在 16px 和 900px 之间 ) 为一个图片添加一个 边框(border) 链接(Link)一个图片到页面或者 URL 对齐(Align)图片(你可以使用左对齐或者右对齐按钮,你也可以为图片选择文字环绕) 添加一个标题,这个标题将会在你鼠标移动到图片上的时候进行显示(进入属性(Properties)> 标题(Title)) 添加 alt 文本,这个通常被用来屏幕阅读器,当你的图片不能被显示的时候(进入属性(Properties)> 标题(Title)) 为图片来添加 特效(effects) ,例如阴影或者快照(进入属性(Properties)> 标题(Title)) 使用即时照片特效来添加一个图片字幕: 在图片属性面板中 选择 特效(Effects)然后选择插入 即时照片(Instant Camera) 图片特效。 保存页面。 Go to  > Attachments 进入 'Attachments' 来查看页面。 选择图片文件边上的 属性(Properties)。 为附件添加 评论(comment),这个添加的评论将会显示为图片字幕。 你需要在为你图片每次上传新的版本的时候重新输入评论内容。 请注意:即时照片特效只能够使用拉丁语言文字字符,因为针对多字节语言我们缺少手写样式的字体。 有关图片特效的说明 显示图片特效将会增加 Confluence 的资源消耗。Confluence 限制了针对图片特效使用的线程数量,以保护因为显示了图片特效来拖慢整个 Confluence 站点。 如果 Confluence 已经没有可用的线程来显示图片特效的话,Confluence 页面中有图片特效的内容将不会用特效的方式进行显示。 下面的知识库(KB)中的链接提示了你如何针对显示来调整线程数量  - Image effects are not displayed in Confluence 5.5 or later。 https://www.cwiki.us/display/CONF6ZH/Display+Files+and+Images

2019年08月04日 0Comments 979Browse 0Like Read more
Confluence

Confluence 6 Office 和 PDF 文件

插入一个文件到页面中是能够让你将有用的文件,电子表格,幻灯片或者其他可用的文件在你小组中进行分享的好方法。 针对所有的文件类型,你可以选择以链接方式插入一个文件。缩略图将会对文档的内容进行预览同时可以对大小进行调整。 希望你预览一个 Office 或者 PDF 文件,单击链接或者缩略图来显示完整的预览(不需要 Excel,Word 或者 PowerPoint 安装在你的额电脑中)。可选的,在预览界面中选择下载按钮来下载文件后进行离线方式预览。 你甚至可以进行  编辑 和 在 Office 和 PDF 文件中评论。   https://www.cwiki.us/display/CONF6ZH/Display+Files+and+Images

2019年08月04日 0Comments 652Browse 0Like Read more
Confluence

Confluence 6 预览一个文件

当你浏览一个页面的时候,单击一个图片,文件缩略图或者链接将会运行预览。 预览视图包括了从远程 Web 页面导入的图片文件和已经附加到页面中的文件(尽管有可能这些文件没有在页面中显示)。 在预览中你可以: 现在图片文件。 上传一个文件的新版本(仅针对附件)。 评论一个文件。 通过选择桌面应用编辑一个文件。 在你浏览器中放大和缩小图片文件。 像幻灯片一样来进行浏览,使用前后箭头按钮。 查看附件到页面中的其他文件,和选择缩略图来预览这些文件。 切换到全屏显示模式。 很多文件类型都可以被预览,包括有 Office 文件, PDFs 和其他多种图片类型。  那些文件可以被预览? 图片文件 Office 文件 其他文件 JPEG PNG TIFF PSD WMF EMF ICO ICNS DOC DOCX PPT PPTX XLS XLSX PDF MP3 MP4 查看更多文件(See more files): 显示其他附加到本页面中的文件。 管理这个文件(Manage this file):下载文件,上传一个文件的新版本或者在你的项目组中分享。 添加一个评论(Add a comment):拖动 pin 来对文件进行评论。   https://www.cwiki.us/display/CONF6ZH/Display+Files+and+Images

2019年08月04日 0Comments 747Browse 0Like Read more
Confluence

Confluence 6 插入一个文件到你的页面

文件可以在页面中以缩略图或者链接的方式显示。我们有多种办法能够上传文件,请参考 Upload Files 页面。 你可以控制文件如何在你的页面中显示。文件在页面中显示的可用方法与你的文件类型有关。   插入一个文件到你的页面 我们有下面几种办法能够插入一个文件到你的页面中: 在编辑器的工具栏中选择 插入(Insert)> 文件(Files),然后选择任何一个前期已经上传到页面中的文件。 直接拖动文件到编辑器(这个方法将会让上传和插入一次完成),或者 输入 ! 然后从自动显示的下拉选择中选择一个附加到页面中的附件。 你的文件将会在你的页面中以缩略图的方式进行显示,单击缩略图可以对缩略图进行大小调整或者显示为链接。 插入一个附加到其他页面中的文件 你可以显示在同一个 Confluence 站点中附加到其他页面中的文件,前提是你需要知道这个文件的名字。 希望显示一个附加到其他页面中的图片 进入 插入(Insert)>文件(Files)然后选择 搜索其他页面(Search on other pages)。 输入文件名。 选择在当前空间中进行查找或者搜索 所有空间(All Spaces)然后选择 搜索(Search)。 从搜索结果中选择文件,然后选择 插入(Insert)。 从网页(web)上插入一个图片文件 你可以在 Confluence 中显示一个远程 web 页面中的图片,而不需要讲文件下载后上传到你的 Confluence 站点中。你需要知道远程图片的 URL 地址,而不是远程 Web 页面的地址。 这种方式仅仅针对图片文件有效,不能插入其他类型的文件(例如文档)。 希望从远程 web 页面中显示一个图片: 在你对 Confluence 页面进行编辑的时候,将光标移动到你希望插入远程图片的位置。 选择 插入(Insert)>文件(Files) 然后选择 远程 web 的图片(Images from the web)。 输入图片的 URL (例如:http://atlassian.wpengine.netdna-cdn.com/wp-content/uploads/AtlassianBushRegeneration-12January2012-083-trunc.jpg)。 然后选择 预览(Preview)来检查插入的 URL 图片师傅显示正确。 选择 插入(Insert)。 从你的页面中删除文件 如果你在编辑器中删除一个文件或者图片,已经上传的文件不会被删除。 Go to  > Attachments 来从页面中晚期删除附件。 在你的页面中出现了 'unknown attachment' 占位符?这个表示的是这页面中显示的附件文件在本页面(或者其他页面)中已经被删除了。   https://www.cwiki.us/display/CONF6ZH/Display+Files+and+Images

2019年08月04日 0Comments 793Browse 0Like Read more
Confluence

Confluence 6 上传文件

当你上传一个文件的时候,例如上传一个图片或者文档,上传的文件将会附加到当前页面上。 你可以选择在页面中将文件显示为一个链接,一个图片或者嵌入到页面中(使用宏)。 上传一个文件到页面中你需要具有空间的权限 添加附件(Add Attachments)。 上传一个文件 有多种办法可以上传一个文件到页面中。 在页面编辑器中,你可以: 将文件直接拖动到页面中。 进入 插入(Insert)> 文件和图片(Files and images) 然后上传一个文件。 在查看一个页面的时候,你可以: 将文件直接拖动到页面中。 Go to  > Attachments 然后上传一个文件。 你可以一次上传多个文件。 接受的文件类型和大小 Confluence 允许你添加几乎任何类型的文件,但是你不能添加文件所在的文件夹(包括类似 Keynote 创建的文件夹,你需要将你需要上传的文件夹压缩成 ZIP 格式或者其他格式)。 尽管能够允许你添加任何类型的文件,但是不是所有的文件都能够显示或者嵌入到页面中显示。请查看 Display Files and Images 页面中的内容获得更多的信息。 Confluence 允许上传的文件的最大大小是由管理员进行限制的。默认情况下为 10MB,但是你的系统管理员可能会增加或者缩小这个限制。 文件版本 如果你上传的文件具有和页面中已经存在的文件有相同的文件名,Confluence 将会覆盖已经存在的文件,针对所有的附件,Confluence 保留附件的版本历史。请查看 Manage Files 页面来获得更多的内容。 任何对原文件进行的修改将不会影响 Confluence 中已经上传的版本,如果你希望更新 Confluence 中已经上传文件的拷贝,你需要将修改过的文件重新上传。 当一个文件上传后将会发生什么? 文件将会被获取和索引 当一个文件被上传后,这个文件中的文本将会获取并且被索引,这个能够允许人们对文件的内容进行搜索而不仅仅只对文件名进行搜索。 请查看 Configuring Attachment Size 页面中的内容来了解文件是如何被索引的。 创建缩略图 当你插入一个上传的文件到页面的时候(例如 Word 文档或者 Excel 电子表格),Confluence 将会为这个文件的内容创建缩略图,这样这个文件可以在页面中被查看或者预览。在 Confluence 服务器上,缩略图的创建时由 Confluence 服务器完成的。 在 Confluence 数据中心,缩略图的创建是在外部进行的,这样能够尽量避免对节点的影响。这是因为在创建缩略图的时候需要消耗比较高的内存和 CPU,尤其针对比较复杂的文件的时候。请查看 Document conversion for Confluence Data Center 页面来获得更多内容。 备注  我们建议你不要在页面或者附件名中使用特殊字符串。如果你使用了特殊的字符串,页面或者附件可能不能在 Confluence 的搜索中找到,同时也有可能导致 Confluence 的功能损坏。 https://www.cwiki.us/display/CONF6ZH/Upload+Files

2019年08月03日 0Comments 831Browse 0Like Read more
12345
Archives
  • 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,315)
    • Confluence (663)
    • Gradle (12)
  • U.S. (409)
  • 文化旅游 (142)

COPYRIGHT © 2020 CWIKIUS. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS

湘ICP备2020018253号-1