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

์Šคํ„ฐ๋””/์ž๋ฐ”23

์—…๋ฌด ํšจ์œจ์„ ์˜ฌ๋ ค์ฃผ๋Š” 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.
[์˜ค๋ธŒ์ ํŠธ] ๋ถ€๋ก B, C 'ํƒ€์ž… ๊ณ„์ธต์˜ ๊ตฌํ˜„', '๋™์ ์ธ ํ˜‘๋ ฅ, ์ •์ ์ธ ์ฝ”๋“œ' ๋ถ€๋ก B๋Š” ์ƒ์†์ด ์•„๋‹Œ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ ํƒ€์ž… ๊ณ„์ธต์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์„ค๋ช…ํ•œ๋‹ค. ๋ถ€๋ก C๋Š” ๋™์ ์ธ ํ˜‘๋ ฅ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ •์ ์ธ ์ฝ”๋“œ๋ฅผ ๊ตฌ์„ฑํ•ด์•ผ ํ•˜๋Š” ์ด์œ ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•œ๋‹ค. ํƒ€์ž… ๊ณ„์ธต์˜ ๊ตฌํ˜„ํด๋ž˜์Šค๋ฅผ ์ด์šฉํ•œ ํƒ€์ž… ๊ณ„์ธต ๊ตฌํ˜„๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด์—์„œ ํด๋ž˜์Šค๋Š” ์‚ฌ์šฉ์ž ์ •์˜ ํƒ€์ž…(user-defined data type)์ด๊ณ , ํด๋ž˜์Šค๋Š” ๊ฐ์ฒด์˜ ํƒ€์ž…๊ณผ ๊ตฌํ˜„์„ ๋™์‹œ์— ์ •์˜ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ํด๋ž˜์Šค๋ฅผ ์ด์šฉํ•œ ํƒ€์ž… ๊ณ„์ธต์€ ์ƒ์†์„ ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ์ƒ์†์„ ์ด์šฉํ•  ๊ฒฝ์šฐ, ์ž์‹ํด๋ž˜์Šค๋Š” ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ๊ตฌํ˜„๊ณผ ํผ๋ธ”๋ฆญ ์ธํ„ฐํŽ˜์ด์Šค ๋ชจ๋‘ ๋ฌผ๋ ค๋ฐ›์„ ์ˆ˜ ์žˆ์–ด ํƒ€์ž… ๊ณ„์ธต์„ ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ž์‹ํด๋ž˜์Šค์™€ ๋ถ€๋ชจํด๋ž˜์Šค๋ฅผ ๊ฐ•ํ•˜๊ฒŒ ๊ฒฐํ•ฉ์‹œํ‚ค๊ธฐ ๋•Œ๋ฌธ์— ๋˜๋„๋ก์ด๋ฉด ์ถ”์ƒ ํด๋ž˜์Šค๋‚˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ™œ์šฉํ•ด์„œ ํƒ€์ž… ๊ณ„์ธต์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ด์šฉํ•œ ํƒ€์ž… ๊ณ„์ธต.. 2023. 2. 10.
[์˜ค๋ธŒ์ ํŠธ] ๋ถ€๋ก A '๊ณ„์•ฝ์— ์˜ํ•œ ์„ค๊ณ„' ๋ถ€๋ก A์—์„œ๋Š” ์‚ฌ์ „์กฐ๊ฑด, ์‚ฌํ›„์กฐ๊ฑด, ๋ถˆ๋ณ€์‹์„ ์•Œ์•„๋ณด๊ณ  ๋‹คํ˜•์„ฑ์˜ ์ธก๋ฉด์—์„œ ์Šˆํผํƒ€์ž…๊ณผ ์„œ๋ธŒํƒ€์ž…์ด ์ค€์ˆ˜ํ•ด์•ผ ํ•˜๋Š” ์ œ์•ฝ์กฐ๊ฑด์„ ๊ณ„์•ฝ์˜ ๊ด€์ ์—์„œ ์„ค๋ช…ํ•œ๋‹ค. ๊ณ„์•ฝ์— ์˜ํ•œ ์„ค๊ณ„(Design by Contract, DBC)๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ˜‘๋ ฅ์— ํ•„์š”ํ•œ ๋‹ค์–‘ํ•œ ์ œ์•ฝ๊ณผ ๋ถ€์ˆ˜ํšจ๊ณผ๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์ •์˜ํ•˜๊ณ  ๋ฌธ์„œํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค(p.535). ๊ณ„์•ฝ์— ์˜ํ•œ ์„ค๊ณ„ ๊ตฌ์„ฑ์š”์†Œ์‚ฌ์ „์กฐ๊ฑด (precondition): ๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋˜๊ธฐ ์œ„ํ•ด ๋งŒ์กฑ๋ผ์•ผ ํ•˜๋Š” ์กฐ๊ฑด. ์š”๊ตฌ์‚ฌํ•ญ(requires)์„ ๋ช…์‹œํ•˜๋ฉฐ, ์‚ฌ์ „์กฐ๊ฑด์„ ๋งŒ์กฑ์‹œํ‚ค๋Š” ๊ฒƒ์€ ๋ฉ”์„œ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์˜๋ฌด๋‹ค. ์‚ฌํ›„์กฐ๊ฑด (postcondition): ๋ฉ”์„œ๋“œ๊ฐ€ ์‹คํ–‰๋œ ํ›„์— ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ณด์žฅํ•ด์•ผ ํ•˜๋Š” ์กฐ๊ฑด. ์‚ฌํ›„์กฐ๊ฑด(effects)์„ ์„œ๋ฒ„๊ฐ€ ๋งŒ์กฑ์‹œํ‚ค์ง€ ๋ชปํ•˜๋ฉด ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์˜ˆ์™ธ๋ฅผ ๋˜์ ธ์ค˜์•ผ ํ•˜๋ฉฐ, .. 2023. 2. 3.