Sobes.tech

Golang

Mit cache-eltek? Valamilyen könyvtárak?

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

/* Szükségünk van adatok átadására egyik forrástól a másikhoz. A forrás kis csomagokban (~tíz rekord) adja az adatokat, míg a fogyasztó hatékonyabban működik nagyobb csomagokkal. Egy valós példa a Kafka típusú sorokból történő adatátvitel a Clickhouse adatbázisba. Forrás: - Szinte végtelen. - A forrás soha nem ad vissza több mint MaxItems rekordot egy Next hívásban. - Egy "munkamenet" (egy Pipe függvényhívás) során a forrás minden Next hívásnál új adatokat ad vissza. - Azonban újraindítás után a forrás a korábbi "megerősített" pozícióból kezd, amit cookie jelez. Ezért minden cookie érték, amit a Next visszaad, az adatok tárolása után, Commit hívással kell megerősíteni, ugyanabban a sorrendben, ahogyan a Next visszaadta. Fogyasztó: - Egyszerre nem dolgozhat több mint MaxItems-t. Alapszint: Implementálni kell a func Pipe(p Producer, c Consumer) error függvényt, ami adatokat olvas a forrásból, azokat MaxItems méretű bufferbe csoportosítja és a fogyasztóba menti, majd a forrásban a haladást megerősíti. */ const MaxItems = 9999 type Producer interface { // Next visszaad: // - egy csomagot az adatokból // - egy cookie-t, amit a feldolgozás végén kell megerősíteni // - hibát Next() (items []any, cookie int, err error) // Commit a feldolgozott csomag megerősítésére szolgál 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

Felsorolja azokat a cégeket vagy beszállítókat, akikkel kapcsolatba került?

Junior — Middle
166

Mesélj a legutóbbi munkahelyedről: mivel foglalkoztál, milyen technológiákat használtál, mik voltak a nehéz feladatok?

Middle
OZONOZON
166

Mi az a slice a Go-ban?

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

Felsorolná tudnád a gRPC-ben használt fő hívástípusokat?

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

Megengedett információt szerezni egy zárt mód beállított csatornából?

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

Lehet-e közvetlenül írni egy adott Kafka-partícióba, kihagyva a kulcsot a hash-eléshez?

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

El tudná magyarázni, hogyan működik egy elem hozzáadása egy adatszerkezet végéhez, például egy listához vagy tömbhöz?

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

Milyen adatok és hogyan helyezkednek el a veremben a program futtatása során?

Junior — Middle
166

Milyen cache-elési módszereket részesítesz előnyben a projektjeidben és miért?

Junior — Middle
166

Mi a különbség a materializált nézet és a szokásos nézet között?

Middle
RWB
165

Milyen összetevők tartoznak egy láncolt lista szerkezetéhez?

Junior — Middle
165

Hogyan határozzák meg a Map adatstruktúrába kulcs szerint történő elem hozzáadásának végrehajtási idejét?

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

Miért állítják általában 2 MB-ra a szálak kezdeti veremméretét?

Junior — Middle
165

Valaha használtad az ErrGroup struktúrát projektjeidben párhuzamos feladatok kezelésére?

Junior — Middle
165

Milyen szokatlan vagy nem szabványos csomagokat használt a gyakorlatában?

Junior — Middle
165

Miért lassul a szelet növekedése, és miért nem lehet folyamatosan megduplázni?

Middle
RWB
165

Hol történik a parancsok futtatása a GitLab CI/CD folyamat során?

Junior — Middle
165

Milyen következményekkel járhat a SOLID elvek betartásának hiánya a szoftvertervezésben?

Junior — Middle
Zonatelecom
165
/413