Author name: Damian

Race Condition

Warunek wyścigu (ang. race condition) – jest to sytuacja, w której działanie systemu zależy od kolejności, w jakiej wykonają się dwie lub więcej operacji. Przykład Załóżmy, że mamy trzy operacje (metody operation1, operation2, operation3), operujące na jednej zmiennej: I teraz jeśli każda z tych operacji byłaby wykonywana równolegle, to mamy sześć możliwych kolejności wykonania: Dają …

Race Condition Czytaj dalej »

Jak fizycznie przechowywane są dane w bazach danych?

Patrząc z góry na to jak bazy danych przechowują dane możemy podzielić je na: dane (konkretne dane wprowadzane do tabel) oraz metadane (informacje o tabelach, więzach integralności… ). Bazy danych przetrzymują powyższe w oddzielnych od siebie miejscach. Miejsce składowania danych nazywane jest stronami (ang. pages), zaś metadanych nazywane jest katalogiem bazy danych (ang. database catalog): …

Jak fizycznie przechowywane są dane w bazach danych? Czytaj dalej »

Brudny zapis (Dirty write)

Jest to sytuacja, w której dwie transakcje operują na tych samych zasobach i nadpisują je sobie w trakcie ich wykonywania. Istotne jest tutaj to, że zapisu nie poprzedza odczyt (czyli jest to ślepy zapis). Przykład – uzupełnianie stanu magazynu 0. W magazynie jest 120 sztuk towaru1. Magazynier John otwiera aplikację i zdejmuje jedną sztukę towaru …

Brudny zapis (Dirty write) Czytaj dalej »

Próbkowanie procesora (CPU Sampling)

Próbkowanie procesora jest to technika polegająca na pobieraniu próbek w określonym interwale czasowym (np. co 1 milisekundę). Próbka w tym wypadku jest to stos wywołań danej aplikacji/programu (w przypadku Javy Thread Dump). Jak to działa? Najlepiej będzie to zrozumieć na przykładzie. Poniższy kod uruchamia na zmianę metody firstMethod, secondMethod oraz thirdMethod odpowiednio w proporcjach czasowych: …

Próbkowanie procesora (CPU Sampling) Czytaj dalej »

run(arg1)(arg2) – co to jest?

Jak pierwszy raz zobaczyłem coś takiego w JavaScript to pomyślałem – co się tutaj dzieje…? Jednak po chwili zastanowienia okazało się, że sprawa jest prosta – funkcja run zwraca funkcję, którą można od razu wywołać. Spójrzmy na przykład: Przy wywołaniu: Otrzymujemy wypisane w konsoli:

Monitor w Javie

Monitor to mechanizm synchronizacji wykorzystywany do zarządzania dostępem do zasobów współdzielonych przez wiele wątków. Pozwala na uzyskanie ekskluzywnego (tylko jeden wątek w danym momencie) dostępu do zasobów. W praktyce wygląda to tak, że gdy jeden wątek jest w trakcie wykonywania metody lub bloku synchronizowanego (jeśli blok jest oparty o synchronized(this)) w klasie A, to w …

Monitor w Javie Czytaj dalej »

Java Thread Dump – jak uzyskać?

jcmd jcdm jest narzędziem diagnostycznym dostępnym w JDK (w katalogu bin). Dzięki niemu wykorzystując parametr Thread.print można uzyskać Thread Dump (pierwszy parametr to id procesu): jstack jstack jest dedykowanym narzędziem do uzyskiwania Thread Dumpów, dostępnym w JDK (w katalogu bin). W podstawowej wersji przyjmuje ono id procesu:

Java Thread Dump – co zawiera?

Zaczynając od przykładu – tutaj znajdziesz kod serwera opartego o ServerSocket. Po uruchomieniu serwera i znalezieniu jego PID. za pomocą komendy (gdzie 12108 to PID): został wygenerowany następujący Thread Dump: Struktura 1. Pierwsza część to ogólny opis zawierający: PID, datę wygenerowania oraz opis JDK: 2. Teoretycznie (według wielu opisów znalezionych w Internecie) dostajemy informacje na …

Java Thread Dump – co zawiera? Czytaj dalej »