๊ฐ๋จํ ๊ฐ๋ ๋ค์ ์ ๋ฆฌํด๋ณด๋ฉฐ ๋จธ๋ฆฌ ์์ ๋ฃ์~
Vector : ๋๊ธฐ์. ํ ์ค๋ ๋๊ฐ ๋ฒกํฐ ์์ ์ค์ด๋ฉด ๋ค๋ฅธ ์ค๋ ๋๊ฐ ๋ฒกํฐ ๋ณด์ ๋ถ๊ฐ๋ฅ
ArrayList : ๋น๋๊ธฐ์. ์ฌ๋ฌ ์ค๋ ๋๊ฐ arraylist์์ ๋์ ์์ ์ด ๊ฐ๋ฅ
์ง๋ ฌํ. ๊ฐ์ฒด์ ์ํ ํน์ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ๊ธฐ๋กํ ์ ์๋ ํฌ๋งท์ผ๋ก ๋ณํํด์ค
๋์ค์ ์ฌ๊ตฌ์ฑ ํ ์ ์๊ฒ ์๋ฐ ๊ฐ์ฒด๋ฅผ JSON์ผ๋ก ๋ณํํด์ฃผ๊ฑฐ๋ JSON์ ์๋ฐ ๊ฐ์ฒด๋ก ๋ณํํด์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
๋ฐ์ดํฐ ์ฝ์ ๋ฐ ์ญ์ ์, ๊ธฐ์กด ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ด๋ด๊ฑฐ๋ ์ฑ์ฐ์ง ์๊ณ ๋ฐ์ดํฐ์ ์ฐ๊ด๋ ๊ณ ์ ํ ์ซ์๋ฅผ ์์ฑํด ์ธ๋ฑ์ค๋ก ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ
๊ฒ์ ์๋๊ฐ ๋งค์ฐ ๋น ๋ฅด๋ค
๊ฐ์ ์ํ ํธ์ถ : ๊ฐ์ ๋ณต์ฌํด์ ์๋ก์ด ํจ์๋ก ๋๊ธฐ๋ ํธ์ถ ๋ฐฉ์. ์๋ณธ ๊ฐ ๋ณ๊ฒฝX
์ฐธ์กฐ์ ์ํ ํธ์ถ : ์ฃผ์ ๊ฐ์ ์ธ์๋ก ์ ๋ฌํ๋ ํธ์ถ ๋ฐฉ์. ์๋ณธ ๊ฐ ๋ณ๊ฒฝO
๋ฐฐ์ด์ ์ธ๋ฑ์ค๋ฅผ ๊ฐ์ง. ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ํ๋ฒ์ ์ ๊ทผํ๊ธฐ ๋๋ฌธ์ ์ ๊ทผ ์๋ ๋น ๋ฆ.
ํฌ๊ธฐ ๋ณ๊ฒฝ์ด ๋ถ๊ฐ๋ฅํ๋ฉฐ, ๋ฐ์ดํฐ ์ฝ์ ๋ฐ ์ญ์ ์ ๊ทธ ์์น์ ๋ค์ ์์น๋ถํฐ ๋ชจ๋ ๋ฐ์ดํฐ ์์น๋ฅผ ๋ณ๊ฒฝํด์ผ ๋๋ ๋จ์ ์กด์ฌ
์ฐ๊ฒฐ๋ฆฌ์คํธ๋ ์ธ๋ฑ์ค ๋์ ์ ํ์ฌ ์์น์ ์ด์ /๋ค์ ์์น๋ฅผ ๊ธฐ์ตํจ.
ํฌ๊ธฐ๋ ๊ฐ๋ณ์ . ์ธ๋ฑ์ค ์ ๊ทผ์ด ์๋๊ธฐ ๋๋ฌธ์ ์ฐ๊ฒฐ๋์ด ์๋ ๋งํฌ๋ฅผ ์ญ ๋ฐ๋ผ๊ฐ์ผ ์ ๊ทผ์ด ๊ฐ๋ฅํจ. (๋ฐ๋ผ์ ๋ฐฐ์ด๋ณด๋ค ์๋ ๋๋ฆผ)
๋ฐ์ดํฐ ์ฝ์ ๋ฐ ์ญ์ ๋ ๋ ผ๋ฆฌ์ ์ฃผ์๋ง ๋ฐ๊ฟ์ฃผ๋ฉด ๋๊ธฐ ๋๋ฌธ์ ๋งค์ฐ ์ฉ์ดํจ
- ๋ฐ์ดํฐ์ ์์ด ๋ง๊ณ ์ฝ์ /์ญ์ ๊ฐ ์์. ๋ฐ์ดํฐ ๊ฒ์์ ๋ง์ด ํด์ผํ ๋ โ Array
- ๋ฐ์ดํฐ์ ์์ด ์ ๊ณ ์ฝ์ /์ญ์ ๋น๋ฒํจ โ LinkedList
์์ฑ๋ฐฉ๋ฒ : Runnable(์ธํฐํ์ด์ค)๋ก ์ ์ธ๋์ด ์๋ ํด๋์ค or Thread ํด๋์ค๋ฅผ ์์๋ฐ์์ run() ๋ฉ์๋๋ฅผ ๊ตฌํํด์ฃผ๋ฉด ๋จ
์ฅ์ : ๋น ๋ฅธ ํ๋ก์ธ์ค ์์ฑ, ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ๊ฒ ์ฌ์ฉ ๊ฐ๋ฅ, ์ ๋ณด ๊ณต์ ๊ฐ ์ฌ์
๋จ์ : ๋ฐ๋๋ฝ์ ๋น ์ง ์ํ์ด ์กด์ฌ
์ ์ฒ๋ฆฌ : #define, #include ์ง์์ ํด์
์ปดํ์ผ : ๊ณ ๊ธ ์ธ์ด ์์ค ํ๋ก๊ทธ๋จ ์ ๋ ฅ ๋ฐ๊ณ , ์ด์ ๋ธ๋ฆฌ ํ์ผ ๋ง๋ฌ
์ด์ ๋ธ : ์ด์ ๋ธ๋ฆฌ ํ์ผ์ ์ค๋ธ์ ํธ ํ์ผ๋ก ๋ง๋ฌ
๋งํฌ : ์ค๋ธ์ ํธ ํ์ผ์ ์ฎ์ด ์คํํ์ผ์ ๋ง๋ค๊ณ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํจ์ ์ฐ๊ฒฐ
์คํ
static์ ์ฌ์ฉํด ์ ์ธํ๋ค.
์ธ์คํด์ค ๋ณ์์ ์ ๊ทผํ ์ผ์ด ์์ผ๋ฉด, static ๋ฉ์๋๋ฅผ ์ ์ธํ์ฌ ํธ์ถํ์
๋ชจ๋ ๊ฐ์ฒด๊ฐ ์๋ก ๊ณต์ ํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ ์ฝ๋๊ณ ์ฐ์์ ์ผ๋ก ๊ทธ ๊ฐ์ ํ๋ฆ์ ์ด์ด๊ฐ ์ ์๋ ์ฅ์ ์ด ์กด์ฌ
๊ตฌ์กฐ์ฒด๋ ํ๋์ ๊ตฌ์กฐ๋ก ๋ฌถ์ผ ์ ์๋ ๋ณ์๋ค์ ์งํฉ์ด๋ค.
ํด๋์ค๋ ๋ณ์๋ฟ๋ง ์๋๋ผ, ๋ฉ์๋๋ ํฌํจ์ํฌ ์ ์์
(๋ฌผ๋ก ํจ์ ํฌ์ธํฐ๋ฅผ ์ด์ฉํด ๊ตฌ์กฐ์ฒด๋ ํด๋์ค์ฒ๋ผ ๋ง๋ค์ด ๋ผ ์๋ ์๋ค.)
ํฌ์ธํฐ๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ์ ์ฅํ๋ ๋ณ์์
์ฃผ์๋ฅผ ์ง์นญํ๊ณ ์๋ ๊ณณ์ธ๋ฐ, ์๋ฅผ ๋ค๋ฉด ์๋ฆฌ๋ฒ ์ดํฐ์์ ํฌ์ธํฐ๋ ํด๋น ์ธต์ ํ์ํ๋ ๋ฒํผ์ด๋ผ๊ณ ํ ์ ์์. 10์ธต์ ๋๋ฅด๋ฉด 10์ธต์ผ๋ก ์ด๋ํ๋ฏ, ํด๋น ์์น๋ฅผ ๊ฐ๋ฆฌํค๊ณ ์๋ ๋ณ์!
ํฌ์ธํฐ๋ฅผ ์ฌ์ฉํ ๋ ์ฃผ์ํ ์ ์, ์ด๋ค ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํค๊ณ ์์ด์ผ๋ง ์ฌ์ฉ์ด ๊ฐ๋ฅํจ
ํ๋ก์ธ์ค๋ ๋ฉ๋ชจ๋ฆฌ ์์์ ์คํ์ค์ธ ํ๋ก๊ทธ๋จ์ ๋งํ๋ฉฐ, ์ค๋ ๋๋ ์ด ํ๋ก์ธ์ค ์์์ ์คํ๋๋ ํ๋ฆ ๋จ์๋ฅผ ๋งํ๋ค.
ํ๋ก์ธ์ค๋ง๋ค ์ต์ ํ๋์ ์ค๋ ๋๋ฅผ ๋ณด์ ํ๊ณ ์์ผ๋ฉฐ, ๊ฐ๊ฐ ๋ณ๋์ ์ฃผ์๊ณต๊ฐ์ ๋ ๋ฆฝ์ ์ผ๋ก ํ ๋น๋ฐ๋๋ค. (code, data, heap, stack)
์ค๋ ๋๋ ์ด์ค์ stack๋ง ๋ฐ๋ก ํ ๋น๋ฐ๊ณ ๋๋จธ์ง ์์ญ์ ์ค๋ ๋๋ผ๋ฆฌ ์๋ก ๊ณต์ ํ๋ค.
ํ๋ก์ธ์ค : ์์ ๋ง์ ๊ณ ์ ๊ณต๊ฐ๊ณผ ์์์ ํ ๋น๋ฐ์ ์ฌ์ฉ
์ค๋ ๋ : ๋ค๋ฅธ ์ค๋ ๋์ ๊ณต๊ฐ๊ณผ ์์์ ๊ณต์ ํ๋ฉด์ ์ฌ์ฉ
ํ๋ก์ธ์ค๋ฅผ ์์ฑํ์ฌ ์์์ ํ ๋นํ๋ ์์คํ ์ฝ์ด ๊ฐ์ํจ์ผ๋ก์จ ์์์ ํจ์จ์ ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํจ
ํ๋ก์ธ์ค ๊ฐ์ ํต์ (IPC)๋ณด๋ค ์ค๋ ๋ ๊ฐ์ ํต์ ๋น์ฉ์ด ์ ์ด ์์ ๋ค ๊ฐ ๋ถ๋ด์ด ๊ฐ์ํจ
๋์ , ๋ฉํฐ ์ค๋ ๋๋ฅผ ์ฌ์ฉํ ๋๋ ๊ณต์ ์์์ผ๋ก ์ธํ ๋ฌธ์ ํด๊ฒฐ์ ์ํด '๋๊ธฐํ'์ ์ ๊ฒฝ์จ์ผ ํ๋ค.
ํ๋ก์ธ์ค๊ฐ ์์์ ์ป์ง ๋ชปํด ๋ค์ ์ฒ๋ฆฌ๋ฅผ ํ์ง ๋ชปํ๋ ์ํ๋ฅผ ๋งํ๋ค.
์์คํ ์ ์ผ๋ก ํ์ ๋ ์์์ ์ฌ๋ฌ ๊ณณ์์ ์ฌ์ฉํ๋ ค๊ณ ํ ๋ ๋ฐ์ํ๋ ๋ฌธ์ ์
๊ต์ฐฉ์ํ์ 4๊ฐ์ง ์กฐ๊ฑด์ ์๋์ ๊ฐ๋ค.
- ์ํธ๋ฐฐ์ : ํ๋ก์ธ์ค๋ค์ด ํ์๋ก ํ๋ ์์์ ๋ํด ๋ฐฐํ์ ํต์ ๊ถ์ ์๊ตฌํจ
- ์ ์ ๋๊ธฐ : ํ๋ก์ธ์ค๊ฐ ํ ๋น๋ ์์์ ๊ฐ์ง ์ํ์์ ๋ค๋ฅธ ์์ ๊ธฐ๋ค๋ฆผ
- ๋น์ ์ : ํ๋ก์ธ์ค๊ฐ ์ด๋ค ์์์ ์ฌ์ฉ์ ๋๋ ๋๊น์ง ๊ทธ ์์์ ๋บ์ ์ ์์
- ์ํ๋๊ธฐ : ๊ฐ ํ๋ก์ธ์ค๋ ์ํ์ ์ผ๋ก ๋ค์ ํ๋ก์ธ์ค๊ฐ ์๊ตฌํ๋ ์์์ ๊ฐ๊ณ ์์
์ด 4๊ฐ์ง ์กฐ๊ฑด ์ค ํ๋๋ผ๋ ๋ง์กฑํ์ง ์์ผ๋ฉด ๊ต์ฐฉ์ํ๋ ๋ฐ์ํ์ง ์์
(์ํ๋๊ธฐ๋ ์ ์ ๋๊ธฐ์ ๋น์ ์ ์ ๋ชจ๋ ๋ง์กฑํด์ผ๋ง ์ฑ๋ฆฝํฉ. ๋ฐ๋ผ์ 4๊ฐ์ง๊ฐ ์๋ก ๋ ๋ฆฝ์ ์ด์ง ์์)
- ์๋ฐฉ
- ํํผ
- ๋ฌด์
- ๋ฐ๊ฒฌ
๋ ์ง์คํฐ ์บ์ ๋ฉ๋ชจ๋ฆฌ ํ๋๋์คํฌ
- First fit : ๋ฉ๋ชจ๋ฆฌ์ ์ฒ์๋ถํฐ ๊ฒ์ฌํด์ ํฌ๊ธฐ๊ฐ ์ถฉ๋ถํ ์ฒซ๋ฒ์งธ ๋ฉ๋ชจ๋ฆฌ์ ํ ๋น
- Next fit : ๋ง์ง๋ง์ผ๋ก ์ฐธ์กฐํ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์์๋ถํฐ ํ์์ ์์ํด ๊ณต๊ฐ์ ์ฐพ์
- Best fit : ๋ชจ๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๊ฒ์ฌํด์ ๋ด๋ถ ๋จํธํ๋ฅผ ์ต์ํํ๋ ๊ณต๊ฐ์ ํ ๋น
OPT : ์ต์ ๊ต์ฒด. ์์ผ๋ก ๊ฐ์ฅ ์ค๋ซ๋์ ์ฌ์ฉํ์ง ์์ ํ์ด์ง ๊ต์ฒด (์คํ ๊ฐ๋ฅ์ฑ ํฌ๋ฐ)
FIFO : ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ ๋น๋ ์์๋๋ก ํ์ด์ง๋ฅผ ๊ต์ฒด
LRU : ์ต๊ทผ์ ๊ฐ์ฅ ์ค๋ซ๋์ ์ฌ์ฉํ์ง ์์ ํ์ด์ง๋ฅผ ๊ต์ฒด
LFU : ์ฌ์ฉ ๋น๋๊ฐ ๊ฐ์ฅ ์ ์ ํ์ด์ง๋ฅผ ๊ต์ฒด
NUR : ์ต๊ทผ์ ์ฌ์ฉํ์ง ์์ ํ์ด์ง๋ฅผ ๊ต์ฒด
์ธ๋ถ ๋จํธํ : ์์ ๋ณด๋ค ๋ง์ ๊ณต๊ฐ์ด ์๋๋ผ๋ ์ค์ ๋ก ๊ทธ ์์ ์ ๋ฐ์๋ค์ผ ์ ์๋ ๊ฒฝ์ฐ (๋ฉ๋ชจ๋ฆฌ ๋ฐฐ์น์ ๋ฐ๋ผ ๋ฐ์ํ๋ ๋ฌธ์ )
๋ด๋ถ ๋จํธํ : ์์ ์ ํ์ํ ๊ณต๊ฐ๋ณด๋ค ๋ง์ ๊ณต๊ฐ์ ํ ๋น๋ฐ์์ผ๋ก์จ ๋ฐ์ํ๋ ๋ด๋ถ์ ์ฌ์ฉ ๋ถ๊ฐ๋ฅํ ๊ณต๊ฐ
๋ฉ๋ชจ๋ฆฌ์ ๋ก๋๋, ์คํ์ค์ธ ํ๋ก์ธ์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์๋ ๊ฐ์์ ๊ณต๊ฐ์ ์ฐธ์กฐํด ๋ง์น ์ปค๋ค๋ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ฐ๋ ๊ฒ์ฒ๋ผ ์ฌ์ฉํ ์ ์๊ฒ ํด์ฃผ๋ ๊ธฐ๋ฒ
ํ์ด์ง ๋จ์์ ๋ ผ๋ฆฌ-๋ฌผ๋ฆฌ ์ฃผ์ ๊ด๋ฆฌ ๊ธฐ๋ฒ. ๋ ผ๋ฆฌ ์ฃผ์ ๊ณต๊ฐ์ด ํ๋์ ์ฐ์์ ์ธ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๋ค์ด๊ฐ์ผํ๋ ์ ์ฝ์ ํด๊ฒฐํ๊ธฐ ์ํ ๊ธฐ๋ฒ ๋ ผ๋ฆฌ ์ฃผ์ ๊ณต๊ฐ๊ณผ ๋ฌผ๋ฆฌ ์ฃผ์ ๊ณต๊ฐ์ ๋ถ๋ฆฌํด์ผํจ(์ฃผ์์ ๋์ ์ฌ๋ฐฐ์น ํ์ฉ), ๋ณํ์ ์ํ MMU ํ์
ํน์ง : ์ธ๋ถ ๋จํธํ๋ฅผ ์์จ ์ ์์. ํ์ด์ง๊ฐ ํด์๋ก ๋ด๋ถ ๋จํธํ๋ ์ปค์ง
์ฌ์ฉ์/ํ๋ก๊ทธ๋๋จธ ๊ด์ ์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๊ธฐ๋ฒ. ํ์ด์ง ๊ธฐ๋ฒ์ ๊ฐ์ ํฌ๊ธฐ์ ํ์ด์ง๋ฅผ ๊ฐ๋ ๊ฒ ๊ณผ๋ ๋ค๋ฅด๊ฒ ๋ ผ๋ฆฌ์ ๋จ์(์ธ๊ทธ๋จผํธ)๋ก ๋๋๋ฏ๋ก ๋ฏธ๋ฆฌ ๋ถํ ํ๋ ๊ฒ์ด ์๋๊ณ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉํ ์์ ์ ํ ๋น๋จ
์ด์์ฒด์ ์์ ๊ณต์ ์์์ ๋ํ ์ ์์ ์ ์ดํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ์ ํธ ๊ณต์ ์์์ ์ ๊ทผํ ์ ์๋ ์ต๋ ํ์ฉ์น๋งํผ๋ง ๋์์ ์ฌ์ฉ์ ์ ๊ทผ ๊ฐ๋ฅ ์ค๋ ๋๋ค์ ๋ฆฌ์์ค ์ ๊ทผ ์์ฒญ์ ํ ์ ์๊ณ , ์ธ๋งํฌ์ด๋ ์นด์ดํธ๊ฐ ํ๋์ฉ ์ค์ด๋ค๊ฒ ๋๋ฉฐ ๋ฆฌ์์ค๊ฐ ๋ชจ๋ ์ฌ์ฉ์ค์ธ ๊ฒฝ์ฐ(์นด์ดํธ=0) ๋ค์ ์์ ์ ๋๊ธฐ๋ฅผ ํ๊ฒ ๋๋ค
์ํธ๋ฐฐ์ , ์ ์ด๋๋ ์น์ ์ ํ๋์ ์ค๋ ๋๋ง ํ์ฉํ๊ธฐ ๋๋ฌธ์, ํด๋น ์น์ ์ ์ ๊ทผํ๋ ค๋ ๋ค๋ฅธ ์ค๋ ๋๋ค์ ๊ฐ์ ์ ์ผ๋ก ๋ง์์ผ๋ก์จ ์ฒซ ๋ฒ์งธ ์ค๋ ๋๊ฐ ํด๋น ์น์ ์ ๋น ์ ธ๋์ฌ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๋ ๊ฒ (๋๊ธฐ์ด(ํ) ๊ตฌ์กฐ๋ผ๊ณ ์๊ฐํ๋ฉด ๋จ)
- ์ธ๋งํฌ์ด๋ ๋ฎคํ ์ค๊ฐ ๋ ์ ์์ง๋ง, ๋ฎคํ ์ค๋ ์ธ๋งํฌ์ด๊ฐ ๋ ์ ์์
- ์ธ๋งํฌ์ด๋ ์์ ๋ถ๊ฐ๋ฅํ์ง๋ง, ๋ฎคํ์ค๋ ์์ ๊ฐ ๊ฐ๋ฅํจ
- ๋๊ธฐํ์ ๊ฐ์๊ฐ ๋ค๋ฆ
ํ๋์ ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ์ฌ์ฉ ์ค์ธ ์ํ์์ ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ์ฌ์ฉํ๋๋ก ํ๊ธฐ ์ํด, ์ด์ ์ ํ๋ก์ธ์ค ์ํ๋ฅผ ๋ณด๊ดํ๊ณ ์๋ก์ด ํ๋ก์ธ์ค์ ์ํ๋ฅผ ์ ์ฌํ๋ ์์
ํ ํ๋ก์ธ์ค์ ๋ฌธ๋งฅ์ ๊ทธ ํ๋ก์ธ์ค์ PCB์ ๊ธฐ๋ก๋จ
์ฅ์ : context switching์ด ์์ด์ ์ปค๋ ์ค๋ ๋๋ณด๋ค ์ค๋ฒํค๋๊ฐ ์ ์ (์ค๋ ๋ ์ ํ ์ ์ปค๋ ์ค์ผ์ค๋ฌ ํธ์ถํ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ)
๋จ์ : ํ๋ก์ธ์ค ๋ด์ ํ ์ค๋ ๋๊ฐ ์ปค๋๋ก ์ง์ ํ๋ ์๊ฐ, ๋๋จธ์ง ์ค๋ ๋๋ค๋ ์ ๋ถ ์ ์ง๋จ (์ปค๋์ด ์ค๋ ๋์ ์กด์ฌ๋ฅผ ์์ง ๋ชปํ๊ธฐ ๋๋ฌธ์)
์ฅ์ : ์ฌ์ฉ์ ์์ค ์ค๋ ๋๋ณด๋ค ํจ์จ์ ์. ์ปค๋ ์ค๋ ๋๋ฅผ ์ฐ๋ฉด ๋ฉํฐํ๋ก์ธ์๋ฅผ ํ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค. ์ฌ์ฉ์ ์ค๋ ๋๋ CPU๊ฐ ์๋ฌด๋ฆฌ ๋ง์๋ ์ปค๋ ๋ชจ๋์ ์ค์ผ์ค์ด ๋์ง ์์ผ๋ฏ๋ก, ๊ฐ CPU์ ํจ์จ์ ์ผ๋ก ์ค๋ ๋ ๋ฐฐ๋นํ ์๊ฐ ์์
๋จ์ : context switching์ด ๋ฐ์ํจ. ์ด ๊ณผ์ ์์ ํ๋ก์ธ์ ๋ชจ๋๊ฐ ์ฌ์ฉ์ ๋ชจ๋์ ์ปค๋ ๋ชจ๋ ์ฌ์ด๋ฅผ ์์ง์ด๊ธฐ ๋๋ฌธ์ ๋ง์ด ๋์๋ค๋ ์๋ก ์ฑ๋ฅ์ด ๋จ์ด์ง๊ฒ ๋๋ค.
ํ๋ก์ธ์ค์์ ์ฌ์ฉํ๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์ ์ค์ ๋ฌผ๋ฆฌ์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ ๋ค๋ฅผ ์ ์์
๋ฐ๋ผ์ ๋ฉ๋ชจ๋ฆฌ = ์ค์ + ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ผ๊ณ ์๊ฐํ๋ฉด ์๋จ
๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํด์ ๊ฐ์๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฑด ๋ง์ง๋ง, ๊ฐ์๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ด๋ค๊ณ ์ค์ ๋ฉ๋ชจ๋ฆฌ์ฒ๋ผ ์ฌ์ฉํ๋ ๊ฒ์ ์๋
์ค์ ๋ฉ๋ชจ๋ฆฌ ์์ ๊ณต๊ฐ์ด ๋ถ์กฑํ๋ฉด, ํ์ฌ ์ฌ์ฉํ๊ณ ์์ง ์์ ๋ฐ์ดํฐ๋ฅผ ๋นผ๋ด์ด ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํด๋๊ณ , ์ค์ ๋ฉ๋ชจ๋ฆฌ์์ ์ฒ๋ฆฌ๋ง ํ๊ฒ ํ๋ ๊ฒ์ด ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์ ์ญํ ์ด๋ค.
์ฆ, ์ค์ ๋ฉ๋ชจ๋ฆฌ์ ๋๊ณ ์๋ ๊ณต๊ฐ์ด ์๊ฒ ๊ณ์ ์ผ์ ์ํค๋ ๊ฒ. ์ด๋ฅผ ๋์์ฃผ๋ ๊ฒ์ด '๊ฐ์ ๋ฉ๋ชจ๋ฆฌ'
fork()๋ ๋ถ๋ชจ ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ณต์ฌํด์ ์ฌ์ฉ
vfork()๋ ๋ถ๋ชจ ํ๋ก์ธ์ค์์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ณต์ ํจ. ๋ณต์ฌํ์ง ์๊ธฐ ๋๋ฌธ์ fork()๋ณด๋ค ์์ฑ ์๋ ๋น ๋ฆ. ํ์ง๋ง ์์์ ๊ณต์ ํ๊ธฐ ๋๋ฌธ์ ์์์ ๋ํ race condition์ด ๋ฐ์ํ์ง ์๋๋ก ํ๊ธฐ ์ํด ๋ถ๋ชจ ํ๋ก์ธ์ค๋ ์์ ํ๋ก์ธ์ค๊ฐ exitํ๊ฑฐ๋ execute๊ฐ ํธ์ถ๋๊ธฐ ์ ๊น์ง block๋๋ค
๋ ๊ฐ ์ด์์ ํ๋ก์ธ์ค๊ฐ ๊ณตํต ์์์ ๋ณํ์ ์ผ๋ก ์ฝ๊ฑฐ๋ ์ธ ๋, ๊ณต์ฉ ๋ฐ์ดํฐ์ ๋ํ ์ ๊ทผ์ด ์์์ ๋ฐ๋ผ ์คํ ๊ฒฐ๊ณผ๊ฐ ๋ฌ๋ผ์ง๋ ์ํฉ
Race Condition์ด ๋ฐ์ํ๊ฒ ๋๋ฉด, ๋ชจ๋ ํ๋ก์ธ์ค์ ์ํ๋ ๊ฒฐ๊ณผ๊ฐ ๋ฐ์ํ๋ ๊ฒ์ ๋ณด์ฅํ ์ ์์. ๋ฐ๋ผ์ ์ด๋ฌํ ์ํฉ์ ํผํด์ผ ํ๋ฉฐ ์ํธ๋ฐฐ์ ๋ ์๊ณ๊ตฌ์ญ์ผ๋ก ํด๊ฒฐ์ด ๊ฐ๋ฅํ๋ค.
์ฐ์ ์ปค๋์ ํ์ธํ์
์ปค๋์ ํ๋์จ์ด๋ฅผ ๋๋ฌ์ธ๊ณ ์์
์ฆ, ์ปค๋์ ํ๋์จ์ด๋ฅผ ์ ์ดํ๊ธฐ ์ํ ์ผ์ข ์ API์ ๊ฐ์
์๋ธ๋ฃจํด(SubRoutine)์ ์ฐ๋ฆฌ๊ฐ ํ๋ก๊ทธ๋๋ฐํ ๋ ์ฌ์ฉํ๋ ๋๋ถ๋ถ์ API๋ฅผ ์๊ธฐํ๋ ๊ฒ
stdio.h์ ์๋ printf๋ scanf string.h์ ์๋ strcmp๋ strcpy
์๋ธ๋ฃจํด์ด ์์คํ ์ฝ์ ํธ์ถํ๊ณ , ์์คํ ์ฝ์ด ์ํํ ๊ฒฐ๊ณผ๋ฅผ ์๋ธ๋ฃจํด์ ๋ณด๋
์์คํ ์ฝ ํธ์ถ ์, ์ปค๋์ด ํธ์ถ๋๊ณ ์ปค๋์ด ์ํํ ์์์ ๊ฒฐ๊ณผ ๋ฐ์ดํฐ๋ฅผ ๋ค์ ์์คํ ์ฝ๋ก ๋ณด๋
์ฆ, ์งํ ๋ฐฉ์์ ์๋์ ๊ฐ๋ค.
์๋ธ๋ฃจํด์ด ์์คํ ์ฝ ํธ์ถ โ ์์คํ ์ฝ์ ์ปค๋ ํธ์ถ โ ์ปค๋์ ์์ ์ ์ญํ ์ ์ํํ๊ณ (ํ๋์จ์ด๋ฅผ ์ ์ดํจ) ๋์จ ๊ฒฐ๊ณผ ๋ฐ์ดํฐ๋ฅผ ์์คํ ์ฝ์๊ฒ ๋ณด๋ โ ์์คํ ์ฝ์ด ๋ค์ ์๋ธ๋ฃจํด์๊ฒ ๋ณด๋
์ค๋ฌด๋ก ์ฌ์ฉํ ๋ ๋์ ํฐ ์ฐจ์ด๋ ์์(api๋ฅผ ํธ์ถํด์ ์ฌ์ฉํ๋ ๊ฒ์ ๋์ผ)
UNIQUEํ ๊ฐ์ ์์ฑํด์ฃผ๋ ์ค๋ผํด ๊ฐ์ฒด
์ํ์ค๋ฅผ ์์ฑํ๋ฉด PK์ ๊ฐ์ด ์์ฐจ์ ์ผ๋ก ์ฆ๊ฐํ๋ ์ปฌ๋ผ์ ์๋ ์์ฑํ ์ ์๋ค.
CREATE SEQUENCE ์ํ์ค์ด๋ฆ START WITH n INCREMENT BY n ...
๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ
๋ค์์ ์ฌ์ฉ์๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด์ ๋ฐ์ดํฐ๋ฅผ ์ ๊ทผํ ์ ์๋๋ก ์ค๊ณ๋ ์์คํ
- ์ ์ ๊ธฐ๋ฅ(DDL: Data Definition Language) >
- ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ด๋ค ์ฉ๋์ด๋ฉฐ ์ด๋ค ์์ผ๋ก ์ด์ฉ๋ ๊ฒ์ด๋ผ๋ ๊ฒ์ ๋ํ ์ ์๊ฐ ํ์ํจ
- CREATE, ALTER, DROP, RENAME
- ์กฐ์ ๊ธฐ๋ฅ(DML: Data Manipulation Language) >
- ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ง๋ค์์ ๋ ๊ทธ ์ ๋ณด๋ฅผ ์์ ํ๊ฑฐ๋ ์ญ์ ์ถ๊ฐ ๊ฒ์ ํ ์ ์์ด์ผํจ
- SELECT, INSERT, UPDATE, DELETE
- ์ ์ด ๊ธฐ๋ฅ(DCL: Data Control Language) >
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทผํ๊ณ ๊ฐ์ฒด๋ค์ ์ฌ์ฉํ๋๋ก ๊ถํ์ ์ฃผ๊ณ ํ์ํ๋ ๋ช ๋ น
- GRANT REVOKE
ํ๋ก๊ทธ๋จ ์ค๊ณ๋ฅผ ํํํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๊ทธ๋ฆผ์ผ๋ก ๋ ํ๊ธฐ๋ฒ
์ดํดํ๊ธฐ ํ๋ ๋ณต์กํ ์์คํ ์ ์์ฌ์ํตํ๊ธฐ ์ํด ๋ง๋ฌ
ํ์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ์ ํ์ ์ผ๋ก ๋ณด์ฌ์ฃผ๊ธฐ ์ํ ๊ฒ
ํ๋ ์ด์์ ํ ์ด๋ธ์์ ์ ๋๋ ๊ฐ์ ํ ์ด๋ธ์ด๋ค.
- ์ฌ์ฉ์๊ฐ view์ ์ ๊ทผํ์ ๋ ํด๋นํ๋ ๋ฐ์ดํฐ๋ฅผ ์๋ณธ์์ ๊ฐ์ ธ์จ๋ค.
view์ ๋ํ๋์ง ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐํธํ ๋ณดํธํ ์ ์๋ ์ฅ์ ์กด์ฌ
์ค๋ณต์ ์ต๋ํ ์ค์ฌ ๋ฐ์ดํฐ๋ฅผ ๊ตฌ์กฐํํ๊ณ , ๋ถํ์ํ ๋ฐ์ดํฐ๋ฅผ ์ ๊ฑฐํด ๋ฐ์ดํฐ๋ฅผ ๋ ผ๋ฆฌ์ ์ผ๋ก ์ ์ฅํ๋ ๊ฒ
์ด์ํ์์ด ์ผ์ด๋์ง ์๋๋ก ์ ๊ทํ ์ํจ๋ค!
๋ฆด๋ ์ด์ ์์ ์ผ๋ถ ์์ฑ๋ค์ ์ข ์์ผ๋ก ์ธํด ๋ฐ์ดํฐ ์ค๋ณต์ด ๋ฐ์ํ๋ ๊ฒ (insert, update, delete)
๋ฌด๊ฒฐ์ฑ์ ๋ณด์ฅํด์ผ ํฉ๋๋ค.
๋ฐ์ดํฐ๋ฅผ ์กฐ์ํ๋ ํ๋ก๊ทธ๋จ ๋ด์์ ๋ฐ์ดํฐ ์์ฑ, ์์ , ์ญ์ ์ ๋ฌด๊ฒฐ์ฑ ์กฐ๊ฑด์ ๊ฒ์ฆํ๋ค.
ํธ๋ฆฌ๊ฑฐ ์ด๋ฒคํธ ์ ์ ์ฅ SQL์ ์คํํ๊ณ ๋ฌด๊ฒฐ์ฑ ์กฐ๊ฑด์ ์คํํ๋ค.
DB์ ์ฝ์กฐ๊ฑด ๊ธฐ๋ฅ์ ์ ์ธํ๋ค.
ํ ์ด๋ธ์ ์๋ ๋ชจ๋ ํ๋ค์ด ์ ์ผํ ์๋ณ์๋ฅผ ๊ฐ์ง ๊ฒ์ ์๊ตฌํจ (๊ฐ์ ๊ฐ X)
์ธ๋ํค ๊ฐ์ NULL์ด๊ฑฐ๋ ์ฐธ์กฐ ํ ์ด๋ธ์ PK๊ฐ์ด์ด์ผ ํจ
ํ ์ปฌ๋ผ์ ๋ํด NULL ํ์ฉ ์ฌ๋ถ์ ์๋ฃํ, ๊ท์น์ผ๋ก ํ๋นํ ๋ฐ์ดํฐ ๊ฐ ์ง์
์๋์ผ๋ก ์คํ๋๋๋ก ์ ์๋ ์ ์ฅ ํ๋ก์์
(insert, update, delete๋ฌธ์ ๋ํ ์๋ต์ ์๋์ผ๋ก ํธ์ถํ๋ค.)
์ ๋ฌด ๊ท์น ๋ณด์ฅ, ์ ๋ฌด ์ฒ๋ฆฌ ์๋ํ, ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ ๊ฐํ
์ผ๋จ Oracle์ด MySQL๋ณด๋ค ํจ~์ฌ ์ข์
์ค๋ผํด : ๋๊ท๋ชจ ํธ๋์ญ์ ๋ก๋๋ฅผ ์ฒ๋ฆฌํ๊ณ , ์ฑ๋ฅ ์ต์ ํ๋ฅผ ์ํด ์ฌ๋ฌ ์๋ฒ์ ๋์ฉ๋ DB๋ฅผ ๋ถ์ฐํจ
MySQL : ๋จ์ผ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ์ ํ๋์ด์๊ณ , ๋์ฉ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก๋ ๋ถ์ ํฉ. ์์ ํ๋ก์ ํธ์์ ์ ์ฉ์ํค๊ธฐ ์ฉ์ดํ๋ฉฐ ์ด์ ์ํ๋ฅผ ๋ณต์ํ๋๋ฐ commit๊ณผ rollback๋ง ์กด์ฌ
Commit : ํ๋์ ๋ ผ๋ฆฌ์ ๋จ์(ํธ๋์ญ์ )์ ๋ํ ์์ ์ด ์ฑ๊ณต์ ์ผ๋ก ๋๋ฌ์ ๋, ์ด ํธ๋์ญ์ ์ด ํํ ๊ฐฑ์ ์ฐ์ฐ์ด ์๋ฃ๋ ๊ฒ์ ํธ๋์ญ์ ๊ด๋ฆฌ์์๊ฒ ์๋ ค์ฃผ๋ ์ฐ์ฐ
Rollback : ํ๋์ ํธ๋์ญ์ ์ฒ๋ฆฌ๊ฐ ๋น์ ์์ ์ผ๋ก ์ข ๋ฃ๋์ด DB์ ์ผ๊ด์ฑ์ ๊นจ๋จ๋ ธ์ ๋, ๋ชจ๋ ์ฐ์ฐ์ ์ทจ์์ํค๋ ์ฐ์ฐ
- JDBC > ์๋ฐ์์ DB์ ์ ๊ทผํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์กฐํ, ์ฝ์ , ์์ , ์ญ์ ๊ฐ๋ฅ > DBMS ์ข ๋ฅ์ ๋ฐ๋ผ ๋ง๋ jdbc๋ฅผ ์ค์นํด์ผํจ
- ODBC > ์์ฉ ํ๋ก๊ทธ๋จ์์ DB ์ ๊ทผ์ ์ํ ํ์ค ๊ฐ๋ฐฉํ ์์ฉ ํ๋ก๊ทธ๋จ ์ธํฐํ์ด์ค > MS์ฌ์์ ๋ง๋ค์์ผ๋ฉฐ, Excel/Text ๋ฑ ์ฌ๋ฌ ์ข ๋ฅ์ ๋ฐ์ดํฐ์ ์ ๊ทผํ ์ ์์
- ์ฑ ์ผ๋ก ๋น์ ํ์๋ฉด ๋ชฉ์ฐจ๋ก ๋น์ ํ ์ ์๋ค.
- DBMS์์ ์ ์ฅ ์ฑ๋ฅ์ ํฌ์ํ์ฌ ๋ฐ์ดํฐ ์ฝ๊ธฐ ์๋๋ฅผ ๋์ด๋ ๊ธฐ๋ฅ
- ๋ฐ์ดํฐ๊ฐ ์ ๋ ฌ๋์ด ๋ค์ด๊ฐ๋ค
- ์์ด ๋ง์ ํ ์ด๋ธ์์ ์ผ๋ถ ๋ฐ์ดํฐ๋ง ๋ถ๋ฌ ์์ ๋, ์ด๋ฅผ ํ ์ค์บ ์ ์ฒ๋ฆฌ ์ฑ๋ฅ ๋จ์ด์ง
- ์ข ๋ฅ >
- B+-Tree ์ธ๋ฑ์ค : ์๋์ ๊ฐ์ ์ด์ฉํ์ฌ ์ธ๋ฑ์ฑ
- Hash ์ธ๋ฑ์ค : ์นผ๋ผ ๊ฐ์ผ๋ก ํด์ ๊ฐ ๊ฒ์ฐํ์ฌ ์ธ๋ฑ์ฑ, ๋ฉ๋ชจ๋ฆฌ ๊ธฐ๋ฐ DB์์ ๋ง์ด ์ฌ์ฉ - B>Hash
- ์์ฑ์ ๊ณ ๋ คํด์ผ ํ ์ >
- ํ ์ด๋ธ ์ ์ฒด ๋ก์ฐ ์ 15%์ดํ ๋ฐ์ดํฐ ์กฐํ์ ์์ฑ
- ํ ์ด๋ธ ๊ฑด์๊ฐ ์ ์ผ๋ฉด ์ธ๋ฑ์ค ์์ฑ ํ์ง ์์, ํ ์ค์บ์ด ๋น ๋ฆ - ์์ฃผ ์ฐ๋ ์ปฌ๋ผ์ ์์ผ๋ก ์ง์ - DML์ ์ธ๋ฑ์ค์๋ ์์ ์์ ์ด ๋์์ ๋ฐ์ํ๋ฏ๋ก DML์ด ๋ง์ ํ ์ด๋ธ์ ์ธ๋ฑ์ค ์์ฑ ํ์ง ์์
OSI 7๊ณ์ธต์ด๋, ํต์ ์ ์์์ ์๋ฃ๊น์ง์ ๊ณผ์ ์ 7๋จ๊ณ๋ก ์ ์ํ ๊ตญ์ ํต์ ํ์ค ๊ท์ฝ
๋ฌผ๋ฆฌ : ์ ์กํ๋๋ฐ ํ์ํ ๊ธฐ๋ฅ์ ์ ๊ณต ( ํต์ ์ผ์ด๋ธ, ํ๋ธ )
๋ฐ์ดํฐ๋งํฌ : ์ก/์์ ํ์ธ. MAC ์ฃผ์๋ฅผ ๊ฐ์ง๊ณ ํต์ ํจ ( ๋ธ๋ฆฟ์ง, ์ค์์น )
๋คํธ์ํฌ : ํจํท์ ๋คํธ์ํฌ ๊ฐ์ IP๋ฅผ ํตํด ๋ฐ์ดํฐ ์ ๋ฌ ( ๋ผ์ฐํ )
์ ์ก : ๋ host ์์คํ ์ผ๋ก๋ถํฐ ๋ฐ์ํ๋ ๋ฐ์ดํฐ ํ๋ฆ ์ ๊ณต
์ธ์ : ํต์ ์์คํ ์ฌ์ฉ์๊ฐ์ ์ฐ๊ฒฐ์ ์ ์ง ๋ฐ ์ค์ ํจ
ํํ : ์ธ์ ๊ณ์ธต ๊ฐ์ ์ฃผ๊ณ ๋ฐ๋ ์ธํฐํ์ด์ค๋ฅผ ์ผ๊ด์ฑ์๊ฒ ์ ๊ณต
์์ฉ : ์ฌ์ฉ์๊ฐ ๋คํธ์ํฌ์ ์ ๊ทผํ ์ ์๋๋ก ์๋น์ค ์ ๊ณต
>
> > ๋ฌผ๋ฆฌ์ ์ธ ์์ญ์ ํ์คํ์ ๋ํ ๊ฒฐ๊ณผ
> >
> > ๊ฐ์ฅ ๊ธฐ๋ณธ์ด ๋๋ ์์ญ์ผ๋ก LAN, WAN๊ณผ ๊ฐ์ ๋คํธ์ํฌ ํ์ค๊ณผ ๊ด๋ จ๋ ํ๋กํ ์ฝ์ ์ ์ํ๋ ์์ญ์ด๋ค
>
> > ๊ฒฝ๋ก ๊ฒ์์ ํด์ฃผ๋ ๊ณ์ธต์
> >
> > IP ์์ฒด๋ ๋น์ฐ๊ฒฐ์งํฅ์ ์ด๋ฉฐ, ์ ๋ขฐํ ์ ์๋ ํ๋กํ ์ฝ์ด๋ค
> >
> > ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ๋๋ง๋ค ๊ฑฐ์ณ์ผํ ๊ฒฝ๋ก๋ฅผ ์ ํํด์ฃผ์ง๋ง, ๊ฒฝ๋ก๊ฐ ์ผ์ ํ์ง ์์. ๋ํ ๋ฐ์ดํฐ ์ ์ก ์ค์ ๊ฒฝ๋ก์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ๋ ๋ฐ์ดํฐ๊ฐ ์์ค๋๊ฑฐ๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์. ๋ฐ๋ผ์ IP ๊ณ์ธต์ ์ค๋ฅ ๋ฐ์์ ๋ํ ๋๋น๊ฐ ๋์ด์์ง ์์ ํ๋กํ ์ฝ์
>
> > ๋ฐ์ดํฐ์ ์ค์ ์ก์์ ์ ๋ด๋นํจ
> >
> > UDP๋ TCP์ ๋นํด ์๋์ ์ผ๋ก ๊ฐ๋จํ๊ณ , TCP๋ ์ ๋ขฐ์ฑ์๋ ๋ฐ์ดํฐ ์ ์ก์ ๋ด๋นํจ
> >
> > TCP๋ ๋ฐ์ดํฐ ์ ์ก ์, IP ํ๋กํ ์ฝ์ด ๊ธฐ๋ฐ์ (IP๋ ๋ฌธ์ ํด๊ฒฐ์ ๋ฌธ์ ๊ฐ ์๋๋ฐ TCP๊ฐ ์ ๋ขฐ๋ผ๊ณ ?)
> >
> > โ IP์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ฃผ๋ ๊ฒ์ด TCP์ธ ๊ฒ. ๋ฐ์ดํฐ์ ์์๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์ ์ก ๊ฐ๋์ง ํ์ธํด์ฃผ๋ฉฐ ๋ํ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๋ฐฉ์์. ์ด์ฒ๋ผ ํ์ธ ์ ์ฐจ๋ฅผ ๊ฑธ์น๋ฉฐ ์ ๋ขฐ์ฑ ์๋ IP์ ์ ๋ขฐ์ฑ์ ๋ถ์ฌํ ํ๋กํ ์ฝ์ด TCP์ด๋ค
>
> > ์๋ฒ์ ํด๋ผ์ด์ธํธ๋ฅผ ๋ง๋๋ ๊ณผ์ ์์ ํ๋ก๊ทธ๋จ ์ฑ๊ฒฉ์ ๋ฐ๋ผ ๋ฐ์ดํฐ ์ก์์ ์ ๋ํ ์ฝ์๋ค์ด ์ ํด์ง๋๋ฐ, ์ด๊ฒ์ด ๋ฐ๋ก ์ ํ๋ฆฌ์ผ์ด์
๊ณ์ธต์ด๋ค
์๋ฒ์ ํด๋ผ์ด์ธํธ์ ํจ์ ํธ์ถ ์์๊ฐ ์ค์ํ๋ค
์๋ฒ : socket() ์์ฑ โ bind() ์์ผ ์ฃผ์ํ ๋น โ listen() ์ฐ๊ฒฐ์์ฒญ ๋๊ธฐ์ํ โ accept() ์ฐ๊ฒฐํ์ฉ โ read/write() ๋ฐ์ดํฐ ์ก์์ โ close() ์ฐ๊ฒฐ์ข ๋ฃ
ํด๋ผ์ด์ธํธ : socket() ์์ฑ โ connect() ์ฐ๊ฒฐ์์ฒญ โ read/write() ๋ฐ์ดํฐ ์ก์์ โ close() ์ฐ๊ฒฐ์ข ๋ฃ
ํด๋ผ์ด์ธํธ ์์ผ์ ์์ฑํ ํ, ์๋ฒ๋ก ์ฐ๊ฒฐ์ ์์ฒญํ๋ ๊ณผ์ ์์ ์ฐจ์ด๊ฐ ์กด์ฌํ๋ค.
์๋ฒ๋ listen() ํธ์ถ ์ดํ๋ถํฐ ์ฐ๊ฒฐ์์ฒญ ๋๊ธฐ ํ๋ฅผ ๋ง๋ค์ด ๋๊ณ , ๊ทธ ์ดํ์ ํด๋ผ์ด์ธํธ๊ฐ ์ฐ๊ฒฐ ์์ฒญ์ ํ ์ ์๋ค. ์ด๋ ์๋ฒ๊ฐ ๋ฐ๋ก accept()๋ฅผ ํธ์ถํ ์ ์๋๋ฐ, ์ฐ๊ฒฐ๋๊ธฐ ์ ๊น์ง ํธ์ถ๋ ์์น์์ ๋ธ๋กํน ์ํ์ ๋์ด๊ฒ ๋๋ค.
์ด์ฒ๋ผ ์ฐ๊ฒฐ์งํฅ์ ์ธ TCP๋ ์ ๋ขฐ์ฑ ์๋ ๋ฐ์ดํฐ ์ ์ก์ด ๊ฐ๋ฅํจ (3-way handshaking)
ํ๋ฆ์ ์ด์ ํผ์ก์ ์ด๋ฅผ ์ง์ํด์ ๋ฐ์ดํฐ ์์๋ฅผ ๋ณด์ฅํด์ค
ํ๋ฆ์ ์ด : ์ก์ ์ธก๊ณผ ์์ ์ธก์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์๋ ์ฐจ์ด๋ฅผ ์กฐ์ ํด์ฃผ๋ ๊ฒ
ํผ์ก ์ ์ด : ๋คํธ์ํฌ ๋ด์ ํจํท ์๊ฐ ๋์น๊ฒ ์ฆ๊ฐํ์ง ์๋๋ก ๋ฐฉ์งํ๋ ๊ฒ
์ ํ์ฑ ๋์ ์ ์ก์ ํ๊ธฐ ์ํด ์๋๊ฐ ๋๋ฆฐ ๋จ์ ์ด ์๊ณ , ์ฃผ๋ก ์น HTTP ํต์ , ์ด๋ฉ์ผ, ํ์ผ ์ ์ก์ ์ฌ์ฉ๋จ
TCP ์์ผ์ ์ฐ๊ฒฐ ์ค์ ๊ณผ์ ์ค์ ์ด 3๋ฒ์ ๋ํ๋ฅผ ์ฃผ๊ณ ๋ฐ๋๋ค.
(SYN : ์ฐ๊ฒฐ ์์ฒญ ํ๋๊ทธ / ACK : ์๋ต)
- ํด๋ผ์ด์ธํธ๋ ์๋ฒ์ ์ ์ ์์ฒญํ๋ SYN(M) ํจํท์ ๋ณด๋
- ์๋ฒ๋ ํด๋ผ์ด์ธํธ ์์ฒญ์ธ SYN(M)์ ๋ฐ๊ณ , ํด๋ผ์ด์ธํธ์๊ฒ ์์ฒญ์ ์๋ฝํ๋ค๋ ACK(M+1)์ SYN(N)์ด ์ค์ ๋ ํจํท์ ๋ฐ์กํจ
- ํด๋ผ์ด์ธํธ๋ ์๋ฒ์ ์๋ฝ ์๋ต์ธ ACK(M+1)์ SYN(N) ํจํท์ ๋ฐ๊ณ , ACK(N+1)๋ฅผ ์๋ฒ๋ก ๋ณด๋ด๋ฉด ์ฐ๊ฒฐ์ด ์ฑ๋ฆฝ๋จ
- ํด๋ผ์ด์ธํธ๊ฐ ์ฐ๊ฒฐ ์ข ๋ฃํ๊ฒ ๋ค๋ FIN ํ๋๊ทธ๋ฅผ ์ ์กํจ
- ์๋ฒ๋ ํด๋ผ์ด์ธํธ์ ์์ฒญ(FIN)์ ๋ฐ๊ณ , ์๊ฒ ๋ค๋ ํ์ธ ๋ฉ์์ง๋ก ACK๋ฅผ ๋ณด๋. ๊ทธ ์ดํ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ๋ณด๋ผ ๋๊น์ง ์ ๊น TIME_OUT์ด ๋จ
- ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ๋ณด๋ด๊ณ ํต์ ์ด ๋๋ฌ์ผ๋ฉด ์ฐ๊ฒฐ์ด ์ข ๋ฃ๋์๋ค๊ณ ํด๋ผ์ด์ธํธ์๊ฒ FINํ๋๊ทธ๋ฅผ ์ ์กํจ
- ํด๋ผ์ด์ธํธ๋ FIN ๋ฉ์์ง๋ฅผ ํ์ธํ๋ค๋ ACK๋ฅผ ๋ณด๋
- ํด๋ผ์ด์ธํธ์ ACK ๋ฉ์์ง๋ฅผ ๋ฐ์ ์๋ฒ๋ ์์ผ ์ฐ๊ฒฐ์ closeํจ
- ํด๋ผ์ด์ธํธ๋ ์์ง ์๋ฒ๋ก๋ถํฐ ๋ฐ์ง ๋ชปํ ๋ฐ์ดํฐ๊ฐ ์์ ๊ฒ์ ๋๋นํด์, ์ผ์ ์๊ฐ๋์ ์ธ์ ์ ๋จ๊ฒจ๋๊ณ ์์ฌ ํจํท์ ๊ธฐ๋ค๋ฆฌ๋ ๊ณผ์ ์ ๊ฑฐ์นจ ( TIME_WAIT )
TCP์ ๋์์ผ๋ก, IP์ ๊ฐ์ด ์ฐ์ผ ๋ UDP/IP๋ผ๊ณ ๋ ๋ถ๋ฆ
TCP์ ๋ง์ฐฌ๊ฐ์ง๋ก, ์ค์ ๋ฐ์ดํฐ ๋จ์๋ฅผ ๋ฐ๊ธฐ ์ํด IP๋ฅผ ์ฌ์ฉํจ. ๊ทธ๋ฌ๋ TCP์๋ ๋ฌ๋ฆฌ ๋ฉ์์ง๋ฅผ ํจํท์ผ๋ก ๋๋๊ณ , ๋ฐ๋ํธ์์ ์ฌ์กฐ๋ฆฝํ๋ ๋ฑ์ ์๋น์ค๋ฅผ ์ ๊ณตํ์ง ์์ ์ฆ, ์ฌ๋ฌ ์ปดํจํฐ๋ฅผ ๊ฑฐ์น์ง ์๊ณ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ปดํจํฐ๋ผ๋ฆฌ ์ง์ ์ฐ๊ฒฐํ ๋ UDP๋ฅผ ์ฌ์ฉํ๋ค.
UDP๋ฅผ ์ฌ์ฉํด ๋ชฉ์ ์ง(IP)๋ก ๋ฉ์์ง๋ฅผ ๋ณด๋ผ ์ ์์ผ๋ฉฐ, ์ปดํจํฐ๋ฅผ ๊ฑฐ์ณ ๋ชฉ์ ์ง๊น์ง ๋๋ฌํ ์๋ ์์ (๋์ฐฉํ์ง ์์ ๊ฐ๋ฅ์ฑ๋ ์กด์ฌํจ)
์ ๋ณด๋ฅผ ๋ฐ๋ ์ปดํจํฐ๋ ํฌํธ๋ฅผ ์ด์ด๋๊ณ , ํจํท์ด ์ฌ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๋ฉฐ ๋ฐ์ดํฐ๊ฐ ์ค๋ฉด ๋ชจ๋ ๋ค ๋ฐ์๋ค์ธ๋ค. ํจํท์ด ๋์ฐฉํ์ ๋ ์ถ๋ฐ์ง์ ๋ํ ์ ๋ณด(IP์ PORT)๋ฅผ ์ ์ ์์
UDP๋ ์ด๋ฐ ํน์ฑ ๋๋ฌธ์ ๋น์ ๋ขฐ์ ์ด๊ณ , ์์ ์ ์ด์ง ์์ ํ๋กํ ์ฝ์. ํ์ง๋ง TCP๋ณด๋ค ์๋๊ฐ ๋งค์ฐ ๋น ๋ฅด๊ณ ํธํด์ ๋ฐ์ดํฐ ์ ์ค์ด ์ผ์ด๋๋ ํฐ ์๊ด์ด ์๋ ์คํธ๋ฆฌ๋ฐ์ด๋ ํ๋ฉด ์ ์ก์ ์ฌ์ฉ๋จ
HTTP ๋์ ์์ : TCP โ HTTP
HTTPS ๋์ ์์ : TCP โ SSL โ HTTP
SSL(Secure Socket Layer)์ ์ฐ๋ ์์ฐ๋์ ์ฐจ์ด๋ค. SSL ํ๋กํ ์ฝ์ ์ ๋ณด๋ฅผ ์ํธํ์ํค๊ณ ์ด๋ ๊ณต๊ฐํค์ ๊ฐ์ธํค ๋๊ฐ์ง๋ฅผ ์ด์ฉํ๋ค.
HTTPS๋ ์ธํฐ๋ท ์์์ ์ ๋ณด๋ฅผ ์ํธํํ๊ธฐ ์ํด SSL ํ๋กํ ์ฝ์ ์ด์ฉํด ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๊ณ ์๋ค๋ ๊ฒ์ ๋งํ๋ค. ์ฆ, ๋ฌธ์ ์ ์ก์ ์ํธํ ์ฒ๋ฆฌ ์ ๋ฌด์ ๋ฐ๋ผ HTTP์ HTTPS๋ก ๋๋์ด์ง๋ ๊ฒ
๋ชจ๋ ์ฌ์ดํธ๊ฐ HTTPS๋ก ํ์ง ์๋ ์ด์ ๋, ์ํธํ ๊ณผ์ ์ผ๋ก ์ธํ ์๋ ์ ํ๊ฐ ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ด๋ค.
๋๋ค HTTP ํ๋กํ ์ฝ์ ์ด์ฉํด ์๋ฒ์ ๋ฌด์ธ๊ฐ ์์ฒญํ ๋ ์ฌ์ฉํ๋ ๋ฐฉ์์ด๋ค.
GET ๋ฐฉ์์, URL์ ํตํด ๋ชจ๋ ํ๋ผ๋ฏธํฐ๋ฅผ ์ ๋ฌํ๊ธฐ ๋๋ฌธ์ ์ฃผ์์ฐฝ์ ์ ๋ฌ ๊ฐ์ด ๋ ธ์ถ๋จ. URL ๊ธธ์ด๊ฐ ์ ํ์ด ์๊ธฐ ๋๋ฌธ์ ์ ์ก ๋ฐ์ดํฐ ์์ด ํ์ ๋์ด ์๊ณ , ํ์์ ๋ง์ง ์์ผ๋ฉด ์ธ์ฝ๋ฉํด์ ์ ๋ฌํด์ผ ํจ
POST ๋ฐฉ์์ HTTP BODY์ ๋ฐ์ดํฐ๋ฅผ ํฌํจํด์ ์ ๋ฌํจ. ์น ๋ธ๋ผ์ฐ์ ์ฌ์ฉ์์ ๋์๋ ์ง์ ์ ์ผ๋ก ํ๋ผ๋ฏธํฐ๊ฐ ๋ ธ์ถ๋์ง ์๊ณ ๊ธธ์ด ์ ํ๋ ์์.
๋ณดํต GET์ ๊ฐ์ ธ์ฌ ๋, POST๋ ์ํํ๋ ์ญํ ์ ํ์ฉํ๋ค.
GET์ SELECT ์ฑํฅ์ด ์์ด์ ์๋ฒ์์ ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์์ ๋ณด์ฌ์ฃผ๋ ์ฉ๋๋ก ํ์ฉ
POST๋ ์๋ฒ์ ๊ฐ์ด๋ ์ํ๋ฅผ ๋ฐ๊พธ๊ธฐ ์ํด ํ์ฉ
IOCP๋ ์ด๋ค I/O ํธ๋ค์ ๋ํด, ๋ธ๋ก ๋์ง ์๊ฒ ๋น๋๊ธฐ ์์ ์ ํ๋ฉด์ ํ๋ก๊ทธ๋จ ๋๊ธฐ์๊ฐ์ ์ค์ด๋ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉ๋๋ค.
๋๊ธฐํ Object ์ธ๋งํฌ์ด์ ํน์ฑ๊ณผ, ํ๋ฅผ ๊ฐ์ง ์ปค๋ Object๋ค. ๋๋ถ๋ถ ๋ฉํฐ ์ค๋ ๋ ์์์ ์ฌ์ฉ๋๊ณ , ํ๋ ์์ฒด์ ์ผ๋ก ์ด์ํ๋ ํน์ง ๋๋ฌธ์ ์ค๋ ๋ ํ๋ง์ ์ ํฉํจ
๋๊ธฐํ์ ๋์์ ํ๋ฅผ ํตํ ๋ฐ์ดํฐ ์ ๋ฌ IOCP๋, ์ค๋ ๋ ํ๋ง์ ์ํ ๊ฒ์ด๋ผ๊ณ ํ ์ ์์
์ฌ๋ฌ ์ค๋ ๋๋ฅผ ์์ฑํ์ฌ ๋๊ธฐ์ํค๊ณ , ํ์ํ ๋ ๊ฐ์ ธ๋ค๊ฐ ์ฌ์ฉํ ๋ค์ ๋ค์ ๋ฐ๋ฉํ๋ ๊ณผ์ (์ค๋ ๋์ ์์ฑ๊ณผ ํ๊ดด๋ ์๋นํ ํฐ ์ค๋ฒํค๋๊ฐ ์กด์ฌํ๊ธฐ ๋๋ฌธ์ ์ด ๊ณผ์ ์ ์ด์ฉํ๋ค)
IOCP์ ์ฅ์ ์ ์ฌ์ฉ์๊ฐ ์ค์ ํ ๋ฒํผ๋ง ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋ ํจ์จ์ ์ผ๋ก ์๋์ํฌ ์ ์์. (๊ธฐ์กด์๋ OS๋ฒํผ, ์ฌ์ฉ์ ๋ฒํผ๋ก ๋ฐ๋ก ๋ถ๋ฆฌํด์ ์ด์ํ์)
์ปค๋ ๋ ๋ฒจ์์๋ ๋ชจ๋ I/O๋ฅผ ๋น๋๊ธฐ๋ก ์ฒ๋ฆฌํ๊ธฐ ๋๋ฌธ์ ํจ์จ์ ์ธ ์์์ ๋ฐ๋ผ ์ ๊ทผํ ์ ์์
๋ผ์ฐํฐ๋ 3๊ณ์ธต ์ฅ๋น๋ก, ์์ ํ ํจํท์ ์ ๋ณด๋ฅผ ๋ณด๊ณ ๊ฒฝ๋ก๋ฅผ ์ค์ ํด ํจํท์ ์ ์กํ๋ ์ญํ ์ ์ํํ๋ ์ฅ๋น
์ค์์น๋ ์ฃผ๋ก ๋ด๋ถ ๋คํธ์ํฌ์ ์์นํ๋ฉฐ MAC ์ฃผ์ ํ ์ด๋ธ์ ์ด์ฉํด ํด๋น ํ๋ ์์ ์ ์กํ๋ 2๊ณ์ธต ์ฅ๋น
์๋ธ๋ฆฟ ์ปจํ ์ด๋์์ HTTP ํ๋กํ ์ฝ์ ํตํด ๋ค์ด์ค๋ ๋ชจ๋ ์์ฒญ์ ์ ์ผ ์์์ ์ฒ๋ฆฌํด์ฃผ๋ ํ๋ก ํธ ์ปจํธ๋กค๋ฌ๋ฅผ ๋งํจ
๋ฐ๋ผ์ ์๋ฒ๊ฐ ๋ฐ๊ธฐ ์ ์, ๊ณตํต์ฒ๋ฆฌ ์์ ์ ๋์คํจ์ฒ ์๋ธ๋ฆฟ์ด ์ฒ๋ฆฌํด์ฃผ๊ณ ์ ์ ํ ์ธ๋ถ ์ปจํธ๋กค๋ฌ๋ก ์์ ์ ์์ํด์ค๋๋ค.
๋์คํจ์ฒ ์๋ธ๋ฆฟ์ด ์ฒ๋ฆฌํ๋ url ํจํด์ ์ง์ ํด์ค์ผ ํ๋๋ฐ, ์ผ๋ฐ์ ์ผ๋ก๋ .mvc์ ๊ฐ์ ํจํด์ผ๋ก ์ฒ๋ฆฌํ๋ผ๊ณ ๋ฏธ๋ฆฌ ์ง์ ํด์ค๋๋ค.
๋์คํจ์ฒ ์๋ธ๋ฆฟ์ผ๋ก ์ธํด web.xml์ด ๊ฐ์ง ์ญํ ์ด ์๋นํ ์ถ์๋์์ต๋๋ค. ๊ธฐ์กด์๋ ๋ชจ๋ ์๋ธ๋ฆฟ์ url ๋งคํ ํ์ฉ์ ์ํด ๋ชจ๋ web.xml์ ๋ฑ๋กํด ์ฃผ์์ง๋ง, ๋์คํจ์ฒ ์๋ธ๋ฆฟ์ ๊ทธ ์ ์ ๋ชจ๋ ์์ฒญ์ ํธ๋ค๋งํด์ฃผ๋ฉด์ ์์ ์ ํธ๋ฆฌํ๊ฒ ํ ์ ์๋๋ก ๋์์ค๋๋ค. ๋ํ ์ด ์๋ธ๋ฆฟ์ ํตํด MVC๋ฅผ ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ ์น ๊ฐ๋ฐ ์ ํฐ ์ฅ์ ์ ๊ฐ์ ธ๋ค ์ค๋๋ค.
์คํ๋ง ์ปจํ ์ด๋๊ฐ ์ง์ํ๋ ํต์ฌ ๊ฐ๋ ์ค ํ๋๋ก, ์ค์ ํ์ผ์ ํตํด ๊ฐ์ฒด๊ฐ์ ์์กด๊ด๊ณ๋ฅผ ์ค์ ํ๋ ์ญํ ์ ํฉ๋๋ค.
๊ฐ ํด๋์ค ์ฌ์ด์ ํ์๋ก ํ๋ ์์กด๊ด๊ณ๋ฅผ Bean ์ค์ ์ ๋ณด ๋ฐํ์ผ๋ก ์ปจํ ์ด๋๊ฐ ์๋์ผ๋ก ์ฐ๊ฒฐํฉ๋๋ค.
๊ฐ์ฒด๋ ์ง์ ์์กดํ๊ณ ์๋ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ฑฐ๋ ๊ฒ์ํ ํ์๊ฐ ์์ผ๋ฏ๋ก ์ฝ๋ ๊ด๋ฆฌ๊ฐ ์ฌ์์ง๋ ์ฅ์ ์ด ์์ต๋๋ค.
๊ณตํต์ ๊ด์ฌ ์ฌํญ์ ์ ์ฉํด์ ๋ฐ์ํ๋ ์์กด ๊ด๊ณ์ ๋ณต์ก์ฑ๊ณผ ์ฝ๋ ์ค๋ณต์ ํด์ํด์ค๋๋ค.
๊ฐ ํด๋์ค์์ ๊ณตํต ๊ด์ฌ ์ฌํญ์ ๊ตฌํํ ๋ชจ๋์ ๋ํ ์์กด๊ด๊ณ๋ฅผ ๊ฐ๊ธฐ ๋ณด๋จ, Aspect๋ฅผ ์ด์ฉํด ํต์ฌ ๋ก์ง์ ๊ตฌํํ ๊ฐ ํด๋์ค์ ๊ณตํต ๊ธฐ๋ฅ์ ์ ์ฉํฉ๋๋ค.
๊ฐ๋จํ ์ค์ ๋ง์ผ๋ก๋ ๊ณตํต ๊ธฐ๋ฅ์ ์ฌ๋ฌ ํด๋์ค์ ์ ์ฉํ ์ ์๋ ์ฅ์ ์ด ์์ผ๋ฉฐ ํต์ฌ ๋ก์ง ์ฝ๋๋ฅผ ์์ ํ์ง ์๊ณ ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ณด์, ๋ก๊น , ํธ๋์ญ์ ๊ณผ ๊ฐ์ ๊ณตํต ๊ด์ฌ ์ฌํญ์ AOP๋ฅผ ์ด์ฉํด ๊ฐ๋จํ๊ฒ ์ ์ฉํ ์ ์์ต๋๋ค.
Advice : ์ธ์ ๊ณตํต ๊ด์ฌ๊ธฐ๋ฅ์ ํต์ฌ ๋ก์ง์ ์ ์ฉํ ์ง ์ ์
Joinpoint : Advice๋ฅผ ์ ์ฉ์ด ๊ฐ๋ฅํ ์ง์ ์ ์๋ฏธ (before, after ๋ฑ๋ฑ)
Pointcut : Joinpoint์ ๋ถ๋ถ์งํฉ์ผ๋ก, ์ค์ ๋ก Advice๊ฐ ์ ์ฉ๋๋ Joinpoint๋ฅผ ๋ํ๋
Weaving : Advice๋ฅผ ํต์ฌ ๋ก์ง์ฝ๋์ ์ ์ฉํ๋ ๊ฒ
Aspect : ์ฌ๋ฌ ๊ฐ์ฒด์ ๊ณตํต์ผ๋ก ์ ์ฉ๋๋ ๊ณตํต ๊ด์ฌ ์ฌํญ์ ๋งํจ. ํธ๋์ญ์ ์ด๋ ๋ณด์ ๋ฑ์ด Aspect์ ์ข์ ์
DB์ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๊ฑฐ๋ ์กฐ์ํ๋ ๊ธฐ๋ฅ๋ค์ ์ ๋ดํฉ๋๋ค.
Mybatis๋ฅผ ์ด์ฉํ ๋๋, mapper.xml์ ์ฟผ๋ฆฌ๋ฌธ์ ์์ฑํ๊ณ ์ด๋ฅผ mapper ํด๋์ค์์ ๋ฐ์์ DAO์๊ฒ ๋๊ฒจ์ฃผ๋ ์์ผ๋ก ๊ตฌํํฉ๋๋ค.
์์ค์ฝ๋์ @์ด๋ ธํ ์ด์ ์ ํํ๋ก ํํํ๋ฉฐ ํด๋์ค, ํ๋, ๋ฉ์๋์ ์ ์ธ๋ถ์ ์ ์ฉํ ์ ์๋ ํน์ ๊ธฐ๋ฅ์ด ๋ถ์ฌ๋ ํํ๋ฒ์ ๋งํฉ๋๋ค.
์ ํ๋ฆฌ์ผ์ด์ ๊ท๋ชจ๊ฐ ์ปค์ง์๋ก, xml ํ๊ฒฝ์ค์ ์ด ๋งค์ฐ ๋ณต์กํด์ง๋๋ฐ ์ด๋ฌํ ์ด๋ ค์์ ๊ฐ์ ์ํค๊ธฐ ์ํด ์๋ฐ ํ์ผ์ ์ด๋ ธํ ์ด์ ์ ์ ์ฉํด์ ๊ฐ๋ฐ์๊ฐ ์ค์ ํ์ผ ์์ ์ ํ ๋ ๋ฐ์์ํค๋ ์ค๋ฅ๋ฅผ ์ต์ํํด์ฃผ๋ ์ญํ ์ ํฉ๋๋ค.
์ด๋ ธํ ์ด์ ์ฌ์ฉ์ผ๋ก ์์ค ์ฝ๋์ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ๋ณด๊ดํ ์ ์๊ณ , ์ปดํ์ผ ํ์์ ์ฒดํฌ๋ฟ ์๋๋ผ ์ด๋ ธํ ์ด์ API๋ฅผ ์ฌ์ฉํด ์ฝ๋ ๊ฐ๋ ์ฑ๋ ๋์ฌ์ค๋๋ค.
- @Controller : dispatcher-servlet.xml์์ bean ํ๊ทธ๋ก ์ ์ํ๋ ๊ฒ๊ณผ ๊ฐ์.
- @RequestMapping : ํน์ ๋ฉ์๋์์ ์์ฒญ๋๋ URL๊ณผ ๋งค์นญ์ํค๋ ์ด๋ ธํ ์ด์
- @Autowired : ์๋์ผ๋ก ์์กด์ฑ ์ฃผ์ ํ๊ธฐ ์ํ ์ด๋ ธํ ์ด์
- @Service : ๋น์ฆ๋์ค ๋ก์ง ์ฒ๋ฆฌํ๋ ์๋น์ค ํด๋์ค์ ๋ฑ๋ก
- @Repository : DAO์ ๋ฑ๋ก
๋ฐ์ดํฐ๋ฒ ์ด์ค ํ ์ด๋ธ๊ณผ, ์๋ฐ ๊ฐ์ฒด ์ฌ์ด์ ๋จ์ํ ๋งคํ์ ๊ฐ๋จํ ์ค์ ์ ํตํด ์ฒ๋ฆฌํ๋ ๊ฒ
๊ธฐ์กด์ JDBC์์๋ ๊ตฌํํ๊ณ ์ถ์ ๋ก์ง๋ง๋ค ํ์ํ SQL๋ฌธ์ด ๋ชจ๋ ๋ฌ๋๊ณ , ์ด์ ํ์ํ Connection, PrepareStatement, ResultSet ๋ฑ์ ์์ฑํ๊ณ Exception ์ฒ๋ฆฌ๋ ๋ชจ๋ ํด์ผํ๋ ๋ฒ๊ฑฐ๋ฌ์์ด ์กด์ฌํ์ต๋๋ค.
Spring์์๋ JDBC์ ORM ํ๋ ์์ํฌ๋ฅผ ์ง์ ์ง์ํ๊ธฐ ๋๋ฌธ์ ๋ฐ๋ก ์์ฑํ์ง ์์๋ ๋ชจ๋ ๋ค ์ฒ๋ฆฌํด์ฃผ๋ ์ฅ์ ์ด ์์ต๋๋ค.
๊ฐ์ฒด, ๋ฐ์ดํฐ๋ฒ ์ด์ค, Mapper ์์ฒด๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ์์ฑํ๊ณ , DTO์ ํด๋นํ๋ ๋ถ๋ถ๊ณผ SQL ์คํ๊ฒฐ๊ณผ๋ฅผ ๋งคํํด์ ์ฌ์ฉํ ์ ์๋๋ก ์ง์ํจ
๊ธฐ์กด์๋ DAO์ ๋ชจ๋ SQL๋ฌธ์ด ์๋ฐ ์์ค์์ ์์นํ์ผ๋, MyBatis๋ฅผ ํตํด SQL์ XML ์ค์ ํ์ผ๋ก ๊ด๋ฆฌํฉ๋๋ค.
์ค์ ํ์ผ๋ก ๋ถ๋ฆฌํ๋ฉด, ์์ ํ ๋ ์ค์ ํ์ผ๋ง ๊ฑด๋๋ฆฌ๋ฉด ๋๋ฏ๋ก ์ ์ง๋ณด์์ ๋งค์ฐ ์ข์ต๋๋ค. ๋ํ ๋งค๊ฐ๋ณ์๋ ๋ฆฌํด ํ์ ์ผ๋ก ๋งคํ๋๋ ๋ชจ๋ DTO์ ๊ด๋ จ๋ ๋ถ๋ถ๋ ๋ชจ๋ ์ค์ ํ์ผ์์ ์์ ํ ์ ์๋ ์ฅ์ ์ด ์์ต๋๋ค.