๋ถ๋ฅ ์ ์ฒด๋ณด๊ธฐ51 REST API ์์์ HTTP ์๋ต ์ฝ๋ (HTTP 201 Created) ๋ง์ฐํ๊ฒ ์๊ณ , ๋์ถฉ ์ฌ์ฉํ๋ HTTP ์๋ต ์ฝ๋๋ฅผ ์ ๋ฆฌํ ์๊ฐ.. ๋๋์ด..ํ ๋ฒ์ ํ๋ ค๊ณ ํ๋๋ฐ POST ํ๋ ์ ๋ฆฌ๋ ๊ฝค๋ ๊ฑธ๋ ค์ ๋๋ ์ ์ ๋ฆฌํด์ผ๊ฒ ๋ค. ์ฌ์ค ์์ง POST ๋ง๊ณ ๋ ๊ถ๊ธํ ์ ์ด ์์. ์กฐํ(GET) => 200 OK์์ฑ(POST) => 201 Created์์ (PUT, PATCH) => 200 OK / 204 No Content์ญ์ (DELETE) => 204 No Content ๐ถ ์์ฑ(POST)POST ์์ฒญ ์ 201 Created ์๋ต์ ๋ณด๋ธ๋ค.์ด ๋, Location ํค๋์ ์์ฑ๋ ๋ฆฌ์์ค์ URI๋ฅผ ํฌํจํ๋ ๊ฒ์ ๊ถ์ฅํ๋ค. HTTP 201 Created์์ฒญ์ด ์ฑ๊ณต์ ์ผ๋ก ์ฒ๋ฆฌ๋์์ผ๋ฉฐ, ์๋ก์ด ๋ฆฌ์์ค๊ฐ ์์ฑ๋์์์ ๋ํ๋ธ๋ค. URI๋ฅผ ์์ฑํ์ฌ ๋ณด๋ด๋ ์ฝ๋ @PostMapping.. 2025. 2. 18. Spring JPA | Entity์ Dto ๋ถ๋ฆฌ Spring JPA๋ฅผ ํ์ฉํ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด์ ์๋กญ๊ฒ ์๊ฒ๋ ์ ์ด ์์ด ์ ๋ฆฌํ๊ณ ์ ํ๋ค.Entity๋ฅผ ์ ์ํด์ ์ฌ์ฉํ๋ฉด์ ์ด์ ํ๋ก์ ํธ์์๋ ์๋น์ค๋จ์์ Entity์ Dto๋ฅผ ๋น๋ ํจํด์ ์ฌ์ฉํด์ ๋ฐ์ดํฐ ๊ฐ์ ๋ฃ์ด์ฃผ๊ณค ํ์๋๋ฐ, ์ด๋ฒ ํ๋ก์ ํธ์์๋ Entity์ toResponseDto() ๋ฉ์๋์ ์์ฑ์๋ฅผ ๋ง๋ค์ด์ ๋ฐ์ดํฐ ๊ฐ์ ๋ฃ์ด์ฃผ๋ ์ฝ๋๋ฅผ ์์ฑํ์๋ค.์ด์ ๋ํด Entity๋ฅผ ๋ณดํธํ๋ผ! ๋ผ๋ ํผ๋๋ฐฑ์ ๋ฐ์๊ณ , ๊ณ ์น๋ ๋ฐฉ๋ฒ๋ ์ ๋ฌ๋ฐ์๊ธฐ์ ๊ธฐ๋กํด๋ณด๋ ค๊ณ ํ๋ค. ๐ง Entity๋ฅผ ๋ณดํธํด์ผ ํ๋ ์ด์ Entity๋ ์ค์ํ ๋ฐ์ดํฐ ๊ฐ์ฒด์ด๋ฏ๋ก ์ต๋ํ ์์ํ ๋ฐ์ดํฐ ๊ฐ์ฒด๋ก ์ ์งํ๊ณ , DTO์์ ์์กด์ฑ์ ์์ ๋ ๊ฒ์ด ์ข๋ค.Entity๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ 1:1 ๋งคํ๋๋ ๊ฐ์ฒด์ธ๋ฐ, DTO์์ ๋ณํ ๋ก์ง์ด ๋ค์ด๊ฐ๋ฉด .. 2025. 2. 17. [๋ฌธ์ ํ์ด] ๋ฐฑ์ค 5427 ๋ถ ๐๏ธ ๋ฌธ์ ๐ข ํ๋ฆฐ ์ด์ ๋ถ์ด ํผ์ง๋ ๊ฐ๊ฒฉ๊ณผ ์๊ทผ์ด๊ฐ ์์ง์ด๋ ๊ฐ๊ฒฉ์ด ๊ฐ์ผ๋ ค๋ฉด BFS๋ฅผ ๋๋ฆด ๋ ๋ถ์ด ๊ฐ ๊ณณ์ ํ์ํ๊ณ que์ ๋ฃ๋ depth์ ์๊ทผ์ด๊ฐ ์ด๋ํ๋ depth๊ฐ ๊ฐ์์ผ ํ๋ค.๊ทธ ๋ถ๋ถ์ ๊ตฌํํ์ง ๋ชปํด์ ๊ณ์ ๋ชจ๋ ๋ฌธ์ ๊ฐ "IMPOSSIBLE"์ด ๋์๋ค. ๐ ์ ๋๋ก ๋ ์ฝ๋์ ๋๋ก ๋ฌธ์ ๋ฅผ ํ๋ ค๋ฉด ๋ถ์ ๋ฃ๋ ํ ์ฌ์ด์ฆ๋งํผ๋ง ๋ค์ ์ขํ๋ฅผ ํ์ํ๊ณ ์๊ทผ์ด๋ ์๊ทผ์ด์ ํ ์ฌ์ด์ฆ๋งํผ๋ง ๋ค์ ์ขํ๋ฅผ ํ์ํ๊ณ ์ด๋์์ผ์ฃผ์ด ๋์ด ์์ง์ด๋ ๊ฐ๊ฒฉ์ ๋ง์ถฐ์ค์ผ ํ๋ค.์ฃผ์ ์ฝ๋ while (!sangQ.isEmpty()){ int firesize = fireQ.size(); int sangsize = sangQ.size(); for (int i = 0; i โ ๏ธ for๋ฌธ์ ํ์ size๋ฅผ.. 2025. 2. 14. [๋ฌธ์ ํ์ด] ๋ฐฑ์ค 1697 ์จ๋ฐ๊ผญ์ง ์๊ณ ๋ฆฌ์ฆ์ ์ ํ๋ฉด ๊น๋จน๋ ๊ฒ ๊ฐ๋ค.BFS/DFS๋ ๋ค๋ฅธ ์ ํ์ ๋นํด ๋ง์ด ํ์ด๋ดค์ด์ ์์ฝ๊ฒ ํ ์ ์์๊ฑฐ๋ผ๊ณ ์๊ฐํ๋๋ฐํ ๋ฒ์ ์ฑ๊ณตํ์ง ๋ชปํ๋ค. ^-^ ๋จธ์ฑ ๋ฐฑ์ค 1697 ์จ๋ฐ๊ผญ์ง ๋ฌธ์ ์๋น์ด๊ฐ ๋์์ ์ฐพ๊ธฐ ์ํด์ ํน์ ์ด๋ ์กฐ๊ฑด์ ๋ง์ถฐ ํ์ํ๋ ๋ฌธ์ ์ด๋ค.์ ํ์ ์ธ BFS ๋ฌธ์ ์ธ ๋ฏ ํ๋ค. X - 1X + 12 * X์ด๋ ์กฐ๊ฑด์ด ๊ท์น์ ์ด๋ฏ๋ก ํ์ ์์น๊ฐ ๋ฐ๋ณต๋ ์ ์๋๋ฐ ์ฒ์์ ๋ฐฉ๋ฌธ์ฒดํฌ๋ฅผ ๋นผ๋จน์ ์ด์ ๋…..!๊ทธ๋ฅ ์๋ชป ์๊ฐํ๋ค.์ค๋ช ํ๊ธฐ๋ ์ด๋ ต๊ฒ ์๊ฐ์ ์ค๋ฅ๋ฅผ ๋ฒํด์ ์ ๊ธฐ๊ฐ ์ด๋ ต๋ค..๊ฒฐ๋ก ์ํน์ ์ง์ ์ ๋์ฐฉํ์ ๋, ๊ทธ ์ง์ ์์ ์ด๋ํ ์ ์๋ ๋ชจ๋ ๊ฒฝ์ฐ์ ์(3๊ฐ์ง ์ด๋ ์กฐ๊ฑด)๋ ํ ๋ฒ์ ํ์ ๋ฃ์ด์ ๋ค์ ๋จ๊ณ๋ก ๋์๊ฐ๊ธฐ ๋๋ฌธ์ ํ ๋ฒ ๋ฐฉ๋ฌธํ ๊ณณ์ ๋ค์ ๋์์ฌ ํ์๊ฐ ์๋ค.ํนํ, ์ด ๋ฌธ์ ๋ ์กฐ๊ฑด์ด X-1 .. 2025. 2. 13. ํ๋ก์ ํธ | ์ค๊ณ ๋จ๊ณ์์ ํ์ฅ์ฑ์ ๋ํ ๊ณ ๋ฏผ โจ ์ฃผ์ ๋ด์ฉ ํฅํ์ ์ด๋ค ๋ณ๋(๊ธฐ๋ฅ ๋ณ๊ฒฝ, ์ธ๋ถ ์๋น์ค ๋ฑ)์ ์ํฅ์ ๋ฐ์ง ์๋๋ก ์ค๊ณํ ๊ฒ โ ํ๋ก์ ํธ ์ค๊ณํ๋ก์ ํธ๋ฅผ ์์ํ๋ฉด์ ์ค๊ณ๋ฅผ ์์ํ๊ฒ ๋์๋ค.๊ธฐํ์ ํ์ง ์๊ณ , ์๊ตฌ์ฌํญ์ด ์ฃผ์ด์ง ์ฃผ๋ฌธ ๊ด๋ฆฌ ํ๋ซํผ์ ์ค๊ณ๋ถํฐ ๊ตฌํํ๊ฒ ๋ ์์ ์ด๋ค. ๊ณ ๋ คํ ์ ์คํ๋ง ๋ถํธ ๊ธฐ๋ฐ์ ๋ชจ๋๋ฆฌ์ ์ดํ๋ฆฌ์ผ์ด์ ์ด๋ ์ถํ MSA๋ก ์ ํํ ๊ฒ.์ค์ ๋ก ์ด๊ธฐ์๋ ๋ชจ๋๋ฆฌ์ ์ํคํ ์ฒ๋ก MVP ์์ฃผ๋ก ๊ตฌํํ๊ณ , ์ถํ์ MSA๋ฅผ ๋์ ํ๋ค๊ณ ํ๋ค.์ด๊ธฐ์ MSA๋ฅผ ๋์ ํ๋ ค๋ฉด ํ๋ก์ ํธ์ ๋ถํ์ค์ฑ, ์ธ๋ ฅ ๋ฐ ์ธํ๋ผ์ ์ ํ ๋ฑ ์ฌ๋ฌ ์์ธ์ผ๋ก ํ๋ค๋ค.ํ์ ๋๋ฃ(์. ํ๋ก ํธ์๋ ๊ฐ๋ฐ์)์๊ฒ ๋ฌธ์๋ฅผ ์ด๋ป๊ฒ ์ ๊ณตํ ๊ฒ์ธ๊ฐ?RESTful API ์ค๊ณ๋ฅผ ์ํด ๊ณ ๋ คํ ์ ์ ๋ฌด์์ธ๊ฐ?์ํฐํฐ ๊ฐ์ ๊ด๊ณ๋ฅผ ์ด๋ป๊ฒ ์ค์ ํด์ผ ํ๋๊ฐ?ํ์ฅ์ฑ์ ์ด๋๊น์ง ๊ณ ๋ คํด์ผ ํ๋.. 2025. 2. 12. MSA | ์ํท ๋ธ๋ ์ด์ปค (feat. Resilience4j) โ๏ธ ์ถ๊ฐ ์ง์ : ์ํท๋ธ๋ ์ด์ปค(Circuit Breaker) ๊ฐ ๋ฌด์์ธ๊ฐ?๋๋ณด๊ธฐ์ ๋ : ์ ๊ธฐ ํ๋ก์์ ๊ณผ์ด๋ ํ๋ก๋ฅผ ์ฐจ๋จํ๋ ์ฅ์น (a.k.a. ๋๊บผ๋น์ง)์ฐ์ : ์ฃผ์ ์์ฅ - ์ฃผ๊ฐ๊ฐ ๊ฐ์๊ธฐ ๊ธ๋ฝํ ๋, ์ฃผ์๋งค๋งค ์ผ์ ์ ์งํ๋ ์ ๋ ์ํํธ์จ์ด - ์ฅ์ ์ ํ ์ฐจ๋จ์ ๋ชฉ์ ์ผ๋ก ์์คํ ๊ฐ ์ฐ๋์ ์ฐจ๋จํ๋ ๊ธฐ์ ์๋ก ๋ค๋ฅธ ์์คํ ๋ผ๋ฆฌ ์ฐ๋ํ ๋, ์ฅ์ ๊ฐ ๋ฐ์ํ ์๋น์ค๋ก์ ์์ฒญ์ ์ผ์์ ์ผ๋ก ์ฐจ๋จํ์ฌ, ์ฅ์ ์ ํ๋ฅผ ๋ฐฉ์งํ๋๊ธฐ์ ๋ชฉ์ : ์์คํ ์ ์ ์ฒด์ ์ธ ์์ ์ฑ์ ์ ์งํ ์ ์๋ค.๊ธฐ๋ฅ :์์คํ ์ฐ๋ ์, ํธ์ถ ์คํจ ๊ฐ์ง์ดํ ํ๋ณต์, ์๋์ผ๋ก ์์คํ ์ฐ๋ 1. ํด๋ก์ฆ๋ (CLOSED)์๋น์ค๊ฐ ์ ์ ํธ์ถ/์๋ต ๋๊ณ ์๋ ์ํ2. ์คํ (OPEN)๋ฌธ์ ๋ฐ์์ด ๊ฐ์ง๋ ์ํ3. ํํ-์คํ (HALF_OPEN)์๋น์ค๊ฐ ์คํ ์.. 2025. 2. 11. ์ด์ 1 2 3 4 5 ยทยทยท 9 ๋ค์