缘起
硬盘、内存中存储了大量的数据,网络上也在传输这大量的数据;如果仔细分析,很多数据是重复的;如果能对这些数据做精心的设计,会节省很多的硬盘、内存和网络带宽。
举个栗子
我在设计一个用户的回话信息的存储时,发现对会话的创建时间、过期时间这个时间信息pack成4字节的二进制会比10字节的时间戳小不少,我很高兴;但是仔细观察发现,其实里面还是有信息重复的:
1. 每个会话的创建时间不可能早于我的建站时间,比如:2010年10月1号,则这部分信息是重复的; 于是我可以将会话创建时间存储为一个相对于 2010年10月1号的相对时间,这个数字其实小了很多
2. 会话的过期时间总是要大于创建时间的,于是,对于会话的过期时间完全可以存储为相对于创建时间的一个数字
3. 内网IP信息如何处理?如果把内网IP简单当作IP来处理,则IP最短需要4个字节(这里以IPv4为例),如果考虑到是“内网”IP,其实3个字节足矣;如果公司很小,其实只有几个IP,做个对照表的话,1个字节就够了