728x90

TIL, WIL/TIL๐Ÿ“˜ 86

12. 31 TIL : ๋ฆฌํ”Œ๋ ‰์…˜(Reflection API)

- ํž™ ์˜์—ญ์— ๋กœ๋“œ๋˜์–ด ์žˆ๋Š” ํด๋ž˜์Šค ํƒ€์ž…์˜ ๊ฐ์ฒด๋ฅผ ํ†ตํ•ด ํ•„๋“œ, ๋ฉ”์†Œ๋“œ, ์ƒ์„ฑ์ž๋ฅผ ์ ‘๊ทผ์ œ์–ด์ž์™€ ์ƒ๊ด€์—†์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•˜๋Š” API ~ ํž™ ์˜์—ญ์˜ ํด๋ž˜์Šค ํƒ€์ž… ๊ฐ์ฒด๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ์„ธ ๊ฐ€์ง€ ๋ฐฉ๋ฒ• : 1) class.class, 2) instance.getClass, 3) class.fullname + JVM์˜ ํด๋ž˜์Šค ๋กœ๋”๋Š” ํด๋ž˜์Šค ํŒŒ์ผ ๋กœ๋”ฉ์ด ๋๋‚˜๋ฉด ํด๋ž˜์Šค ํƒ€์ž… ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด ๋ฉ”๋ชจ๋ฆฌ์˜ ํž™ ์˜์—ญ์— ์ €์žฅํ•œ๋‹ค - ์ปดํŒŒ์ผ ์‹œ์ ์ด ์•„๋‹Œ ๋Ÿฐํƒ€์ž„ ์‹œ์ ์— ๋™์ ์œผ๋กœ ํŠน์ • ํด๋ž˜์Šค์˜ ์ •๋ณด๋ฅผ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋ฒ• - ์ฃผ๋กœ ํ”„๋ ˆ์ž„์›Œํฌ ๋˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ฐœ๋ฐœ ์‹œ ์‚ฌ์šฉ๋œ๋‹ค * ๋ฆฌํ”Œ๋ ‰์…˜์„ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ - ์Šคํ”„๋ง(DI) - ํ…Œ์ŠคํŠธ ํ”„๋ ˆ์ž„์›Œํฌ ~ JUnit - JSON Serialization/Deserial..

12. 27 TIL : JDBC ๋“ฑ

JDBC - ์ž๋ฐ” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ DB ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ํ‘œ์ค€ ์ธํ„ฐํŽ˜์ด์Šค - JDBC ๊ตฌํ˜„์ฒด๋Š” ๊ฐ DB ๋ฐด๋”์‚ฌ์—์„œ ์ œ๊ณตํ•œ๋‹ค ~ JDBC Driver DBCP - ๋ฏธ๋ฆฌ ์ผ์ •๋Ÿ‰์˜ DB ์ปค๋„ฅ์…˜์„ ์ƒ์„ฑํ•ด ํ’€์— ์ €์žฅํ•˜๊ณ  Http ์š”์ฒญ์— ๋”ฐ๋ผ ํ•„์š” ์‹œ ํ’€์—์„œ ์ปค๋„ฅ์…˜์„ ๊ฐ€์ ธ๋‹ค ์‚ฌ์šฉ - ์Šคํ”„๋ง ๋ถ€ํŠธ 2.0๋ถ€ํ„ฐ๋Š” ๋””ํดํŠธ ์ปค๋„ฅ์…˜ ํ’€๋กœ HikariCP ์‚ฌ์šฉ ์ปค๋„ฅ์…˜ ํ’€ ์‚ฌ์šฉ ์‹œ ์œ ์˜์‚ฌํ•ญ - WAS ์Šค๋ ˆ๋“œ๊ฐ€ ์ปค๋„ฅ์…˜์˜ ์‚ฌ์šฉ ์ฃผ์ฒด์ด๋ฏ€๋กœ ์ปค๋„ฅ์…˜ ๊ฐœ์ˆ˜๋Š” WAS ์Šค๋ ˆ๋“œ ์ˆ˜์™€ ํ•จ๊ป˜ ๊ณ ๋ คํ•ด์•ผ ํ•œ๋‹ค ~ ์ปค๋„ฅ์…˜ ์ˆ˜๊ฐ€ ํฌ๋ฉด ๋ฉ”๋ชจ๋ฆฌ ์†Œ๋ชจ๊ฐ€ ์ปค์ง€์ง€๋งŒ ๋™์‹œ ์ ‘์†์ž ์ˆ˜๊ฐ€ ๋งŽ์•„๋„ ๋Œ€๊ธฐ ์‹œ๊ฐ„์ด ์ ์–ด์ง€๊ธฐ ๋–„๋ฌธ์— ์ ์ • ์ปค๋„ฅ์…˜ ๋Ÿ‰์„ ์ƒ์„ฑํ•ด์•ผ ํ•œ๋‹ค DataSource - ์ปค๋„ฅ์…˜์„ ํš๋“ํ•˜๊ธฐ ์œ„ํ•œ ํ‘œ์ค€ ์ธํ„ฐํŽ˜์ด์Šค

