GOMAXPROCS რა არის? რა მოხდება, თუ ძალიან დიდ რაოდენობას დავაყენებთ?
Golang
რა არის არხები Go-ში? რა ტიპები არსებობს? როგორ არის მოწყობილი შიგნიდან?
// როდესაც თქვენ განაახლეთ შეკვეთა, ჩვენ უნდა გავაგზავნოთ შეკვეთის მონაცემები რამდენიმე სერვისზე (მესამე მხარის API-ებზე) // სერვისების რაოდენობა იზრდება (შესაძლოა ათას+) // ჩვენ დავწერეთ კოდი, თავდაპირველად ყველაფერი კარგად მიდიოდა, მაგრამ დროთა განმავლობაში ჩვენი სერვისი დაიწყო ბევრი მეხსიერების მოხმარება func (s *orderService) SendOrder(ctx context.Context, hosts []string, order Order) { for i := 0; i < len(hosts); i++ { go func() { // წარმოიდგინეთ, რომ ეს არის გრძელი ქსელური ზარი response, err := s.httpClient.Send(ctx, hosts[i], order) if err != nil { s.logger.Error(ctx, "გაგზავნის შეცდომა", err) return } s.logger.Info(ctx, "წარმატება", response) }() } }
რა არის context in Go? რა განსხვავებაა context.WithTimeout და context.WithDeadline შორის?
რა გზები არსებობს სტრიქონების კონკატენაციისთვის Go-ში? რა განსხვავებაა + და strings.Builder-ს შორის?
რა არის პესიმისტური ბლოკირება?
როგორ განხორციელდა მონაცემების ქეშირება? რა პოლიტიკა გამოიყენებოდა ქეშირებისთვის?
როგორ დავრწმუნდეთ, რომ ყველა შეკვეთის მოვლენები ერთ Kafka განყოფილებაში მოხვდება?
თუ Redis სავსეა და პოლიტიკები გამოდევნის გამორთულია, რა მოხდება Redis და მომხმარებლებთან?
რა არის სლაისი? რა არის სლაისის ქვეშ? როგორ მუშაობს append ფუნქცია?
რა არის Dead Letter Queue (DLQ)?
// საქონლის სია: // ID | cnt_view // ----------- // 1 | 100 // ორი მომხმარებელი ერთდროულად დაიწყო პროდუქტის ნახვა, რომლის ID = 1 // და ჩვენს ბაზაში დაიწყო 2 პარალელური ტრანზაქცია // რა იქნება შედეგი? 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 და RWMutex რა არის? რა განსხვავებაა?
როგორ გამოითვალა 25%? რატომ არა 20 ან 30?
როგორ მუშაობს გო-ში ნაგვის შეგროვება? როდის იწყება? შეიძლება ხელით დაიწყოს?
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-ში? რა წარმოადგენს ისინი ბორბლის ქვეშ?
რა პროფილირების ინსტრუმენტები არსებობს Go-ში?
კაფკას დანერგვაში იყო ნიუანსები და სირთულეები? ეს თქვენი პირველი დანერგვა იყო?
რა არის სტრუქტურების გამართვა Go-ში? როგორ ოპტიმიზიროთ სტრუქტურის ველები მეხსიერებაში?