Sobes.tech

Golang

O que é GOMAXPROCS? O que acontece se definir um número muito grande?

199

O que são canais em Go? Quais existem? Como funcionam por baixo dos panos?

194

// Ao atualizar um pedido, devemos enviar os dados do pedido para vários serviços (APIs de terceiros) // o número de serviços está a crescer (pode ser milhares+) // escrevemos o código, inicialmente tudo correu bem, mas com o tempo o nosso serviço começou a consumir muita memória func (s *orderService) SendOrder(ctx context.Context, hosts []string, order Order) { for i := 0; i < len(hosts); i++ { go func() { // Imaginemos que isto é uma chamada de rede longa response, err := s.httpClient.Send(ctx, hosts[i], order) if err != nil { s.logger.Error(ctx, "falha ao enviar", err) return } s.logger.Info(ctx, "sucesso", response) }() } }

Middle+
194

O que é bloqueio pessimista?

192

Quais são as formas de concatenar strings em Go? Qual é a diferença entre + e strings.Builder?

191

O que é o contexto em Go? Qual é a diferença entre context.WithTimeout e context.WithDeadline?

191

O que acontecerá com o Redis e os clientes se o Redis estiver cheio e as políticas de expulsão estiverem desativadas?

189

Como foi implementado o cache de dados? Qual política de cache foi usada?

189

Como fazer com que todos os eventos de um mesmo pedido sejam direcionados para uma única partição Kafka?

189

O que é a Dead Letter Queue (DLQ)?

184

O que é um slice? O que está por trás de um slice? Como funciona a função append?

184

// tabela de produtos: // ID | cnt_view // ----------- // 1 | 100 // dois utilizadores começaram a ver o produto com id = 1 ao mesmo tempo // e na nossa base de dados foram lançadas 2 transações em paralelo // qual será o resultado? 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

Como foi calculado o valor de 25%? Por que não 20 ou 30?

176

O que são Mutex e RWMutex? Em que se diferenciam?

175

Como funciona o coletor de lixo em Go? Quando é iniciado? Pode ser iniciado manualmente?

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 que são strings em Go? O que elas representam por baixo do capô?

169

Que ferramentas de profiling existem no Go?

167

O que é o alinhamento de estruturas em Go? Como otimizar os campos da estrutura na memória?

166

Houve nuances e dificuldades na implementação do Kafka? Foi a sua primeira experiência de implementação?

166
/3