直接网际消息封装(Direct Internet Message Encapsulation,即DIME)格式提供了一种简单而又标准的机制,这个机制可以把多文本(multiple text)和二进制数据记录合到一个单一的二进制流中。记录可以以一种高效解析且易于实现的独立编码方式保存。你可以在这儿找到DIME规范。

DIME优于MIME和raw XML

当然,其它系统也规定了多文本和二进制数据合并的方案。但是它们都仅对某方面的问题进行了优化,这就使得它们在非电子邮件通信、应用内部通信的场合下不尽完善。

MIME

由2045到2049号Internet标准(草案)所定义的多用途网际邮件扩充协议(Multipurpose Internet Mail Extensions 即MIME)是目前最显眼的可选项。MIME是电子邮件文件附件的标准,它仅仅是文本和二进制部分的消息。因此,MIME在内部把文本和二进制部分转化为全文本格式。这种转化不仅使得二进制部分转化后的长度大大增加,还导致了交叉平台上的字符集和编码问题。

Raw XML

Raw XML提供了另外一种表示文本中二进制信息的机制——CDATA类型。但是CDATA块不能被XML解析器解析,因此它不符合XML文档“好的组织(well-formedness)”的要求。把二进制数据转换到模64(base 64)或者类似的进行类似的编码后保存到CDATA块,这样的CDATA块会使得你的XML组织的很差。

DIME

与MIME和XML文档中的CDATA部分不同,DIME把文本和二进制部分都转换成单一的二进制消息。把二进制部分按它原来的二进制方式保存可以免除DIME解析器从文本中恢复二进制编码的开销和复杂度,而这些开销和复杂度是MIME和CDATA/XML所必不可少的。确实,DIME部分中的简单长度定义分界(simple length-delimited)性质使得DIME解析器可以不用考虑二进制数据的内部就可以分开记录,而过去这么做需要初始二进制头。

程序清单A给出了用一个免费可用的Java DIME实现来创建DIME消息的简单代码。头几行代码用一个FileOutputStream对象做为输出源创建了一个DimeGenerator对象。代码的第二和第三部分分别加入了一个从磁盘文本文件创建的DIME记录。请注意MEDIA_TYPE TypeNameFormat的用法,还要注意“text/plain”和“image/gif”MIME类型用来指示DIME记录的内容。MIME类型仅是DIME规范指出的可以提供DIME记录所保存数据信息的方法中的一种,但是可能是最有用的一种了。

清单A中代码的最后一部分结束DIME消息并关闭输出数据文件。DimeGenerator类可以使用所有I/O操作的流,这样就消除了消息建立期间用来保存DIME记录所需要使用的大量内存。还要注意addRecord方法(本例调用两次)所用到的最后一个参数(布尔型)。如果参数取值为“真”,代表添加到DimeGenerator的记录是最后一个记录,如果再添加记录就会导致IllegalStateException(非法状态例外)。

本文拷贝于网络。

完。

