Maison base de données tutoriel mysql 给我一把榔头,满世界都是钉子

给我一把榔头,满世界都是钉子

Jun 07, 2016 pm 04:33 PM
monde article clou

一篇文章存成一个巨大的文件,总共大约有一亿个单词,要找出里面重复次数最多的。怎么做? Hadoop是一把威力巨大的榔头,在使用过Hadoop之后,看着任何东西都想把它给map reduce了。有一个关于Jeff Dean的小笑话,说在睡不着觉的时候,一般人是数羊,Jeff De

给我一把榔头,满世界都是钉子 一篇文章存成一个巨大的文件,总共大约有一亿个单词,要找出里面重复次数最多的。怎么做?

Hadoop是一把威力巨大的榔头,在使用过Hadoop之后,看着任何东西都想把它给map reduce了。有一个关于Jeff Dean的小笑话,说在睡不着觉的时候,一般人是数羊,Jeff Dean是map reduce他的羊群。所以,我的办法是,把这个文件拆分成若干个小文件,在map过程用hash算法保证相同的单词落入一个文件(这点很重要),计算单词出现次数,在reduce过程取得重复次数最多的单词来。

但是,真有必要这样啰嗦吗?

只有一亿个单词,简单估算一下,一个字母占据两个字节,假设单词平均长度5,即便是最极端情况,这些单词里面没有重复,单词本身也就消耗1G而已;而实际上一篇文章单词的重复率是非常高的,这个数据量完全可以放在内存里面计算。还没完,不一定非得要用Hash,如果借由Trie树,可以节点压缩,占用更少的空间。

这只是一个用榔头来敲钉子的一个小例子而已,在我刚学算法的时候,那时候刚接触外排序,这样的问题我或许会第一反应使用外排序来做,在那个时候,这把榔头就是外排序。但实际上呢,外排序的效率比上面提到的方法都低得多,只有在内存实在不够用的时候才适合考虑(即便在内存不够用的情况下,我们依然可以利用hash,把大文件划分成若干个小到内存可以容纳为止的文件,分别计算以后在来归并求最大数,目的就是要尽量避免外排序带来的大量磁盘读写)。

如果再把思路放宽一点,真的需要统计所有的单词吗?其实对于一篇文章来说,其中的内容都是有文字意义的,换言之,只有很少的单词可能成为“重复最多”的,这个数量应该是非常非常有限的。比如在遇到一个“is”的时候,我们知道要把它列入统计范畴,但是遇到“distribution”这样的词呢,大可跳过。

还可以找得到很多这样的榔头,比如概率公式,C(m,n)和A(m,n),即组合数和排列数,对于某些概率、混合、排列的问题就用它来套;再比如常见的榔头——动态规划,学了以后看到求最优解问题就很想用DP来解;还有在数据量很大的情况下利用hash、区域划分等等“分而治之”的化简思想……但是,这些都是常规思路,就如同Top K问题用堆排序来求解,寻找“不出现”的单词就使用bit map,“不重复出现”的单词就使用2-bit map等等这样的问题一样,终归是简单粗暴那一类的。即便解决了问题,也没有给人眼前一亮的“巧妙”的感觉。

跳出算法,在很多工程问题上也有类似的体会。记得以前在做一个项目的单元测试,Easy Mock + Easy Mock Extension + Power Mock,这样一套库,mock的能力实在强大,几乎没有测试不了的代码了,于是就拿了这把榔头到处砸,却忘了单元测试的最终目的是什么,那一些代码是值得做单元测试的。后来利用ant给测试环境中,不关心逻辑的那一层,使用自己写的桩代码mock掉,并且去掉了好多价值不大的测试代码(在代码更新的时候测试代码需要同步维护,这个成本不划算,所以我们把一些价值有但不大的单元测试用例合并或者删除了),层次反而更清楚,测试代码反而更易懂了。

前些日子和我们组的数学达人讨论问题的时候他说,我们最常见的最通用的榔头,主要还是在“解空间的搜索”和“解的构造”这两方面。如果能构造,复杂程度往往就要低于搜索,这是一个递进;而另一方面,任何一个实际问题都是有额外信息的,通用的榔头却是不考虑这些实际信息的,就像这个求重复次数最多的单词问题一样,文件有多大、文件内存放的是一篇实际有意义的文章,等等(再比如如果这个文件里面不是一亿个单词,而是一亿个整数呢),这些都是额外的信息,这是另一个递进。利用这些,简化了问题,就可以杀鸡不用牛刀了吧。

文章未经特殊标明皆为本人原创,未经许可不得用于任何商业用途,转载请保持完整性并注明来源链接《四火的唠叨》

你可能也喜欢:

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment puis-je gagner de l'argent en publiant des articles sur Toutiao aujourd'hui ? Comment gagner plus de revenus en publiant des articles sur Toutiao dès aujourd'hui ! Comment puis-je gagner de l'argent en publiant des articles sur Toutiao aujourd'hui ? Comment gagner plus de revenus en publiant des articles sur Toutiao dès aujourd'hui ! Mar 15, 2024 pm 04:13 PM

