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

์ž๋ฐ”6

์—…๋ฌด ํšจ์œจ์„ ์˜ฌ๋ ค์ฃผ๋Š” Intellij ๋‹จ์ถ•ํ‚ค (์œˆ๋„์šฐ ๊ธฐ์ค€) ์ธํ…”๋ฆฌ์ œ์ด์—์„œ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋‹จ์ถ•ํ‚ค ์ •๋ฆฌ 1. ๋ผ์ธ ๋ณต์‚ฌ CTRL + D 2. ๋ผ์ธ ์‚ญ์ œ CTRL + Y 3. ๋ผ์ธ ์œ„๋กœ ์ด๋™ SHIFT + ALT + โฌ†๏ธ 4. ๋ผ์ธ ์•„๋ž˜๋กœ ์ด๋™ SHIFT + ALT + โฌ‡๏ธ 5. ํ•œ๊ธ€์ž์”ฉ ์„ ํƒ SHIFT + โฌ…๏ธ/โžก๏ธ 6. ๋‹จ์–ด๋ณ„๋กœ ์„ ํƒ SHIFT + CTRL + โฌ…๏ธ/โžก๏ธ 7. ์•ˆ์“ฐ๋Š” import ์ง€์šฐ๊ธฐ CTRL + SHIFT + O 8. ๋ณ€์ˆ˜ ์ด๋ฆ„ ์ƒ์„ฑ CTRL + ALT + V 9. ์ „์ฒด ์ฐพ๊ธฐ SHIFT ๋‘๋ฒˆ 10. ๋’ค๋กœ๊ฐ€๊ธฐ CTRL + ALT + โฌ…๏ธ 11. ์•ž์œผ๋กœ ๊ฐ€๊ธฐ CTRL + ALT + โžก๏ธ 12. ํ”„๋กœ์ ํŠธ ํด๋” ๋ทฐ๋กœ ์ด๋™ ALT + 1 13. ๋ธ”๋Ÿญ ์ฝ”๋ฉ˜ํŠธ( /* */) CTRL + SHIFT + / 14. ์ฝ”๋“œ ์ ‘๊ณ  ํŽผ์น˜๊ธฐ CTRL + โž•/โž– 15... 2024. 2. 25.
Spring Boot file upload download rest api ์˜ˆ์ œ - 1 ๐Ÿ“ ์Šคํ”„๋ง ๋ถ€ํŠธ๋กœ ํŒŒ์ผ ์—…๋กœ๋“œ ๋‹ค์šด๋กœ๋“œ ๊ตฌํ˜„ ๋ฐฉ๋ฒ• ์ฒซ ํšŒ์‚ฌ์˜ ์ˆ˜์Šต๊ณผ์ œ๋กœ ํŒŒ์ผ ์—…๋กœ๋“œ ๋‹ค์šด๋กœ๋“œ ๊ธฐ๋Šฅ์„ ๋งŒ๋“  ์ ์ด ์žˆ๋Š”๋ฐ ๊ฒ€์ƒ‰์„ ํ•˜๋ฉด JSP๋กœ ๊ตฌํ˜„๋œ ์˜ˆ์ œ๊ฐ€ ๋งŽ์•„์„œ ํ”„๋ก ํŠธ๊ฐ€ React๋‚˜ Vue์ผ๋•Œ ์–ด๋–ป๊ฒŒ ํŒŒ์ผ ์—…๋กœ๋“œ ๋‹ค์šด๋กœ๋“œ ๊ตฌํ˜„ํ•ด์•ผ ํ•˜๋Š”์ง€ ๋ง‰๋ง‰ํ–ˆ์—ˆ๋‹ค. ๋‹คํ–‰์ด ๊นƒํ—ˆ๋ธŒ์—์„œ ์ž˜ ์ •๋ฆฌ๋œ ์ฝ”๋“œ๋ฅผ ์ฐพ์•„์„œ ๊ณผ์ œ๋ฅผ ์ž˜ ๋งˆ๋ฌด๋ฆฌ ํ•  ์ˆ˜ ์žˆ์—ˆ์ง€๋งŒ ํ•ด๋‹น ๊นƒํ—ˆ๋ธŒ ์˜ˆ์ œ๋ฅผ ์ฐธ๊ณ ํ•ด์„œ ๊ตฌํ˜„ ํ•  ๋•Œ ์•„์‰ฌ์› ๋˜ ์ ๊ณผ ๊ทธ๋•Œ๋Š” ์ž˜ ๋ชฐ๋ž๋˜ ๊ฒƒ๋“ค์„ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค. 1๏ธโƒฃ Failed to perform cleanup of multipart items ์—๋Ÿฌ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ• ์Šคํ”„๋ง ๋ถ€ํŠธ ๋ฒ„์ „ ๋ณ€๊ฒฝ์—์„œ inputStream.close() ์ถ”๊ฐ€ํ•˜๋Š” ๊ฑธ๋กœ ์ˆ˜์ • - Caused by: java.io.IOException: Cannot delete ๊ฒฝ๋กœ\ํŒŒ์ผ์ด๋ฆ„.. 2024. 2. 19.
์ž๋ฐ” iterators๋ž€? ๐Ÿฃ Java Iteration ๐Ÿฃ Java์—์„œ Map ์ˆœํšŒํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด๋ฉด for๋ฌธ์„ ์‚ฌ์šฉํ•œ ๋ฐฉ๋ฒ•๊ณผ iterator๋ฅผ ์‚ฌ์šฉํ•œ ๋ฐฉ๋ฒ• 2๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ iterator๋กœ Map์„ ์ˆœํšŒํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ์ธํ…”๋ฆฌ์ œ์ด์—์„œ๋Š” ํ–ฅ์ƒ๋œ for๋ฌธ์œผ๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค. ์ธํ…”๋ฆฌ์ œ์ด์—์„œ ์ถ”์ฒœํ•˜๋Š”๋Œ€๋กœ enhanced 'for' loop์œผ๋กœ ๋ฐ”๊ฟ”๋ณด๋ฉด ๊ธฐ์กด์— ์ž‘์„ฑํ•œ for๋ฌธ์„ ํ™œ์šฉํ•œ Map ์ˆœํšŒ๋ฐฉ๋ฒ•๊ณผ ๋˜‘๊ฐ™์ด ๋ณ€๊ฒฝ๋˜๋Š”๋ฐ ํ–ฅ์ƒ๋œ for๋ฌธ์€ ์‚ฌ์‹ค iterator object๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ˆœํšŒํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฝ๊ณ  ์˜ˆ์˜๊ฒŒ ๋ฐ”๊ฟ”๋†“์€ ๊ฒƒ์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. (๋ฌผ๋ก , iterator๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ˆœํšŒํ•˜๋Š” ๋„์ค‘์— ์‚ญ์ œ๊ฐ€ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ํ–ฅ์ƒ๋œ for๋ฌธ์€ ConcurrentModificationException์ด ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ˆœํšŒ ๋„์ค‘.. 2024. 2. 11.
์ž๋ฐ”์—์„œ Map ์ˆœํšŒ ๋ฐฉ๋ฒ• ๐Ÿฃ Java์—์„œ Map ์ˆœํšŒํ•˜๋Š” ๋ฐฉ๋ฒ• ๐Ÿฃ ์ž๋ฐ”์—์„œ Map์œผ๋กœ ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋ฆด ๋•Œ entrySet(), keySet() ๊ทธ๋ฆฌ๊ณ  values()๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ฐ’์„ ๊บผ๋‚ด์˜ฌ ์ˆ˜ ์žˆ๋‹ค. entrySet() : Map.Entry ํด๋ž˜์Šค์˜ ์›์†Œ ๋ฐ˜ํ™˜. entry.getKey() ๋Š” key๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ , entry.getValue()๋Š” value ๋ฆฌํ„ด keySet() : ๋งต์— ์žˆ๋Š” ๋ชจ๋“  keys๋ฅผ set์œผ๋กœ ๋ฐ˜ํ™˜ values() : ๋งต์— ์žˆ๋Š” ๋ชจ๋“  values๋ฅผ set์œผ๋กœ ๋ฐ˜ํ™˜ Map ์„ธํŒ… Map map = new HashMap(); @BeforeEach void setUp() { map.put(1, "๋”ธ๊ธฐ"); map.put(2, "์‚ฌ๊ณผ"); map.put(3, "๊ทค"); map.put(4, "๋ฐ”๋‚˜๋‚˜"); map.put(.. 2024. 1. 27.
Lambdas and Stream Streams API ๋‹ค๋ฅธ ๊ฐ์ฒด๋ฅผ ํฌํ•จํ•˜๋Š” ์ปฌ๋ ‰์…˜์ด๋ผ๋„ ์šฐ๋ฆฌ๊ฐ€ ์–ป๊ณ ์ž ํ•˜๋Š” ์ •๋ณด๋Š” ๋น„์Šทํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, '์ด๋Ÿฌํ•œ ์กฐ๊ฑด์— ๋งž๋Š” ์•„์ดํ…œ์„ ์ค˜', '์ด๋Ÿฌํ•œ ๋ฐฉ๋ฒ•์„ ํ™œ์šฉํ•ด์„œ ๋ชจ๋“  ์•„์ดํ…œ์„ ๋ฐ”๊ฟ”์ค˜, ' '์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ๋Š” ์ง€์›Œ์ค˜', ๋˜๋Š” '์ด๋Ÿฐ ๋ฐฉ๋ฒ•์œผ๋กœ ์š”์†Œ๋“ค์„ ์ •๋ ฌํ•ด ์ค˜' ๋“ฑ์„ ์ปฌ๋ ‰์…˜์— ์š”์ฒญํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ด ๋ณด์ž. ์šฐ๋ฆฌ๋Š” ์ด๋Ÿฌํ•œ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด for๋ฌธ๊ณผ Iterator๋ฅผ ์ด์šฉํ•ด์„œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ฑฐ๋‚˜ ๊ฐ ์ปฌ๋ ‰์…˜ ํด๋ž˜์Šค์— ๋งž๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ์™”๋‹ค. List๋ฅผ ์ •๋ ฌํ•  ๋•Œ๋Š” Collections.sort()๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๋ฐฐ์—ด์„ ์ •๋ ฌํ•  ๋•Œ๋Š” Arrays.sort()๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค. Streams API๋Š” ๋ฐ์ดํ„ฐ ์†Œ์Šค๋ฅผ ์ถ”์ƒํ™” ํ•ด์„œ ๋ฐ์ดํ„ฐ ์†Œ์Šค๊ฐ€ ๋ฌด์—‡์ด๋“  ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ์ œ๊ณตํ•ด ์ค€๋‹ค. ๊ทธ๋ž˜์„œ ์šฐ.. 2023. 1. 19.
Garbage Collection in Java ๊ฐ€๋น„์ง€ ์ฝœ๋ ‰์…˜์ด๋ž€? ํž™์— ์žˆ๋Š” ์•ˆ ์“ฐ๋Š” ๊ฐ์ฒด๋“ค์„ ์ž๋ฐ”๊ฐ€ ์•Œ์•„์„œ ์ฒญ์†Œํ•ด ์ฃผ๋Š” ๊ฒƒ์ด๋ผ๊ณ  ์•Œ๊ณ  ์žˆ์—ˆ๋Š”๋ฐ ๊ฒ€์ƒ‰์„ ํ•ด๋ณด๋‹ˆ...... ์ด๋ ‡๊ฒŒ ์‰ฝ๊ฒŒ ๋๋‚ผ ์ˆ˜ ์žˆ๋Š” GC๊ฐ€ ์•„๋‹ˆ์—ˆ๋‹ค..๐Ÿ˜ฅ Garbage Collection์ด๋ž€? ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์€ ์ฐธ์กฐ(reference)๋˜์ง€ ์•Š๋Š” ๊ฐ์ฒด๋“ค์„ ์ •๋ฆฌํ•ด ์ค˜์„œ RAM์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ™•๋ณดํ•œ๋‹ค. ์ •ํ™•ํžˆ๋Š” Heap ์˜์—ญ์ธ๋ฐ, ๋ชจ๋“  ๊ฐ์ฒด๋Š” Heap์— ์ƒ์„ฑ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ž๋ฐ” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํŠœ๋‹ํ•  ๋•Œ ๊ณ ๋ คํ•ด์•ผ ํ•  ์‚ฌํ•ญ์œผ๋กœ ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ๋Š”๋ฐ ์ฒซ ๋ฒˆ์งธ๋กœ๋Š” Responsiveness, ๋‘ ๋ฒˆ์งธ๋Š” Throughput์ด๋‹ค. ์„ค๋ช…์„ ํ•˜์ž๋ฉด, Responsiveness๋Š” ์–ผ๋งˆ๋‚˜ ๋น ๋ฅธ ์‹œ๊ฐ„ ์•ˆ์— ์š”์ฒญํ•œ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‘๋‹ตํ•˜๋Š”๊ฐ€์ด๊ณ  Throughput์€ ์ฃผ์–ด์ง„ ์‹œ๊ฐ„ ๋‚ด์— ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์–‘์— ์ดˆ์ .. 2022. 10. 28.