Odovzdavanie (prezentovanie) projektov cviciacemu.
Author: Juraj Petrík
-
10. Cvicenie
Stiahnite si kod z 9. prednasky.
Uloha (java.lang.reflect)
Implementujte (s pouzitim reflexie) do triedy Steve metodu, ktora po zavolani vrati hodnoty vsetkych atributov triedy ako String.
Vystup bude napr. takyto:
logger: org.apache.logging.slf4j.Log4jLogger@30c15d8b serialVersionUID: 1 uuid: fa3f655e-231c-44fd-b8d8-469fa18250e9 hunger: 1 ...
Finalizujte projekty, konzultujte ich s Vasim cviciacim.
-
9. Cvicenie
Stiahnite si zdrojovy kod z 8. prednasky
IO
Vytvorte benchmark na porovnanie rychlosti Bufferovaneho zapisu do suboru vs nebufferovaneho zapisu do suboru. Nezabudnite, ze pre to aby vysledky boli statisticke vysledne, tak tieto testy nestaci spustit iba raz.
Spriemerujte hodnoty, vypocitajte napr. aj stdev (standardnu odchylku).
JavaDoc
Zdokumentujte triedu Steve pomocou JavaDoc. Vygenerujte JavaDoc pre cely projekt.
Logovanie
Pridajte logovanie do triedy Steve, pouzite viacero urovni. Pokracujte v pouzivani “stacku” (slf4j + log4j2) z prednasky, prestudujte si dokumentaciu ku konfiguracii log4j2 – https://logging.apache.org/log4j/2.x/manual/configuration.html – experimentujte s konfiguracnym suborom.
Poznamka: V pripade, ze IDE nestiahne samo potrebne kniznice, tak si pridajte a spustite tento Maven target:
-
8. Cvicenie
Stiahnite si kod z poslednej prednasky. Pracujte s triedou Steve, vase riesenia otestuje na netrivialnej vzorke.
Streamy
- Spocitajte vsetkych Stevov, ktori maju menej ako 50% svojho maximalneho healhu.
- Vytvorte mapu kde bude kluc ci Steve ma/nema godMode a hodnota bude priemerna hodnota healtu.
- Najdite top 3 Stevov s attackPower. Vysledok je Mapa, kluc je meno Steva a hodnota je jeho attackPower.
- Najdite vsetkych Stevov, ktori maju viac ako 50% svojho maxHealth a zaroven menej ako 40% svojho maxHunger. Zoradte ich podla mena.
Serializacia
- Ulozte (serializujte) zoznam Stevov.
- Nacitajte (deserializujte) zoznam Stevov.
-
7. Cvicenie
Stiahnite si zdrojovy kod zo 6. prednasky.
Uloha 1
Identifikujte a opravte chyby v nasledujucom kuse kodu (skuste si ho pustit, aj viackrat):
public class FunWithThreadsLive { List<String> listString = new ArrayList<>(); public static void main(String[] params) throws InterruptedException { FunWithThreadsLive f = new FunWithThreadsLive(); Random rand = new Random(); for (int i = 0; i <= 100; i++) f.listString.add(String.valueOf(UUID.randomUUID())); Thread threadOne = new Thread(() -> { for (String s : f.listString) System.out.println(s); }); Thread threadTwo = new Thread(() -> { for (int i = 0; i < 99; i++) f.listString.remove(rand.nextInt(f.listString.size())); }); threadTwo.start(); threadOne.start(); threadTwo.join(); threadOne.join(); }
Uloha 2
Vytvorte novy (dalsi view) pre triedu Steve v baliku mvc.
Tento view bude view pre CRUD operacie s triedou Steve v konzole (CLI), bude implementovat interface SteveView.
Bonus: aj v baliku mvp