Sobes.tech

Golang

Kas yra GOMAXPROCS? Kas nutiks, jei nustatysite labai didelį skaičių?

195

Kas yra kanalai Go? Kokie yra? Kaip jie sukonstruoti po gaubtu?

194

// Atnaujindami užsakymą, turime siųsti užsakymo duomenis kelioms paslaugoms (trečiųjų šalių API) // paslaugų skaičius auga (gali būti tūkstančiai+) // parašėme kodą, pradžioje viskas vyko gerai, bet laikui bėgant mūsų paslauga pradėjo naudoti daug atminties func (s *orderService) SendOrder(ctx context.Context, hosts []string, order Order) { for i := 0; i < len(hosts); i++ { go func() { // Įsivaizduokite, kad tai yra ilgas tinklo iškvietimas response, err := s.httpClient.Send(ctx, hosts[i], order) if err != nil { s.logger.Error(ctx, "nepavyko išsiųsti", err) return } s.logger.Info(ctx, "sėkmė", response) }() } }

Middle+
194

Kas yra context Go? Kuo skiriasi context.WithTimeout nuo context.WithDeadline?

191

Kokie būdai yra eilutėms sujungti Go? Kuo skiriasi + ir strings.Builder?

191

Kas yra pesimistinis blokavimas?

190

Kaip buvo įgyvendintas duomenų talpinimas į talpyklą? Kokia talpyklos politika buvo naudojama?

187

Kaip užtikrinti, kad visi užsakymo įvykiai patektų į vieną Kafka partition?

187

Kas nutiks Redis ir klientams, jei Redis yra pilnas ir išstūmimo politikos yra išjungtos?

185

Kas yra slice? Kas yra po slice? Kaip veikia append funkcija?

184

Kas yra Dead Letter Queue (DLQ)?

184

// prekių lentelė: // ID | cnt_view // ----------- // 1 | 100 // du naudotojai pradėjo žiūrėti prekę su ID = 1 vienu metu // ir mūsų duomenų bazėje buvo paleistos 2 paralelinės operacijos // koks bus rezultatas? 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

Kas yra Mutex ir RWMutex? kuo jie skiriasi?

175

Kaip apskaičiuotas 25% skaičius? Kodėl ne 20 ar 30?

174

Kaip veikia šiukšlių surinkėjas Go? Kada jis įsijungia? Ar galima jį paleisti rankiniu būdu?

173

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

Kas yra eilutės Go? Ką jos atstovauja po gaubtu?

169

Kokie profiliavimo įrankiai yra Go?

167

Ar diegiant Kafka buvo niuansų ir sunkumų? Ar tai buvo jūsų pirmoji diegimo patirtis?

166

Kas yra struktūrų išlyginimas Go? Kaip optimizuoti struktūros laukus atmintyje?

166
/3