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

Cours avancé de programmation concurrente et réactive

Maîtrisez tout l'éventail 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é donne aux ingénieurs expérimentés les modèles mentaux, les patrons et les outils nécessaires pour créer des systèmes à haut débit et tolérants aux pannes qui fonctionnent sous une charge réelle.

Dedika pour les entreprises

Ce que vous allez apprendre:

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

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

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

  • Créez 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 dans les pipelines réactifs à l'aide des planificateurs et des 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 avancé de programmation concurrente et réactive

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

Pour vous, entreprise, qui souhaitez former votre équipe

Avec Dedika pour les entreprises, le cours inclut des exercices et des exemples adaptés à votre 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 course et atomicité

    Identifie les conditions de course à travers les motifs « vérifier puis agir » et « lire-modifier-écrire ». Introduit l'atomicité comme exigence fondamentale de correction.

  • Leçon 2 • Processus, threads et unités d'exécution

    Définit les processus, les threads et les 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 de tas et pourquoi les caches du __TS_PROTECTED_ID_0__ provoquent des lectures obsolètes. Relie les problèmes de visibilité à de véritables bogues 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 formels de correction. Sert de base aux décisions ultérieures de conception verrouillée et sans verrou.

  • Leçon 5 • Interblocage, verrou actif et famine

    Analyse les trois principaux défauts 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

Synchronization Primitives et Locking Strategies

  • Leçon 1 • Lock Granularity et Contention

    Analyse les compromis du verrouillage à grain fin ou grossier à l'aide des métriques de débit et de latence. Introduit le partitionnement des verrous comme technique évolutive de réduction de la contention.

  • Leçon 2 • Read-Write Locks et Condition Variables

    Introduit les verrous en lecture partagée/écriture exclusive pour les charges de travail à forte lecture. Associe les variables de condition aux mutex pour la coordination par attente/notification.

  • Leçon 3 • Semaphores et Barriers

    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'utilisation canonique.

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

    Catalogue l'inversion de verrous, l'acquisition de verrous imbriqués et les fuites de verrous comme défauts récurrents. Fournit des motifs de remaniement pour éliminer chaque écueil.

  • Leçon 5 • Mutexes et Intrinsic Locks

    Couvre la sémantique de verrouillage exclusif et le comportement des verrous réentrants. Montre les motifs corrects d'acquisition et de libération de verrous.

Chapitre 3Voir les détails

Concurrent Data Structures et Collections

  • Leçon 1 • L'immutabilité comme stratégie de concurrence

    Montre comment les objets immuables éliminent totalement la synchronisation. Couvre l'immuabilité effective, la copie défensive et les structures de données persistantes.

  • Leçon 2 • Concurrent Queues 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 • Atomic Variables et CAS Operations

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

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

    Examine les wrappers synchronisés et leurs écueils liés aux opérations composées. Motive l'utilisation de collections concurrentes dédiées plutôt que l'encapsulation naïve.

  • Leçon 5 • Concurrent Hash Maps et Skip Lists

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

Chapitre 4Voir les détails

Thread Pools et Task Execution Frameworks

  • 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 solutions de repli au sein du pipeline.

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

    Introduit l'abstraction d'exécuteur qui dissocie la soumission de 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 Promises

    Soumet des tâches Callable et récupère les résultats via Future, en gérant l'annulation et le dépassement de délai. Introduit Promise comme le côté écriture d'un future.

  • Leçon 4 • Fork-Join et Work Stealing

    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 • Thread Pool Sizing et Tuning

    Dérive des formules de dimensionnement de pool pour les tâches liées au __TS_PROTECTED_ID_0__ et aux entrées-sorties en utilisant la loi de Little. Couvre la surveillance de la profondeur de file et de l'utilisation des threads.

Chapitre 5Voir les détails

Fondements de la programmation réactive

  • Leçon 1 • Observable et Observer Contract

    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 piloté par poussée central à 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 • Construire une bibliothèque réactive minimale

    Implémente un observable, un abonnement et un opérateur map jouets à 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 d'abandon, de mise en mémoire tampon et de limitation pour gérer les producteurs plus rapides. Sélectionne la stratégie appropriée en fonction de la tolance à 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 pilotée par les messages comme piliers réactifs. Relie chaque pilier à des comportements système concrets.

Chapitre 6Voir les détails

Reactive Operators et Stream Composition

  • Leçon 1 • Combination Operators

    Fusionne, zippe et combine plusieurs flux en sorties unifiées. Explique la sémantique temporelle qui détermine quand les émissions combinées se produisent.

  • Leçon 2 • Transformation Operators

    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 • Multicasting et Sharing Streams

    Convertit les observables froids en observables 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 • Error Handling et Recovery Operators

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

  • Leçon 5 • Filtering et Windowing Operators

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

Chapitre 7Voir les détails

Schedulers, Threading et Reactive Concurrency

  • Leçon 1 • Eliminating Blocking Code

    Identifie les appels bloquants qui bloquent les threads réactifs et les encapsule dans deferred ou fromCallable. Applique les planificateurs d'entrées-sorties pour isoler le travail bloquant.

  • Leçon 2 • subscribeOn et observeOn Operators

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

  • Leçon 3 • Scheduler Types et Responsibilities

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

  • Leçon 4 • Reactive Integration with Async I/O

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

  • Leçon 5 • Context Propagation Across Threads

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

Chapitre 8Voir les détails

Advanced Patterns et Production Hardening

  • Leçon 1 • Performance Profiling et Tuning

    Profile la surcharge des opérateurs, les taux d'allocation et la contention des threads à l'aide de profileurs asynchrones. Applique la fusion, le levage d'opérateurs et le réglage des pools pour réduire la latence.

  • Leçon 2 • Observability et Metrics

    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 • Testing Concurrent et Reactive Code

    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 • Rate Limiting et Throttling

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

  • Leçon 5 • Resilience Patterns for Reactive Systems

    Implémente les motifs disjoncteur, cloison et délai d'attente pour contenir la propagation des défaillances. Intègre chaque motif dans les chaînes d'opérateurs réactifs.

Certification

Votre certificat valide de réussite

Ce cours est fait pour vous :

  • Ingénieurs backend : en difficulté pour éliminer les bogues intermittents dans les services multithreadés.

  • 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 production.

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

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

Ce que disent nos élèves

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 en France ?

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