๋ถ๋ฅ ์ ์ฒด๋ณด๊ธฐ199 [ TIL ] ์ฃผํน๊ธฐ ์ฌํ_Day 9 ์ค๋ ํ ๊ณต๋ถ ๐ง ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ Java 1๋ฌธ์ ํ์ด & ๋ธ๋ก๊ทธ ์ ๋ฆฌ5๋ถ ๊ธฐ๋ก ๋ณด๋ ์ธ์ ๋ฃ๊ธฐํ๋ก์ ํธ ์ค๊ฐ์ค๊ฐ ๊ธฐ๋ก์ ํด๋๋ ๊ฒ์ด ๋งค์ฐ ์ค์ํ๋ค.๋์ค์ ๋ณด๊ณ ์คํ ๋ฆฌ๋ฅผ ์์ฑํ ์ ์๋ค.S.A ์์ฑ์์ด์ด ํ๋ ์ ์์ฑERD Diagram ์์ฑAPI ๋ช ์ธ์ ์์ฑ ์ค๋ ํ๋ฃจ ์ ๋ฆฌ โ๏ธ์ค๋๋ถํฐ ํ ํ๋ก์ ํธ๊ฐ ์์๋์๋ค.๋ฐฐ๋ฌ์ฑ์ ์ฐธ๊ณ ํด์ API๋ฅผ ๋ง๋๋ ๊ฒ์ด ์ฃผ์ ์๋ค.๋จผ์ ERD๋ฅผ ์์ฑํ๊ณ ์์ด์ดํ๋ ์์ ์์ฑํ๋ค. ์์ด์ดํ๋ ์๊ณผ ERD๋ฅผ ์์ฑํ๋ฉด์ ์ด๋ฒ ํ๋ก์ ํธ๊ฐ ์๊ฐ๋ณด๋ค ์ปค์ง ๋๋์ด์๋ค..๊ทธ๋์ ๋ด๊ฐ ๋งก์ ๋ถ๋ถ์ ํด๋ผ ์ ์์๊น..?๋ผ๊ณ ์๊ฐํ์ง๋ง ๊ทธ๊ฒ๋ ์ ์ ๋์์ ๋ฅ์น ์์ด์ดํ๋ ์์ ์์ฑํ๋ ๊ฒ์ ์ง์คํ๋ค.์คํ์๋ 5๋ถ ๊ธฐ๋ก ๋ณด๋ ์ธ์ ์ ํตํด ํ๋ก์ ํธ๋ฅผ ์งํํ๋ ๋์ ๊ธฐ๋กํ๋ ๊ฒ์ด ์ผ๋ง๋ ์ค์ํ ๊ฒ์ธ์ง ๊นจ๋ซ๋.. 2025. 1. 7. [ ํ๋ก๊ทธ๋๋จธ์ค/Java ] ๊ณผ์ผ ์ฅ์ ๋ฌธ์ ์ค๋ช https://school.programmers.co.kr/learn/courses/30/lessons/135808?language=java ํ๋ก๊ทธ๋๋จธ์คSW๊ฐ๋ฐ์๋ฅผ ์ํ ํ๊ฐ, ๊ต์ก, ์ฑ์ฉ๊น์ง Total Solution์ ์ ๊ณตํ๋ ๊ฐ๋ฐ์ ์ฑ์ฅ์ ์ํ ๋ฒ ์ด์ค์บ ํprogrammers.co.kr ๊ณผ์ผ ์ฅ์๊ฐ ์ฌ๊ณผ ์์๋ฅผ ํฌ์ฅํ๊ณ ์์ต๋๋ค. ์ฌ๊ณผ๋ ์ํ์ ๋ฐ๋ผ 1์ ๋ถํฐ k์ ๊น์ง์ ์ ์๋ก ๋ถ๋ฅํ๋ฉฐ, k์ ์ด ์ต์ํ์ ์ฌ๊ณผ์ด๊ณ 1์ ์ด ์ตํํ์ ์ฌ๊ณผ์ ๋๋ค. ์ฌ๊ณผ ํ ์์์ ๊ฐ๊ฒฉ์ ๋ค์๊ณผ ๊ฐ์ด ๊ฒฐ์ ๋ฉ๋๋ค. ํ ์์์ ์ฌ๊ณผ๋ฅผ m ๊ฐ์ฉ ๋ด์ ํฌ์ฅํฉ๋๋ค. ์์์ ๋ด๊ธด ์ฌ๊ณผ ์ค ๊ฐ์ฅ ๋ฎ์ ์ ์๊ฐ p (1 ≤ p ≤ k)์ ์ธ ๊ฒฝ์ฐ, ์ฌ๊ณผ ํ ์์์ ๊ฐ๊ฒฉ์ p * m์ ๋๋ค. ๊ณผ์ผ ์ฅ์๊ฐ ๊ฐ๋ฅํ ๋ง์ ์ฌ๊ณผ๋ฅผ ํ์์ ๋, .. 2025. 1. 7. [ TIL ] ์ฃผํน๊ธฐ ์ฌํ_Day 8 ์ค๋ ํ ๊ณต๋ถ ๐ง ๊ฐ์ธ ๊ณผ์ ๋ ๋ฒจ 5 - 2๊น์ง ๋ง๋ฌด๋ฆฌ ํ ์ ์ถ๊ณผ์ ํด์ค ์ธ์ ๋ฃ๊ธฐ์คํ ๋ค๋๋ฐ ์ธ์ ๋ฃ๊ธฐ์๊ฐ์ ๋ฏธ๋ ์ธ์ ๋ฃ๊ธฐTIL ๋ธ๋ก๊ทธ ์์ฑ ์ค๋ ์ป์ ๋ด์ฉ ์ ๋ฆฌ โ๏ธ ์คํ ๋ค๋๋ฐ ์ธ์ - AOPAOP: ๊ด์ ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ด๋ผ๊ณ ๋ ๋ถ๋ฅธ๋ค.ํน์ ํ ๋๋ฉ์ธ์ ์ข ์๋์ง ์๊ณ ๋ด๊ฐ ์ด๋ค ์์ ์ ์ผ๊ด์ ์ผ๋ก ๋ชจ๋ ์ ์ฉํด์ฃผ๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ค.๊ณ์ฐ๋ ๊ฒฐ๊ณผ๊ฐ์ ๋ํด์ ์ถ๋ ฅํด ์ฃผ๋ ๊ธฐ๋ฅ์ ์ถ๊ฐ → ๋ชจ๋๊ฐ ํ์๋ก ํ๋ ๊ธฐ๋ฅ → AOP๋ก ๋ง๋ค์ด์ ์ถ๊ฐํ๋ฉด ํธํ๋ค.๋ํ์ ์ผ๋ก ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๋ฉ์๋๊ฐ ์คํ๋์๋์ง ์คํ๋์ง ์์๋์ง ์ถ๋ ฅํด ์ฃผ๋ ๋ก๊ทธ๊ฐ๊ฐ์ ๋ฉ์๋๊ฐ ์ผ๋ง๋ ๊ฑธ๋ ธ๋์ง ์ฑ๋ฅ์ ๊ตฌํ ๋ ์ฌ์ฉํ ์ ์๋ค.๊ถํ ๊ฒ์ฌํ ๋ ์ฌ์ฉํ ์ ์๋ค.๊ทธ๋ ๋ค๋ฉด ์ด๋ค ๊ฒ์? ์ธ์ ? ์ด๋ป๊ฒ? → ์ง์ ํด์ค์ผ ํ๋ค.๋์ ์ง์ → PointCut์.. 2025. 1. 6. [ ํธ๋ฌ๋ธ ์ํ ] ์๋ จ CRUD ๊ธฐ๋ฐ์ ํ ์คํธ, ๊ฐ์ ๊ณผ์ ๊ณผ์ ํธ๋ฌ๋ธ ์ํ ๋ฌธ์ ์ํฉFilter์์ ๋ฐ์ํ๋ ์์ธ๋ฅผ GlobalExceptionHandler๋ฅผ ์ด์ฉํด์ ํด๊ฒฐํ๋ ค๊ณ ํ์ง๋ง, Postman์ ์คํํ์ ๋ 500 Internal Error๊ฐ ๋ฐ์ํ๋ค.๋ฌธ์ ์์ธ@RestControllerAdvice๋ Filter์์ ๋ฐ์ํ ์์ธ๋ฅผ ์ฒ๋ฆฌํ์ง ์๋๋ค.Filter๋ Controller๋ก ์์ฒญ์ด ์ ๋ฌ๋๊ธฐ ์ ์ ์คํ๋๊ธฐ ๋๋ฌธ์, @RestController๋ก ์ฒ๋ฆฌํ ์ ์๋ ์์ญ์ด๋ค.์ด๋ก ์ธํด ์์ธ๋ฅผ ์ฒ๋ฆฌํ์ง ๋ชปํ๊ณ 500 Internal Error๊ฐ ๋ฐํ๋์๋ค.ํด๊ฒฐ ๋ฐฉ๋ฒFilter ๋ด์์ ์ง์ HTTP ์ํ ์ฝ๋์ ์๋ฌ ๋ฉ์์ง๋ฅผ ์ค์ ํด์ ์๋ตํ๋๋ก ์์ ํ๋ค.์์ ๋ ์ฝ๋if (session == null || session.getAttribute("loginM.. 2025. 1. 6. [ Spring ] ํธ๋์ญ์ .. ๋ค๊ฐ๊ฐ์๋ก ๋ฉ๊ฒ ๋๊ปด์ง๋ ์น๊ตฌ ํธ๋์ญ์ ์ด๋ ๊ณผ์ฐ ๋ฌด์์ผ๊น??ํ๋์ ์์ ๋จ์๋ฅผ ๋ ผ๋ฆฌ์ ์ผ๋ก ๋ฌถ์ด์ฃผ๋ ์ญํ ์ ํด์ค๋ค!์ด๋ฅผ ํตํด์ ๋ฐ์ดํฐ ๋ฒ ์ด์ค์ ACID ์์ฑ์ ์งํฌ ์ ์๋๋ก ํ๋ค! (๋ฉด์ ์์ ๋์ค๋ ํ์ ์ง๋ฌธ์ด๋ค!!)์์์ฑ (Atomicity)์์ ์ด ๋ชจ๋ ์ฑ๊ณตํ๊ฑฐ๋, ํ๋๋ผ๋ ์คํจํ๋ฉด ์ ์ฒด๋ฅผ ๋กค๋ฐฑํ๋ค.ex) ์ก๊ธ ์, ๋์ด A ๊ณ์ข์์ ๋น ์ก์ง๋ง B ๊ณ์ข๋ก ๋ค์ด๊ฐ์ง ์์ผ๋ฉด ๋กค๋ฐฑํ๋ค.์ผ๊ด์ฑ (Consistency)์์ ์ ํ์ ๋ฐ์ดํฐ ์ํ๊ฐ ํญ์ ์ ํจํ๋๋ก ๋ณด์ฅํ๋ค.๊ฒฉ๋ฆฌ์ฑ (Isolation)ํธ๋์ญ์ ๊ฐ ์๋ก ๊ฐ์ญํ์ง ์๋๋ก ๊ฒฉ๋ฆฌ ์์ค์ ์ค์ ํ ์ ์๋ค.์ต์ ์ ๋ฐ๋ผ์ ์ค์ ์ ์ด๋ฆฌ์ ๋ฆฌ ์ ํ ์ ์๋ค.์ง์์ฑ (Durability)ํธ๋์ญ์ ์ด ์ฑ๊ณตํ๋ฉด ๊ฒฐ๊ณผ๊ฐ ์๊ตฌ์ ์ผ๋ก ๋ฐ์๋๋ค.โถ MySQL์ ๋ง๋ค ๋ ์ด ์์น์ ๋ชจ๋ ๊ณ ์ํด์ ๋ง๋ค์ด ๋จ๋ค. ์์ผ.. 2025. 1. 5. [ TIL ] ์ฃผํน๊ธฐ ์ฌํ_Day 5 ์ค๋ ํ ๊ณต๋ถ ๐ง ๊ฐ์ธ ๊ณผ์ 3๋จ๊ณ ๋๋ด๊ธฐ๊ฐ์ธ ๊ณผ์ 4๋จ๊ณ ๋์ ์คํ ๋ค๋๋ฐ ํธ๋์ญ์ ์ธ์ ๋ณต์ตTIL ๋ธ๋ก๊ทธ ์์ฑ ์ค๋ ์ป์ ๋ด์ฉ ์ ๋ฆฌ โ๏ธ Lv 3. ์ถ๊ฐ ๊ธฐ๋ฅ ๊ฐ์ ๋จผ์ ์ฃผ์ด์ง GitHub Repository๋ก ๋ค์ด๊ฐ์ Fork ๊ธฐ๋ฅ์ ํ์ฉํด์ ๋ด Repository๋ก ๋ณต์ฌํด์ ๊ฐ์ ธ์จ๋ค.1. ์ฝ๋ ๊ฐ์ ํด์ฆ: Early Return์กฐ๊ฑด์ ๋ง์ง ์๋ ๊ฒฝ์ฐ ์ฆ์ ๋ฆฌํดํด์, ๋ถํ์ํ ๋ก์ง์ ์คํ์ ๋ฐฉ์งํ๊ณ ์ฑ๋ฅ์ ํฅ์์ํจ๋ค.AuthService ํด๋์ค ์์ ์๋ signup( ) ๋ฉ์๋ ๋ด์ ์ฝ๋ ์ผ๋ถ์ ์์น๋ฅผ ๋ฆฌํฉํ ๋งํด์ passwordEncoder์ encode() ๋์์ด ๋ถํ์ํ๊ฒ ์ผ์ด๋์ง ์๊ฒ ์ฝ๋๋ฅผ ๊ฐ์ ํ ์ ์์๋ค.if (userRepository.existsByEmail(signupRequest... 2025. 1. 3. ์ด์ 1 ยทยทยท 6 7 8 9 10 11 12 ยทยทยท 34 ๋ค์