GOMAXPROCS nedir? Çok büyük bir sayı belirlenirse ne olur?
Golang
Go'da kanallar nedir? Hangi türleri var? İç yapısı nasıldır?
// Sipariş güncellenirken, sipariş verilerini birkaç hizmete (üçüncü taraf API'leri) göndermemiz gerekiyor // hizmet sayısı artıyor (binlerce+ olabilir) // kodu yazdık, başlangıçta her şey iyi gidiyordu, ancak zamanla hizmetimiz çok fazla bellek tüketmeye başladı func (s *orderService) SendOrder(ctx context.Context, hosts []string, order Order) { for i := 0; i < len(hosts); i++ { go func() { // Uzun süren bir ağ çağrısı olduğunu hayal edin response, err := s.httpClient.Send(ctx, hosts[i], order) if err != nil { s.logger.Error(ctx, "gönderme başarısız", err) return } s.logger.Info(ctx, "başarılı", response) }() } }
İyimser olmayan kilitleme nedir?
Go'da dizeleri birleştirmenin hangi yolları var? + ile strings.Builder arasındaki fark nedir?
Go'da context nedir? context.WithTimeout ile context.WithDeadline arasındaki fark nedir?
Redis doluysa ve tahliye politikaları devre dışıysa Redis ve istemcilerle ne olur?
Bir siparişe ait tüm olayların Kafka'da tek bir bölüme gitmesini nasıl sağlarım?
Veri önbellekleme nasıl gerçekleştirildi? Hangi önbellekleme politikası kullanıldı?
Dead Letter Queue (DLQ) nedir?
Slice nedir? Slicing'in altında ne var? append fonksiyonu nasıl çalışır?
// ürün tablosu: // ID | cnt_view // ----------- // 1 | 100 // iki kullanıcı aynı anda id = 1 olan ürünü izlemeye başladı // ve veritabanımızda 2 paralel işlem başlatıldı // sonuç ne olacak? postgresql func IncrementView(ctx context.Context, db *sql.DB, id int64) error { tx, err := db.BeginTx(ctx, nil) if err != nil { return err } defer tx.Rollback() var cnt int err = tx.QueryRowContext(ctx, "SELECT cnt_view FROM goods WHERE id = $1", id, ).Scan(&cnt) if err != nil { return err } cnt++ _, err = tx.ExecContext(ctx, "UPDATE goods SET cnt_view = $1 WHERE id = $2", cnt, id, ) if err != nil { return err } return tx.Commit() }
%25 sayısı nasıl hesaplandı? Neden 20 veya 30 değil?
Mutex ve RWMutex nedir? Aralarındaki fark nedir?
Go'da çöp toplayıcı nasıl çalışır? Ne zaman başlatılır? Manuel olarak başlatılabilir mi?
func (r *OrderRepository) GetActiveOrderIDs(ctx context.Context, offset, limit int) ([]uint32, error) { var ( res []uint32 args []interface{} ) query := `SELECT id FROM "order" WHERE is_terminated = false LIMIT $1 OFFSET $2;` args = append(args, limit, offset) rows, err := r.slave.Query(ctx, query, args...) if err != nil { return nil, err } for rows.Next() { var orderID uint32 if err = rows.Scan(&orderID); err != nil { return nil, err } res = append(res, orderID) } return res, nil }
Go'da dizeler nedir? Kaputun altında ne temsil ederler?
Go'da hangi profil araçları var?
Go'da yapı hizalaması nedir? Bellekte yapı alanlarını nasıl optimize edebilirsiniz?
Kafka'nın uygulanmasında herhangi bir nüans veya zorluklar oldu mu? Bu ilk uygulama deneyiminiz miydi?