Golang
Milliseid süsteemidisaini meetodeid eelistad lahenduste loomisel?
Rääkige keerulisest ülesandest, mille olete suutnud lahendada kirjutades skripti Linuxi süsteemile
Kuidas saab reguleerida vahemälus hoitavate andmete mahtu?
Valmidus tegutseda kui ainus Backend-spetsialist meeskonnas
Mis on peamine põhjus kasutada sync.Map tüüpi Go-s?
Millised on head praktikad ja antipatternid üksustestides? Kuidas aru saada, et testid on head?
func Exclude(a, b []int) []int { set := make(map[int]struct{}) for _, v := range b { set[v] = struct{}{} } result := make([]int, 0) for _, v := range a { if _, ok := set[v]; !ok { result = append(result, v) } } return result } Kompilatsiooni viga # command-line-arguments ./main.go:39:32: süntaksiviga: ootamatu uus rida, oodati { pärast if-lause
Tehing: transaction_id uuid identotency_id uuid from_account_id uuid to_account_id uuid amoun decimal status enum transaction_start timestamp transaction_end timestamp payments_create: user_id uuid payment_account_id uuid balance decimal currency varchar(16) status ENUM created_time timestamp update_time timestamp
Kas teil on kunagi olnud raskusi erinevate teenuste vahelise koostöö rakendamisel?
Kuidas toimub viilu (slice) edastamine funktsioonile programmeerimiskeeles?
Mis on Saga muster?
Miks nad ei Testcontainersit?
/* Meilės reikia perduoti duomenis iš tam tikro šaltinio tam tikram vartotojui. Šaltinis teikia duomenis mažais paketais (~ dešimtys įrašų), o vartotojas efektyviau dirba su didesniais paketais. Reali pavyzdys - duomenų tiekimas iš Kafka tipo eilių į Clickhouse duomenų bazę. Šaltinis: - Sąlyginai begalinis. - Šaltinis niekada negrąžins daugiau nei MaxItems įrašų vienu Next iškvietimu. - Vienoje "sesijoje" (vieno Pipe funkcijos iškvietimo metu) šaltinis kiekvieną kartą grąžina naujus duomenis. - Tačiau, po perkrovimo, šaltinis pradės nuo ankstesnės "patvirtintos" pozicijos, nurodytos cookie. Todėl, *kiekviena* cookie reikšmė, kurią grąžino Next, po duomenų išsaugojimo gavėjui, turi būti patvirtinta Commit, ir tai turi būti atlikta griežtai tokia pačia seka, kaip ir grąžinta. Gavėjas: - Negali apdoroti daugiau nei MaxItems vienu metu. Pagrindinis lygis: Reikia įgyvendinti funkciją func Pipe(p Producer, c Consumer) error, kuri skaito duomenis iš šaltinio, juos grupuoja į buferį, kurio dydis ne didesnis kaip MaxItems, ir saugo gavėjui, po to patvirtina pažangą šaltinyje. */ const MaxItems = 9999 type Producer interface { // Next grąžina: // - duomenų paketą // - cookie patvirtinimui // - klaidą Next() (items []any, cookie int, err error) // Commit žymi, kad duomenų paketas apdorotas 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 }
Kas tabel (id PRIMARY KEY, data JSON) on PostgreSQL-is üsna hea indeks otsimiseks võtme järgi?
Kas on võimalik sisestada veel üks koodiplokk kumerate sulgude vahel olemasoleva funktsiooni sisse?
Kuidas te määratlesite ja sõnastasite ülesandeid oma eelmisel ametikohal?
Kuidas viimane kood viidi sisse tootmiskeskkonda teie viimases projektis?
Kuidas töötab uue elemendi lisamise operatsioon slice'is programmeerimiskeeles?
Kas nil-slaid on võrdne slaidiga, mis ei ole otseselt initsialiseeritud?
Selgitage operatsioonisüsteemides kontekstivahetuse kontseptsiooni.