春风如贵客,一到便繁华。各位看官点赞再看,养成好习惯(●´∀`●)
gitee上已经开源 https://gitee.com/Li-Ren/blog 里面有一线大厂面试点脑图,欢迎Star和PR你认为重要的知识点。
前言:
在一台32核 64G内存的物理主机(RedHat7.4)上,存有2个大文件,每个文件大小约为1T,内容为英文单词组成的文档,现在需要统计每个英文大词在两个2文件中总共出现的次数,请描述你的实现方式。
分析:
如果你直接将两个大文件加载到内存中,如果是面试,或者日常工作中,这是很危险的。
- 没有直接分析问题,简单粗暴,为之后的工作埋线隐患。
- 遇事不知变通,缺乏学习能力。
下面说我个人的思路:
- 1T文件,64G内存,意味着该文件不能直接读到内存中。
- 我们可以采用分而治之的思想,将文件分片。
- 1T文件可以分成3000份,每份大小约300M。(这点也可以分成1000份,2000份)
- 单独统计每一份的文件中,每个英文单词出现的次数。
- 可以使用redis、或者变量、或者数据库保存每份文件的统计结果。
- 你以为这就算完事了吗????
- 这是个io密集型场景,32核的cpu,注意并发和线程设置。
- 分片的时候可以采用二叉树排序查找,内存是够用的。
这个问题,只提供思路,各位可以有针对性的选择。仅供参考,如果你有更好的答案,请留言告诉我!
创作不易,各位的支持和认可,就是我创作的最大动力,
【转载请联系本人】 如有问题,请联系我。欢迎斧正!不胜感激 !
求点赞👍 求关注❤️ 求分享👥 求留言📪