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.
Świetnie mamy path co teraz tak
jak mówiłem za te część która odpowiadała za operację
na powiedzmy na właśnie na ścieżkach ona została w path
a elementy odpowiedzialne tak jakby za zarządzanie tym
plikiem za ich tworzenie usuwanie przenoszenie i tak dalej to wszystko
zostało przeniesione do files i sobie zobaczymy co jest w tej klasie tu
jest cała masa takich statycznych metodek część z tych metod odpowiada
temu co było zaimplementowanych w file ale jest też kilka dodatkowych
okej tych metod jak sobie zobaczysz w files jest
całkiem sporo żeby przedstawić mniej więcej co tam jest podaję to
w taki sposób że najpierw opowiem ci o tym jakie metadane możemy
wyciągnąć z pliku zmienić w tym pliku w
pierwszej kolejności a następnie przejdziemy do takich operacji na katalogach na plikach
kopiowanie przenoszenie jakieś iterowanie po tych katalogach
i też pracy z katalogami plikami tymczasowymi okej to
jedziemy z metawiedzą pierwszą taką podstawową rzeczą którą warto
wiedzieć o pliku to jest to czy on istnieje dlatego możemy wykorzystać exist
tutaj podajemy path i on nam zwraca tutaj boolean w zależności
od tego czy dany plik istnieje czy nie później możemy sprawdzić czy to jest directory
czy to jest hidden tak czyli to jest czy to jest ukryty plik to czy on jest ukryty
i czy nie jest ukryty i co to dokładnie znaczy to
zależy trochę od tego systemu pliku którego używam w tym momencie okej
możemy sprawdzić czy to jest regular file czyli czy tu nie jest na przykład właśnie biblioteka
tak czy to nie jest katalog i tutaj taka uwaga że jeżeli te pliki
nie istnieją to po prostu te is directory zwróci
że to nie jest directory bo nie istnieje is regular file zwróci też
false bo ono nie istnieje is hidden tak samo okej te
rzeczy nie są jakoś super ciekawe więc lecimy szybko dalej kolejnymi
rzeczami jest to że możemy wyciągnąć w łatwy sposób czy ten plik jest uruchamialny
tak czy da się go przeczytać z naszego punktu widzenia z punktu widzenia naszego
procesu tak to ważne czy możemy do niego zapisywać oraz jeżeli
jest to p który powiedzmy spełnia ten standard posix'owy albo
raczej ten file system spełnia tak to możemy wyciągnąć też
te uprawnienia do niego uprawnienia na przykład czy użytkownik może czytać
czy odpowiednio grupa właściciel i inne osoby mogą powiedzmy czytać
zapisywać i wykonywać ten plik tak możemy pobrać
też ownera tego pliku z ownerem jest wygodnie
ale z grupą trzeba jeszcze coś zrobić pokażę za chwilę możemy też pobrać też
powiedz ostatnią modyfikację tego pliku i tutaj jeszcze get
last modified time zwraca coś co się nazywa file time może
z tym za dużo nie zrobimy ale można z tego zrobić to instant
i wtedy mamy instant o tym czym dokładnie z instant dowiemy
się w rozdziale poświęconym reprezentacjom czasu w javie jeżeli chcemy
przeczytać jakieś takie dane atrybuty tego pliku w kontekście
jakiegoś konkretnego powiedzmy standardu na przykład posix czy
jak dos to musimy sobie wywołać read attributes
z odpowiednią klasą atrybutów się odpowiednią podstawia klasę
tak i możemy na przykład odczytać do jakiej grupy należy ten plik wcześniej
się nie dało za bardzo no i też przypadku że to jest posix to możemy to
okej poza tym że możemy odczytywać jakąś metawiedza
z pliku tak wyłuskiwać te atrybuty i tak dalej możemy też ją modyfikować
możemy na przykład bez problemu zmienić atrybuty danego pliku oczywiście
o ile mamy do tego uprawnienia tutaj na przykład wyciągam wszystkie
atrybuty które ten plik ma tak czyli uprawnienia grupy uprawnienia właściciela
i mogę na przykład dodać na przykład group rights
tak czyli dodaje uprawnienie że grupa danego pliku może dopisywać do niego
tak no i to jest w postaci jakiegoś seta no i to mogę już
przekazać dalej zsetować powiedzmy ten plik jeszcze raz teraz ze
zmienionymi atrybutami możemy też z poziomu javy ustawić kto jest ownerem
tego pliku oczywiście jeżeli mamy do tego uprawnienia oraz możemy ustawić
do jakiej grupy należy ten tutaj zanim ustawimy powiedzmy
ownera to musimy go wyciągnąć z tak zwanej user principal w javie takie obiekt
i go wyciągamy używając file systemu
i ciekawe bo file system oczywiście otrzymujemy wykorzystując
powiedzmy path no i tutaj możemy zrobić właśnie get user principal lockup service
pod tym możemy szukać już te principle po po nazwie tak czyli
po user tak oraz możemy odpowiednio szukać po grupie tak i
już jak to mamy to możemy ustalić ownera w przypadku grupy jeszcze
musimy sobie tak powiedzmy zrzutować trochę te
atrybuty tych plików wykorzystując get file attribute view no
i na tym możemy już zsetować grupę tak wynika to rzutowanie
z tego że nie każdy system plików wspiera coś takiego jak grupa na przykład tak
okej jeżeli chodzi o taki odczyt i podmienianie niektórych atrybutów
pliku to wszystko dzięki wielkie i do zobaczenia