์ ์ฒด ๊ธ
-
UTF-8์ ์ฌ์ค ์์ฒญ ์ ๋ช ํ UFO์๊ธฐ๋ก์ค 2025. 9. 25. 00:15
๐ฝ ํ์ฃ?๊ถฟ๏ฟฝ๋๏ฟฝ์ปดํจํฐ๋ฅผ ์ฌ์ฉ ํ๋ค๋ณด๋ฉด ์ข ์ข ๊ธ์๊ฐ ๊นจ์ง๋ ํ์์ ๋ง์ฃผํ ์ ์์ต๋๋ค.ํนํ ํน์ ๋ฌธ์๋ ํ๊ธ์ ๊ฒฝ์ฐ ์ธ๊ณ์ด ๊ฐ์ ๊ธฐํธ๋ก ๋ฐ๋์ด ๋ณด์ด๊ฒ ๋ฉ๋๋ค. ์ด ํ์์ '๋ฌธ์๋ฅผ ์ด๋ป๊ฒ ์ ์ฅํ๊ณ ํํํ ๊น' ๋ผ๋ ์ค๋ ์ปดํจํฐ ๊ณผํ์ ์ฃผ์ ๋ก ๋์ด๊ฐ๋๋ค. ์ด๋ฒ ๊ธ์์๋ ์ปดํจํฐ๊ฐ ๋ฌธ์๋ฅผ ๋ค๋ฃจ๋ ๋ฐฉ๋ฒ์ ๊ฐ๋ตํ๊ฒ ์์๋ณด๋ฉด์์๋ฌธ์ ์ธ๊ณ์ด๊ฐ ๊ณผ์ฐ ๋ฌด์์ธ์ง, ์ ๋ฐ์ํ๋์ง ๊ทธ ๊ด๋ จ์ฑ์ ๋ํด ์ดํด๋ณด๊ฒ ์ต๋๋ค.๐ ์ฐ์งํ๊ฒ ์ ์ฅํ๋ UTF-32์ ์์ผ์ ํ ์คํธ ํ์ผ์ ์ ์ฅํด๋ณด๊ฒ ์ต๋๋ค.์ ๋์ฝ๋๋ ํ์ฌ ํ ๊ธ์์ 4๋ฐ์ดํธ ์ ๋๋ค. ์๋ฅผ ๋ค์ด ์ซ์ 0~9๋ฅผ ์ ๋์ฝ๋๋ก ๋ํ๋ด๋ฉด?00000000 00000000 00000000 00110000 ~ 00000000 00000000 00000000 00111001์ด ๋ฉ๋๋ค. ์์ผ์ ์ ๋..
-
์ฐ๋ฆฌ๋ ์ด๋ฏธ AOP๋ฅผ ์๊ณ ์๋ค์คํ์ค 2025. 9. 9. 20:58
๐๐ซ ์ด๋ฏธ AOP๋ฅผ ์๊ณ ์๋ค์ฌ์ค ์ด๋ฏธ ์ฐ๋ฆฌ๋ AOP๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.๋จ์ํ ๋ถ๊ฐ๊ธฐ๋ฅ์ '๊ด์ ์ ๋ฐ๋ผ ๋๋๋ค'๋ผ๋ ๊ฐ๋ ์ ์๊ณ ์๋ค๋ ๋ป์ด ์๋๋๋ค.์ฐ๋ฆฌ๊ฐ ๋ชจ๋ฅด๋์ง์กฐ์ฐจ ๋ชจ๋ฅด๊ฒ ์์ฃผ ์ฌ์ฉํ๋ ์ฌ๋ฌ ์คํ๋ง ์ด๋ ธํ ์ด์ ๋ค์ด ๋ชจ๋ AOP ๊ธฐ๋ฐ ํ๋ก์ ๋์ ์์์ ๋์๊ฐ๊ณ ์์ต๋๋ค. @Transaction ๋ถ์ฌ์ ํธ๋์ญ์ ๊ด๋ฆฌํ๊ธฐ, @Async๋ก ๋น๋๊ธฐ ์คํํ๊ธฐ,@Valid๋ก ๊ฒ์ฆํ๊ธฐ ๋ฑ์คํ๋ง์์ ์์ฃผ ๋ง๋๋ ์ด๋ ธํ ์ด์ ๋๋ถ๋ถ์ด AOP ๊ธฐ๋ฐ ๋์์ ๋๋ค ๋ฐ๋ผ์ ์ฐ๋ฆฌ๊ฐ ์ง์ Aspect๋ฅผ ๋ง๋ ์ ์ด ์์ด๋์ฌ์ค ์คํ๋ง์ ์ฐ๋ ์๊ฐ ์์ฐ์ค๋ฝ๊ฒ AOP๋ฅผ ์ฌ์ฉํ๊ณ ์๋ ๊ฑฐ๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค. ์ด ๊ธ์์๋ ์ ๋ฉ์ง ์น๊ตฌ๋ค์ ๋ฉ์ง ๋์์ ๊ฐ๋จํ ๋ก๊น ๋์๊ณผ ์ปค์คํ ์ด๋ ธํ ์ด์ ์ผ๋ก ๋ง๋ค์ด ํ๋ด๋ด๋ณด๊ณ ๊ฐ์ ๋์์ผํ๋ ๋ ์๋ค์ ์ด..
-
๋์ ์์ฒญ ์ ํฉ์ฑ ๋ฌธ์ ์ Redis ๋ถ์ฐ๋ฝ์คํ์ค 2025. 9. 1. 19:49
๐ ๋์์ฑ์ ์ ์ดํด์ผ ํ๋ ์ด์ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ค ๋ณด๋ฉด ๊ฐ์ฅ ํํ ๋ง์ฃผ์น๋ ๋ฌธ์ ์ค ํ๋๊ฐ ๋์์ฑ ์ ์ด์ ๋๋ค.ํนํ ๋ค์์ ์์ฒญ์ด ๋์์ ๊ฐ์ ์์์ ์ฌ์ฉํ๋ ค ํ ๋ ์ ์ ํ ์ ์ด๊ฐ ์์ผ๋ฉด ๋ฐ์ดํฐ ๋ถ์ผ์น๊ฐ ๋ฐ์ํฉ๋๋ค. (ํฐ์ผ ์๋, ์ฌ๊ณ , ์ ์ฐฉ ์ ๋ฑ๋ฑ) ์์๋ฅผ ๋ค์ด๋ด ์๋ค. - A,B ๋ ์ฌ์ฉ์๊ฐ ๋์์ 'ํฐ์ผ 1์ฅ ๊ตฌ๋งค' ์์ฒญ์ ๋ณด๋์ต๋๋ค.- ํ์ฌ ๋จ์ ํฐ์ผ์ 1์ฅ์ ๋๋ค.- ๋ ์์ฒญ์ด ๊ฑฐ์ ๋์์ DB์์ 1์ ์ฝ๊ณ , ํฐ์ผ ์ฌ๊ณ ๋ฅผ ์ฐจ๊ฐํฉ๋๋ค(0์ผ๋ก ๊ฐฑ์ )--> ์์คํ ์์์ ๋ ์์ฒญ ๋ชจ๋ ์ฑ๊ณต์ด์ง๋ง ์ค์ ๋ก ๊ณ ๊ฐ์๊ฒ ์๋ชป๋ ์ ๋ณด๋ฅผ ์ ๊ณตํ๊ฒ ๋ฉ๋๋ค. ์ด๋ฐ ๋ฌธ์ ๋ฅผ ๋ง์ผ๋ ค๋ฉด ํ ์์ ์ ํ๋์ ์์ฒญ๋ง ๊ณต์ ๋๋ ์์์ ์์ ํ ์ ์๋๋ก ํด์ค์ผ ํฉ๋๋ค.์ด๋ฒ ๊ธ์์๋ ๋์ ์์ฒญ ๋ฌธ์ ์ ๋ํด Redis ๋ถ์ฐ๋ฝ์ ํ์ฉํ์ฌ ์ฌ..
-
์๋ํ๋ ์ด๋๊น์ง ์๋์ผ๋ก ํด์ฃผ๋๊ฒ ์ข์๊น?์๊ฐ๋ค 2025. 8. 20. 21:53
๐ซจ ๊ฐ์๊ธฐ ๊ทธ๋ฅ ๊ฑท๋ค๊ฐ ๋ ์๊ฐ์ฑ์ฉ ๊ณต๊ณ ์์ ํํ ๋ณด์ด๋ '์๋ํ' ๋ผ๋ ํค์๋๋ฅผ ๋ณด๋ฉฐ..์ปดํจํฐ๋ ๊ทธ ์์ฒด๋ก '์๋ํ ๋๊ตฌ' ์ธ๊ฐ? ๋ผ๋ ์ ์ ์๋ ์ ํฌ ์ฌ๊ณ ํ๋ก์ ์ํด ๋ ์ค๋ฅด๋ ๋ง์ ๋ง๊ตฌ๋ง๊ตฌ ์ ์ด๋ณด๊ณ ์ถ์ด์ก์ต๋๋ค. ์๋ํ?๊ฐ๋ฐ ๊ณต๋ถ๋ฅผ ํ๊ณ ์๋ ์ ์ฅ์์ ๊ฐ๋ฐ์๋ผ๋ ์ง์ ์ด ์ด๋ฐ ์ ๋ฌด์ ํนํ๋์ด์์ง ์๋๊ฐ ํ๋ ์๊ฐ์ด ๋ฌธ๋ ๋ค์์ต๋๋ค.์ ์ด์ ํ๋ก๊ทธ๋๋ฐ ์์ญ์ด๋ผ๋ ๊ฒ์ด, ๋๊ตฌ๋ฅผ ์ฌ์ฉํด์ ์๋ํ์ฒ๋ฆฌ๊ธฐ๊ณ(์ปดํจํฐ)๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ฒ์ด๋๊น์. ์ปดํจํฐ๋ผ๋ ๊ฒ์ด ์ ์ด์ ์ ๋๊ทธ๋ง๋ฅผ ํด๋ ํ๊ธฐ ์ํ ๊ธฐ๊ณ์ฅ์น์์ ๋น๋กฏ๋ ๊ฒ์ด๋ผ๊ณ ์๊ณ ์์ต๋๋ค.์์ฒญ๋ ์์ ๊ณ์ฐ์ ๋น ๋ฅด๊ฒ ํด๊ฒฐํด ์ฃผ๋ ๊ฒ, ์ฆ ์๊ฐํ ์๊ฐ๊ณผ ์๊ฐํ ์๋์ง๋ฅผ ๋ชจ๋ ์๋ตํด ์ฃผ๋ ๋๊ตฌ๋ก ๋ฐ๋ช ๋ ๊ฒ์ด๋ผ๊ณ ํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๊ด์ ์์ ๊ฐ๋ฐ์๋ผ๋ ์ง์ ์ ๋งค๋ ฅ์..
-
IDE์ ์์๋ฆฌ์ ๊ท ๊ธฐ์ธ์ฌ๋ณด์, "Lambda can be replaced ..."๊ธฐ๋ก์ค 2025. 8. 11. 01:58
๐ฅฃ IDE๊ฐ ๋์์ฃผ๋ ๋ฆฌํฉํ ๋ง ์ ์ ๋ฌธ๊ตฌIntelliJ IDEA ๊ฐ์ IDE๋ฅผ ์ฌ์ฉํ ๋ ์๋ฐ๋ก ๊ฐ๋ฐํ๋ค๊ฐ ๋๋ค์์ ์ฌ์ฉํ์ ๋,๋ค์๊ณผ ๊ฐ์ ์ ์์ ์ฝ๊ฒ ๋ณผ ์ ์์ต๋๋ค.์ด๋ IDE๊ฐ ๊ณง๋ฐ๋ก ๋ฐ์ค๊ณผ ํจ๊ป ์ ๊ฐ ์ด ์ฝ๋์ ์ฐธ๊ฒฌํ๊ธฐ ์์ํฉ๋๋ค. 'Lambda can be replaced with method reference' ๊ทธ๋ฆฌ๊ณ ์๋ ๋ณํ ์ ์๊น์ง ํด์ฃผ๋๋ฐ, ๋ค์๊ณผ ๊ฐ์ด ์ฝ๋๊ฐ ๋ฐ๋๊ฒ ๋ฉ๋๋ค. ๋ธ๊น ์ค, ๋ฐ๋ ๋ด์ฉ์ด ๊น๋ํด์ ๊ฝค ๋ง์์ ๋ญ๋๋ค.๊ทธ๋ฐ๋ฐ ์ด๊ฒ ์ด๋ค ์๋ฏธ๊ฐ ์๋ ๊ฑธ๊น์? ๊ฒ๋ณด๊ธฐ์๋ ๋จ์ง ์ฝ๋๋ฅผ ์งง๊ฒ ์ค์ฌ์ฃผ๋ ์ ์์ฒ๋ผ ๋ณด์ ๋๋ค.'์ง๊ธ ๋ ์งง๊ฒ ์ค์ผ ์ ์๋๋ฐ ์ ๊ทธ๋ ๊ฒ ํจ? ๋ด๊ฐ ๋ฐ๊ฟ์ค' ํ์ง๋ง ์ด ์์๋ฆฌ์ ๋ณํ ๊ธฐ๋ฅ์ ๋จ์ํ '์งง๊ฒ' ๋ง๋ค์ด์ฃผ๋ ค๊ณ ๋์ฐ๋ ๊ฒ์ด ์๋๋ผ์๋ฐ ๊ฐ๋ฐ์ ์ ๋ฐฐ๋๋ค์ด ์ค..
-
JPA ๋จ๋ฐฉํฅ ๋งคํ ์ ์ธ๋ํค๋ฅผ ๊ฑฐ๊พธ๋ก ์ฃผ๋ฉด ์ด๋ค ์ผ์ด?์คํ์ค 2025. 8. 7. 01:32
๐ฃ@OneToMany๋ก ์ ์ฐ๋ ์ด์ (@ManyToOne์ผ๋ก๋ง ๋งคํํ๋ ์ด์ )์ต์ค ์ค ์๋ฅ ํ๋ฝ์ ์ ์ ํจ์ ๋ฌ๋๊ณ ์.. ์์ํ๊ฒ ์ฌ์ด๋ ํ๋ก์ ํธ๋ฅผ ๋ง๋ค์ด๋ณด๊ณ ์์ต๋๋ค.์๋ฌด๋๋ ์ด๊ธฐ ์ธํ ์์ ๋ง์ ๊ณ ๋ฏผ์ ํ๊ฒ ๋๋๋ฐ,๋ค๋ฅธ ์ฌ๋๋ค์ ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์ด๋ค ์์ผ๋ก ์ค๊ณํ๋์ง ์ฟ๋ณผ ๊ฒธ ๊นํ๋ธ ์ผํ์ ๋ค์ด๊ฐ์ต๋๋ค. ๊ทธ๋ฌ๋ ์ค @OneToMany๋ก JPA ๋จ๋ฐฉํฅ ์ฐ๊ด์ ๋งบ์ด์ค ์ฝ๋๋ฅผ ๋ฐ๊ฒฌํ๋๋ฐ์,์๊ฐ ์๊ณ ์๋ ์ง์์ด ์๋ชป๋์ง๋ ์์๋์ง ํน์ ๋ชฐ๋๋ ๋ด์ฉ์ด ๋ ์๋์ง ํ๋ฒ ์ดํด๋ณผ ๊ฒธ ๊ฐ๋ ์ ์ฌ์ ๊ฒํด๋ณด๊ธฐ๋ก ํ์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก DB๋ฅผ ์ค๊ณํ ๋, N-side์ FK๋ฅผ ๋๋ ๊ฒ์ ๊ณต์์ฒ๋ผ ๋ฐฐ์ฐ๊ฒ ๋ฉ๋๋ค.๋ ผ๋ฆฌ์ ์ผ๋ก๋ N-side์ ์ฐธ์กฐํ ์ ์๋ ์๋จ์ ์ฃผ๋ ๊ฒ์ด ๋ง์ฃ (์๋ ๋๊ตฌํํ ์ํด์๋? ๋ฅผ ์๊ฐํด๋ณด๋ฉด..) ๊ทธ๋ฐ๋ฐ..
-
์ง์กฐ์ ์ ๊ฐ๊ฐ ๊ฐ์ถฐ์ง, record์ ์ฐ์ํ ์ํ ์์๋ณด๊ธฐ๊ธฐ๋ก์ค 2025. 7. 31. 20:28
๐ record๋ ์ ๋ฑ์ฅํ์๊นSpring Boot๋ก ๊ฐ๋ฐ์ ํ๋ค ๋ณด๋ฉด ๊ณ์ธต ๊ฐ ๋ฐ์ดํฐ ์ ๋ฌ์ด๋ API ์๋ต์ ๊ตฌ์ฑํ๋ ๋ชฉ์ ์ผ๋ก DTO ํด๋์ค๋ฅผ ์์ฑํ ์ผ์ด ๋ง์ต๋๋ค.์ด๋ ๋จ์ํ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๊ธฐ ์ํ ๊ฐ์ฒด ํ๋๋ฅผ ๋ง๋ค๊ธฐ ์ํด ์์ญ ์ค์ ์ฝ๋๋ฅผ ๋ฐ๋ณต ํ์ดํํด ๋ณธ ์ ์ด ์๋ค๋ฉด, record๋ ์์ฃผ ๋ฐ๊ฐ์ด ์น๊ตฌ๊ฐ ๋ ์ ์์ต๋๋ค.record๋ ๋ถ๋ณ ๊ฐ์ฒด๋ฅผ ๋ฐ๋ณต์ ์ธ ์ฝ๋ ์์ฑ ์์ด ๊ฐ๊ฒฐํ๊ฒ ํํํด์ค๋ค๋ ์ ์์ ๊ทธ ์ฅ์ ์ด ์ฝ๊ฒ ์ฒด๊ฐ๋ฉ๋๋ค.ํนํ ํ๋ ์๊ฐ ๋ง์ ์์ฑ์์ getter๋ฅผ ์ผ์ผ์ด ์์ฑํด์ผ ํ๋ ๊ฒฝ์ฐ, record์ ์ฅ์ ์ด ๋์ฑ ๋๋ ทํ๊ฒ ๋๊ปด์ง๋๋ค. ํ์ง๋ง record๋ฅผ ๋จ์ํ ํธ์์ฑ์ ์ ๊ณตํ๋ ๋ ์์ด๋ผ๊ณ ์๊ณ ์ฌ์ฉํ์๋ฉด ์ ๋ฉ๋๋ค.์ด ์น๊ตฌ๋ '๋ถ๋ณ ๊ฐ์ฒด๋ฅผ ๋ช ํํ๊ณ ์์ ํ๊ฒ' ๋ผ๋ ์์ ๋ง์ ์ ๋ ์ด ์์ต..
-
QueryDSL + DTO Projection ๋ค ๊ฐ์ง ๋ง ํผ๋จน์ด๋ณด๊ธฐ๊ธฐ๋ก์ค 2025. 7. 29. 02:04
๐ฅ QueryDSL + DTO Projection : ์ฐ๋จนx ๋ถ๋จนx ํผ๋จนoJPA์ ๋ค์ด๋ฐ ์ฟผ๋ฆฌ ๋ฉ์๋๋ ์ฌ์ฉ์ด ๊ฐํธํ์ง๋ง์กฐ๊ฑด์ด ๋ง๊ณ ๋ณต์กํด์ง์๋ก ๊ฐ๋ ์ฑ์ด ๋จ์ด์ง๊ณ ๋๋ฒ๊น ์ถ์ ์ด ์ด๋ ต์ต๋๋ค.List findTop10ByTeamNameAndAgeGreaterThanEqualAndStatusNotInOrderByCreatedAtDesc(String teamName, int age, List excludedStatuses); ๊ทธ๋์ ์ฟผ๋ฆฌ ๋ณ๊ฒฝ์ด๋ ์กฐ๊ฑด ์ถ๊ฐ๊ฐ ํ์ํ ์ํฉ์์๋ ์ด๋ฅผ ๋ณด์ํ๊ธฐ ์ํด@Query ์ด๋ ธํ ์ด์ ์ ํ์ฉํ JPQL ๋ฌธ์์ด ๊ธฐ๋ฐ ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๋ ๋ง์ต๋๋ค.@Query(""" SELECT m FROM Member m WHERE m.team.name = :teamName ..