๐ ์ ์ฒด ์นดํ ๊ณ ๋ฆฌ
[Java] ์๋ฐ ์ง๋ ฌํ (Serialization)
๐ค 1. ์๋ฐ ์ง๋ ฌํ๋? ์๋ฐ ์ง๋ ฌํ(Java Serialization)์, ๊ฐ์ฒด์ ์ํ๋ฅผ ์์ํ ํ๋ ๋งค์ปค๋์ฆ์ ๋๋ค. ์์ํ๋, ์๊ตฌ์ ์ผ๋ก ์์ฑ์ ์ ์ฅํ๋ ๊ฒ์ ์๋ฏธํ๋ฏ๋ก, ์ฝ๊ฒ ํ์ด์ ์ค๋ช ํ๋ฉด ๊ฐ์ฒด๋ฅผ ๋ค๋ฅธ ํ๊ฒฝ์ ์ ์ฅํ๋ค๊ฐ ๋์ค์ ์ฌ๊ตฌ์ฑํ ์ ์๋ ๊ฒ์ด ๊ณง ์๋ฐ ์ง๋ ฌํ์ ์๋ฏธ์ ๋๋ค. ๋จ์ํ ์ ์ฅ์ด๋ผ๊ณ ํํํ์ง๋ง, ์ผ๋ฐ์ ์ผ๋ก ์ฐ๋ฆฌ๊ฐ ์๊ฐํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ์ฅ, ํ์ผ์ ํํ๋ก ์ ์ฅ๋ ํด๋น์ด ๋์ง๋ง, ๋ฉ๋ชจ๋ฆฌ ๋ฐ ์บ์์ ์ ์ฅํ๋ ๊ฒ ์ญ์ ์ง๋ ฌํ๋ผ๊ณ ํํํ ์ ์์ต๋๋ค. ์๋ฐ ์ง๋ ฌํ๋ฅผ ํตํด ๊ฐ์ฒด๋ฅผ ์จ์ ํ ๋ค๋ฅธ ๊ณณ์ ์ ์ฅํ๊ณ , ๋ค์ ์จ์ ํ ๊ฐ์ฒด๋ก ์ฌ๊ตฌ์ฑํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์ฝ๊ฒ ๋ถ์ฐ ๊ฐ์ฒด ์์ฑ์ด ๊ฐ๋ฅํด์ก์ต๋๋ค. ์๋ฐ ์ง๋ ฌํ์์ ์ ์ฅํ๋ ๋ฐฉ์์, ๊ฐ์ฒด๋ฅผ ๋ฐ์ดํธ ์คํธ๋ฆผ์ ํํ๋ก ๋ง๋ค์ด ์ด๋ฅผ ์ ์ฅํฉ๋๋ค. ๐ค ..
[Spring WebFlux] 1. Mono์ Flux์ ๋ํ ์ดํด(2) : ์์ฃผ ์ฌ์ฉํ๋ operator (method)
๐ช 0. ์ด์ ๊ธ Mono์ Flux์ ๋ํ ์ดํด๋ ์ด์ ๊ธ์์ ํ์ธํ์ค ์ ์์ต๋๋ค. [Spring WebFlux] 1. Mono์ Flux์ ๋ํ ์ดํด(1) : ์๋ ๋ฐฉ์๊ณผ ์ดํด ๐ 0. ์ด์ ๊ธ (0. ๋ฆฌ์กํฐ๋ธ ํ๋ก๊ทธ๋๋ฐ์ ์๊ฐ) [Spring WebFlux] 0. ๋ฆฌ์กํฐ๋ธ ํ๋ก๊ทธ๋๋ฐ์ ์๊ฐ ๐ค 1. ๋ฆฌ์กํฐ(Reactor)๋ ๋ฌด์์ธ๊ฐ์? ๊ฐ๋จ ์ฉ์ด ์ ๋ฆฌ - Reactive Stream : JVM ์์์ ์คํ๋ ์ ์๋ ๋ฆฌ์กํฐ hoons-dev.tistory.com ๐ 1. ์๋ก์ด ์ํ์ค๋ฅผ ์์ฑํ ๋ ์ฌ์ฉํ๋ Operator ์ํฉ์ ๋ฐ๋ผ ์๋ก์ด ์ํ์ค๋ฅผ ์์ฑํ ๋, ๋ค์ํ ์คํผ๋ ์ดํฐ๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. 1) T ํ์ ์ ๊ฐ์ฒด๋ฅผ ๋ฐฉ์ถํ๊ณ , ํด๋น ํ์ ์ ์์งํ๊ณ ์๋ ๊ฒฝ์ฐ. public static Fl..
[Spring WebFlux] 1. Mono์ Flux์ ๋ํ ์ดํด(1) : ์๋ ๋ฐฉ์๊ณผ ์ดํด
๐ 0. ์ด์ ๊ธ (0. ๋ฆฌ์กํฐ๋ธ ํ๋ก๊ทธ๋๋ฐ์ ์๊ฐ) [Spring WebFlux] 0. ๋ฆฌ์กํฐ๋ธ ํ๋ก๊ทธ๋๋ฐ์ ์๊ฐ ๐ค 1. ๋ฆฌ์กํฐ(Reactor)๋ ๋ฌด์์ธ๊ฐ์? ๊ฐ๋จ ์ฉ์ด ์ ๋ฆฌ - Reactive Stream : JVM ์์์ ์คํ๋ ์ ์๋ ๋ฆฌ์กํฐ๋ธ ํ๋ก๊ทธ๋๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์คํ์ํจ ๊ฒ์ผ๋ก ์ดํดํ ์ ์์ต๋๋ค. ์ธํฐํ์ด์ค์ ํํ๋ก hoons-dev.tistory.com ๐ค 1. Mono์ Flux๋ฅผ ์๊ฐํฉ๋๋ค. 1-1. Flux Flux๋ Reactive Stream์ Publisher์ ํด๋นํ๋ ๊ฐ์ฒด์ ๋๋ค. ํผ๋ธ๋ฆฌ์ ๊ฐ ๋ฌด์์ธ์ง ๋ชจ๋ฅธ๋ค๋ฉด, ์ง๋ ํฌ์คํ ์ ์ฐธ๊ณ ํด์ฃผ์๊ธฐ ๋ฐ๋๋๋ค. ๊ณต์ ๋ ํผ๋ฐ์ค์ Flux์ ๋๋ค. "All Implemented Interfaces"๋ฅผ ํ์ธํ๋ฉด, ๋ฆฌ์กํฐ๋ธ ์คํธ๋ฆผ์์ ์ ์ํ P..
[DEVLOG] if(kakao) dev 2022 ๊ฐ๋ฐ์ ์ปจํผ๋ฐ์ค ํ๊ธฐ - 1. ISFP์ ์ฝ๋ ๊ฐ๋ ์ฑ ๊ฐ์ ๊ฒฝํ
๋ณธ ํฌ์คํธ๋ ์นด์นด์ค ์ปจํผ๋ฐ์ค if(kakao) dev 2022 ์ปจํผ๋ฐ์ค ๋ด์ฉ ๋ฐ ์๋ฃ๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. ํน์ฌ๋ ๊ถ๋ฆฌ ๊ด๋ จ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค๋ฉด, ๊ธ ์์ / ์ญ์ ๋ฅผ ์งํํ๋๋ก ํ๊ฒ ์ต๋๋ค. ๐ 0. ์ ํ๋ธ ๋ค์๋ณด๊ธฐ ์์ https://www.youtube.com/watch?v=emGLxi0LvNI&list=LL&index=46&t=165s ๐ค 1. ์ฝ๋ ๊ฐ๋ ์ฑ ๊ฐ์ ๊ฒฝํ ์ผ๋ฐ์ ์ธ ๋ฆฌํฉํ ๋ง์, ๊ธฐ์กด์ ๋ก์ง์ ๋ณํจ ์์ด ์ฝ๋์ ๊ตฌ์กฐ ํน์ ๊ฐ๋ ์ฑ์ ๋์ด๋ ์์ ์ ๋๋ค. ์ค๋ณต์ฝ๋๋ฅผ ์ ๊ฑฐํ๊ฑฐ๋, ๊ธด ์๋ธ๋ฃจํด์ ์ชผ๊ฐ๋ ์์ , ์ฌ๋ฌ๊ฐ์ง๋ฅผ ์ํํ๋ ํจ์์์ ์ญํ ์ ๋ถ๋ฆฌ, ์ ์ญ๋ณ์ ์ค์ , ์ฌ๋ฐ๋ฅด์ง ์์ ๋ค์ด๋ฐ ์์ , ์ฌ์ฉํ์ง ์๋ ์ฝ๋ ์ ๊ฑฐ ๋ฑ์ด ์ผ๋ฐ์ ์ธ ๋ฆฌํฉํ ๋ง์ ์๋ฏธํ๋ค๊ณ ํฉ๋๋ค. ํ์ง๋ง ์นด์นด์ค์ coze ๊ฐ๋ฐ์๋์, ..
[Spring WebFlux] 0. ๋ฆฌ์กํฐ๋ธ ํ๋ก๊ทธ๋๋ฐ์ ์๊ฐ
๐ค 1. ๋ฆฌ์กํฐ(Reactor)๋ ๋ฌด์์ธ๊ฐ์? ๊ฐ๋จ ์ฉ์ด ์ ๋ฆฌ - Reactive Stream : JVM ์์์ ์คํ๋ ์ ์๋ ๋ฆฌ์กํฐ๋ธ ํ๋ก๊ทธ๋๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์คํ์ํจ ๊ฒ์ผ๋ก ์ดํดํ ์ ์์ต๋๋ค. ์ธํฐํ์ด์ค์ ํํ๋ก ์คํ์ด ์ ์๋์ด ์์ต๋๋ค. - Reactor3 : Reactive Stream ์คํ์ ๊ตฌํํ ๊ตฌํ์ฒด ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. JVM ์์์ ๋ฆฌ์กํฐ๋ธ ํ๋ก๊ทธ๋๋ฐ์ด๋ผ๋ ์๋ก์ด ํจ๋ฌ๋ค์์ ์ ์ฉ์ํค๊ธฐ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. - TCK(Reactive Streams Technology Compatibility Kit) : Reactive Streams ๊ตฌํ์๊ฐ ์ฌ์์ ์ ์๋ ๊ท์น์ ๋ํด ๊ตฌํ์ ํ์ธํ๊ธฐ ์ํ ์ง์นจ์ผ๋ก, TestNG๋ผ๋ Java์ ํ ์คํธ ํ๋ ์ ์ํฌ๋ก ๊ฐ๋ฐ์ด ๋์์ต๋๋ค. ๋ฆฌ์กํฐ๋ธ ์คํธ๋ฆผ์ ..
[DEVLOG] ์ฐ๋นํํ ์ ๋ฐ๋ชจ๋ฐ v2 ๊ฐ๋ฐ๊ธฐ - ํ๋ชจ ์ง๋จ API ์์ ํ๊ธฐ (4) createdAt๊ณผ updatedAt, JPA AttributeConverter
๐ 0. ์ด์ ๊ธ [DEVLOG] ์ฐ๋นํํ ์ ๋ฐ๋ชจ๋ฐ v2 ๊ฐ๋ฐ๊ธฐ - ํ๋ชจ ์ง๋จ API ์์ ํ๊ธฐ (3) DTO์ ๋ฐ๋ฅธ ์๋ต ์์ฑ ํด๋์ค ๋ง ๐ 0. ์ด์ ๊ธ [DEVLOG] ์ฐ๋นํํ ์ ๋ฐ๋ชจ๋ฐ v2 ๊ฐ๋ฐ๊ธฐ - ํ๋ชจ ์ง๋จ API ์์ ํ๊ธฐ (1) ๋ณ์ ์๋ช , Optional, Enum ํ์ฉ ๐ 0. ์๋ก ์กธ์ ์ํ์ผ๋ก ํ๋ชจ ์ง๋จ ์ดํ๋ฆฌ์ผ์ด์ ์ธ '์ ๋ฐ๋ชจ๋ฐ'์ ๊ฐ๋ฐํ๊ณ , 'ํด๋น ํ hoons-dev.tistory.com ๐ค 1. createdAt๊ณผ updatedAt ๋ชจ๋ ์ํฐํฐ๋ ์ผ๋ฐ์ ์ผ๋ก createdAt๊ณผ updatedAt์ ๊ฐ์ง๋๋ค. ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋ '์์ฑ๋ ์๊ฐ ์ ๋ณด'์ '์์ ๋ ์๊ฐ ์ ๋ณด'๋ ์ฌ๋ฌ๋ชจ๋ก ๋ง์ด ์ฌ์ฉ๋๊ณ ๋ ์ค์ํฉ๋๋ค. JPA๋ฅผ ์ฌ์ฉํ๋ฉด์ @CreatedDate, @LastModifiedDat..
[๋์์ธํจํด] ๋์์ธ ํจํด (3) - ์ด๋ํฐ ํจํด (Adatper Pattern)
๐ 1. ์ด๋ํฐ ํจํด(Adapter Pattern)์ด๋? ํ๊ตญ์ ๊ฐ์ ์์ ์ฌ์ฉํ๋ ์ ์์ 220V์ ๋๋ค. ๋ฏธ๊ตญ์ ๊ฐ์ ์์ ์ฌ์ฉํ๋ ์ ์์, 110V๋ฅผ ์ฌ์ฉํ์ฃ . ํ๊ตญ์ฌ๋์ด ๋ฏธ๊ตญ์ผ๋ก ์ฌํ์ ๊ฐ์, ์์์ ๋จธ๋ฌธ๋ค๊ณ ํฉ์๋ค. ํ๊ตญ์ ํธ๋ํฐ ์ถฉ์ ๊ธฐ๋ฅผ ๋ค๊ณ , ๋ฏธ๊ตญ์์ ๊ผฝ์ผ๋ ค๊ณ ํ๋, ๋จ์๊ฐ ๋ง์ง ์์ต๋๋ค. ๋ฏธ๊ตญ์ ์ ๊ธฐ๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด, 110V์ ๋ง๋ ๋จ์๋ฅผ ๊ผฝ์์ผ ํฉ๋๋ค. ๊ทธ๋ ๋ค๋ฉด, ์ฐ๋ฆฌ๋ ๋ณดํต ํ๊ตญ์ ์ถฉ์ ๊ธฐ๋ฅผ ๋ฒ๋ฆฌ๊ณ ๋ฏธ๊ตญ์ ์ถฉ์ ๊ธฐ๋ฅผ ์๋ก ์ฌ์ง ์๊ณ , ์ด๋ํฐ(Adapter, ๋ณํ๊ธฐ)๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด๋ํฐ ํจํด์ ํธํ์ฑ์ด ์๋ ๊ธฐ์กด ํด๋์ค์ ์ธํฐํ์ด์ค๋ฅผ ๋ณํํด ์ฌ์ฌ์ฉํ ์ ์๋๋ก ํด์ฃผ๋ ํจํด์ ๋๋ค. ํธํ์ฑ์ด ์๋ ๊ธฐ์กด ํด๋์ค๋ ํ๊ตญ์ 220V ์ถฉ์ ๊ธฐ์ ๋์ผํ๊ณ , ์ธํฐํ์ด์ค๋ฅผ ๋ณํํด ์ฌ์ฌ์ฉํ ์ ์๋๋ก ํ๋ ๊ฒ์ ์ด๋..
[๋์์ธํจํด] ๋์์ธ ํจํด(2) - ์ฑ๊ธํค ํจํด(Singleton Pattern)
๐ 1. ์ฑ๊ธํค ํจํด(Singleton Pattern)์ด๋? ์ฑ๊ธํค ํจํด์, ์ด๋ ํ ํด๋์ค(๊ฐ์ฒด)๊ฐ ์ ์ผํ๊ฒ ๋จ ํ ๊ฐ๋ง ์กด์ฌํด์ผ ํ ๋ ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค. ์ฃผ๋ก ์๋ก ์์์ ๊ณต์ ํ ๋ ์ฌ์ฉํ๋ฉฐ, ์์ฑ๋ ๋จ ํ๋์ ๊ฐ์ฒด๋ฅผ ๊ณต์ ํ๋ฉฐ ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค. ์ฑ๊ธํค ํจํด์ ๋์์ธ ํจํด ์ค์, '์์ฑ' ํจํด์ ์ํฉ๋๋ค. ์ฑ๊ธํค ํจํด์ ํตํด ๋จ ํ ๋ฒ์ ์์ฑ์ ๋ณด์ฅํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ํ๋ก๊ทธ๋๋ฐ์์์ ์์๋ก๋ TCP socket ํต์ ์์ ์๋ฒ์ ์ฐ๊ฒฐ๋ connect ๊ฐ์ฒด์ ์ฃผ๋ก ์ฌ์ฉํด์ ํ ์์ผ์์๋ง ์ฌ์ฉํ๋ ๊ฒ๋ค์ด ์์ต๋๋ค. TCP ์ฐ๊ฒฐ์ ํ ๋ ์๋ก ์ฐ๊ฒฐํ๋ ๋น์ฉ์ด ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ ์ด๋ฏธ ํ ๋ฒ ์ด๋ ค์๋ ์์ผ์ ์ฌํ์ฉํ๋ ๊ฒ์ด ์ข์ง, ์์ฒญ๋ง๋ค ๊ณ์ connection์ ๋งบ์ ํ์๊ฐ ์์ต๋๋ค. ์คํ๋ง์์ 'Bean'์ด๋ผ๊ณ ..