h*a
2 楼
ZIPCODE21044 附近求可以说中文的能接受成人学生的钢琴老师,小时候曾经学过2,3
年,从去年开始重新拾起,但是之前的老师搬家走了,希望找到能够长期学下去的老师。
如果有推荐的或者您就可以,请站内短我~~~~
年,从去年开始重新拾起,但是之前的老师搬家走了,希望找到能够长期学下去的老师。
如果有推荐的或者您就可以,请站内短我~~~~
kx
3 楼
就是如何编程实现对一个文件,随机插入或者删除一个字节
我只知道如何从头开始顺序读写,或者文件尾部追加写入
或者用随机定位函数任意定位后读写该位置的内容
但是不知道如何在文件的任意位置定位后,插入或者删除一个字节
变通的做法,就只能重新建一个同名文件,从头开始全部重写一遍
可是如果很大的文件这样做就太辛苦了
我想应该有在任意位置插入或删除的办法的吧
我只知道如何从头开始顺序读写,或者文件尾部追加写入
或者用随机定位函数任意定位后读写该位置的内容
但是不知道如何在文件的任意位置定位后,插入或者删除一个字节
变通的做法,就只能重新建一个同名文件,从头开始全部重写一遍
可是如果很大的文件这样做就太辛苦了
我想应该有在任意位置插入或删除的办法的吧
d*2
4 楼
5月份想回趟国,打算送姐姐一个,不知道这ipad是不是和笔记本电脑一样只要有网络
就可以用呢?请大侠们回答一下阿。谢谢
就可以用呢?请大侠们回答一下阿。谢谢
h*a
6 楼
没有人么??
x*n
7 楼
能有啥办法?修改的位置后面的部分肯定得重写啊。
一般需要修改大文件的程序为了不在修改期间使得这个文件不可用,会先用另外一个文
件名写,完了再rename到原来的文件名,并且删除原来的文件。不过最多就需要两倍的
磁盘空间了。要是主流的文件系统支持只重写修改了的部分的方法,这些程序早就用了。
太阳的zfs倒是支持冗余的磁盘块只保存一次,也就是说你如果把一个文件复制一次,
并不占用额外的磁盘空间。但是你添加或者删除一个字符,后面所有的磁盘块都要变吧
。。除非磁盘块和数据库的数据块一样支持里面有不用的字节。这个我倒没有研究过,
不过没听说过可以这样。
【在 kx 的大作中提到】
: 就是如何编程实现对一个文件,随机插入或者删除一个字节
: 我只知道如何从头开始顺序读写,或者文件尾部追加写入
: 或者用随机定位函数任意定位后读写该位置的内容
: 但是不知道如何在文件的任意位置定位后,插入或者删除一个字节
: 变通的做法,就只能重新建一个同名文件,从头开始全部重写一遍
: 可是如果很大的文件这样做就太辛苦了
: 我想应该有在任意位置插入或删除的办法的吧
一般需要修改大文件的程序为了不在修改期间使得这个文件不可用,会先用另外一个文
件名写,完了再rename到原来的文件名,并且删除原来的文件。不过最多就需要两倍的
磁盘空间了。要是主流的文件系统支持只重写修改了的部分的方法,这些程序早就用了。
太阳的zfs倒是支持冗余的磁盘块只保存一次,也就是说你如果把一个文件复制一次,
并不占用额外的磁盘空间。但是你添加或者删除一个字符,后面所有的磁盘块都要变吧
。。除非磁盘块和数据库的数据块一样支持里面有不用的字节。这个我倒没有研究过,
不过没听说过可以这样。
【在 kx 的大作中提到】
: 就是如何编程实现对一个文件,随机插入或者删除一个字节
: 我只知道如何从头开始顺序读写,或者文件尾部追加写入
: 或者用随机定位函数任意定位后读写该位置的内容
: 但是不知道如何在文件的任意位置定位后,插入或者删除一个字节
: 变通的做法,就只能重新建一个同名文件,从头开始全部重写一遍
: 可是如果很大的文件这样做就太辛苦了
: 我想应该有在任意位置插入或删除的办法的吧
l*t
8 楼
是的。其实没有网络也可以用啊。
kx
10 楼
居然是这样啊
我震惊了
可现在操作系统不都是支持文件碎片的么,
也就是说同一个文件可以分成多个部分,存在不同的地方,
那我猜每个部分开始和结束的地方,
肯定跟链表一样存有下一个磁盘块的地址,总不可能把每个部分的地址都存在操作系统里
如果都能做到这点了,
那文件里面插入或者删除一部分内容应该也是可以做到的吧
像链表一样处理就行
可居然会不支持:(
了。
【在 x******n 的大作中提到】
: 能有啥办法?修改的位置后面的部分肯定得重写啊。
: 一般需要修改大文件的程序为了不在修改期间使得这个文件不可用,会先用另外一个文
: 件名写,完了再rename到原来的文件名,并且删除原来的文件。不过最多就需要两倍的
: 磁盘空间了。要是主流的文件系统支持只重写修改了的部分的方法,这些程序早就用了。
: 太阳的zfs倒是支持冗余的磁盘块只保存一次,也就是说你如果把一个文件复制一次,
: 并不占用额外的磁盘空间。但是你添加或者删除一个字符,后面所有的磁盘块都要变吧
: 。。除非磁盘块和数据库的数据块一样支持里面有不用的字节。这个我倒没有研究过,
: 不过没听说过可以这样。
我震惊了
可现在操作系统不都是支持文件碎片的么,
也就是说同一个文件可以分成多个部分,存在不同的地方,
那我猜每个部分开始和结束的地方,
肯定跟链表一样存有下一个磁盘块的地址,总不可能把每个部分的地址都存在操作系统里
如果都能做到这点了,
那文件里面插入或者删除一部分内容应该也是可以做到的吧
像链表一样处理就行
可居然会不支持:(
了。
【在 x******n 的大作中提到】
: 能有啥办法?修改的位置后面的部分肯定得重写啊。
: 一般需要修改大文件的程序为了不在修改期间使得这个文件不可用,会先用另外一个文
: 件名写,完了再rename到原来的文件名,并且删除原来的文件。不过最多就需要两倍的
: 磁盘空间了。要是主流的文件系统支持只重写修改了的部分的方法,这些程序早就用了。
: 太阳的zfs倒是支持冗余的磁盘块只保存一次,也就是说你如果把一个文件复制一次,
: 并不占用额外的磁盘空间。但是你添加或者删除一个字符,后面所有的磁盘块都要变吧
: 。。除非磁盘块和数据库的数据块一样支持里面有不用的字节。这个我倒没有研究过,
: 不过没听说过可以这样。
d*2
16 楼
谢谢大家回答阿,那可不可以上网聊天阿?
kx
19 楼
x*n
20 楼
磁盘存储是以块为单位的,比如4K,所谓的指针链接也是指块之间,块内是连续的数据
,所以你的150字节的文件需要占用一个块,也就是4KB的磁盘空间。按照你这种插入法
,就是说你的新文件要占用3个块,12KB,其中第一个块包含100字节数据,第二个块包
含5字节数据,第三个块包含46字节数据,自然三个块里大部分都是气泡了。我不知道
有哪种文件系统支持块里有气泡的(除去最后一块),理论上当然可能,数据库文件一
般就是这样的,不过文件系统毕竟和数据库很不一样,不值得为了像你说的这种少见的
use case来严重牺牲性能。
当然你要想设计一种一块就是一个字节的文件系统,那也行,不过你这个描述还是不够
,你咋知道97-100这4个字节的位置存的是指针而不是数据?于是乎每个字节你要拿出
一位来存放一个标志位,于是乎你160个字节的空间只能存放140个字节的数据,而且都
乱了套了,读取的时候还得解码。
【在 kx 的大作中提到】
: 我说一格就是一个单位的意思
: 管他一个字节还是一个磁盘块呢
: 不过我想放地址的话,用不着太多位吧
: 我换个方式重说一遍
: 假设有个150字节的文件,在磁盘上连续存放
: 现在我要在100字节处插入1个字节
: 再假设地址需要32位4个字节的话
: 那就把97-100共4个字节的数据提取出来,
: 存放地址,指向一个新的磁盘位置
: 然后在该磁盘位置,存上原来97-100的4个字节的数据,再加上原本想要插入的1个字节
,所以你的150字节的文件需要占用一个块,也就是4KB的磁盘空间。按照你这种插入法
,就是说你的新文件要占用3个块,12KB,其中第一个块包含100字节数据,第二个块包
含5字节数据,第三个块包含46字节数据,自然三个块里大部分都是气泡了。我不知道
有哪种文件系统支持块里有气泡的(除去最后一块),理论上当然可能,数据库文件一
般就是这样的,不过文件系统毕竟和数据库很不一样,不值得为了像你说的这种少见的
use case来严重牺牲性能。
当然你要想设计一种一块就是一个字节的文件系统,那也行,不过你这个描述还是不够
,你咋知道97-100这4个字节的位置存的是指针而不是数据?于是乎每个字节你要拿出
一位来存放一个标志位,于是乎你160个字节的空间只能存放140个字节的数据,而且都
乱了套了,读取的时候还得解码。
【在 kx 的大作中提到】
: 我说一格就是一个单位的意思
: 管他一个字节还是一个磁盘块呢
: 不过我想放地址的话,用不着太多位吧
: 我换个方式重说一遍
: 假设有个150字节的文件,在磁盘上连续存放
: 现在我要在100字节处插入1个字节
: 再假设地址需要32位4个字节的话
: 那就把97-100共4个字节的数据提取出来,
: 存放地址,指向一个新的磁盘位置
: 然后在该磁盘位置,存上原来97-100的4个字节的数据,再加上原本想要插入的1个字节
kx
21 楼
那文件碎片化存放是怎么实现的呢?
就用那个方式不行么?
就是中间加了一个碎片呗
字节
【在 x******n 的大作中提到】
: 磁盘存储是以块为单位的,比如4K,所谓的指针链接也是指块之间,块内是连续的数据
: ,所以你的150字节的文件需要占用一个块,也就是4KB的磁盘空间。按照你这种插入法
: ,就是说你的新文件要占用3个块,12KB,其中第一个块包含100字节数据,第二个块包
: 含5字节数据,第三个块包含46字节数据,自然三个块里大部分都是气泡了。我不知道
: 有哪种文件系统支持块里有气泡的(除去最后一块),理论上当然可能,数据库文件一
: 般就是这样的,不过文件系统毕竟和数据库很不一样,不值得为了像你说的这种少见的
: use case来严重牺牲性能。
: 当然你要想设计一种一块就是一个字节的文件系统,那也行,不过你这个描述还是不够
: ,你咋知道97-100这4个字节的位置存的是指针而不是数据?于是乎每个字节你要拿出
: 一位来存放一个标志位,于是乎你160个字节的空间只能存放140个字节的数据,而且都
就用那个方式不行么?
就是中间加了一个碎片呗
字节
【在 x******n 的大作中提到】
: 磁盘存储是以块为单位的,比如4K,所谓的指针链接也是指块之间,块内是连续的数据
: ,所以你的150字节的文件需要占用一个块,也就是4KB的磁盘空间。按照你这种插入法
: ,就是说你的新文件要占用3个块,12KB,其中第一个块包含100字节数据,第二个块包
: 含5字节数据,第三个块包含46字节数据,自然三个块里大部分都是气泡了。我不知道
: 有哪种文件系统支持块里有气泡的(除去最后一块),理论上当然可能,数据库文件一
: 般就是这样的,不过文件系统毕竟和数据库很不一样,不值得为了像你说的这种少见的
: use case来严重牺牲性能。
: 当然你要想设计一种一块就是一个字节的文件系统,那也行,不过你这个描述还是不够
: ,你咋知道97-100这4个字节的位置存的是指针而不是数据?于是乎每个字节你要拿出
: 一位来存放一个标志位,于是乎你160个字节的空间只能存放140个字节的数据,而且都
x*n
26 楼
但是重写大文件再现实中很少需要的,一般的用户数据文件都比较小,比较大的基本只
有数据库的例子,而数据库是不依赖文件系统自己直接管理磁盘空间的,支持块里有气
泡。大的文件需要重写的例子有,比如sphinx的全文索引,但是很少。
你如果需要经常重写大的数据文件,可以考虑:
1. 使用多个小的数据文件,代替单个大文件
2. 使用一个delta文件,定期和主文件合并
3. 使用SQLite数据库
【在 kx 的大作中提到】
: 哦
: 我理解成别的意思了
: 以为你说的是一种设想
: 而其实就是现行的做法了
: 不过,对一个很大的文件来说,
: 就算为了插入一个字节,消耗4k的磁盘块,总比完全重写整个文件要划算一点吧
: 或者小文件就完全重写,大文件就用碎片管理的方法插入?
: 当然,我也知道,对比的双方一个是磁盘空间,一个是资源的消耗,不完全可比
有数据库的例子,而数据库是不依赖文件系统自己直接管理磁盘空间的,支持块里有气
泡。大的文件需要重写的例子有,比如sphinx的全文索引,但是很少。
你如果需要经常重写大的数据文件,可以考虑:
1. 使用多个小的数据文件,代替单个大文件
2. 使用一个delta文件,定期和主文件合并
3. 使用SQLite数据库
【在 kx 的大作中提到】
: 哦
: 我理解成别的意思了
: 以为你说的是一种设想
: 而其实就是现行的做法了
: 不过,对一个很大的文件来说,
: 就算为了插入一个字节,消耗4k的磁盘块,总比完全重写整个文件要划算一点吧
: 或者小文件就完全重写,大文件就用碎片管理的方法插入?
: 当然,我也知道,对比的双方一个是磁盘空间,一个是资源的消耗,不完全可比
x*n
28 楼
zfs有这个功能,大部分文件系统都不支持。如果支持的话对应用是透明的,跟copy
cmd啥没关系,这些应用层程序是构建于文件系统之上的,不会知道什么数据存在了哪
个磁盘块里。
不过要在文件中间插入字节,不是这么简单的,除非你插入的是一个block大小的整数
倍,否则后面所有的block必然都和以前不同了。
without
【在 d*****9 的大作中提到】
: 那就echo后面的文件到前面的就是了。
: 不过,俺记不得了,hd management有没有允许俩文件都reference同一block without
: making a duplicate before any changes?譬如copy cmd。
cmd啥没关系,这些应用层程序是构建于文件系统之上的,不会知道什么数据存在了哪
个磁盘块里。
不过要在文件中间插入字节,不是这么简单的,除非你插入的是一个block大小的整数
倍,否则后面所有的block必然都和以前不同了。
without
【在 d*****9 的大作中提到】
: 那就echo后面的文件到前面的就是了。
: 不过,俺记不得了,hd management有没有允许俩文件都reference同一block without
: making a duplicate before any changes?譬如copy cmd。
kx
30 楼
就是如何编程实现对一个文件,随机插入或者删除一个字节
我只知道如何从头开始顺序读写,或者文件尾部追加写入
或者用随机定位函数任意定位后读写该位置的内容
但是不知道如何在文件的任意位置定位后,插入或者删除一个字节
变通的做法,就只能重新建一个同名文件,从头开始全部重写一遍
可是如果很大的文件这样做就太辛苦了
我想应该有在任意位置插入或删除的办法的吧
我只知道如何从头开始顺序读写,或者文件尾部追加写入
或者用随机定位函数任意定位后读写该位置的内容
但是不知道如何在文件的任意位置定位后,插入或者删除一个字节
变通的做法,就只能重新建一个同名文件,从头开始全部重写一遍
可是如果很大的文件这样做就太辛苦了
我想应该有在任意位置插入或删除的办法的吧
x*n
31 楼
能有啥办法?修改的位置后面的部分肯定得重写啊。
一般需要修改大文件的程序为了不在修改期间使得这个文件不可用,会先用另外一个文
件名写,完了再rename到原来的文件名,并且删除原来的文件。不过最多就需要两倍的
磁盘空间了。要是主流的文件系统支持只重写修改了的部分的方法,这些程序早就用了。
太阳的zfs倒是支持冗余的磁盘块只保存一次,也就是说你如果把一个文件复制一次,
并不占用额外的磁盘空间。但是你添加或者删除一个字符,后面所有的磁盘块都要变吧
。。除非磁盘块和数据库的数据块一样支持里面有不用的字节。这个我倒没有研究过,
不过没听说过可以这样。
【在 kx 的大作中提到】
: 就是如何编程实现对一个文件,随机插入或者删除一个字节
: 我只知道如何从头开始顺序读写,或者文件尾部追加写入
: 或者用随机定位函数任意定位后读写该位置的内容
: 但是不知道如何在文件的任意位置定位后,插入或者删除一个字节
: 变通的做法,就只能重新建一个同名文件,从头开始全部重写一遍
: 可是如果很大的文件这样做就太辛苦了
: 我想应该有在任意位置插入或删除的办法的吧
一般需要修改大文件的程序为了不在修改期间使得这个文件不可用,会先用另外一个文
件名写,完了再rename到原来的文件名,并且删除原来的文件。不过最多就需要两倍的
磁盘空间了。要是主流的文件系统支持只重写修改了的部分的方法,这些程序早就用了。
太阳的zfs倒是支持冗余的磁盘块只保存一次,也就是说你如果把一个文件复制一次,
并不占用额外的磁盘空间。但是你添加或者删除一个字符,后面所有的磁盘块都要变吧
。。除非磁盘块和数据库的数据块一样支持里面有不用的字节。这个我倒没有研究过,
不过没听说过可以这样。
【在 kx 的大作中提到】
: 就是如何编程实现对一个文件,随机插入或者删除一个字节
: 我只知道如何从头开始顺序读写,或者文件尾部追加写入
: 或者用随机定位函数任意定位后读写该位置的内容
: 但是不知道如何在文件的任意位置定位后,插入或者删除一个字节
: 变通的做法,就只能重新建一个同名文件,从头开始全部重写一遍
: 可是如果很大的文件这样做就太辛苦了
: 我想应该有在任意位置插入或删除的办法的吧
kx
32 楼
居然是这样啊
我震惊了
可现在操作系统不都是支持文件碎片的么,
也就是说同一个文件可以分成多个部分,存在不同的地方,
那我猜每个部分开始和结束的地方,
肯定跟链表一样存有下一个磁盘块的地址,总不可能把每个部分的地址都存在操作系统里
如果都能做到这点了,
那文件里面插入或者删除一部分内容应该也是可以做到的吧
像链表一样处理就行
可居然会不支持:(
了。
【在 x******n 的大作中提到】
: 能有啥办法?修改的位置后面的部分肯定得重写啊。
: 一般需要修改大文件的程序为了不在修改期间使得这个文件不可用,会先用另外一个文
: 件名写,完了再rename到原来的文件名,并且删除原来的文件。不过最多就需要两倍的
: 磁盘空间了。要是主流的文件系统支持只重写修改了的部分的方法,这些程序早就用了。
: 太阳的zfs倒是支持冗余的磁盘块只保存一次,也就是说你如果把一个文件复制一次,
: 并不占用额外的磁盘空间。但是你添加或者删除一个字符,后面所有的磁盘块都要变吧
: 。。除非磁盘块和数据库的数据块一样支持里面有不用的字节。这个我倒没有研究过,
: 不过没听说过可以这样。
我震惊了
可现在操作系统不都是支持文件碎片的么,
也就是说同一个文件可以分成多个部分,存在不同的地方,
那我猜每个部分开始和结束的地方,
肯定跟链表一样存有下一个磁盘块的地址,总不可能把每个部分的地址都存在操作系统里
如果都能做到这点了,
那文件里面插入或者删除一部分内容应该也是可以做到的吧
像链表一样处理就行
可居然会不支持:(
了。
【在 x******n 的大作中提到】
: 能有啥办法?修改的位置后面的部分肯定得重写啊。
: 一般需要修改大文件的程序为了不在修改期间使得这个文件不可用,会先用另外一个文
: 件名写,完了再rename到原来的文件名,并且删除原来的文件。不过最多就需要两倍的
: 磁盘空间了。要是主流的文件系统支持只重写修改了的部分的方法,这些程序早就用了。
: 太阳的zfs倒是支持冗余的磁盘块只保存一次,也就是说你如果把一个文件复制一次,
: 并不占用额外的磁盘空间。但是你添加或者删除一个字符,后面所有的磁盘块都要变吧
: 。。除非磁盘块和数据库的数据块一样支持里面有不用的字节。这个我倒没有研究过,
: 不过没听说过可以这样。
kx
36 楼
x*n
37 楼
磁盘存储是以块为单位的,比如4K,所谓的指针链接也是指块之间,块内是连续的数据
,所以你的150字节的文件需要占用一个块,也就是4KB的磁盘空间。按照你这种插入法
,就是说你的新文件要占用3个块,12KB,其中第一个块包含100字节数据,第二个块包
含5字节数据,第三个块包含46字节数据,自然三个块里大部分都是气泡了。我不知道
有哪种文件系统支持块里有气泡的(除去最后一块),理论上当然可能,数据库文件一
般就是这样的,不过文件系统毕竟和数据库很不一样,不值得为了像你说的这种少见的
use case来严重牺牲性能。
当然你要想设计一种一块就是一个字节的文件系统,那也行,不过你这个描述还是不够
,你咋知道97-100这4个字节的位置存的是指针而不是数据?于是乎每个字节你要拿出
一位来存放一个标志位,于是乎你160个字节的空间只能存放140个字节的数据,而且都
乱了套了,读取的时候还得解码。
【在 kx 的大作中提到】
: 我说一格就是一个单位的意思
: 管他一个字节还是一个磁盘块呢
: 不过我想放地址的话,用不着太多位吧
: 我换个方式重说一遍
: 假设有个150字节的文件,在磁盘上连续存放
: 现在我要在100字节处插入1个字节
: 再假设地址需要32位4个字节的话
: 那就把97-100共4个字节的数据提取出来,
: 存放地址,指向一个新的磁盘位置
: 然后在该磁盘位置,存上原来97-100的4个字节的数据,再加上原本想要插入的1个字节
,所以你的150字节的文件需要占用一个块,也就是4KB的磁盘空间。按照你这种插入法
,就是说你的新文件要占用3个块,12KB,其中第一个块包含100字节数据,第二个块包
含5字节数据,第三个块包含46字节数据,自然三个块里大部分都是气泡了。我不知道
有哪种文件系统支持块里有气泡的(除去最后一块),理论上当然可能,数据库文件一
般就是这样的,不过文件系统毕竟和数据库很不一样,不值得为了像你说的这种少见的
use case来严重牺牲性能。
当然你要想设计一种一块就是一个字节的文件系统,那也行,不过你这个描述还是不够
,你咋知道97-100这4个字节的位置存的是指针而不是数据?于是乎每个字节你要拿出
一位来存放一个标志位,于是乎你160个字节的空间只能存放140个字节的数据,而且都
乱了套了,读取的时候还得解码。
【在 kx 的大作中提到】
: 我说一格就是一个单位的意思
: 管他一个字节还是一个磁盘块呢
: 不过我想放地址的话,用不着太多位吧
: 我换个方式重说一遍
: 假设有个150字节的文件,在磁盘上连续存放
: 现在我要在100字节处插入1个字节
: 再假设地址需要32位4个字节的话
: 那就把97-100共4个字节的数据提取出来,
: 存放地址,指向一个新的磁盘位置
: 然后在该磁盘位置,存上原来97-100的4个字节的数据,再加上原本想要插入的1个字节
kx
38 楼
那文件碎片化存放是怎么实现的呢?
就用那个方式不行么?
就是中间加了一个碎片呗
字节
【在 x******n 的大作中提到】
: 磁盘存储是以块为单位的,比如4K,所谓的指针链接也是指块之间,块内是连续的数据
: ,所以你的150字节的文件需要占用一个块,也就是4KB的磁盘空间。按照你这种插入法
: ,就是说你的新文件要占用3个块,12KB,其中第一个块包含100字节数据,第二个块包
: 含5字节数据,第三个块包含46字节数据,自然三个块里大部分都是气泡了。我不知道
: 有哪种文件系统支持块里有气泡的(除去最后一块),理论上当然可能,数据库文件一
: 般就是这样的,不过文件系统毕竟和数据库很不一样,不值得为了像你说的这种少见的
: use case来严重牺牲性能。
: 当然你要想设计一种一块就是一个字节的文件系统,那也行,不过你这个描述还是不够
: ,你咋知道97-100这4个字节的位置存的是指针而不是数据?于是乎每个字节你要拿出
: 一位来存放一个标志位,于是乎你160个字节的空间只能存放140个字节的数据,而且都
就用那个方式不行么?
就是中间加了一个碎片呗
字节
【在 x******n 的大作中提到】
: 磁盘存储是以块为单位的,比如4K,所谓的指针链接也是指块之间,块内是连续的数据
: ,所以你的150字节的文件需要占用一个块,也就是4KB的磁盘空间。按照你这种插入法
: ,就是说你的新文件要占用3个块,12KB,其中第一个块包含100字节数据,第二个块包
: 含5字节数据,第三个块包含46字节数据,自然三个块里大部分都是气泡了。我不知道
: 有哪种文件系统支持块里有气泡的(除去最后一块),理论上当然可能,数据库文件一
: 般就是这样的,不过文件系统毕竟和数据库很不一样,不值得为了像你说的这种少见的
: use case来严重牺牲性能。
: 当然你要想设计一种一块就是一个字节的文件系统,那也行,不过你这个描述还是不够
: ,你咋知道97-100这4个字节的位置存的是指针而不是数据?于是乎每个字节你要拿出
: 一位来存放一个标志位,于是乎你160个字节的空间只能存放140个字节的数据,而且都
x*n
43 楼
但是重写大文件再现实中很少需要的,一般的用户数据文件都比较小,比较大的基本只
有数据库的例子,而数据库是不依赖文件系统自己直接管理磁盘空间的,支持块里有气
泡。大的文件需要重写的例子有,比如sphinx的全文索引,但是很少。
你如果需要经常重写大的数据文件,可以考虑:
1. 使用多个小的数据文件,代替单个大文件
2. 使用一个delta文件,定期和主文件合并
3. 使用SQLite数据库
【在 kx 的大作中提到】
: 哦
: 我理解成别的意思了
: 以为你说的是一种设想
: 而其实就是现行的做法了
: 不过,对一个很大的文件来说,
: 就算为了插入一个字节,消耗4k的磁盘块,总比完全重写整个文件要划算一点吧
: 或者小文件就完全重写,大文件就用碎片管理的方法插入?
: 当然,我也知道,对比的双方一个是磁盘空间,一个是资源的消耗,不完全可比
有数据库的例子,而数据库是不依赖文件系统自己直接管理磁盘空间的,支持块里有气
泡。大的文件需要重写的例子有,比如sphinx的全文索引,但是很少。
你如果需要经常重写大的数据文件,可以考虑:
1. 使用多个小的数据文件,代替单个大文件
2. 使用一个delta文件,定期和主文件合并
3. 使用SQLite数据库
【在 kx 的大作中提到】
: 哦
: 我理解成别的意思了
: 以为你说的是一种设想
: 而其实就是现行的做法了
: 不过,对一个很大的文件来说,
: 就算为了插入一个字节,消耗4k的磁盘块,总比完全重写整个文件要划算一点吧
: 或者小文件就完全重写,大文件就用碎片管理的方法插入?
: 当然,我也知道,对比的双方一个是磁盘空间,一个是资源的消耗,不完全可比
x*n
45 楼
zfs有这个功能,大部分文件系统都不支持。如果支持的话对应用是透明的,跟copy
cmd啥没关系,这些应用层程序是构建于文件系统之上的,不会知道什么数据存在了哪
个磁盘块里。
不过要在文件中间插入字节,不是这么简单的,除非你插入的是一个block大小的整数
倍,否则后面所有的block必然都和以前不同了。
without
【在 d*****9 的大作中提到】
: 那就echo后面的文件到前面的就是了。
: 不过,俺记不得了,hd management有没有允许俩文件都reference同一block without
: making a duplicate before any changes?譬如copy cmd。
cmd啥没关系,这些应用层程序是构建于文件系统之上的,不会知道什么数据存在了哪
个磁盘块里。
不过要在文件中间插入字节,不是这么简单的,除非你插入的是一个block大小的整数
倍,否则后面所有的block必然都和以前不同了。
without
【在 d*****9 的大作中提到】
: 那就echo后面的文件到前面的就是了。
: 不过,俺记不得了,hd management有没有允许俩文件都reference同一block without
: making a duplicate before any changes?譬如copy cmd。
相关阅读
[合集] 没觉得iphone 4有啥令人惊喜的地方啊[合集] 真不知道怎么这么多人喜欢苹果[合集] 乔布斯的那点儿事儿用了近一年的iPad 2因为麦克门,今天免费换了个新的。[合集] 受不了safari[合集] MBP 13' 使用三周OS 及软件感受买了两speaker,需要什么cable?iphone4车载蓝牙配对后自动播放music我去他妈的itunes大家都去支持老饭申请果版新版主吧[合集] sigh, IPAD大起, IPHONE4大落....att给ipad的data planproblems with my iphone's signal?太荒谬了,这个版教主的遗像要供到几时?ChineseWeb的一个bug是真的吗?[合集] iphone 大势已去为什么美国网站等服务Mac支持比较好IDC称苹果超LG成为全球第三大手机厂商郑重建议