CS9 [์๊ณ ๋ฆฌ์ฆ] ๊น์ด ์ฐ์ vs ๋๋น ์ฐ์ ํ์, ์ด๋ค ๊ฑธ ์ธ์ ์ฐ๋์? ๐ ๊น์ด ์ฐ์ ํ์(DFS) & ๋์ด ์ฐ์ ํ์(BFS)DFS(Depth-First Search)์ BFS(Breadth-First Search)๋ ๊ทธ๋ํ๋ ํธ๋ฆฌ ๊ตฌ์กฐ์์ ๋ ธ๋๋ฅผ ํ์ํ ๋ ์ฌ์ฉํ๋ ๋ํ์ ์ธ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.๊ตฌ์กฐ๋ ๋จ์ํ์ง๋ง, ๋ฌธ์ ํด๊ฒฐ ๋ฐฉ์์ด๋ ์์ฉ ํฌ์ธํธ๊ฐ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ์๋ฃ๊ตฌ์กฐ/์๊ณ ๋ฆฌ์ฆ ๋ฉด์ , ์ฝ๋ฉํ ์คํธ, ์ค๋ฌด ๋ก์ง ์ค๊ผ ๋ฑ์์ ์์ฃผ ํ์ฉ๋๋ค. โ DFS์ BFS ์ฐจ์ด ํ๋์ ๋ณด๊ธฐ๊ตฌ๋ถDFS (๊น์ด ์ฐ์ ํ์)BFS (๋์ด ์ฐ์ ํ์)ํ์ ์์ํ ๋ฐฉํฅ์ผ๋ก ๊ณ์ ๊น๊ฒ ๋ค์ด๊ฐ๊ฐ๊น์ด ๋ ธ๋๋ถํฐ ๋๊ฒ ํ์์๋ฃ๊ตฌ์กฐ์คํ(์ฌ๊ท ๋๋ ๋ช ์์ ์คํ)ํ๊ตฌํ ๋ฐฉ์์ฃผ๋ก ์ฌ๊ท๋ก ๊ตฌํ๋ฐ๋ณต๋ฌธ + ํ ์ฌ์ฉ์ฌ์ฉ ์์๋ฏธ๋ก ํ์, ๋ฐฑํธ๋ํน์ต๋จ ๊ฑฐ๋ฆฌ ํ์, ๋คํธ์ํฌ ํ์๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์๋์ ์ผ๋ก ์ ์์๋์ ์ผ๋ก ๋ง์์๊ฐ๋ณต์ก๋O(.. 2025. 8. 7. [JPA] ID ์์ฑ ์ ๋ต ์์ ์ ๋ฆฌ (GenerationType 4๊ฐ์ง ๋น๊ต) ๐ JPA ID ์์ฑ ์ ๋ตJPA์์ ์ํฐํฐ์ ๊ธฐ๋ณธ ํค(ID)๋ ์ง์ ํ ๋นํ๊ฑฐ๋, JPA๊ฐ ์๋์ผ๋ก ์์ฑํ๋๋ก ์์ํ ์ ์๋ค.์๋ ์์ฑ ์ ๋ต์ ์ฌ์ฉํ ๊ฒฝ์ฐ, @GeneratedValue์ strategy ์ต์ ์ ํตํด ์ํ๋ ID ์์ฑ ๋ฐฉ์์ ์ง์ ํ ์ ์๋ค. โ ID ์์ฑ ์ ๋ต์ 2๊ฐ์ง๋ก ๋๋๋ค์ ๋ต ์ ํ์ค๋ช ์ง์ ํ ๋น๊ฐ๋ฐ์๊ฐ ์ง์ ID ๊ฐ์ ์ธํ (@Id๋ง ์ฌ์ฉ)์๋ ํ ๋นJPA๊ฐ DB ๋๋ ์ ๋ต ๊ฐ์ฒด๋ฅผ ํตํด ID ์์ฑ (@Id + @GeneratedValue) ๐ ์๋ ID ์์ฑ ์ ๋ต 4๊ฐ์ง (GenerationType)1๏ธโฃ GenerationType.IDENTITYDB๊ฐ ID ์์ฑ์ ๋ด๋น (MySQL, PostgreSQL ๋ฑ์์ AUTO_INCREMENT)JPA๋ INSERT ์์ ์ DB์ ๊ฐ์ .. 2025. 8. 4. [Java] ์ผ๊ธ ์ปฌ๋ ์ (First-Class Collection)์ด๋? ๐ฆ ์ผ๊ธ ์ปฌ๋ ์ (First-Class Collection)์ด๋?์ผ๊ธ ์ปฌ๋ ์ ์ ํ๋์ ์ปฌ๋ ์ (List, Set ๋ฑ)์ ๊ฐ์ธ๋ ํด๋์ค๋ฅผ ๋ง๋ค์ด ํด๋น ํด๋์ค ์์์๋ง ์ปฌ๋ ์ ์ ๊ด๋ฆฌํ๊ณ , ๊ด๋ จ๋ ๋น์ฆ๋์ค ๋ก์ง์ ํจ๊ป ํฌํจ์ํค๋ ์ค๊ณ ํจํด์ด๋ค.์ฃผ๋ก ์ปฌ๋ ์ ์ ๋ํ ์ฑ ์ ๋ถ๋ฆฌ, ๋ถ๋ณ์ฑ ์ ์ง, ๋ก์ง ์บก์ํ๋ฅผ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉํ๋ค. ๐ ์ผ๊ธ ์ปฌ๋ ์ ๊ตฌ์กฐ ์์public class Orders { private final List orders; public Orders(List orders) { validate(orders); // ์์ฑ ์ ๊ฒ์ฆ ๋ก์ง ์ํ this.orders = new ArrayList(orders); } public void add(Order order.. 2025. 7. 31. [DB] ์ธ๋ฑ์ค๋? B+Tree ๊ตฌ์กฐ๋ถํฐ ์ค์บ ๋ฐฉ์๊น์ง ์ ๋ฆฌ ๐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธ๋ฑ์ค๋?๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธ๋ฑ์ค(Idex)๋ ๊ฒ์ ์๋๋ฅผ ํฅ์์ํค๊ธฐ ์ํ ์๋ฃ๊ตฌ์กฐ๋ก, ์ฑ ์ ์์ธ(index)์ฒ๋ผ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ์ฐพ๊ธฐ ์ํ ๋๊ตฌ์ด๋ค.์ ๋ ฌ๋ ๊ตฌ์กฐ๋ฅผ ์ ์งํ๊ธฐ ๋๋ฌธ์ ์กฐํ ์ฑ๋ฅ์ ๋ฐ์ด๋์ง๋ง, INSERT, UPDATE, DELETE ์์๋ ์ฑ๋ฅ์ด ๋จ์ด์ง ์ ์๋ค.(์ ๋ ฌ ์ ์ง์ ์ฌ๊ตฌ์ฑ ๋น์ฉ ๋๋ฌธ) โ ์ธ๋ฑ์ค๋ ์ด๋ค ์๋ฃ๊ตฌ์กฐ๋ก ๊ตฌํ๋ ๊น?๋๋ถ๋ถ์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค(RDBMS)๋ B-Tree ๋๋ B+Tree ๊ธฐ๋ฐ ์ธ๋ฑ์ค ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๋ค.(MySQL์ InnoDB ์คํ ๋ฆฌ์ง ์์ง ๊ธฐ์ค์ผ๋ก ์ ๋ฆฌํ ์์ ) ๐ณ B+Tree ์ธ๋ฑ์ค ๊ตฌ์กฐB+Tree๋ B-Tree์ ๋ณํ์ผ๋ก ๋ชจ๋ ์ค์ ๋ฐ์ดํฐ(๋ ์ฝ๋ ์์น)๋ ๋ฆฌํ ๋ ธ๋์๋ง ์กด์ฌํญ์ ์ ๋ ฌ๋ ์ํ ์ ์ง(→ ๋ฒ์ ์กฐํ๊ฐ ๋น ๋ฅด๋ค, ์์ฐจ ์ .. 2025. 7. 29. [DB] ํธ๋์ญ์ ๊ฒฉ๋ฆฌ ์์ค ์๋ฒฝ ์ ๋ฆฌ! (Isolation Level) ๐ ํธ๋์ญ์ ๊ฒฉ๋ฆฌ ์์ค์ด๋?ํธ๋์ญ์ ๊ฒฉ๋ฆฌ ์์ค(Isolation Level)์ ๋์์ ์คํ๋๋ ํธ๋์ญ์ ๋ค์ด ์๋ก์ ์์ ์ ์ผ๋ง๋ ์ํฅ์ ๋ฏธ์น์ง ์๋๋ก ํ ๊ฒ์ธ์ง๋ฅผ ๊ฒฐ์ ํ๋ ๊ธฐ์ค์ด๋ค.๊ฒฉ๋ฆฌ ์์ค์ด ๋ฎ์์๋ก ๋์ ์ฒ๋ฆฌ ๋ฅ๋ ฅ(์ฑ๋ฅ)์ ๋์์ง์ง๋ง ๋ฐ์ดํฐ ์ผ๊ด์ฑ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค.๋ฐ๋๋ก ๊ฒฉ๋ฆฌ ์์ค์ด ๋์์๋ก ์ ํฉ์ฑ์ ํฅ์๋์ง๋ง ์ฑ๋ฅ์ด ์ ํ๋ ์ ์๋ค. โ ํธ๋์ญ์ ๊ฒฉ๋ฆฌ ์์ค 4๊ฐ์ง๊ฒฉ๋ฆฌ ์์ค๋ณด์ฅ ์์ค๋ฐ์ ๊ฐ๋ฅํ ๋ฌธ์ READ UNCOMMITTED๊ฐ์ฅ ๋ฎ์Dirty Read, Non-Repeatable Read, Phantom ReadREAD COMMITTED๋ฎ์Non-Repeatable Read, Phantom ReadREPEATABLE READ๋์Phantom ReadSERIALIZABLE๊ฐ์ฅ ๋์์์ (์ฑ.. 2025. 7. 28. [DB] ACID๋? ํธ๋์ญ์ ์ 4๋ ์์ฑ ํ ๋ฒ์ ์ ๋ฆฌ ๐พ ACID๋?๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ํธ๋์ญ์ (Transaction)์ด ์์ ํ๊ฒ ์ฒ๋ฆฌ๋๊ธฐ ์ํด ๋ฐ๋์ ์ง์ผ์ผ ํ๋ 4๊ฐ์ง ์์ฑ์ ์๋ฏธํ๋ค.ํธ๋์ญ์ ์ ํ๋์ ์์ ๋จ์์ด๋ฉฐ, ์ด ์์ ์ ์ ๋ถ ์ํ๋๊ฑฐ๋ ์ ํ ์ํ๋์ง ์์์ผ ํ๋ค. โ ACID 4๊ฐ์ง ์์ฑ ์์ฝ์ฝ์ด์ด๋ฆ์๋ฏธ ์์ฝA์์์ฑ (Atomicity)์ ๋ถ ์ํ๋๊ฑฐ๋, ์ ํ ์ํ๋์ง ์์์ผ ํ๋ค.C์ผ๊ด์ฑ (Consistency)ํธ๋์ญ์ ์ ํ์ ๋ฐ์ดํฐ ์ํ๊ฐ ์ผ๊ด๋์ด์ผ ํ๋ค.I๊ณ ๋ฆฝ์ฑ (Isolation)๋์์ ์คํ๋๋ ํธ๋์ญ์ ์ ์๋ก ๊ฐ์ญํ์ง ์์์ผ ํ๋ค.D์ง์์ฑ (Durability)ํธ๋์ญ์ ์ด ์ฑ๊ณตํ๋ฉด ๊ฒฐ๊ณผ๋ ์๊ตฌํ ๋ณด์กด๋์ด์ผ ํ๋ค. ๐ ๊ฐ ์์ฑ ์์ธํ ์์๋ณด๊ธฐ1๏ธโฃ A - ์์์ฑ (Atomicity)๐ ํธ๋์ญ์ ๋ด ๋ชจ๋ ์์ ์ ์ ๋ถ ์ฑ๊ณตํ๊ฑฐ๋, ์ ๋ถ .. 2025. 7. 24. ์ด์ 1 2 ๋ค์