¿Decidiste escribir WaitGroup porque apareció un canal o porque decidiste escribir goroutines para algo?
Golang
¿Qué dice la convención de Go sobre el uso de WaitGroup y los tipos devueltos (aceptando interfaces, devolviendo tipos concretos)?
// El cliente pasa un objeto (Task) con datos para realizar la tarea, // en nuestro ejemplo usaremos una estructura vacía. // // El manejador puede procesar no más de N tareas simultáneamente, // y no más de X tareas pueden estar en cola para su procesamiento. // Si no hay espacio en la cola, se devuelve un error al cliente de inmediato. // // La tarea se procesa si hay procesadores libres disponibles. // Simulamos la duración del procesamiento con time.Sleep(5*time.Second). // Tan pronto como una tarea termina, tomamos la siguiente de la cola. // Si la cola está vacía, esperamos nuevas tareas de los clientes. // // Con un asterisco: ampliar la estructura Task y obtener los estados de las tareas mediante una consulta separada. 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 { // implementación pendiente } type Task interface { Do() }
¿Qué tecnología/herramienta utilizas?
¿Qué tipos de índices en PostgreSQL, además de B-tree, has utilizado?
¿Cómo podríamos manejar externamente los errores que ocurren en las tareas si quisiéramos hacerlo?
¿Cuál fue tu papel en la toma de decisiones arquitectónicas durante el desarrollo del servicio de búsqueda?
¿Has utilizado CTE? Cuéntame qué es.
¿Has utilizado contextos en la práctica? Cuéntame.
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() }
¿Se puede crear un índice solo en la réplica, pero no en el maestro?
¿Todavía hay carreras de datos en la implementación? ¿Específicamente en el método Keys, que devuelve una rebanada de claves?
¿Quieres escribir un pool de trabajadores clásico?
¿En qué se diferencia SELECT FOR UPDATE de SELECT FOR SHARE?
Tipos de replicación en PostgreSQL
¿Usaste funciones de ventana?
¿El trabajo solo está permitido dentro del territorio de la Federación Rusa?
¿Tiene experiencia en escribir operadores de Kubernetes, administrar operadores, Helm Chart?
¿Por qué no usaron Redis en lugar de almacenarlo en la base de datos?
¿Qué documentos se almacenaban en ELK?