Sobes.tech

Golang

Une goroutine peut-elle écrire directement dans une autre goroutine via un canal tamponné?

Senior
168

Avez-vous des questions pour moi?

Senior
167

Que dit la convention Go sur l'utilisation de WaitGroup et les types de retour (acceptant des interfaces, retournant des types concrets) ?

Senior
166

// Le client transmet un objet (Task) avec des données pour exécuter la tâche, // dans notre exemple, nous utiliserons une structure vide. // // Le gestionnaire peut traiter au maximum N tâches simultanément, // et pas plus de X tâches peuvent être en file d'attente. // Si l'espace dans la file d'attente est plein, une erreur est renvoyée immédiatement au client. // // La tâche est prise en charge si des processeurs libres sont disponibles. // Nous simulons la durée du traitement avec time.Sleep(5*time.Second). // Dès qu'une tâche est terminée, nous prenons la suivante dans la file. // Si la file est vide, nous attendons de nouvelles tâches des clients. // // Avec une étoile : compléter la structure Task et obtenir les statuts des tâches via une requête séparée. 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 { // implémentation en attente } type Task interface { Do() }

Senior
164

Quelle technologie/outil utilises-tu?

Senior
164

Quels types d'index dans PostgreSQL, en plus de B-tree, avez-vous utilisés?

Senior
163

Quel était votre rôle dans la prise de décisions architecturales lors du développement du service de recherche?

Senior
161

Comment pourrions-nous gérer en externe les erreurs qui se produisent dans les tâches si nous voulions le faire?

Senior
161

Avez-vous utilisé CTE ? Racontez ce que c'est.

Senior
160

As-tu utilisé des contextes en pratique ? Raconte-moi.

Senior
158

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() }

Senior
157

Y a-t-il encore des courses de données dans l'implémentation ? Plus précisément dans la méthode Keys, qui retourne une tranche de clés ?

Senior
156

Peut-on créer un index uniquement sur la réplica, mais pas sur le maître?

Senior
156

Veux-tu écrire un pool de travailleurs classique?

Senior
156

Quelle est la différence entre SELECT FOR UPDATE et SELECT FOR SHARE?

Senior
153

Types de réplication dans PostgreSQL

Senior
152

Avez-vous de l'expérience dans l'écriture d'opérateurs Kubernetes, l'administration d'opérateurs, Helm Chart?

Senior
151

Le travail est-il autorisé uniquement sur le territoire de la Fédération de Russie?

Senior
150

Avez-vous utilisé des fonctions de fenêtre?

Senior
150

À quoi sert le plus souvent Consul dans une architecture de microservices?

Senior
149
/7