Choisissez votre langue
Cours de programmation concurrente et réactive avancée
Plus de 2 millions d'apprenants dans le monde

Cours de programmation concurrente et réactive avancée

Maîtrisez tout le spectre de la programmation concurrente et réactive — de la visibilité mémoire et des structures de données sans verrou aux opérateurs réactifs et au renforcement pour la production. Ce cours avancé dote les ingénieurs expérimentés des modèles mentaux, des patterns et des outils nécessaires pour construire des systèmes à haut débit et tolérants aux pannes qui performent sous une charge réelle.

Dedika pour entreprises

Ce que vous allez apprendre:

  • Appliquez les primitives de synchronisation et les stratégies de verrouillage pour éliminer les dangers critiques de concurrence.

  • Concevez et sélectionnez des structures de données concurrentes avec et sans verrou pour les charges de travail à haut débit.

  • Configurez les pools de threads et les pipelines asynchrones à l'aide des frameworks d'exécuteurs, des futures et des modèles fork-join.

  • Construisez des flux réactifs avec des opérateurs de transformation, de filtrage et de récupération d'erreurs pour des flux de données résilients.

  • Contrôlez le threading à travers les pipelines réactifs en utilisant les ordonnanceurs et les opérateurs subscribeOn et observeOn.

  • Implémentez des disjoncteurs, des cloisons étanches et des limiteurs de débit pour renforcer les systèmes réactifs pour la production.

Comment vous étudiez de façon pratique Cours de programmation concurrente et réactive avancée

Comment vous pratiquez Cours de programmation concurrente et réactive avancée

Pour vous, entreprise, qui souhaitez former votre équipe

Avec Dedika pour les entreprises, le cours inclut des exercices et des exemples adaptés à votre propre activité et aux besoins spécifiques de votre entreprise.

Cliquez ici

Contenu du cours

8 Chapitres • 40 LeçonsDurée entre 4 et 360 heures (vous décidez)

Chapitre 1Voir les détails

Fondamentaux de la concurrence et modèles mentaux

  • Leçon 1 • Conditions de compétition et atomicité

    Identifie les conditions de compétition à travers les motifs vérifier-puis-agir et lire-modifier-écrire. Présente l'atomicité comme l'exigence fondamentale de correction.

  • Leçon 2 • Processus, Threads et Unités d'exécution

    Définit les processus, threads et fibres légères comme des unités d'exécution distinctes. Établit le vocabulaire utilisé tout au long du cours.

  • Leçon 3 • État partagé et visibilité mémoire

    Explique comment les threads partagent la mémoire tas et pourquoi les caches CPU provoquent des lectures obsolètes. Relie les problèmes de visibilité à des bogues réels de corruption de données.

  • Leçon 4 • Critères de correction de la concurrence

    Définit la linéarisabilité, la cohérence séquentielle et la sérialisabilité comme des modèles de correction formels. Sert de base aux décisions ultérieures de conception avec et sans verrous.

  • Leçon 5 • Interblocage, Livelock et Famine

    Analyse les trois principaux échecs de vivacité à l'aide de graphes d'allocation de ressources. Fournit des heuristiques de détection applicables à tout système concurrent.

Chapitre 2Voir les détails

Primitives de synchronisation et stratégies de verrouillage

  • Leçon 1 • Granularité du verrou et contention

    Analyse les compromis entre verrouillage grossier et fin à l'aide de mesures de débit et de latence. Présente le verrouillage par bandes (lock striping) comme une technique de réduction scalable de la contention.

  • Leçon 2 • Verrous lecture-écriture et variables conditionnelles

    Présente les verrous à lecture partagée/écriture exclusive pour les charges de travail à forte lecture. Associe les variables conditionnelles aux mutex pour la coordination attente-notification.

  • Leçon 3 • Sémaphores et barrières

    Utilise les sémaphores compteurs pour limiter les pools de ressources et les barrières cycliques pour synchroniser les phases. Associe chaque primitive à son cas d'usage canonique.

  • Leçon 4 • Éviter les pièges courants du verrouillage

    Catalogue les inversions de verrou, l'acquisition imbriquée de verrous et les fuites de verrous comme des défauts récurrents. Fournit des motifs de refactorisation pour éliminer chaque piège.

  • Leçon 5 • Mutex et verrous intrinsèques

    Couvre la sémantique du verrouillage exclusif et le comportement du verrou réentrant. Démontre les motifs corrects d'acquisition et de libération de verrou.

Chapitre 3Voir les détails

