GOMAXPROCS nədir? Çox böyük bir ədəd təyin etsək nə olar?
Golang
Go-da kanallar nədir? Hansılar var? Daxili quruluşu necədir?
// Sifariş yeniləndikdə, sifariş məlumatlarını bir neçə xidmətə (üçüncü tərəf API-ləri) göndərməliyik // xidmətlərin sayı artır (minlərlə+ ola bilər) // kodu yazdıq, əvvəl hər şey yaxşı gedirdi, amma zamanla xidmətimiz çox yaddaş istifadə etməyə başladı func (s *orderService) SendOrder(ctx context.Context, hosts []string, order Order) { for i := 0; i < len(hosts); i++ { go func() { // Bu uzun müddətli şəbəkə çağırışı olduğunu düşünün response, err := s.httpClient.Send(ctx, hosts[i], order) if err != nil { s.logger.Error(ctx, "göndərmədə xəta", err) return } s.logger.Info(ctx, "uğur", response) }() } }
Go-da context nədir? context.WithTimeout və context.WithDeadline arasındakı fərq nədir?
Go-da sətirləri birləşdirməyin hansı yolları var? + və strings.Builder arasında nə fərq var?
Pessimist bloklama nədir?
Məlumatların keşlənməsi necə həyata keçirildi? Hansı keş siyasəti istifadə olundu?
Bir sifarişə aid bütün hadisələrin Kafka-da bir partiyaya düşməsini necə təmin etmək olar?
Redis dolu və çıxarış siyasətləri deaktiv edilibsə, Redis və müştərilərlə nə baş verəcək?
Slice nədir? Slice-in alt tərəfində nə var? append funksiyası necə işləyir?
Ölü Məktub Növbəsi (DLQ) nədir?
// məhsullar cədvəli: // ID | cnt_view // ----------- // 1 | 100 // iki istifadəçi eyni vaxtda id = 1 olan məhsulu izləməyə başladı // və verilənlər bazamızda 2 paralel tranzaksiya başlatıldı // nəticə nə olacaq? 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() }
Mutex və RWMutex nədir? Onlar necə fərqlənir?
25%-lik rəqəm necə hesablandı? Niyə 20 və ya 30 deyil?
Go-da tullantı toplayıcısı necə işləyir? Nə vaxt işə düşür? Əl ilə başlatmaq olarmı?
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 sətirlər nədir? Onlar nəyi təmsil edir?
Go-da profil üçün hansı alətlər mövcuddur?
Kafka-nın tətbiqində nüanslar və çətinliklər oldumu? Bu sizin ilk tətbiq təcrübənizdirmi?
Go-da strukturların hizalanması nədir? Struktur sahələrini yaddaşda necə optimallaşdırmaq olar?