Maison  >  Article  >  Opération et maintenance  >  Une question d'algorithme classique provoquée par une commande Linux couramment utilisée dans les projets

Une question d'algorithme classique provoquée par une commande Linux couramment utilisée dans les projets

巴扎黑
巴扎黑original
2017-06-23 14:14:222251parcourir

  小时候家里定了《读者》的月刊,里面记录一个故事:说有有个偏僻的乡村一日突然来了一个美女,她携着万贯家财子女在当地安家落户,成了当地的乡绅。她让她的子女世世代代的保守这个秘密,直到这个秘密不会再对家族带来灾难。她就是陈圆圆。当年吴三桂领清兵入关,冲冠一怒为红颜,改写了中国的历史,自己却能全身而退的那个人。

  周五例行公事的查看一下离线数据推送项目的数据和log。将log用awk分段之后,我想知道实时数据前10个被重复发送的数据ID都被重复发送了几次,从而找到进一步优化的入手点,天知道我对这个项目已经进行了多少次优化了。于是linux命令就是

 cat transmission.log |grep 'IncrementAlbumService.java:146'|awk '{print $6}'|awk -F ',' '{print $1}'| sort |uniq -c| sort -nr |head

Les résultats que j'ai obtenus m'ont fait culpabiliser beaucoup

(Sécurité des données, la partie règle d'identification de notre projet n'est pas affichée)

Bien que cela soit lié à leur fonctionnement, À l'origine, il est temps d'envoyer les données lorsqu'il détecte le changement, mais pour un taux de renvoi aussi élevé. Quelle que soit l'interface du service de mise à jour ou du service hors ligne, il reste encore des points qui peuvent être optimisés. Fille, ma pensée a toujours été différente de celle de ces idoles masculines qui utilisent des sèche-cheveux et des arrosoirs artificiels pour créer une image lorsqu'elles apparaissent. En plus de ce résultat, je pense également à un autre problème d'algorithme classique : il existe un fichier texte d'environ 10 000 lignes, un mot dans chaque ligne, et je dois compter les dix mots les plus fréquents.

Pour ce problème d'algorithme, la commande Linux ci-dessus est sort|uniq -c |sort -nr head. La complexité temporelle est la plus grande des suivantes :

1> Effectuez d'abord un tri,

Tri par insertion directe : insérez continuellement des éléments dans la liste ordonnée, le pire moment est complexe Le degré est O (n2)

Tri shell : tri par insertion avec incrément réduit, instable, dépend de la sélection de la séquence de facteurs d'incrément, la pire complexité temporelle est O(n 2)

Tri par sélection simple : sélectionnez le nombre le plus petit ou le plus grand parmi les nombres à trier et échangez-le avec la première position non triée. La pire complexité temporelle est O(n2 ).

Tri par sélection binaire : Chaque tri par sélection simple détermine deux éléments, ce qui peut réduire le cycle de moitié.

Tri par tas : tri par sélection d'arbres, grand tas de racines, petit tas de racines. La pire complexité temporelle est O(N*logN)

Tri à bulles : chaque fois que deux nombres adjacents sont comparés et échangés, la pire complexité temporelle est O(n2 )

Tri rapide : sélectionnez l'élément de base et divisez les éléments à trier à chaque fois. La pire complexité temporelle est O(n2)

Tri par fusion : divisez les deux éléments Listes ordonnées. sont synthétisés dans une nouvelle liste ordonnée. La complexité temporelle dans le pire des cas est O(N*logN)

: un algorithme qui échange de l'espace contre du temps. >

Tri par base : allouer et collecter selon des centaines de milliers de chiffres, la complexité temporelle est O(dn)

  2> la complexité temporelle uniq est O(n)

3> ; Le degré de service du temps de tri est le même que 1>

4> La complexité temporelle après le tri est O(1)

L'algorithme utilisé est également lié à la taille du fichier. Le fichier est trop volumineux, s'il y a trop de données, les fichiers doivent être divisés, triés séparément puis fusionnés de plusieurs manières. Le nombre de mots est donc mentionné ici.

