Author name: Damian

Maven – faza versus komenda wtyczki

Na samym wstępie pragnę wytłumaczyć co rozumiem przez fazę i co rozumiem przez komendę wtyczki.Faza – tutaj bez niespodzianek, mam na myśli fazę cyklu życia Mavena (ang. phase)Komenda wtyczki – będzie to to, co w nomenklaturze Mavena nazywa się plugin’s goal (przykładowo effective-pom będzie komendą wtyczki help) Sformułowanie z tytułu ma za zadanie przybliżyć nas …

Maven – faza versus komenda wtyczki Czytaj dalej »

Java 10 – co nowego?

W niniejszym wpisie przyjrzymy się wybranym nowościom w Java wersji 10. Pełną listę zmian można znaleźć tutaj. var – wnioskowanie typu No to doczekaliśmy się w Javie JavaScriptu 😉 Oczywiście, jest to żart. Słowo kluczowe var w języku Java nie powoduje, że zmienna staje się globalna, ale raczej to, że można do niej przypisać obiekt dowolnego …

Java 10 – co nowego? Czytaj dalej »

Java 9 – co nowego?

W niniejszym wpisie przyjrzymy się wybranym nowościom w Java wersji 9. Pełną listę zmian wprowadzonych w Java 9 można znaleźć tutaj. Moduły Moduły zostały wprowadzone w celu zapewnienia większej enkapsulacji – dzięki nim możliwe jest między innymi używanie publicznych klas w ramach modułu bez obawy, że ktoś będzie mógł zaraz ich użyć. Moduły pozwalają na …

Java 9 – co nowego? Czytaj dalej »

Notacja dużego O – wydajność algorytmu

Do określenia wydajności algorytmu wykorzystywana jest notacja dużego O. Przykładowo O(n!), O(n) czy O(n+1). Może ona określać zarówno ilość potrzebnych operacji (określana czasami złożonością czasową) lub też ilość potrzebnej pamięci do realizacji algorytmu. Jak rozumieć taką notację? Oznaczenie Interpretacja O(n2) Dla n elementowej kolekcji będzie potrzebne n2 operacji (lub też n2 jednostek pamięci) O(n+1) Dla …

Notacja dużego O – wydajność algorytmu Czytaj dalej »

Wzorzec pośrednik w API Javy (Proxy, InvocationHandler)

Java w swoim API dostarcza klas pozwalających na łatwą implementację wzorca pośrednik. Są to odpowiednio Proxy oraz InvocationHandler. Dzięki nim możliwe jest dynamiczne tworzenie pośredników dla klas. Implementacja ta wykorzystuje mechanizm oparty o refleksje i opiera się o interfejsy, stąd nie będzie możliwe użycie klasy nie implementującej żadnego interfejsu. Dynamiczny pośrednik Ktoś mógłby zapytać po …

Wzorzec pośrednik w API Javy (Proxy, InvocationHandler) Czytaj dalej »

ThreadLocal – co to takiego?

ThreadLocal jest klasą pozwalającą na łatwe przechowywanie wartości dla każdego wątku oddzielnie – każdy wątek ma swoją wartość. Korzystanie z klasy ThreadLocal Klasa ThreadLocal udostępnia podstawowe operacje takie jak:–get()–set(T value)–remove()Dzięki którym możemy przykładowo operować na wartości przypisanej do wątku: Jednak w sytuacji gdy mamy tylko jeden wątek nie ma najmniejszego sensu używanie klasy ThreadLocal. Lepiej …

ThreadLocal – co to takiego? Czytaj dalej »

Typy uogólnione – zawężenie poprzez ’?’ (unbounded wildcard)

Tak naprawdę zawężanie poprzez ’?’ mówi o tym, że typ jest kompletnie nieznany – więc w rzeczy samej nie powoduje żadnego zawężenia. List versus List<?> versus List<Object> Powstaje więc pytanie – skoro znak ’?’ nie powoduje, żadnego zawężenia to po co go używać? Może lepiej będzie nie używać w ogóle typów ogólnych (List list = …

Typy uogólnione – zawężenie poprzez ’?’ (unbounded wildcard) Czytaj dalej »

Maven – kolejność rozwiązywania tranzytywnych zależności

Jeśli nie określimy żadnej wersji dla zależności tranzytywnych, to Maven spróbuje sam wybrać odpowiednią wersję. I ogólna zasada to – wygrywa zależność będąca najbliżej. Czyli będą najbliżej w pionie jak i w poziomie. Zakładając następującą strukturę projektu Załóżmy dla potrzeb następnych akapitów następującą strukturę projektu: Gdzie D1,D2… są to po prostu zależności. A zależność, którą …

Maven – kolejność rozwiązywania tranzytywnych zależności Czytaj dalej »

Maven – settings.xml

Ustawienia globalne a ustawienia użytkownika Na początku warto zaznaczyć, że ustawienia (settings.xml) znajdują się w dwóch miejscach, co też odzwierciedla ich znaczenie:Ustawienia globalne – znajdują się w katalogu instalacji Mavena conf/settings.xmlUstawienia użytkownika – znajdują się w katalogu .m2/settings.xml użytkownika Ustawienia globalne są dziedziczone w każdych ustawieniach użytkownika gdzie mogą być nadpisane. Podstawowe ustawienia W pliku …

Maven – settings.xml Czytaj dalej »

TypeScript – nadpisywanie za pomocą dekoratorów

Jeśli dekoratory to dla Ciebie obcy temat to zapraszam do wprowdzenia. Nadpisywanie konstruktora za pomocą dekoratorów Co ciekawe TypeScript pozwala na napisanie konstruktora za pomocą dekoratorów. Nadpisywanie konstruktora – dekorator bezargumentowy Poniżej mamy najbardziej generyczną formę dekoratora nadpisującego konstruktor klasy. Możemy go zastosować na dowolnej klasie dzięki typowi generycznemu T. Nadpisywanie konstruktora – dekorator przyjmujący …

TypeScript – nadpisywanie za pomocą dekoratorów Czytaj dalej »