๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

728x90

์ „์ฒด ๊ธ€

(74)
[Spring] Spring Core(1): ์Šคํ”„๋ง ๋นˆ(Spring Bean)์˜ ๊ฐœ๋…, Component, Controller, Service, Repository์˜ ์—ญํ•  ์Šคํ”„๋ง ๋นˆ(Spring Bean)์ด๋ž€? Spring IoC ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” ์ž๋ฐ” ๊ฐ์ฒด IoC(Inversion Of Control)์ด ๋ญ˜๊นŒ? ์ œ์–ด์˜ ์—ญ์ „์ด๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ•˜๋˜ ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ์—์„œ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ง์ ‘ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ์›ํ•˜๋Š” ํด๋ž˜์Šค ๋‚ด์—์„œ ๋‹ค๋ฅธ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด ์‚ฌ์šฉํ–ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ๊ฐ์ฒด์˜ ์ƒ๋ช… ์ฃผ๊ธฐ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ์žˆ๋‹ค. ์ œ์–ด์˜ ์—ญ์ „์ด ์ผ์–ด๋‚˜๋ฉด, ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ๋ฌด์–ธ๊ฐ€๊ฐ€ ๊ด€๋ฆฌ๋ฅผ ์œ„์ž„ํ•˜๊ฒŒ ๋œ๋‹ค. ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ์ œ์–ด ๊ถŒํ•œ์„ ๋‹ค๋ฅธ ์ฃผ์ฒด์—๊ฒŒ ๋„˜๊ธฐ๋Š” ๊ฒƒ์„ IoC(์ œ์–ด์˜ ์—ญ์ „) ์ด๋ผ๊ณ  ํ•œ๋‹ค. Spring์€ ์ง์ ‘ ์ž๋ฐ” ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๊ธฐ ๋–„๋ฌธ์— ์ด ๊ด€๋ฆฌ ์œ„์ž„ ์ฃผ์ฒด๋Š” Spring์ด ๋œ๋‹ค. Spring์ด ์ƒ์„ฑํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ์ž๋ฐ” ๊ฐ์ฒด๋ฅผ Bean์ด๋ผ๊ณ  ํ•œ๋‹ค. Spring Framework์—์„œ๋Š”..
Spring Batch ์›๋ฆฌ์™€ ์ฒ ํ•™ ์ดํ•ด 1. ๋ฐฐ์น˜ ํ”„๋กœ๊ทธ๋žจ์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€? 2. ๋ฐฐ์น˜ ์‚ฌ์šฉ ์˜ˆ ์ •์‚ฐ ์‹œ์Šคํ…œ ๋ฐ์ดํ„ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ( ๊ธฐ์กด ๋ฐ์ดํ„ฐ๋ฅผ ํŠน์ • ์š”๊ตฌ์‚ฌํ•ญ์— ์˜ํ•ด ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”, ๋‹ค๋ฅธ DB๋กœ ์ด๋™ ) ์•ฝ๊ด€ ๋ณ€๊ฒฝ ๋ฉ”์ผ ํ†ต๊ณ„ ๊ฒŒ์ž„ ๋žญํ‚น ์‡ผํ•‘๋ชฐ ๋ฐฐ์†ก ์š”์ฒญ ๋“ฑ๋“ฑ 3. ๋ฐฐ์น˜์˜ ํŠน์ง• ์ž์›์„ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉ ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋งค๋ฒˆ ์ฒ˜๋ฆฌํ•˜๋Š”๊ฒƒ์€ ๊ฐ’๋น„์‹ธ๊ณ  ํฌ๊ฒŒ ์˜๋ฏธ๊ฐ€ ์—†๋Š” ํ–‰์œ„ ๊ทธ๋ž˜์„œ ๋ฐฐ์น˜์ฒ˜๋ฆฌ๋ฅผ ํ†ตํ•ด ํ•œ๋ฒˆ๋งŒ ์ฒ˜๋ฆฌํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฌผ์„ ์บ์‹œํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฒŒ์— ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Œ. ์‚ฌ์šฉ์ž๊ฐ€ ์—†๋Š” ๋‹ค์‹œ ๋งํ•ด ์ž์›์ด ๋งŽ์€ ์•ผ๊ฐ„ ์‹œ๊ฐ„๋Œ€์— ๋ฐฐ์น˜๋ฅผ ๋Œ๋ฆผ์œผ๋กœ์จ ํ’์กฑํ•œ ์ž์› ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์ฃผ๋กœ ์ •ํ•ด์ง„ ์‹œ๊ฐ„์— ๋ฐ˜๋ณต์ ์œผ๋กœ ์ž๋™ ์‹คํ–‰ ex) ์ •์‚ฐ์‹œ์Šคํ…œ ์ผ๊ฐ„,์ฃผ๊ฐ„,์›”๊ฐ„ ์‚ฌ์šฉ์ž์™€์˜ ์ƒํ˜ธ์ž‘์šฉ ์—†์ด๋„ ๋™์ž‘ ex) ์•ฝ๊ฐ„ ๋ณ€๊ฒฝ ๋ฉ”์ผ ์ „์†ก ์‹ค์‹œ๊ฐ„์„ฑ ๊ฒฐํ• ์ž˜๋ชป ๋™์ž‘ํ•˜๋ฉด ํฐ ๋ฌธ์ œ..
[Java] ConcurrentHashMap ๊ฐœ๋…๊ณผ ๋™๊ธฐํ™” ๋™์ž‘ ์›๋ฆฌ (Thread-safe) ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ(Multi-Thread) ํ™˜๊ฒฝ์—์„œ ๋™์‹œ์„ฑ ์ด์Šˆ๋กœ ์ธํ•ด ConcurrentHashMap์„ ์‚ฌ์šฉํ•ด ๋ณด๋ฉด์„œ ์ •๋ฆฌํ•œ ๊ฒƒ์œผ๋กœ `ConcurrentHashMap์˜ ๊ฐœ๋…๊ณผ ํ•ด๋‹น ํด๋ž˜์Šค๊ฐ€ Thread-safe ํ•˜๊ฒŒ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ๋™์ž‘์›๋ฆฌ`์— ๋Œ€ํ•œ ๋‚ด์šฉ ์ž…๋‹ˆ๋‹ค. Synchronized ํ‚ค์›Œ๋“œ Synchronized ํ‚ค์›Œ๋“œ ์•„๋ž˜ ConcurrentHashMap์„ ์ดํ•ดํ•˜๋Š” ๋ฐ ์žˆ์–ด์„œ ์ค‘์š”ํ•œ ์š”์†Œ ์ค‘ ํ•˜๋‚˜๋ผ๊ณ  ์ƒ๊ฐ๋˜๋Š”๋ฐ์š”. ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ(Multi-Thread) ํ™˜๊ฒฝ์—์„œ๋Š” ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๊ฐ€ ํ•˜๋‚˜์˜ ๊ณต์œ  ์ž์›์— ๋™์‹œ์— ์ ‘๊ทผํ•˜์ง€ ๋ชปํ•˜๋„๋ก ๋ง‰๋Š” '์Šค๋ ˆ๋“œ ๋™๊ธฐํ™”'๊ฐ€ ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค. (์Šค๋ ˆ๋“œ ๋™๊ธฐํ™”๊ฐ€ ๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ์—์„œ ์„œ๋กœ ๊ณต์œ ํ•˜๊ณ  ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์•ˆ์ „์„ฑ๊ณผ ์‹ ๋ขฐ์„ฑ์„ ๋ณด์žฅํ•  ์ˆ˜ ์—†๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.) ๊ทธ๋ฆฌ๊ณ  ..
[Spring Webflux] ์Šคํ”„๋ง ์›นํ”Œ๋Ÿญ์Šค(MVC์™€ ๋น„๊ต, ๋‚ด๋ถ€ ๋™์ž‘ ์›๋ฆฌ, Netty) Spring WebFlux ํƒ„์ƒ ๋ฐฐ๊ฒฝ Spring MVC ์„œ๋ธ”๋ฆฟ ๊ธฐ๋ฐ˜์˜ Blocking I/O ๋ฐฉ์‹ ์š”์ฒญ๋‹น ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉ, ์Šค๋ ˆ๋“œ์˜ ์ž‘์—…์ด ๋๋‚  ๋•Œ ๊นŒ์ง€ ์Šค๋ ˆ๋“œ๊ฐ€ ์ฐจ๋‹จ๋จ Spring MVC์˜ ํ•œ๊ณ„ ๋Œ€์šฉ๋Ÿ‰ ์š”์ฒญ ํŠธ๋ž˜ํ”ฝ์„ Spring MVC ๋ฐฉ์‹์ด ์ฒ˜๋ฆฌํ•˜๊ธฐ์—” ํ•œ๊ณ„๊ฐ€ ์žˆ์—ˆ๋‹ค. ํŠธ๋ž˜ํ”ฝ์ด ๋งŽ์•„์ง€๋ฉด ๋งŽ์•„์งˆ์ˆ˜๋ก ์Šค๋ ˆ๋“œ๋„ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š”๋ฐ, ์Šค๋ ˆ๋“œํ’€์— ์Šค๋ ˆ๋“œ 200๊ฐœ๊ฐ€ default๋กœ ์กด์žฌํ•˜๊ณ , ๋งŒ์•ฝ ๋งŒ๋ช…์ด ๋™์‹œ ์ ‘๊ทผํ•œ๋‹ค๋ฉด...? ์Šค๋ ˆ๋“œ ์Šค์œ„์นญ๋น„์šฉ๋„ ๊ทธ๋งŒํผ ๋งŽ์ด ๋ฐœ์ƒํ•œ๋‹ค. Spring WebFlux๋ฅผ ์ด์šฉํ•œ ๊ทน๋ณต ๋Œ€์šฉ๋Ÿ‰ ํŠธ๋ž˜ํ”ฝ์„ ๊ฐ๋‹นํ•˜๊ธฐ ์œ„ํ•ด์„ , ๋น„๋™๊ธฐ/๋…ผ๋ธ”๋กœํ‚น ๋ฐฉ์‹์˜ I/O๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ–ˆ์œผ๋ฉฐ ์ด ๋ฐฉ์‹์ด ์ ์šฉ๋˜์–ด, ๋Œ€์šฉ๋Ÿ‰๋„ ์•ˆ์ •์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” Spring WebFlux๊ฐ€ ์ƒ๊ฒจ๋†จ๋‹ค. ** ์˜ˆ์‹œ๋ฅผ ํ†ตํ•ด MVC..
ChatGPT ๋ฅผ 200% ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•! feat. ํ”„๋กฌํ”„ํŠธ ์—”์ง€๋‹ˆ์–ด๋ง ์˜ค๋Š˜์€ ChatGPT๋ฅผ ์ตœ์ ํ™”ํ•˜๋Š” ํ”„๋กฌํ”„ํŠธ ๊ธฐ๋ฒ•์„ ๊ณต์œ ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ChatGPT๋Š” ๋‚˜์˜ ์ž‘์—…์„ ์œ„ํ˜‘ํ•˜๋Š” ๋„๊ตฌ๊ฐ€ ์•„๋‹ˆ๋ผ ์ƒ์‚ฐ์„ฑ์„ ๋†’์—ฌ์ฃผ๋Š” ๋„๊ตฌ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํผ๋“€ ๋Œ€ํ•™๊ต์—์„œ ์‹ค์‹œํ•œ ์ตœ๊ทผ ์—ฐ๊ตฌ์— ๋”ฐ๋ฅด๋ฉด, ์Šคํƒ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ์—์„œ 517๊ฐœ์˜ ์ฝ”๋”ฉ ๋ฌธ์ œ๋ฅผ ์ œ์‹œํ–ˆ์„ ๋•Œ ChatGPT๋Š” 52%์˜ ๊ฒฝ์šฐ ๋ถ€์ •ํ™•ํ•˜๊ฑฐ๋‚˜ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ์ฝ”๋“œ๊ฐ€ ํฌํ•จ๋œ ๋‹ต๋ณ€์„ ์ œ๊ณตํ•œ ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. ์Šคํƒ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ ๋‹ต๋ณ€๊ณผ ChatGPT ๋‹ต๋ณ€์„ ๋น„๊ตํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด ์—ฐ๊ตฌ์— ๋”ฐ๋ฅด๋ฉด ChatGPT๋Š” ์Šคํƒ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ์— ๋น„ํ•ด ์ •ํ™•์„ฑ, ํฌ๊ด„์„ฑ, ๊ฐ„๊ฒฐ์„ฑ ๋ฐ ์œ ์šฉ์„ฑ์—์„œ ๋‚ฎ์€ ์ˆœ์œ„๋ฅผ ์ฐจ์ง€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋˜ ๋‹ค๋ฅธ ๋ฌธ์ œ๋Š” ์ด ๋ชจ๋ธ์ด ์ •๋‹ต์ด ํ‹€๋ฆฌ๊ฑฐ๋‚˜ ๋ฐ˜๋งŒ ๋งž๋”๋ผ๋„, ์ž์‹ ๊ฐ ์žˆ๋Š” ์–ธ์–ด๋กœ ์„ค๋“๋ ฅ ์žˆ๋Š” ๋‹ต๋ณ€์„ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ฐํ˜€์กŒ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. ๋•Œ๋•Œ๋กœ ํ™˜๊ฐ์„ ๋ณด๊ณ  ..
[Netty] @Sharable ์–ด๋…ธํ…Œ์ด์…˜๊ณผ ChannelHandler ์ธ์Šคํ„ด์Šค ๊ด€๋ฆฌ Netty๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ๋“ค์–ด์˜ค๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ChannelHandler์˜ ์—ญํ• ๊ณผ ๊ด€๋ฆฌ ๋ฐฉ๋ฒ•์€ ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ, @Sharable ์–ด๋…ธํ…Œ์ด์…˜์˜ ์‚ฌ์šฉ๊ณผ ๊ฐ ํด๋ผ์ด์–ธํŠธ ์—ฐ๊ฒฐ์— ๋Œ€ํ•œ ChannelHandler ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ ๋ฐฉ์‹์€ ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ ๋ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์„ฑ๋Šฅ์— ํฐ ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค. 'ChannelHandler'์™€ '@Sharable'์˜ ์ดํ•ด ChannelHandler๋Š” Netty์—์„œ ๋„คํŠธ์›Œํฌ ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์ฃผ์š” ๊ตฌ์„ฑ ์š”์†Œ์ž…๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ์˜ ์—ฐ๊ฒฐ, ๋ฐ์ดํ„ฐ ์ˆ˜์‹  ๋“ฑ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ• ๋•Œ๋งˆ๋‹ค Netty๋Š” ํ•ด๋‹น ChannelHandler๋ฅผ ํ†ตํ•ด ์ด๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. @Sharable ์–ด๋…ธํ…Œ์ด์…˜์€ ํ•˜๋‚˜์˜ ChannelHandler ์ธ์Šคํ„ด์Šค๊ฐ€ ์—ฌ๋Ÿฌ ChannelPipeline ์—์„œ ์•ˆ์ „..
[Java] Reactor ํŒจํ„ด๊ณผ ์ด๋ฒคํŠธ ๋ฃจํ”„ Reactor ํŒจํ„ด Reactor ํŒจํ„ด์€ ๋™์‹œ์— ๋“ค์–ด์˜ค๋Š” ์—ฌ๋Ÿฌ ์ข…๋ฅ˜์˜ ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๋™์‹œ์„ฑ์„ ๋‹ค๋ฃจ๋Š” ๋””์ž์ธ ํŒจํ„ด ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. Reactor ํŒจํ„ด์€ ๊ด€๋ฆฌํ•˜๋Š” ๋ฆฌ์†Œ์Šค์—์„œ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐํ•˜๋‹ค๊ฐ€ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ํ•ด๋‹น ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ํ•ธ๋“ค๋Ÿฌ(handler)์—๊ฒŒ ๋””์ŠคํŒจ์น˜(dispatch)ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ด๋ฒคํŠธ์— ๋ฐ˜์‘ํ•˜๋Š” ํŒจํ„ด์œผ๋กœ '์ด๋ฒคํŠธ ํŒฌ๋“ค๋ง(event handling)'ํŒจํ„ด์ด๋ผ๊ณ ๋„ ๋ถ€๋ฆ…๋‹ˆ๋‹ค. Reactor ํŒจํ„ด์€ ํฌ๊ฒŒ Reactor์™€ ํ•ธ๋“ค๋Ÿฌ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. Reactor: ๋ฌดํ•œ ๋ฐ˜๋ณต๋ฌธ์„ ์‹คํ–‰ํ•ด ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐํ•˜๋‹ค๊ฐ€ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ํ•ธ๋“ค๋Ÿฌ์—๊ฒŒ ๋””์ŠคํŒจ์น˜ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฒคํŠธ ๋ฃจํ”„๋ผ๊ณ ๋„ ๋ถ€๋ฆ…๋‹ˆ๋‹ค. ํ•ธ๋“ค๋Ÿฌ: ์ด๋ฒคํŠธ๋ฅผ ๋ฐ›์•„ ํ•„์š”ํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์„ธ๋ถ€์ ..
[Java] Java NIO์™€ ๋ฉ€ํ‹ฐํ”Œ๋ ‰์‹ฑ ๊ธฐ๋ฐ˜์˜ ๋‹ค์ค‘ ์ ‘์† ์„œ๋ฒ„ Java NIO์™€ ๋ฉ€ํ‹ฐํ”Œ๋ ‰์‹ฑ ๊ธฐ๋ฐ˜์˜ ๋‹ค์ค‘ ์ ‘์† ์„œ๋ฒ„ Java NIO๋Š” Java์˜ ๊ธฐ์กด I/O API๋ฅผ ๋Œ€์ฒดํ•˜๊ธฐ ์œ„ํ•ด Java 1.4 ๋ฒ„์ „์—์„œ ๋„์ž…๋œ I/O API์ž…๋‹ˆ๋‹ค. ์ƒˆ๋กœ ๋ฐ”๋€ ๋ถ€๋ถ„์„ ๊ฐ„๋žตํžˆ ์š”์•ฝํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ฑ„๋„๊ณผ ๋ฒ„ํผ Java NIO์—์„œ๋Š” ์ฑ„๋„๊ณผ ๋ฒ„ํผ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„์—์„œ ํด๋ผ์ด์–ธํŠธ์™€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ๋•Œ ์ฑ„๋„์„ ํ†ตํ•ด์„œ ๋ฒ„ํผ(ByteBuffer)๋ฅผ ์ด์šฉํ•ด ์ฝ๊ณ  ์”๋‹ˆ๋‹ค. ๋…ผ๋ธ”๋กœํ‚น(non-blocking) I/O Java NIO์—์„œ๋Š” ๋…ผ๋ธ”๋กœํ‚น I/O๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์Šค๋ ˆ๋“œ๊ฐ€ ๋ฒ„ํผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด๋‹ฌ๋ผ๊ณ  ์ฑ„๋„์— ์š”์ฒญํ•˜๋ฉด, ์ฑ„๋„์ด ๋ฒ„ํผ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ฑ„์›Œ ๋„ฃ๋Š” ๋™์•ˆ ํ•ด๋‹น ์Šค๋ ˆ๋“œ๋Š” ๋‹ค๋ฅธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ดํ›„ ์ฑ„๋„์ด ๋ฒ„ํผ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ฑ„์›Œ ๋„ฃ๊ณ  ๋‚˜๋ฉด ์Šค๋ ˆ๋“œ๋Š” ํ•ด๋‹น..

728x90