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ść tej lekcji pokażę ci jak wykorzystywać grupy
w wyrażeniach regularnych grupy to jest mechanizm który poza tym jak
było powiedziane w poprzedniej lekcji pozwala nam jakieś zaznaczyć że dany fragment
ma się powtarzać na przykład ileś razy tak a nie tylko jakiś alfabet to poza
tym pozwala nam wyłuskiwać jakiś fragment tekstu zmatchowanego
patternu tutaj jako przykład jest wyrażenie regularne dla
adresu mailowego zignorujmy to że ono jest dość naiwne
ponieważ prawdziwe takie komercyjne komercyjnie
wykorzystywane wyrażenie regularne dla adresu mailowego byłoby bardzo skomplikowane
a nie chcemy komplikować przykładu ono zakłada że na początek jest ileś znaków
w tutaj numeryczne znaki tak znaki
alfabetu kropka raz bądź więcej później jest małpa a później
jest taki sam alfabet teraz bądź więcej razy no i to nam powiedzmy zmatchuje ten adres
mailowy który tutaj mamy podany i teraz gdybyśmy chcieli wyciągnąć
tego adresu mailowego tą lokalną część czyli tą tutaj w tym przypadku name to wszystko
co jest przed małpą a później to co jest po małpie czyli tą
nazwę domenową to w momencie gdy już sprawdziliśmy dany
mail pasuje do naszego wyrażenia musielibyśmy znaleźć jakimś
findem gdzie jest ta małpa i wszystko wcześniej wysubstringować sobie
później wziąć od małpy plus jeden wszystko to co tutaj jest tak okej
ale możemy też wykorzystać właśnie grupy do tego żeby wyciągnąć sobie te elementy
z już przetworzonego stringa tak który już został zmatchowany
możemy od razu to sobie podzielić dlatego właśnie tworzymy
grupę najpierw na część lokalną tutaj tak razem z plusem
to ważne otaczamy to sobie nawiasami okrągłymi i
później na nazwę domenową robimy to samo i
teraz jak już stworzyliśmy te grupy to zanim się do
nich dobierzemy patrzymy czy dane wyrażenie zostało zmatchowane
czyli matcher matches tak
i wtedy możemy wykorzystać na matcherze mamy
metody służące do dobierania się do grup no i tutaj
jest taka jedna uwaga tutaj możemy użyć
albo albo po integerze
po indeksie sobie wyciągać te grupy albo jak później się dowiemy po pewnych
id tych grup ale jak wykorzystujemy w tej wersji z
indeksami to w pierwszej grupie znaczy w grupie zerowej tak
bo one są ponumerowane od zera jest coś czego moglibyśmy
się nie spodziewać jest po prostu zmatchowanie całego całego wzorca czyli jest
name example com więc nas interesują grupy od
jedynki w górę tak czyli grupa pierwsza i grupa druga teraz zobaczmy co
tam jest okej w pierwszej grupie czyli nazwie
lokalny jest name i później jest example com już bez małpy
nigdzie tak małpy nie dodaliśmy do żadnej grupy okej i w ten sposób właśnie możemy
sobie wyciągać te dane już ze zmatchowanego tekstu teraz
może używanie tych indeksów nie jest do końca
wygodne już pomijając to że w grupie zerowej jest coś dziwnego to
możemy sobie nazwać te grupy do tego wykorzystujemy znak zapytania
i te trójkąty nawiasy możemy nazwać to local pierwszą część a
później domain i tu już możemy wykorzystać
przeciążona wersję metody group i po prostu po po nazwie wyciągać
te poszczególne grupy okej
to działa tak samo jak tam to działało tylko jest to może trochę bardziej czytelne
tutaj jest taka uwaga jak pracujemy z grupami i
mamy gdzieś operator alternatywy tak czyli który sprawia że jeżeli
pierwsza część jakaś część wyrażenia się nie zmatchowała to jeszcze jest taki failover
hallbreak do kolejnego regexu to jeżeli w tej
drugiej części mamy też jakąś grupę albo w ogóle mamy grupy w tym wyrażeniu
to musimy wziąć pod uwagę że jeżeli te grupy się różnią
to pomimo zmatchowania całego wyrażenia którejś
grupy może nie być po prostu tak tutaj dodajmy sobie grupę rest w której
jest po prostu wszystko tak kropka gwiazdka
i tutaj wpadnie każde wyrażenie każdy
tekst który się nie zmatchuje w pierwszą część więc tutaj dodajemy sobie tak żeby
dajmy sobie małpę dzięki czemu ten tekst nie zostanie
zmatchowany do pierwszej części regexa a jak tutaj odpalimy
teraz to mimo że całe wyrażenie zostało zmatchowane to
tych pierwszych dwóch grup nie ma ale jest za to tylko grupa rest tak
więc jeżeli używamy tutaj musimy trochę też
patrzeć na to jak wygląda ten regex musimy czasem
obsłużyć to że któryś z grupy nie będzie jeżeli używamy właśnie
tego operatora alternatywy no ale też używanie tego operatora razem
z grupami też może być trochę kontrowersyjne więc to warto rozważyć okej to
tyle chodzi o same grupy jeżeli
chodzi o funkcjonalność regionów to jest to taka
taki mechanizm który pozwala ograniczyć wprowadzony do
matchera tekst na czas przeszukiwania czyli na przykład wprowadzamy
jakiś tekst do matchera okej najpierw iterujemy po wszystkim
co jest w jakiejś pierwszej części na przykład wiemy że odtąd dotąd jest
jakaś część która nas interesuje i ją przeszukujemy a później przeszukujemy jakąś kolejną
część no tutaj a musimy wiedzieć od od którego do którego
momentu możemy to sobie jakoś tam wykminić na przykład przeszukując jeszcze
wcześniej ten tekst ale musimy znać tutaj już konkretne indeksy do
tego wykorzystujemy do ustawienia tego regionu po prostu metodę region na matcherze
która zwraca nam tego matchera jeszcze raz tylko go odpowiednio modyfikuje no
i tutaj załóżmy że chcemy sobie ograniczyć obszar przeszukiwania tego
maila odtąd dotąd czyli obciąć ten pierwszy
obciąć sobie pierwszy i ostatni znak czyli od
region 1 do mail end
minus 1 tak okej
tak i tutaj widzimy że też dobrze że mamy
te grupy to od razu widzimy że w pierwszą grupę wpadło tylko ame
a później jest example co
możemy też to sobie zobaczyć jeszcze wykorzystując tą grupę zerową która pokazuje
wszystko co się zmatchowało tak czyli cały tekst tutaj widzimy
że jest taki fragment tylko to się zmatchowało cała
reszta ten pierwszy i ostatni znak w ogóle nie był w tym przeszukiwanym tekście to tyle
jeżeli chodzi i o regiony i o grupy myślę że grupy bardzo ci się przydadzą jeżeli chodzi
o wyłuskiwanie tego tekstu dzięki za wszystko i do zobaczenia