Java Advanced II: krachtige Java - cursus RUB 67.500. van IBS Training Center, training 40 uur, Datum 29 januari 2024.
Gemengde Berichten / / December 04, 2023
Pavel werkt sinds 2005 bij Luxoft. Gedurende deze tijd nam hij deel aan een aantal projecten voor toonaangevende Russische en buitenlandse bedrijven, zoals Boeing, Russian Post, DHL en MVideo. Momenteel speelt hij de rol van hoofdsoftware-ingenieur in een project ter ondersteuning van de grootste winkelketen die elektronica en huishoudelijke apparaten in Rusland verkoopt. Pavel's voornaamste interesse is het ontwikkelen van schaalbare Java-applicaties en het bieden van technische oplossingen om de applicatieprestaties en betrouwbaarheid te verbeteren.
Behandelde onderwerpen:
Module 1. Beoordeling van prestatieafstemming – 5 uur.
Huisartsenpraktijken;
Strategieën voor het afstemmen van prestaties;
Prestatiestatistieken;
Hoe de productiviteit verbeteren?
Instrumenten voor prestatiemeting;
JMeter;
Belastingtesten met JMeter;
Hoe de productiviteit verbeteren met behulp van architectuur?
Best practices voor het verbeteren van de codeprestaties.
Huiswerk – 2 uur.
module2. GC-algoritmen – 5 uur.
Geheugengebruik van Java-objecten;
Algemene benaderingen en algoritmen van afvalverzamelaars;
Seriële GC-vuilnisverzamelaar;
Parallelle GC-vuilnisophaler;
CMS Afvalverzamelaar;
Vuilnisverzamelaar G1;
Shenandoah vuilnisman;
Vuilnismannen afstemmen;
Hulpmiddelen voor het verzamelen en analyseren van statistieken over afvalinzameling;
Het kiezen van de optimale afvalverzamelaar.
module3. HotSpot JIT-compiler – 5 uur.
JIT-compilatie;
Java-bytecode;
Meerlaagse compilatie;
Codecache en de afstemming ervan;
Code-optimalisatie;
Code-deoptimalisatie en wanneer deze plaatsvindt;
JITWatch-tool voor het analyseren van compilatieresultaten;
Soorten optimalisaties;
Speculatieve optimalisaties;
Compilerinstellingen;
AOT-compilatie.
Huiswerk – 2 uur.
module4. JVM-vlaggen - 3 uur.
Doel en categorieën van JVM-vlaggen;
Algemene vlaggen;
Vlaggen geassocieerd met tekenreeksen;
Vlaggen voor geheugenbeheer;
Safepoints en bijbehorende vlaggen;
TLAB en bijbehorende vlaggen;
JVM-afstemmingsplan.
module5. Het testen van de prestaties van algoritmen (benchmarking) met behulp van JMH – 2 uur.
Wat is benchmarken;
Inleiding tot JMH;
JMH-API;
Niet-triviale voorbeelden;
Toepassing van JMH in de praktijk.
Huiswerk – 2 uur.
module6. Geheugen buiten de heap gebruiken (off-heap geheugen) – 3 uur.
Wat is sun.misc. Onveilig;
Onveilige methoden;
Native geheugenprestaties;
Het creëren van datastructuren in het eigen geheugen;
Evaluatie van de prestaties van het eigen geheugen en vergelijking met heapgeheugen;
Veelbelovende API voor toegang tot buitenlands geheugen.
Module 7. Serialisatie – 2 uur.
JSON-serializers (GSON, Jackson);
Binaire serializers (Protobuf, Jackson Smile, Kryo, FST, One NIO);
Vergelijking van de prestaties van verschillende serializers.
Module 8. Java-profilering – 4 uur.
Wanneer en hoe profileren?
Bemonsterings- en instrumentatieprofilers;
Java VisualVM gebruiken voor profilering;
Profilering met Spring AOP;
Profilering met IDEA en asynchrone profiler;
Java-vluchtrecorder;
Analyse van Java Flight Recorder-logboeken met behulp van Mission Conrol;
Aangepaste JFR-gebeurtenissen maken en loggen;
Java-agents gebruiken om code in te sluiten en gebeurtenissen vast te leggen in Java Flight Recorder;
Programma's schrijven voor automatische analyse van JFR-logs;
Verzameling en analyse van SQL-query's met behulp van JFR;
Verzameling en analyse van REST-verzoeken met behulp van JFR.
Huiswerk – 2 uur.
Module 9. Heap-gegevens monitoren en analyseren. Geheugenlekken – 2 uur.
Hulpmiddelen voor gegevensanalyse in het geheugen;
Tekenen van geheugenlekken;
De belangrijkste oorzaken van geheugenlekken;
Zoek en detecteer geheugenlekken.
Module 10. GraalVM – 3 uur
GraalVM-ecosysteem;
GraalVM-runtime;
Polyglot-API;
Compilatie en native afbeelding;
Benchmarks.
Module 11. Caching in Java-applicaties - 3 uur.
Cachingpatronen;
Vergelijking van cache-API's;
Databasequery's in cache opslaan;
HTTP-verzoeken in cache opslaan;
Basisstatistieken en instellingen van cachingbibliotheken;
Vergelijking van populaire cachingbibliotheken;
Caching op serviceniveau;
Caching Spring-diensten;
Applicaties die caches van verschillende niveaus gebruiken.
Module 12. Herziening van andere benaderingen om de productiviteit te verbeteren - 3 uur.
Parallel programmeren (threadpools, parallelle threads, fork-join-structuur);
Asynchrone programmering;
Reactief programmeren (Reactor, VertX);
Optimalisatie van het werken met databases;
Cloud computing (microservices, Spring Cloud);
Benchmarks en conclusies.