๐48 [Java] ๊ฐ๋น์ง ์ปฌ๋ ์ (Garbage Collection) C/C++ ํ๋ก๊ทธ๋๋ฐ์ ํ ๋ ๋ฉ๋ชจ๋ฆฌ ๋์(Memory Leak)๋ฅผ ๋ง๊ธฐ ์ํด ๊ฐ์ฒด๋ฅผ ์์ฑํ ํ ์ฌ์ฉ์ํ์ง ์๋ ๊ฐ์ฒด์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ๋ก๊ทธ๋๋จธ๊ฐ ์ง์ ํด์ ํด์ฃผ์ด์ผ ํ์ง๋ง, JAVA์์๋ JVM(Java Virtual Machine)์ด ๊ตฌ์ฑ๋ JRE(Java Runtime Environment)๊ฐ ์ ๊ณต๋๋ฉฐ, ๊ทธ ๊ตฌ์ฑ ์์ ์ค ํ๋์ธ Garbage Collection(์ดํ GC)์ด ์๋์ผ๋ก ์ฌ์ฉํ์ง ์๋ ๊ฐ์ฒด๋ฅผ ํ๊ดดํ๋ค. GC์ ๋ํด์ ์์๋ณด๊ธฐ ์ ์ 'stop-the-world'๋ผ๋ ์ฉ์ด๋ฅผ ์์์ผํ๋ค. 'stop-the-world'๋, GC๋ฅผ ์คํํ๊ธฐ ์ํด JVM์ด ์ ํ๋ฆฌ์ผ์ด์ ์คํ์ ๋ฉ์ถ๋ ๊ฒ์ ๋๋ค. ์ด๋ค GC ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋๋ผ๋ 'stop-the-world'๋ ๋ฐ์ํ๊ฒ ๋๋๋ฐ, ๋๊ฐ์ ๊ฒฝ์ฐ GC ํ๋์.. 2021. 8. 11. [Java] ๋๋ค์ ๋๋ค์(Lambda Expression) ํจ์์ ํ๋ก๊ทธ๋๋ฐ ๊ธฐ๋ฒ์ผ๋ก 'y = f(x)' ํํ์ ํจ์๋ก ๊ตฌ์ฑ๋ ํ๋ก๊ทธ๋๋ฐ ๊ธฐ๋ฒ์ด๋ค. ์ฆ, ๋๋ค์์ ํจ์๋ฅผ ํ๋์ ์(expression)์ผ๋ก ํํํ ๊ฒ์ด๋ค. ํจ์๋ฅผ ๋๋ค์์ผ๋ก ํํํ๋ฉด ๋ฉ์๋์ ์ด๋ฆ์ด ํ์ ์๊ธฐ ๋๋ฌธ์, ๋๋ค์์ ์ต๋ช ํจ์(Anonymous Function)์ ํ ์ข ๋ฅ๋ผ๊ณ ๋ณผ ์ ์๋ค. ์๋ฐ 8๋ถํฐ ์ง์ํ๋ฉฐ ์๋ฐ๋ ๋๋ค์์ ํจ์์ ์ธํฐํ์ด์ค์ ์ต๋ช ๊ตฌํ ๊ฐ์ฒด๋ก ์ทจ๊ธํ๋ค. '๋๋ค์ → ๋งค๊ฐ๋ณ์๋ฅผ ๊ฐ์ง ์ฝ๋ ๋ธ๋ก → ์ต๋ช ๊ตฌํ ๊ฐ์ฒด' ์ต๋ช ํจ์(Anonymous Function) : ํจ์์ ์ด๋ฆ์ด ์๋ ํจ์๋ก, ์ต๋ช ํจ์๋ค์ ๋ชจ๋ ์ผ๊ธ ๊ฐ์ฒด์ด๋ค. ์ผ๊ธ ๊ฐ์ฒด์ธ ํจ์๋ ๋ณ์์ฒ๋ผ ์ฌ์ฉ๊ฐ๋ฅํ๋ฉฐ ๋งค๊ฐ ๋ณ์๋ก ์ ๋ฌ์ด ๊ฐ๋ฅํ๋ ๋ฑ์ ํน์ง์ ๊ฐ์ง๊ณ ์๋ค. ๋ณ์.. 2021. 8. 10. [DevOps] ์ปจํ ์ด๋์ ์ดํด : ์ ์ปจํ ์ด๋๊ฐ ์ค์ํด์ก์๊น? Immutable Infrastructure (๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅํ ์ธํ๋ผ) ํ์ ๋ฐฐ๊ฒฝ mutable Infrastructure (๋ณ๊ฒฝ ๊ฐ๋ฅํ ์ธํ๋ผ) ์ฐ๋ฆฌ๋ ์๋์ฐ์ฆ๋ ๋งฅ์ ์ฌ์ฉํ๋ฉด์ ๋ณด์, ์์ ์ฑ ๊ทธ๋ฆฌ๊ณ ์ฑ๋ฅ ๋ฑ์ ์ด์ ๋ก OS(์ด์์ฒด์ )๋ฅผ ์์ฃผ ์ ๋ฐ์ดํธ ํ๋ค. OS๋ ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ๋ด์ฉ์ด๋ ์ค์ ์ด ์์๋ก ๋ณํ๊ฐ ๋ฐ์ํ๋ฉฐ, ์๋ก์ด ์ ํ๋ฆฌ์ผ์ด์ ๋ฅผ ์ค์นํ ๋๋ ๋ ์ง์คํธ๋ฆฌ๋ ๋ณ๊ฒฝํ๋ค. ์ง๊ธ๊น์ง ์ฌ์ฉํ๋ ๋ง์ ์ํํธ์จ์ด๋ค์ ์ ๋ฐ์ดํธ๋ ์ค์ ๋ณ๊ฒฝ ๋ฑ์ ๋ฐ๋ณตํ๋ฉด์ ์ต์ ์ํ๋ก ์ ์งํ์๊ณ , ์๋ฒ์ฉ ์ํํธ์จ์ด๋ ์ ์ฌํ ๋ฐฉ๋ฒ์ผ๋ก ๊ด๋ฆฌํ๋ค. ์๋ฒ์ ๊ฒฝ์ฐ์๋ OS ์ค์ ๋ณ๊ฒฝ์ด๋ ์ ๋ฐ์ดํธ ๊ทธ๋ฆฌ๊ณ ์ ํ๋ฆฌ์ผ์ด์ ๋ฐฐํฌ๊ฐ ์์ฃผ ๋ฐ์ํ๋ ๊ฒฝ์ฐ์ ์๋น์ค์ ์์ ์ฑ์ ํฐ ์ํฅ์ ๋ฏธ์น๋ฉฐ, ์๋ฒ ํ๊ฒฝ ์์ฒด๊ฐ ํ๊ดด๋๋ ๊ฒฝ์ฐ๋ ์๋ค. ์ธ์ ์ด๋ .. 2021. 8. 3. [DevOps] DevOps์ ์ดํด 'DevOps : Infrastructure as Code with ํ ๋ผํผ(Terraform) and AWS ์ด๊ธ, ์ ๋ฌธํธ'์ ๋ณด๊ณ ์์ฑํ์ต๋๋ค. DevOps : Infrastructure as Code with ํ ๋ผํผ(Terraform) and AWS ์ด๊ธ, ์ ๋ฌธํธ - ์ธํ๋ฐ | ๊ฐ์ ์ด ๊ฐ์๋ DevOps์ ๊ธฐ๋ณธ ์ด๋ก ๊ณผ ํจ๊ป DevOps์ ๊ธฐ๋ณธ ์ค ํ๋์ธ Infrastructure as Code(IaC)์ ๋ํด ๋ฐฐ์ธ ์ ์๋ ๊ฐ์์ ๋๋ค. ๋ณธ ๊ฐ์๋ฅผ ํตํด IT๊ธฐ๋ฐ์ ์๋น์ค๋ฅผ DevOps๊ด์ ์์ ์ฌ๋ฐ๋ฅด๊ฒ ์ดํดํ๊ณ , ์๋น์ค www.inflearn.com 1. DevOps์ ์ดํด ๊ฐ๋ ๋ฐ๋ธ์ต์ค๋ ํฉ์ฑ์ด : ์ํํธ์จ์ด ๊ฐ๋ฐ(Development) + ์ด์(Operations) ํ์ฌ๋ ๋จ์ํ ๊ฐ๋ฐ๊ณผ ์ด์์ ํตํฉ.. 2021. 7. 29. [Java] ์คํธ๋ฆผ Stream ๊ฐ๋ ์คํธ๋ฆผ์ ๋ฐ๋ณต์ ์คํธ๋ฆผ์ ์ปฌ๋ ์ (๋ฐฐ์ด ํฌํจ)์ ์์๋ฅผ ํ๋์ฉ ์ฐธ์กฐํด์ ๋๋ค์์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋ ๋ฐ๋ณต์์ด๋ค. ๋๋ค์, ์คํธ๋ฆผ ๋ ๋ค ์๋ฐ 8๋ถํฐ ์ฌ์ฉ ๊ฐ๋ฅ 8์ด์ ์๋ Iterator๋ฅผ ์ฌ์ฉํจ ํน์ง 1. ๋๋ค์์ผ๋ก ์์ ์ฒ๋ฆฌ ์ฝ๋๋ฅผ ์ ๊ณตํ๋ค. ์คํธ๋ฆผ์ด ์ ๊ณตํ๋ ๋๋ถ๋ถ์ ์์ ์ฒ๋ฆฌ ๋ฉ์๋๋ ํจ์์ ์ธํฐํ์ด์ค ๋งค๊ฐํ์ ์ ๊ฐ์ง๋ค. ๋งค๊ฐ๊ฐ์ผ๋ก ๋๋ค์ ๋๋ ๋ฉ์๋ ์ฐธ์กฐ๋ฅผ ๋์ ํ ์ ์๋ค. 2. ๋ด๋ถ ๋ฐ๋ณต์๋ฅผ ์ฌ์ฉํ๋ฏ๋ก ๋ณ๋ ฌ ์ฒ๋ฆฌ๊ฐ ์ฝ๋ค. ์ธ๋ถ ๋ฐ๋ณต์(ex. Iterator) - ๊ฐ๋ฐ์๊ฐ ์ฝ๋๋ก ์ง์ ์ปฌ๋ ์ ์์๋ฅผ ๋ฐ๋ณตํด์ ์์ฒญํ๊ณ ๊ฐ์ ธ์ค๋ ์ฝ๋ ํจํด ๋ด๋ถ ๋ฐ๋ณต์ - ๊ฐ๋ฐ์ ์ฝ๋๊ฐ ๋๋ค์์ด๋๊ณ , ์ปฌ๋ ์ ์ ๋ด๋ถ์ ์ผ๋ก ์์๋ค์ ๋ฐ๋ณตํ๋ ์คํธ๋ฆผ์ ํ์ฉํด์ ๋๋ค์์ ์์๋ง๋ค ์ ์ฉ์ํด. - ์ปฌ๋ ์ ๋ด๋ถ์์ ์์๋ค์ ๋ฐ๋ณต.. 2021. 7. 28. [Java] ์ ๋ค๋ฆญ(Generic) ๊ฐ๋ ํด๋์ค ๋ด๋ถ์์ ์ฌ์ฉํ ๋ฐ์ดํฐ ํ์ ์ ์ธ๋ถ์์ ์ง์ ํ๋ ๊ธฐ๋ฒ์ด๋ค. ์ ํ์ํ ๊น? 1. ์ค๋ณต๋๋ ์์ค๋ฅผ ํ๋๋ก ๋ฌถ์ด ์์ค์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ์ ๊ทน๋ํ ํ๊ธฐ ์ํด์ ๋ฐ์ดํฐ ํ์ ๋ณ๋ก ํด๋์ค๋ฅผ ์์ฑํ ํ์ ์์ด ํ๋์ ํด๋์ค์์ ๋ฐ์ดํฐ ํ์ ๋ง ๋ฐ๊ฟ ์กฐ๋ฆฝํ๋ฏ ์ฝ๋ ์ฌํ์ฉ์ด ๊ฐ๋ฅํ๋ค. 2. ๊ฐ์ฒด ์์ฑ์ ์ฌ์ฉํ๋ ค๊ณ ํ๋ ๋ฐ์ดํฐํ์ ์ ๋ํ ์ ํ์ ์ค ์ ์๋ค. ํจ๊ณผ → ์ปดํ์ผ ํ์์ ํ์ ์ฒดํฌ๋ฅผ ํ๊ธฐ ์ํจ์ด๋ ํ์ ์บ์คํ (ํ๋ณํ)์ ์ ๊ฑฐํ์ฌ ํ๋ก๊ทธ๋จ ์ฑ๋ฅ ํฅ์ → ํ๋ณํ์ด ํ์์๊ณ , ํ์ ์์ ์ฑ์ด ๋ณด์ฅ๋๋ค. extends T(์ํ ๊ฒฝ๊ณ), ? super T(ํํ ๊ฒฝ๊ณ), ?(์์ผ๋ ์นด๋) ๋ฐ์ดํฐ ํ์ ์ ์ ํํ๊ฒ ๋๋ฉด ์ป์ ์ ์๋ ์ด์ ์ ์์ ๊ด๊ณ์์ ์๋ค. ์์ ๊ด๊ณ์์ ์์์ ๋ถ๋ชจ์ ๋ชจ๋ ๊ฒ์ ๊ฐ์ ธ๋ค ์ฌ์ฉํ ์ ์๋ค.. 2021. 7. 28. [Java] ์๋ฐ ๊ฐ์ ๋จธ์ (Java Virtual Machine) JVM(Java Virtual Machine) Java๋ก ๊ฐ๋ฐํ ํ๋ก๊ทธ๋จ์ ์คํํ๊ธฐ ์ํ ๊ฐ์๋จธ์ . ์๋ฐ ๊ฐ์ ๋จธ์ ์ ๋ปํ๋ ๋ง๋ก ๋ฐ์ดํธ์ฝ๋๋ฅผ ์คํํ๋ ์ฃผ์ฒด์ด๋ค. ์ด์์ฒด์ ์์์ ๋์ํ๋ฏ๋ก ํ๋ซํผ์ ๋ ๋ฆฝ์ ์ผ๋ก Java ํ๋ก๊ทธ๋จ์ ์คํํ ์ ์๋ค. ํ๋ก๊ทธ๋จ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ด๋ฆฌํ๊ณ ์ต์ ํํ๋ ๊ฒ ๋ฌผ๋ฆฌ์ ์ธ ์ค์ ์ ๊ธฐ๊ณ๊ฐ ์๋๋ผ ์ถ์์ ์ธ ์ฅ์น์ด๋ค. ์๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ํด๋์ค ๋ก๋(Class Loader)๋ฅผ ํตํด ์ฝ์ด ๋ค์ฌ์ ์๋ฐ API์ ํจ๊ป ์คํํ๋ ๊ฒ ์๋ฐ ์ฝ๋๋ฅผ ์คํํ๊ธฐ ์ํด์๋ ์๋ฐ์์ javac ๋ช ๋ น์ ํตํด ๋ฐ์ดํธ์ฝ๋(.class)๋ฅผ ๋ง๋ค๊ณ , ๋ฐ์ดํธ์ฝ๋๋ฅผ JVM์ด ์ธํฐํ๋ฆฌํฐ ๋ฐฉ์์ผ๋ก ๊ธฐ๊ณ์ด๋ก ๋ฒ์ญํ๋ฉฐ ์คํํ๋ค. JVM ๊ตฌ์ฑ์์ 1. Class Loader JVM์ ๋ฐํ์์์ ์ฒ์์ผ๋ก ํด๋์ค๋ฅผ ์ฐธ์กฐํ ๋ ํด๋น.. 2021. 7. 28. [Spring] DI(Dependency Injection) ๊ฐ๋ DI๋ Dependency Injection ์์กด๊ด๊ณ ์ฃผ์ ์ด๋ผ๋ ๋ป์ผ๋ก ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์์ ํต์ฉ๋๋ ๊ฐ๋ ์ด๋ค. '๊ฐ์ฒด๋ฅผ ์ฃผ์ ๋ฐ๋๋ค'๋ ๊ฒ์ ์ธ๋ถ์์ ์์ฑ๋ ๊ฐ์ฒด๋ฅผ ์ธํฐํ์ด์ค๋ฅผ ํตํด ๋๊ฒจ๋ฐ๋ ๊ฒ์ด๋ค. ๊ฐ์ฒด๋ฅผ ์ค์ค๋ก ๋ง๋๋ ๊ฒ์ด ์๋๋ผ ์ ์ด๊ถ์ (์คํ๋ง์) ์์ํ์ฌ (์คํ๋ง์ด) ๋ง๋ค์ด ๋์ ๊ฐ์ฒด๋ฅผ ๋๊ฒจ ๋ฐ๋ ๊ฒ์ด๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ ์ ์๊ณ , ๋ฐํ์์์ ์์กด๊ด๊ณ๊ฐ ๊ฒฐ์ ๋๊ธฐ ๋๋ฌธ์ ์ ์ฐํ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋ค. SOLID ์์น์์ O ์ ํด๋นํ๋ Open Closed Principle ์ ์งํค๊ธฐ ์ํด์ ๋์์ธ ํจํด ์ค ์ ๋ตํจํด์ ์ฌ์ฉํ๊ฒ ๋๋๋ฐ, ์์ฑ์ ์ฃผ์ ์ ์ฌ์ฉํ๊ฒ ๋๋ฉด ์ ๋ตํจํด์ ์ฌ์ฉํ๊ฒ ๋๋ค. OCP : ๊ฐ๋ฐฉ ํ์ ์์น ํ์ฅ์๋ ์ด๋ ค์๊ณ , ์์ ์๋ ๋ซํ์์ด์ผ ํ๋ค. ์์กด๊ด๊ณ ์ฃผ์ ์๋ ํฌ๊ฒ .. 2021. 5. 2. [Spring] PSA (Portable Service Abstraction) ์คํ๋ง 3๋ ํน์ง(IoC/DI, AOP, PSA) ์ค PSA์ ์์๋ณธ๋ค. ๊ฐ๋ PSA๋ Portable Service Abstraction์ผ๋ก ์ผ๊ด์ฑ ์๋ ์๋น์ค ์ถ์ํ์ด๋ค. ์ด๋ํฐ ํจํด์ ์ ์ฉํด ๊ฐ์ ์ผ์ ํ๋ ๋ค์์ ๊ธฐ์ ์ ๊ณตํต์ ์ธํฐํ์ด์ค๋ก ์ ์ดํ ์ ์๊ฒ ํ ๊ฒ์ ์๋น์ค ์ถ์ํ๋ผ๊ณ ํ๋ค. ์ถ์ํ ๊ณ์ธต์ ์ฌ์ฉํด์ ์ด๋ค ๊ธฐ์ ์ ๋ด๋ถ์ ์จ๊ธฐ๊ณ ๊ฐ๋ฐ์์๊ฒ ํธ์์ฑ์ ์ ๊ณตํด์ฃผ๋ ๊ฒ์ ์๋น์ค ์ถ์ํ(Service Abstraction)์ด๋ผ ํ๋ค. ์๋น์ค ์ถ์ํ(Service Abstraction)๋ก ์ ๊ณต๋๋ ๊ธฐ์ ์ ๋ค๋ฅธ ๊ธฐ์ ์คํ์ผ๋ก ๊ฐํธํ๊ฒ ๋ฐ๊ฟ ์ ์๋ ํ์ฅ์ฑ์ ๊ฐ๊ณ ์๋ ๊ฒ์ด Portable Service Abstraction์ด๋ค. Spring์ Spring Web MVC, Spring Transacti.. 2021. 5. 2. ์ด์ 1 2 3 4 5 6 ๋ค์