The wiki page is under active construction, expect bugs.

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
statnice:bakalar:b0b36pjv [2025/05/31 22:50] zapleka3statnice:bakalar:b0b36pjv [2025/06/01 10:19] (current) – [Synchronized, Volatile, Join] zapleka3
Line 1: Line 1:
-==== Programování v jazyce JAVA: vlastnosti a koncepce jazyka. Principy objektového programování. ====+====== Programování v jazyce JAVA: vlastnosti a koncepce jazyka. Principy objektového programování. ======
  
 [[https://fel.cvut.cz/cz/education/bk/predmety/50/10/p5010706.html|B0B36PJV]] [[https://cw.fel.cvut.cz/wiki/courses/b0b36pjv/prednasky|Webové stránky předmětu]] [[https://fel.cvut.cz/cz/education/bk/predmety/50/10/p5010706.html|B0B36PJV]] [[https://cw.fel.cvut.cz/wiki/courses/b0b36pjv/prednasky|Webové stránky předmětu]]
Line 491: Line 491:
 </code> </code>
  
-* `catch` může být více, podle typu výjimky. +  * `catch` může být více, podle typu výjimky. 
-* `finally` se vždy vykoná – i když dojde k výjimce nebo `return`.+  * `finally` se vždy vykoná – i když dojde k výjimce nebo `return`.
  
 ==== Try-with-resources ==== ==== Try-with-resources ====
Line 522: Line 522:
  
 ==== Best practices ==== ==== Best practices ====
-* Zachytávej co nejkonkrétnější typy výjimek, až poté obecné (`Exception`, `Throwable`). +  * Zachytávej co nejkonkrétnější typy výjimek, až poté obecné (`Exception`, `Throwable`). 
-* Nepoužívej prázdné `catch` bloky – vždy loguj nebo informuj uživatele. +  * Nepoužívej prázdné `catch` bloky – vždy loguj nebo informuj uživatele. 
-* Uvolňuj prostředky pomocí `finally` nebo `try-with-resources`. +  * Uvolňuj prostředky pomocí `finally` nebo `try-with-resources`. 
-* Přidávej popisné chybové zprávy (`new IOException("Soubor nenalezen")`). +  * Přidávej popisné chybové zprávy (`new IOException("Soubor nenalezen")`). 
-* Vlastní výjimky používej pro specifické, smysluplné chyby v aplikaci.+  * Vlastní výjimky používej pro specifické, smysluplné chyby v aplikaci.
  
 ==== Shrnutí podle typu výjimky ==== ==== Shrnutí podle typu výjimky ====
Line 576: Line 576:
 </code> </code>
  
-  * **``FileReader``** čte **znaky** (automaticky použije defaultní kódování platformy, nebo explicitně zadej např. ``StandardCharsets.UTF_8``). :contentReference[oaicite:0]{index=0}   +  * **``FileReader``** čte **znaky** (automaticky použije defaultní kódování platformy, nebo explicitně zadej např. ``StandardCharsets.UTF_8``).   
-  * **``BufferedReader``** obalí čtení do větších bloků → méně systémových volání, vyšší výkon. :contentReference[oaicite:1]{index=1}   +  * **``BufferedReader``** obalí čtení do větších bloků → méně systémových volání, vyšší výkon.  
-  * Konstrukce **try-with-resources** (Java 7+) zavře reader i v případě výjimky. :contentReference[oaicite:2]{index=2}  +  * Konstrukce **try-with-resources** (Java 7+) zavře reader i v případě výjimky.   
  
 ==== Textové vs. binární soubory ==== ==== Textové vs. binární soubory ====
-* **Textové** – čitelné pro člověka, pracujeme se znaky pomocí Reader/Writer. Nutné správné kódování (UTF-8, ASCII...). +  * **Textové** – čitelné pro člověka, pracujeme se znaky pomocí Reader/Writer. Nutné správné kódování (UTF-8, ASCII...). 
-* **Binární** – rychlejší, nečitelné, používáme InputStream/OutputStream. Vhodné pro obrázky, audio, objekty apod.+  * **Binární** – rychlejší, nečitelné, používáme InputStream/OutputStream. Vhodné pro obrázky, audio, objekty apod.
  
 ==== Serializace objektů ==== ==== Serializace objektů ====
Line 660: Line 660:
 ==== Primitiva soketu ==== ==== Primitiva soketu ====
  
-* **create** – vytvoření nového soketu   +  * **create** – vytvoření nového soketu   
-* **bind** – přiřazení lokální adresy a portu   +  * **bind** – přiřazení lokální adresy a portu   
-* **connect** – navázání spojení (klient)   +  * **connect** – navázání spojení (klient)   
-* **listen** – čekání na spojení (server)   +  * **listen** – čekání na spojení (server)   
-* **accept** – přijetí spojení   +  * **accept** – přijetí spojení   
-* **send / receive** – odeslání a příjem dat   +  * **send / receive** – odeslání a příjem dat   
-* **shutdown / close** – uzavření spojení+  * **shutdown / close** – uzavření spojení
  
 ==== Best practices ==== ==== Best practices ====
Line 758: Line 758:
  
   * synchronized – zajišťuje, že kód (kritická sekce) provádí v daném čase jen jedno vlákno   * synchronized – zajišťuje, že kód (kritická sekce) provádí v daném čase jen jedno vlákno
-  * volatile – proměnná může být měněna z více vláken, JVM nezachová její hodnotu v cache+  * volatile – proměnná může být měněna z více vláken, JVM nezachová její hodnotu v cache (když se změní na false - informuje to ostatní vlákna, ale ne jako counter)
   * join() – čeká na dokončení jiného vlákna   * join() – čeká na dokončení jiného vlákna
   * wait() / notify() – vlákna čekají a signalizují si mezi sebou (pouze uvnitř synchronized bloku)   * wait() / notify() – vlákna čekají a signalizují si mezi sebou (pouze uvnitř synchronized bloku)
Navigation

Playground

QR Code
QR Code statnice:bakalar:b0b36pjv (generated for current page)