假设我有一个 1G 的大文件,我要修改中间某个地方的 1 个 byte,这个时候可以用 file.seek 定位到具体的位置,再用 append 模式写。
但如果我要删除一段内容,再添加一段新的内容呢?(内容的长度不确定),这个时候是怎么做的?
一个编辑器如何做到这个功能?
一个像 sqlite 这样涉及到大量读写的数据库系统又是如何做到的?
照 posix 现有的 api 来看要么只能全读内存再调用 fsync 写入。或者用 mmap 这种底层的 api 提高写入速度。有相关的书籍介绍这个问题的吗?
但如果我要删除一段内容,再添加一段新的内容呢?(内容的长度不确定),这个时候是怎么做的?
一个编辑器如何做到这个功能?
一个像 sqlite 这样涉及到大量读写的数据库系统又是如何做到的?
照 posix 现有的 api 来看要么只能全读内存再调用 fsync 写入。或者用 mmap 这种底层的 api 提高写入速度。有相关的书籍介绍这个问题的吗?