Az si neco vyberete, tak mi dejte vedet, ktery priklad chcete resit. Ja ho modifikuju na zaklade odevzdanych ukolu (i 0 odevzdanych ukolu muze u nekterych prikladu znamenat, ze nebudete muset implementovat uplne vse) a podle toho jestli ho jiz resi i nekdo dalsi. Pokud se vam tu nic nezamlouva a chteli byste vytvorit neco jineho, tak mi poslete mail s tim co checte delat a muzeme se domluvit i na necem dalsim. Vetsina veci by mela jit udelat dle prikladu, ktere se probiraly na cvicenich. Priklady lze stahnout bud primo z CVS prikazem cvs -d :pserver:anonymous@kmlinux.fjfi.cvut.cz:/home/Data/cvsroot co sos1 nebo z webu http://kmlinux.fjfi.cvut.cz/~vokac/activities/2005/sos1/sos1.tar.gz 1) multithreadove vyhledavani souboru v adresarich obsahujicich zadany regex * na prikazove radce predat adresar, regularni vyraz a parametry -i pro case insensitive hledani -v pro vyhledani souboru neobahujicich dany regex -q nevypisovat nalezene radky -H pokud vypsat nazev souboru, ktery obsahuje dany regex -s vypsat summary * pokud neni zadan parametr -q, tak vypisovat vsechny radky obsahujici dany regex * pouzit vice threadu na prochazeni adresaru a/nebo prohledavani souboru na regex * vypsat (pokud bylo predano -s) - pocet souboru obsahujicich dany regex - pocet radek, ktere vyhovovali regex - seznam vyhovujicich souboru a pocet radek, ktere v nem vyhovovali regex 2) reflexe - informace, vytvareni objektu a volani metod za behu * Zjistovani informaci - ze standarniho vstupu nactu napr.: c java.lang.String Vypise seznam konstruktoru (a parametru) pro java.lang.String m java.lang.String Vypise seznam metod (a parametru) a java.lang.String Vypise seznam atributu * Vytvareni instanci - ze standardniho vstupu nactu napr.: a:java.lang.String Vypise mi to ocislovany seznam konstruktoru, napr. 1. java.lang.String() 2. java.lang.String(java.lang.String) 3. ... 2 "test" To mi pres reflexi vytvori novou instanci Stringu s parametrem "test". Tuto instanci ulozi do Map pod klic "a". Pokud dale zadam treba b=java.lang.String 2 a Tak to vytvori novou instanci, kdy do kontruktoru preda instanci ulozenou v Map pod klicem "a" * Volani metod - ze standardniho vstupu nactu napr.: a.lenght Vypise ocislovany seznam metod "lenght" pro instanci ulozenou v Map pod klicem "a" Zadam cislo metody podobne jako u konstruktoru a pozadovane parametry. Pokud dana metoda neco vraci, vypisu to standardni vystup b=a.lenght Toto se chova stejne jako predesly pripad, ale vysledek ulozi to Map pod klic "b" 3) kontejnery, trideni dat * vlastni implementace nekolika (alespon dvou) sortovacich algoritmu * porovnani jejich rychlosti navzajem (a se standarnim sort) * porovnani rychlosti na ruznych kontejnerech * porovnani rychlosti vkladani, hledani a mazani prvku u ruznych kontejneru - normalni a multithreadova aplikace - zavislost poctu operaci na poctu vlaken - pro multithreadovou verzi zajistit spravnou synchronizaci tam kde je potreba 4) I/O performance * porovnani rychlosti zapisu/cteni ze souboru pomoci - Input/OutputStream - Reader/Writer - NIO * pouzit ruzne zabaleni, napr. samotny FileInputStream, DataInputStream(FileInputStream), BufferedInputStream(FileInputStream), GZIPInputStream(FileInputStream) * porovnavat jen to co "dava smysl" * multithreadovy pristup 5) libovolna (netrivialni) ulohu na numeriku * porovnani rychlosti ruznych JVM (vyrobci, verze, ...) * porovnani primitivnich operaci - +,-,*,/ - pres reflexi vytahnout vsechny "rozumne" metody z java.lang.Math a zavolat je na nejaky soubor cisel - provest na ruzne datove typy byte, short, int, long, float, double a take BigDecimal, BigInteger) 6) ...