算法分析--统计大文本中字母的出现次数

春风如贵客,一到便繁华。各位看官点赞再看,养成好习惯(●´∀`●)

gitee上已经开源 https://gitee.com/Li-Ren/blog 里面有一线大厂面试点脑图,欢迎Star和PR你认为重要的知识点。

前言: 

在一台32核 64G内存的物理主机(RedHat7.4)上,存有2个大文件,每个文件大小约为1T,内容为英文单词组成的文档,现在需要统计每个英文大词在两个2文件中总共出现的次数,请描述你的实现方式。

分析: 

如果你直接将两个大文件加载到内存中,如果是面试,或者日常工作中,这是很危险的。

  1. 没有直接分析问题,简单粗暴,为之后的工作埋线隐患。
  2. 遇事不知变通,缺乏学习能力。

下面说我个人的思路:

  1. 1T文件,64G内存,意味着该文件不能直接读到内存中。
  2. 我们可以采用分而治之的思想,将文件分片。
  3. 1T文件可以分成3000份,每份大小约300M。(这点也可以分成1000份,2000份)
  4. 单独统计每一份的文件中,每个英文单词出现的次数。
  5. 可以使用redis、或者变量、或者数据库保存每份文件的统计结果。
  6. 你以为这就算完事了吗????
  7. 这是个io密集型场景,32核的cpu,注意并发和线程设置。
  8. 分片的时候可以采用二叉树排序查找,内存是够用的。

这个问题,只提供思路,各位可以有针对性的选择。仅供参考,如果你有更好的答案,请留言告诉我!


创作不易,各位的支持和认可,就是我创作的最大动力,

【转载请联系本人】 如有问题,请联系我。欢迎斧正!不胜感激 !

求点赞👍 求关注❤️ 求分享👥 求留言📪

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章