Rozhodl jste se napsat WaitGroup, protože se objevil kanál, nebo jste se rozhodli napsat goroutines pro něco?
Golang
Co říká konvence Go o používání WaitGroup a vracených typech (přijímání rozhraní, vracení konkrétních typů)?
// Klient předává vstupní objekt (Task) s daty pro vykonání úkolu, // v našem příkladu použijeme prázdnou strukturu. // // Řadič může zpracovat maximálně N úkolů současně, // a ne více než X úkolů může být ve frontě na zpracování. // Pokud není místo ve frontě, ihned vrátíme klientovi chybu. // // Úkol je zpracováván, pokud jsou k dispozici volní zpracovatelé. // Simulujeme dobu zpracování pomocí time.Sleep(5*time.Second). // Jakmile je úkol dokončen, vezmeme další z fronty. // Pokud je fronta prázdná, čekáme na nové úkoly od klientů. // // S hvězdičkou: rozšířit strukturu Task a získat stavy úkolů přes samostatný dotaz. 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 { // implementace čeká } type Task interface { Do() }
Jakou technologii/nástroj používáš?
Jaké typy indexů v PostgreSQL jste používali kromě B-tree?
Jak bychom mohli externě zpracovávat chyby, které se v úlohách vyskytují, pokud bychom to chtěli udělat?
Jaká byla vaše role při přijímání architektonických rozhodnutí při vývoji vyhledávací služby?
Použil jsi CTE? Vyprávěj, co to je.
Použil jsi kontexty v praxi? Vyprávěj.
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() }
Lze vytvořit index pouze na repliku, nikoli na masteru?
Existují v implementaci ještě datové závody? Konkrétně v metodě Keys, která vrací řez klíčů?
Chcete napsat klasický worker pool?
Jaký je rozdíl mezi SELECT FOR UPDATE a SELECT FOR SHARE?
Typy replikace v PostgreSQL
Používal jste funkce oken?
Je práce povolena pouze na území Ruské federace?
Máte zkušenosti s psaním Kubernetes operátorů, správou operátorů, Helm Chart?
Proč jste místo toho, abyste ho ukládali do databáze, nepoužili Redis?
Jaké dokumenty byly uloženy v ELK?