Structures de données et collections concurrentes

  • Leçon 1 • Immuabilité comme stratégie de concurrence

    Démontre comment les objets immuables éliminent complètement la synchronisation. Couvre l'immuabilité effective, la copie défensive et les structures de données persistantes.

  • Leçon 2 • Files concurrentes et deques

    Couvre les implémentations de files bloquantes et non bloquantes pour les pipelines producteur-consommateur. Compare le comportement de contre-pression des files bornées et non bornées.

  • Leçon 3 • Variables atomiques et opérations CAS

    Explique le compare-and-swap comme primitive matérielle sous-jacente aux algorithmes sans verrou. Construit des compteurs, références et références estampillées atomiques.

  • Leçon 4 • Wrappers de collections thread-safe

    Examine les wrappers synchronisés et leurs pièges d'opérations composées. Motive l'utilisation de collections concurrentes dédiées plutôt qu'un wrapping naïf.

  • Leçon 5 • Tables de hachage concurrentes et listes à saut

    Analyse le verrouillage par segment et par nœud dans les tables de hachage concurrentes. Présente les listes à saut comme une structure triée sans verrou.

Chapitre 4Voir les détails

Pools de threads et frameworks d'exécution de tâches

  • Leçon 1 • Pipelines asynchrones composables

    Enchaîne des calculs asynchrones dépendants à l'aide de futures complétables et de callbacks de continuation. Gère les erreurs et les replis dans le pipeline.

  • Leçon 2 • Architecture du framework d'exécution

    Présente l'abstraction d'exécuteur qui découple la soumission des tâches de la politique d'exécution. Associe les types d'exécuteurs aux caractéristiques des charges de travail.

  • Leçon 3 • Futures, Callables et Promesses

    Soumet des tâches Callable et récupère les résultats via Future, avec gestion de l'annulation et du délai d'attente. Présente la Promise comme le côté écriture d'un future.

  • Leçon 4 • Fork-Join et vol de travail

    Implémente le parallélisme diviser-pour-régner à l'aide du framework fork-join. Explique l'ordonnancement par vol de travail et ses avantages en termes de débit.

  • Leçon 5 • Dimensionnement et optimisation des pools de threads

    Dérive des formules de taille de pool pour les tâches liées au CPU et aux E/S en utilisant la loi de Little. Couvre la surveillance de la profondeur de file et l'utilisation des threads.

Chapitre 5Voir les détails

Fondamentaux de la programmation réactive

  • Leçon 1 • Contrat Observable et Observateur

    Définit la séquence observable, le cycle de vie de l'abonnement et les callbacks de l'observateur. Établit le modèle de flux de données par poussée au cœur de la programmation réactive.

  • Leçon 2 • Spécification des flux réactifs

    Couvre les quatre interfaces des flux réactifs : Publisher, Subscriber, Subscription et Processor. Explique la signalisation de la demande comme fondement de la contre-pression.

  • Leçon 3 • Construction d'une bibliothèque réactive minimale

    Implémente un observable jouet, un abonnement et un opérateur map à partir de zéro. Consolide la compréhension du contrat avant d'utiliser des bibliothèques de production.

  • Leçon 4 • Stratégies de contre-pression

    Compare les stratégies de suppression, de mise en tampon et de limitation pour gérer les producteurs plus rapides. Sélectionne la stratégie appropriée en fonction de la tolérance à la perte de données et des objectifs de latence.

  • Leçon 5 • Manifeste réactif et objectifs de conception

    Résume la réactivité, la résilience, l'élasticité et la conception orientée message comme piliers réactifs. Relie chaque pilier à des comportements concrets du système.

Chapitre 6Voir les détails

Opérateurs réactifs et composition de flux

  • Leçon 1 • Opérateurs de combinaison

    Fusionne, zippe et combine plusieurs flux en sorties unifiées. Explique la sémantique temporelle qui détermine le moment des émissions combinées.

  • Leçon 2 • Opérateurs de transformation

    Couvre map, flatMap, concatMap et switchMap pour la transformation de valeurs et de flux. Distingue les garanties d'ordre et de concurrence de chaque opérateur.

  • Leçon 3 • Multicast et partage de flux

    Convertit les observables froids en chauds à l'aide des opérateurs publish, share et replay. Contrôle le moment de l'abonnement et la taille du tampon de rejeu.

  • Leçon 4 • Opérateurs de gestion et de récupération d'erreurs

    Implémente retry, retryWhen, onErrorReturn et onErrorResume pour des pipelines résilients. Distingue les erreurs récupérables des erreures terminales dans le contexte du flux.

  • Leçon 5 • Opérateurs de filtrage et de fenêtrage

    Applique filter, take, skip, distinct et debounce pour réduire le volume du flux. Présente le fenêtrage temporel et basé sur le comptage pour le traitement par lots.

Chapitre 7Voir les détails

