Sobes.tech

Golang

Cosa stavano memorizzando nella cache? Qualche directory?

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

/* Dobbiamo trasferire dati da una fonte a un consumatore. La fonte fornisce i dati in piccoli batch (~decine di record), mentre il consumatore funziona in modo più efficiente con batch più grandi. Un esempio reale è il trasferimento di dati da code di tipo Kafka al database Clickhouse. Fonte: - Quasi infinita. - La fonte non restituisce mai più di MaxItems record in una singola chiamata a Next. - All'interno di una "sessione" (una chiamata alla funzione Pipe), la fonte restituisce nuovi dati ad ogni Next. - Tuttavia, dopo un riavvio, la fonte ricomincerà dalla posizione "confermata" precedente, indicata da cookie. Pertanto, *ogni* valore di cookie restituito da Next, dopo aver salvato i dati nel ricevitore, deve essere confermato con una chiamata a Commit, nello stesso ordine in cui sono stati restituiti da Next. Ricevitore: - Non può elaborare più di MaxItems alla volta. Livello di base: È necessario implementare la funzione func Pipe(p Producer, c Consumer) error che legge i dati dalla fonte, li raggruppa in un buffer di dimensione non superiore a MaxItems e li salva nel ricevitore, e poi conferma il progresso nella fonte. */ const MaxItems = 9999 type Producer interface { // Next restituisce: // - batch di elementi da elaborare // - cookie da confermare al termine dell'elaborazione // - errore Next() (items []any, cookie int, err error) // Commit viene usato per marcare il batch di dati come processato 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

Può elencare le aziende o i fornitori con cui ha avuto a che fare?

Junior — Middle
166

Parla del tuo ultimo posto di lavoro: cosa facevi, quale stack tecnologico usavi, quali erano le sfide difficili?

Middle
OZONOZON
166

Cos'è uno slice in Go?

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

Puoi elencare i principali tipi di chiamate utilizzate in gRPC?

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

È consentito ottenere informazioni da un canale con modalità chiusa impostata?

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

È possibile scrivere direttamente in una partizione specifica di Kafka, evitando la chiave per l'hash?

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

Puoi spiegare il meccanismo di aggiunta di un elemento alla fine di una struttura dati, come una lista o un array?

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

Quali dati e in che modo vengono posizionati nello stack durante l'esecuzione del programma?

Junior — Middle
166

Quali metodi di caching preferisci usare nei tuoi progetti e perché?

Junior — Middle
166

Qual è la differenza tra una vista materializzata e una vista normale?

Middle
RWB
165

Quali componenti fanno parte della struttura di una lista collegata?

Junior — Middle
165

Come viene determinato il tempo di esecuzione dell'operazione di aggiunta di un elemento per chiave nella struttura dati Map?

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

Per quale motivo la dimensione iniziale dello stack dei thread è di solito impostata a 2 MB?

Junior — Middle
165

Hai mai utilizzato la struttura ErrGroup nei tuoi progetti per gestire attività parallele?

Junior — Middle
165

Quali pacchetti insoliti o non standard hai utilizzato nella tua pratica?

Junior — Middle
165

Perché la crescita della fetta rallenta e perché non si può continuare a raddoppiare costantemente?

Middle
RWB
165

In quale punto vengono eseguiti i comandi durante il processo di lavoro di GitLab CI/CD?

Junior — Middle
165

Quali conseguenze possono verificarsi in assenza di rispetto dei principi SOLID nella progettazione del software?

Junior — Middle
Zonatelecom
165
/413