Java8์์ ์ถ๊ฐ๋ ๊ธฐ๋ฅ์ผ๋ก ์ปฌ๋ ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ธํ์ผ๋ก ์ฝ๊ฒ ์ฒ๋ฆฌํ ์ ์๊ณ ๋ณ๋ ฌ์ฒ๋ฆฌ๋ฅผ ๋ณ๋์ ๋ฉํฐ ์ค๋ ๋ ์์ด ์ฝ๊ฒ ๊ตฌํํ ์ ์๊ฒ ๋์์ค๋ค.Stream์ ๋ฐ๋ณต์ ์ง์ํ์ง ์๋๋ค.Iterable์ ์ถ์ ๋ฉ์๋๋ฅผ ๋ชจ๋ ๊ตฌํํ๊ณ ์์ง๋ง ์ ์ extand๋ ํ๊ณ ์์ง ์
๐ก ๋๋ค : ์ต๋ช ๋ฉ์๋๋ง ์ ๋ฌํ์ฌ, ์ธํฐํ์ด์ค๋ฅด ๊ตฌํํ ์ต๋ช ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ, ๋ฉ์๋๋ง ์ ๋ฌํ์ง๋ง, ๊ฒฐ๊ณผ์ ์ผ๋ก ์ต๋ช ๊ตฌํ ๊ฐ์ฒด๋ฅผ ๋ง๋ฌ๐ก ์ต๋ช ํด๋์ค : ์ถ์ ํด๋์ค๋ฅผ ์์ํ๊ฑฐ๋ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ์ด๋ฆ ์๋ ํด๋์ค, ์ฌ์ฌ์ฉ์ด ํ์์๋ ์ธ์คํด์ค๋ฅผ
๐ก ํด๋น ์์๊ฐ ๊ทธ ์ด๊ฑฐ ํ์ ์์ ๋ช ๋ฒ์งธ ์์นํ๋์ง ๋ฐํํ๋ ๋ฉ์๋๋ฐฐ์ด์ ์ ๋ค๋ฆญ๊ณผ ํธํ๋์ง ์๊ธฐ ๋๋ฌธ์ ๋น๊ฒ์ฌ ํ๋ณํ์ด ์ํ๋๊ณ , ์ปดํ์ผ์ด ์๋๋ค.์ด๊ธฐํ๋ฅผ ํ ๋, ์ ์ ๊ฐ์ ์๋ชป ์ ๋ ฅํ๋ฉด ArrayIndexOutOfBoundException์ด ๋ฐ์ํ๋ค.orinal
๐ก ํ์ ์์ ์ด์ข ์ปจํ ์ด๋ (Type Safe Heterogeneous Container) : ์ฌ๋ฌ ๋ค๋ฅธ ์ข ๋ฅ๋ค๋ก ์ด๋ฃจ์ด์ง ๊ฐ์ ์ ์ฅํ๋ ํ์ ์ ์์ ํ ๊ฐ์ฒด์ปจํ ์ด๋ ๋์ ํค๋ฅผ ๋งค๊ฐ๋ณ์ํํ ๋ค์, ์ปจํ ์ด๋์ ๊ฐ์ ๋ฃ๊ฑฐ๋ ๋บ ๋ ๋งค๊ฐ๋ณ์ํํ ํค๋ฅผ ํจ๊ป ์ ๊ณต\-> ์ด๋ ๊ฒ
๋ฐฐ์ด๊ณต๋ณ (conariant)Sub๊ฐ Super์ ํ์ ํ์ ์ด๋ผ๋ฉด ๋ฐฐ์ด์ Sub\[] ์ ๋ฐฐ์ด Super\[]์ ํ์ ํ์ ์ด ๋๋ค.์ฆ, ํจ๊ป ๋ณํ๋ค.๋ฐฐ์ด์ ๋ฐํ์์๋ ์์ ์ด ๋ด๊ธฐ๋ก ํ ์์์ ํ์ ์ ์ธ์งํ๊ณ ์๋ค.์ปดํ์ผ์๋ ์๋ฌด๋ฐ ์ํฅ์ ๋ผ์น์ง ์์ง๋ง ๋ฐํ์์ Arra
๐ก ์ ๋ค๋ฆญ(Generic) : ํด๋์ค ๋ด๋ถ์์ ์ง์ ํ๋ ๊ฒ์ด ์๋ ์ธ๋ถ์์ ์ฌ์ฉ์์ ์ํด ์ง์ ๋๋ ๊ฒ์ ์๋ฏธํ๋ค. ํ๋ง๋๋ก ํน์ (Specific) ํ์ ์ ๋ฏธ๋ฆฌ ์ง์ ํด์ฃผ๋ ๊ฒ์ด ์๋ ํ์์ ์ํด ์ง์ ํ ์ ์๋๋ก ํ๋ ์ผ๋ฐ(Generic) ํ์ ์ด๋ผ๋ ๋ป์ ๋ค๋ฆฌ์ java
์ถ์ ํด๋์ค์ ์ธํฐํ์ด์ค ์ถ์ ํด๋์ค์ ์ธํฐํ์ด์ค๋ฅผ ํ ๋ฒ ์์๋ณด์! > ๐ก ์ถ์ ํด๋์ค : ์ผ๋ถ ๋ฉ์๋๊ฐ ๊ตฌํ๋์ด์์ง ์๊ณ ์ ์ธ๋ง ๋์ด์๋ ํด๋์ค, ์์์ ํตํด์ ํด๋์ค๋ฅผ ์์ฑํ๋๋ก ์ ๋ํ๋ ํด๋์ค > ๐ก ์ธํฐํ์ด์ค : ๋์ผํ ๋ชฉ์ ํ์ ๋์ผํ ๊ธฐ๋ฅ์ ์ํํ๊ฒ๋
๐ก ์์ : ํ์ ํด๋์ค๊ฐ ์์ ํด๋์ค์ ํน์ฑ์ ์ฌ์ ์ ํ ๊ฒ (IS-A ๊ด๊ณ)๐ก ์ปดํฌ์ง์ : ๊ธฐ์กด ํด๋์ค๊ฐ ์๋ก์ด ํด๋์ค์ ๊ตฌ์ฑ์์๊ฐ ๋๋ ๊ฒ (HAS-A ๊ด๊ณ) ์์์ ์บก์ํ๋ฅผ ์๋ฐํ๋ค.์์์ ์ค๊ณ์ ์ ์ฐํ์ง ๋ชปํ๋ค.์์์ ๋ค์ค ์์์ด ๋ถ๊ฐ๋ฅํ๋ค.์์ ํด๋์ค๊ฐ
clone์ด ๋ญ๊น...? git clone๋ ์๋๊ณ .๋ณต์ ํด๋ ๋๋ ํด๋์ค์์ ๋ช ์ํ๋ ๋ฏน์ค์ธ ์ธํฐํ์ด์ค๐ก๋ฏน์ค์ธ : ๋ค๋ฅธ ํด๋์ค์ ๋ถ๋ชจํด๋์ค๊ฐ ๋์ง ์์ผ๋ฉด์ ๋ค๋ฅธ ํด๋์ค์์ ์ฌ์ฉํ ์ ์๋ ๋ฉ์๋๋ฅผ ํฌํจํ๋ ํด๋์ค'์์' ์ด ์๋ 'ํฌํจ'clone ๋ฉ์๋: ์๋ณธ ๊ฐ์ฒด์
equals ๋ฉ์๋๋ฅผ ์ ์ํ๊ธฐ ์๊ฐ๋ณด๋ค ์ฝ์ง ์๋ค. ์ฌ์ ์ํ์ง ์๋ ๊ฒ์ด ์ต์ ์ด์ง๋ง ์ฌ์ ์๊ฐ ํ์ํ ์ํฉ์์๋ ์๋ ๊ฐ์ด๋์ ๋ฐ๋ผ ์ ์ํด๋ณด์!๊ฐ์ ํํํ๋ ๊ฒ ์๋๋ผ ๋์ํ๋ ๊ฐ์ฒด๋ฅผ ํํํ๋ ํด๋์ค์ผ ๊ฒฝ์ฐThreadObject.equals()Bean์ ๋ฑ๋กํด๋๋ ๊ฐ์ฒด
Item6 ์์ํด๋ณด์~! ๋ถํ์ํ ๊ฐ์ฒด ์์ฑ์ ํผํ๋ผ! ์๋ฆฌ์กฐ๋ฆฌ๋๊ฐ์ ๊ธฐ๋ฅ์ ๊ฐ์ฒด๋ฅผ ๋งค๋ฒ ์์ฑํ๊ธฐ ๋ณด๋จ ๊ฐ์ฒด ํ๋๋ฅผ ์ฌ์ฌ์ฉํ๋ ํธ์ด ์ข๋ค.์์ ์ฝ๋๋ ์คํ๋ ๋๋ง๋ค String ์ธ์คํด์ค๋ฅผ ์๋ก ์๋ก ์์ฑํ๋ค. ์ ๋ฐฑ๋ง๊ฐ ์ธ์คํด์ค ์์ฑ๋ ๊ฐ๋ฅ์ฑ ์๋ค.์ ์ฝ๋๋ ๋งค๋ฒ ์ธ์ค
์ง๊ธ๊น์ง ์ธ์คํด์ค๋ฅผ ์์ฑํ ๋ ์์ฑ์๋ง ์ฌ์ฉํ๋ ๊ฒ ๊ฐ๋ค. ์ฌ์ค ์ด ์ฑ ์ ์ฝ์ผ๋ฉด์ ์ ์ ํฉํ ๋ฆฌ ๋ฉ์๋๋ฅผ ์ฒ์ ์ ํด์ ๋ ๊ฐ์ ์ฐจ์ด๋ฅผ ๋จผ์ ๊ตฌ๋ถํด๋ณด๊ณ ์ ํ๋ค.
1. ์นดํ์นด ํด๋ฌ์คํฐ ์ด์ ๋ฐฉ๋ฒ
github์ ๋ก๊ทธ์ธ > Repositories > New ๋ฒํผ ํด๋ฆญ์์ฑ๋ ๋ ํฌ์งํ ๋ฆฌ git ์ฃผ์ ๋ณต์ฌ์์ฑํ ๋ ํฌ์งํ ๋ฆฌ๋ฅผ ๋ก์ปฌ ์ ์ฅ์๋ก ํด๋ก (Clone) ํ๋ค.ํด๋ก ํ ์์น๋ ๋ก์ปฌ ์ ์ฅ์๊ฐ ์๋ ์์น๊ฑฐ๋ ๋ก์ปฌ ์ ์ฅ์๊ฐ ์๋ค๋ฉด, git init์ผ๋ก ์์ฑ์ฃผ์์ฌํญ์๋ก์ด ํ์ผ์
์คํ์์ค ์ํ์น ์นดํ์นด ์ํ๊ณ Kafka ํ๋ฆ ํ๋ก๋์(๋ฐ์ดํฐ๋ฅผ ๋ณด๋)> ํ ํฝ > ์ปจ์๋จธ(๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌ) ํ ํฝ์ ๋ฐ์ดํฐ ์ ์ฅ Kafka ์คํธ๋ฆผ์ฆ๋ ํ ํฝ์์ ํ ํฝ์ผ๋ก ์ด๋ํ ๋ ์ฌ์ฉํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ปค๋ฅํธ : ๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ์ ์ด์ํ๋ ๊ฐ์ฅ ํต์ฌ์ ์ธ ํด ์์ค(ํ๋ก๋
Linked ์์ ํ์๋ฐ์ดํฐ ํํธํ์ฅ์ ๋ฒ์๋ฅผ ๋จ์ํ ์ํฌ ์ ์๋๋ก ์ํ์น ์นดํ์นด(Apache Kafka) ๋งํฌ๋์ธ ๋ด๋ถ ๋ฐ์ดํฐ ํ๋ฆ์ ๊ฐ์ ์๊ฐ๋ฅ๊ฐ ๊ฐ์ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ฐ์ดํฐ ์ฒ๋ฆฌํ๋ ๊ฒ X์ค์์ง์คํtopic (RDBMS Table ๋๋) -> ํน์ง์ ๋ํ๋ด๋ ๊ฒ
๊ฐ์๊ธฐ ์ฃผ๋ณ์์ ๋ธ๋ก๊ทธ๋ฅผ ์ด์ฌํ ํด์ ๋ํ ๋ง ํ๋ค๊ฐ ์ด์ ๋๋ ์ด์ฌํ ํด๋ณด๋ ค๊ณ ํ๋ค.๋ ์ง์ง ํ๋ค๋ฉด ํ๋ค; ์๋ฌด๋ ๋ง๋ฆฌ์ง๋ง (์๋ฌด๋ ์ ๋ง๋ฆผ ๋;)๊ทธ๋ฅ ๊ฐ์๊ธฐ ๊ฐ๋ฐ ๋ด์ฉ ๊ณต์ ํ๋ ๊ฒ๋ ๋ ๋ณธ๊ฒฉ์ ์ด๊ณ ์๊ธฐ๋๊น(๊ฑ ๊ณต๋ถํ๊ธฐ ์ซ์;) ์ฝ๋ก๋ ๊ฑธ๋ ธ๋ ๊ฒฝํ์ ๊ธฐ๋กํด๋ณด๊ณ ์ ํ๋ค.
๐ก PostgreSQL์ Enterprise๊ธ DBMS์ ๊ธฐ๋ฅ๊ณผ ์ฐจ์ธ๋ DBMS์์๋ ๋ณผ ์ ์์ ๋ฒํ ๊ธฐ๋ฅ๋ค์ ์ ๊ณตํ๋ ์คํ ์์ค ๊ฐ์ฒด-๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ (ORDBMS)์ด๋ค.\-> ๋ค๋ฅธ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ๊ณผ ๋ฌ๋ฆฌ ์ฐ์ฐ์, ์ง๊ณ ํจ์, ํ์ฅ ๊ธฐ๋ฅ ๋ฑ
๋งค์ผ ๋งค์ผ ์ฑ์ฅํ๋ ์น๊ตฌ๋ค์ ๋ณด๋ฉด์ ๋๋ ๊ธฐ์ ๋ธ๋ก๊ทธ ํด์ผํ๋๋ฐ ๋๋ ์ฑ์ฅํด์ผํ๋๋ฐ ์ถ์๋๋ฐ ๋๋์ด ์์ํ๋ค. Velog๋ก ๊ธฐ์ ๋ธ๋ก๊ทธ๋ฅผ ์์ํ ์ด์ ๋งํฌ์ ๊ธฐ๋ฅ notion์ผ๋ก CS ์ง์์ด๋ ๋ฉด์ ์ค๋น๋ฅผ ํ๋ฉด์ ๊ฐ์ฅ ํธํ๋ ๊ฒ์ด ๋งํฌ์ ์ ์ง์ํ๋ ๊ฒ์ด์๋๋ฐ velo