一:起初我想,在读取的时候创建一个副本,先读取副本,但是前提是我不能写,如果我写了,同时也有人更新正本,我就无法同步过去了.
二:用行数对正本分页,好像也会遇到上面的问题.
百思不得其解,特此请教各位有没有类似的设计方案,这个也是一个面试题.
我想,同时读写这么大的文件不是找死吗?但是总有这么奇葩的需求.
9 个解决方案
#1
mark,我也想知道,顺便问下,必须支持同时吗,不能加锁让所有的读写排队执行吗,如果能,那就简单了
#2
您最好问下面试官,这道题对空间复杂度是否有要求
出题的目的是为了考察你哪方面知识。
ok,我认为,首先1G文件的读写,必须分割文件。
按照字节大小,200k一个文件,5000个文件,再创建一个index文件,根据hash定位每个小文件。
出题的目的是为了考察你哪方面知识。
ok,我认为,首先1G文件的读写,必须分割文件。
按照字节大小,200k一个文件,5000个文件,再创建一个index文件,根据hash定位每个小文件。
#3
我觉得这种问题确实很奇葩。如果这是个真实问题,那首先应该解决的是不让1G文本产生。如果真不幸产生了,那老板能出多少工资才能雇能解决这问题的人。想想看,别说这1G文件是文本了,即便是数据库文件,用数据库管理系统操作它都很麻烦。就说Access数据库吧,它才能管理多大的文件啊。
#4
这样不行,不能你读的时候给锁住了,不然别人去写.
#5
呵呵呵,其实这有时候也挺无奈的,考考分析能力,如果不会就和你砍砍价.
#6
嗯,这个可取,类似海量数据分而治之的道理
#8
1G文本首先得定义文本的格式。目前流行的就是XML和JSON格式了。格式定下来后,就用XML数据库或JSON数据库来管理。别自己试图去管。如果自己设计来管理这样的文件,那就相当于你自己设计一个数据库管理系统。
#9
XML或JSON..这是找死啊。
控制同步用ReadWriteLock就好。
怎么使不同数据同时操作互不影响这个比较麻烦,最好是每条记录同样的长度,要不然就得手动管理索引和空间。
控制同步用ReadWriteLock就好。
怎么使不同数据同时操作互不影响这个比较麻烦,最好是每条记录同样的长度,要不然就得手动管理索引和空间。
#1
mark,我也想知道,顺便问下,必须支持同时吗,不能加锁让所有的读写排队执行吗,如果能,那就简单了
#2
您最好问下面试官,这道题对空间复杂度是否有要求
出题的目的是为了考察你哪方面知识。
ok,我认为,首先1G文件的读写,必须分割文件。
按照字节大小,200k一个文件,5000个文件,再创建一个index文件,根据hash定位每个小文件。
出题的目的是为了考察你哪方面知识。
ok,我认为,首先1G文件的读写,必须分割文件。
按照字节大小,200k一个文件,5000个文件,再创建一个index文件,根据hash定位每个小文件。
#3
我觉得这种问题确实很奇葩。如果这是个真实问题,那首先应该解决的是不让1G文本产生。如果真不幸产生了,那老板能出多少工资才能雇能解决这问题的人。想想看,别说这1G文件是文本了,即便是数据库文件,用数据库管理系统操作它都很麻烦。就说Access数据库吧,它才能管理多大的文件啊。
#4
这样不行,不能你读的时候给锁住了,不然别人去写.
#5
呵呵呵,其实这有时候也挺无奈的,考考分析能力,如果不会就和你砍砍价.
#6
嗯,这个可取,类似海量数据分而治之的道理
#7
#8
1G文本首先得定义文本的格式。目前流行的就是XML和JSON格式了。格式定下来后,就用XML数据库或JSON数据库来管理。别自己试图去管。如果自己设计来管理这样的文件,那就相当于你自己设计一个数据库管理系统。
#9
XML或JSON..这是找死啊。
控制同步用ReadWriteLock就好。
怎么使不同数据同时操作互不影响这个比较麻烦,最好是每条记录同样的长度,要不然就得手动管理索引和空间。
控制同步用ReadWriteLock就好。
怎么使不同数据同时操作互不影响这个比较麻烦,最好是每条记录同样的长度,要不然就得手动管理索引和空间。