Praktyczne programowanie w Javie
Blog o Javie, backendzie i narzędziach programisty. Znajdziesz tu praktyczne
przykłady, konfiguracje, notatki z codziennej pracy i konkretne rozwiązania problemów.
Wybierz swoją ścieżkę
Jeśli jesteś pierwszy raz na blogu, zacznij od jednego z głównych obszarów.
Każda ścieżka prowadzi do praktycznych wpisów, przykładów i notatek z codziennej pracy programisty.
Java od podstaw
Składnia, klasy, obiekty, kolekcje, wyjątki, Stream API i najważniejsze mechanizmy języka Java.
Backend i Spring
REST API, Spring Boot, konfiguracja aplikacji, dobre praktyki i przykłady z pracy backend developera.
Narzędzia developera
Maven, Git, Linux, Redis, SQL i narzędzia, które realnie przydają się w codziennym programowaniu.
Najnowsze artykuły z bloga
Świeże wpisy o Javie, backendzie, narzędziach programisty, Linuksie, SQL i praktycznych problemach z codziennej pracy.
Kolejki w Java i mikroserwisach – ActiveMQ, RabbitMQ, SQS i SNS
Jak działają kolejki w Java i mikroserwisach? Poznaj Queue, ActiveMQ, RabbitMQ, Amazon SQS i SNS oraz sprawdź, kiedy warto stosować komunikację asynchroniczną.
Spock Framework w Javie – testy jednostkowe i integracyjne krok po kroku
Czym jest Spock Framework? Czym jest Spock Framework? Spock Framework to alternatywna dla JUnit biblioteka służąca do tworzenia testów jednostkowych. Jest on szczególnie popularny w projektach opartych o…
Java 21 LTS – najważniejsze zmiany od Java 18 do Java 21
Co nowego w Java 21 LTS? Java 21 to kolejna wersja Long-Term Support (LTS), która zastępuje Java 17 jako główne wydanie rekomendowane do zastosowań produkcyjnych. Oprócz poprawek wydajności…
Java 17 LTS – najważniejsze zmiany od Java 13 do Java 17
Dlaczego warto poznać zmiany w Java 17? Java 17 to jedna z najważniejszych wersji języka wydanych w ostatnich latach. Jest to wydanie Long-Term Support (LTS), które przez długi…
Wszystkie wpisy
Przeglądaj artykuły o Javie, backendzie, SQL, Linuksie, Redisie, Mavenie i narzędziach programisty.
SQL #3: Group by, having, funkcje agregujące oraz join
GROUP BY i HAVING Aby zrozumieć do czego służą funkcje agregujące, wpierw musisz pojąć założenia grupowania w języku SQL. GROUP BY i HAVING służą do grupowanie danych a potem ustawienie warunku na jego wyniku.…
SQL #2: tworzenie schematu, zapytań i edycja danych
Język SQL (ang. Structured Query Language) jest rodzajem deklaratywnego języka, który powstał w latach 70-siątych, do obsługi danych w bazach. Język ten w swojej istocie miał być intuicyjny i prosty, tak aby maksymalnie ułatwić…
SQL #1: schemat bazy danych
Historia Koncepcja baz danych jest prawie tak stara jak cała informatyka. Ogólna idea baz danych polega na posiadaniu wyspecjalizowanego programu (silnika bazodanowego), który mógłby wyszukiwać dane przede wszystkim po ich zawartości a nie po…
Java #59: struktury danych bezpieczne wątkowo
Na koniec cyku wpisów związanych z wielowątkowością, warto przyjrzeć się, jakie struktury danych bezpieczne wątkowo oferuje programistom Java. Okazuje się, że wiele problemów zostało już dawno przez kogoś rozwiązane (co jest dość częste w…
Java #58: volatile – widoczność zmiennych
Jednym z wielu problemów obok synchronizacji, jest widoczność zmiennych klasowych dla poszczególnych wątków. Nie jest to problem oczywisty, dlatego rozważę wpierw poniższy kod. Na konsoli powinno wyświetlić się: Wynik nie jest poprawny, zmiana flagi…
Java #57: egzekutory – pule wątków
Egzekutory W poprzednich lekcjach wątki były odpalane za pomocą odpalania za każdym razem osobnej instancji. Nie jest to jednak bardzo wygodny sposób. Wyobraź sobie, że musisz ten sam wątek odpalić tysiąc razy! Wymagałoby to…
Podstawy programowania – słowniczek
Zapraszam Cię do mojego mini słowniczka z pojęć informatycznych. Jeśli interesują Cię podstawy programowania, to z pewnością znajdziesz tu dużo interesującej wiedzy! Pamięć – układ zer i jedynek. Każde miejsce zapisać można wartością 0…
Java #56: obiekty niezmienne (immutable)
Obiekty niezmienne Przetwarzanie wielowątkowe niesie ze sobą jeden podstawowy problem. Praca wielu wątków na jednej klasie przechowującej stan (np. zwykła klasa typu POJO), wymaga odpowiedniej synchronizacji. Innym sposobem jest wymuszenie na klasie, która ma…
Java #55: zmienne atomowe i zamki
Poza możliwością synchronizacji wątków, używając słowa sychronized, Java udostępnia wiele dedykowanych rozwiązań związanych z pracą w środowisku wielowątkowym. Większość z nich znajdziesz w pakiecie java.util.concurrent. W tym wpisie omówię dwa z nich: zmienne atomowe…
Java #54: synchronizacja wątków (synchronized)
Praca w wielowątkowym środowisku stwarza wiele możliwości, ale też problemów. Jednym z nim jest synchronizacja wątków pracujących na tych samych zasobach. Częstym problemem, pojawiającym się w programowaniu współbieżnym, jest tzw. wyścig (ang. race condition).…