用DIME格式来组织自定义格式的更多相关文章

  1. js 时间戳转换成时间格式,可自定义格式

    由于 c# 通过ajax获取的时间 传到前台 格式为:/Date(1354116249000)/ 所以需要转换一下,想要什么格式 更改 format() 里的 返回语句 就可以了 formatDate ...

  2. Excel 单元格自定义格式技巧总结

    第一部分 Excel 中的单元格格式是一个最基本但是又很高级的技能,说它基本是因为我们几乎天天都会用到它,会用它来设置一些简单的格式,比如日期,文本等等:高级是因为利用 Excel 单元格的自定义格式 ...

  3. 代码中设置excel自定义格式为[红色]的处理方法

    有时候,excel的自定义格式设置时 ,会遇到需要设置为¥#,##0;[红色]¥-#,##0的格式. 其中会带一个颜色标记,但是如果这样的一句代码,放在英文版的Office里面,就失效了,因为英文版应 ...

  4. logback自定义格式转换器

    创建自定义格式转换符有两步. 首先,必须继承ClassicConverter类.ClassicConverter对象负责从ILoggingEvent 提取信息,并产生一个字符串.例如,LoggerCo ...

  5. 用 Lua 控制 MIDI 合成器来播放自定义格式乐谱

    用 Lua 控制 MIDI 合成器来播放自定义格式乐谱 作者: FreeBlues 最新: https://www.cnblogs.com/freeblues/p/9936844.html 说明: 本 ...

  6. TensorFlow 自定义模型导出:将 .ckpt 格式转化为 .pb 格式

    本文承接上文 TensorFlow-slim 训练 CNN 分类模型(续),阐述通过 tf.contrib.slim 的函数 slim.learning.train 训练的模型,怎么通过人为的加入数据 ...

  7. 常用输入法快速输入自定义格式的时间和日期(搜狗/QQ/微软拼音)

    几个主流的输入法输入 rq 或者 sj 都可以得到预定义格式的日期或者时间.然而他们都是预定义的格式:当我们需要一些其他格式的时候该怎么做呢? 本文将介绍几个常用输入法自定义时间和日期格式的方法. 主 ...

  8. Html Table用JS导出excel格式问题 导出EXCEL后单元格里的000412341234会变成412341234 7-14 会变成 2018-7-14(7月14) 自定义格式 web利用table表格生成excel格式问题 js导出excel增加表头、mso-number-format定义数据格式 数字输出格式转换 mso-number-format:"\@"

    Html Table用JS导出excel格式问题 我在网上找的JS把HTML Tabel导出成EXCEL.但是如果Table里的数字内容为0开的的导成Excel后会自动删除0,我想以text的格式写入 ...

  9. (转)Excel自定义格式详解

    ”G/通用格式”:以常规的数字显示,相当于”分类”列表中的”常规”选项.例:代码:”G/通用格式”.10显示为10:10.1显示为10.1. 2. “#”:数字占位符.只显有意义的零而不显示无意义的零 ...

随机推荐

  1. [RK3288][Android6.0] U-boot 启动流程小结【转】

    本文转载自:http://blog.csdn.net/kris_fei/article/details/52536093 Platform: RK3288OS: Android 6.0Version: ...

  2. P2831 愤怒的小鸟 状压dp

    这个题主要是预处理比较复杂,先枚举打每只鸟用的抛物线,然后找是否有一个抛物线经过两只鸟,然后就没了. 题干: 题目描述 Kiana 最近沉迷于一款神奇的游戏无法自拔. 简单来说,这款游戏是在一个平面上 ...

  3. treap平衡树

    今天集训讲平衡树,就瞎搞了一下.直接下代码. #include<iostream> #include<cstdio> #include<cmath> #includ ...

  4. logistic regression二分类算法推导

  5. nodejs安装express

    最近在看<Node.js开发指南>,看到使用nodejs进行web开发的时候,准备创建ejs项目遇到问题了, 书上命令为: 1 express -t ejs microblog 可是执行后 ...

  6. js软键盘

    <<!DOCTYPE html><html><head>  <title></title></head><body& ...

  7. vue ssr 项目改造经历

    vue ssr 项目改造经历 由于工作项目需求,需要将原有的项目改造,vue ssr 没有用到nuxt,因为vue ssr更利于seo,没办法,一个小白的改造经历, 首先说明一下,小白可以借鉴,高手也 ...

  8. OPPO R11 R11plus系列 解锁BootLoader ROOT Xposed 你的手机你做主

    首先准备好所有要使用到的文件 下载链接:https://share.weiyun.com/5WgQHtx 步骤1. 首先安装驱动 解压后执行 Install.bat 部分电脑需要禁用驱动程序签名才可以 ...

  9. Java 入门作业

  10. ASP.NET访问网络驱动器(映射磁盘)

    也许很多朋友在做WEB项目的时候都会碰到这样一个需求: 当用户上传文件时,需要将上传的文件保存到另外一台专门的文件服务器. 要实现这样一个功能,有两种解决方案: 方案一.在文件服务器上新建一站点,用来 ...