Sobes.tech

Golang

Ne önbelleğe alındı? Bazı dizinler mi?

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

/* Bir kaynaktan bir tüketiciye veri aktarmamız gerekiyor. Kaynak, verileri küçük paketler halinde (~on kayıt) verirken, tüketici daha büyük paketlerle daha verimli çalışır. Gerçek bir örnek, Kafka türü kuyruklardan Clickhouse veritabanına veri aktarımıdır. Kaynak: - Neredeyse sonsuz. - Kaynak, bir Next çağrısında hiçbir zaman MaxItems'ten fazla kayıt döndürmez. - Bir "oturum" (bir Pipe fonksiyon çağrısı) içinde, kaynak her Next çağrısında yeni veriler döndürür. - Ancak, yeniden başlatıldıktan sonra, kaynak önceki "onaylanmış" konumdan, cookie ile belirlenen noktadan başlar. Bu nedenle, Next'in döndürdüğü her cookie değeri, veriler alıcıya kaydedildikten sonra, aynı sırayla Commit çağrısı ile onaylanmalıdır. Alıcı: - Aynı anda MaxItems'ten fazla işleyemez. Temel seviye: Gerekli olan, func Pipe(p Producer, c Consumer) error fonksiyonunu uygulamaktır, bu fonksiyon kaynaktan veri okur, bunları MaxItems boyutunda bir tamponda gruplar ve alıcıya kaydeder, ve ardından kaynaktaki ilerlemeyi onaylar. */ const MaxItems = 9999 type Producer interface { // Next,: // - işlenmek üzere öğe paketleri döner // - işleme tamamlandığında onaylanacak cookie // - hata Next() (items []any, cookie int, err error) // Commit, işlenmiş veri paketini işaretlemek için kullanılır 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

İlgili olduğunuz şirketleri veya tedarikçileri listeleyebilir misiniz?

Junior — Middle
166

Son iş yerinizden bahsedin: ne yapıyordunuz, hangi teknolojileri kullanıyordunuz, zorlayıcı görevler nelerdi?

Middle
OZONOZON
166

Go'da dilim nedir?

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

gRPC'de kullanılan temel çağrı türlerini listeleyebilir misiniz?

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

Kapalı mod ayarlı bir kanaldan bilgi almak izinli midir?

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

Kafka'da belirli bir bölüme doğrudan veri yazmak mümkün mü, hash için anahtar kullanılmadan?

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

Bir veri yapısının, örneğin bir liste veya dizi, sonuna öğe ekleme mekanizmasını açıklayabilir misiniz?

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

Program çalıştırılırken yığında hangi veriler ve nasıl yerleştirilir?

Junior — Middle
166

Projelerinizde hangi önbellekleme yöntemlerini kullanmayı tercih ediyorsunuz ve neden?

Junior — Middle
166

Materialized view ile normal view arasındaki fark nedir?

Middle
RWB
165

Bağlı listenin yapısına hangi bileşenler dahildir?

Junior — Middle
165

Map veri yapısına anahtar ile öğe ekleme işleminin çalışma süresi nasıl belirlenir?

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

İş parçalarının başlangıç yığını boyutu neden genellikle 2 MB olarak belirlenir?

Junior — Middle
165

Projelerinizde paralel görevleri yönetmek için ErrGroup yapısını hiç kullandınız mı?

Junior — Middle
165

Uygulamanızda kullandığınız alışılmadık veya standart olmayan paketler nelerdir?

Junior — Middle
165

Neden dilim büyümesi yavaşlıyor ve sürekli ikiye katlamaya devam edilemiyor?

Middle
RWB
165

GitLab CI/CD çalışma sürecinde komutlar hangi noktada çalıştırılır?

Junior — Middle
165

Yazılım tasarımında SOLID ilkelerine uyulmaması durumunda ne gibi sonuçlar ortaya çıkabilir?

Junior — Middle
Zonatelecom
165
/413