算法分析--統計大文本中字母的出現次數

春風如貴客,一到便繁華。各位看官點贊再看,養成好習慣(●´∀`●)

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. 分片的時候可以採用二叉樹排序查找,內存是夠用的。

這個問題,只提供思路,各位可以有針對性的選擇。僅供參考,如果你有更好的答案,請留言告訴我!


創作不易,各位的支持和認可,就是我創作的最大動力,

【轉載請聯繫本人】 如有問題,請聯繫我。歡迎斧正!不勝感激 !

求點贊👍 求關注❤️ 求分享👥 求留言📪

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