Sobes.tech

Golang

Cum să declanșezi panica atunci când lucrezi cu un canal? Ce se întâmplă în timpul operațiilor cu un canal nil și un canal închis?

Middle
YadroYadro
83

Cum se face la nivel de Go — ideologic, pentru a trimite răspunsul utilizatorului și în același timp pentru a trimite datele în analiză?

Intern
Озон банк
83

func (p *Pool) Stop() { p.mu.Unlock() // Acum este sigur să închidem canalul close(p.tasks) // semnal către lucrători: nu vor mai fi sarcini noi, citiți restul p.wg.Wait() // așteptăm finalizarea tuturor goroutine-urilor p.cancel() // anulăm contextul, dacă e cazul fmt.Println("Pool oprit.") } // ForceStop oprește forțat toți lucrătorii fără a aștepta finalizarea sarcinilor. // Lucrătorii vor fi întrerupți imediat prin intermediul contextului. func (p *Pool) ForceStop(timeout time.Duration) { fmt.Printf("Oprire forțată a pool-ului (timeout: %v)...\n", timeout) // Blochează adăugarea de sarcini noi p.mu.Lock() p.isOpen = false p.mu.Unlock() // Închide canalul pentru ca lucrătorii să nu mai ia sarcini noi close(p.tasks) // Anulează contextul – acest lucru va întrerupe toate sarcinile în curs p.cancel() // Oferă un timp limitat pentru finalizare done := make(chan struct{}) go func() { p.wg.Wait() close(done) }() select { case <-done: fmt.Println("Pool oprit forțat (toți lucrătorii au fost terminați)") case <-time.After(timeout): fmt.Println("Pool oprit forțat (timeout, pot rămâne goroutine suspendate)") } }

Senior
Pasul LTD
83

Ce protocoale de nivel aplicație funcționează peste TCP și UDP?

Senior
AvitoAvito
83

Ce sunt replicarea, sharding-ul și partiționarea?

Middle+
Magnit Tech
83

tip Sem interfață { Lock() error //returnează o eroare dacă canalul este plin TryLock() bool // încercăm doar să blocăm, dacă reușim, returnează true Release() //eliberarea canalului Cap() int // numărul de goroutines FreeSpace() int //arată cât spațiu liber este în canal } //structură //channel - gândește-te la un buffer //capacity int //mutex

Middle
FinFrame
83

Câtă experiență comercială ai în Go?

Middle+
Штрафов нет
83

Spune-mi despre tine, experiența ta, cum ai ales direcția IT și dezvoltarea, de ce exact Go, cum ai avansat în carieră?

Senior
Себе
83

Ce sunt procesele zombie și cum să le combatem?

Middle+
VK CloudVK Cloud
83

Ce este ACID? Explică fiecare proprietate.

Middle+
Веро Трейс
83

De ce nu s-a putut construi totul pe ClickHouse și pur și simplu să se afișeze metricile pe front printr-un serviciu?

Senior
МВидео/эльдорадо
83

Povestiți despre echipă și metodologia de lucru.

Middle
YadroYadro
83

Descrieți cerințele pentru o aplicație Python + OpenGL pentru morfarea obiectelor cu un glisor.

Senior
АЙ-ТЕКОАЙ-ТЕКО
83

Ai lucrat cu arbori AST în Go? Ce dezavantaje vezi în implementarea actuală?

Junior
Позитив Технолоджис
83

Povesti despre ultimul eșec (incident în producție) — cum au găsit, cum au rezolvat, cine a rezolvat

Middle
КуперКупер
83

Cum vei lucra cu două modele în Blender dacă nu le-ai folosit niciodată?

Senior
АЙ-ТЕКОАЙ-ТЕКО
83

Ce probleme pot apărea la utilizarea triggerelor?

Senior
AvitoAvito
83

Cum sunt structurate podurile în Kubernetes? Pe ce tehnologii se bazează izolarea? Ce tipuri de namespace cunoști?

Middle+
VKVK
83

Agregatul funcționează întotdeauna la nivelul unei singure tranzacții. Ce altceva este important de știut despre agregate în DDD?

Senior
ИП Ганус Александр Андреевич
83

Cum găsești o interogare lentă în PostgreSQL și cum o optimizezi?

Middle+
Бюро 1440Бюро 1440
83
/412