Sans commandes Linux, la solution classique consiste d'abord à utiliser un arbre de dictionnaire pour compter les fréquences des mots, puis à utiliser un gros tas racine. Commençons par présenter l’arbre du dictionnaire, également appelé arbre du pneu. Parce que les moteurs de recherche l'utilisent souvent pour établir des statistiques sur la fréquence des mots de texte, et que les algorithmes de segmentation de mots l'utilisent également comme structure de données de base, j'en connais donc un peu plus. Ses avantages sont les suivants : minimiser les comparaisons de chaînes inutiles et l'efficacité des requêtes est supérieure à celle des tables de hachage. L'idée principale est d'échanger de l'espace contre du temps et d'utiliser des préfixes publics pour réduire le temps nécessaire aux requêtes. Ainsi, lorsqu’on parle de statistiques, la première chose qui vient à l’esprit est l’arborescence du dictionnaire. Si vous conservez un tableau des dix fréquences de mots maximales lors du comptage des fréquences de mots, la complexité temporelle sera 10 fois plus élevée par rapport au traitement en boucle. Par conséquent, il est plus approprié de faire d’abord des statistiques, puis de sélectionner le top 10 en termes d’efficacité du temps.

En fait, je ne connais pas grand-chose aux algorithmes, je sais juste comment les utiliser. Un de mes anciens collègues a lu un article que j'ai écrit sur WeChat et m'a demandé : « Le streaming est-il un travail très technique ? Sa question m'a rappelé Li Xiaoyao dans « Sword of Immortals » qui insistait pour faire semblant d'être grand, riche et beau. Dans le restaurant, quand il a dit qu'il voulait commander le plat le plus cher : « Bœuf frit aux légumes », tout le monde a ri. Même si mon collègue me demandait sincèrement mon avis parce qu'il était sur JD.com et qu'il envisageait d'aller à Momo, je me sentais comme le Li Xiaoyao qui n'avait jamais vu le monde. La logique métier du flux de flux peut être réalisée de n'importe quelle manière. Le fait qu'il ait un contenu technique dépend de la manière dont il est réalisé. J'ai rédigé un brevet pour introduire une méthode d'assemblage des flux d'alimentation. Le processus n'est pas terminé, je ne divulguerai donc pas la méthode de calcul d'ici là. Mais si l’on y réfléchit bien, il reste encore de nombreux points d’optimisation. L'année dernière, lorsque j'aimais jouer à Moments, je constatais souvent que les Moments que j'avais supprimés réapparaissaient, ou que toutes les données récentes de mes Moments ou de celles d'autres personnes disparaissaient soudainement, ne laissant que des données très anciennes, comme il y a deux mois par an. Il y a un an, les données seront automatiquement restaurées après un jour. Tout est une question de stratégie. Il existe de nombreux problèmes avec WeChat Moments. Puisque l'un de nos produits, mm, est un membre de la famille de l'architecte WeChat, je ne me plaindrai pas trop.

Même si aujourd'hui c'est dimanche, vous pouvez utiliser un peu votre imagination, mais il faut aussi avoir un thème. L’exemple précédent présente un problème classique du top K. Étant donné que les moteurs de recherche doivent souvent compter les chaînes de requête les plus populaires, la première question K constitue la base. Les problèmes TopK utilisent de petits tas racine. Conservez un petit tas racine de taille K, parcourez les éléments à comparer et comparez-les respectivement avec les éléments suivants. S'il est plus petit que l'élément racine, cela signifie qu'il n'entrera certainement pas dans le K supérieur et sera éliminé. S'il est supérieur à l'élément racine, éliminez l'élément racine. Ajustez ensuite l'arborescence au tas minimum et continuez la comparaison.

Le tas minimum est un arbre binaire complet, et la valeur de chaque nœud non-feuille n'est pas supérieure à la valeur de son nœud enfant. Si cette règle n'est pas respectée, des ajustements doivent être effectués du premier nœud non-feuille au nœud racine dans un ordre ascendant.

