Java Advanced II: High-Performance Java - kurs 67 500 RUB. z Centrum Szkoleniowego IBS, szkolenie 40 godz., data 29 stycznia 2024 r.
Miscellanea / / December 04, 2023
Pavel pracuje w Luxofcie od 2005 roku. W tym czasie brał udział w wielu projektach dla wiodących firm rosyjskich i zagranicznych, takich jak Boeing, Poczta Rosyjska, DHL, MVideo. Obecnie pełni funkcję głównego inżyniera oprogramowania w projekcie wsparcia największej sieci detalicznej sprzedającej elektronikę i sprzęt AGD w Rosji. Głównym zainteresowaniem Pavela jest tworzenie skalowalnych aplikacji Java i dostarczanie rozwiązań technicznych poprawiających wydajność i niezawodność aplikacji.
Omawiane tematy:
Moduł 1. Przegląd tuningu wydajności – 5 godzin.
Ogólne praktyki;
Strategie dostrajania wydajności;
Wskaźniki wydajności;
Jak poprawić produktywność?
Narzędzia do pomiaru wydajności;
JMiernik;
Testowanie obciążenia przy użyciu JMeter;
Jak zwiększyć produktywność wykorzystując architekturę?
Najlepsze praktyki poprawiające wydajność kodu.
Praca domowa – 2 godziny.
Moduł 2. Algorytmy GC – 5 godz.
Wykorzystanie pamięci przez obiekty Java;
Ogólne podejścia i algorytmy zbieraczy śmieci;
Szeregowy moduł zbierający śmieci GC;
Równoległy moduł zbierający śmieci GC;
System zbierania śmieci CMS;
Śmieciarka G1;
Osoba zbierająca śmieci w Shenandoah;
Strojenie śmieciarek;
Narzędzia do zbierania i analizowania wskaźników zbierania śmieci;
Wybór optymalnego zbieracza śmieci.
Moduł 3. Kompilator HotSpot JIT – 5 godzin.
Kompilacja JIT;
Kod bajtowy Java;
Kompilacja wielowarstwowa;
Pamięć podręczna kodu i jej strojenie;
Optymalizacja kodu;
Deoptymalizacja kodu i kiedy następuje;
narzędzie JITWatch do analizy wyników kompilacji;
Rodzaje optymalizacji;
Optymalizacje spekulacyjne;
Ustawienia kompilatora;
Kompilacja AOT.
Praca domowa – 2 godziny.
Moduł 4. Flagi JVM - 3 godziny.
Cel i kategorie flag JVM;
Flagi ogólne;
Flagi powiązane z ciągami znaków;
Flagi zarządzania pamięcią;
Punkty bezpieczeństwa i powiązane z nimi flagi;
TLAB i powiązane z nimi flagi;
Plan strojenia JVM.
Moduł 5. Testowanie działania algorytmów (benchmarking) z wykorzystaniem JMH – 2 godziny.
Co to jest benchmarking;
Wprowadzenie do JMH;
API JMH;
Nietrywialne przykłady;
Zastosowanie JMH w praktyce.
Praca domowa – 2 godziny.
Moduł 6. Korzystanie z pamięci poza stertą (pamięć poza stertą) – 3 godziny.
Co to jest sun.misc. Niebezpieczny;
Niebezpieczne metody;
Wydajność pamięci natywnej;
Tworzenie struktur danych w pamięci natywnej;
Ocena wydajności pamięci natywnej i porównanie z pamięcią stertową;
Obiecujący interfejs API dostępu do pamięci zagranicznej.
Moduł 7. Serializacja – 2 godziny.
serializatory JSON (GSON, Jackson);
Serializatory binarne (Protobuf, Jackson Smile, Kryo, FST, One NIO);
Porównanie wydajności różnych serializatorów.
Moduł 8. Profilowanie w Javie – 4 godziny.
Kiedy i jak przeprowadzać profilowanie?
Profilery próbkowania i oprzyrządowania;
Wykorzystanie Java VisualVM do profilowania;
Profilowanie za pomocą Spring AOP;
Profilowanie za pomocą IDEA i profilera asynchronicznego;
Rejestrator lotu Java;
Analiza logów Java Flight Recorder za pomocą Mission Control;
Tworzenie i rejestrowanie niestandardowych zdarzeń JFR;
Używanie agentów Java do osadzania kodu i rejestrowania wszelkich zdarzeń w Java Flight Recorder;
Pisanie programów do automatycznej analizy logów JFR;
Gromadzenie i analiza zapytań SQL z wykorzystaniem JFR;
Zbieranie i analiza żądań REST przy użyciu JFR.
Praca domowa – 2 godziny.
Moduł 9. Monitorowanie i analizowanie danych sterty. Wycieki pamięci – 2 godziny.
Narzędzia do analizy danych w pamięci;
Oznaki wycieków pamięci;
Główne przyczyny wycieków pamięci;
Wyszukuj i wykrywaj wycieki pamięci.
Moduł 10. GraalVM – 3 godziny
ekosystem GraalVM;
Środowisko wykonawcze GraalVM;
API poligloty;
Kompilacja i obraz natywny;
Testy porównawcze.
Moduł 11. Buforowanie w aplikacjach Java - 3 godziny.
Wzorce buforowania;
Porównanie API pamięci podręcznej;
Buforowanie zapytań do bazy danych;
Buforowanie żądań HTTP;
Podstawowe metryki i ustawienia bibliotek buforujących;
Porównanie popularnych bibliotek buforujących;
Buforowanie na poziomie usług;
Buforowanie usług Spring;
Aplikacje korzystające z pamięci podręcznych różnych poziomów.
Moduł 12. Przegląd innych podejść do poprawy produktywności - 3 godziny.
Programowanie równoległe (pule wątków, wątki równoległe, struktura typu fork-join);
Programowanie asynchroniczne;
Programowanie reaktywne (Reactor, VertX);
Optymalizacja pracy z bazami danych;
Przetwarzanie w chmurze (mikroserwisy, Spring Cloud);
Benchmarki i wnioski.