๐ญย ๋๋ ์ด๋ค ๊ฐ๋ฐ์ ์คํ์ผ์ผ๊น ์ค๋์ ๊ฐ๋ณ์ด ์ฃผ์ ๋ก ๊ธ์ ํ๋ฒ ์จ๋ณผ๊น ํ๋ค. ์ธ์คํํฐ์ผ๋ก โ๋ฐ๋ธ๊ฒฝ์โ ์๊ฐ์ ์ฆ๊ฒจ๋ณด๋๋ฐ ๊ฐ๋ฐ์ ์ ๋นํฐ์์ด์ค๋ฌ์ด๊ฒ ์์๋ค. ๋ณด๋ฉด์ ๋๋ ์ด๋ค ํ์ ์ผ๊น ์๊ฐ์ด ๋ค์ด์ ํ๋์ฉ ์์ฑํด๋ณด๋ ค๊ณ ํ๋ค. 1๏ธโฃย ์ฝ๋ฉ ์ ๋ฌธ Python vs C
JVM( Java Virtual Machine )์ ์๋ฐ ํ๋ก๊ทธ๋จ ์คํํ๊ฒฝ์ ๋ง๋ค์ด์ฃผ๋ ์ํํธ์จ์ด์ ๋๋ค. ์๋ฐ๋ ์ปดํ์ผ๋ฌ๋ฅผ ํตํด ์์ฑ๋ ์์ค ์ฝ๋๋ฅผ ๊ธฐ๊ณ์ด๋ก ๋ณํํ๋ ๋์ , ์ค๊ฐ ๋จ๊ณ์ .class ๋ฐ์ดํธ์ฝ๋๋ผ๋ ํ์์ผ๋ก ์ปดํ์ผํฉ๋๋ค. ์ด ๋ฐ์ดํธ ์ฝ๋๋ JVM์ ์ํด
๋๊ธฐ์ ๋น๋๊ธฐ๋ ์ปดํจํฐ ํ๋ก๊ทธ๋๋ฐ์์ ์ค์ํ ๊ฐ๋ ์ ๋๋ค. ๋๊ธฐ์ ๋น๋๊ธฐ๋ ํ๋ก๊ทธ๋จ์ด ์์ ์ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ๋์ง์ ๋ํ ๋ฐฉ์์์ ์ฐจ์ด๊ฐ ์กด์ฌํฉ๋๋ค. ๋๊ธฐ๋ ์ถ๊ตฌํ๋ ํ์์ ๋ชฉ์ ์ด ๋์์ ์ด๋ฃจ์ด์ง๊ณ , ๋น๋๊ธฐ๋ ์ถ๊ตฌํ๋ ํ์์ ๋ชฉ์ ์ด ๋ค๋ฅผ ์๋ ์๊ณ ๋์์ ์ด๋ฃจ์ด์ง์ง๋ ์์ต๋
์ญ์ฌ ์ ์๋์ด๋ ๊ฟ์ ๊ฐ๊ณ ๋ํ๊ต์ ์ ์ฑ. ์ญ์ฌ ์ ์๋์ด ๋๊ธฐ ์ํด์๋ ์ญ์ฌ ๊ต์กํ๊ณผ๋ก ๊ฐ๋ ๊ฒ์ด ๋ง์ผ๋ ๋ํ ์ ์์ ํ์ค์ ๊ตด๋ณตํ์ฌ ์ญ์ฌ ๊ต์กํ๊ณผ๊ฐ ์๋ ์ญ์ฌํ๊ณผ์ ์งํํ๊ฒ ๋๋ค. ๊ทธ๋๋ ์ญ์ฌํ๊ณผ์์ ๊ต์ง์ด์๋ฅผ ํ๋ฉด ๋๊ฒ ์ง! ๋ผ๋ ๊ฒฐ์ฌ์ ๊ฐ๊ณ ์๋ด๊ธฐ๊ฐ ๋๋๋ฐ, ์ญ์ฌ๋ผ
HTTP Method๋ GET, POST, PUT, DELETE 4๊ฐ์ง๊ฐ ๋ํ์ ์ ๋๋ค. ๋ณดํต CURD์์ ์กฐํ(GET), ๋ฑ๋ก(POST), ์์ (PUT), ์ญ์ (DELETE) ๋ก ์ฌ์ฉ๋ฉ๋๋ค.HTTP Method ๋ ์ด 8๊ฐ์ง๊ฐ ์กด์ฌํฉ๋๋ค.HEAD, OPTIONS, PA
4ํ๋ ์ด ๋์ด์์ผ ๋ฐฑ์๋ ๊ฐ๋ฐ์๋ก ์ง๋ฌด๋ฅผ ๊ฒฐ์ ํ ์ ์์๊ณ , ํ๋ ๋ฒ๋ก ์กธ์ ํ๋ก์ ํธ์ ์ฒซ ๋ฐฑ์๋ ํ๋ก์ ํธ๋ฅผ ์ฐธ์ฌํ ์ ์์๋ค. ํ๊ต์์ ๊ฐ์ ๋ก๋ผ๋ ์ด๋ ๊ฒ ํ๋ก์ ํธ๋ฅผ ์งํํ์ง ์์์ผ๋ฉด ์ ๋ฒ ํฐ์ผ๋ฌ์์ง๋ ๋ชจ๋ฅด์ง๋ง โฆ ! ๊ทธ๋๋ ์ด๋ ๊ฒ ๋คํํ ํ๋ก์ ํธ๋ฅผ ๊ฐ์ ๋ก๋ผ๋ ์ฐธ์ฌํ ์
๊ฐ์ฒด ์งํฅ์ ์ผ๋ก ์ค๊ณํ๊ธฐ ์ํดย SOLIDย ๋ผ ๋ถ๋ฆฌ๋ ๋ค์ฏ ๊ฐ์ง ์์น์ด ์์ต๋๋ค. SOLID ๊ฐ์ฒด ์งํฅ ์์น์ ์ ์ฉํ๋ฉด 1) ์ฝ๋๋ฅผ ํ์ฅํ๊ณ 2) ์ ์ง ๋ณด์ ๊ด๋ฆฌํ๊ธฐ ๋ ์ฝ๊ณ 3)๋ณต์ก์ฑ์ ์ ๊ฑฐํด ๋ฆฌํฉํ ๋ง ์์์๊ฐ ๋จ์ถํจ์ผ๋ก์จ 4) ํ๋ก์ ํธ ๊ฐ๋ฐ์ ์์ฐ์ฑ์ ๋์ผ ์ ์์ต๋
Test-Driven Development : ํ ์คํธ๊ฐ ์ฝ๋ ์์ฑ์ ์ฃผ๋ํ๋ ๊ฐ๋ฐ๋ฐฉ์TDD๋ ์ํํธ์จ์ด ๊ฐ๋ฐ ๋ฐฉ๋ฒ๋ก ์ค ํ๋๋ก, ํ ์คํธ๊ฐ ์ฝ๋ ์์ฑ์ ์ฃผ๋ํ๋ ๊ฐ๋ฐ๋ฐฉ์ ์ ๋๋ค. ๊ฐ๋ฐ โ ํ ์คํธ ๋ฐฉ์์ด ์๋, ํ ์คํธ โ ๊ฐ๋ฐ ๋ฐฉ์์ ํ๋ก๊ทธ๋จ ๋ฐฉ๋ฒ์ ๋๋ค. TDD ๋งค์ฐ ์งง์
HTTP API ์ REST API๋ ์ฌ์ค ๊ฑฐ์ ๊ฐ์ ์๋ฏธ๋ก ์ฌ์ฉ๋ฉ๋๋ค. ๊ทธ๋ฐ๋ฐ ๋ํ ์ผํ๊ฒ ๋ค์ด๊ฐ๋ฉด ์ฐจ์ด๊ฐ ์กด์ฌํฉ๋๋ค. HTTP API๋ ์๋นํ ๋์ ์๋ฏธ๋ก ์ฌ์ฉ๋ฉ๋๋ค. ๋ฐ๋ฉด์ REST API๋ HTTP API์ ์ฌ๋ฌ๊ฐ์ง ์ ์ฝ ์กฐ๊ฑด์ด ์ถ๊ฐ ๋ฉ๋๋ค.HTTP (Hyper
์ด์์ฒด์ ์์ JVM์ด ์ฌ๋ผ๊ฐ๊ณ , ๊ทธ JVM ๋ง์ ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ๊ฐ ์๊ธด๋ค. ์๋ฐ ๋ฉ๋ชจ๋ฆฌ๋ ํฌ๊ฒ ๋ค์ฏ๊ฐ์ง๊ฐ ์กด์ฌํ๋ค. ์ฐ๋ ๋๋ณ๋ก PC Register, JVM Stack, Native Method ๊ฐ ์กด์ฌํ๊ณ ๊ณตํต์ ์ผ๋ก Method Area, Heap ์ด ์กด์ฌํ๋ค.
ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ์ค๋ ์ผ๋ จ์ ์์ฒญ์ ํ๋์ ์ํ๋ก ๋ณด๊ณ ๊ทธ ์ํ๋ฅผ ์ผ์ ํ๊ฒ ์ ์งํ๋ ๊ธฐ์ ํด๋ผ์ด์ธํธ๊ฐ ์น ์๋ฒ์ ์ ์ํด์๋ ์ํ๊ฐ ํ๋์ ๋จ์์ธ์ ์ ์น์๋ฒ์ ์น ์ปจํ ์ด๋์ ์ํ๋ฅผ ์ ์งํ๊ธฐ ์ํ ์ ๋ณด๋ฅผ ์ ์ฅํฉ๋๋ค. ๋ธ๋ผ์ฐ์ ๋ฅผ ๋ซ๊ฑฐ๋ ์๋ฒ์์ ์ธ์ ์ ์ญ์ ํ๋ฉด ์ธ์ ์ด ์ญ์ ๋ฉ๋
์ฌ์ดํธ๊ฐ ์ฌ์ฉํ๊ฒ ๋๋ ์์ ๊ธฐ๋ก ํ์ผCookie๋ ์ธํฐ๋ท ์ฌ์ฉ์๊ฐ ์ด๋ค ์น์ฌ์ดํธ๋ฅผ ๋ฐฉ๋ฌธํ ๋ ํด๋น ์น์ฌ์ดํธ์์ ์ฌ์ฉ์์ ์ปดํจํฐ ๋๋ ์ฅ์น์ ์ ์ฅ๋๋ ์์ ํ์ผ์ ๋๋ค. ์ฆ, ๊ทธ ์ฌ์ดํธ๊ฐ ์ฌ์ฉํ๊ฒ ๋๋ ์ผ๋ จ์ ์์ ๊ธฐ๋ก ํ์ผ์ด๋ผ๊ณ ํ ์ ์์ต๋๋ค. ์ด ํ์ผ์ ์ธํฐ๋ท ์ฌ์ฉ
JWT Untitled โ ย JWT ๊ฐ๋ JWT(JSON Web Token)๋ ์ธํฐ๋ท์์ ์ ๋ณด๋ฅผ ์์ ํ๊ฒ ์ ์กํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ํ ํฐ ๊ธฐ๋ฐ์ ์ธํฐ๋ท ํ์ ์ธ์ฆ ๋ฐฉ์์ ๋๋ค. JWT์์๋ ์๋ช ๋ ํ ํฐ์ ์ฌ์ฉํ์ฌ ์ธ์ฆ์ ์งํํ๋ ๊ตฌ์กฐ์ ๋๋ค. ๊ณต๊ฐ/๊ฐ์ธ ํค๋ฅผ ์์ผ๋ก ์ฌ์ฉํ
ํน์ง์คํ์ ํํํ๋ ๊ฐ์ฅ ๊ฐ๋นํ ๋ฐฉ๋ฒn : ์คํ์ ์ ์ฅํ ์ ์๋ ์ต๋ ์์ ์top : ์คํ์ ๊ฐ์ฅ ์๋ฅผ ๊ฐ๋ฆฌํดtop = -1 : ๊ณต๋ฐฑ ์คํ์์ ์๋ฏธ\[์๋ฃ ๋ ํผ๋ฐ์ค] (C์ธ์ด) ๋ฐฐ์ด์ ์ด์ฉํด ์คํ(Stack) ๊ตฌํํ๊ธฐ์ฅ๋จ์ ์ฅ์ : ํฌ๊ธฐ๊ฐ ์ ํ๋์ง ์์๋จ์ : ๊ตฌํ์ด
์ฝ์ ๊ณผ ์ญ์ ๊ฐ ํ ์ชฝ์์๋ง ์ด๋ฃจ์ด์ง๋ ์ ํ ์์ ๋ฆฌ์คํธLIFO (Last In First Out) ํ์ - ํ์ ์ ์ถpush down list ๋ผ๊ณ ๋ ํจ๋ฐฐ์ด ํน์ ์ฐ๊ฒฐ๋ฆฌ์คํธ๋ก ๊ตฌํ ๊ฐ๋ฅ๋ฆฌ์คํธ์ ์์๋ฅผ ์ญ์์ผ๋ก ๋ง๋๋๋ฐ ์ ์ฉ๋๋๋ฆฌ๊ธฐ ๊ธฐ๋ฅ (undo)ํจ์ํธ์ถ์์ ๋ณต๊ท์ฃผ์ ๊ธฐ
a = 3X^14 + 2X^8 + 1b = 3X^14 - 3X^10 + 10X^6p,q ์ง์๊ฐ ๊ฐ์ ๊ฒฝ์ฐ โ ๋ง์ ๊ฐ๋ฅp ์ง์๊ฐ ํฐ ๊ฒฝ์ฐ โ p๋ง ๊ฒฐ๊ณผ๋ก ๋๊ฐ๊ณ p ์ฆ๊ฐq ์ง์๊ฐ ํฐ ๊ฒฝ์ฐ โ q๋ง ๊ฒฐ๊ณผ๋ก ๋๊ฐ๊ณ q ์ฆ๊ฐ์ง์ ๋น๊ตO(m+n)min{m, n} โค ๋น๊ตํ์
โ ๏ธ ๊ธฐ์กด ๋ ธ๋ : ์ฒซ ๋ฒ์งธ๋ ธ๋, ๋ง์ง๋ง ๋ ธ๋, ๋ฆฌ์คํธ๊ฐ ๊ณต๋ฐฑ์ธ ๊ฒฝ์ฐ๋ฅผ ์์ธ์ ์ผ๋ก ์ฒ๋ฆฌํด์ฃผ์ด์ผ ํจ์์ธ ๊ฒฝ์ฐ๋ฅผ ์ ๊ฑฐํ๊ณ ์ฝ๋๋ฅผ ๊ฐ๋จํ๊ฒ ํ๊ธฐ ์ํด ์ฌ์ฉ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ฅผ ์ฒ๋ฆฌํ๋๋ฐ ํ์ํ ์ ๋ณด ์ ์ฅํค๋๋ ธ๋์ ๊ตฌ์กฐ๊ฐ ๋ฆฌ์คํธ์ ๋ ธ๋ ๊ตฌ์กฐ์ ๊ฐ์ ํ์ ์์ํค๋๋ ธ๋์๋ 3๊ฐ์ง์ ์ ๋ณด
๋งํฌํ๊ณ ๋ค์ด๊ฐ๊ธฐ ์ ๋ค์ ๋ ธ๋(next)๋ก ๊ตฌ์ฑ
๋ง์ง๋ง ๋ ธ๋์ ๋งํฌ๊ฐ ๋ค์ ์ฒซ ๋ฒ์งธ ๋ ธ๋๋ฅผ ๊ฐ๋ฆฌํค๋ ๋ฆฌ์คํธํ ๋ ธ๋์์ ๋ค๋ฅธ ์ด๋ค ๋ ธ๋๋ก๋ ์ ๊ทผ ๊ฐ๋ฅ๋ฆฌ์คํธ ์ ์ฒด๋ฅผ ์์ ๊ณต๊ฐ๋ฆฌ์คํธ์ ๋ฐํํ ๋ ๋ฆฌ์คํธ์ ๊ธธ์ด์ ๊ด๊ณ์์ด ์ผ์ ์๊ฐ์ ๋ฐํ ๊ฐ๋ฅC ํฌ์ธํฐ๊ฐ ์ฒซ ๋ ธ๋๋ฅผ ๊ฐ๋ฆฌํค๋ ๊ฒฝ์ฐ๋ง์ง๋ง ๋ ธ๋์ link๋ฅผ ๋งจ ์ p๋ก ์ฐ๊ฒฐํด์ผ ํ