J'ai décidé d'interviewer sur Hulu la semaine prochaine, mais je ne l'ai pas encore fait, donc je ne le ferai probablement pas. Il y a deux ans, mon ancien collègue m'a recommandé Amazon, mais on ne m'a pas demandé d'aller en entretien. Pour me rassurer, j'imagine qu'ils n'embauchaient pas à ce moment-là. Je n’ai jamais assisté à un entretien comme celui-ci avec une entreprise étrangère auparavant, donc je ne sais pas quelle est la routine. Si nous commençons à nous préparer dès maintenant, nous pourrons probablement le faire passer après la fête nationale. Je pense que ce serait très désavantageux pour moi d'aller seul à l'entretien. Ce ne sera pas mal du tout, ce sera très instable. Les amis qui ont lu mes articles peuvent penser que mes articles sont très désordonnés et compliqués. C'est effectivement le cas pour moi dans la vie. J'ai un large éventail de connaissances, je suis très fantasque et je n'ai aucun scrupule. D'une part, cela pose les bases de ma créativité, mais d'autre part, cela ne favorise pas ma capacité à m'exprimer. place. Le cerveau est comme un ordinateur. J'ai de nombreux programmes parallèles, la mémoire n'est pas assez grande et il y a beaucoup de données. La pagination de la mémoire provoque un échange constant de disque. Les actions urgentes comme les entretiens peuvent facilement conduire à des retours de délai d'attente. J’ai tellement de brevets d’invention technique, et maintenant je pense que je ne me souviens même plus de ce que j’ai inventé. J'ai juste pris le bus. Comme il y avait très peu de monde, le chauffeur m'a demandé où descendre. Il voulait dire qu'il s'arrêterait là où personne ne descendrait. Il m'a fallu beaucoup de temps pour m'en souvenir. Mon cerveau fonctionne davantage en mode asynchrone non bloquant. En fait, le blocage synchrone est meilleur pour des choses comme les entretiens. Cependant, il y a une solution à tout. Si vous ne trouvez pas de solution, c’est simplement que vous n’avez pas assez de capacités. Cependant, l'entretien vise à examiner des capacités globales, telles que le travail d'équipe, les compétences conversationnelles, etc. Je pense que personne dans notre département n'aura d'objection à la phrase « Xiaojing est très intelligent ». Je crois également que les collègues avec qui je collabore dans le département ou au travail ne penseront pas que je suis une personne difficile à communiquer ou à vivre. Mais j’ai tendance à oublier comment parler lors des entretiens. Mais si j’échoue à un entretien à cause de ce problème, je n’ai rien à redire. Parce que l'intervieweur est votre futur collègue et leader, si vous n'êtes pas en phase avec l'intervieweur, vous ne pourrez peut-être pas utiliser vos capacités à l'avenir. Si vous n’obtenez pas de bons résultats lors des entretiens et que vous estimez néanmoins que vos capacités sont suffisantes, il est probable que vous n’ayez pas un niveau assez élevé et que vous n’ayez jamais vu à quoi ressemblent des personnes vraiment exceptionnelles. Cependant, je suis le genre de personne qui continue à faire des choses même lorsque je suis déterminé à me heurter à un mur. Si je décide d’abandonner quelque chose, c’est parce que ça n’en vaut pas la peine.

J'aime travailler. Mon objectif est d'avoir encore un métier créatif à 60 ans. J'ai donc peur que les sociétés Internet nationales me laissent prendre ma retraite à l'âge de 40 ans. Il y a une autre chose importante : je veux créer mon propre middleware de moteur de recherche qui l'utilise principalement, donc j'ai peur qu'il me soit difficile d'avoir l'énergie pour le faire. Bien sûr, si vous ne pouvez pas accéder à Hulu, le moteur de recherche doit quand même le faire. Il s’agit simplement de savoir comment répartir votre temps.

En fait, j’aime frapper le mur, peut-être parce que je ne veux pas grandir si vite. Si vous agissez avec maturité et élégance au quotidien, vous devez cacher certaines choses pour lesquelles vous n'êtes pas doué ou des choses qui pourraient mal tourner. En conséquence, je serai heureux tous les jours, mais je pourrais le rester pour le reste de ma vie. Il existe de nombreux personnages célèbres dans l’histoire qui étaient à l’origine des playboys, mais qui sont ensuite devenus de grands hommes après le déclin de leur famille. Dans le livre, il y a deux types de tournants dans la vie : la rencontre avec une personne noble et les revers. Lorsque vous êtes jeune et ouvert d'esprit, vous pouvez avoir une révélation lorsque vous rencontrez une personne noble et ouvrez votre esprit. À mesure que l'expérience augmente, les gens seront plus sélectifs dans la réception des informations qui les entourent. À ce moment-là, ils devront peut-être faire face à de grands revers avant de pouvoir repenser leur vie. Si je peux entrevoir un avenir meilleur, je suis prêt à faire cavalier seul et à brûler le bateau. Il vaut mieux avoir des hauts et des bas qu'un jour à la fois. Si vous voulez vivre, vivez une vie merveilleuse~~

.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
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