์ ์ฒด ๊ธ59 [F-Lab Mentoring] JVM 2ํ โ๏ธ ClassLoader1. JVM๊ณผ ClassLoaderJVM์ ์๋ฐ ํ๋ก๊ทธ๋จ์ด ๋์ํ๋ ๊ฐ์ ๋จธ์ ์๋ฐ ํ๋ก๊ทธ๋จ์ ์คํ ๋จ์๋ .class ๋ฐ์ดํธ์ฝ๋์ด๊ณ , ์ด ํ์ผ์ JVM ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ ค์ฃผ๋ ์ฃผ์ฒด๊ฐ ๋ฐ๋ก ํด๋์ค ๋ก๋(ClassLoader)์ฆ, ํด๋์ค ๋ก๋๋ “.class ๋ฐ์ดํธ์ฝ๋๋ฅผ ์ฐพ์ JVM ๋ด๋ถ ๊ตฌ์กฐ๋ก ์ ์ฌ(Load)ํ๊ณ , ๋งํฌ/์ด๊ธฐํ๊น์ง ์ด๋๋ ๊ฐ์ฒด”์ ์ฌ ๋์: ํ๋/๋ฉ์๋ ์๊ทธ๋์ฒ, ๋ฐ์ดํธ์ฝ๋, ๋ฐํ์ ์์ ํ(RCP) ๋ฑ ํด๋์ค ๋ฉํ๋ฐ์ดํฐ์ ์ฅ ์์น: ๋ ผ๋ฆฌ์ ์ผ๋ก Method Area, HotSpot์์ Metaspace(๋ค์ดํฐ๋ธ ๋ฉ๋ชจ๋ฆฌ) 2. ํด๋์ค ๋ก๋ฉ ๊ณผ์ ์๋ฐ ํ๋ก๊ทธ๋จ์ด A๋ผ๋ ํด๋์ค๊ฐ ์ฒ์ ์ฐธ์กฐํ๋ฉด, JVM์ ํด๋์ค ๋ก๋ ์ฒด์ธ์ ๋ฐ๋ผ๊ฐ๋ฉฐ ์ธ ๋จ๊ณ๋ฅผ ๊ฑฐ์ณ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆฐ๋ค.1) ๋ก๋ฉ(Loa.. 2025. 9. 28. [Java] ์๋ฃ๊ตฌ์กฐ (Data Structures) - Collection 2. Set ๊ณ์ด ๐ Java์ ์๋ฃ๊ตฌ์กฐArray โโ ๊ธฐ๋ณธ ์๋ฃ๊ตฌ์กฐ, ํฌ๊ธฐ ๊ณ ์ , ์ธ๋ฑ์ค ์ ๊ทผ O(1), ์ฝ์ /์ญ์ O(n) โโ ArrayList ๋ด๋ถ ๊ตฌํ์์ ์ฌ์ฉ๋จCollection (java.util.Collection ์ธํฐํ์ด์ค) โโ List โ โโ ArrayList (๋์ ๋ฐฐ์ด, ์ธ๋ฑ์ค ์ ๊ทผ ๋น ๋ฆ, ์ค๊ฐ ์ฝ์ /์ญ์ ๋๋ฆผ) โ โโ LinkedList (์ด์ค ์ฐ๊ฒฐ ๋ฆฌ์คํธ, ์๋ ์ฝ์ /์ญ์ ๋น ๋ฆ, ๋๋ค ์ ๊ทผ ๋๋ฆผ) โ โโ CopyOnWriteArrayList (์ฐ๊ธฐ ์ ์ ์ฒด ๋ณต์ฌ, ์ฝ๊ธฐ ๋น ๋ฆ, ์ฐ๊ธฐ ๋๋, ๋์์ฑ ์์ ) โ โโ Set โ โโ HashSet (ํด์ ๊ธฐ๋ฐ, ์์ ์์, ์ค๋ณต ๋ถ๊ฐ) โ โโ LinkedHas.. 2025. 9. 5. [Java] ์๋ฃ๊ตฌ์กฐ (Data Structures) - Collection 1. List ๊ณ์ด ๐ ์๋ฃ๊ตฌ์กฐ๋?์ปดํจํฐ ๊ณผํ์์ ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ์กฐ์ง, ์ ์ฅํ๊ณ ๊ด๋ฆฌํ๋ ๋ฐฉ์ ์ปฌ๋ ์ ํ๋ ์์ํฌ ๊ณ์ธต(Collection Framework Hierarchy) ์๋ฐ์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ·๊ด๋ฆฌ·๊ฒ์ํ๊ธฐ ์ํ ํ์คํ๋ ํด๋์ค์ ์ธํฐํ์ด์ค๋ค์ ๊ตฌ์กฐ์ ๊ณ์ธต๋ Collection ์ธํฐํ์ด์ค ๊ณ์ด + Map ๊ณ์ด๊น์ง ํฌํจํ ์ ์ฒด ๊ตฌ์กฐ๋ฅผ ์ง์นญ.์ "ํ๋ ์์ํฌ"์ธ์ง?์๋ฐ์์ ๋ฐฐ์ด(Array)๋ง์ผ๋ก๋ ํฌ๊ธฐ ๋ณ๊ฒฝ, ์ค๋ณต ์ ๊ฑฐ, ์ ๋ ฌ, ํ์ ๋ฑ ์ค๋ฌด์ ์ธ ์๋ฃ ๊ตฌ์กฐ ์๊ตฌ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ด๋ ค์.๊ทธ๋์ Sun/Oracle์์ ๊ณตํต๋ ์ค๊ณ ์์น ์๋, ์ธํฐํ์ด์ค + ๊ตฌํ์ฒด + ์๊ณ ๋ฆฌ์ฆ์ ๋ฌถ์ด ์ ๊ณตํ ๊ฒ ์ปฌ๋ ์ ํ๋ ์์ํฌ.์ฌ์ฌ์ฉ์ฑ·์ผ๊ด์ฑ ํ๋ณด → ๊ฐ๋ฐ์๊ฐ ์ง์ ์๋ฃ๊ตฌ์กฐ๋ฅผ ๋งค๋ฒ ๊ตฌํํ ํ์ ์์. ๐ Java์ ์๋ฃ๊ตฌ์กฐArray โโ.. 2025. 9. 4. [๊ธฐ์ด ์ํ 1] GCD/LCM (์ต๋๊ณต์ฝ์, ์ต์๊ณต๋ฐฐ์) ๐ ๊ฐ๋ 1. ์ต๋๊ณต์ฝ์(GCD)๋ ์๋ฅผ ๋์์ ๋๋ ์ ์๋ ๊ฐ์ฅ ํฐ ์.์) 12์ 18 → ๊ณต์ฝ์๋ {1,2,3,6}, ๊ทธ์ค ์ต๋๊ฐ = 6 2. ์ต์๊ณต๋ฐฐ์(LCM) ๋ ์๊ฐ ๋์์ ๋๋ ๋จ์ด์ง๋ ๊ฐ์ฅ ์์ ์์) 12์ 18 → ๋ฐฐ์ ์งํฉ์ {12,24,36,48,60,...}, {18,36,54,72,...} ๊ณตํต ๋ฐฐ์๋ {36,72,108,...}, ๊ทธ์ค ์ต์๊ฐ = 36 ๐ค ์ ์ฝ๋ฉํ ์คํธ์์ ์ค์ํ ๊น?๋ถ์/๋น์จ ๋จ์ํ์ฃผ๊ธฐ ๋ฌธ์ ๋ฐฐ์ด์ ๊ณตํต ์ฑ์ง์ค๋ณต ์ฒ๋ฆฌ ์ต์ํํนํ LCM์ ์ฌ๋ฌ ์์ ์ ๋์ ์์ ๊ณ์ฐ์ ์์ฃผ ๋ฑ์ฅํ๋ค. ๐งฎ ์ ํด๋ฆฌ๋ ํธ์ ๋ฒ (Euclidean Algorithm)1. ์ ์: ๋ ์์ ์ต๋๊ณต์ฝ์(GCD)๋ฅผ ๊ตฌํ๋ ์๊ณ ๋ฆฌ์ฆ 2. ์๋ฆฌ: ํฐ ์๋ฅผ ์์ ์๋ก ๊ณ์ ๋๋๋ค ๋ณด๋ฉด,.. 2025. 9. 3. [F-Lab Mentoring] JVM 1ํ ๐ฅ JVM์ ๊ตฌ์ฑ์์JVM์ javac๋ก ๋ณํ๋ "์๋ฐ ๋ฐ์ดํธ ์ฝ๋ (.class) "๋ฅผ ์คํํ ์ ์๋ ๊ฐ์ ์ปดํจํฐ1. ํด๋์ค ๋ก๋ ์์คํ ํด๋์ค๋ฅผ ๋ฉ๋ชจ๋ฆฌ๋ก ๋ก๋ํ๋ ์ญํ JVM์ ๋ถ๋ชจ ์ฐ์ (Parent-First) ์์ ๋ชจ๋ธ๋ก ๋ก๋ฉ ํด๋์ค๋ฅผ ๋ก๋ํ ๋ ๋จผ์ ๋ถ๋ชจ ๋ก๋์๊ฒ ์์ํ๊ณ , ๋ถ๋ชจ๊ฐ ์ฐพ์ง ๋ชปํ ๊ฒฝ์ฐ์๋ง ์์ ์ด ์ง์ ๋ก๋ 2. ๋ฐํ์ ๋ฐ์ดํฐ ์์ญํ๋ก๊ทธ๋จ ์คํ ์ค์ ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ์ค๋ ๋๋ง๋ค ๋ ๋ฆฝ์ ์ธ ๊ณต๊ฐ(Stack, PC, Native Stack)๊ณผ ๋ชจ๋ ์ค๋ ๋๊ฐ ๊ณต์ ํ๋ ๊ณต๊ฐ(Heap, Metaspace)์ผ๋ก ๋๋จ 3. ์คํ ์์ง๋ก๋๋ ๋ฐ์ดํธ ์ฝ๋๋ฅผ ์ค์ ์คํ (interpreter, JIT Compiler, Garbage Collector) - Interpreter: ๋ฐ์ดํธ ์ฝ๋๋ฅผ ํ.. 2025. 8. 31. [Java] ๋ฌธ์์ด ๊ด๋ จ ํจ์ 1 โ ๋ฌธ์์ด ์ธ๋ฑ์ฑ / ์ฌ๋ผ์ด์ฑcharAt(i): i ๋ฒ์ ์ฒดํฌ ํ์ (IndexOutOfBoundsException ์์ธ ๋ฐ์ ๊ฐ๋ฅ)๋ณต์ก๋:charAt == O(1)substring == O(k) (k=์๋ผ๋ธ ๊ธธ์ด; Java 9+๋ ์ ๋ฐฐ์ด ๋ณต์ฌ)substring์ด ์๋ผ๋ธ ๋ถ๋ถ์ ์ char ๋ฐฐ์ด๋ก ๋ณต์ฌํ๊ธฐ ๋๋ฌธ์ ์๋ณธ๊ณผ๋ ๋ ๋ฆฝ์ ์ธ ๋ฌธ์์ด์ด ๋๋ ์๋ผ๋ผ ๋๋ง๋ค ์ ๋ฐฐ์ด์ด ๋ง๋ค์ด์ ธ ๋ณต์ฌ ๋น์ฉ O(k)์ด ํ์!String s = "Hello";char c = s.charAt(1); // 'e' (0-based)String sub = s.substring(1, 4); // "ell" (start ์ธ๋ฑ์ค๋ ํฌํจ, end ์ธ๋ฑ์ค ์ ์ธ) โ ํน์ ๋ฌธ์๊ฐ ์๋์ง ํ์ธcontains๋ ๋ถ๋ถ๋ฌธ์์ด .. 2025. 8. 19. ์๊ณ ๋ฆฌ์ฆ / ์๋ฃ๊ตฌ์กฐ / ๋ณต์ก๋ 1๏ธโฃ ์๊ณ ๋ฆฌ์ฆ/์๋ฃ๊ตฌ์กฐ๋?1. ์๊ณ ๋ฆฌ์ฆ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ์ ์ฐจ์ ๋ฐฉ๋ฒ.“์ ๋ ฅ → ์ ์ฐจ → ์ถ๋ ฅ”์ ์ค๊ณ์.๊ฐ์ ์ผ์ ๋ ๋นจ๋ฆฌ/์ ์ ์์์ผ๋ก ๋๋ด๊ธฐ ์ํ ์ฌ๊ณ ๋ฐฉ๋ฒ.๋ฌธ์ ๋ฅผ ๋จ๊ณ๋ก ์ชผ๊ฐ๊ณ , ๊ฐ ๋จ๊ณ์ ์ ํ์ฑ๊ณผ ํจ์จ์ ์ฆ๋ช /๋น๊ตํ๋ค. 2. ์๋ฃ๊ตฌ์กฐ“๋ฐ์ดํฐ๋ฅผ ์ด๋ป๊ฒ ๋ด๊ณ ๊บผ๋ผ๊น?”์ ๋ํ ์ค๊ณ.๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ๊ธฐ ์ํด์ ํ์๋ฐฐ์ด/๋ฆฌ์คํธ/์คํ/ํ/ํด์/ํธ๋ฆฌ/๊ทธ๋ํ ๋ฑ์ ์ฐ์ฐ ํจํด(ํ์·์ฝ์ ·์ญ์ ·์ํ)์ ์ต์ ํํ๊ธฐ ์ํด ๊ตฌ์กฐ๋ฅผ ๋ฐ๊พผ ๊ฒฐ๊ณผ๋ฌผ 3. ์๊ณ ๋ฆฌ์ฆ๊ณผ ์๋ฃ๊ตฌ์กฐ์ ๊ด๊ณ์ต์ํ์ ์์(์๊ฐ ๋ฐ ๋ฉ๋ชจ๋ฆฌ)์ ์ฌ์ฉํ๊ธฐ ์ํด ์ ์ ํ ๊ทธ๋ฆ(์๋ฃ๊ตฌ์กฐ)๋ฅผ ์ ํํ๊ณ , ์ต์ข ์ ์ผ๋ก ๋ฌธ์ ๋ฅผ ์ ํํ๊ณ ํจ์จ์ ์ผ๋ก ํด๊ฒฐํ๋ ๊ฒ 2๏ธโฃ ์๊ฐ๋ณต์ก๋/๊ณต๊ฐ๋ณต์ก๋/๋น ์ค ํ๊ธฐ๋ฒ์ด๋?1. ์๊ฐ๋ณต์ก๋(Time Complexity)์๊ณ .. 2025. 8. 19. ์ด์์ฒด์ IPC์ ์๊ทธ๋ ์ ๋ฆฌ ๋ฆฌ๋ ์ค ํ๊ฒฝ์์ ํ๋ก์ธ์ค ๊ฐ ํต์ (IPC)๊ณผ ์๊ทธ๋ ์ฒ๋ฆฌ ๋ฐฉ์,strace ๋ช ๋ น์ด์ ๋ํ ๊ธฐ๋ณธ ๊ฐ๋ ์ ์ ๋ฆฌํ์ต๋๋ค. ๐ก IPC (Inter-Process Communication)ํ๋ก์ธ์ค ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๊ธฐ ์ํ ์๋จ.1. PIPE (์ต๋ช ํ์ดํ)๋ถ๋ชจ-์์ ํ๋ก์ธ์ค ๊ฐ ํต์ ์์ ์ฌ์ฉfork() ํธ์ถ ์ ๋ถ๋ชจ์ ์์ ๊ฐ ํ์ดํ ์ฐ๊ฒฐ ๊ฐ๋ฅํ๋์ ํ๋ก์ธ์ค๋ ๋ฐ์ดํฐ๋ฅผ ์ฐ๊ธฐ๋ง, ๋ค๋ฅธ ํ๋๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ธฐ๋ง ๊ฐ๋ฅ (ํ ์ชฝ ๋ฐฉํฅ์ผ๋ก๋ง ํต์ ์ด ๊ฐ๋ฅ, ๋ฐ์ด์ค ํต์ )๋ง์ฝ ํ๋ก์ธ์ค๊ฐ ์ฝ๊ธฐ์ ์ฐ๊ธฐ ํต์ ๋ชจ๋๋ฅผ ํด์ผ ํ๋ค๋ฉด (์๋ฐฉํฅ ํต์ ์) ๋ ๊ฐ์ PIPE ํ์2. Named PIPE (FIFO)๋ถ๋ชจ-์์ ๊ด๊ณ๊ฐ ์๋ ์๋ก ๋ค๋ฅธ ํ๋ก์ธ์ค ๊ฐ์๋ ํต์ ๊ฐ๋ฅํต์ ์ด ๊ฐ๋ฅํ ์ด์ ๋ ํ์ผ ์์คํ ์ ํ์ผ ์์คํ ์ FIFO ํ์ผ.. 2025. 4. 11. ๊ธฐ์ฌ๋จ์์ ๋ฌด๊ธฐ - Java [์ฝ๋ฉํ ์คํธ ์ฐ์ต] โค๏ธ Problem ๋๋ณด๊ธฐ ๋ฌธ์ ์ซ์๋๋ผ ๊ธฐ์ฌ๋จ์ ๊ฐ ๊ธฐ์ฌ์๊ฒ๋ 1๋ฒ๋ถํฐ number๊น์ง ๋ฒํธ๊ฐ ์ง์ ๋์ด ์์ต๋๋ค. ๊ธฐ์ฌ๋ค์ ๋ฌด๊ธฐ์ ์์ ๋ฌด๊ธฐ๋ฅผ ๊ตฌ๋งคํ๋ ค๊ณ ํฉ๋๋ค. ๊ฐ ๊ธฐ์ฌ๋ ์์ ์ ๊ธฐ์ฌ ๋ฒํธ์ ์ฝ์ ๊ฐ์์ ํด๋นํ๋ ๊ณต๊ฒฉ๋ ฅ์ ๊ฐ์ง ๋ฌด๊ธฐ๋ฅผ ๊ตฌ๋งคํ๋ ค ํฉ๋๋ค. ๋จ, ์ด์๋๋ผ์์ ํ์ฝ์ ์ํด ๊ณต๊ฒฉ๋ ฅ์ ์ ํ์์น๋ฅผ ์ ํ๊ณ , ์ ํ์์น๋ณด๋ค ํฐ ๊ณต๊ฒฉ๋ ฅ์ ๊ฐ์ง ๋ฌด๊ธฐ๋ฅผ ๊ตฌ๋งคํด์ผ ํ๋ ๊ธฐ์ฌ๋ ํ์ฝ๊ธฐ๊ด์์ ์ ํ ๊ณต๊ฒฉ๋ ฅ์ ๊ฐ์ง๋ ๋ฌด๊ธฐ๋ฅผ ๊ตฌ๋งคํด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, 15๋ฒ์ผ๋ก ์ง์ ๋ ๊ธฐ์ฌ๋จ์์ 15์ ์ฝ์๊ฐ 1, 3, 5, 15๋ก 4๊ฐ ์ด๋ฏ๋ก, ๊ณต๊ฒฉ๋ ฅ์ด 4์ธ ๋ฌด๊ธฐ๋ฅผ ๊ตฌ๋งคํฉ๋๋ค. ๋ง์ฝ, ์ด์๋๋ผ์์ ํ์ฝ์ผ๋ก ์ ํด์ง ๊ณต๊ฒฉ๋ ฅ์ ์ ํ์์น๊ฐ 3์ด๊ณ ์ ํ์์น๋ฅผ ์ด๊ณผํ ๊ธฐ์ฌ๊ฐ ์ฌ์ฉํ ๋ฌด๊ธฐ์ ๊ณต๊ฒฉ๋ ฅ์ด 2๋ผ๋ฉด, 15๋ฒ์ผ๋ก ์ง์ ๋ ๊ธฐ์ฌ๋จ์์ ๋ฌด๊ธฐ์ .. 2023. 1. 3. ์ด์ 1 2 3 4 ยทยทยท 7 ๋ค์