12. 26 TIL : ์„œ๋ธ”๋ฆฟ Servlet

Servlet ~ Interface - ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค - ์ƒ๋ช… ์ฃผ๊ธฐ ๊ด€๋ จ ๋ฉ”์„œ๋“œ : init(), service(), destory() - ๊ทธ ์™ธ : getServletConfig(), getServletInfo() Generic Servlet - ์„œ๋ธ”๋ฆฟ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋ชจ๋“  ๋ฉ”์„œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค๋Š” ๊ฒƒ์€ ๋น„ํšจ์œจ์ ์œผ๋กœ, ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์ด ์ œ๋„ค๋ฆญ ์„œ๋ธ”๋ฆฟ์ด๋‹ค. ํ•„์š”ํ•  ๋•Œ๋งŒ ์˜ค๋ฒ„๋ผ์ด๋“œ ํ•œ๋‹ค - service ๋ฉ”์„œ๋“œ๋งŒ ์ถ”์ƒ ๋ฉ”์„œ๋“œ๋กœ ์žˆ์–ด ํ•ด๋‹น ๋ฉ”์„œ๋“œ๋งŒ ๊ตฌํ˜„ํ•˜๋ฉด ๋œ๋‹ค Http Servlet - ์ œ๋„ˆ๋ฆญ ์„œ๋ธ”๋ฆฟ์„ ์ƒ์†ํ•œ๋‹ค - ๊ฐ ์š”์ฒญ method์— ๋”ฐ๋ผ do~ (get, post, head ๋“ฑ) ๋ฉ”์„œ๋“œ๊ฐ€ ์ˆ˜ํ–‰๋œ๋‹ค Http Servlet -> Generic Servlet -> Servlet

12. 22 TIL : ์ž๋ฐ” & ์Šคํ”„๋ง

1. ํ…Œ์ŠคํŠธ ์ฝ”๋“œ์—์„œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ทธ ๊ฐ์ฒด๊ฐ€ ์ž˜ ์ƒ์„ฑ๋œ ๊ฒƒ์ธ์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด์„  ํ•ด๋‹น ํด๋ž˜์Šค์— equals & hashCode()๊ฐ€ ๊ตฌํ˜„๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค 2. CGI ํ”„๋กœํ† ์ฝœ์— ๋”ฐ๋ฅธ ํ”„๋กœ๊ทธ๋žจ ์•ˆ์—์„œ ์›น ์„œ๋ฒ„์™€ ์Šคํฌ๋ฆฝํŠธ ์—”์ง„ ์‚ฌ์ด ๊ด€๊ณ„๋Š” ์„œ๋ธ”๋ฆฟ๊ณผ ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ์™€ ๊ฐ™์€ ๊ด€๊ณ„๋‹ค - ๋‘ ๊ฐœ์˜ ๊ด€๊ณ„ ๋ชจ๋‘ CGI ๊ทœ์•ฝ์„ ๋”ฐ๋ฅธ๋‹ค * ์„œ๋ธ”๋ฆฟ : ์ž๋ฐ”์—์„œ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“œ๋Š” ๊ธฐ์ˆ , ์ž๋ฐ”์—์„œ ๋™์  ์›นํŽ˜์ด์ง€ ๊ตฌํ˜„์„ ์œ„ํ•œ ํ‘œ์ค€ 1) ์„œ๋ธ”๋ฆฟ "์ปจํ…Œ์ด๋„ˆ" - ์„œ๋ธ”๋ฆฟ์˜ ์ƒ์„ฑ๋ถ€ํ„ฐ ์†Œ๋ฉธ๊นŒ์ง€ ๋ผ์ดํ”„ ์‚ฌ์ดํด์„ ๊ด€๋ฆฌํ•˜๋Š” ์—ญํ•  ** ์Šคํฌ๋ฆฝํŠธ "์—”์ง„" vs ์„œ๋ธ”๋ฆฟ "์ปจํ…Œ์ด๋„ˆ" ~ ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ๋Š” ์„œ๋ธ”๋ฆฟ์˜ ์ˆ˜๋ช… ์ฃผ๊ธฐ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์—(์ปจํ…Œ์ด๋„ˆ๋Š” ์ˆ˜๋ช… ์ฃผ๊ธฐ ๊ด€๋ฆฌ ์—ญํ• ์ด ์žˆ์„ ๋–„ ์ด๋ฆ„์„ ๋ถ™์ธ๋‹ค) ์ปจํ…Œ์ด๋„ˆ๋ผ๊ณ  ํ•œ๋‹ค - ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ๋Š” ์›น..

