Sobes.tech

Golang

Was wurde zwischengespeichert? Irgendwelche Verzeichnisse?

Senior
МВидео/эльдорадо
166

/* Wir müssen Daten von einer Quelle zu einem Verbraucher übertragen. Die Quelle liefert die Daten in kleinen Chargen (~zehn Einträge), während der Verbraucher effizienter mit größeren Chargen arbeitet. Ein echtes Beispiel ist die Übertragung von Daten aus Kafka-Queues in die Clickhouse-Datenbank. Quelle: - Praktisch unendlich. - Die Quelle gibt nie mehr als MaxItems Datensätze in einem einzelnen Next-Aufruf zurück. - Innerhalb einer "Sitzung" (einem Aufruf der Funktion Pipe) liefert die Quelle bei jedem Next neue Daten. - Nach einem Neustart beginnt die Quelle wieder bei der vorherigen "bestätigten" Position, die durch cookie bestimmt wird. Daher muss jeder Wert von cookie, den Next zurückgibt, nach der Speicherung der Daten im Empfänger mit einem Commit bestätigt werden, und zwar in genau der Reihenfolge, in der sie von Next zurückgegeben wurden. Empfänger: - Kann nicht mehr als MaxItems auf einmal verarbeiten. Basisebene: Es ist erforderlich, die Funktion func Pipe(p Producer, c Consumer) error zu implementieren, die Daten aus der Quelle liest, sie in einen Puffer mit maximaler Größe MaxItems gruppiert und im Empfänger speichert, und anschließend den Fortschritt in der Quelle bestätigt. */ const MaxItems = 9999 type Producer interface { // Next gibt zurück: // - einen Batch von Items zur Verarbeitung // - eine cookie, die nach Abschluss der Verarbeitung bestätigt werden soll // - einen Fehler Next() (items []any, cookie int, err error) // Commit wird verwendet, um den Datenbatch als verarbeitet zu markieren Commit(cookie int) error } type Consumer interface { Process(items []any) error } func Pipe(p Producer, c Consumer) error { var buf []any var cookies []int for { items, cookie, err := p.Next() if err != nil { return err } buf = append(buf, items...) cookies = append(cookies, cookie) if len(buf) >= MaxItems { if err := c.Process(buf); err != nil { return err } for _, c := range cookies { if err := p.Commit(c); err != nil { return err } } buf = buf[:0] cookies = nil } } if len(buf) > 0 { if err := c.Process(buf); err != nil { return err } for _, c := range cookies { if err := p.Commit(c); err != nil { return err } } } return nil }

Middle
Яндекс
166

Können Sie die Unternehmen oder Lieferanten aufzählen, mit denen Sie zu tun hatten?

Junior — Middle
166

Erzählen Sie mir vom letzten Arbeitsplatz: Was haben Sie gemacht, welchen Tech-Stack hatten Sie, welche schwierigen Aufgaben gab es?

Middle
OZONOZON
166

Was ist ein Slice in Go?

Middle
Бюро 1440Бюро 1440
166

Können Sie die wichtigsten Arten von Aufrufen auflisten, die in gRPC verwendet werden?

Junior — Middle
СБЕР дейвайсыСБЕР дейвайсы
166

Ist es erlaubt, Informationen aus einem Kanal mit aktiviertem geschlossenen Modus zu erhalten?

Junior — Middle
ГазпромГазпром
X5 groupX5 group
AvitoAvito
+1
166

Kann man direkt in eine bestimmte Partition von Kafka schreiben, ohne den Schlüssel für das Hashing zu verwenden?

Junior — Middle
Самокат Тех
166

Können Sie den Mechanismus erklären, wie ein Element am Ende einer Datenstruktur, wie einer Liste oder einem Array, hinzugefügt wird?

Junior — Middle
Lamoda Tech
Startribe
Самокат Тех
+2
166

Welche Daten und auf welche Weise werden beim Ausführen des Programms im Stack platziert?

Junior — Middle
166

Welche Caching-Methoden bevorzugen Sie in Ihren Projekten und warum?

Junior — Middle
166

Was ist der Unterschied zwischen einer materialisierten Ansicht und einer normalen Ansicht?

Middle
RWB
165

Welche Komponenten gehören zur Struktur einer verketteten Liste?

Junior — Middle
165

Wie wird die Laufzeit der Operation zum Hinzufügen eines Elements nach Schlüssel in der Datenstruktur Map bestimmt?

Junior — Middle
ЯндексЯндекс
165

Warum wird die Anfangsgröße des Stapels bei Threads in der Regel auf 2 MB festgelegt?

Junior — Middle
165

Haben Sie in Ihren Projekten schon einmal die ErrGroup-Struktur zur Verwaltung paralleler Aufgaben verwendet?

Junior — Middle
165

Welche ungewöhnlichen oder nicht standardmäßigen Pakete haben Sie in Ihrer Praxis verwendet?

Junior — Middle
165

Warum verlangsamt sich das Wachstum des Scheibchens und warum kann man es nicht ständig verdoppeln?

Middle
RWB
165

An welcher Stelle werden die Befehle im GitLab CI/CD-Arbeitsprozess ausgeführt?

Junior — Middle
165

Welche Konsequenzen können bei Nichteinhaltung der SOLID-Prinzipien bei der Softwareentwicklung auftreten?

Junior — Middle
Zonatelecom
165
/413