如果我有1G的文本文件或者更大,同时有读写.我该怎么设计它

椰树海岛 2014-04-29 09:52:20
如题:如果我有1G的文本文件或者更大,同时有读写.我该怎么设计它

一:起初我想,在读取的时候创建一个副本,先读取副本,但是前提是我不能写,如果我写了,同时也有人更新正本,我就无法同步过去了.
二:用行数对正本分页,好像也会遇到上面的问题.

百思不得其解,特此请教各位有没有类似的设计方案,这个也是一个面试题.
我想,同时读写这么大的文件不是找死吗?但是总有这么奇葩的需求.
...全文
320 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
byourfan 2014-04-29
  • 打赏
  • 举报
回复
XML或JSON..这是找死啊。 控制同步用ReadWriteLock就好。 怎么使不同数据同时操作互不影响这个比较麻烦,最好是每条记录同样的长度,要不然就得手动管理索引和空间。
_serendipity_ 2014-04-29
  • 打赏
  • 举报
回复
1G文本首先得定义文本的格式。目前流行的就是XML和JSON格式了。格式定下来后,就用XML数据库或JSON数据库来管理。别自己试图去管。如果自己设计来管理这样的文件,那就相当于你自己设计一个数据库管理系统。
tony4geek 2014-04-29
  • 打赏
  • 举报
回复
椰树海岛 2014-04-29
  • 打赏
  • 举报
回复
引用 2 楼 xiaopeipei2004 的回复:
您最好问下面试官,这道题对空间复杂度是否有要求 出题的目的是为了考察你哪方面知识。 ok,我认为,首先1G文件的读写,必须分割文件。 按照字节大小,200k一个文件,5000个文件,再创建一个index文件,根据hash定位每个小文件。
嗯,这个可取,类似海量数据分而治之的道理
椰树海岛 2014-04-29
  • 打赏
  • 举报
回复
引用 3 楼 u013734720 的回复:
我觉得这种问题确实很奇葩。如果这是个真实问题,那首先应该解决的是不让1G文本产生。如果真不幸产生了,那老板能出多少工资才能雇能解决这问题的人。想想看,别说这1G文件是文本了,即便是数据库文件,用数据库管理系统操作它都很麻烦。就说Access数据库吧,它才能管理多大的文件啊。
呵呵呵,其实这有时候也挺无奈的,考考分析能力,如果不会就和你砍砍价.
椰树海岛 2014-04-29
  • 打赏
  • 举报
回复
引用 1 楼 linminqin 的回复:
mark,我也想知道,顺便问下,必须支持同时吗,不能加锁让所有的读写排队执行吗,如果能,那就简单了
这样不行,不能你读的时候给锁住了,不然别人去写.
_serendipity_ 2014-04-29
  • 打赏
  • 举报
回复
我觉得这种问题确实很奇葩。如果这是个真实问题,那首先应该解决的是不让1G文本产生。如果真不幸产生了,那老板能出多少工资才能雇能解决这问题的人。想想看,别说这1G文件是文本了,即便是数据库文件,用数据库管理系统操作它都很麻烦。就说Access数据库吧,它才能管理多大的文件啊。
grapepaul 2014-04-29
  • 打赏
  • 举报
回复
您最好问下面试官,这道题对空间复杂度是否有要求 出题的目的是为了考察你哪方面知识。 ok,我认为,首先1G文件的读写,必须分割文件。 按照字节大小,200k一个文件,5000个文件,再创建一个index文件,根据hash定位每个小文件。
空白-键 2014-04-29
  • 打赏
  • 举报
回复
mark,我也想知道,顺便问下,必须支持同时吗,不能加锁让所有的读写排队执行吗,如果能,那就简单了

50,523

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