我的编程空间,编程开发者的网络收藏夹
学习永远不晚

VSCode中的历史储存策略是什么

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

VSCode中的历史储存策略是什么

这篇文章主要介绍“VSCode中的历史储存策略是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“VSCode中的历史储存策略是什么”文章能帮助大家解决问题。

VSCode 的策略

VSCode 1.66 版本的时间轴中可以展示文件本地历史了,效果是这样

VSCode中的历史储存策略是什么

针对这个功能,VSCode 也增加了一些配置:

There are also new settings to work with local history:

  • workbench.localHistory.enabled - Enable or disable local history (default: true).

  • workbench.localHistory.maxFileSize - File size limit when creating a local history entry (default: 256 KB).

  • workbench.localHistory.maxFileEntries - Local history entries limit per file (default: 50).

  • workbench.localHistory.exclude - Glob patterns for excluding certain files from local history.

  • workbench.localHistory.mergeWindow - Interval in seconds during which further changes are added to the last entry in local file history (default 10s).

右键点击历史条目,有菜单可以直接在系统管理器中找到文件某个历史记录的副本。

因此可以推断出,VSCode 为每一个保存/撤销等操作,在一定时间窗口(默认10s)内,保存一个文件到文件夹。通过特殊的文件命名(保留时间信息)来定位历史记录。

这也太粗暴了,一个文件就是一个版本呗。

Typora 的策略

然后说下当时调研的 Typora 的策略。Typora 在 macOS 上有非常精美的文件历史回溯界面

看样子它应该是用的系统的“时间机器”来实现版本回溯的。所以这个功能在 Windows 上也就没有了。

Yank Note 的策略

我设想中的历史版本,有几个目标:

  • 最重要的目标是尽量避免数据丢失。

  • 历史记录不要占用太多体积,最好能增量记录。

  • 极端情况下要方便用户还原数据。

  • 历史记录应该可以标记和备注

针对第一个目标,我希望能保留用户最近的编辑版本,不要舍弃。而 Yank Note 有自动保存功能,也就有了第二个目标,不要占用太多空间,也不要生成太多文件。所以最开始想的类似 VSCode 那种,时间窗口+文件保存的策略,就不行了。

针对第三个目标,我不想引入自定义的格式,如 Git,或者数据库。因为如果用户丢失了数据,在软件也不方便找到历史记录的情况(软件损坏,文件误删等),用户要可以进入历史目录,把文件找回来。

后续:有个用户误删了一个文档,回收站也找不到了,就通过这种方法恢复的。

再考虑第四个目标,最终我选择了使用 zip 文件的方式来保存文件历史版本,虽然在写入和读取历史上会消耗一点计算性能(10多兆大文件历史记录也基本没感知),但最终效果还是很好的。

最终方案:

  • 每个文档由文件名和路径 Hash 拼出一个 zip 包文件名

  • 每次写入文件,同时往这个 zip 文件中写入一个新版本文件

  • 移动和重命名文件时候同步更改 zip 文件的名字

  • 最大历史版本数可以做一个限制。

  • 版本备注和标记信息可以存在压缩的备注字段中。

通常编辑一个文件的时候,由于自动保存的机制,当前版本和上一个版本之间的差异很小,因此理论上往压缩文件中添加一个新的版本文件,压缩文件整体大小增加应该很小才对。不过后来发现并非如此,这时我才意识到 Zip 文件压缩的特性:每个文件分别压缩,再合起来打包。也即是说往压缩包新增文件的时候,并不会和其他文件一起压缩。

针对这种情况,我采取两次压缩的策略:第一次把压缩率设置为 0,仅仅打包,这样 zip 包内都是文件的原始信息。第二次将整个打包文件压缩一次,这下压缩程序就可以考虑整体的信息来做压缩了,这就实现了“增量更新”的目的。

后面编写脚本测试,一个普通长度的文件,保存 1000 个版本,也才占用 50KB。

使用了几个月下来,我的历史文件目录也才占用 700 多 KB 的空间,里面大部分历史记录文件只有几 KB 大小。反观 VSCode,使用这两天历史目录就占用了 2M。