Planificateurs, Threading et concurrence réactive

  • Leçon 1 • Élimination du code bloquant

    Identifie les appels bloquants qui bloquent les threads réactifs et les encapsule dans deferred ou fromCallable. Applique des planificateurs d'E/S pour isoler le travail bloquant.

  • Leçon 2 • Opérateurs subscribeOn et observeOn

    Explique comment subscribeOn définit le thread d'abonnement et observeOn change le thread d'observation. Démontre le placement correct pour le threading en amont et en aval.

  • Leçon 3 • Types de planificateurs et responsabilités

    Catalogue les planificateurs de calcul, d'E/S, mono-thread et trampoline par leur charge de travail prévue. Associe chaque planificateur à l'étape de pipeline correcte.

  • Leçon 4 • Intégration réactive avec les E/S asynchrones

    Fait le pont entre les API asynchrones basées sur les callbacks et les futures vers les flux réactifs. Couvre les pilotes asynchrones TCP, HTTP et de base de données comme cibles d'intégration.

  • Leçon 5 • Propagation du contexte

    Propage le contexte associé à la requête, tel que les IDs de trace et les jetons de sécurité, à travers les frontières des planificateurs. Empêche la perte de contexte dans les pipelines multi-threads.

Chapitre 8Voir les détails

Motifs avancés et durcissement pour la production

  • Leçon 1 • Profilage de performance et optimisation

    Profile le surcoût des opérateurs, les taux d'allocation et la contention des threads à l'aide de profileurs asynchrones. Applique la fusion, la remontée d'opérateur (operator lifting) et l'optimisation des pools pour réduire la latence.

  • Leçon 2 • Observabilité et métriques

    Instrumente les pipelines réactifs avec des histogrammes de latence, des taux d'erreur et des métriques de profondeur de file. Relie les métriques aux seuils d'alerte pour la surveillance en production.

  • Leçon 3 • Test du code concurrent et réactif

    Utilise des planificateurs à temps virtuel, des abonnés de test et des outils de concurrence déterministe pour écrire des tests fiables. Couvre les tests basés sur les propriétés pour les invariants concurrents.

  • Leçon 4 • Limitation de débit et régulation

    Applique les algorithmes de seau à jetons et de seau qui fuit pour plafonner les taux d'émission. Empêche la surcharge en aval tout en maintenant une latence acceptable.

  • Leçon 5 • Motifs de résilience pour les systèmes réactifs

    Implémente les motifs de circuit breaker, bulkhead et timeout pour contenir la propagation des pannes. Intègre chaque motif dans les chaînes d'opérateurs réactifs.

Certification

Votre certificat valide de réussite

Ce cours est pour vous :

  • Ingénieurs backend : en difficulté pour éliminer les bogues intermittents dans les services multi-threads.

  • Ingénieurs plateforme : construisant des pipelines de données à haut débit qui doivent gérer la contre-pression.

  • Développeurs seniors : prêts à dépasser le threading de base pour passer à la concurrence de niveau production.

  • Architectes logiciels : concevant des systèmes distribués qui nécessitent une communication asynchrone tolérante aux pannes.

  • Développeurs Kotlin ou Java : adoptant des frameworks réactifs sans une base théorique solide.

Ce que disent nos apprenants

Vos cours sont parfaits. J'ai acheté le forfait d'un an et j'ai enfin l'opportunité de suivre divers sujets qui m'intéressent sans avoir besoin de changer de plateforme... je vous remercie pour tout ce que vous faites, je vous ai déjà recommandés à d'autres personnes...
Giulio Carlo
Giulio CarloÉtudiant en Marketing Digital
J'aime la façon dont les leçons vont droit au but et comment je peux changer de chapitres et passer le contenu dont je n'ai pas besoin.
Mariana Ferres
Mariana FerresÉtudiante en Photographie
J'aime le contenu et la façon dont les vidéos sont présentées et transcrites, ce qui accélère le processus !
Luciana Alvarenga
Luciana AlvarengaÉtudiante en Design d'Ongles
La plateforme est rapide, simple à utiliser. La diversité du contenu et les vidéos complémentaires aident beaucoup dans l'apprentissage.
André Felipe
André FelipeÉtudiant en Ingénierie de Prompt

Formations principales

FAQ

Qui est Dedika ?

Le certificat est-il valable au Cameroun ?

Les cours sont-ils gratuits ?

Quelle est la charge de travail du cours ?

Comment sont les cours ?

Comment fonctionnent les cours ?

Quelle est la durée des cours ?

Quel est le coût ou le prix des cours ?

Qu'est-ce qu'un cours EAD ou en ligne et comment ça marche ?

Cours PDF