Sobes.tech

Golang

Nə cache-lənmişdi? Hər hansı bir qovluqlar?

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

/* Biz manbadan ma'lumotlarni iste'molchiga uzatishimiz kerak. Manba kichik partiyalar (~o'n yozuv) bilan ma'lumotlarni taqdim etadi, iste'molch esa katta partiyalar bilan samaraliroq ishlaydi. Haqiqiy misol - Kafka turidagi navbatlardan Clickhouse bazasiga ma'lumot uzatish. Manba: - deyarli cheksiz. - Manba har doim Next chaqiruvida MaxItems dan ko'p yozuvlarni qaytarmaydi. - Bir "sessiya" (bir Pipe funksiyasi chaqiruvi) davomida, manba har Next chaqiruvida yangi ma'lumotlarni qaytaradi. - Biroq, qayta ishga tushirilgandan so'ng, manba avvalgi "tasdiqlangan" pozitsiyadan, cookie bilan belgilangan joydan boshlanadi. Shuning uchun, har bir cookie qiymati, Next qaytarib bergandan so'ng, ma'lumotlar qabul qiluvchiga saqlangandan keyin, Commit chaqiruvi bilan tasdiqlanishi kerak, va ular Next tomonidan qaytarilgan tartibda bo'lishi shart. Qabul qiluvchi: - Bir vaqtning o'zida MaxItems'tan ko'p ishlov berolmaydi. Asosiy daraja: Kerak bo'lsa, func Pipe(p Producer, c Consumer) error funksiyasini amalga oshiring, bu funktsiya manbadan ma'lumotlarni o'qiydi, ularni MaxItems o'lchamdagi bufferga guruhlaydi va qabul qiluvchiga saqlaydi, so'ngra manbada progressni tasdiqlaydi. */ const MaxItems = 9999 type Producer interface { // Next,: // - ishlov beriladigan elementlar paketlari qaytaradi // - tasdiqlash uchun cookie // - xato Next() (items []any, cookie int, err error) // Commit, ma'lumotlar partiyasini ishlov berilgan deb belgilash uchun ishlatiladi 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

Əlaqə saxladığınız şirkətləri və ya tədarükçüləri sadalaya bilərsinizmi?

Junior — Middle
166

Son iş yeriniz haqqında danışın: nə ilə məşğul olurdunuz, hansı texnologiyaları istifadə edirdiniz, çətin tapşırıqlar nə idi?

Middle
OZONOZON
166

Go-da dilim nədir?

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

gRPC-də istifadə olunan əsas çağrı növlərini sadalaya bilərsinizmi?

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

Bağlı rejim aktivləşdirilmiş kanaldan məlumat almaq mümkündürmü?

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

Kafka-da müəyyən bir partisyaya birbaşa məlumat yazmaq mümkündürmü, hash üçün açar keçmədən?

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

Məlumatlar strukturunun, məsələn, siyahı və ya massiv kimi, sonuna element əlavə etmə mexanizmini izah edə bilərsinizmi?

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

Proqram icra edilərkən yığımda hansı məlumatlar və necə yerləşdirilir?

Junior — Middle
166

Layihələrinizdə hansı keşik metodlarından istifadə etməyi üstün tutursunuz və niyə?

Junior — Middle
166

Materialized view ilə adi view arasındakı fərq nədir?

Middle
RWB
165

Əlaqəli siyahının quruluşuna hansı komponentlər daxildir?

Junior — Middle
165

Map verilənlər struktüründə açar ilə element əlavə etmə əməliyyatının icra vaxtı necə müəyyən edilir?

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

Niyə ümumiyyətlə iş parçaları üçün başlanğıc yığını ölçüsü 2 MB olaraq təyin edilir?

Junior — Middle
165

Layihələrinizdə paralel tapşırıqları idarə etmək üçün ErrGroup strukturundan istifadə etdinizmi?

Junior — Middle
165

Tətbiqinizdə hansı qeyri-adi və ya standart olmayan paketlərdən istifadə etmisiniz?

Junior — Middle
165

Niyə dilimin artımı yavaşlayır və niyə davamlı olaraq iki dəfə artıra bilmirik?

Middle
RWB
165

GitLab CI/CD iş prosesində əmrlər harada icra olunur?

Junior — Middle
165

Proqram təminatı dizaynında SOLID prinsiplərinə riayət edilməməsinin nəticələri nə ola bilər?

Junior — Middle
Zonatelecom
165
/413