Techniki Zaawansowane
8 godz. 35 min · Java · Full-stack i Programowanie
Rafał SolarskiW poczatkowych lekcjach przyjrzymy sie pokladowi, na jakim bedziemy uruchamiali nasze programy. Wykorzystamy VisualVM do podgladania parametrów JVM. Zobaczymy równiez jakie zasoby sa tam dostepne oraz dowiesz sie jak monitorowac to, czy dobrze z nich korzystamy. Opowiemy Ci tez miedzy innymi o tym, jak zrobic heap i thread dump, oraz jak wlaczyc logi GC.
Kolejne lekcje kursu zostaly poswiecone wyrazeniom regularnym. Wyrazenia regularne mozemy wykorzystac nie tylko do walidacji danych wprowadzania przez uzytkownika, ale równiez do dzielenia tekstu oraz wyluskiwania wystapien wzorców w duzym tekscie. W tym rozdziale dowiemy sie miedzy innymi tego, jak mozemy wykorzystac ten potencjal z poziomu Javy.
Dzieki typom generycznym jestesmy w stanie osiagnac bezpieczenstwo typów w trakcie kompilacji przy zachowaniu elastycznosci pisanego kodu. W nastepnym rozdziale kursu przyjrzymy sie temu, jak mozemy je wykorzystac, oraz w jaki sposób czasami nalezy z tego bezpieczenstwa zrezygnowac.
Interfejsy funkcyjne to sposób na przeniesienie odrobiny swiata programowania funkcyjnego do Javy. Gdy polaczymy je z wyrazeniami lambda oraz API strumieni pozwola nam pisac te sama logike w duzo bardziej przejrzysty sposób.
Kolekcje, czyli listy, mapy, zbiory i kolejki to jedne z najczesciej wykorzystywanych klas w codziennej pracy. To jak dobrze poznamy ich mozliwosci ma ogromny wplyw na to, w jaki sposób bedziemy podchodzili do rozwiazywania wyzwan na naszej drodze.
System plików to zasób bez którego ciezko sobie poradzic. Pozwalaja nam na dostarczanie konfiguracji, danych wejsciowych i wyjsciowych, a przez to równiez integrowanie ze soba calych systemów.W tym rozdziale nauczymy sie korzystac z tych dobrodziejstw w bezpieczny sposób wykorzystujac m.in. IO Streams.
Trzymanie daty w String to niekoniecznie najwygodniejszy sposób. Juz od pewnego czasu Java dysponuje bardzo wygodnym Date&Time API - zobaczymy, co mozemy w nim znalezc.
Wielowatkowosc nie jest prosta... i dlugo tak jeszcze pozostanie. Nawet jesli korzystamy z frameworków, które próbuja ja przed nami ukryc, to ciagle musimy byc swiadomi problemów jakie sie z nia wiaza. W tym rozdziale poznamy glówne problemy na jakie mozna natrafic programujac wielowatkowo w Javie. Poznamy równiez klasy, które zdecydowanie pomoga nam zapanowac nad ta zlozonoscia.
JDBC to najbardziej podstawowy sposób laczenia sie z baza SQL z poziomu Javy. W wielu systemach/aplikacjach stosuje sie rozwiazania ORM takie jak JPA/Hibernate. Mimo wszystko warto wiedziec jak to pod spodem dziala oraz umiec poradzic sobie w aplikacjach, gdzie wybrano bardziej "lekkie" podejscie niz Hibernate.
Na koniec kursu wykorzystamy zdobyta wiedze, aby stworzyc prosta aplikacje pozwalajaca na przechowywanie danych o wydatkach. Po stworzeniu coreu aplikacji, mozesz spróbowac uzupelnic go za pomoca GUI.
Ten kurs stworzony zostal przede wszystkim z mysla o osobach, które juz poznaly podstawy jezyka, takie jak zmienne, mechanizmy kontroli wykonania, klasy, typy generyczne.Jezeli chcesz poczuc sie swobodnie nie tylko jesli chodzi o mechanizmy jezyka, ale równiez pod wzgledem znajomosci standardowej biblioteki Javy - to kurs w sam raz dla Ciebie. Materialy beda przydatne dla studentów, którzy znaja juz podstawowa skladnie Javy; programistów Javy chcacych poszerzyc lub uporzadkowac swoja wiedze; programistów innych jezyków, którzy chca poznac inny stack technologiczny.
Cześć w tej lekcji chcę ci pokazać jak
wykorzystywać thread dumpy czy potrafimy zrobić thread dump'a
ale poza heap dump'em możemy jeszcze zrobić coś co właśnie się nazywa thread dump
jeżeli weźmiemy jakiś działający proces na przykład tutaj w tym momencie mam
odpalony nasz program tak to możemy
sobie zrobić coś co nazywa się właśnie thread dump wchodzimy po prostu tutaj
w threads możemy sobie zrobić tutaj właśnie thread dump thread
dump to jest powiedzmy takie zestawienie tego w którym miejscu
znajdowały się wątki w jakiejś migawce możemy
powiedzmy czytać sobie taki thread dump to jest po prostu jakiś plik
tekstowy który nam się wyświetlił zasadniczo on tutaj wykorzystując
stack trace które trochę znamy powiedzmy z tych
sytuacji kiedy dostajemy jakiś wyjątek i on pokazuje którędy przeleciał zanim
został złapany tak to ten sam sposób pokazuje się też gdzie znajdował
się wątek tak tutaj mamy po kolei każdy wątek mamy na przykład main'a który jest
naszym programem tak sensie main'em którego odpaliliśmy
tak mamy tutaj poza jakimiś parametrami między innymi wylistowane miejsce
w którym został tak jakby napotkany ten wątek w momencie robienia thread dump'a
poza tym mamy też state każdego z tych wątków czyli
powiedzmy taki opis stanu co się z nim dzieje jak widzimy większość jest runable czyli
one coś tam robią tak mamy też na przykład waiting
to jest taka sytuacja ponieważ my zrobiliśmy tutaj thread sleep tak no
więc on wpada właśnie w taki stan timed waiting okej
tutaj możemy też dojść powiedzmy linijka po linijce w którym miejscu to jest wywoływany
tutaj to jest akurat metoda sleep która jest wywoływana w main
w linii 9 tak jak zobaczymy gdzie to się znajduje to jest dokładnie
w tej linii wywołanie tak tak samo jesteśmy w
stanie wywołać też thread dump'a z poziomu idei po prostu możemy
tutaj sobie kliknąć znaczek tego aparatu i on po prostu nam
na out wyrzuci tak więc bez wchodzenia visualvm możemy też
takiego thread dump'a zrobić i teraz kiedy może nam się przydać
taki thread dump on nam zasadniczo może się przydać kiedy mamy jakąś aplikację
która na przykład się zawiesiła i my chcemy dojść z zewnątrz co
się w tej aplikacji dzieje powiedzmy robić sobie takiego thread dump'a
sprawdzić gdzie były poszczególne wątki może nam to też pomóc
czego zresztą dowiemy się w lekcji o wielowątkowości w
wykryciu to badlocka okej to
wszystko co chciałem ci pokazać w tej lekcji dzięki wielkie i do usłyszenia