#JAVA

A collection of 18 posts

#java

๐Ÿ”’ Java ๋กœ ๋™๊ธฐํ™”๋ฅผ ํ•ด๋ณด์ž!

์ด ๊ธ€์—์„œ๋Š” ์ƒํ˜ธ๋ฐฐ์ œ๋ฅผ ํ†ตํ•œ ๋™๊ธฐํ™”๋ฅผ ์•Œ์•„๋ณผ ๊ฒƒ์ด๋‹ค. ๋™๊ธฐํ™”๋Š” ํ”„๋กœ์„ธ์Šค(์Šค๋ ˆ๋“œ)๊ฐ€ ์ˆ˜ํ–‰๋˜๋Š” ์‹œ์ ์„ ์กฐ์ ˆํ•˜์—ฌ ์„œ๋กœ๊ฐ€ ์•Œ๊ณ  ์žˆ๋Š” ์ •๋ณด๊ฐ€ ์ผ์น˜ํ•˜๋Š” ๊ฒƒ์ธ๋ฐ, ์‰ฝ๊ฒŒ ๋งํ•ด ํ”„๋กœ์„ธ์Šค ๊ฐ„ ๋ฐ์ดํ„ฐ๊ฐ€ ์ผ์น˜ํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋Ÿฌํ•œ ๋™๊ธฐํ™” ๋ฉ”์ปค๋‹ˆ์ฆ˜์ธ ์ƒํ˜ธ๋ฐฐ์ œ๋Š” ํ”„๋กœ์„ธโ€ฆ

  • 3๊ธฐ_์™€์ผ๋”
#java

Java 8 ์—์„œ ์™œ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ๋„์ž…๋˜์—ˆ์„๊นŒ?

์šฐ์„  ๋‹น์‹ ์—๊ฒŒ ์งˆ๋ฌธ์„ ๋˜์ ธ๋ณธ๋‹ค. ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ณผ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ์ƒํ˜ธ ๋ฐฐ์ œ ๊ด€๊ณ„์— ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š”๊ฐ€? ๊ฐ์ฒด์ง€ํ–ฅ๊ณผ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ Java ํ˜น์€ ๋‹ค๋ฅธ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ ์ฒ˜์Œ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•˜๋˜ ์‹œ์ ˆ์ด ์ƒ๊ฐ๋‚˜๋Š”๊ฐ€? ๊ทธ ๋‹น์‹œ์—๋Š” ๊ฐ์ฒด์ง€ํ–ฅ ์ดโ€ฆ

#java

๐Ÿงถ Java ์—์„œ ์Šค๋ ˆ๋“œ ํ’€(Thread Pool) ์„ ์‚ฌ์šฉํ•ด ๋ณด์ž

ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ์Šค๋ ˆ๋“œ์˜ ์ƒ์„ฑ ๋ฐ ์ˆ˜๊ฑฐ๊ฐ€ ๋นˆ๋ฒˆํ•˜๊ฒŒ ๋ฐœ์ƒํ•œ๋‹ค๋ฉด ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์— ์†Œ๋ชจ๋˜๋Š” ๋น„์šฉ์ด ๋งŽ์ด ๋“ค์ง€ ์•Š์„๊นŒ? ์ด์— ๋Œ€ํ•œ ํ•ด๋‹ต์œผ๋กœ ์Šค๋ ˆ๋“œ ํ’€์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ณ  Java ์—์„œ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋ฉด ๋˜๋Š”์ง€ ์•Œ์•„๋ณด์ž. ์Šค๋ ˆ๋“œ ํ’€(Thread Pool) ์Šค๋ ˆ๋“œ ์ œโ€ฆ

#java

java์—์„œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•

์ด ๊ธ€์€ java ์ดˆ์‹ฌ์ž๋“ค์—๊ฒŒ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” java๋ผ๋Š” ์–ธ์–ด๋Š” ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ž…๋‹ˆ๋‹ค. ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋ž€ ์ˆ˜ํ–‰ํ•˜๊ณ ์ž ํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋กœ์ง์„ ์ƒํƒœ์™€ ํ–‰์œ„๋กœ ์ด๋ฃจ์–ด์ง„ ๊ฐ์ฒด๋“ค์˜ ๋ชจ์ž„์œผ๋กœ ์ˆ˜ํ–‰ํ•ด๋‚˜๊ฐ€๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ž์—ฐ์Šค๋ ˆ ์šฐ๋ฆฌ๋Š” โ€ฆ