1. Comment pouvez-vous gagner de l'argent en publiant des articles sur Toutiao aujourd'hui ? Comment gagner plus de revenus en publiant des articles sur Toutiao dès aujourd'hui ! 1. Activer les droits et intérêts fondamentaux : les articles originaux peuvent générer des bénéfices grâce à la publicité, et les vidéos doivent être originales en mode écran horizontal pour générer des bénéfices. 2. Activez les droits de 100 fans : si le nombre de fans atteint 100 fans ou plus, vous pouvez tirer des bénéfices des micro-titres, de la création originale de questions-réponses et des questions-réponses. 3. Insistez sur les œuvres originales : les œuvres originales comprennent des articles, des micro-titres, des questions, etc., et doivent contenir plus de 300 mots. Veuillez noter que si des œuvres illégalement plagiées sont publiées en tant qu'œuvres originales, des points de crédit seront déduits, et même les éventuels bénéfices seront déduits. 4. Verticalité : lorsque vous rédigez des articles dans des domaines professionnels, vous ne pouvez pas écrire à volonté des articles dans tous les domaines, vous n'obtiendrez pas de recommandations appropriées, vous ne pourrez pas atteindre le professionnalisme et le raffinement de votre travail et il sera difficile d'attirer des fans. et les lecteurs. 5. Activité : forte activité,

Retournez à Omaha Beach ! World of Tanks lance un événement de commémoration de la Normandie Retournez à Omaha Beach ! World of Tanks lance un événement de commémoration de la Normandie May 31, 2024 pm 10:25 PM

Alors que l'invasion du Jour J approche de son 80e anniversaire, un mois entier d'événements et d'offres spéciales de World of Tanks seront centrés sur l'Opération Overlord - un nouveau mode PvE, une passe de combat thématique, la sortie d'un nouveau mode Frontline et un mois de long Le magasin de jetons Opération Normandie est sur le point d'ouvrir. CARTE DE L'OPÉRATION Du 3 au 30 juin, explorez les plages de Normandie et collectez jusqu'à 90 jetons Opération Normandie : 36 de cette carte et 54 autres en accomplissant des tâches quotidiennes. Consultez la carte interactive et consultez les dates de début de chaque événement, puis commencez à gagner des jetons maintenant ou débloquez des quêtes spéciales de jetons. Utilisez la carte pour en savoir plus sur les activités liées à l'Opération Normandie. Après avoir obtenu suffisamment de jetons Opération Normandie, vous pouvez vous rendre chez le revendeur de jetons Opération Normandie.

Découvrez un tout nouveau monde de logiciels de programmation Java pour téléphones mobiles : cinq applications recommandées à ne pas manquer Découvrez un tout nouveau monde de logiciels de programmation Java pour téléphones mobiles : cinq applications recommandées à ne pas manquer Jan 13, 2024 am 09:08 AM

À l’ère actuelle des appareils mobiles, les téléphones mobiles sont devenus un élément indispensable de nos vies. Et si la programmation vous intéresse, le logiciel de programmation Java sur votre téléphone mobile transformera votre téléphone mobile en un puissant outil de développement. Cet article présentera cinq logiciels de programmation Java mobiles à ne pas manquer pour vous aider à mieux explorer le monde de la programmation. AIDEAIDE est un puissant logiciel de programmation Java mobile qui fournit un environnement de développement Java complet, comprenant un éditeur de code, un compilateur, un débogueur, etc. Il soutient une variété de projets de développement

Soyez le premier à ouvrir le trésor de la mission. La nouvelle version de 'World of Warships' est maintenant ouverte. Soyez le premier à ouvrir le trésor de la mission. La nouvelle version de 'World of Warships' est maintenant ouverte. Apr 17, 2024 pm 06:04 PM

Soyez le premier à ouvrir le trésor de la mission et à planifier la bataille avec une longueur d'avance. La version 13.3 de « World of Warships » est désormais ouverte. Connaître toutes les informations importantes sur la nouvelle version des missions de combat et des types de combat aidera les capitaines à planifier la bataille globale et à obtenir rapidement les récompenses pertinentes. En version 13.3, le mode de combat asymétrique que les capitaines attendaient revient. Les capitaines doivent contrôler les navires de guerre contre les navires de guerre IA de niveau inférieur mais plus nombreux. Ce mode est très adapté au jeu en équipe. Jusqu'à 5 joueurs peuvent former une équipe pour combattre côte à côte. Une coopération plus tacite peut vous aider à vaincre l'adversaire rapidement. Lors du patch 13.3, tous les capitaines auront la possibilité de récupérer la Somme Collection et d'obtenir ce destroyer de rang IX. La condition requise pour cette tâche est également très simple, c'est-à-dire gagner le jeu avant la sortie de la prochaine version.