关于“VSCode中的历史储存策略是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网行业资讯频道,小编每天都会为大家更新不同的知识点。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

VSCode中的历史储存策略是什么

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

VSCode中的历史储存策略是什么

这篇文章主要介绍“VSCode中的历史储存策略是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“VSCode中的历史储存策略是什么”文章能帮助大家解决问题。VSCode 的策略VSCode 1.6
2023-06-29

Flume的Channel存储优化策略是什么

Flume的Channel存储优化策略主要包括以下几点:使用内存存储:Flume支持将Channel的存储方式配置为内存模式,这样可以提高数据的处理速度。但是需要注意内存的使用量,以免造成内存溢出。配置文件滚动:可以配置Channel的存储
Flume的Channel存储优化策略是什么
2024-04-11

jvm内存分配的策略是什么

JVM(Java虚拟机)内存分配的策略包括以下几个方面:静态分配:JVM在启动时会根据预先设置的参数分配一块固定大小的内存给各个区域,如堆(Heap)、方法区(Method Area)等。动态分配:JVM会根据应用程序在运行过程中的需要动态
jvm内存分配的策略是什么
2024-02-29

Navicat中怎么设置备份文件的存储策略

在Navicat中设置备份文件的存储策略,可以按照以下步骤操作:打开Navicat软件,并连接到你的数据库服务器。在连接成功后,选择要备份的数据库,右键点击该数据库,在弹出的菜单中选择“备份数据库”。在弹出的“备份数据库”对话框中,可以设置
Navicat中怎么设置备份文件的存储策略
2024-05-11

PHP中的策略模式是什么

这篇文章主要讲解了“PHP中的策略模式是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP中的策略模式是什么”吧!策略模式,又称为政策模式,属于行为型的设计模式。Gof类图及解释GoF
2023-06-20

SQLite中SQL的拼接策略是什么

在SQLite中,SQL的拼接通常是通过使用字符串连接运算符||来实现的。通过将字符串或列名用||运算符连接起来,可以将它们拼接成一个完整的SQL语句。例如:SELECT column1 || ' ' || colum
SQLite中SQL的拼接策略是什么
2024-04-29

JVM中内存分配策略是怎么样的

小编给大家分享一下JVM中内存分配策略是怎么样的,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!内存分配策略 了解GC其中很重要一点就是了解JVM的内存分配策略
2023-06-02

JavaScript中策略模式的作用是什么

本篇文章为大家展示了JavaScript中策略模式的作用是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。JavaScript是什么JavaScript是一种直译式的脚本语言,其解释器被称为Jav
2023-06-14

DB2中的备份恢复策略是什么

DB2中的备份恢复策略包括以下几个方面:定期备份:定期对数据库进行完整备份,以确保数据的安全性和可恢复性。差异备份:除了完整备份外,可以定期进行差异备份,只备份自上次完整备份以来发生变化的数据,可以减少备份时间和存储空间的消耗。日志备份:对
DB2中的备份恢复策略是什么
2024-03-07

C++ 函数在并发编程中的内存管理策略是什么?

在并发编程中,c++++ 提供以下内存管理策略来应对数据竞争:1. tls 为每个线程提供私有内存区域;2. 原子操作确保对共享数据的修改具有原子性;3. 锁允许线程独占访问共享数据;4. 内存屏障防止指令重排并保持内存一致性。通过使用这些
C++ 函数在并发编程中的内存管理策略是什么?
2024-04-26

Spring Cloud中的负载均衡策略是什么

本篇内容介绍了“Spring Cloud中的负载均衡策略是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!IRule这是所有负载均衡策略的
2023-06-19

NoSQL数据库中的复制策略是什么

NoSQL数据库中的复制策略通常包括以下几种:主从复制:一个节点作为主节点,负责处理写操作和数据同步,其他节点作为从节点,负责处理读操作和数据复制。主从复制可以提高系统的可靠性和性能。多主复制:多个节点都可以处理写操作,数据会在多个节点之间
NoSQL数据库中的复制策略是什么
2024-05-07

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录