๐ญComputer Science๐ญ (18) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ [JAVA] Classpath : ํด๋์คํจ์ค ํด๋์คํจ์ค ํด๋์ค๋ฅผ ์ฐพ๋ ๊ธฐ์ค ๊ฒฝ๋ก ์๋ฐ์ ์ดํ๋ฆฌ์ผ์ด์ ์ด ์คํ๋ ๋์ ์ฌ๋ฌ ํด๋์ค๋ค์ด ์ฌ์ฉ๋๋๋ฐ, ์ด ๋ ํ์ํ ํด๋์ค๋ค์ ๊ณ์ ์ฐพ๋๋ค. javaํ์ผ์ ์ปดํ์ผ ํ๋ฉด ๊ด๋ จ๋ ํด๋์ค์ ๋ํ ํด๋์คํ์ผ๊ณผ ClassPath๊ฐ ๋์ค๊ฒ ๋๋ค. ์ด ๋ ์์ฑ๋ classํ์ผ์ ๋ค๋ฅธ ํด๋์ ์ฎ๊ธฐ๊ณ Classpath๋ฅผ ์คํํ๋ฉด ํด๋์ค๋ฅผ ์ฐพ์ง๋ชปํด์ `ClassNotFoundException`์ด ๋ฐ์ํ๊ฒ ๋๋ค. ๋ฐ๋ผ์ `-classpath` ์ต์ ์ผ๋ก ๊ธฐ์ค ๊ฒฝ๋ก๋ฅผ ์๋ ค์ฃผ๋์ง ํ๊ฒฝ๋ณ์์ class path๋ฅผ ์ถ๊ฐํด์ค์ผ๋ง ํ๋ค. [JAVA] ํด๋์ค ์๋ฐ๋ ๊ฐ์ฒด์งํฅ ํจ๋ฌ๋ค์ ๊ธฐ๋ฐ์ ์ธ์ด์ด๋ค! ๊ฐ์ฒด์งํฅ์ด๋ ์์คํ ์ ์ํธ์์ฉํ๋ ๊ฐ์ฒด๋ค์ ํ๋ ฅ์ผ๋ก ๋ฐ๋ผ๋ณด๊ณ ์์คํ ์ ์ฑ ์์ ๋ถํ ํ์ฌ ๊ฐ๊ฐ์ ๊ฐ์ฒด๊ฐ ๋งก์ ์ฑ ์์ ๋ฉ์์ง๋ก ์ํตํ๋ฉฐ ์ํํ๋ ๋ฐฉ๋ฒ์ด๋ค. ๊ฐ์ฒด๋ ์์ ์ด ๋งก์ ์ฑ ์์ ์ํํ๊ธฐ ์ํด ๋ค๋ฅธ ๊ฐ์ฒด์ ํ๋ ฅํ๋ค. ๊ฐ ๊ฐ์ฒด๋ ํ๋ ฅ ๋ด์์ ์ ํด์ง ์ญํ ์ ์ํํ๋ฉฐ ์ญํ ์ ๊ด๋ จ๋ ์ฑ ์์ ์งํฉ์ด๋ค. ๊ฐ์ฒด๋ ๋ค๋ฅธ ๊ฐ์ฒด์ ํ๋ ฅํ๊ธฐ ์ํด ๋ฉ์์ง๋ฅผ ์ ์กํ๊ณ , ๋ฉ์์ง๋ฅผ ์์ ํ ๊ฐ์ฒด๋ ์ด๋ฅผ ์ฒ๋ฆฌํ๋๋ฐ ์ ํฉํ ๋ฉ์๋๋ฅผ ์์จ์ ์ผ๋ก ์ ํํ๋ค. -> ์กฐ์ํธ๋์ ๊ฐ์ฒด์งํฅ์ ์ฌ์ค๊ณผ ์คํด ์ธ์ฉ ํด๋์ค๋? ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ธฐ ์ํ ์ค๊ณ๋(๊ตฌํ ๋ฉ์ปค๋์ฆ) ํด๋์ค๋ [ํ๋, ์์ฑ์, ๋ฉ์๋]๋ฅผ ๊ฐ์ง ์ ์๋ค. ์ธ์คํด์ค ์ค๊ณ๋์ ๋ฐ๋ผ ๋ฉ๋ชจ๋ฆฌ์์ ์ค์ฒดํ๋ ๊ฐ์ฒด ์ด๋ป๊ฒ ํ๋ฉด Variable๋ก ์์ง๋๋ ๋ฐ์ดํฐ.. [DB] 1NF, 2NF, 3NF ๊ฐ๋จ ์ ๋ฆฌ 1NF (1์ฐจ ์ ๊ทํ) ๊ฐ ๋ก์ฐ๋ง๋ค ์ปฌ๋ผ์ ๊ฐ์ด "์์ ๊ฐ"์ผ๋ก ์กด์ฌํ๋ ๊ฒ ํ ์ปฌ๋ผ์ ์ฌ๋ฌ ๊ฐ์ ๊ฐ์ด ๋์์ ์กด์ฌํ๋ค๋ฉด ์๋ก์ด ํํ์ ๋ง๋ค์ด ์ปฌ๋ผ ๊ฐ์ ๋๋ ์ ์์๊ฐ์ ๋ง๋ค์ด ์ค ์ ์๋ค. 2NF (2์ฐจ ์ ๊ทํ) ํ ์ด๋ธ์ ๋ชจ๋ ์ปฌ๋ผ์ด ์์ ํจ์์ ์ข ์์ ๋ง์กฑํ๋ ๊ฒ. ํ ์ด๋ธ์ ๊ธฐ๋ณธ ํค์ ์ผ๋ถ๋ก ๊ฒฐ์ ํ ์ ์๋ ์ปฌ๋ผ(๋ถ๋ถ ํจ์์ ์ข ์)์ด ์์ด์ผ ํ๋ค. ๋ถ๋ถ ์ข ์์ฑ์ ๊ฐ์ง๋ ์ปฌ๋ผ์ ๋ค๋ฅธ ํ ์ด๋ธ๋ก ์ชผ๊ฐ์ ์ ๊ทํ๋ฅผ ์ํํ๋ค. 3NF (3์ฐจ ์ ๊ทํ) ๊ธฐ๋ณธํค๋ฅผ ์ ์ธํ ์์ฑ๋ค ๊ฐ "์ดํ์ ํจ์ ์ข ์"์ด ์๋ ๊ฒ. ๊ธฐ๋ณธํค ์ด์ธ์ ์ปฌ๋ผ์ด ๋ค๋ฅธ ์ปฌ๋ผ์ ๊ฒฐ์ ํ๋ฉด ์๋๋ค. ์๋ก ์ข ์์ฑ์ ๊ฐ์ง๊ณ ์๋ ์ปฌ๋ผ์ ๋ค๋ฅธ ํ ์ด๋ธ๋ก ์ชผ๊ฐ์ ์ ๊ทํ๋ฅผ ์ํํ๋ค. Reference 3months.tistory.com/193 [DB] ํจ์์ ์ข ์์ฑ (Funtional Dependency) ํจ์์ ์ข ์์ฑ์ด๋? ํ ์ด๋ธ์์ ์์ฑ๋ค ์ฌ์ด์ ์ข ์์ฑ์ ํํ X -> Y X๋ '๊ฒฐ์ ์'์ด๋ฉฐ Y๋ '์ข ์์'์ด๋ฉฐ X๊ฐ Y๋ฅผ ๊ฒฐ์ ํ๋ค. Y๊ฐ X์ ์ข ์๋์ด์๋ค๊ณ ๋ ๋ณผ ์ ์๋ค. [ํ๋ฒ, ์ด๋ฆ, ํ๋ถ] ์ผ๋ก ์ด๋ค์ง ํ ์ด๋ธ์๋ค๊ณ ํ์ ๋ ํ๋ฒ์ ์ด๋ฆ๊ณผ ํ๋ถ๋ฅผ ๊ฒฐ์ ํ ์ ์์ผ๋ฏ๋ก ๊ฒฐ์ ์๊ฐ ๋๋ค. (ํ๋ฒ -> (์ด๋ฆ, ํ๋ถ)) ๋ถ๋ถ ํจ์์ ์ข ์ ์ด๋ฆ์ [ํ๋ฒ, ๊ณผ๋ชฉ์ฝ๋]๊ฐ ๊ฒฐ์ ํ ๋ [ํ๋ฒ, ๊ณผ๋ชฉ์ฝ๋]์ ์ผ๋ถ์ธ [ํ๋ฒ]๋ง์ผ๋ก๋ ์ด๋ฆ์ ๊ฒฐ์ ํ ์ ์์ผ๋ฉด ์ด๋ฆ์ [ํ๋ฒ, ๊ณผ๋ชฉ์ฝ๋]์ ๋ถ๋ถ ํจ์์ ์ข ์์ด๋ผ๊ณ ๋ณผ ์ ์๋ค. ์์ ํจ์์ ์ข ์ ์ฑ์ ์ ๊ฒฐ์ ํ๊ธฐ ์ํด์ [ํ๋ฒ, ๊ณผ๋ชฉ์ฝ๋]๊ฐ ๋ชจ๋ ํ์ํ๋ค. ๋ ์ค ํ๋๋ง์ผ๋ก๋ ์ด๋ค๊ณผ๋ชฉ์ ๋ํ ํ์์ ์ฑ์ ์ ๊ฒฐ์ ํ ์ ์๋ค. ๊ทธ๋ฌ๋ฏ๋ก ์ฑ์ ์ [ํ๋ฒ, ๊ณผ๋ชฉ์ฝ๋]์ ์์ ํจ์์ ์ข ์.. [DB] ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฝ์ , ๊ฐฑ์ , ์ญ์ ์ด์ ํ์ (Anomaly) ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๊ทํ๋? ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์๋ชป๋ ์ค๊ณ๋ก ๋ฐ์ํ ์ ์๋ ๋ฐ์ดํฐ ์ค๋ณต๊ณผ ์ด์(Anomaly)ํ์์ ํด๊ฒฐํ๊ธฐ ์ํ ๋ฐฉ๋ฒ. ์ด์ํ์์ ์ข ๋ฅ์๋ ์ฝ์ ์ด์, ๊ฐฑ์ ์ด์, ์ญ์ ์ด์์ด ์๋ค. STUDENT_ID NAME COURSE_ID DEPARTMENT 1 park 10 ์ปดํจํฐ๊ณตํ 1 park 11 ์ปดํจํฐ๊ณตํ 3 kim 13 ์ ์์ ๋ณด 4 lee 13 ์ํ๊ณผ ์ฝ์ ์ด์ ํ์ ์ ๋ณด๋ ๋ฃ๊ณ ์ถ์๋ฐ ํด๋น ํ์์ด ์ด๋ ํ ์์ ๋ ์ ์ฒญํ์ง ์์๋ค๋ฉด ์ถ๊ฐ๋ ์ ์๋ ๋ฌธ์ . STUDENT_ID์ COURSE_ID๊ฐ ๊ธฐ๋ณธํค์ด๋ฏ๋ก COURSE_ID๋ NULL์ด ๋ ์ ์์ผ๋ฏ๋ก ํ์์ ์ฝ์ ๋ ์ ์๋ค.. ํ์๋ฐ์ดํฐ๊ฐ ์ถ๊ฐ๋๋ ค๋ฉด "๋ฏธ์๊ฐ"๊ณผ ๊ฐ์ ๋ถํ์ํ ๋ฐ์ดํฐ๊ฐ ํจ๊ป ์ถ๊ฐ๋์ด์ผ๋ง ํ๋ฏ๋ก ์ด๋ฐ ๋ฌธ์ ๋ฅผ "์ฝ์ ์ด์"์ด๋ผ๊ณ ํ๋ค. .. [JAVA] primitive type๊ณผ reference type ์ฐจ์ด primitive type๊ณผ reference type ์ฐจ์ด ํ๋ฆฌ๋ฏธํฐ๋ธ ํ์ ์ ๋ฉ๋ชจ๋ฆฌ์ ๊ฐ์ ์ ์ฅํ๊ณ ์๊ณ , ๋ ํผ๋ฐ์ค ํ์ ์ ๊ฐ์ฒด๊ฐ ์ ์ฅ๋์ด ์๋ ์ฃผ์๊ฐ ์ ์ฅ๋์ด ์๋ค. ๊ธฐ๋ณธ ์๋ฃํ -> byte, short, int, long (๋ฐํ์ ์คํ ์์ญ) ๊ฐ์ฒด -> String, Class, Interface, Array ๋ฑ (๊ฐ๋น์ง ์ปฌ๋ ์ ํ ์์ญ) ๋ ํผ๋ฐ์ค ํ์ ์ ์ค์ ๊ฐ์ฒด์ ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํค๊ธฐ ๋๋ฌธ์ `๋ณต์ฌ` ์์ ํญ์ ์ ์ํด์ผ ํ๋ค. Wrapper Class (๊ฐ์ฒด) int์ Inteager๊ฐ ๋๋ค ์กด์ฌํ๋ ์ด์ ๋ฅผ ๋๋์ด ์๊ฒ๋์๋ค. ํ๋ฆฌ๋ฏธํฐ๋ธ ํ์ ์ผ๋ก ํํํ ์ ์๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ฒด๋ก ๋ง๋ค์ด์ผํ๋ ๊ฒฝ์ฐ์ ์ฌ์ฉํ๊ธฐ ์ํด ๋ง๋ ๊ธฐ๋ฅ ๋ ํ์ ๊ฐ ๋ณํ์ `Boxing` ๊ณผ `Unboxing`์ด๋ผ๊ณ ํ๋ค. Wrap.. [JVM] Java Virtual Machine : ์๋ฐ ๊ฐ์ ๋จธ์ ์ด๋? JVM์ด๋? ์คํ ๊ธฐ๋ฐ์ ์๋ฐ ๊ฐ์๋จธ์ ์ผ๋ก์ ํด๋์ค ํ์ผ์ ์คํํ ์ ์๋ค. JVM์ ์ญํ ์๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ํด๋์ค ๋ก๋๋ฅผ ํตํด ์ฝ์ด๋ค์ด๊ณ ์๋ฐ API์ ํจ๊ป ์คํํ๋ ์ญํ JVM์ ํน์ง JAVA์ OS์ฌ์ด์์ ์ค๊ฐ์ ์ญํ ์ํ (OS ์ข ์์ ์ด์ง ์์) [JVM ์์ฒด๋ ์ด์์ฒด์ ์ ์์กด์ ์ด๋ฏ๋ก ๋ง๊ฒ ์ค์นํด์ผํจ] Garbage Collection์ ํตํด ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ํด์ค๋ค. JVM ๊ตฌ์ฑ Class Loader ์์ฑํ ์ธ์คํด์ค๊ฐ Runtime์์ ์ ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋ํ๊ฒ ํจ Runtime Data Areas JVM์ด ํ๋ก๊ทธ๋จ์ ์ํํ๊ธฐ ์ํด ๋ณ๋๋ก ํ ๋น๋ฐ์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ PC Register, Java Virtual Machine Stack, Native Method Stack, Method Area, Heap .. [๊ฐ์ฒด์งํฅ] ๊ฐ์ฒด์งํฅ์ ํน์ง๊ณผ ์ค๊ณ ์์น ๊ฐ์ฒด์งํฅ ํน์ง ์ถ์ํ ์ด๋ค ์์ญ์์ ํ์๋ก ํ๋ ์์ฑ์ด๋ ํ๋์ ์ถ์ถํ๋ ์์ (๊ณตํต์ , ๋ํ์ ํน์ง) ์บก์ํ ์บก์ํ๋ฅผ ํตํด ๊ฐ์ฒด ๊ฐ ๋ฎ์ ๊ฒฐํฉ๋๋ฅผ ์ ์งํ ์ ์๋ค. ์ ๋ณด์๋ ์ผ๋ฐํ ๊ด๊ณ (์์ ๊ด๊ณ) ์ฌ๋ฌ ๊ฐ์ฒด๋ค์ด ๊ฐ์ง ๊ณตํต๋ ํน์ฑ์ ํ๋์ ๊ฐ๋ ์ผ๋ก ์ฑ๋ฆฝ์ํค๋ ๊ณผ์ ๋คํ์ฑ ์๋ก ๋ค๋ฅธ ํด๋์ค์ ๊ฐ์ฒด๊ฐ ๊ฐ์ ๋ฉ์์ง๋ฅผ ๋ฐ์์ ๋ ๊ฐ์ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ๋์ํ๋ ๋ฅ๋ ฅ ๊ฐ์ฒด์งํฅ์ ์ค๊ณ ์์น ๊ฐ์ฒด์งํฅ์ ์๋ฆฌ๋ฅผ ์ด์ฉํ๋ฉด ์ข ๋ ์ ์ง๋ณด์์ ํ์ฅ์ด ์ฌ์ด ์ํํธ์จ์ด๋ฅผ ๋ง๋ค ์ ์๋ค. ๊ฐ์ฒด์งํฅ์ 5๋ ์ค๊ณ ์์น : SOLID ๋จ์ผ ์ฑ ์ ์์น SRP (Single Responsibility Principle) ๋ชจ๋ ํด๋์ค๋ ํ๋์ ์ฑ ์๋ง์ ๊ฐ์ง๋ค. ๊ฐ ํด๋์ค๋ ์ฑ ์์ ์์ ํ ์บก์ํ ํด์ผ ํ๋ค. ๊ฐ๋ฐฉ-ํ์ ์์น OCP (Open.. ์ด์ 1 2 3 ๋ค์