Sobes.tech

Golang

Cu ce biblioteci se scriu metricile în Go?

244

Ce metrici? Cu ce instrumente vom scrie aceste metrici?

222

Pentru ce este scris acest cod? Ce problemă tehnică de afaceri rezolvă?

217

// Sarcina 4 // Într-un serviciu CRUD "tipic", la un moment dat, unele metode au început să funcționeze lent și serviciul a început să dea timeout. // Serviciul constă din: // * Load Balancer de aplicație (L7) - primirea cererilor intrate și terminarea TLS // * Backend (rest, java/kotlin sau golang) - procesarea cererilor intrate și logica de afaceri // * Bază de date (postgres) - stocarea și procesarea interogărilor SQL // Cum să acționezi corect pentru a înțelege cauza problemelor și a dezvolta soluții pentru a îmbunătăți situația?

180

// Problema 3 // Descrieți ce problemă rezolvă acest cod // Ce probleme există în această soluție? // Cum ați rescrie acest cod?

170

Ce să faci cu baza de date și load balancer-ul în cazul problemelor de performanță?

160

Cum se accesează profilerul pprof pe serverul de producție?

158

Cum funcționează partiționarea în PostgreSQL la nivel de bază?

156

// Problema 3 // Descrieți ce problemă rezolvă acest cod // Ce probleme există în această soluție? // Cum ați rescrie acest cod? var c int type Trace struct { // Câmpuri aici } type Sender interface { Send(Trace) } func Do(sender Sender, tr Trace) { c++ if c == 100 { sender.Send(tr) c = 0 } }

148

Ce indici ai folosit la muncă? Ce ai aplicat în practică? La Wildberries?

145

Ce vei face când prioritățile din echipa ta se schimbă în fiecare zi și apar sarcini urgente noi?

137

Ce indecși folosești în PostgreSQL?

136

Cum să faci Increaser universal — să nu fie legat de numărul 100?

135

Pe ce grafic ați văzut problema la utilizarea pprof?

133

Ce probleme există în codul cu contorul global? Cum se remediază?

131

// Problema 3 // Descrieți ce sarcină rezolvă acest cod // Ce probleme există în această soluție? // Cum ați rescrie acest cod? var c int var mu sync.RWMutex type Trace struct { // Câmpuri aici } type Sender interface { Send(Trace) } func Do(sender Sender, tr Trace) { mu.Lock() defer mu.Unlock() c++ if c == 100 { go func() { sender.Send(tr) }() c = 0 } }

125

func normalize2(str []rune) []rune { result := str[:0] for val := range str { if val != ' ' { result = append(re) } } l, r := 0, 0 isSpace := false for i := 0, i < len(str); i++ { val := string(str[i]) if val == " " { if isSpace { continue } else { str[r] = val r++ isSpace = true } } else { str[r] = val r++ isSpace = false } } return str[:r] }

122

Poți să povestești cum ai proiectat și implementat API-urile REST și gRPC pentru serviciile interne și externe ale platformei?

119

Poate Increaser să devină o implementare a Sender? În ce constă diferența logică dintre Increaser și Sender?

116
/2