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ść potrafisz już takie podstawowe rzeczy
z zakresu tworzenia nowych wątków egzekutorów wykorzystania
future znasz już też jakieś takie podstawowe problemy które wiążą
się z wielowątkowością czas teraz zaaplikować to wszystko w praktyce
spróbujemy zaimplementować pewien projekt tym projektem będzie
aplikacja służąca do porównywania dwóch katalogów zasadniczo
na wejściu mamy pathy do dwóch katalogów musimy znaleźć których
plików brakuje to znaczy w jednym katalogu są a w drugim ich nie ma oraz
też musimy porównać czy te pliki jeżeli sobie odpowiadają czy nie różnią
się zawartością warto również jeżeli różnią się zawartością
to pokazać ich sumę md5 tak one powinny być różne w tym momencie można
też pozwolić na porównywanie struktur które są zagnieżdżone czyli
mamy powiedzmy kilka razy katalog tak w nim jakiś katalog
i w nim jeszcze jakieś pliki i musimy to porównać jednym
z sugerowanych podejść tutaj może być wyliczanie sum
kontrolnych dla każdego pliku który jest w katalogu i to można
zrobić w współbieżnie tak powiedzmy wyliczanie tych sum pewnie by
było taką jedną z kosztowniejszych operacji tutaj a kolejną
rzeczą by było sprawdzanie tych sum jeżeli pliki sobie odpowiadają to czy te sumy są
takie same a następnie tylko zadbanie o pliki które nie mają swoich odpowiedników
w drugim katalogu proponuję abyś na podstawie tych wymagań samodzielnie
spróbował najpierw zaimplementować ten projekt w implementacji tego projektu
pomoże nam pewna struktura którą już przygotowałem tutaj powiedzmy jest
jakiś taki zalążek projektu znajduje się tutaj pewien kod uruchomieniowy
tak który podaje powiedzmy właśnie dwa katalogi które będziemy
porównywać następnie listuje różnice zwrócone
przez pewną metodę tak tak właśnie metodę compare dirs to
taka właśnie sugerowana metoda w której
powinniśmy zawrzeć naszą implementację tak oczywiście tutaj powiedzmy możemy używać wielu
metod tak oraz ta lista którą ona
zwraca jest listą pewnych reprezentacji którą powiedzmy to jest jakiś mój
pomysł na przedstawianie różnic w plikach jest to jakiś file difference
który ma pewien message tak może to być wersja
że są to różne sumy albo że to są powiedzmy brakujące pliki tak
ten find difference właśnie ma dwie implementacje okej
oczywiście jeżeli chcesz możesz samodzielnie zaimplementować
to i w ogóle nie przejmować się tą strukturą którą tutaj stworzyłem ale
ważne jest to że jeszcze tutaj dołączyłem pewien generator który potrafi
nam wygenerować dwa identyczne katalogi zawierające pliki tak są
powiedzmy puste pliki zawierające jakiś tekst na samym końcu oraz
jakąś zmienną liczbę te katalogi są identyczne pomoże nam to powiedzmy
zaimplementować ten projekt oraz później przetestować czy faktycznie
on wykminia jakiś różnice w tych katalogach tutaj specjalnie nie
musisz się przejmować tym że ten program zapcha ci dysk z tego względu że wykorzystuje
tutaj pewien trick tak zwane sparse files jest to taki
trik na poziomie system plików który pozwala na tworzenie dużych
prawie pustych w sensie prawie wypełnionych tylko i wyłącznie zerami
plików które mogą mieć na przykład po jeden dziesięć giga tak a
w rzeczywistości one są bardzo małe na samym dysku tutaj
masz kilka linków do stron w których możesz doczytać sobie o sparse files
tutaj jest po prostu javowa implementacja stworzenia takiego pliku teraz
możesz spróbować samodzielnie zaimplementować ten projekt lub możesz przeskoczyć
do kolejnej lekcji i po prostu krok po kroku ze mną go implementować jeżeli zaimplementujesz
go samodzielnie to warto abyś go porównał z moim rozwiązaniem może znajdziesz
na przykład jakieś błędy w moim rozumowaniu w każdym razie powodzenia
i do usłyszenia