2009-06-02 16 views

Antwort

1

Wenn Sie die Warteschlange nicht durchsuchen müssen (und Warteschlangen müssen in der Regel nicht durchsucht werden), dann eine verknüpfte Liste.

+0

ja meine Warteschlange sollte mehr wie ein Stapel mit Push und Pop funktionieren. Aber da es Tausende von URLs verarbeiten wird, brauche ich eine sehr schnelle Implementierung. und ist es möglich, auf der verknüpften Liste zu FIFO zu gehen? – kar

+0

Ja. Sie müssen einen Kopf- und einen Endzeiger verwenden. Am Schwanz einführen und vom Kopf abnehmen. –

1

Wenn die Reihenfolge wichtig ist (und Warteschlangen sind), dann eine verknüpfte Liste. Wenn Sie die Warteschlange suchen müssen, dann B-Baum.

+0

Suche nicht benötigt, da es wie ein Stapel funktioniert, nur brauche ich eine nicht duplizierte Liste. Gibt es dafür eine spezielle verknüpfte Liste? – kar

1

Wenn Sie einen groß angelegten Crawler erstellen, möchten Sie wahrscheinlich so etwas wie eine AMQP-Nachrichtenwarteschlange verwenden, höchstwahrscheinlich RabbitMQ. RabbitMQ (und viele andere ähnliche MQs) werden mit einer ziemlich normalen Installation mehr als 100.000 Transaktionen pro Sekunde durchführen. Ich benutze es in meinem eigenen Spider/Crawler-Setup, und es funktioniert wie ein Zauber. Sicherlich viel einfacher als etwas Ähnliches von Grund auf zu bauen.

+0

Übrigens verwenden die meisten fortgeschrittenen Hochgeschwindigkeits-Nachrichtenwarteschlangen intern eine verknüpfte Liste mit Zeigern sowohl auf den Kopf als auch auf den Schwanz. Manchmal verweisen Sie auch auf andere Stellen in der Warteschlange. Kommt wirklich auf den Funktionsumfang des MQ an. AMQP 1.0 definiert zum Beispiel das Konzept von "Links" und Links müssen ihre eigenen Zeiger in der Warteschlange halten. –