用DIME格式来组织自定义格式
直接网际消息封装(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格式来组织自定义格式的更多相关文章
- js 时间戳转换成时间格式,可自定义格式
由于 c# 通过ajax获取的时间 传到前台 格式为:/Date(1354116249000)/ 所以需要转换一下,想要什么格式 更改 format() 里的 返回语句 就可以了 formatDate ...
- Excel 单元格自定义格式技巧总结
第一部分 Excel 中的单元格格式是一个最基本但是又很高级的技能,说它基本是因为我们几乎天天都会用到它,会用它来设置一些简单的格式,比如日期,文本等等:高级是因为利用 Excel 单元格的自定义格式 ...
- 代码中设置excel自定义格式为[红色]的处理方法
有时候,excel的自定义格式设置时 ,会遇到需要设置为¥#,##0;[红色]¥-#,##0的格式. 其中会带一个颜色标记,但是如果这样的一句代码,放在英文版的Office里面,就失效了,因为英文版应 ...
- logback自定义格式转换器
创建自定义格式转换符有两步. 首先,必须继承ClassicConverter类.ClassicConverter对象负责从ILoggingEvent 提取信息,并产生一个字符串.例如,LoggerCo ...
- 用 Lua 控制 MIDI 合成器来播放自定义格式乐谱
用 Lua 控制 MIDI 合成器来播放自定义格式乐谱 作者: FreeBlues 最新: https://www.cnblogs.com/freeblues/p/9936844.html 说明: 本 ...
- TensorFlow 自定义模型导出:将 .ckpt 格式转化为 .pb 格式
本文承接上文 TensorFlow-slim 训练 CNN 分类模型(续),阐述通过 tf.contrib.slim 的函数 slim.learning.train 训练的模型,怎么通过人为的加入数据 ...
- 常用输入法快速输入自定义格式的时间和日期(搜狗/QQ/微软拼音)
几个主流的输入法输入 rq 或者 sj 都可以得到预定义格式的日期或者时间.然而他们都是预定义的格式:当我们需要一些其他格式的时候该怎么做呢? 本文将介绍几个常用输入法自定义时间和日期格式的方法. 主 ...
- 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的格式写入 ...
- (转)Excel自定义格式详解
”G/通用格式”:以常规的数字显示,相当于”分类”列表中的”常规”选项.例:代码:”G/通用格式”.10显示为10:10.1显示为10.1. 2. “#”:数字占位符.只显有意义的零而不显示无意义的零 ...
随机推荐
- ACM Amman Collegiate Programming Contest(7.22随机组队娱乐赛)
题目链接 https://vjudge.net/contest/240074#overview 只写一下自己做的几个题吧 /* D n^2的暴力dp怎么搞都可以的 这里先预处理 i到j的串时候合法 转 ...
- luogu1026 统计单词个数
题目大意 给出一个长度不超过200的由小写英文字母组成的字母串(约定;该字串以每行20个字母的方式输入,且保证每行一定为20个).要求将此字母串分成k份(1< k< =40),且每份中包含 ...
- luogu2341 [HAOI2006]受欢迎的牛
题目大意 每头奶牛都梦想成为牛棚里的明星.被所有奶牛喜欢的奶牛就是一头明星奶牛.所有奶牛都是自恋狂,每头奶牛总是喜欢自己的.奶牛之间的“喜欢”是可以传递的——如果A喜欢B,B喜欢C,那么A也喜欢C.牛 ...
- poj--3187--Backward Digit Sums(dfs)
Backward Digit Sums Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 5667 Accepted: 32 ...
- codevs1358棋盘游戏(状压dp)
1358 棋盘游戏 时间限制: 1 s 空间限制: 64000 KB 题目等级 : 大师 Master 题目描述 Description 这个游戏在一个有10*10个格子的棋盘上进行,初 ...
- 手写DAO框架(一)-从“1”开始
背景: 很久(4年)之前写了一个DAO框架-zxdata(https://github.com/shuimutong/zxdata),这是我写的第一个框架.因为没有使用文档,我现在如果要用的话,得从头 ...
- UILabel垂直方向显示(上下的顺序显示)。
NSString* text = @"一"; NSDictionary *attribute = @{NSFontAttributeName: [UIFont systemFont ...
- 安卓学习之学生签到APP(一)
一.学生定位签到页面 具体实现步骤: 1.1 高德地图申请key 1.创建新应用 进入高德地图api控制台,创建一个新应用.如果您之前已经创建过应用,可直接跳过这个步骤. 2.添加新Key 在创建的应 ...
- php数据库分页
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- [转载]MySql事物处理
事务处理在各种管理系统中都有着广泛的应用,比如人员管理系统,很多同步数据库操作大都需要用到事务处理.比如说,在人员管理系统中,你删除一个人员,你即需要删除人员的基本资料,也要删除和该人员相关的信息,如 ...