文件的版本管理

前提

现在在做一个在线生成文档的东西,就是用户填写的时候都是结构化的东西,不如单选框,多选框,富文本,图片之类的,最后要给用户生成文档或者ppt,或者pdf,然后要做一个版本对比的功能,粒度比较粗糙,只需要知道每次发布之后,有哪些章节发生了变更就可以,不关心具体哪一行或者哪一个字发生了变化。

实现

什么时候计算变更?

有两个实现方案

方案一

每次发布之前,统一计算所有章节的变更情况
方案二

把计算放在平时,每次保存或者更新,都计算一下当前章节的变更情况。

两种方案各有利弊,最终选择了第二种,这种的优点在于,不必等待发布操作即可看到变更情况,方便以后加功能吧。

怎么计算呢?

MD5,是的,就是计算章节的MD5,我们的章节可以人为划分成几部分,比如章节信息,内容块信息,等等,每次保存的时候,涉及到哪块儿就计算哪块儿的MD5,并和上一版本进行对比,保存一下变更情况。

未解决:变更对比

实际上就是git的diff功能,目前不支持,git的diff应该也是在每次执行的时候才去计算,这个之后再考虑了,留个文章给自己参考一下:Git 是怎样生成 diff 的:Myers 算法

相关推荐
一起养小猫10 分钟前
LeetCode100天Day6-回文数与加一
java·leetcode
程序员小假1 小时前
我们来说一下 MySQL 的慢查询日志
java·后端
独自破碎E1 小时前
Java是怎么实现跨平台的?
java·开发语言
To Be Clean Coder1 小时前
【Spring源码】从源码倒看Spring用法(二)
java·后端·spring
xdpcxq10292 小时前
风控场景下超高并发频次计算服务
java·服务器·网络
想用offer打牌2 小时前
你真的懂Thread.currentThread().interrupt()吗?
java·后端·架构
橘色的狸花猫2 小时前
简历与岗位要求相似度分析系统
java·nlp
独自破碎E2 小时前
Leetcode1438绝对值不超过限制的最长连续子数组
java·开发语言·算法
用户91743965392 小时前
Elasticsearch Percolate Query使用优化案例-从2000到500ms
java·大数据·elasticsearch
yaoxin5211232 小时前
279. Java Stream API - Stream 拼接的两种方式:concat() vs flatMap()
java·开发语言