12. 17 TIL : Stack ๊ณต๋ถ€ ์™ธ

1. Stack Stack์€ ์ž๋ฐ”์˜ Vector ํด๋ž˜์Šค๋ฅผ ์ƒ์† Stack์€ Stack๊ฐ€ ๊ธฐ๋ณธ ํ˜•ํƒœ๋‹ค 2. @ParameterizedTest, @ValueSource https://www.petrikainulainen.net/programming/testing/junit-5-tutorial-writing-parameterized-tests/ Writing Parameterized Tests With JUnit 5 - Petri Kainulainen This blog post describes how we can write parameterized tests with JUnit 5 and configure the arguments which are passed to our test methods. www.p..

12. 11 ํŒจ์ŠคํŠธ์บ ํผ์Šค 10๊ฐœ ํ”„๋กœ์ ํŠธ๋กœ ์™„์„ฑํ•˜๋Š” ๋ฐฑ์—”๋“œ ์›น๊ฐœ๋ฐœ(Java/Spring) ์ดˆ๊ฒฉ์ฐจ ํŒจํ‚ค์ง€ Online. ์ˆ˜๊ฐ• ํ›„๊ธฐ

ํ˜„์žฌ ์ง„ํ–‰ ์ค‘์ธ ํ•ด๋‹น ๊ฐ•์˜์— ๋Œ€ํ•œ ์งง์€ ํ›„๊ธฐ๋ฅผ ๋‚จ๊ฒจ๋ณธ๋‹ค. ๊ฐ•์˜๋ฅผ ๊ฒฐ์ œํ•˜๊ณ  ๋‚œ ํ›„, ์ง€๊ธˆ๊นŒ์ง€ ๋“ฃ๋Š” ๊ฐ•์˜ ์ดํ‰์€.. ๋งค์šฐ ๋งŒ์กฑ์Šค๋Ÿฝ๋‹ค. ์‹œ์ž‘์€ ์š”๊ตฌ์‚ฌํ•ญ์„ ๊ฐ€์ง€๊ณ  ๋‹จ์ˆœํ•˜๊ฒŒ ๋˜๋Š” ํ•˜๋“œ์ฝ”๋”ฉ์œผ๋กœ ๊ตฌํ˜„ํ•œ MVC ํŒจํ„ด์—์„œ ์กฐ๊ธˆ์”ฉ ๊ฐ์ฒด์ง€ํ–ฅ์ ์œผ๋กœ ์ฝ”๋“œ๋ฅผ ๋ฆฌํŒฉํ† ๋งํ•ด๋‚˜๊ฐ€๋ฉด์„œ ๊ตฌํ˜„ํ•˜๋Š” ๋ชจ์Šต์—์„œ ๊ฐ์ฒด์ง€ํ–ฅ์  ๊ด€์ ์— ๋Œ€ํ•ด ๋”์šฑ ๊นŠ์ด ์ดํ•ดํ•  ์ˆ˜ ์žˆ์—ˆ์œผ๋ฉฐ, ๊ณ„์† ๋ฐฐ์›Œ๋‚˜๊ฐ€๋Š” ์ค‘์ด๋‹ค. ํŠนํžˆ๋‚˜ ๋งค ๊ฐ•์˜๋งˆ๋‹ค ํ”„๋กœ์ ํŠธ ํ•˜๋‚˜์”ฉ ์‹ค์Šต์„ ํ†ตํ•ด ์ดํ•ด๋ฅผ ๋•๋Š” ์ ์ด ๋งˆ์Œ์— ๋“ค์—ˆ๋‹ค. ๋‹ค๋งŒ ์ •๋ง ์ค‘์š”ํ•œ ์ ์€ ๊ฐ•์‚ฌ๋‹˜์˜ ๊ตฌํ˜„์„ ๊ทธ๋ƒฅ ๋ณด๊ณ ๋งŒ ๋๋‚ผ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์ง์ ‘ ๊ตฌํ˜„ํ•ด๋ณด๋Š” ๊ณผ์ •์„ ๊ฑฐ์ณ์•ผ ๋” ์†์— ์ต๋Š”๋‹ค๋Š” ์ ์ด๋‹ค! ์ด๋Š” ๊ผญ ์ด ๊ฐ•์˜๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋‹ค๋ฅธ ์–ด๋–ค ๊ณต๋ถ€, ํ•™์Šต์„ ํ•  ๋•Œ์—๋„ ์ค‘์š”ํ•œ ์ ์ด๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด ์‚ฌ๋žŒ์— ๋”ฐ๋ผ ๊ทธ๋ƒฅ ๋ˆ ๋‚ญ๋น„ํ–ˆ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค ์ˆ˜๋„ ์žˆ๋‹ค. ..