Pour aider à détruire les chars de la série B, l'événement « Lancer Charge » dans « World of Tanks » démarre Pour aider à détruire les chars de la série B, l'événement « Lancer Charge » dans « World of Tanks » démarre Apr 19, 2024 pm 04:22 PM

La nouvelle branche de recherche et développement de canons antichar automoteurs de la série B vient de rejoindre « World of Tanks ». Ses membres de haut niveau peuvent tirer des obus APCR en forme d'étoile, ce qui peut causer des dégâts dévastateurs aux cibles proches. Afin d'accueillir l'arrivée de ces chars uniques, « World of Tanks » lancera un événement spécial à durée limitée « Lancer Charge » du 19 avril à 17h00 au 26 avril à 17h00. Cet événement ouvrira 2 séries de tâches. Accomplissez ces tâches et récupérez le jeton White Eagle. Les jetons peuvent également être échangés contre des récompenses de votre choix, et des packages spéciaux contenant des jetons seront également disponibles dans l'Armurerie et le centre commercial d'offres spéciales ! ·Pendant tout l'événement, le système ouvrira des missions exclusives pour les nouveaux canons antichar automoteurs de la série B. Chaque mission peut être accomplie plusieurs fois par jour. Après avoir terminé la mission, vous pouvez obtenir des jetons White Eagle et des événements d'équipage supplémentaires sont remboursés chaque jour.

Guide de stratégie mondiale de sept jours Guide de stratégie mondiale de sept jours Mar 20, 2024 am 09:28 AM

Seven Days World est un jeu de tir de survie multijoueur en ligne. Dans un monde apocalyptique, les joueurs travailleront côte à côte avec leurs amis pour collecter des ressources juste pour survivre. Au cours de ce processus, les joueurs rencontreront également divers problèmes. ces questions. Jetons un coup d'œil à ce résumé du guide du monde de sept jours. Seven Days World Guide : Quand le Seven Days World Guide sera-t-il officiellement lancé ? Est-ce un jeu en ligne ou un jeu mobile Site officiel : Far Returning Butterfly Comment élever une moto Comment obtenir Rotten Shadow Hunter Comment combattre le mobil-home de Hailes ? Guide Seven Days World Comment obtenir une moto Réponse : Collectez des matériaux et synthétisez des pièces pour fabriquer une moto. Introduction détaillée 1. Pour fabriquer une moto, les joueurs doivent d'abord collecter les pièces correspondantes et les pièces doivent être explorées sur la carte. 2. Dans les tâches et l'exploration quotidienne, vous pouvez obtenir

L'assemblage d'avant-garde ultime ! Début de la liaison World of Tanks × 'Star Trek' L'assemblage d'avant-garde ultime ! Début de la liaison World of Tanks × 'Star Trek' Apr 30, 2024 pm 07:00 PM

L’ultime avant-garde se rassemble de toute urgence ! L'événement de liaison « World of Tanks » × « Star Trek » débutera officiellement le 2 mai ! L'antimatière contenue dans le noyau de distorsion de l'Enterprise a été volée par un mystérieux objet inconnu. Utilisez vos compétences de conduite de char pour rivaliser avec les autres membres de l'équipage afin de récupérer l'antimatière et d'étudier l'objet inconnu. Les récompenses de progression de la mission incluent du contenu unique sur le thème de Star Trek, dont 3 personnages emblématiques de Star Trek : le capitaine James T. Kirk, le commandant Spock, la spécialiste des communications Nyota Uhura. Tous ces membres d'équipage ont leur propre voix. Assignez-les à vos chars et rejoignez la bataille en mode standard ! Effectuez des tâches d'événement quotidiennes pour obtenir des styles 2D, des décalcomanies et des signatures, ainsi qu'une boîte de fournitures Orion. De mystérieux objets non identifiés se déplacent selon d’étranges arrangements à la surface de l’astéroïde

Taobao Big Winner 10 mars : Quel est le seul pays au monde sans moustiques ? Taobao Big Winner 10 mars : Quel est le seul pays au monde sans moustiques ? Mar 10, 2024 am 11:37 AM

Question du gagnant Taobao du 10 mars : quel est le seul pays au monde sans moustiques ? De nombreux utilisateurs ne savent pas où se trouve le seul pays au monde sans moustiques. Alors l'éditeur vous proposera la réponse du gagnant Taobao 3.10 aujourd'hui. la supposition est partagée. Si vous êtes intéressé, venez le découvrir. Taobao Daily Guess Answers Taobao Big Winner du 10 mars : Où est le seul pays au monde sans moustiques ? Question : Où est le seul pays au monde sans moustiques Réponse : C. Islande Analyse des réponses : 1. Cliquez ici pour le savoir ? des indices, vous pouvez trouver la réponse à la question sur la page ci-dessous ; 2. Le seul pays au monde sans moustiques est l'Islande 3. L'Islande est située près du cercle polaire arctique et la température moyenne est inférieure à 5°C pendant 8 jours ; de 12 mois de l'année, ceci.

See all articles