文本流vs二进制流
管道和套接字既能传送文本流,也能传送二进制流,然而究竟是使用文本流还是二进制流,还有一番争议在里面。
通常来说,二进制流的优点是:
- 存储密度最大化,可以在有限的存储空间上存储更多的数据,也方便传输
- 保密性好,二进制数据必须经过专门的解码才能被使用
然而与此同时,二进制流的缺点也很明显,由于存储和读取都必须经过一个编码和解码的过程,读写的性能肯定会由此受到影响,对于保密性不强的业务场景,由于二进制数据的不透明性,调试起来可能会非常麻烦。并且随着存储器价格的不断下降,二进制带来的节省空间的优势也逐渐显得不再重要。
Unix 传统推荐使用文本化的配置文件,典型的包括 vim、bash这些程序都是用文本来配置的,只需编辑主目录下的.rc
文件就可以完成配置。
另外摘录一下 Unix 下文本文件格式的约定:
摘自第120页
- 如果可能,以新行符结束的每一行只保存一个记录。
- 如果可能,每行不超过80个字符。
- 使用
#
引入注释。 - 支持反斜杠约定。
- 在每行一条记录的格式中,使用冒号或者任何连续的空白作为字段分隔符。
- 不要过分区分tab和空格。
- 优先使用十六进制。
- 对于复杂的记录,使用“节”格式:一个记录若有多行,就是用%%\n或者%\n作为记录分隔符。
- 在节格式中,支持连续行。
- 要么包含一个版本号,要么将格式设计为相互独立的自描述字节块。
关于应用协议
目前最常见的应用协议,包括http
协议,以及POP3
/SMTP
/IMAP
等邮件通讯协议,基本都是文本化的通讯协议,在端对端的通信过程中,客户机与主机之间的会话都是简洁的,而且易于人阅读的,也正是由于这一点,这些通讯协议才能一直焕发生机。
网友评论