#java

ExceptionHandler ์™€ ControllerAdvice

@ExceptionHandler @ExceptionHandler ๋Š” @Controller , @RestController ๊ฐ€ ์ ์šฉ๋œ Bean ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์˜ˆ์™ธ๋ฅผ ์žก์•„์„œ ํ•˜๋‚˜์˜ ๋ฉ”์„œ๋“œ์—์„œ ์ฒ˜๋ฆฌํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ์ด๋‹ค. @ExceptionHandler ์— ์„ค์ •โ€ฆ

#java

Java ์˜ Stack ๋Œ€์‹  Deque

๐Ÿคนโ€โ™€๏ธ ์ž๋ฐ”์—์„œ ์ž๋ฃŒ๊ตฌ์กฐ Stack ์„ ๋Œ€์‹ ํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” Deque ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž. ์ด ๊ธ€์€ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์ด ์•„๋‹Œ โ€˜์™œ Stack ๋Œ€์‹  Deque ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”๊ฐ€?โ€˜์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•œ๋‹ค. Stack ํ›„์ž…์„ ์ถœ(Last In First Outโ€ฆ

#java

instanceof์˜ ์‚ฌ์šฉ์„ ์ง€์–‘ํ•˜์ž

instanceof๋ž€? ์šฐ๋ฆฌ๋Š” ์ข…์ข… ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ๋ถ€๋ชจ๋ฅผ ์ƒ์†ํ•ด์„œ ๋งŒ๋“ค์–ด์ง„ ์ž์‹ ๊ฐ์ฒด๊ฐ€ ์—ฌ๋Ÿฌ ํƒ€์ž…์ธ ๊ฒฝ์šฐ์— ํŠน์ • ํด๋ž˜์Šค๊ฐ€ ๋งž๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์•„๋ž˜ ์ฝ”๋“œ์™€ ๊ฐ™์ด ๋ผ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณค ํ•œ๋‹ค. ์ฝ”๋“œ๋Š” piece ๊ฐ์ฒด๊ฐ€ Empty๋ผ๋Š” ํด๋ž˜์Šค ํƒ€์ž…์ธ์ง€ ํ™•โ€ฆ

#java

์›น MVC ๊ฐ ์ปดํฌ๋„ŒํŠธ ์—ญํ• 

๊ฐœ๋ฐœ์„ ํ•˜๋‹ค๋ณด๋ฉด ์—ฌ๋Ÿฌ ๋””์ž์ธ ํŒจํ„ด์„ ๋งˆ์ฃผํ•˜๊ฒŒ ๋œ๋‹ค. ๊ทธ ์ค‘ ๊ฐ€์žฅ ์ž์ฃผ ๋ณด๋Š” ๋””์ž์ธ ํŒจํ„ด์€ ์ผ ๊ฒƒ์ด๋‹ค. MVC ํŒจํ„ด์˜ ๊ฐ ์ปดํฌ๋„ŒํŠธ(Model, View, Controller)๋Š” ๋‹ด๋‹นํ•˜๋Š” ์—ญํ• ์ด ์žˆ๋‹ค. ํ•ด๋‹น ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜๊ธฐ ์•ž์„œ ์–ด๋–ค ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ฌด์Šจ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜๋Š”์ง€ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” ์„ ์ •๋ฆฌํ•˜๋ ค ํ•œ๋‹ค. ๋จผ์ € MVC๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์•Œ์•„๋ณด๊ณ , ์ด์–ด์„œ ๊ฐ ์ปดํฌ๋„ŒํŠธ์˜ ์—ญํ• ์„ ์ฐจ๋ก€๋Œ€๋กœ ์„ค๋ช…ํ•œ๋‹ค.

#java

์ž์›์„ ์ž๋™์œผ๋กœ ํ•ด์ œ, try-with-resource

์šฐ๋ฆฌ๋Š” ์ž๋ฐ”๋กœ ํ”„๋กœ๊ทธ๋žจ์„ ์งœ๋ฉด์„œ ์‹œ์Šคํ…œ์— ์žˆ๋Š” ์ž์›๋“ค์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ž์› ์ž์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์‚ฌ์šฉ์ด ๋๋‚ฌ์„ ๋•Œ ํ•ด์ œํ•˜๋Š” ๊ฒƒ๋„ ๋งค์šฐ ์ค‘์š”ํ•œ ์ผ์ž…๋‹ˆ๋‹ค. ์ž์› ํ•ด์ œ๋ฅผ ์žŠ์–ด๋ฒ„๋ฆฌ๊ฑฐ๋‚˜, ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๊ณผ์ • ์ค‘์— ํ•ด์ œ๊ฐ€ ์ด๋ฃจ์–ด์ง€์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆโ€ฆ

#java

DTO์˜ ์‚ฌ์šฉ ๋ฒ”์œ„์— ๋Œ€ํ•˜์—ฌ

1. DTO๋ž€? DTO(Data Transfer Object)๋ž€ ๊ณ„์ธต๊ฐ„ ๋ฐ์ดํ„ฐ ๊ตํ™˜์„ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๊ฐ์ฒด(Java Beans)์ž…๋‹ˆ๋‹ค. ๊ฐ„๋žตํ•˜๊ฒŒ DTO์˜ ๊ตฌ์ฒด์ ์ธ ์šฉ๋ก€ ๋ฐ ํ•„์š”์„ฑ์„ MVC ํŒจํ„ด์„ ํ†ตํ•ด ์•Œ์•„๋ณผ๊นŒ์š”? ๐Ÿš€ 1.1. MVC ํŒจํ„ด MVC ํŒจํ„ดโ€ฆ

#java

์ž๋ฐ” ์ œ๋„ค๋ฆญ(Generics) ๊ธฐ์ดˆ

์ œ๋„ค๋ฆญ ํด๋ž˜์Šค๋‚˜ ์ œ๋„ค๋ฆญ ๋ฉ”์„œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•  ์ผ์ด ๊ฑฐ์˜ ์—†์–ด์„œ ์ œ๋„ค๋ฆญ์„ ์• ๋งคํ•˜๊ฒŒ ์•Œ๊ณ  ์žˆ์—ˆ๋‹ค. ๋‚˜์™€ ๊ฐ™์€ ์ƒํ™ฉ์ธ ์ดˆ๋ณด ๊ฐœ๋ฐœ์ž๋ถ„๋“ค๋„ ๋งŽ์„ ๊ฒƒ ๊ฐ™์•„์„œ ์ œ๋„ค๋ฆญ์— ๋Œ€ํ•ด ์ •๋ฆฌํ•˜๊ณ ์ž ํ•œ๋‹ค. ๋ชจ๋“  ๋‚ด์šฉ์„ ํ•œ ๊ธ€์— ๋‹ด๊ธฐ๋Š” ๋„ˆ๋ฌด ๊ธธ์–ด์ ธ์„œ ์ด๋ฒˆ ๊ธ€์€ ๊ธฐ์ดˆ์ ์ธ ๋‚ด์šฉ์„ ์•Œ์•„๋ณดโ€ฆ

#java

์‹ฑ๊ธ€ํ†ค(Singleton) ํŒจํ„ด์ด๋ž€?

์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ๋””์ž์ธ ํŒจํ„ด์˜ ์ข…๋ฅ˜ ์ค‘ ํ•˜๋‚˜์ธ ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž. ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์ด ๋ฌด์—‡์ธ์ง€, ํŒจํ„ด ๊ตฌํ˜„ ์‹œ ์ฃผ์˜ํ•  ์ ์€ ๋ฌด์—‡์ธ์ง€์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋„ ๋งŽ์€ ๋„์›€์ด ๋  ๊ฒƒ์ด๋ผ ์ƒ๊ฐํ•œ๋‹ค. ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์ด๋ž€? ์‹ฑ๊ธ€ํ†ค(Singleton) ํŒจํ„ด์˜ โ€ฆ

#java

์ •์ , ๋น„์ •์  ๋‚ด๋ถ€ ํด๋ž˜์Šค ์•Œ๊ณ  ์‚ฌ์šฉํ•˜๊ธฐ

์ž๋ฐ”์˜ ์ค‘์ฒฉ ํด๋ž˜์Šค(Nested Class)์—๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ข…๋ฅ˜๊ฐ€ ์žˆ๋Š”๋ฐ ๊ทธ์ค‘ ์ •์  ๋‚ด๋ถ€ ํด๋ž˜์Šค์™€ ๋น„์ •์  ๋‚ด๋ถ€ ํด๋ž˜์Šค์— ๋Œ€ํ•ด ๋‹ค๋ค„๋ณด๊ณ ์ž ํ•œ๋‹ค. ๊ธ€์—์„œ ์‚ฌ์šฉ๋œ ์ฝ”๋“œ๋Š” Github์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ์ค‘์ฒฉ ํด๋ž˜์Šค๋ž€ ์ •์ , ๋น„์ •์  ๋‚ด๋ถ€ ํด๋ž˜์Šค์— ๋Œ€ํ•ด ๋‹คโ€ฆ

#java

๋‹คํ˜•์„ฑ(Polymorphism)์ด๋ž€?

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

#java

์ฝ”๋“œ ์ปค๋ฒ„๋ฆฌ์ง€(Code Coverage)๊ฐ€ ๋ญ”๊ฐ€์š”?

ํŒ€ ํ”„๋กœ์ ํŠธ ์š”๊ตฌ ์‚ฌํ•ญ ์šฐ์•„ํ•œํ…Œํฌ์ฝ”์Šค์—์„œ๋Š” ๋ ˆ๋ฒจ 3,4 ๊ณผ์ •์—์„œ ํŒ€ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜์˜€๋‹ค. ๋ ˆ๋ฒจ 3์—์„œ ์„œ๋น„์Šค๋ฅผ ๊ตฌํ˜„ํ–ˆ๋‹ค๋ฉด, ๋ ˆ๋ฒจ 4์—์„œ๋Š” ๊ตฌํ˜„ํ•œ ์„œ๋น„์Šค์— ๋Œ€ํ•œ ์œ ์ง€๋ณด์ˆ˜๋ฅผ ์ง„ํ–‰ํ•˜์˜€๋Š”๋ฐ, ์ด๋•Œ ์œ ์ง€๋ณด์ˆ˜์™€ ๋”๋ถˆ์–ด ์„œ๋น„์Šค์˜ ๊ฐœ์„ ์„ ์œ„ํ•œ ๋ช‡ ๊ฐ€์ง€ ์š”๊ตฌ ์‚ฌํ•ญโ€ฆ

#java

Java์˜ ๋ฌธ์ž์—ด์„ ํŒŒํ•ด์น˜์ž!

๋ฌธ์ž์™€ ๋ฌธ์ž์—ด ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋Š” ๋™์•ˆ ๊ฐ€์žฅ ๋งŽ์ด ์ƒ์„ฑ๋˜๋Š” ๊ฐ์ฒด๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์•„๋Š”๊ฐ€? ๊ทธ๊ฒƒ์€ ๋ฐ”๋กœ ๋ฌธ์ž์—ด(String) ๊ฐ์ฒด์ด๋‹ค. ๋ฌธ์ž์—ด์€ ๋ฌธ์ž์˜ ๋ฐฐ์—ด์ด๋‹ค. โ€œabcโ€๋ผ๋Š” ๋ฌธ์ž์—ด์€ โ€˜aโ€™,โ€˜bโ€™,โ€˜cโ€™๋ผ๋Š” ๋ฌธ์ž๋ฅผ ๋‚˜์—ดํ•œ ๋ฐฐ์—ด์ธ ๊ฒƒ์ด๋‹ค. ์ž๋ฐ”๋Š” ๊ฐโ€ฆ

#java

equals์™€ hashCode๋Š” ์™œ ๊ฐ™์ด ์žฌ์ •์˜ํ•ด์•ผ ํ• ๊นŒ?

equals์™€ hashCode๋Š” ๊ฐ™์ด ์žฌ์ •์˜ํ•˜๋ผ๋Š” ๋ง์„ ๋‹ค๋“ค ํ•œ ๋ฒˆ์ฏค ๋“ค์–ด๋ดค์„ ๊ฒƒ์ด๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ IDE Generate ๊ธฐ๋Šฅ์—์„œ๋„ equals์™€ hashCode๋ฅผ ๊ฐ™์ด ์žฌ์ •์˜ํ•ด์ฃผ๋ฉฐ lombok์—์„œ๋„ EqualsAndHashCode ์–ด๋…ธํ…Œ์ด์…˜์œผ๋กœ ๊ฐ™์ดโ€ฆ