Ce spune convenția Go despre utilizarea WaitGroup și tipurile de returnare (acceptarea interfețelor, returnarea tipurilor specifice)?
Golang
Ai decis să scrii WaitGroup pentru că a apărut un canal sau pentru că ai decis să scrii goroutines pentru ceva?
Aveți întrebări pentru mine?
Poți descrie ce folosești pentru a citi canalul în goroutine-ul lucrătorilor?
Poate o goroutine să scrie direct într-o altă goroutine pe un canal tamponat?
Vrei să scrii un pool de workeri clasic?
Ce tehnologie/unelte folosești?
Ce tipuri de indecși sunt în PostgreSQL în afară de B-tree?
// Clientul transmite un obiect (Task) cu date pentru executarea sarcinii, // în exemplul nostru vom folosi o structură goală. // // Scheduler-ul poate procesa nu mai mult de N sarcini simultan, // și nu mai mult de X sarcini pot fi puse în coadă pentru procesare. // Dacă nu există loc în coadă, se returnează imediat o eroare clientului. // // Sarcina este preluată pentru procesare dacă există procesatoare libere. // Simulăm durata procesării cu time.Sleep(5*time.Second). // De îndată ce o sarcină s-a terminat, luăm următoarea din coadă. // Dacă coada este goală, așteptăm sarcini noi de la clienți. // // Cu un asterisc: extindeți structura Task și obțineți starea sarcinilor printr-o solicitare separată. package scheduler type Scheduler interface { AddTask(t Task) error Close() } type scheduler struct { queue chan Task wg sync.WaitGroup } func New(workers, queue int) Scheduler { // implementare în așteptare } type Task interface { Do() }
Care a fost rolul tău în luarea deciziilor arhitecturale în timpul dezvoltării serviciului de căutare?
func New(workers, queue, int) Scheduler { s := &scheduler { queue := make(chan Task, queue) for i := 0; i < workers; i++ { wg.Add(1) go func() { defer wg.Done() for task := range s.queue { task.Do() } }() } } return s } func (s *scheduler) Close() { close(s.queue) s.wg.Wait() } type Task interface { Do() }
Ai folosit CTE? Spune-mi ce este.
Cum am putea gestiona extern erorile care apar în sarcini, dacă am dori să o facem?
Ai folosit contexte în practică? Spune-mi.
Este permisă munca doar pe teritoriul Federației Ruse?
Care este diferența dintre SELECT FOR UPDATE și SELECT FOR SHARE?
Se poate crea un index doar pe replică, dar nu pe master?
Mai există curse de date în implementare? În mod specific în metoda Keys, care returnează o felie de chei?
Tipuri de replicare în PostgreSQL
Aveți experiență în scrierea de operatori Kubernetes, administrarea operatorilor, Helm Chart?