Banner

My Tech Blog (ํŽ˜์ด์ง€)

์˜ค๋Š˜์˜ ๋ช…์–ธ
" 20๋…„ ํ›„, ๋‹น์‹ ์€ ํ•˜์ง€ ์•Š์€ ์ผ๋“ค ๋•Œ๋ฌธ์— ๋” ์‹ค๋งํ•  ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿฌ๋‹ˆ ์•ˆ๋ฝ์˜์ž๋ฅผ ๋ฒ—์–ด๋‚˜๋ผ. "
- ๋งˆํฌ ํŠธ์›จ์ธ (๋ฏธ๊ตญ ์ž‘๊ฐ€, ์œ ๋จธ๋ฆฌ์ŠคํŠธ)
โœ”๏ธ FIFO(First In First Out)๊ฐ€์žฅ ๋จผ์ € ๋“ค์–ด์˜จ ํŽ˜์ด์ง€๊ฐ€ ๊ฐ€์žฅ ๋จผ์ € ๊ต์ฒด๋œ๋‹ค. โœ”๏ธ LRU(Least Recently Used)๊ฐ€์žฅ ์˜ค๋žซ๋™์•ˆ ์‚ฌ์šฉ๋˜์ง€ ์•Š์€ ํŽ˜์ด์ง€๊ฐ€ ๊ต์ฒด๋œ๋‹ค. โœ”๏ธ LFU(Least  Frequently Used)๊ฐ€์žฅ ์ ๊ฒŒ ์ฐธ์กฐ๋œ ํŽ˜์ด์ง€๊ฐ€ ๊ต์ฒด๋œ๋‹ค.๋งŒ์•ฝ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํŽ˜์ด์ง€๊ฐ€ ๋™์ผํ•œ ์ฐธ์กฐ ํšŸ์ˆ˜๋ฅผ ๊ฐ€์ง€๋ฉด, ๊ฐ€์žฅ ์˜ค๋ž˜๋œ ํŽ˜์ด์ง€(FIFO ๋ฐฉ์‹) ๋ฅผ ์ œ๊ฑฐํ•œ๋‹ค. [FIFO]3๊ฐœ์˜ ํŽ˜์ด์ง€ ํ”„๋ ˆ์ž„(Frame)์„ ๊ฐ€์ง„ ๊ธฐ์–ต์žฅ์น˜์—์„œ ํŽ˜์ด์ง€ ์š”์ฒญ์„ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ ์ˆœ์œผ๋กœ ์š”์ฒญํ–ˆ์„ ๋•Œ ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ FIFO์˜ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ๋ช‡ ๋ฒˆ์˜ ํŽ˜์ด์ง€ ๋ถ€์žฌ(Fault)๊ฐ€ ๋ฐœ์ƒํ•˜๋Š”๊ฐ€? (๋‹จ, ํ˜„์žฌ ๊ธฐ์–ต์žฅ์น˜๋Š” ๋ชจ๋‘ ๋น„์–ด์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค.)์š”์ฒญ๋œ ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ์˜ ์ˆœ์„œ:2, 3, 2, 1, 5, 2,..
Spring ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ์„œ๋น„์Šค ๋ ˆ์ด์–ด์—์„œ ์ธํ„ฐํŽ˜์ด์Šค(*Mgr.java)์™€ ๊ตฌํ˜„ ํด๋ž˜์Šค(*MgrImpl.java)๊ฐ€ ๋ถ„๋ฆฌ๋˜์–ด ์žˆ์–ด, F3(Open Declaration)๋ฅผ ๋ˆŒ๋Ÿฌ๋„ ์ธํ„ฐํŽ˜์ด์Šค๋กœ๋งŒ ์ด๋™ํ•˜๋Š” ๋ถˆํŽธํ•จ์ด ์žˆ๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด Open Implementation ๊ธฐ๋Šฅ์„ ํ‚ค๋ณด๋“œ ๋‹จ์ถ•ํ‚ค(Ctrl + F3)๋กœ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌ ํ•ด ๋ณธ๋‹ค. ๐Ÿ”น ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•: Open Implementation ๋‹จ์ถ•ํ‚ค ์„ค์ •ํ•˜๊ธฐ 1. Eclipse ํ™˜๊ฒฝ์„ค์ • Window โ†’ Preferences (๋˜๋Š” Alt + W, P)2. ์ขŒ์ธก ๋ฉ”๋‰ด์—์„œ General โ†’ Keys ์„ ํƒ3. "Open Implementation" ๋‹จ์ถ•ํ‚ค ์ง€์ • type filter text์— Open Implementation ์ž…๋ ฅ Binding(๋‹จ์ถ•..
โš ๏ธ ๋ฌธ์ œ๊ณต๋ฌธ ํ‘œ์ง€ ํŽ˜์ด์ง€์˜ ์—ฌ๋ฐฑ๊ณผ ์ฒจ๋ถ€๋ฌผ ํŽ˜์ด์ง€์˜ ์—ฌ๋ฐฑ์„ ๋‹ค๋ฅด๊ฒŒ ์„ค์ •ํ•˜๊ณ  ์‹ถ์„ ๋•Œ?์ฆ‰, ํŠน์ • ํŽ˜์ด์ง€๋งŒ ์—ฌ๋ฐฑ์„ ๋‹ค๋ฅด๊ฒŒ ์„ค์ •ํ•˜๊ณ  ์‹ถ์„ ๋•Œ๋Š” ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•˜๋Š”๊ฐ€? โšก ํ•ด๊ฒฐ๋ฒ•โœ… ํ•ด๋‹น ํŽ˜์ด์ง€๋งŒ ์—ฌ๋ฐฑ ๋ฐ”๊พธ๊ธฐ1. ํ•ด๋‹น ์ชฝ์˜ ๋งˆ์ง€๋ง‰์—์„œ ์—ฌ๋ฐฑ ๋‹ค๋ฅด๊ฒŒ ์„ค์ •ํ•˜๊ณ  ์‹ถ์€ ํŽ˜์ด์ง€ ์‹œ์ž‘ํ•˜๊ธฐ ์ „ ๋งˆ์ง€๋ง‰์ค„์—, Alt + Shift + Enter (๊ตฌ์—ญ๋‚˜๋ˆ„๊ธฐ)2. F7์„ ๋ˆŒ๋Ÿฌ์„œ ์—ฌ๋ฐฑ ์„ค์ • ์•„๋ž˜๋Š” ๋จธ๋ฆฌ๋ง 18.3mm, ๊ผฌ๋ฆฌ๋ง 4.9mm์˜ ์—ฌ๋ฐฑ์„ ์ค€ ์˜ˆ์‹œ์ด๋‹ค. (์—ฌ๋ฐฑ์ด ๋‹ค๋ฅธ ํŽ˜์ด์ง€๋ถ€ํ„ฐ๋Š” ์ขŒ์šฐ ์˜†๋ฉด์— โ†“ ํ™”์‚ดํ‘œ ์ƒ๊น€)
์˜ค๋Š˜ ์ผํ•˜๋‹ค๊ฐ€ ํ•œ๊ธ€ํŒŒ์ผ์— `ํ‘œ ์ค„๋†’์ด ์กฐ์ •`์ด ๊ฑธ๋ ค ์žˆ๋Š” ํŽ˜์ด์ง€ ๋•Œ๋ฌธ์— ํŽธ์ง‘์ด ํž˜๋“ค์–ด์„œ ํ†ต์งธ๋กœ ํŽ˜์ด์ง€๋ฅผ ๋ณต์‚ฌํ•˜๋Š” ๋ฒ•์„ ์ฐพ์•„๋ดค์Šต๋‹ˆ๋‹ค^_^ ํ•œ๊ธ€ ๋ฌธ์„œ ์ž‘์—…์„ ํ•˜๋‹ค ๋ณด๋ฉด ํ†ต์งธ๋กœ ํŽ˜์ด์ง€๋ฅผ ๋ณต์‚ฌํ•˜๊ณ  ์‹ถ์„ ๋•Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.์ œ๊ฐ€ ์–ด๋–ป๊ฒŒ ํ•˜๋Š”์ง€ ์•Œ๋ ค๋“œ๋ฆด๊ฒŒ์š” ์›ํ•˜๋Š” ํŽ˜์ด์ง€ ํ†ต์งธ๋กœ ๋ณต์‚ฌ ๋ฐ ๋ถ™์—ฌ๋„ฃ๊ธฐ ํ•˜๋Š” ๋ฒ•[๋ณด๊ธฐ] - [์ž‘์—…์ฐฝ] - [์ชฝ ๋ชจ์–‘๋ณด๊ธฐ] ์ชฝ ๋ชจ์–‘ ๋ณด๊ธฐ๋ฅผ ํ™œ์„ฑํ™”ํ•˜๋ฉด ์šฐ์ธก์— ์‚ฌ์ด๋“œ ์˜์—ญ์ด ์ƒ๊ธฐ๊ณ  ํŽ˜์ด์ง€ ์ถ•์†ŒํŒ์ด ๋ณด์ž…๋‹ˆ๋‹ค. [์ชฝ ๋ณต์‚ฌํ•˜๊ธฐ] - [์ชฝ ๋ถ™์—ฌ๋„ฃ๊ธฐ]์ฃผ์˜์‚ฌํ•ญ์ชฝ ๋ถ™์ด๊ธฐ๋ฅผ ํ•  ๋•Œ ์„ ํƒํ•œ ํŽ˜์ด์ง€์˜ ๋‹ค์Œ ํŽ˜์ด์ง€๋กœ ๋ณต์‚ฌํ•œ ํŽ˜์ด์ง€๊ฐ€ ์ถ”๊ฐ€๋œ๋‹ค.
์ถœ๋ ฅํ•  ๋•Œ ์ œ๋ชฉ์„ ์œ„์— ๊ณ ์ •ํ•ด์„œ ๋งค ํŽ˜์ด์ง€๋งˆ๋‹ค ๋ฐ˜๋ณต ์ถœ๋ ฅ๋˜๊ฒŒ ํ•˜๋Š” ๋ฒ•์ƒ๋‹จ ๋ฆฌ๋ณธ๋ฉ”๋‰ดํŽ˜์ด์ง€ ๋ ˆ์ด์•„์›ƒ ํƒญํŽ˜์ด์ง€ ์„ค์ • ๊ทธ๋ฃน์—์„œ ์ธ์‡„ ์ œ๋ชฉ ๋ฒ„ํŠผ ํด๋ฆญ๋‚˜ํƒ€๋‚˜๋Š” ์ฐฝ์—์„œ ์‹œํŠธ ํƒญ ์„ ํƒ๋ฐ˜๋ณตํ•  ํ–‰์—์„œ ๊ณ ์ •ํ•˜๊ณ  ์‹ถ์€ ํ–‰์„ ์„ ํƒ์˜ˆ: $1:$1 โ†’ ์ฒซ ๋ฒˆ์งธ ํ–‰์„ ๋ฐ˜๋ณต์˜ˆ: $2:$3 โ†’ ๋‘ ๋ฒˆ์งธ์™€ ์„ธ ๋ฒˆ์งธ ํ–‰์„ ๋ฐ˜๋ณตํŽ˜์ด์ง€ ๋ ˆ์ด์•„์›ƒ์—์„œ "๋ฐ˜๋ณตํ•  ํ–‰"์„ ์ง€์ •ํ•  ๋•Œ๋Š” ์ ˆ๋Œ€์ฐธ์กฐ($) ํ˜•์‹์„ ์‚ฌ์šฉํ•ด์•ผ ํ•จ.์ ˆ๋Œ€์ฐธ์กฐ ์—†์ด 1:1์ฒ˜๋Ÿผ ์ž…๋ ฅํ•˜๋ฉด, ์—‘์…€์ด ์ด๋ฅผ ์ œ๋Œ€๋กœ ์ฒ˜๋ฆฌํ•˜์ง€ ๋ชปํ•˜๋ฏ€๋กœ ๊ผญ $๋ฅผ ๋ถ™์—ฌ ์‚ฌ์šฉํ•˜๊ธฐ๐Ÿ˜Š  ์ฐธ๊ณ ๋กœ ์—ด์ด ์•ˆ ๋งž์„ ๋•Œ๋Š” [์ธ์‡„] > [์„ค์ •] > [ํ•œ ํŽ˜์ด์ง€์— ๋ชจ๋“  ์—ด ๋งž์ถ”๊ธฐ] ์„ ํƒํ•˜์ž  ๊ทธ๋Ÿผ ์ถœ๋ ฅํ• ๋•Œ ํŽ˜์ด์ง€๋งˆ๋‹ค ์ œ๋ชฉ์ด ๋ถ™์–ด์„œ ๋‚˜์˜จ๋‹ค
1. BbsDAO ํด๋ž˜์Šค์— getBbs() ๋ฉ”์„œ๋“œ ๋งŒ๋“ค๊ธฐ `getBbs(int bbsID)` ๋ฉ”์„œ๋“œ๋Š” ํŠน์ • bbsID๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฒŒ์‹œ๊ธ€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์กฐํšŒํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•œ๋‹ค.์ฆ‰ ํ•˜๋‚˜์˜ ๊ธ€ ๋‚ด์šฉ์„ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๋ฉ”์„œ๋“œ์ด๋‹ค. ์ฒ˜์Œ์— ์ ์€ ์ฝ”๋“œ(ํ‹€๋ฆผ) public Bbs getBbs(int bbsID) { String SQL = "SELECT * FROM BBS WHERE bbsID = ?"; try (PreparedStatement psmt = conn.prepareStatement(SQL); ResultSet rs = psmt.executeQuery()) { psmt.setInt(1, bbsID); if (rs.next()) { ..
๊ธ€๋ชฉ๋ก๊ณผ ํŽ˜์ด์ง€๋„ค์ด์…˜(Pagination)๊ฒŒ์‹œ๋ฌผ์„ DB์—์„œ ๋ถˆ๋Ÿฌ์™€ ํ™”๋ฉด์— ํ‘œ์‹œํ•˜๋ ค๋ฉด ๊ฒŒ์‹œ๊ธ€ ๋ชฉ๋ก์„ ๊ฐ€์ ธ์˜ค๋Š” ์ž‘์—…๊ณผ ํŽ˜์ด์ง• ์ฒ˜๋ฆฌ ๋‘ ๊ฐ€์ง€๋ฅผ ๊ณ ๋ คํ•ด์•ผ ํ•œ๋‹ค. ๊ฒŒ์‹œ๊ธ€ ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ๋ฒˆ์— ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ์œ„ํ•ด ArrayList๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ DB์—์„œ ์ž‘์„ฑ์ž, ์ œ๋ชฉ ๋“ฑ ๊ฒŒ์‹œ๊ธ€์˜ ์ฃผ์š” ์ •๋ณด๋ฅผ ํฌํ•จํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค. ์ด ๋•Œ ์ค‘์š”ํ•œ ์ ์€ ํŽ˜์ด์ง• ์ฒ˜๋ฆฌ์ด๋‹ค. ํŽ˜์ด์ง• ์ฒ˜๋ฆฌ๋Š” ํ•œ ํŽ˜์ด์ง€์— ๋ช‡ ๊ฐœ์˜ ๊ฒŒ์‹œ๊ธ€์„ ๋ณด์—ฌ์ค„์ง€ ๊ฒฐ์ •ํ•˜๋Š” ๊ณผ์ •์ด๋ฉฐ, ์˜ˆ๋ฅผ ๋“ค์–ด ํ•œ ํŽ˜์ด์ง€์— ์ด 10๊ฐœ์˜ ๊ฒŒ์‹œ๊ธ€์„ ๊ฐ€์ ธ์˜ค๋„๋ก ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ ์˜ค๋Š˜์€ `BbsDAO`์— ํŠน์ • ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ(pageNumber)์— ํ•ด๋‹นํ•˜๋Š” ๊ฒŒ์‹œ๊ธ€ ๋ชฉ๋ก์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์„œ๋“œ โšก `getList(int pageNumber)`๋ฅผ ๋งŒ๋“ค์–ด ๋ณผ ๊ฒƒ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํŽ˜์ด์ง• ์ฒ˜๋ฆฌ์—์„œ ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ๋ฅผ ๊ธฐ์ค€์œผ..
์ƒ๋‹จ์œผ๋กœ