字符串压缩
程序员文章站
2022-05-08 09:25:05
虽然现在文件名内存占用经过了去重后大大降低,但是如果可以再缩减些岂不美哉,为此思考了许多压缩字符串的方法,首先想到的是前缀压缩,由于文件名的特殊性,重复前缀应该很多,但是苦于离散存储方式不易实现前缀压缩,如果以后找到分块连续存储的方法,那么可以基于块中第一个字符串,后续字符串易实现前缀压缩,但是假如可以实现,也是有许多弊端的,比如删除字符串时,假如是基准字符串则会很麻烦,而且查找时则需要首先找到块中第一个基准字符串。仔细想了想文件名的性质,首先只含0-127字符的文件名占了绝大多数,对于这些字符串而言,去...
虽然现在文件名内存占用经过了去重后大大降低,但是如果可以再缩减些岂不美哉,为此思考了许多压缩字符串的方法,首先想到的是前缀压缩,由于文件名的特殊性,重复前缀应该很多,但是苦于离散存储方式不易实现前缀压缩,如果以后找到分块连续存储的方法,那么可以基于块中第一个字符串,后续字符串易实现前缀压缩,但是假如可以实现,也是有许多弊端的,比如删除字符串时,假如是基准字符串则会很麻烦,而且查找时则需要首先找到块中第一个基准字符串。
仔细想了想文件名的性质,首先只含0-127字符的文件名占了绝大多数,对于这些字符串而言,去掉极少出现的0-31、127字符以及不允许使用的9个字符,再进行英文字母的大小写忽略,则剩余60个字符,所有文件名中只含这60个字符的占了9成多,表示这60个字符使用6位就足够了,所以我们可以用三个字节表示四个字符,即新建一个编码表,将这些常用字符存储到新表0-60项中,另一个表大小为128,在原码位置存储新码值,取四个字符的新码值共24位拼接为3个字节,那么就节省了2成多空间,解码时只需每次取三个字节,拆分为4个六位码值,根据映射表获得实际码值,得到实际的4个字符,还没有实现,想着是可行的,如果可行那么70万个文件名将占用7兆左右空间,但是这种方式压缩量有限,先记录别忘了。
本文地址:https://blog.csdn.net/gigggg/article/details/108970435
上一篇: 7、MySQL数据类型的选择
下一篇: 【数据库-mysql】存储与事务