[Redis] springboot + Redis cache(์กฐํšŒ)
ยท
Languages | Frameworks/Spring
๐Ÿ’ก๋ฌธ๋“ ๋˜‘๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ํŽ˜์ด์ง€ ํ˜ธ์ถœ ์‹œ ๋งˆ๋‹ค DB์— ์ ‘๊ทผํ•ด์„œ ๊ฐ€์ ธ์˜จ๋‹ค๋ฉด, ์„ฑ๋Šฅ ์ด์Šˆ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์ง€ ์•Š์„๊นŒ? ๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค.(๋ฐ์ดํ„ฐ ์ˆ˜๊ฐ€ ๋งŽ์„ ๋•Œ) ๊ทธ๋ž˜์„œ In-memory ๊ธฐ๋ฐ˜์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ธ Redis๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ๋ถˆ๋Ÿฌ์˜จ๋‹ค๋ฉด ์„ฑ๋Šฅ ๊ฐœ์„ ์„ ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์•˜๋‹ค. (TTL ์„ค์ •์„ ํ†ตํ•œ ํœ˜๋ฐœ์„ฑ ๋ฐ์ดํ„ฐ ์ €์žฅ) ๋˜ํ•œ, Springboot์—์„œ๋Š” Redis์™€ ์—ฐ๋™ํ•˜๊ธฐ ์œ„ํ•œ library๋„ ์ง€์›ํ•ด์ฃผ๊ณ , cache ๊ธฐ๋Šฅ๋„ ์ง€์›ํ•œ๋‹ค๊ณ  ํ•œ๋‹ค. Springboot์—์„œ Redis๋ฅผ ํ™œ์šฉํ•˜์—ฌ cache ๊ธฐ๋Šฅ์„ ์„ค๊ณ„ํ•˜๊ธฐ ์œ„ํ•œ ์ „๋žต์€ [Redis] ์บ์‹œ ์„ค๊ณ„ ์ „๋žต ์ง€์นจ์„ ์ฐธ๊ณ ํ•˜์ž. ์ด์ œ ์•„๋ž˜๋ฅผ ํ†ตํ•ด Spring boot์— Redis๋ฅผ ์—ฐ๋™ํ•˜๊ณ , cache๋„ ์‚ฌ์šฉํ•ด๋ณด๋„๋ก ํ•˜์ž! 1. ๋ ˆ๋””์Šค ์—ฐ๋™ํ•˜๊ธฐ(์˜์กด์„ฑ ..
[QueryDSL] N + 1 ํ˜„์ƒ ํ•ด๊ฒฐ ๊ณผ์ •
ยท
Languages | Frameworks/Spring
๋ฌธ์ œ์  poi_basic ํ…Œ์ด๋ธ” ๋งŒ์„ ์กฐํšŒํ•˜๋ คํ–ˆ๋Š”๋ฐ, ์•„๋ž˜์™€ ๊ฐ™์ด N + 1 ํ˜„์ƒ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ์—ˆ๋‹ค. ํ˜„์ƒํ™ฉ poi_basic ํ…Œ์ด๋ธ”๊ณผ poi_facility ํ…Œ์ด๋ธ”์€ OneToOne๊ด€๊ณ„์ด๋‹ค. Entity๋กœ DB ์กฐํšŒ ํ…Œ์ด๋ธ” ์กฐํšŒ ์ฝ”๋“œ ๊ณ ์ฐฐ ๊ทธ๋ ‡๋‹ค๋ฉด ์™œ OneToOne๊ด€๊ณ„์—์„œ N+1 ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋Š”์ง€ ์ƒ๊ฐํ•ด๋ณด์•˜๋‹ค. ๋ถ„๋ช… ์–‘์ชฝ ํ…Œ์ด๋ธ”์— ์ง€์—ฐ๋กœ๋”ฉ(Lazyloading)์„ ์„ค์ •ํ–ˆ์—ˆ๋Š”๋ฐ, ์ง€์—ฐ๋กœ๋”ฉ์ด ์ œ๋Œ€๋กœ ์ ์šฉ๋˜์ง€ ์•Š์•˜๋˜ ๊ฒƒ์ด๋‹ค. ์ž ๊ทธ๋Ÿผ ์™œ N+1์ด ๋ฐœ์ƒํ•˜๋Š”์ง€ ์•Œ์•„๋ณด์ž. N+1์ด ๋ฐœ์ƒํ•˜๋Š” ์ด์œ ๋Š” ํ”„๋ก์‹œ ์ดˆ๊ธฐํ™”๊ฐ€ ์ผ์–ด๋‚ฌ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด, ์•„๋ž˜์™€ ๊ฐ™์€ ํ…Œ์ด๋ธ” ์—ฐ๊ด€๊ด€๊ณ„๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•˜์ž. Q. [Order_Item]ํ…Œ์ด๋ธ”์„ ์กฐํšŒํ•˜๋Š”๋ฐ [Order]ํ…Œ์ด๋ธ”๊ณผ [Product]๋ฅผ ํ•ญ์ƒ ํ•จ๊ป˜ ์กฐํšŒํ•ด์•ผ ํ•˜๋‚˜? ๋‹ต์€ โ€œNoโ€..
[๋ฐฑ์ค€] 1563๋ฒˆ: ๊ฐœ๊ทผ์ƒ(Java)
ยท
Algorithm/BaekJoon
Notion์— ์ •๋ฆฌํ•œ ๊ธ€์„ ์˜ฎ๊ธด ๊ฒƒ์ž…๋‹ˆ๋‹ค. 1563๋ฒˆ: ๊ฐœ๊ทผ์ƒ ๋ฐฑ์ค€์ค‘ํ•™๊ต์—์„œ๋Š” ํ•™๊ธฐ๊ฐ€ ๋๋‚  ๋ฌด๋ ต์— ์ถœ๊ฒฐ์‚ฌํ•ญ์„ ๋ณด๊ณ  ๊ฐœ๊ทผ์ƒ์„ ์ค„ ๊ฒƒ์ธ์ง€ ๋ง ๊ฒƒ์ธ์ง€ ๊ฒฐ์ •ํ•œ๋‹ค. ์ด ํ•™๊ต๋Š” ์ด์ƒํ•ด์„œ ํ•™์ƒ๋“ค์ด ํ•™๊ต๋ฅผ ๋„ˆ๋ฌด ์ž์ฃผ ๋น ์ง€๊ธฐ ๋•Œ๋ฌธ์—, ๊ฐœ๊ทผ์ƒ์„ ์ฃผ๋Š” ์กฐ๊ฑด์ด ์กฐ๊ธˆ ๋… www.acmicpc.net ๋ฌธ์ œ ํ’€์ด ์™„์ „ํƒ์ƒ‰์„ ์ด์šฉํ•ด์•ผํ•˜์ง€๋งŒ, ์™„์ „ํƒ์ƒ‰๋งŒ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ O(3^1000)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ์žฌ๊ท€์  ์ ‘๊ทผ(DFS) + dp โ‡’ dp์˜ bottom-up๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ํ’€์—ˆ๋‹ค. ์ด ๋ฌธ์ œ์˜ ํ•ต์‹ฌ์€ ์ ํ™”์‹์„ ์ฐพ๋Š” ๊ฒƒ์ธ๋ฐ, ๊ฐ„๋‹จํ•œ ์˜ˆ๋ฅผ ํ†ตํ•ด ์•Œ์•„๋ณด์ž. ํ•œ ํ•™๊ธฐ๋ฅผ 3์ผ์ด๋ผ๊ณ  ํ•˜์ž. ์ง€๊ฐ(late)๋Š” 2์ผ ์ด์ƒ์ด๋ฉด ์•ˆ๋˜๊ณ , ๊ฒฐ์„(absent)์€ ์—ฐ์† 3์ผ ์ด์ƒ์ด๋ฉด ์•ˆ๋œ๋‹ค. dp[idx][late][absent] 3..
[์•Œ๊ณ ๋ฆฌ์ฆ˜] ํˆฌํฌ์ธํ„ฐ(Two Pointer) ์•Œ๊ณ ๋ฆฌ์ฆ˜
ยท
Algorithm/KBro Study
ํˆฌํฌ์ธํ„ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฆฌ์ŠคํŠธ๋‚˜ ๋ฐฐ์—ด์— ์ˆœ์ฐจ์ ์œผ๋กœ ์ ‘๊ทผํ•ด์•ผ ํ•  ๋•Œ, ๋‘ ๊ฐœ์˜ ์ ์˜ ์œ„์น˜๋ฅผ ๊ธฐ๋กํ•˜๋ฉด์„œ ์ฒ˜๋ฆฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ 1. ์›๋ฆฌ 1. ์‹œ์ž‘์ ๊ณผ ๋์ ์ด ์ฒซ๋ฒˆ์งธ ์›์†Œ์˜ ์ธ๋ฑ์Šค๋ฅผ ๊ฐ€๋ฅดํ‚ค๋„๋ก ํ•œ๋‹ค. 2. ๋ชฉํ‘œ๊ฐ’ ๋ณด๋‹ค ์‹œ์ž‘์  ์ธ๋ฑ์Šค๋ถ€ํ„ฐ ๋์ ์˜ ์ธ๋ฑ์Šค๊นŒ์ง€์˜ ๊ฒฐ๊ณผ๊ฐ’์ด ์ž‘์œผ๋ฉด ๋์ (end)๋ฅผ 1 ์ฆ๊ฐ€์‹œํ‚จ๋‹ค. 3. ๋ชฉํ‘œ๊ฐ’ ๋ณด๋‹ค ์‹œ์ž‘์  ์ธ๋ฑ์Šค๋ถ€ํ„ฐ ๋์ ์˜ ์ธ๋ฑ์Šค๊นŒ์ง€์˜ ๊ฒฐ๊ณผ๊ฐ’์ด ํฌ๊ฑฐ๋‚˜ ๊ฐ™์œผ๋ฉด ์‹œ์ž‘์ (start)๋ฅผ 1 ์ฆ๊ฐ€์‹œํ‚จ๋‹ค. 4. ๋ชจ๋“  ๊ฒฝ์šฐ๋ฅผ ํ™•์ธํ•  ๋•Œ๊ฐ€์ง€ 2~3๋ฒˆ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•œ๋‹ค. 2. ์˜ˆ์ œ ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด ์•Œ์•„๋ณด์ž. ํˆฌํฌ์ธํ„ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๋Œ€ํ‘œ์ ์ธ ๋ฌธ์ œ์ธ ํŠน์ •ํ•œ ํ•ฉ์„ ๊ฐ€์ง€๋Š” ๋ถ€๋ถ„ ์—ฐ์† ์ˆ˜์—ด ์ฐพ๊ธฐ๋กœ ์•Œ์•„๋ณด์ž. ์•„๋ž˜์™€ ๊ฐ™์€ ์ˆ˜์—ด์ด ์žˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์—ฐ์†๋˜๋Š” ์ˆ˜์˜ ํ•ฉ์ด 5 ์ผ๋•Œ์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•ด๋ณด์ž. ํˆฌํฌ์ธํ„ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ..
[์•Œ๊ณ ๋ฆฌ์ฆ˜] LCS(์ตœ์žฅ ๊ณตํ†ต ๋ถ€๋ถ„ ์ˆ˜์—ด) & LIS(๊ฐ€์žฅ ๊ธด ์ฆ๊ฐ€ํ•˜๋Š” ๋ถ€๋ถ„ ์ˆ˜์—ด)
ยท
Algorithm/KBro Study
1. LCS๋ž€? Longest Common Subsequence์˜ ์•ฝ์ž์ด๋ฉฐ, ๋‘ ๋ฌธ์ž์—ด์„ ๋น„๊ตํ•  ๋•Œ ๊ณตํ†ต์ ์œผ๋กœ ๋‚˜ํƒ€๋‚˜๋Š” ๋ถ€๋ถ„ ์ˆœ์„œ๋“ค ์ค‘ ๊ฐ€์žฅ ๊ธด ๊ฒƒ์„ ๋งํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, 'ABCBDAB'์™€ 'BDCABA'์˜ LCS๋ฅผ ๊ตฌํ•ด๋ณด๋ฉด ABCBDAB BDCABA => 'BCBA'๊ฐ€ ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  LCS๋Š” ์ตœ์ ํ™”๋ฅผ ํ•ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ์ด๊ธฐ ๋•Œ๋ฌธ์—, ๋™์ ๊ณ„ํš๋ฒ•(DP)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ์•ผ ๊ฐ€์žฅ ํšจ์œจ์ ์œผ๋กœ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค. 1-1. ์ ‘๊ทผ ๋ฐฉ๋ฒ• & ์˜ˆ์‹œ ๋‘ ๋ฌธ์ž์—ด 'GCABCD' ๊ทธ๋ฆฌ๊ณ  'ABDCED'๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, LCS๋ฅผ ๊ตฌํ•˜๋Š” ์ง„ํ–‰๊ณผ์ •์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ์œ„ ๊ทธ๋ฆผ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋“ฏ์ด, {GCA}, {GCAB}, {GCABC}, {GCABCD}์™€ {A}๋ฅผ ๋น„๊ตํ•˜๋ฉด ๊ณตํ†ต ์ˆ˜์—ด์ด 1์ž„์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ์œ„ ๊ทธ๋ฆผ์€ {ABDCED} ..