Author name: Damian

Brudny odczyt (Dirty read)

Jest to sytuacja, w której transakcja odczytuje dane które nie zostały jeszcze zatwierdzone (commit) przez inną transakcję. Przykład – przelewy bankowe 0. Użytkownik John ma na koncie 60 zł1. Użytkownik Frank wykonuje przelew w wysokości 30 zł na konto Johna2. Użytkownik John zauważa, że ma na koncie 90 zł więc kupuje sobie upatrzoną od dawna …

Brudny odczyt (Dirty read) Czytaj dalej »

Zagubiony zapis (Lost update)

Jest to sytuacja, w której jeszcze przed zakończeniem (commit) jednej transakcji druga transakcja nadpisuje zmiany tej pierwszej. Istotnym elementem jest tutaj uprzednie sprawdzenie stanu bazy danych. Przykład – licznik odwiedzin strony 0. Załóżmy, że jeszcze nikt nie odwiedził jeszcze naszej strony, a więc licznik jest równy zero (licznik = 0)1. Pierwsza transakcja (pierwszy użytkownik wchodzi …

Zagubiony zapis (Lost update) Czytaj dalej »

Spring @Transactional pułapki

private Żadna metoda prywatna oznaczona adnotacją @Transactional nie będzie wykonana w ramach transakcji (chyba, że metoda ją wołająca już była w jakiejś). Na pewno adnotacja @Transactional nie zadziała na takiej metodzie. try-catch Jeśli metoda A oznaczona @Transactional wyłapuje wszystkie wyjątki rzucane przez metodę B (także oznaczoną @Transactional), to gdy metoda B rzuci wyjątek, dostaniemy UnexpectedRollbackException …

Spring @Transactional pułapki Czytaj dalej »

Trzy kropki…

W JavaScript trzy kropki można wykorzystać na dwa sposoby: 1. Aby uzyskać zmienną listę argumentów funkcji (rest parameters)2. Aby zamienić tablicę na pojedyncze zmienne (spread operator) Zmienna lista argumentów Zamiana tablicy na pojedyncze zmienne

Klastrujący i nieklastrujący indeks [clustered & non clustered]

Indeks klastrujący (clustered) Stworzenie takiego indeksu powoduje zmianę kolejności przechowywania elementów oryginalnej tabeli tak, żeby była posortowana po kluczu indeksu. Czyli powiedzmy mając tabelę „Pracownicy” i nakładając na nią indeks klastrujący oparty o kolumnę „zarobki” powodujemy przesortowanie wszystkich elementów tabeli według klucza „zarobki”: Id Name 1 John 2 Patrick 3 Anthony Dodając indeks klastrujący na …

Klastrujący i nieklastrujący indeks [clustered & non clustered] Czytaj dalej »

Transakcja oznaczona jako rollbackOnly

Transakcja oznaczona jako rollbackOnly, jak sama nazwa mówi, jest przeznaczona tylko do wycofania. Czyli po zakończeniu przebiegu wszystkich operacji w ramach transakcji, nie jest wykonywana operacja commit (zatwierdzenie) tylko rollback (wycofanie). Po co jakaś flaga, skoro mamy już mechanizm obsługi transakcji w bazach danych? W tradycyjnej transakcji mamy najczęściej taką sytuację: Ale już w świecie …

Transakcja oznaczona jako rollbackOnly Czytaj dalej »

S.O.L.I.D.

SOLID – to zbiór reguł zaproponowanych przez Roberta C. Martina, mających na celu poprawienie jakości kodu. S – Single responsible principle – zasada pojedynczej odpowiedzialności Klasa/moduł/metoda powinna robić jedną rzecz (nie rozmieniać się na drobne). O – Open-Closed principle – zasada otwarty-zamknięty Klasa powinna być otwarta na rozszerzenia, ale zamknięta na modyfikacje. Przykład klasy niespełniającej …

S.O.L.I.D. Czytaj dalej »

@SuppressWarnings – co tutaj można wpisać?

@SuppressWarnings w dużym skrócie służy do „wyciszania” ostrzeżeń. Tylko, że jest tutaj mały problem – parametryzacja jest dokonana za pomocą ciągów znaków (String), co nie ułatwia korzystania z tej adnotacji. Przyjrzymy się tutaj oficjalnym literałom jak i tym wspieranym przez IntelliJ IDEA. Wspierane literały w Java 8 Jako że, literały są wspierane per wersja, będę …

@SuppressWarnings – co tutaj można wpisać? Czytaj dalej »

Moduły natywne w JavaScript

Moduł to po prostu plik. A żeby przeglądarka traktowała taki plik jako moduł należy dodać type=”module” do tagu script. index.html Co odróżnia moduł od zwykłego pliku JS? export/import W przypadku modułów aby skorzystać z danych znajdujących się w innym module (pliku) należy jawnie je wyeksportować a następnie zaimportować tam gdzie są potrzebne (w „klasycznym” JavaScript …

Moduły natywne w JavaScript Czytaj dalej »