Java Advanced II: High-Performance Java - kurz 67 500 RUB. z IBS Training Center, tréning 40 hodín, Termín 29.01.2024.
Rôzne / / December 04, 2023
Pavel pracuje v Luxofte od roku 2005. Počas tejto doby sa podieľal na množstve projektov pre popredné ruské a zahraničné spoločnosti ako Boeing, Russian Post, DHL, MVideo. V súčasnosti zastáva úlohu vedúceho softvérového inžiniera v projekte na podporu najväčšieho maloobchodného reťazca s elektronikou a domácimi spotrebičmi v Rusku. Pavlovým hlavným záujmom je vývoj škálovateľných Java aplikácií a poskytovanie technických riešení na zlepšenie výkonu a spoľahlivosti aplikácií.
Preberané témy:
Modul 1. Kontrola ladenia výkonu – 5 hodín.
všeobecná prax;
Stratégie ladenia výkonu;
metriky výkonnosti;
Ako zlepšiť produktivitu?
Nástroje na meranie výkonu;
JMeter;
Záťažové testovanie pomocou JMeter;
Ako zvýšiť produktivitu pomocou architektúry?
Osvedčené postupy na zlepšenie výkonu kódu.
Domáca úloha - 2 hodiny.
Modul 2. GC algoritmy – 5 hodín.
Využitie pamäte objektov Java;
Všeobecné prístupy a algoritmy zberačov odpadu;
Sériový zberač odpadu GC;
Paralelný zberač odpadu GC;
CMS Garbage Collector;
Zberač odpadu G1;
Zberač odpadu Shenandoah;
Ladenie zberačov odpadu;
Nástroje na zhromažďovanie a analýzu metrík zberu odpadu;
Výber optimálneho zberača odpadu.
Modul 3. HotSpot JIT kompilátor – 5 hodín.
kompilácia JIT;
bajtový kód Java;
Viacvrstvová kompilácia;
Vyrovnávacia pamäť kódu a jej ladenie;
Optimalizácia kódu;
deoptimalizácia kódu a kedy k nej dôjde;
nástroj JITWatch na analýzu výsledkov kompilácie;
Typy optimalizácií;
Špekulatívne optimalizácie;
Nastavenia kompilátora;
AOT kompilácia.
Domáca úloha - 2 hodiny.
Modul 4. Príznaky JVM - 3 hodiny.
Účel a kategórie príznakov JVM;
Všeobecné vlajky;
Vlajky spojené so šnúrkami;
Príznaky správy pamäte;
body obnovy a s nimi spojené vlajky;
TLAB a príznaky s nimi spojené;
plán ladenia JVM.
Modul 5. Testovanie výkonnosti algoritmov (benchmarking) pomocou JMH – 2 hodiny.
Čo je benchmarking;
Úvod do JMH;
JMH API;
Netriviálne príklady;
Aplikácia JMH v praxi.
Domáca úloha - 2 hodiny.
Modul 6. Používanie pamäte mimo haldy (pamäť mimo haldy) – 3 hodiny.
Čo je sun.misc. Nebezpečné;
Nebezpečné metódy;
Výkon natívnej pamäte;
Vytváranie dátových štruktúr v natívnej pamäti;
Hodnotenie výkonu natívnej pamäte a porovnanie s haldovou pamäťou;
Sľubné rozhranie API pre prístup k zahraničnej pamäti.
Modul 7. Serializácia - 2 hodiny.
JSON serializátory (GSON, Jackson);
Binárne serializátory (Protobuf, Jackson Smile, Kryo, FST, One NIO);
Porovnanie výkonu rôznych serializátorov.
Modul 8. Java profilovanie – 4 hodiny.
Kedy a ako robiť profilovanie?
Odberové a prístrojové profilovače;
Použitie Java VisualVM na profilovanie;
Profilovanie pomocou pružinového AOP;
Profilovanie pomocou IDEA a async profiler;
Java Flight Recorder;
Analýza záznamov Java Flight Recorder pomocou Mission Control;
Vytváranie a zaznamenávanie vlastných udalostí JFR;
Používanie agentov Java na vkladanie kódu a zaznamenávanie akýchkoľvek udalostí do Java Flight Recorder;
Zápisové programy na automatickú analýzu záznamov JFR;
Zhromažďovanie a analýza SQL dotazov pomocou JFR;
Zhromažďovanie a analýza požiadaviek REST pomocou JFR.
Domáca úloha - 2 hodiny.
Modul 9. Monitorovanie a analýza údajov haldy. Úniky pamäte – 2 hodiny.
Nástroje na analýzu údajov v pamäti;
Známky úniku pamäte;
Hlavné príčiny úniku pamäte;
Vyhľadajte a zistite úniky pamäte.
Modul 10. GraalVM – 3 hodiny
GraalVM ekosystém;
runtime GraalVM;
Polyglot API;
Kompilácia a natívny obraz;
Benchmarks.
Modul 11. Ukladanie do vyrovnávacej pamäte v aplikáciách Java - 3 hodiny.
Vzory ukladania do vyrovnávacej pamäte;
Porovnanie cache API;
Ukladanie databázových dotazov do vyrovnávacej pamäte;
Ukladanie požiadaviek HTTP do vyrovnávacej pamäte;
Základné metriky a nastavenia cachovacích knižníc;
Porovnanie populárnych cachovacích knižníc;
ukladanie úrovne služieb do vyrovnávacej pamäte;
Služby Caching Spring;
Aplikácie, ktoré používajú vyrovnávacie pamäte rôznych úrovní.
Modul 12. Prehľad iných prístupov k zlepšeniu produktivity - 3 hodiny.
Paralelné programovanie (pooly vlákien, paralelné vlákna, štruktúra vidlicového spojenia);
Asynchrónne programovanie;
Reaktívne programovanie (Reactor, VertX);
Optimalizácia práce s databázami;
Cloud computing (mikroslužby, Spring Cloud);
Referenčné hodnoty a závery.