Sobes.tech

Golang

Existe alguma forma de gerir e ajustar o coletor de lixo stop-the-world em Go?

Middle+
WildberriesWildberries
115

// 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+
Lenta Tech
115

Já teve que lidar com tarefas arquitetónicas? Como foram tomadas as decisões arquitetónicas?

Senior
WildberriesWildberries
115

Por que precisamos interromper o contexto na estrutura? Por que terminar os trabalhadores? Queremos interromper o método Stop.

Senior
Cloud.ru
115

Por que está atualmente à procura de um novo emprego? O que não gosta no seu atual emprego?

Middle+
АЙ-ТЕКОАЙ-ТЕКО
115

Para onde vão as goroutines ao serem criadas — para a fila local ou global do agendador Go?

Senior
Базис
115

Como você realizou a escalabilidade dos consumidores Kafka? Com base em quais critérios?

Middle+
ВайлдберрисВайлдберрис
115

[nome] perguntou: conte-me sobre as primitivas de sincronização em GoLang.

Middle
RWB
115

De que forma os tempos de espera influenciam a redução da carga na análise?

Intern
Озон банк
115

O que é VACUUM no PostgreSQL?

Middle+
Magnit Tech
115

Qual foi o projeto na empresa? Que microserviço havia lá?

Senior
wilix
115

Índices no PostgreSQL: o que são, que tipos conhece, por que o B-tree é melhor que Hash?

Senior
Магнит Тех
115

É possível escrever numa mesma map a partir de diferentes goroutines ao mesmo tempo? O que acontecerá?

Senior
А7
115

O que é a Load Average, como verificá-la e a que deve prestar atenção?

Senior
VKVK
115

O que será importante para ti ao escolher um novo local de trabalho?

Senior
VKVK
115

Como influenciou a mudança do processo com análise?

Senior
AvitoAvito
115

Como lidou com a situação em que as contas durante as transferências eram atribuídas a diferentes shards?

Senior
РамблерРамблер
115

Como converter um número para o sistema binário?

Senior
Лига Цифровой ЭкономикиЛига Цифровой Экономики
115

tipo Response interface{} tipo Backend interface { Invoke(ctx context.Context, req Request) (Response, error) } var _ Backend = &BackendImpl{} // addr contém ip:porta de uma instância específica func NewBackend(addr string) *BackendImpl type Balancer struct { // TODO backends []*BackendImpl index int mu sync.Mutex } var _ Backend = &Balancer{} func (b *Balancer) Invoke(ctx context.Context, req Request) (Response, error) { se len(b.backends) == 0 { return nil, fmt.Errorf("O número de backends no slice é 0") } b.mu.Lock() index := b.index se b.index + 1 == len(b.backends) { b.index = 0 index = 0 } b.mu.Unlock() resp, err := b.backends[index].Invoke(ctx, req) return resp, err } // addrs contém os endereços de todas as instâncias balanceadas func NewBalancer(addrs []string) *Balancer { // TODO backends := make([]*BackendImpl, len(addrs))

Middle
Яндекс
115

Como otimizaste as consultas na prática? O que olhas quando a mão fica lenta?

Middle+
OZONOZON
115
/412