春風如貴客,一到便繁華。各位看官點贊再看,養成好習慣(●´∀`●)
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,注意併發和線程設置。
- 分片的時候可以採用二叉樹排序查找,內存是夠用的。
這個問題,只提供思路,各位可以有針對性的選擇。僅供參考,如果你有更好的答案,請留言告訴我!
創作不易,各位的支持和認可,就是我創作的最大動力,
【轉載請聯繫本人】 如有問題,請聯繫我。歡迎斧正!不勝感激 !
求點贊👍 求關注❤️ 求分享👥 求留言📪