Java Advanced II: suure jõudlusega Java – kursus 67 500 RUB. IBS Koolituskeskusest, koolitus 40 tundi, Kuupäev 29.01.2024.
Varia / / December 04, 2023
Pavel on Luxoftis töötanud alates 2005. aastast. Selle aja jooksul osales ta paljudes juhtivate Venemaa ja välismaiste ettevõtete projektides, nagu Boeing, Vene Post, DHL, MVideo. Praegu täidab ta juhtiva tarkvarainseneri rolli projektis, millega toetatakse Venemaa suurimat elektroonikat ja kodumasinaid müüvat jaeketti. Paveli peamiseks huviks on skaleeritavate Java rakenduste arendamine ning tehniliste lahenduste pakkumine rakenduste jõudluse ja töökindluse parandamiseks.
Käsitletavad teemad:
1. moodul. Performance Tuning Review – 5 tundi.
Üldpraksised;
Jõudluse häälestamise strateegiad;
jõudlusnäitajad;
Kuidas tootlikkust parandada?
Tulemuslikkuse mõõtmise tööriistad;
JMeter;
Koormustestimine JMeteri abil;
Kuidas arhitektuuri abil tootlikkust tõsta?
Parimad tavad koodi jõudluse parandamiseks.
Kodutöö – 2 tundi.
2. moodul. GC algoritmid – 5 tundi.
Java-objektide mälukasutus;
Prügikorjajate üldised lähenemised ja algoritmid;
seeria GC prügikoguja;
Paralleel GC prügikoguja;
CMS prügikoguja;
Prügikoguja G1;
Shenandoah prügikoguja;
Prügikogujate häälestamine;
Tööriistad prügikoristusmõõdikute kogumiseks ja analüüsimiseks;
Optimaalse prügikoguja valimine.
3. moodul. HotSpot JIT kompilaator – 5 tundi.
JIT koostamine;
Java baitkood;
Mitmekihiline koostamine;
Koodi vahemälu ja selle häälestamine;
Koodi optimeerimine;
Koodi deoptimeerimine ja selle toimumise aeg;
JITWatch tööriist koostamistulemuste analüüsimiseks;
Optimeerimise tüübid;
Spekulatiivsed optimeerimised;
Kompilaatori seaded;
AOT koostamine.
Kodutöö – 2 tundi.
4. moodul. JVM lipud - 3 tundi.
JVM-i lippude otstarve ja kategooriad;
Üldlipud;
Nööridega seotud lipud;
Mäluhalduse lipud;
Turvapunktid ja nendega seotud lipud;
TLAB ja nendega seotud lipud;
JVM häälestusplaan.
5. moodul. Algoritmide toimivuse testimine (benchmarking) JMH abil – 2 tundi.
Mis on võrdlusuuringud;
Sissejuhatus JMH-sse;
JMH API;
Mittetriviaalsed näited;
JMH rakendamine praktikas.
Kodutöö – 2 tundi.
6. moodul. Mälu kasutamine väljaspool kuhja (off-heap memory) – 3 tundi.
Mis on sun.misc. Ebaturvaline;
Ebaturvalised meetodid;
Omamälu jõudlus;
Andmestruktuuride loomine algmälus;
Omamälu jõudluse hindamine ja võrdlemine kuhjamäluga;
Paljutõotav välismälu juurdepääsu API.
7. moodul. Serialiseerimine - 2 tundi.
JSON-serialisaatorid (GSON, Jackson);
Binaarsed serialisaatorid (Protobuf, Jackson Smile, Kryo, FST, One NIO);
Erinevate serialisaatorite jõudluse võrdlemine.
8. moodul. Java profileerimine – 4 tundi.
Millal ja kuidas profileerimist teha?
Proovivõtu- ja mõõteriistade profileerijad;
Java VisualVM-i kasutamine profiilide koostamiseks;
Profileerimine Spring AOP-ga;
Profileerimine IDEA ja asünkroonprofiiliga;
Java lennusalvesti;
Java Flight Recorderi logide analüüs Mission Conroli abil;
Kohandatud JFR-sündmuste loomine ja logimine;
Java agentide kasutamine koodi manustamiseks ja mis tahes sündmuste salvestamiseks Java lennusalvestis;
Kirjutamisprogrammid JFR-logide automaatseks analüüsiks;
SQL päringute kogumine ja analüüs JFR abil;
REST-päringute kogumine ja analüüs JFR-i abil.
Kodutöö – 2 tundi.
9. moodul. Kuhjaandmete jälgimine ja analüüsimine. Mälu lekked – 2 tundi.
Mälusisesed andmeanalüüsi tööriistad;
Mälu lekke märgid;
Mälu lekete peamised põhjused;
Otsige ja tuvastage mälulekkeid.
10. moodul. GraalVM – 3 tundi
GraalVM ökosüsteem;
GraalVM käitusaeg;
Polyglot API;
Koostamine ja omapärane pilt;
Võrdlusnäitajad.
11. moodul. Vahemällu salvestamine Java rakendustes - 3 tundi.
Vahemällu salvestamise mustrid;
Vahemälu API-de võrdlus;
Andmebaasipäringute vahemällu salvestamine;
HTTP-päringute vahemällu salvestamine;
Vahemällu salvestavate teekide põhimõõdikud ja sätted;
Populaarsete vahemällu salvestavate raamatukogude võrdlus;
Teenusetaseme vahemällu salvestamine;
Kevade vahemällu salvestamise teenused;
Rakendused, mis kasutavad erineva tasemega vahemälu.
12. moodul. Ülevaade muudest lähenemisviisidest tootlikkuse parandamiseks - 3 tundi.
Paralleelprogrammeerimine (keermekogumid, paralleelkeermed, kahvelliite struktuur);
Asünkroonne programmeerimine;
Reaktiivne programmeerimine (Reactor, VertX);
Töö optimeerimine andmebaasidega;
Pilvandmetöötlus (mikroteenused, Spring Cloud);
Võrdlusalused ja järeldused.