Archive for the ‘Must know’ Category

Jak zamienić wartości 2 zmiennych bez zmiennej tymczasowej?

Pamiętacie pewnie z Algorytmów czy Metod Programowania, jak trzeba było zamieniać wartości zmiennych miejscami, np. w algorytmach sortujących. Pisało się wtedy kod w stylu:

tmp = i
i = j
j = tmp 

Poniżej prezentuje znalezione przeze mnie sposoby, jak zamienić wartości dwóch zmiennych bez użycia zmiennej pomocniczej.
Read the rest of this entry »

Nie polegaj (tylko) na testach jednostkowych

Tomasz Nurkiewicz w swoim artykule pisze, aby nie polegać tylko i wyłącznie na testach jednostkowych. Przekonuje, że 100% pokrycie kodu testami nie wystarcza. Złożony system klasy enterprise wymaga testów integracyjnych, testów komponentów a nawet testów całego systemu.

Mechanizmy synchronizacji wątków w Javie 6

Jeśli piszesz aplikacje wielowątkowe w Javie, to prędzej czy później zainteresujesz się mechanizmami synchronizacji. Łukasz Dembiński przedstawia trzy najpopularniejsze sposoby synchronizacji wątków w Javie 6 oraz porównuje ich wydajność przy różnych współczynnikach współbieżności. W swoich porównaniach, oprócz wydajności, bierze pod uwagę także zapewnianie funkcjonalności:

  • reentrant locking
  • timed locking
  • lock polling
  • condition locking
  • shared / exclusive locking
  • lock ownership

Zapraszam do lektury.

Zagadka ze Stringami

Stosunkowo prosta lecz ciekawa zagadka dotycząca klasy String. Dlaczego po uruchomieniu poniższego kodu otrzymujemy:

<barista@javaczyherbata.pl> java StringPuzzle
true false

Read the rest of this entry »

Jak zapobiegać degradacji kodu

W 2010 roku, podczas ostatniej Javarsovii Jakub Nabrdalik z Touk opowiadał o „Biodegradacji kodu„. Stare, ale jare! Zapraszam do obejrzenia.
Read the rest of this entry »

Refaktoryzacja jest jak seks!

Dlaczego?
Oto kilka powodów:
Read the rest of this entry »

NoClassDefFoundError vs ClassNotFoundException

java.lang.NoClassDefFoundError i java.lang.ClassNotFoundException brzmią bardzo podobnie ze względu na swoje nazwy i są często mylone. Tak naprawdę ich znaczenie jest różne.

Spójrzmy na hierarchię klas:
Read the rest of this entry »

Jak pobrać PID w runtime’ie?

Jak pobrać PID w runtime’ie? Oto prosty sposób:

import java.lang.management.ManagementFactory;

public class PID {

	public static void main(String[] args) {
		final String vmName = ManagementFactory.getRuntimeMXBean().getName();
		final int position = vmName.indexOf('@');
		final String pid = vmName.substring(0, position);
		System.out.println("Your PID is: " + pid);
	}
}

Java concurrency: the hidden thread deadlocks

Pierre – Hugues Charbonneau jest konsultantem IT oraz architektem systemowym w CGI Inc specjalizującym się w Java EE, technologiach JVM oraz w optymalizacji systemów dużej skali. Jego blog Java EE Support Patterns to istna gratka dla osób zainteresowanych wątkami, współbieżnością, synchronizacją, zakleszczeniami, organizacją i problemami z pamięcią, profilowaniem czy maszyną wirtualną.

Polecam jeden z ostatnich postów: Java concurrency: the hidden thread deadlocks.

Cztery smaki odwracania (i utraty) kontroli

W styczniowym numerze magazynu programista ukazał się artykuł Sławomira Sobótki (Bottega IT Solutions) pt. Cztery smaki odwracania (i utraty) kontroli: Dependency Injection, Events, Aspect Oriented Programming, Framework. Tekst jest syntezą wieloletnich doświadczeń i przemyśleń na temat Inversion of Control. Kolejne techniki coraz to silniejszego odwracania kontroli (powiązanego z jej utratą) zostały opisane wg struktury:
Read the rest of this entry »