Golang
Çok iş parçacıklı bir ortamda dilimlerle çalışırken iş parçacığı güvenliğini sağlamak için hangi yaklaşımlar kullanılabilir?
Programlama dilinde nil dilim ile çalışırken hangi işlemler yapılabilir?
Çözümler oluştururken hangi sistem tasarım metodlarını tercih ediyorsun?
Linux sistemi için bir betik yazarak çözebildiğiniz zor bir görevden bahsedin
Önbellekte saklanan veri miktarını nasıl düzenleyebilirsiniz?
Takımda tek Backend uzmanı rolünü üstlenmeye hazır olmak
Go'da sync.Map türünü kullanmanın temel nedeni nedir?
Birim testlerinde iyi uygulamalar ve antipatternler nelerdir? Testlerin iyi olduğunu nasıl anlayabiliriz?
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 } Der Fehler bei der Kompilierung # command-line-arguments ./main.go:39:32: Syntaxfehler: unerwarteter Zeilenumbruch, es wurde { nach der if-Anweisung erwartet
Farklı servisler arasındaki etkileşimleri gerçekleştirirken zorluklarla karşılaştınız mı?
Bir programlama dilinde fonksiyona dilim (slice) nasıl aktarılır?
Saga deseni nedir?
Neden Testcontainers almadılar?
/* 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 }
(id PRIMARY KEY, data JSON) ile bir tablo, PostgreSQL dizini anahtar arama için oldukça iyi mi?
Sanallaştırma ile konteynerleştirmenin farkı nedir?
Mevcut bir fonksiyonun içine başka bir küme paranteği ile kod bloğu eklenebilir mi?
Önceki görevinde görevleri nasıl belirlediniz ve formüle ettiniz?
Son projenizde final kod nasıl üretim ortamına entegre edildi?
Bir programlama dilinde yeni bir öğe ekleme işlemi nasıl çalışır?