๐ŸŒฑ ์œ„๋‹ˆ Log ๐ŸŒฑ

JWT๋ฅผ ํ™œ์šฉํ•œ ์ธ์ฆ ๊ณผ์ •๊ณผ ๊ตฌํ˜„

ํšŒ์›๊ฐ€์ž…์— ์ด์–ด ์ด์ œ ๋กœ๊ทธ์ธ์„ ๊ตฌํ˜„ํ•  ์ฐจ๋ก€์ด๋‹ค. ๋กœ๊ทธ์ธ์ด ๋ญ˜๊นŒ? ๋กœ๊ทธ์ธ ์‚ฌ์šฉ์ž๊ฐ€ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด ๋ณธ์ธ์ด ๋งž๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ณผ์ •์ด๋‹ค. ์‚ฌ์šฉ์ž๋Š” ์•„์ด๋””์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ์ธ์ฆ์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์ธ์ฆ์ด ์„ฑ๊ณตํ•˜๋ฉด ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ธ์ฆ์ด ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒ๋œ ํ›„ ์‚ฌ์šฉ์ž๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ชจ๋“  ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์„๊นŒ? ...

LRU(Least Recently Used)Cache ์•Œ๊ณ ๋ฆฌ์ฆ˜

์บ์‹œ๋Š” ๋ฐ์ดํ„ฐ๋‚˜ ๊ฐ’์„ ๋ฏธ๋ฆฌ ๋ณต์‚ฌํ•ด ๋†“๋Š” ์ž„์‹œ ์ €์žฅ์†Œ์ด๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ์ ‘๊ทผํ•˜๋Š” ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ๊ฒฝ์šฐ๋‚˜ ๊ฐ’์„ ๋‹ค์‹œ ๊ณ„์‚ฐํ•˜๋Š” ์‹œ๊ฐ„์„ ์ ˆ์•ฝํ•ด์•ผ ํ•  ๊ฒฝ์šฐ ์‚ฌ์šฉํ•œ๋‹ค. ์บ์‹œ์— ๋ฐ์ดํ„ฐ๋ฅผ ๋ฏธ๋ฆฌ ๋ณต์‚ฌํ•ด ๋†“์œผ๋ฉด ๊ณ„์‚ฐ์ด๋‚˜ ์ ‘๊ทผ ์—†์ด ๋” ๋น ๋ฅธ ์†๋„๋กœ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. LRU (Least Recently Used) ๊ฐ€์žฅ ์ตœ๊ทผ์— ์‚ฌ์šฉ๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ฑฐํ•˜๋Š”...

Backtracking

๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ํƒ์ƒ‰ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ธฐ๋ฒ• ๋ชจ๋“  ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ์˜ ์ˆ˜ ์ค‘์—์„œ ํŠน์ • ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๊ฒฝ์šฐ๋งŒ ํƒ์ƒ‰ํ•œ๋‹ค. ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜์ง€ ์•Š์œผ๋ฉด ์ด์ „ ๋‹จ๊ณ„๋กœ ๋Œ์•„๊ฐ€ ๋‹ค๋ฅธ ํ•ด๋ฅผ ํƒ์ƒ‰ํ•œ๋‹ค. ๋ถˆํ•„์š”ํ•œ ๊ฒฝ๋กœ๋ฅผ ๋นจ๋ฆฌ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์–ด, ํšจ์œจ์ ์ด๋‹ค. ํ•ด๋ฅผ ๋ถ€๋ถ„์ ์œผ๋กœ ๊ตฌ์„ฑํ•ด ๋‚˜๊ฐ€๋ฉด์„œ, ํ•ด๋‹น ํ•ด๊ฐ€ ์œ ๋งํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ํƒ์ƒ‰์„ ์ค‘๋‹จํ•˜๊ณ  ์ด์ „ ๋‹จ๊ณ„๋กœ ๋Œ์•„๊ฐ„๋‹ค. ...

HashMap์˜ ๊ตฌ์กฐ

