์คํฐ๋/์๋ฐ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. ์ด์ 1 2 3 4 ๋ค์