Sobes.tech

Golang

Čo je GOMAXPROCS? Čo sa stane, ak nastavíte veľmi veľké číslo?

199

Čo sú to kanály v Go? Aké existujú? Ako sú štruktúrované pod kapotou?

194

// Pri aktualizácii objednávky musíme odoslať údaje o objednávke na niekoľko služieb (API tretích strán) // počet služieb rastie (môže byť tisíce+) // napísali sme kód, na začiatku všetko fungovalo dobre, ale časom naša služba začala spotrebovávať veľa pamäte func (s *orderService) SendOrder(ctx context.Context, hosts []string, order Order) { for i := 0; i < len(hosts); i++ { go func() { // Predstavme si, že je to dlhé sieťové volanie response, err := s.httpClient.Send(ctx, hosts[i], order) if err != nil { s.logger.Error(ctx, "neúspešné odoslanie", err) return } s.logger.Info(ctx, "úspešné", response) }() } }

Middle+
194

Čo je to pesimistické blokovanie?

192

Aké spôsoby existujú na spojenie reťazcov v Go? Aký je rozdiel medzi + a strings.Builder?

191

Čo je to context v Go? Čím sa líši context.WithTimeout od context.WithDeadline?

191

Čo sa stane s Redisom a klientmi, ak je Redis plný a politiky vyraďovania sú vypnuté?

189

Ako bolo implementované cacheovanie dát? Aká politika cacheovania bola použitá?

189

Ako zabezpečiť, aby všetky udalosti jednej objednávky išli do jednej partície Kafka?

189

Čo je Dead Letter Queue (DLQ)?

184

Čo je to slice? Čo je pod kapotou slice-a? Ako funguje funkcia append?

184

// tabuľka tovarov: // ID | cnt_view // ----------- // 1 | 100 // dvaja používatelia začali súčasne sledovať tovar s id = 1 // a v našej databáze boli spustené 2 paralelné transakcie // aký bude výsledok? 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

Ako bola vypočítaná hodnota 25 %? Prečo nie 20 alebo 30?

176

Čo je Mutex a RWMutex? Čím sa líšia?

175

Ako deluje zberač smeti v Go? Kdaj se zažene? Ali ga je mogoče zagnati ročno?

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

Čo sú reťazce v Go? Čo predstavujú pod kapotou?

169

Aké nástroje na profilovanie sú v Go?

167

Čo je zarovnanie štruktúr v Go? Ako optimalizovať polia štruktúr v pamäti?

166

Boli pri uvádzaní Kafka nejaké nuansy a ťažkosti? Bola to vaša prvá skúsenosť s implementáciou?

166
/3