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.
Mamy tutaj nasz program który przepisuje linie po linii tekst
z jednego pliku do drugiego tutaj można by było jeszcze wykorzystać metodę
fabrykująca new bufferedreader okej po pierwsze zacznijmy od
tego jakie jest kodowanie obecnie w tym pliku wejściowym laurem txt
jest to kodowanie utf-8 i teraz w jaki sposób file
reader będzie interpretował te znaki które tu otrzymuje jakie to
będą bajty file reader jak sobie przeczytamy na początku dokumentacji
tej klasy zakłada że tekst który dostaje są w
domyślnym kodowaniu tak tu default character encoding teraz
co to jest default character encoding w przypadku kiedy uruchamiamy sobie nasz
naszą klasę z intellij to dodaje tutaj taki
parametr to jest properties file encoding
i tutaj jest ustawiany domyślnie na utf-8 po prostu
tak możemy mieć również ustawioną zmienną środowiskową java options
która jest by default brana przez jvm w momencie
jego uruchamiania tak i tutaj możemy wyspecyfikować również tego properties
file encoding tak taką zmienną można też ustawić jako system write
na zasięg całego systemu tylko w odpowiednim miejscu musimy ją wyeksportować tak
więc używając file reader i file writer odpowiednio wykorzystujemy
domyślne kodowanie tak dla danego uruchomienia jvm jeżeli zaś używamy
metodę fabrykującą files bufferedreader
tak ją tutaj wykorzystujemy powiedzmy tworzymy sobie
z samym pathem to dostajemy utf-8 to jest taka różnica tak a jeżeli sobie
wykorzystamy tę metodę to nawet jeżeli będziemy zmieniali powiedzmy kodowanie
na poziomie jvm ustawiając naszą zmienną file encoding no
to tutaj ciągle będziemy mieli utf-8 okej możemy też
wykorzystać przeciążona wersję która przyjmuje char set tak char set tutaj w
tym miejscu i tutaj podać na przykład jakąś inną no niestety na file reader
i na file writer nie da się wyspecyfikować jakiego kodowania ma używać ta
klasa tak ona wykorzystuje po prostu domyślne jeżeli chcemy wymusić
jakieś kodowanie musimy wykorzystać pewnego rodzaju pomost
między strumieniami binarnymi a strumieniami tekstowymi takim
pomostem jest input stream reader jest to klasa która jest
jednocześnie reader'em ale również przyjmuje input stream
w swoim jako jeden z parametrów konstruktora poza tym że przyjmuje input stream
może również przyjąć char set tak czyli możemy w tym momencie wyspecyfikować
jakiego kodowania chcemy użyć będziemy zamiast file reader'a potrzebowali file input stream
w ten sposób i teraz możemy tutaj właśnie podać
tego file input stream z tym plikiem oraz możemy wymusić na
przykład żeby to było utf-8 tak input stream reader możemy podać
teraz buffered reader'owi z tego względu że jest to reader tak jest to
klasa która jest pewnego rodzaju pomostem i teraz identyczny trick można
zrobić ze strumieniami wyjściowymi dla nich będziemy wykorzystywali
output stream writera tak powinno to wyglądać w ten sposób jako
że output stream writer jest analogicznie writerem to możemy go podać
do buffered writer tutaj możemy teraz niezależnie od siebie specyfikować
jaki ma być kodowanie wejściowego pliku tak czyli tutaj będzie utf-8
bo lorem jest w utf-8 właśnie ale możemy też zapisywać
zawartość tego pierwszego pliku z innym kodowaniem do drugiego na przykład możemy
sobie stworzyć teraz output utf-16 tak
txt do niego już pisać z innym kodowaniem teraz uruchommy ten program
okej powstał drugi plik który nam widać że się otwiera identycznie tak
ale jeżeli sprawdzimy kodowanie to jest to utf-16 w tym momencie teraz zobaczmy
jak jeszcze zmienić kodowanie w momencie kiedy wykorzystujemy metody fabrykujące
z klasy files w przypadku tych metod możemy tutaj podać jako parametr
również kodowanie tak charset tutaj zobaczymy sobie że
jednym z przeciążeń tej metody jest już wersja przyjmująca właśnie charset w
przypadku writera jest identycznie będzie to po prostu wyglądało w ten sposób zauważ
również że jeżeli nie wiemy jakie dokładnie ma być kodowanie to
możemy również wykorzystać charset default charset i on
w tym momencie będzie właśnie patrzył na ten properties który jest podawany więc
jeżeli nie wiemy w jakimś miejscu w naszym kodzie jakiego charsetu będziemy
używali a nie chcemy się fixować na jakichś konkretny to możemy również wykorzystywać
właśnie tę metodę okej to wszystko co chciałem ci pokazać w tej lekcji dzięki
wielkie i do zobaczenia