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ść to jest lekcja o iterowaniu po wystąpieniach danego wzorca
wewnątrz tekstu po pierwsze dlaczego możemy chcieć w ogóle iterować
po tych wystąpieniach może to być na przykład dlatego że chcemy
zliczyć liczbę wystąpień danego powiedzmy patternu tak
albo na przykład chcemy wyciągnąć na przykład z naszych logów wszystkie
dane wszelkie na przykład daty wszelkie powiedzmy dane
które spełniają dany format tutaj mam kawałek programu
który wcześniej sobie napisałem który wyciąga pierwszą
linię z pliku lorem txt a następnie kompiluje
tutaj wyrażenie które napisałem tutaj nie przejmujcie się tym że
jeszcze nie mieliśmy obsługi plików jak już do tego dojdziemy to
napisanie czegoś takiego nie będzie dla nas problemem na razie tutaj po prostu wczytuje
pierwszą linijkę możemy sobie wyświetlić co jest w tej linijce tutaj
jest po prostu pierwszy pierwszy pierwsza linia to jest kilka zdań po
podzielonych kropkami naszym zadaniem jest przeliterowanie po tych zdaniach
co do na przykład zliczenia ich wyświetlenia tutaj ten
regex który napisałem właśnie próbuje matchować zdania on zakłada
że zdanie zaczyna się od tak zwanego word character jak
wejdziemy sobie w dokumentację klasy pattern tutaj zobaczymy czym jest new
word character jest to po prostu małe znaki od a do z wielkie znak
podkreślnika i cyfry też czyli wszystko co nie
jest między innymi na przykład character nie jest to jakaś
spacja coś takiego następnie występuje dowolna
liczba znaków które nie są kropką a na
koniec występuje kropka ten ostatni fragment możecie sobie usunąć w zależności
od tego czy chcecie też matchować kropkę na przykład prawda zakładam
że te zdania które są wewnątrz tej tego pliku tej linii one
są prawidłowo zbudowane czyli zaczynają się od litery tak
bądź cyfry a kończą się kropką okej teraz
co chcę co trzeba zrobić jeżeli chcemy przeliterować po wystąpieniach tych zdań też
wykorzystujemy klasę matcher którą wyciągamy
z patternu obiekt matchera zawiera wszystkie potrzebne metody które
mogą nam się przydać przy iterowaniu po podanych wystąpieniach wzorca
między innymi zawiera on metodę find metoda find
szuka kolejnego wystąpienia tego wzorca oraz zwraca
true jeżeli znaleziono takie wystąpienie dzięki temu możemy wywołać tę metodę
wewnątrz warunku w pętli while okej tutaj
wewnątrz do ciała tej pętli wejdziemy w momencie kiedy znaleziono
znaleziono wystąpienie i aby dobrać do tego wystąpienia możemy wykorzystać
matcher group i tutaj jest wywołana
ta grupa pod spodem grupa zerowa i w tym momencie w tej grupie
będzie się znajdowało to wystąpienie które zostało znalezione przy
find możemy sobie to wyświetlić i
tutaj widzimy wszystkie właśnie zdania z tego pliku możemy sobie uciąć
kropkę jeżeli nie chcę tego widzieć tam okej
tam teraz mamy bez kropek okej też zamiast używać grup
możemy wyciągać również z tego wejściowego
tekstu robić sub string i matcher dostarczy
nam metody start i end które zwracają odpowiednio początek i koniec danego
wystąpienia możemy również wykorzystać metodę results
tutaj taka uwaga tej metody results możemy
wykorzystywać tylko jeżeli mamy jdk
powyżej 1.9 tak metoda results zwraca nam stream
jest to stream od match results dowiemy się jak
tego używać w rozdziale o streamach i o wyrażeniach lambda ale
już tutaj pokazuje jak można tego użyć możemy na tym wywołać foreach
który sprawia że każdy element tego strumienia
który de facto jest wynikiem wyszukiwania na nim zostanie
zastosowana ta metoda która tutaj zostanie podana ale jest to wyrażenie
lambda i wewnątrz tego wyrażenia możemy na przykład wyświetlić
sobie na ekran co to jest i w tym results mamy również metodę
group tak samo jak mamy metody start i end i my tutaj chcemy sobie
wyświetlić co tam się znajdowało i działa to dokładnie tak samo tutaj jeszcze
intellij podpowiada że możemy to poprawić trochę żeby było ładniejsze
i teraz jeżeli chcemy na przykład zliczyć
liczbę tych wystąpień to w przypadku pętli while po prostu będziemy
inkrementowali jakiś counter jakiegoś integera a w przypadku gdy
mamy strumień czyli jeżeli mamy jdk powyżej 9
możemy po prostu zrobić count i tutaj wiemy że zdań
w tym pliku było 14 okej i to jest na tyle
no jak widzisz są dwa podejścia możesz albo korzystać z matchera wywoływać
na nim find w jakichś pętli lub możesz wykorzystać strumienie
z czym ci wygodniej to wszystko jeżeli chodzi o iterowanie dzięki za uwagę do zobaczenia