Решихте да напишете WaitGroup, защото се появи канал или защото решихте да напишете goroutines за нещо?
Golang
Какво казва конвенцията на Go за използването на WaitGroup и типовете за връщане (приемане на интерфейси, връщане на конкретни типове)?
// Клиентът предава входен обект (Task) с данни за изпълнение на задачата, // в нашия пример ще използваме празна структура. // // Мениджърът може да обработва не повече от N задачи едновременно, // и не повече от X задачи могат да бъдат поставени в опашката за обработка. // Ако няма място в опашката, веднага връщаме грешка на клиента. // // Задачата се взема за обработка, ако има свободни обработващи. // Имитираме продължителността на обработката чрез time.Sleep(5*time.Second). // Веднага след като една задача приключи, взимаме следващата от опашката. // Ако опашката е празна, чакаме нови задачи от клиентите. // // С звездичка: допълнете структурата Task и получавайте статусите на задачите чрез отделен заявка. 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 { // очаква се реализация } type Task interface { Do() }
Каква технология/инструмент използваш?
Какви типове индекси има в PostgreSQL освен B-Tree?
Как бихме могли да обработваме външно грешките, които се случват в задачите, ако искахме да го направим?
Каква беше вашата роля при вземането на архитектурни решения при разработването на търсачката?
Използвали ли сте CTE? Разкажете какво е.
Използвал ли си контексти на практика? Разкажи.
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() }
Може ли да създадем индекс само на репликата, а не на майстора?
Има ли още състезания с данни в реализацията? Конкретно в метода Keys, който връща слайс от ключове?
Искаш ли да напишеш класически worker pool?
Каква е разликата между SELECT FOR UPDATE и SELECT FOR SHARE?
Видове репликация в PostgreSQL
Използвали ли сте функции на прозорец?
Дали е разрешена работата само в територията на Руската федерация?
Имали ли сте опит с писане на Kubernetes оператори, администриране на оператори, Helm Chart?
Защо не използвахте Redis вместо съхранение в базата данни?
Какви документи се съхраняваха в ELK?