์ธํฐ๋ท์ ํต์ ๊ณ์ธต์ ๋ํ๋ด๋ TCP/IP 5๊ณ์ธต ๋ชจ๋ธ์์ ๋คํธ์ํฌ ๊ณ์ธต๊น์ง๋ง ํด๋ ์ธํฐ๋ท์์ ๋ชจ๋ ์ปดํจํฐ๊ฐ ์๋ก ํต์ ํ ์ ์๊ฒ ๋๋ค. ๊ทธ๋ฐ๋ฐ ํจํท์ ๋ฐ์ ๋์์ด ์๊ฑฐ๋ ๋ถ๋ฅ ์ํ์ธ ๊ฒฝ์ฐ, ํน์ ์ค๊ฐ์ ํจํท์ด ์์ค๋๊ฑฐ๋ ์์๋๋ก ์ค์ง ์๋๋ค๋ฉด ํต์ ์ด ์ํํ๊ฒ ์ด๋ฃจ์ด์ง ์ ์๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฌด์ฌํ ๋ชฉ์ ์ง ์ปดํจํฐ์ ๋์ฐฉํ๋๋ผ๋ ๊ฐ์ IP ์ฃผ์๋ฅผ ์ฌ์ฉํ๋ ์๋ฒ์์ ํต์ ํ๋ ์ ํ๋ฆฌ์ผ์ด์
์ด ๋ ์ด์์ด๋ผ๋ฉด ์ด๋ค ํ๋ก์ธ์ค์ ๋ฐ์ดํฐ๊ฐ ๊ฐ์ผํ ์ง ์ ์ ์๋ค. TCP/IP์ ์ ์ก ๊ณ์ธต์์ TCP/UDP ํ๋กํ ์ฝ์ ํตํด ์ด๋ฌํ ๋คํธ์ํฌ ๊ณ์ธต์ ํ๊ณ๋ฅผ ๊ทน๋ณตํ ์ ์๋ค. TCP ํ๋กํ ์ฝ์ ๋ฐ์ดํฐ์ ๋์ฐฉ ๋ณด์ฆ ๋ฐ ์์ ๋ณด์ฅ์ผ๋ก ์ ๋ขฐ์ฑ์ ์ ๊ณตํ๋ค. ๋ํ TCP/UDP ํจํท์ ์ถ๋ฐ์ง, ๋ชฉ์ ์ง PORT ๋ฒํธ๋ฅผ ํฌํจํ์ฌ ์ต์ข
๋์ฐฉ์ง ํ๋ก..
๊ฐ์ ๋ฉ๋ชจ๋ฆฌ (virtual memory) ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋๋ ํ๋ก์ธ์ค๊ฐ ๊ฐ์์ ๊ณต๊ฐ์ ์ฐธ์กฐํ์ฌ ๋ง์น ์ปค๋ค๋ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ฐ๊ณ ์๋ ๊ฒ์ฒ๋ผ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ ๊ฒ์ด๋ค. ์ฆ, ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ค์ ๋ฉ๋ชจ๋ฆฌ๋ณด๋ค ๋ง์๋ณด์ด๊ฒ ํ๋ ๊ธฐ์ ! ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ ๋ถ์ฐ์ ํ ๋น ๋ฐฉ์์ ํตํด ๊ด๋ฆฌ๋์ด, ์ฐ์ ํ ๋น ๋ฐฉ์์์ ๋ฐ์ํ๋ ๋จํธํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์์๋ค. ๋ถ์ฐ์ ํ ๋น ๋ฐฉ์์ ๋ํ์ ์ธ ์๋ก๋ ํ์ด์ง(paging)๊ณผ ์ธ๊ทธ๋ฉํ
์ด์
(segmentation)๊ธฐ๋ฒ์ด ์๋ค. ํ์ด์ง (paging) ํ์ด์ง์ ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ page ๋จ์๋ก ๋๋์ด์ page์ ๋์ผํ ํฌ๊ธฐ์ frame ๋จ์๋ก ๋๋ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ์ ๋ถ์ฐ์์ ์ผ๋ก ํ ๋นํ๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๊ธฐ๋ฒ์ด๋ค. ํ์ด์ง์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ๋จ์ํํ๊ณ , ์ธ๋ถ ๋จํธํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋๋ฐ ๋์..
Pageable์ ์ฌ์ฉํ๋ JPA ๋ฉ์๋์์ N+1๋ฌธ์ ๊ฐ ๋ฐ์ํ์ ๊ฒฝ์ฐ์ ์๋ํด ๋ณธ ๊ฒ๋ค๊ณผ ํด๊ฒฐ ๊ณผ์ ์ ๋ํด ์ ๋ฆฌํ ๋ด์ฉ์ด๋ค. ๋ฌธ์ ์ํฉ ๊ฒ์ํ ์ ์ฒด ๋ชฉ๋ก๋ณด๊ธฐ์ ํธ์ถ๋๋ Pageable์ ์ด์ฉํ ๋ฉ์๋์ด๋ค. public interface BaordRepository extends JpaRepository { Page findAllByHideIsFalse(Pageable pageable); } findAllByHideIsFalse() ๋ฉ์๋๊ฐ ํธ์ถ๋๋ฉด ์๋์ ๊ฐ์ด N+1๋ฌธ์ ๊ฐ ๋ฐ์ํ์๋ค. ๊ฒ์ํ์ ์์ฑํ user์ ์ N๋งํผ ์ถ๊ฐ ์ฟผ๋ฆฌ๊ฐ ๋ฐ์ํ๊ฒ ๋๋ค. Hibernate: select board0_.id as id1_0_, board0_.content as content2_0_, board0_.create..
Jackson ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋? ์ปจํธ๋กค๋ฌ์์ text/htmlํ์์ด ์๋ ๋ฐ์ดํฐ ์ ๋ฌ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉํ๊ธฐ ์ํด ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ XML ๋๋ JSON ํํ๋ฅผ ๋ง์ด ์ฌ์ฉํ๋ค. Jackson์ ๊ทธ ์ค JSON ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ฒ๋ฆฌํด์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค. ์ ํํ ๋งํ๋ฉด Jackson์ Java์์ JSON์ ํ์ฑํ๋๋ฐ ์ฌ์ฉ๋๋ ์คํ์์ค ํ๋ก์ ํธ ์ธํธ๋ก ๊ตฌ์ฑ๋์ด ์๋ค. JSON์ ํ์ฑํด์ฃผ๋ ํด๋์ค์๋ Jackson ๋ฟ๋ง ์๋๋ผ, Google์ด ๋ง๋ GSON ๋๋ SimpleJSON ๋ ์๋ค. Spring์ด Jackson์ ๋ ์ ํธํ๋ ์ด์ Jackson, GSON, SimpleJSON์ ์ฐจ์ด๋ ์๋ค. Jackson์ ํน๋ณํ ์ ์ Spring 3.0๋ถํฐ Jackson๊ณผ ๊ด๋ จ๋ API๋ฅผ ์ ๊ณตํ์ฌ Jackson ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉ..
'spring-boot-starter-web' ์์กด์ฑ์ ํฌํจ์ํค๋ฉด, Spring Boot๋ ๋ด๋ถ์ ์ผ๋ก Jackson ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ๋ก์ ํธ์ ์ถ๊ฐํ๋ค. ์ด๋ ์์กด์ฑ ๊ด๋ฆฌ ๋ฐ ์๋ ๊ตฌ์ฑ์ ์ผ๋ถ๋ก Spring Boot์ ๋ฒ์ ์ ๋ฐ๋ผ Jackson ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํน์ ๋ฒ์ ์ด ๊ฒฐ์ ๋๋ค. 2.7.15 ๋ฒ์ ์ Spring Boot ํ๋ก์ ํธ์์ Jackson ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ฒ์ ์ ํ์ธํด ๋ณด์๋ค. ํฐ๋ฏธ๋์์ ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ๋ก ์ด๋ ํ ์๋ ๋ช
๋ น์ด๋ฅผ ์คํํ์ฌ ํ๋ก์ ํธ์ ๋ชจ๋ ์์กด์ฑ๊ณผ ๋ฒ์ ์ ํ์ธํ ์ ์๋ค. ./gradlew dependencies 'com.fasterxml.jackson.core' ๋๋ 'jackson-databind'์ ๊ฐ์ Jackson ๊ด๋ จ ์์กด์ฑ์ ์ฐพ์ผ๋ฉด ํด๋น ๋ฒ์ ์ ํ์ธํ ์ ์๋ค. Spring ..
push()์ ์ฌ์ฉํ Queue๋ฅผ q1, pop()์ ์ฌ์ฉํ Queue๋ฅผ q2๋ผ๊ณ ํ์๋ค. [ push() ] q1.add()๋ฅผ ํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ค. [ pop() ] q1์์ popํ 1๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋๋๊ณ , ๋๋จธ์ง n-1๊ฐ์ ๋ฐ์ดํฐ๋ฅผ q2๋ก ์ด๋์ํจ๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ๊ฐ์ฅ ์ต๊ทผ์ ๋ค์ด์จ ๋ฐ์ดํฐ๋ฅผ ์ ์ธํ ๋ชจ๋ ๋ฐ์ดํฐ๊ฐ q2๋ก ์ฎ๊ฒจ์ง๋ค. q1์ ๋จ์์๋ ๋ฐ์ดํฐ๋ฅผ q1.remove()ํ์ฌ ๊ฐ์ฅ ์ต๊ทผ์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐํํ๋ค. ๋ค์์ ์งํ๋ pop()์ ์ํด q2๊ฐ ๋น์ด์์ง ์์ ๊ฒฝ์ฐ, q1๊ณผ q2์ ์ด๋ฆ์ swapํ๋ค. ๊ตฌํ ์ฝ๋ import java.util.LinkedList; import java.util.Queue; public class QueueStack { Queue q1; Queue q2;..
enqueue() ๊ตฌํ์ ์ฌ์ฉํ Stack์ inStack, dequeue() ๊ตฌํ์ ์ฌ์ฉํ Stack์ ๋ ๋ฒ์งธ outStack์ผ๋ก ์ ์ธํ์๋ค. [ enqueue() ] inStack์ push()ํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋๋ก ๊ตฌํํ์๋ค. [ dequeue() ] outStack์ด ๋น์ด์๋ค๋ฉด inStack์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์จ๋ค. ์ด ๊ฒฐ๊ณผ ๊ฐ์ฅ ๋จผ์ ๋ค์ด์จ ๋ฐ์ดํฐ๊ฐ outStack์ top์ ์์นํ๊ฒ ๋๋ค. outStack.pop()์ผ๋ก ๊ฐ์ฅ ๋จผ์ ๋ค์ด์จ ๋ฐ์ดํฐ๋ฅผ ๋ฐํํ๋ค. outStack์ด ๋น์ด์์ง ์๋ค๋ฉด pop()์ ํด์ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ๊ณ , outStack์ ๋ฐ์ดํฐ๋ฅผ ๋ค ์ถ์ถํ๋ฉด inStack์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ฒ ๋๋ค. ๊ตฌํ ์ฝ๋ import java.util.Stack; public class Stac..
ํ๋ก์ ํธ์์ ๋ฐํ์ ์ ๊ฐ์ฒด๋ฅผ ๋์ ์ผ๋ก ๊ด๋ฆฌํ๊ณ , OCP๋ฅผ ๋ง์กฑํ๋ ์ฝ๋๋ก ๊ฐ์ ํ๊ธฐ ์ํด ๋์์ธ ํจํด์ ๊ณ ๋ คํ ๊ณผ์ ์ ๊ธฐ๋กํ์๋ค. 1. ์ ๋ต ํจํด vs ํ
ํ๋ฆฟ ๋ฉ์๋ ํจํด ํ
ํ๋ฆฟ ๋ฉ์๋ ํจํด์ ์ถ์ ํด๋์ค๋ฅผ ์์ํ๋ ๊ตฌ์กฐ๋ก ์ค๊ณ๋์ด ์๋ค. ์์์ ์์ ํด๋์ค์ ํ์ ํด๋์ค๊ฐ ๊ฐ๋ ฅํ๊ฒ ๋ฐ์ ๋์ด ์์ด ๊ฒฐํฉ๋๊ฐ ๋๋ค. ๋ํ ์์ ๊ด๊ณ๋ ์ปดํ์ผ ๋จ๊ณ์์ ๊ฒฐ์ ๋๊ธฐ ๋๋ฌธ์ ์คํ ์ค ๊ฐ์ฒด๋ฅผ ๋์ ์ ๋ณ๊ฒฝํ๋ ๊ฒ์ด ๋ถ๊ฐํ๋ค. ๋ฐํ์ ์ ๊ฐ์ฒด๋ฅผ ๋์ ์ผ๋ก ๊ด๋ฆฌํด์ผ ํ๋ ๊ฒฝ์ฐ์๋ ์ด๋ฌํ ์ด์ ๋ก ํ
ํ๋ฆฟ ๋ฉ์๋ ํจํด์ ์ ํฉํ์ง ์๋ค. 2. ์ ๋ต ํจํด vs ์ํ ํจํด 2-1. ์ ๋ต ํจํด ์ ๋ต ํจํด์ ํน์ ์์
์ ์ํํ๋ ๋ฐฉ๋ฒ์ ์บก์ํํ๊ณ , ์ด ๋ฐฉ๋ฒ๋ค์ ์ํธ ๊ต์ฒด๊ฐ ๊ฐ๋ฅํ๋๋ก ํ ํจํด์ด๋ค. Context : ๋ณ๊ฒฝ๋์ง ์๋ ๊ฒ, ์ ๋ต..