12. 03 TIL : ๋ฐ๋ธŒ์›์˜์˜ ์นดํ”„์นด

์นดํ”„์นด ์ปค๋„ฅํŠธ ๊ณต์‹ ์ปดํฌ๋„ŒํŠธ ์ค‘ ํ•˜๋‚˜ ์ปค๋„ฅํŠธ์™€ ์ปค๋„ฅํ„ฐ 1. ์นดํ”„์นด ์ปค๋„ฅํŠธ ์ปค๋„ฅํ„ฐ๋ฅผ ๋™์ž‘ํ•˜๋„๋ก ์‹คํ–‰ํ•ด์ฃผ๋Š” ํ”„๋กœ์„ธ์Šค * ์ปค๋„ฅํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ๋จผ์ € ์‹คํ–‰๋˜์–ด์•ผ ํ•œ๋‹ค 1-1) ๋‹จ์ผ ์‹คํ–‰ ์ปค๋„ฅํŠธ 1-2) ๋ถ„์‚ฐ ์‹คํ–‰ ์ปค๋„ฅํŠธ, ์นดํ”„์นด ์ปค๋„ฅํŠธ ํด๋Ÿฌ์Šคํ„ฐ 2๊ฐœ ์ด์ƒ์˜ ์ปค๋„ฅํŠธ๊ฐ€ ํ•˜๋‚˜์˜ ํด๋Ÿฌ์Šคํ„ฐ๋กœ ๋ฌถ์ธ ํ˜•ํƒœ : ์ปค๋„ฅํŠธ ์žฅ์•  ์‹œ ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ๋‹ค ~ ์‹ค์งˆ์ ์œผ๋กœ ์ƒ์šฉ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค 2. ์นดํ”„์นด ์ปค๋„ฅํ„ฐ ์ปค๋„ฅํ„ฐ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์‹ค์งˆ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ๋‹ด๊ธด jar ํŒจํ‚ค์ง€์™€ ๊ฐ™๋‹ค. ํŒŒ์ดํ”„๋ผ์ธ์— ํ•„์š”ํ•œ ๋ฉ”์„œ๋“œ ๋“ฑ์ด ํฌํ•จ๋˜์–ด ์žˆ๋‹ค => ํ† ํ”ฝ์—์„œ DB๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๊ณ  ์‹ถ์„ ๋•Œ ์ปค๋„ฅํ„ฐ์˜ insert ๋ฉ”์„œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•ด ์ปค๋„ฅํ„ฐ๋ฅผ ์‹คํ–‰ํ•œ๋‹ค 2-1) ์‹ฑํฌ ์ปค๋„ฅํ„ฐ : ํŠน์ • ํ† ํ”ฝ์˜ ๋ฐ์ดํ„ฐ๋ฅผ DB์— ์ €์žฅํ•˜๋Š” ์—ญํ• , ์ปจ์Šˆ๋จธ์™€ ๊ฐ™์€ ์—ญํ•  2-2) ์†Œ์Šค ์ปค๋„ฅ..

11. 30 TIL : Runtime Exception

