Sobes.tech

Τι είναι το GOMAXPROCS; Τι θα συμβεί αν ορίσουμε έναν πολύ μεγάλο αριθμό;

199

Τι είναι τα κανάλια στο Go; Ποια υπάρχουν; Πώς είναι δομημένα στο εσωτερικό;

194

// Κατά την ενημέρωση μιας παραγγελίας, πρέπει να στείλουμε τα δεδομένα της παραγγελίας σε πολλαπλές υπηρεσίες (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) }() } }

Middle+
194

Τι είναι ο απαισιόδοξος αποκλεισμός;

192

Ποιοι τρόποι υπάρχουν για τη σύνδεση συμβολοσειρών στο Go; Ποια είναι η διαφορά μεταξύ + και strings.Builder;

191

Πώς υλοποιήθηκε η προσωρινή αποθήκευση δεδομένων; Ποια πολιτική cache χρησιμοποιήθηκε;

191

Τι είναι το context στο Go; Ποια είναι η διαφορά μεταξύ των context.WithTimeout και context.WithDeadline;

191

Τι θα συμβεί με το Redis και τους πελάτες αν το Redis είναι γεμάτο και οι πολιτικές εκτόπισης είναι απενεργοποιημένες;

189

Πώς να κάνετε ώστε όλα τα γεγονότα μιας παραγγελίας να πηγαίνουν σε ένα μόνο partition του Kafka;

189

Τι είναι η ουρά νεκρών γραμμάτων (DLQ);

184

Τι είναι ένα slice; Τι συμβαίνει κάτω από το καπό ενός slice; Πώς λειτουργεί η λειτουργία append;

184

// πίνακας αγαθών: // 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() }

Middle+
178

Πώς υπολογίστηκε το 25%; Γιατί όχι 20 ή 30;

176

Τι είναι το Mutex και το RWMutex; Ποια είναι η διαφορά;

175

Πώς λειτουργεί ο συλλέκτης απορριμμάτων στο Go; Πότε ενεργοποιείται; Μπορεί να ενεργοποιηθεί χειροκίνητα;

175

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 }

Middle+
172

Τι είναι οι συμβολοσειρές στο Go; Τι αντιπροσωπεύουν κάτω από το καπό;

169

Ποια εργαλεία προφίλ υπάρχουν στο Go;

167

Τι είναι η ευθυγράμμιση δομών στο Go; Πώς να βελτιστοποιήσετε τα πεδία της δομής στη μνήμη;

166

Υπήρχαν λεπτομέρειες και δυσκολίες στην υλοποίηση του Kafka; Ήταν η πρώτη σας εμπειρία υλοποίησης;

166
/3