我正在编写一个日志记录机制,其余代码将使用该机制将字母数字数据记录到文件中。系统中的每个其他模块都将发送字母数字句子(最多几个单词)以连续写入文件。问题是,我只获得了少量的预分配内存,用于我的数据结构和这些日志消息的内存存储。如果流入量超过可以写入磁盘的量,则日志消息将被丢弃。
我想在我的日志模块中在客户端和内存存储之间放置一个压缩机制,这样我就可以保存尽可能多的消息。
到目前为止我目前的设计:
CLIENT ------> LOG MODULE ---->压缩并存储在内存缓冲区 1 中
写入线程:写入时,将缓冲区 1 与缓冲区 2 切换,并将缓冲区 1 写入文件。在此期间,客户端将写入缓冲区 2。
外部脚本: 解压缩并显示日志消息
问题:我可以使用什么好的字母数字压缩算法或可以用来捕获尽可能多的数据的好的数据结构(在上面的压缩阶段)?
如果可能的话,我想要一个不将压缩代码存储在中间数据结构中的算法——即,如果系统崩溃,我希望能够解压缩到目前为止已写入文件的任何内容。
到目前为止的尝试:为我们将使用的每个字符分配一个代码。似乎没有那么灵活。
大多数日志消息都是简单的文本句子