- Runtime Exception์— ๋Œ€ํ•ด ** ๊ฐ’์ด Null์ธ ๊ฒƒ์ด Null Pointer Exception ๋ฐœ์ƒ๋ณด๋‹ค ์ผ๋ฐ˜์ ์œผ๋กœ ๋‚ซ๋‹ค = ์˜ˆ์™ธ๋Š” ๋‹ค๋ฅธ ๋กœ์ง์œผ๋กœ ์–ด๋–ป๊ฒŒ ์ „์ด๋  ์ง€ ์•Œ ์ˆ˜๊ฐ€ ์—†๋‹ค ** ๊ฐ’์ด null์ผ ์ˆ˜๋„ ์žˆ๋Š” ํ• ๋‹น ์‹œ, try - catch ๋ฌธ์œผ๋กœ ๊ฐ์‹ธ์ฃผ๋ฉด ์ข‹๋‹ค ๊ทธ๋ž˜์„œ String a = b + " ";๋ณด๋‹ค String a = String.valueOf(b);์ด ๋‚ซ๋‹ค ( " "๋กœ ๋ฌธ์ž์—ด ํ• ๋‹นํ•˜๋Š” ๊ฑด Null Pointer Exception์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๊ณ , String.valueOf()์˜ ๊ฒฝ์šฐ null์ด๋ฉด ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๊ณ  ๊ทธ๋Œ€๋กœ null๋กœ ๊ฐ’์ด ํ• ๋‹น๋œ๋‹ค) + ์ถ”๊ฐ€๋กœ.. String a = String.valueOf(b != null ? b : "default");๋กœ null์ผ ๊ฒฝ์šฐ..

11. 29 TIL : ๋ฐ๋ธŒ์›์˜์˜ ์นดํ”„์นด + SQL ํ’€์ด ์ค‘ WHERE IN

์นดํ”„์นด ์ŠคํŠธ๋ฆผ์ฆˆ ์นดํ”„์นด์—์„œ ์ง€์›ํ•˜๋Š” ์ž๋ฐ” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ JVM ๊ธฐ๋ฐ˜ ์–ธ์–ด(์ž๋ฐ”, ์Šค์นผ๋ผ, ์ฝ”ํ‹€๋ฆฐ) ์ค‘ ํ•˜๋‚˜๋กœ ์„ ํƒํ•ด ๊ฐœ๋ฐœ์ด ๊ฐ€๋Šฅํ•˜๋‹ค * ์นดํ”„์นด์™€ ์™„๋ฒฝํžˆ ํ˜ธํ™˜๋œ๋‹ค ~ ์ŠคํŒŒํฌ, ๋กœ๊ทธ ์Šคํƒœ์‹œ๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•˜์ง€๋งŒ ์ด๋Š” ์นดํ”„์นด์˜ ์—…๋ฐ์ดํŠธ ์†๋„๋ฅผ ๋งž์ถ”์ง€ ๋ชปํ•  ์ˆ˜ ์žˆ๋‹ค * ์Šค์ผ€์ค„๋ง ๋„๊ตฌ๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค ์ŠคํŒŒํฌ ์ŠคํŠธ๋ฆฌ๋ฐ, ์ŠคํŒŒํฌ ๊ตฌ์กฐ์  ์ŠคํŠธ๋ฆฌ๋ฐ์„ ์‚ฌ์šฉํ•ด ์ด๋ฒคํŠธ ๋ฐ์ดํ„ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“œ๋Š” ๊ฒŒ ์ผ๋ฐ˜์ ์ด๋‚˜, yarn์ด๋‚˜ mesos์™€ ๊ฐ™์€ ํด๋Ÿฌ์Šคํ„ฐ ๊ด€๋ฆฌ์ž, ๋ฆฌ์†Œ์Šค ๋งค๋‹ˆ์ €๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ๋˜ํ•œ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์šด์˜ํ•˜๊ธฐ์œ„ํ•œ ๋Œ€๊ทœ๋ชจ ์žฅ๋น„๊ฐ€ ํ•„์š”ํ•˜๋‹ค => ์›ํ•˜๋Š” ๋งŒํผ ๋ฐฐํฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค * ์ŠคํŠธ๋ฆผ์ฆˆDSL๊ณผ ํ”„๋กœ์„ธ์„œ API๋ฅผ ์ œ๊ณตํ•œ๋‹ค ์ผ๋ฐ˜์ ์œผ๋กœ ์ŠคํŠธ๋ฆผ์ฆˆ๋ฅผ ๊ตฌํ˜„ํ•  ๋•Œ ์ŠคํŠธ๋ฆผ์ฆˆDSL๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค - ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ์‹œ map, join, windo..

728x90