ํ‚ค-๊ฐ’์˜ ์Œ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ ๊ฐ ํ‚ค๋ฅผ ํ•ด์‹œ ํ•จ์ˆ˜๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค์— ์ €์žฅํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€, ๊ฒ€์ƒ‰, ์‚ญ์ œ ๋“ฑ์˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ํ‚ค์˜ ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์œผ๋ฉฐ, ํ•˜๋‚˜์˜ ํ‚ค์— ํ•˜๋‚˜์˜ ๊ฐ’์ด ๋งคํ•‘๋œ๋‹ค. ํ•ด์‹œ ํ•จ์ˆ˜๋Š” ํ‚ค๋ฅผ ํ•ด์‹œ ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ HashMap์˜ ๋ฒ„ํ‚ท ์ธ๋ฑ์Šค๋ฅผ ์ •ํ•˜๋Š”๋ฐ, ์„œ๋กœ ๋‹ค๋ฅธ ๋‘ ๊ฐœ์˜ ํ‚ค๊ฐ€ ๊ฐ™์€ ํ•ด์‹œ ๊ฐ’์„ ๊ฐ–๋Š” ...

๋น„๋ฐ€๋ฒˆํ˜ธ ์œ ์ถœ ๋ฐฉ์ง€๋ฅผ ์œ„ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ ์ • ๋ฐ ์ฝ”๋“œ

๋น„๋ฏผ๋ฒˆํ˜ธ๋Š” ๋ณตํ˜ธํ™” ๋˜์ง€ ์•Š๋„๋ก ๋‹จ๋ฐฉํ–ฅ์œผ๋กœ ์•”ํ˜ธํ™” ๋˜์–ด์•ผ ํ•œ๋‹ค. ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋‹จ๋ฐฉํ–ฅ์œผ๋กœ ์•”ํ˜ธํ™”ํ•˜๋Š” ์ด์œ ๋Š” ๋ณตํ˜ธํ™”๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๊ฐœ์ธ ์ •๋ณด๊ฐ€ ์œ ์ถœ๋˜์–ด๋„ ์›๋ณธ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์‰ฝ๊ฒŒ ์•Œ์•„๋‚ผ ์ˆ˜ ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์•”ํ˜ธํ™” ๊ธฐ๋ฒ•์„ ์•Œ์•„๋ณด์ž. MDC์™€ MAC๊ฐ€ ์žˆ๋‹ค. ์ด ๋‘˜์˜ ์ฐจ์ด๋Š” ๋ญ˜๊นŒ Modification Detection C...

ํ‹ฐ์ผ“ํŒ… ์‹œ์Šคํ…œ์˜ ๋ชฉํ‘œ์™€ ์ค‘์  ์„ค๊ณ„ ์š”์†Œ

์ฃผ์ œ ์„ ์ • ์ด์œ  ์ฒซ์งธ, ์•ผ๊ตฌ ์˜ˆ๋งค ์‹œ์Šคํ…œ์„ ์ฃผ์ œ๋กœ ์„ ์ •ํ•œ ์ด์œ ๋Š” ๋‚ด๊ฐ€ ์•ผ๊ตฌ๋ฅผ ์ข‹์•„ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ํŠนํžˆ ์˜ฌํ•ด ์•ผ๊ตฌ์˜ ์ธ๊ธฐ๊ฐ€ ๋†’์•„์ง€๋ฉด์„œ, ๋‚˜ ๋˜ํ•œ ๊ฒฝ๊ธฐ๋ฅผ ๋ณด๋Ÿฌ ๊ฐ€๊ธฐ ์œ„ํ•ด ์˜ˆ๋งค๋ฅผ ์ž์ฃผ ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๊ตฌ๋‹จ๋งˆ๋‹ค ์˜ˆ๋งค ์‚ฌ์ดํŠธ๊ฐ€ ๋ถ„๋ฆฌ๋˜์–ด ์žˆ์–ด ๋งค์šฐ ๋ถˆํŽธํ–ˆ๋‹ค. ํ•œ ๊ณณ์—์„œ ๋ชจ๋“  ๊ตฌ๋‹จ์˜ ํ‹ฐ์ผ“์„ ์˜ˆ๋งคํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์–ผ๋งˆ๋‚˜ ํŽธ๋ฆฌํ• ๊นŒ ํ•˜๋Š” ์ƒ๊ฐ์ด ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ๊ณ„...

DI(Dependency Injection)

๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ๊ฐ์ฒด ๊ฐ„์˜ ์˜์กด์„ฑ์„ ์™ธ๋ถ€์—์„œ ์ฃผ์ž…ํ•˜์—ฌ ๊ฐ์ฒด ๊ฐ„์˜ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถ”๊ณ , ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์„ฑ๊ณผ ์œ ์—ฐ์„ฑ์„ ๋†’์ด๋Š” ํŒจํ„ด ์ด๋กœ์จ ๊ฐ์ฒด๊ฐ€ ์Šค์Šค๋กœ ์ง์ ‘ ์˜์กด์„ฑ์„ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ๊ด€๋ฆฌํ•˜๋Š” ๋Œ€์‹ , ์™ธ๋ถ€์—์„œ ํ•„์š”ํ•œ ์˜์กด์„ฑ์„ ์ฃผ์ž…๋ฐ›์•„์„œ ์‚ฌ์šฉํ•œ๋‹ค. ๊ฐ์ฒด๋Š” ์ž์‹ ์ด ์‚ฌ์šฉํ•  ๊ฐ์ฒด์˜ ๊ตฌํ˜„์„ ๋ชฐ๋ผ๋„ ๋˜๊ณ , ์ธํ„ฐํŽ˜์ด์Šค๋‚˜ ์ถ”์ƒ ํƒ€์ž…์— ์˜์กดํ•œ๋‹ค. ๊ฐ•ํ•ฉ ๊ฒฐํ•ฉ? ํ•œ ํด๋ž˜์Šค...

Supplier ์ธํ„ฐํŽ˜์ด์Šค์™€ LRU

Supplier ์ธํ„ฐํŽ˜์ด์Šค ์ž…๋ ฅ ๋งค๊ฐœ๋ณ€์ˆ˜ ์—†์ด ์ถœ๋ ฅ์„ ์ƒ์„ฑํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค Supplier ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๊ฐ’์„ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค. ์‚ฌ์šฉ ์‚ฌ๋ก€ 1. ์ง€์—ฐ ์ดˆ๊ธฐํ™” ๊ฐ์ฒด๋‚˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ง€์—ฐ ์ดˆ๊ธฐํ™”ํ•˜์—ฌ, ์‹ค์ œ๋กœ ํ•„์š”ํ•  ๋•Œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์„ฑ๋Šฅ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค. public class LazyInitializationExample { pri...

Stream API

Stream API ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋ฅผ ๊ฐ„๊ฒฐํ•˜๊ณ  ํšจ์œจ์ ์œผ๋กœ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” API Java8 ๋ถ€ํ„ฐ ๋„์ž…๋˜์–ด ์ปฌ๋ ‰์…˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ•จ์ˆ˜ํ˜•์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹ค. ๋ฐ์ดํ„ฐ ์†Œ์Šค(์ปฌ๋ ‰์…˜, ๋ฐฐ์—ด, I/O ์ฑ„๋„ ๋“ฑ)์—์„œ ํŒŒ์ดํ”„๋ผ์ธ ๋ฐฉ์‹์œผ๋กœ ์—ฐ์†์ ์ธ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ํŠน์ง• 1. ๋ถˆ๋ณ€์„ฑ ์ŠคํŠธ๋ฆผ์€ ๊ธฐ์กด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ , ์ƒˆ๋กœ์šด ์ŠคํŠธ๋ฆผ์„ ...

Lambda, Functional Interface ๋ฌด์Šจ ๊ด€๊ณ„

๋žŒ๋‹ค ํ‘œํ˜„์‹์€ ์ž๋ฐ”์˜ ๋ฉ”์„œ๋“œ๋ฅผ ํ•˜๋‚˜์˜ ์‹์œผ๋กœ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ํ‘œํ˜„ํ•œ ๊ฒƒ์ด๋‹ค. ์ด์ „์—๋Š” ์ž๋ฐ”์—์„œ ๋ฉ”์„œ๋“œ๋ฅผ ํ‘œํ˜„ํ•˜๋ ค๋ฉด ํด๋ž˜์Šค๋ฅผ ์ •์˜ํ•ด์•ผ ํ–ˆ์ง€๋งŒ, ์ž๋ฐ” 8 ๋ถ€ํ„ฐ ๋žŒ๋‹ค์‹์„ ์ด์šฉํ•ด ๋ฉ”์„œ๋“œ์˜ ์ด๋ฆ„๊ณผ ๋ฐ˜ํ™˜ ๊ฐ’์„ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ๊ณ , ์ด๋ฅผ ๋ณ€์ˆ˜์— ๋„ฃ์–ด ์ฝ”๋“œ๋ฅผ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ํ•œ๋‹ค. int add (int a, int b) { return a + b; } // ์•„๋ž˜์™€ ๊ฐ™...