CS
equals() ์ hashcode()
equals() ์ hashcode() ๋ฉ์๋์ ์ญํ ๊ณผ ๊ด๊ณ์ ๋ํด์ ์๊ฐํด๋ณด์. 1๏ธโฃ ๋์ผ์ฑ๊ณผ ๋๋ฑ์ฑ ์ผ๋ฐ์ ์ผ๋ก ๋์ผ์ฑ์ ๋ฉ๋ชจ๋ฆฌ์ ๋์ผํ ์์น์ ์๋์ง๋ฅผ ํ๋จํ๊ณ , ๋๋ฑ์ฑ์ ๋ ๋ฐ์ดํฐ๋ฅผ ๋ ผ๋ฆฌ์ ์ผ๋ก ๊ฐ์ ๋ฐ์ดํฐ๋ก ์ทจ๊ธํ ์ ์๋๊ฐ๋ฅผ ํ๋จํ๋ค. ์๋ฐ์ ๋ฐ์ดํฐ ํ์ ์ ์์ ํ์ (Primitive Type)๊ณผ ์ฐธ์กฐ ํ์ (Reference Type) ๋ฐ์ดํฐ ๋ ์ข ๋ฅ๋ก ๋๋ ์ ์๋ค. JVM์ ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ์๋ ์คํ ์์ญ๊ณผ ํ ์์ญ์ด ์กด์ฌํ๋๋ฐ, ์์ ํ์ ์ ๊ฒฝ์ฐ ์คํ ์์ญ์ ๊ฐ์ผ๋ก์ ๊ด๋ฆฌ๋์ง๋ง, ์ฐธ์กฐ ํ์ ์ ๊ฒฝ์ฐ ํ ์์ญ์์ ์์ฑ๋๊ณ ์คํ ์์ญ์์๋ ํ ์์ญ์ ์์น๋ก ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๋ค. public class Main { public static void main(String[] args) { int port ..
Hash ์๋ฃ๊ตฌ์กฐ์ ํด์ ์ถฉ๋
Hash Table ์ด๋ Hash Table์ ๋ฐ์ดํฐ๋ฅผ key-value ํ์์ผ๋ก ๋ณด๊ดํ์ฌ ๊ฒ์ · ์ฝ์ · ์ญ์ ๋ฅผ O(1) ์๊ฐ ๋ณต์ก๋๋ก ์ํํ ์ ์๋ ์๋ฃ๊ตฌ์กฐ์ด๋ค. Hash Table์ key ๊ฐ์ ํตํด ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๊ธฐ ๋๋ฌธ์, key ๊ฐ์ ๊ณ ์ ํด์ผํ๋ค. ์ด๋ฌํ ๊ณ ์ ํ key ๊ฐ์ ๋ง๋๋ ์์ ์ ํด์ ํจ์๊ฐ ๋ด๋นํ๋๋ฐ, ๋ํ์ ์ผ๋ก๋ key ๊ฐ์ ASCII ๊ฐ์ ํฉํ์ฌ ๋ง๋๋ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ด ์๋ค. ์ด๋ฌํ ํด์ ํจ์๊ฐ key๋ฅผ ๋ง๋๋ ๊ณผ์ ์์, ์๋ํ์ง ์๊ฒ ์ฐ์ฐํ key ๊ฐ์ด ์ผ์นํ๋ ๊ฒฝ์ฐ๊ฐ ๋ฐ์ํ ์ ์๋๋ฐ ๐ก ์ด๋ฅผ ํด์ ์ถฉ๋์ด๋ผ๊ณ ํ๋ค. ํด์ ์ถฉ๋์ด ๋ฐ์ํ๋ฉด, key ๊ฐ์ด ์ค๋ณต๋์ด ๋ฐ์ดํฐ๊ฐ ์ฌ๋ผ์ง ์ ์๋ค. ๋ฐ๋ผ์ ํด์ ์ถฉ๋์ด ๋ฐ์ํ๋ฉด ๋์ฒํด์ผํ๋ค. ๋ํ์ ์ธ ๋ฐฉ๋ฒ์ผ๋ก๋ ์ฒด์ธ๋ฒ (Seperate C..
๋ณํฉ ์ ๋ ฌ (Merge Sort) ์ ๊ตฌํํด๋ณด์
์ ๋ ฌ์ ํ ์ ์๋ ๋ฐฉ๋ฒ์ ์ฌ๋ฌ๊ฐ์ง๊ฐ ์๋ค. ๋ํ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ๋ฐฉ๋ฒ์ด ์๋ค. ๐ก ์ ๋ ฌ์ ์ข ๋ฅ์ ๋ฐฉ์ 1. ๋ฒ๋ธ ์ ๋ ฌ : 2๊ฐ์ ์์๋ฅผ ๊ณ์ ๋น๊ตํด๋๊ฐ๋ฉฐ ๊ฐ์ด ํฐ ์์๊ฐ ์์ ์๋ ๊ฒฝ์ฐ ์์น๋ฅผ ๊ตํํ๋ค. ์ ์ผ ํฐ ๊ฐ(์ค๋ฆ์ฐจ์์ ๊ฒฝ์ฐ)์ ์ ์ผ ๋ค๋ก ๋ณด๋ด์ด ์ต์ข ์ ์ผ๋ก ์ ๋ ฌ๋๋ค. ์๊ฐ ๋ณต์ก๋๋ O(N^2)์ผ๋ก ๋ณผ ์ ์๋ค. ๋ง์ฝ ํ๋ฒ ์ํํ์ ๋ ๋ ์์๊ฐ ์์น๊ฐ ๋ณํ ์ ์ด ์๋ค๋ฉด ์ํ๋ฅผ ๋น ์ ธ๋๊ฐ๋ ๋ฐฉ์์ผ๋ก ์ต์ ํ๋ฅผ ํ ์ ์๋ค. 2. ์ ํ ์ ๋ ฌ : ์์๋ค์ ์ํํ์ฌ ๊ฐ์ฅ ์์ ๊ฐ์ ์ฐพ์ ๋ค(์ ํ), ์ ์ผ ์ ์์์ ์์น๋ฅผ ๋ฐ๊ฟ์ผ๋ก์ ์์ ๊ฐ์ด ๊ณ์ ์์ผ๋ก ์ด๋ํ๋ฉด์ ์ต์ข ์ ์ผ๋ก ์ ๋ ฌ๋๋ค. ์๊ฐ ๋ณต์ก๋๋ O(N^2)์ผ๋ก ๋ณผ ์ ์๋ค. 3. ์ฝ์ ์ ๋ ฌ : 2๋ฒ์งธ ์์๋ถํฐ ์์ํด์ N๋ฒ์งธ ์์๊น์ง N-1๊น์ง์ ..
Linked List ๊ตฌํํด๋ณด๊ธฐ
๋ฆฌ์คํธ์๋ ์ฐ์ํ๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ ์ฅ๋์ด ์๋ ArrayList์ ๊ฐ๊ฐ์ ๋ฐ์ดํฐ์์ ๋ค์ ๋ฐ์ดํฐ์ ๋ํ ์ ๋ณด๋ฅผ ๊ฐ๊ณ ์์ด ์ฐ๊ฒฐ๋๋ LinkedList๊ฐ ์๋ค. ๊ฐ ์๋ฃ๊ตฌ์กฐ์ ํน์ง์ ๋ค์๊ณผ ๊ฐ๋ค. 1๏ธโฃ ArrayList 1. ๋ฐ์ดํฐ๊ฐ ์ฐ์์ ์ผ๋ก ๋์ด๋์ด ์์ด, ํน์ ์ธ๋ฑ์ค์ ๋ฐ์ดํฐ์ ์ ๊ทผํ๋ ๊ฒฝ์ฐ O(1) ๋ก ์ ๊ทผํ ์ ์๋ค. 2. ์ ํ ํ์์ ๊ฒฝ์ฐ O(n), ์ ๋ ฌ๋์ด ์์ ๋ ์ด๋ถํ์์ ๊ฒฝ์ฐ O(logN) ์ผ๋ก ์ ๊ทผํ ์ ์๋ค. 3. ์ค๊ฐ ์์น์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ · ์ญ์ ํ๋ ๊ฒฝ์ฐ, ๋๋จธ์ง ์์๋ค์ ์์น๋ฅผ ์ฎ๊ฒจ์ผ ํ๊ธฐ ๋๋ฌธ์ O(N) ์ด๋ค. 2๏ธโฃ LinkedList 1. ํน์ ์ธ๋ฑ์ค์ ์์นํ ์์์ ์ ๊ทผํ๋ ๊ฒฝ์ฐ์, ์ํ๋ฅผ ํด์ ์ฐพ์์ผ ํ๋ฏ๋ก O(N) ์ด๋ค. 2. ๋จ์ผ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๊ฒฝ์ฐ, ์์ ๋ถ๋ถ..
๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ์ํ ๊ธฐ๋ฒ
๋์ ์ฝ๊ฒ ๋ฐฐ์ฐ๋ ์ด์์ฒด์ ์ ๊ฐ์ ์ด์์ฒด์ -๋ฐํจ๊ฒฝ ๋ฅผ ๋ณด๊ณ ์ ๋ฆฌํ ๊ธ์ ๋๋ค. ๐ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋? ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ ํฌ๊ธฐ๊ฐ ๋ค๋ฅธ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ์์ ์ผ๊ด๋๊ฒ ํ๋ก์ธ์ค๋ฅผ ์คํํ ์ ์๋ ๊ธฐ์ ์ด๋ค. ํ๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์ ๊ฐ์ฅ ํฐ ํน์ง์ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ์ ํฌ๊ธฐ์ ํ๋ก์ธ์ค๊ฐ ์ฌ๋ผ๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์์น๋ฅผ ์ ๊ฒฝ์ฐ์ง ์๊ณ ํ๋ก๊ทธ๋๋ฐ ํ๋๋ก ์ง์ํ๋ค. ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ์ ํฌ๊ธฐ์ ์๊ด์์ด ํ๋ก์ธ์ค์ ์ปค๋ค๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ ๊ณตํ๋ ๊ธฐ์ ์ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ผ๊ณ ํ๋ค. โ ์ด๋ก ์ ์ผ๋ก ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ ๋ฌดํ๋์ ํฌ๊ธฐ์ธ๋ฐ, ์ด๋ป๊ฒ ๊ฐ๋ฅํ ๊ฒ์ผ๊น? ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ์์คํ ์์๋ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ์ ๋ด์ฉ ์ค ์ผ๋ถ๋ฅผ ํ๋๋์คํฌ์ ์ผ๋ถ ๊ณต๊ฐ์ธ ์ค์ ์์ญ์ผ๋ก ์ฎ๊ธด๋ค. ์ค์ ์์ญ์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์๊ฐ ๊ด๋ฆฌํ๋ ํ๋๋์คํฌ์ ์์ญ์ด๋ค. ๋ฉ๋ชจ๋ฆฌ์์ ์ค์ ์์ญ์ผ๋ก ๋ณด๋ด๋ ๊ฒ์ ์ค์ ์์์ด๋ผ ๋ถ..
๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ
๋์ ์ฝ๊ฒ ๋ฐฐ์ฐ๋ ์ด์์ฒด์ ์ ๊ฐ์ ์ด์์ฒด์ -๋ฐํจ๊ฒฝ ๋ฅผ ๋ณด๊ณ ์ ๋ฆฌํ ๊ธ์ ๋๋ค. ๐ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์ ๋ชจ๋ ํ๋ก๊ทธ๋จ์ ์คํ๋๊ธฐ ์ํด ๋ฉ๋ชจ๋ฆฌ๋ก ์ฌ๋ผ์์ผ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ์๋ถํ ์์คํ ์์๋ ์ฌ๋ฌ ํ๋ก๊ทธ๋จ์ด ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์์๊ธฐ ๋๋ฌธ์, ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ์ ํ๊ฒ ๊ด๋ฆฌํ๋ ๊ฒ์ ์ฑ๋ฅ์ ์ค์ํ ์ํฅ์ ์ค๋ค. ์ด๋ฌํ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ, ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์ (Memory Manage Unit, MMU) ๋ผ๋ ํ๋์จ์ด๊ฐ ๋ด๋นํ๋ค. ๊ฐ์ ธ์ค๊ธฐ ์์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์๋ ์ฌ์ฉ์๊ฐ ์์ฒญํ๋ฉด ํ๋ก์ธ์ค์ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ๋ฉ๋ชจ๋ฆฌ๋ก ๊ฐ์ ธ์จ๋ค. ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ถฉ๋ถํ์ง ์๋ค๋ฉด, ์ผ๋ถ๋ง ๋จผ์ ๊ฐ์ ธ์ค๊ณ ๋๋จธ์ง ๋ฉ๋ชจ๋ฆฌ๋ ์ง์์ ์ผ๋ก ๊ฐ์ ธ์ค๋ ๊ฒฝ์ฐ๋ ์๊ณ ์ฌ์ฉ์์ ์์ฒญ์ด ์๋๋ผ๋ ์์ผ๋ก ํ์ํ ๊ฒ์ผ๋ก ์์๋๋ ๋ฐ์ดํฐ๋ฅผ ๋ฏธ๋ฆฌ ๊ฐ์ ธ์ค๊ธฐ๋ ํ๋ค. ๋ฐฐ์น ์์ ๊ฐ์ ธ์จ ํ๋ก์ธ์ค์ ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ..
๊ต์ฐฉ ์ํ(DeadLock)
๋์ ์ฝ๊ฒ ๋ฐฐ์ฐ๋ ์ด์์ฒด์ ์ ๊ฐ์ ์ด์์ฒด์ -๋ฐํจ๊ฒฝ ๋ฅผ ๋ณด๊ณ ์ ๋ฆฌํ ๊ธ์ ๋๋ค. ๐ ๊ต์ฐฉ ์ํ๋? ํ๋ก์ธ์ค๋ค์ด ์๋ก๊ฐ ๊ฐ์ง ์์์ ๊ธฐ๋ค๋ฆฌ๋ฉฐ ๋๊ธฐ์ค์ธ ์ํ์ด๋ค. CPU ์ค์ผ์ค๋ง ํํธ์ ๋์๋ ์์ฌ ํ์๊ณผ๋ ๋ค๋ฅธ๋ฐ, ์์ฌ ํ์์ ๊ฒฝ์ฐ ํน์ ํ๋ก์ธ์ค์ ์ฐ์ ์์๊ฐ ๊ณ์ ๋ฐ๋ ค ์ฅ๊ธฐ๊ฐ CPU๋ฅผ ํ ๋น๋ฐ์ง ๋ชปํ๋ ๊ฒ์ด๊ณ ๊ต์ฐฉ์ํ๋ ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ์์ ์ ํ๋ค๋ณด๋ ์๋ก์ ์์์ ํ ๋น๋ฐ๊ธฐ ์ํด ๋ฌดํ์ ๋๊ธฐํ๋ ์ํ์ธ ๊ฒ์ด๋ค. ๊ต์ฐฉ ์ํ๋ ๋ค์ 4๊ฐ์ง ์กฐ๊ฑด์ ๐ก ๋ชจ๋ ๋ง์กฑํ์ ๋, ๋ฐ์ํ๋ค. 1. ์ํธ ๋ฐฐ์ 2. ๋น์ ์ 3. ์ ์ ์ ๋๊ธฐ 4. ์ํ๋๊ธฐ ์ํธ ๋ฐฐ์ ํ๋ก์ธ์ค๊ฐ ์ฌ์ฉํ๋ ์์์ ๋ค๋ฅธ ํ๋ก์ธ์ค์ ๊ณต์ ํ ์ ์๋ ๋ฐฐํ์ ์ธ ์์์ด์ด์ผ ํ๋ค. ์ฆ, ์์์ด ์๊ณ๊ตฌ์ญ์ผ๋ก์ ๋ณดํธ๋๊ธฐ ๋๋ฌธ์ ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ๋์์ ์์์ ์ฌ์ฉํ ..
ํ๋ก์ธ์ค ๋๊ธฐํ
๋์ ์ฝ๊ฒ ๋ฐฐ์ฐ๋ ์ด์์ฒด์ ์ ๊ฐ์ ์ด์์ฒด์ -๋ฐํจ๊ฒฝ ๋ฅผ ๋ณด๊ณ ์ ๋ฆฌํ ๊ธ์ ๋๋ค. ๐ Race Condition 2๊ฐ ์ด์์ ํ๋ก์ธ์ค์ฌ ๊ณต์ ์์์ ์ฝ๊ฑฐ๋ ์ฐ๋ ์ํฉ์ Race Condition ์ด๋ผ๊ณ ํ๋ค. Race Condition์ด ๋ฐ์ํ๋ฉด ๊ณต์ ์์ ์ ๊ทผ ์์์ ๋ฐ๋ผ ์คํ ๊ฒฐ๊ณผ๊ฐ ๋ฌ๋ผ์ง ์ ์๊ธฐ ๋๋ฌธ์ ๋ฐ์ํ์ง ์๋๋ก ํด์ผํ๋ค. kernel ์ํ ์ค ์ธํฐ๋ฝํธ ๋ฐ์ ์ ์ปค๋ ๋ชจ๋๋ก count๋ฅผ ์ฆ๊ฐ์ํค๊ณ ์๋ ์์ค์ ์ธํฐ๋ฝํธ๊ฐ ๋ค์ด์ค๋ฉด ์ธํฐ๋ฝํธ ์ฒ๋ฆฌ ๋ฃจํด์ผ๋ก ๋ค์ด๊ฐ๋ค. ์ธํฐ๋ฝํธ ์์ ์ด ์ปค๋๋ชจ๋๋ก ์ํํ๋ count๋ฅผ ๊ฐ์์ํค๋ ์์ ์ ์งํํ๋ค. ๋ค์ ์ปค๋๋ชจ๋๋ก ๋์์์ ์์ ์ ์ํํ ๋์๋, ์ธํฐ๋ฝํธ์ ์์ ์ด ๋ฐ์๋ count๊ฐ ์๋ ์ด์ ์ ์งํ์ค์ด์๋ ์์ ์ ์ด์ด์ ์ํํ๊ธฐ ๋๋ฌธ์, ์ธํฐ๋ฝํธ๊ฐ ํ๋ ์์ ..
CPU ์ค์ผ์ค๋ง
๋์ ์ฝ๊ฒ ๋ฐฐ์ฐ๋ ์ด์์ฒด์ ์ ๊ฐ์ ์ด์์ฒด์ -๋ฐํจ๊ฒฝ ๋ฅผ ๋ณด๊ณ ์ ๋ฆฌํ ๊ธ์ ๋๋ค. ์ค์ผ์ค๋ง์ ์ฌ๋ฌ ํ๋ก์ธ์ค์ ์ํฉ์ ๊ณ ๋ คํ์ฌ CPU์ ์์คํ ์์์ ์ด๋ป๊ฒ ๋ฐฐ์ ํ ์ง ๊ฒฐ์ ํ๋ ์ผ์ ๋งํ๋ค. ๐ ์ค์ผ์ค๋ง ์์ค ๊ณ ์์ค ์ค์ผ์ค๋ง ์ฅ๊ธฐ ์ค์ผ์ค๋ง ์ด๋ผ๊ณ ๋ ํ๋ค. ๊ณ ์์ค ์ค์ผ์ค๋ง์ ์์คํ ๋ด์ ์ ์ฒด ์์ ์๋ฅผ ์กฐ์ ํ๋ ๊ฒ์ ๋งํ๋ค. ์์คํ ์ํฉ์ ๊ณ ๋ คํ์ฌ ์ด๋ค ์์ ์ ์น์ธํ ์ง, ๊ฑฐ๋ถํ ์ง๋ฅผ ๊ฒฐ์ ํ๊ธฐ ๋๋ฌธ์ ๋์์ ์คํ ๊ฐ๋ฅํ ํ๋ก์ธ์ค์ ์ด ๊ฐ์๊ฐ ์ ํด์ง๋ค. ์ ์์ค ์ค์ผ์ค๋ง ์ด๋ค ํ๋ก์ธ์ค์ CPU๋ฅผ ํ ๋นํ ์ง, ์ด๋ค ํ๋ก์ธ์ค๋ฅผ ๋๊ธฐ ์ํ๋ก ๋ณด๋ผ์ง ๋ฑ์ ๊ฒฐ์ ํ๋ค. ์ฃผ๋ก, ํ๋ก์ธ์ค์ ์ํ๋ฅผ ๊ด๋ฆฌํ๊ณ ๋จ๊ธฐ ์ค์ผ์ค๋ง ์ด๋ผ๊ณ ๋ ํ๋ค. ์ค๊ฐ ์์ค ์ค์ผ์ค๋ง ์์คํ ์ ๋์์ ์คํ ๊ฐ๋ฅํ ํ๋ก์ธ์ค์ ์๋ฅผ ๊ณ ์์ค ์ค์ผ์ค๋ง์ด ์ ํ๋ค๋ฉด ์ค๊ฐ ์์ค ..
ํ๋ก์ธ์ค์ ์ค๋ ๋
๋์ ์ฝ๊ฒ ๋ฐฐ์ฐ๋ ์ด์์ฒด์ ์ ๊ฐ์ ์ด์์ฒด์ -๋ฐํจ๊ฒฝ ๋ฅผ ๋ณด๊ณ ์ ๋ฆฌํ ๊ธ์ ๋๋ค. ๐ ํ๋ก๊ทธ๋จ๊ณผ ํ๋ก์ธ์ค ํ๋ก๊ทธ๋จ์ ์ ์ฅ์ฅ์น์ ์ ์ฅ๋์ด์๋ ์ ์ ์ธ ์ํ์ด๋ค. ํ๋ก์ธ์ค๋ ์คํ์ ์ํด ํ๋ก๊ทธ๋จ์ด ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์จ ๋์ ์ธ ์ํ์ด๋ค. ๐ ํ๋ก์ธ์ค์ 5 ๊ฐ์ง ์ํ ํ๋ก์ธ์ค๋ฅผ ์ผ๊ด ์์ ์ผ๋ก ์ฒ๋ฆฌํ๋ฉด, ๋ฉ๋ชจ๋ฆฌ์ ํ๋์ ํ๋ก์ธ์ค๋ง ์ฌ๋ ค๋๊ณ ์ฌ์ฉํ๋ฉด ๋์ง๋ง ๋ค๋ฅธ ํ๋ก์ธ์ค๋ ํ๋์ ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋ ๋๊น์ง ๋ฌดํ์ ๋๊ธฐํด์ผํ๋ค. ๋ฐ๋ผ์, ์๋ถํ ์์ ๋ฐฉ์์ ์ฌ์ฉํ๋ค. ์ฌ๋ฌ ํ๋ก์ธ์ค์ CPU๋ฅผ ์ฌ์ฉํ ์ ์๋ ์๊ฐ์ ๋ถ๋ฐฐํ๋ ๊ฒ์ด๋ค. ํ๋ก์ธ์ค๊ฐ ๋ฐ๋๋๋ง๋ค ๋ฌธ๋งฅ๊ตํ์ด๋ผ๋ ๋น์ฉ์ด ๋ฐ์ํ์ง๋ง, ์ผ๊ด ์์ ์ ์๊ธฐ๋ CPU์ ๋ญ๋น๋ฅผ ๋ฐฉ์งํ ์ ์๋ค. 1. ์์ฑ ์ํ ํ๋ก์ธ์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์ ์คํ์ค๋น๋ฅผ ์๋ฃํ ์ํ์ด๋ค. ํ๋ก์ธ์ค๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ..
OSI ๋ชจ๋ธ
OSI ๋ชจ๋ธ์ด๋? OSI ๋ชจ๋ธ์ ์ปดํจํฐ์์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๊ธฐ ์ํด์ ์ปดํจํฐ ๋ด๋ถ์์ ํ๋ ์ฌ๋ฌ ๊ฐ์ง ์ผ๋ค์ 7 ๊ณ์ธต์ผ๋ก ๋๋ ๊ฒ์ด๋ค. ๐ก ํต์ ์ด ์ผ์ด๋๋ ๊ณผ์ ์ ๋จ๊ณ๋ณ๋ก ์ ์ ์๊ธฐ ๋๋ฌธ์ ํน์ ํ ๋จ๊ณ์์ ์ด์์ด ์๊ธฐ๋ฉด ๊ทธ ๊ณณ๋ง ์์ ํ๋ฉด ๋๊ธฐ ๋๋ฌธ์ ํธ๋ฆฌํ๋ค. ์ฌ์ฉํ๋ ๊ธฐ๊ณ, ์ผ์ด๋ธ ๋ฑ๊ณผ ๊ด๊ณ ์์ด ํต์ ์ ํ๊ธฐ ์ํด ๊ณตํต์ผ๋ก ์ฌ์ฉํ๊ธฐ๋ก ์ฝ์ํ ํต์ ํ์ค ๊ท๊ฒฉ์ด๋ค. ๐ก TCP/IP ๋ชจ๋ธ์ OSI ๋ชจ๋ธ์ ๋ฐํ์ผ๋ก ์ค์ํ์ ์ฌ์ฉํ๊ธฐ ์ํด ๋ง๋ค์ด์ก๋ค. 1. ๋ฌผ๋ฆฌ ๊ณ์ธต - ์ ์ก ๋งค์ฒด์ ๋ฌผ๋ฆฌ์ (๊ธฐ๊ณ์ , ์ ๊ธฐ์ ) ์ธํฐํ์ด์ค์ ๊ดํ ๊ธฐ์ - ํ๋์จ์ด๋ก ๊ตฌํ - ๋ฐ์ดํฐ ์ ์ก ์๋, ํด๋ญ ๋๊ธฐํ, ๋ฌผ๋ฆฌ์ ์ฐ๊ฒฐ ํํ ๋ฌผ๋ฆฌ ๊ณ์ธต์ ์ ๊ธฐ ์ ํธ๋ฅผ ์ ๋ฌํ๋ ๊ณ์ธต์ด๋ค. ์ปดํจํฐ๋ 0๊ณผ 1๋ก ์ด๋ฃจ์ด์ง ๋นํธ์ด์ ์ฌ์ฉํ๋ค. ๋ฐ๋ผ์ ํต์ ์ด๋ผ..
MySQL ์ตํฐ๋ง์ด์
MySQL ์๋ฒ๋ก ์์ฒญ๋ ์ฟผ๋ฆฌ๋ ๊ฒฐ๊ณผ๋ ๋์ผํ์ง๋ง ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ง๋ค์ด ๋ด๋ ๋ฐฉ๋ฒ์ ๋งค์ฐ ๋ค์ํ๋ค. ๋ค์ํ ๋ฐฉ๋ฒ ์ค, ๊ฐ์ฅ ์ต์ ์ด๊ณ ์ต์์ ๋น์ฉ์ด ์๋ชจ๋๋ ๋ฐฉ๋ฒ์ ์ ํํ๋ ์์ ์ ์ตํฐ๋ง์ด์ ๊ฐ ๋ด๋นํ๋ค. MySQL ์ตํฐ๋ง์ด์ ๋ ์ฟผ๋ฆฌ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํ ์ฌ๋ฌ ๊ฐ์ง ๊ฐ๋ฅํ ๋ฐฉ๋ฒ์ ๋ง๋ค๊ณ , ๊ฐ ๋จ์ ์์ ์ ๋น์ฉ ์ ๋ณด์ ๋์ ํ ์ด๋ธ์ ์์ธก๋ ํต๊ณ ์ ๋ณด๋ฅผ ์ด์ฉํด ์คํ ๊ณํ๋ณ ๋น์ฉ์ ์ฐ์ถํ๋ค. ์ฐ์ถ๋ ๋น์ฉ์ ๋ฐํ์ผ๋ก, ๋น์ฉ์ด ์ต์๋ก ์์๋๋ ์ฒ๋ฆฌ ๋ฐฉ์์ ์ ํํ๋ ๐ก ๋น์ฉ ๊ธฐ๋ฐ ์ตํฐ๋ง์ด์ ์ด๋ค. ์ตํฐ๋ง์ด์ ๊ฐ ๋ง๋ค์ด ๋ด๋ ์คํ ๊ณํ์ ์ดํดํ ์ ์์ด์ผ ์คํ ๊ณํ์ ๋ถํฉ๋ฆฌํ ๋ถ๋ถ์ ์ฐพ์๋ด๊ณ , ๋ ์ต์ ํ๋ ๋ฐฉ๋ฒ์ผ๋ก ์ ๋ํ ์ ์๋ค. ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๐ ํ ํ ์ด๋ธ ์ค์บ๊ณผ ํ ์ธ๋ฑ์ค ์ค์บ ํ ํ ์ด๋ธ ์ค์บ์ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ํ ์ด๋ธ์..
์ข์ ๊ฐ์ฒด ์งํฅ ์ค๊ณ์ 5๊ฐ์ง ์์น SOLID
S : SRP(Single Reposibility Principle), ๋จ์ผ ์ฑ ์ ์์น ํ ํด๋์ค๋ ํ๋์ ์ฑ ์๋ง ๊ฐ์ ธ์ผ ํ๋ค. ์ค์ํ ๊ธฐ์ค์ ๋ณ๊ฒฝ์ด๋ค. ๋ณ๊ฒฝ์ด ๋ฐ์ํ ๋, ํ๊ธํจ๊ณผ๊ฐ ์ ์ผ๋ฉด ๋จ์ผ ์ฑ ์ ์์น, ์ฆ SRP ์์น์ ์ ๋ฐ๋ฅธ ๊ฒ์ด๋ค. O : OCP(Open/Closed Principle), ๊ฐ๋ฐฉ·ํ์ ์์น ํ์ฅ์๋ ์ด๋ ค์์ด์ผ ํ๋, ๋ณ๊ฒฝ์๋ ๋ซํ์์ด์ผ ํ๋ค. ์๋ก์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํ๊ณ ์ถ์ผ๋ฉด, ์์ ํ๋ ๊ฒ์ด ์๋, ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ์๋ก์ด ํด๋์ค๋ฅผ ํ๋ ๋ ๋ง๋ค์ด์ ์๋ก์ด ๊ธฐ๋ฅ์ ๊ตฌํํ๋ค. ๊ตฌํ ํด๋์ค์ ์คํํด๋์ค๋ฅผ ์ฐ๊ฒฐํด์ฃผ๋ Config ํด๋์ค์ ๋ณ๊ฒฝ๋ง ์์ผ๋ฉด ๋ณํ๋ฅผ ์ ์ฐํ๊ฒ ํ ์ ์์ผ๋ฉฐ, ๊ตฌํํด๋์ค์์์ ์ง์ ์ ์ธ ์์ ์ ํ์ํ์ง ์๋ค. L : LSP(Liskov Substitutuion Pr..
์ด์์ฒด์ ๋?
๋์ ์ฝ๊ฒ ๋ฐฐ์ฐ๋ ์ด์์ฒด์ ์ ๊ฐ์ ์ด์์ฒด์ -๋ฐํจ๊ฒฝ ๋ฅผ ๋ณด๊ณ ์ ๋ฆฌํ ๊ธ์ ๋๋ค. ๐ ์ด์์ฒด์ ๋? ์ด์์ฒด์ ๋ ์ปดํจํฐ ํ๋์จ์ด ๋ฐ๋ก ์์ ์ค์น๋์ด, ์ฌ์ฉ์ ๋ฐ ๋ค๋ฅธ ๋ชจ๋ ์ํํธ์จ์ด์ ํ๋์จ์ด๋ฅผ ์ฐ๊ฒฐํ๋ ์ํํธ์จ์ด์ด๋ค. ๐ก ์ฌ์ฉ์์๊ฒ ํธ๋ฆฌํ ์ธํฐํ์ด์ค ํ๊ฒฝ์ ์ ๊ณตํ๊ณ ์ปดํจํฐ ์์คํ ์ ์์์ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๋ ์ํํธ์จ์ด์ด๋ค. ๋ํ์ ์ธ ์๋ก ์๋์ฐ, Mac OS, Linux, Unix ๋ฑ์ด ์ด์์ฒด์ ๋ผ๊ณ ํ ์ ์๋ค. ์ด์์ฒด์ ๊ฐ ์๋ ๊ธฐ๊ณ๋ ๋ง๋ค ๋น์์ ๊ตฌํํ ๊ธฐ๋ฅ ์ธ์ ๋ค๋ฅธ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๊ฑฐ๋ ์ฑ๋ฅ์ ํฅ์ํ ์ ์๋ค. ์ด์์ฒด์ ๊ฐ ์๋ ๊ธฐ๊ณ๋, ๊ธฐ๋ฅ์ ์ถ๊ฐ๋ ์ฑ๋ฅ ๋ณ๊ฒฝ์ด ๊ฐ๋ฅํ ํ๋ก๊ทธ๋๋ฐ์ด ๊ฐ๋ฅํ ๊ธฐ๊ณ์ด๋ค. ์ ํ๊ธฐ์ ์ค๋งํธํฐ์ ๋น๊ตํด๋ณด๋ฉด, ์ ํ๊ธฐ๋ ๋ง๋ค์ด์ง ๊ธฐ๋ฅ์ธ ์ ํ๋ง ์ฌ์ฉํ ์ ์๊ณ , ์ค๋งํธํฐ์ ์๋ก์ด ํ๋ก๊ทธ๋จ์ ..
Index(์ธ๋ฑ์ค)์ ๋ํด์ ์์๋ณด์
Real MySQL ์ฑ ์ ๊ณต๋ถํ๋ฉด์ ์ ๋ฆฌํ ๋ด์ฉ์ ๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฑ๋ฅ ํ๋์ ์ด๋ป๊ฒ ๋์คํฌ I/O๋ฅผ ์ค์ด๋๋๊ฐ ๊ด๊ฑด์ผ๋๊ฐ ์๋นํ ๋ง๋ค. ๐ก ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ ์ด๋ธ์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํด์ ์ํ๋ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ ธ์ค๋ ค๋ฉด ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฐ๋ค. ๊ทธ๋์ ์นผ๋ผ์ ๊ฐ๊ณผ ํด๋น ๋ ์ฝ๋๊ฐ ์ ์ฅ๋ ์ฃผ์๋ฅผ ํค์ ๊ฐ์ ์์ผ๋ก ์ผ์ ์ธ๋ฑ์ค๋ฅผ ๋ง๋ค์ด ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์นผ๋ผ์ ๊ฐ์ ์ฃผ์ด์ง ์์๋ก ๋ฏธ๋ฆฌ ์ ๋ ฌํด์ ๋ณด๊ดํ๋ค. ๐ก ์กฐํ ์์ฒญ ์, ๋ฐ์ดํฐ๊ฐ ์ ๋ ฌ๋์ด ์๊ธฐ ๋๋ฌธ์ ๋นจ๋ฆฌ ์ํ๋ ๊ฐ์ ์ฐพ์์ฌ ์ ์๋ค. (SELECT) ๐จ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋ ๋ ๋ง๋ค ํญ์ ๊ฐ์ ์ ๋ ฌํด์ผ ํ๋ฏ๋ก ์ ์ฅํ๋ ๊ณผ์ ์ด ๋ณต์กํ๊ณ ๋๋ฆฌ๋ค. ( INSERT · UPDATE · DELETE ) ๋ฐ์ดํฐ ์ ์ฅ ๋ฐฉ์ ๋ณ๋ก ๊ตฌ๋ถํ๋ฉด, ๋ํ์ ์ผ๋ก B-Tree ์ธ๋ฑ์ค์ Hash ์ธ๋ฑ..