纯文本的版本管理

2022-02-08  本文已影响0人  Jiangyouhua

Hi 大家好,我是姜友华。 最近想了解一下纯文本的版本管理,类似于最基本的Git。

版本管理,百度百科上有详细的说明,想了解的同学可以看看。版本管理的根本就是记录下用户所有版本的内容。于是设计的重点落在冗余的控制上。

一、冗余的处理

1. 完整版本管理

这是最简单的版本管理方式,将所有版本完整的保存下来。最简单的往往是最有效的,不用控制冗余,版本间没有关联,使用时各种方便。于是唯一的缺点是体积大,占些存储空间和上下行的带宽。这个在纯文本的世界好象也无所谓,传说GIT是这样实现的。

2. 向前版本管理

只完整保存最开始的版本,其后的版本只保存差异的部分。冗余当然是最小的,版本之间存在强关联,某一个版本受损,会影响其后所有版本。最大的缺点是,某一个版本受损造成当前内容出错。这个版本管理方式基本没人使用。

3. 向后版本管理

与向前片本管理相反。只保存最后的版本,其前的版本只保存差异的部分。冗余当然也是最小的。版本之间依然是强关联,某一个版本受损,会影响其前所有版本。但与向前版本管理相比:好处是,人们更在意当前版的完整性。

4. 关键版本管理

到了这里,往往会产生一个折中的方案。这个方案是在向后版本管理中(当然向前片本管理也可以),再加一些完整的版本进去,这些版本比较关键,比如说与前一个版本差异比较大的。这样也就存在一些冗余,但也增加了一些稳键性。

不管你用哪一种方法,存空间都有不够的可能。

二、空间的处理

1. 移除旧版本

空间不够怎么办,把旧的去掉。毕竟越早的存在的价值越小。

2. 移除小版本

当然也可以移除变化小的版本。毕竟改越小胡存在的价值也越小。

3. 让用户去处理

让用户自己来管理也是一个不错的选项。

不管怎么处理,对于存在强关系的版本,我们需要重新处理被删版本的前后关系以保证整体的有效性。

三、版本比较

1. 最长公共子序列

不论是对冗余的处理,还是不同版本之间的比较,会涉及到一个算法叫最长公共子序列。用它来找出不同的部分。

a. 出两者之间的最长公共子序列;
b. 按该序列将文本各自分割为两部分,各部分对应进行1的操作到最后;
c. 我们需要设置匹配的颗粒度。英文的词比较好处理,一般使用词来匹配;中文分词是个技术活,所以中文一般使用字。

2. 中文分词

如果你一定在中文里使用词来匹配,那你一定要了解中文分词。这问题很早被提出并解决,但一直无法解决好的问题,最终被归于属自然语言处理的技术范畴。

字符匹配算法

这个方法是最早用来解决中文分词的方法。在这个算法里你需要词典。

深度学习

百科里的理解法与统计法,听起来不错,但暂时没找到案例,也没想到实现的方案,所以这里就没法明细去讲了。
我能想到的使用深度学习来处理的方法大概是:

需要你注意的是,我没有真正实现过,有空时我再试一下。

好吧,就这些,我是姜友华,下次见。

上一篇下一篇

猜你喜欢

热点阅读