์‚ถ/F-Lab

Week 5

osean 2021. 6. 3. 04:00

Week 5
: ์ดํ•ดํ•˜๋Š”๋ฐ ํ•œ ์„ธ์›”


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

์ด๋ฒˆ ์ฃผ๋Š” Collection Framework์— ๋Œ€ํ•ด ์ง‘์ค‘์ ์œผ๋กœ ๊ณต๋ถ€ํ–ˆ๊ณ , Set๊ณผ Map ๊ทธ๋ฆฌ๊ณ  ์Šค๋ ˆ๋“œ์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ–ˆ๋‹ค.
(์Šค๋ ˆ๋“œ๋Š” ๋ง›๋ณด๊ธฐ ์Šคํ‘ผ์ •๋„๋งŒ)

1. Generic Type Erasure

๊ธฐ์กด์—๋Š” ํƒ€์ž… ์ฒดํฌ๋ฅผ ๋Ÿฐํƒ€์ž„ ์‹œ์ ์—์„œ ์ˆ˜ํ–‰ํ•ด์„œ ์ž˜๋ชป๋œ ํƒ€์ž…์œผ๋กœ ์บ์ŠคํŒ… ํ–ˆ์„ ๊ฒฝ์šฐ ClassCastException ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ ,
ํ•ด๋‹น ์˜ˆ์™ธ๋ฅผ ํ™•์ธํ•˜๋Š” ๊ณผ์ •์ด ์˜ค๋ž˜๊ฑธ๋ฆฌ๋Š” ๋“ฑ์˜ ๋‹จ์ ์ด ์กด์žฌํ–ˆ์—ˆ๋‹ค.
์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ Generic ๊ฐœ๋…์ด ์ถ”๊ฐ€๋˜๊ณ , Generic Type Erasure ๋ฅผ ํ†ตํ•ด ๊ฐ•ํ•œ ํƒ€์ž… ์ฒดํฌ๋ฅผ ์ปดํŒŒ์ผ ํƒ€์ž„์— ์ˆ˜ํ–‰ํ•˜๋ฏ€๋กœ์จ ๋Ÿฐํƒ€์ž„ ์ „์— ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ๋น ๋ฅด๊ฒŒ ๋ฌธ์ œ๋˜๋Š” ๋ถ€๋ถ„์„ ์ˆ˜์ • ํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ฐ์ฒด์˜ ์ œ๋„ค๋ฆญ์ด Bounded(<T extends Parent>, <T super Child>) ํƒ€์ž…์œผ๋กœ ์„ค์ •๋˜์–ด ์žˆ๋‹ค๋ฉด ์ปดํŒŒ์ผ ์‹œ Generic Type Erasure๊ฐ€ ๊ฐ•ํ•œ ํƒ€์ž… ์ฒดํฌ๊ฐ€ ์ผ์–ด๋‚˜๊ณ  ํƒ€์ž… ์ •๋ณด๋Š” ๋ฐ”์ดํŠธ ์ฝ”๋“œ ์ƒ์—์„œ ์‚ฌ๋ผ์ง„๋‹ค.
ํ•˜์ง€๋งŒ Un-Bounded ํƒ€์ž…์œผ๋กœ ์„ค์ •๋˜์–ด ์žˆ๋‹ค๋ฉด ์ปดํŒŒ์ผ๋Ÿฌ์— ์˜ํ•ด ํ•ด๋‹น ์ œ๋„ค๋ฆญ์„ Object๋กœ ๋ณ€๊ฒฝํ•˜๊ณ , ์—ฌ๊ธฐ์„œ ์ง์ ‘์ ์ธ ์บ์ŠคํŒ…์ด๋‚˜ Bridge Method๋กœ ์ œ๋„ค๋ฆญ์— ๋Œ€ํ•œ ํƒ€์ž…์„ ๋ช…์‹œํ•ด์ฃผ์ง€ ์•Š๋Š”๋‹ค๋ฉด ๊ฐ•ํ•œ ํƒ€์ž… ์ฒดํฌ์— ์˜ํ•ด ์ปดํŒŒ์ผ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค.

์ด๋ ‡๊ฒŒ Generic Type Erasure์— ์˜ํ•ด ์ปดํŒŒ์ผ ํƒ€์ž„์—์„œ ๊ฐ•ํ•œ ํƒ€์ž… ์ฒดํฌ๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ , ํ•ด๋‹น ๊ฐ์ฒด์˜ ํƒ€์ž… ์ •๋ณด๋ฅผ ๋ฐ”์ดํŠธ ์ฝ”๋“œ์— ๋‹ด์ง€ ์•Š๊ณ  ๋Ÿฐํƒ€์ž„ ์‹œ์ ์œผ๋กœ ๋„˜๊ธฐ๊ฒŒ ๋˜๋ฉด ๋Ÿฐํƒ€์ž„์—์„œ ํ•ด๋‹น ๊ฐ์ฒด์˜ ํƒ€์ž… ์ •๋ณด๋ฅผ ์•Œ ์ˆ˜๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋ฆฌ๊ณ  ์•Œ ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ClassCastException ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ด๋ฏธ ์ปดํŒŒ์ผ ๋‹จ๊ณ„์—์„œ ์ œ๋„ค๋ฆญ ํƒ€์ž… ์†Œ๊ฑฐ์— ์˜ํ•ด์„œ ํƒ€์ž… ์ฒดํฌ๊ฐ€ ๋๋‚ฌ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

+) Type Token์ด๋ž€?

 

2. Cache Algorithm

ํŽ˜์ด์ง€์™€ ํ”„๋ ˆ์ž„์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ผ์ •ํ•œ ํฌ๊ธฐ์˜ ๊ณต๊ฐ„์œผ๋กœ ๋‚˜๋ˆ„์–ด ๊ด€๋ฆฌํ•˜๋Š” ๋‹จ์œ„.
๐Ÿ“ ํŽ˜์ด์ง€ : ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ์— ํ• ๋‹น๋˜๋Š” ๋‹จ์œ„ ํ˜น์€ ์ผ์ •ํ•œ ํฌ๊ธฐ๋กœ ๋‚˜๋‰˜์–ด์ง„ ๋ธ”๋ก
๐Ÿ“ ํ”„๋ ˆ์ž„ : ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ์— ํ• ๋‹น๋˜๋Š” ๋‹จ์œ„ ํ˜น์€ ์ผ์ •ํ•œ ํฌ๊ธฐ๋กœ ๋‚˜๋‰˜์–ด์ง„ ๋ธ”๋ก

1) FIFO (First In, First Out)
์„ ์ž…์„ ์ถœ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ด์šฉํ•ด ํŽ˜์ด์ง€ ๊ต์ฒด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.
๋จผ์ € ๋“ค์–ด์˜จ ํŽ˜์ด์ง€๋ฅผ ๊ฐ€์žฅ ๋จผ์ € ๋นผ๊ณ , CPU์—์„œ ์š”์ฒญํ•œ Page Fault ํŽ˜์ด์ง€๋ฅผ ํ•ด๋‹น ์ž๋ฆฌ์— ๋„ฃ๋Š”๋‹ค.

2) LRU (Least Recently Used)
์ตœ๊ทผ๊นŒ์ง€ ๊ฐ€์žฅ ์˜ค๋žซ๋™์•ˆ ์‚ฌ์šฉ๋˜์ง€ ์•Š์€ ํŽ˜์ด์ง€๋ฅผ ์ œ์™ธ ๋Œ€์ƒ์—์„œ ์šฐ์„ ์ˆœ์œ„๋กœ ๋‘”๋‹ค.
์ด ๋•Œ, ๊ฐ ํŽ˜์ด์ง€ ๋งˆ๋‹ค ๊ณ„์ˆ˜๊ธฐ๊ฐ€ ์กด์žฌํ•ด ํ•ด๋‹น ํŽ˜์ด์ง€๊ฐ€ ์–ผ๋งˆ๋‚˜ ์ฐธ์กฐ๋˜์ง€ ์•Š์•˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.

3) LFU (Least Frequently Used)
์ตœ๊ทผ์— ๊ฐ€์žฅ ์ฐธ์กฐ๋œ ํšŸ์ˆ˜๊ฐ€ ์ ์€ ํŽ˜์ด์ง€๋ฅผ ์ œ์™ธ ๋Œ€์ƒ์˜ ์šฐ์„ ์ˆœ์œ„๋กœ ๋‘”๋‹ค.
๊ฐ ํŽ˜์ด์ง€๋งˆ๋‹ค ์ฐธ์กฐ ํšŸ์ˆ˜๋ฅผ ๊ธฐ์–ตํ•  ๋ณ€์ˆ˜๋ฅผ ๊ฐ–๊ฒŒํ•ด์„œ ์‚ฌ์šฉํ•  ๋•Œ ๋งˆ๋‹ค 1์”ฉ ์ฆ๊ฐ€ํ•˜์—ฌ ์ด๋ฅผ ๋น„๊ตํ•ด์„œ ์ œ์™ธ ๋Œ€์ƒ์„ ๋„์ถœํ•œ๋‹ค.

 

3. Set

Set ์ž๋ฃŒ๊ตฌ์กฐ๋Š” ์ˆœ์„œ์— ์ƒ๊ด€์—†์ด ์ค‘๋ณต์„ ์ œ๊ฑฐํ•˜์—ฌ ๊ฐ์ฒด ๋‚ด์— ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด๋Š”๋‹ค.
Java์—์„œ๋Š” HashSet, TreeSet, LinkedHashSet์ด ๋Œ€ํ‘œ์ ์ด๋‹ค.

๐Ÿ“HashSet
๋‚ด๋ถ€์ ์œผ๋กœ HashMap ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด ์ž‘๋™ํ•˜๋ฉฐ, ์ˆœ์„œ์— ์ƒ๊ด€์—†์ด ๊ฐ์ฒด์— ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด๋Š”๋‹ค.
HashMap์˜ ํ•ด์‹œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ด์šฉํ•ด ๋‹ด๊ธธ ๋ฐ์ดํ„ฐ์˜ ํ•ด์‹œ์ฝ”๋“œ ๊ฐ’์„ ํ†ตํ•ด ์ธ๋ฑ์Šค์— ์ ‘๊ทผํ•˜๋ฏ€๋กœ O(1)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง€์ง€๋งŒ,
ํ•ด์‹œ ์ถฉ๋Œ๋กœ ์ธํ•ด ํ•˜๋‚˜์˜ ์ธ๋ฑ์Šค์— ๋ฐ์ดํ„ฐ ์ ๋ฆผ ํ˜„์ƒ์ด ๋ฐœ์ƒํ•˜๋ฉด ์‹ฌํ•  ๊ฒฝ์šฐ O(h/n)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์งˆ ์ˆ˜๋„ ์žˆ๋‹ค.

๐Ÿ“TreeSet
๋‚ด๋ถ€์ ์œผ๋กœ TreeMap ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด ์ž‘๋™ํ•˜๋Š”๋ฐ, ์ด๋กœ ์ธํ•ด TreeSet์€ ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ > Red-Black ์ด์ง„ ํŠธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๋Š” ๊ฒƒ์— ์žˆ์–ด O(logN) ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง€๋Š”๋ฐ, ๋Œ€ํ‘œ์ ์ธ Set ๊ตฌํ˜„์ฒด ์ค‘์—์„œ ๊ฐ€์žฅ ๋Š๋ฆฐ ์„ฑ๋Šฅ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
ํ•˜์ง€๋งŒ LinkedList ์ฒ˜๋Ÿผ ๋…ธ๋“œ ๊ฐ„์˜ ์—ฐ๊ฒฐ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด๋Š” ์ˆœ์„œ๋Œ€๋กœ ์ €์žฅ๋œ๋‹ค.

 

4. Priority Queue (์šฐ์„ ์ˆœ์œ„ ํ)

์‚ฌ์‹ค Queue ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ๊ตฌํ˜„ํ•œ ํด๋ž˜์Šค์— ๋Œ€ํ•ด์„œ ๋งŽ์ด ์ฐพ์•„๋ณด์ง€๋Š” ๋ชปํ–ˆ๋‹ค.
๊ฐ„๋‹จํžˆ ์•Œ๊ณ  ์žˆ๋Š” ๊ฒƒ์€ ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ(Complete Binary Tree) ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ธฐ ๋•Œ๋ฌธ์— ํŠน์ • ์กฐ๊ฑด์— ์˜ํ•œ ์šฐ์„ ์ˆœ์œ„ ์ •๋ ฌ์— ์ด์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ, ๋Œ€ํ‘œ์ ์œผ๋กœ Heap ์ด ์žˆ๋‹ค.

๋ฉ˜ํ† ๋‹˜๊ป˜์„œ ๊ฒŒ์ž„์˜ ๋žญํ‚น ์‹œ์Šคํ…œ์„ ์˜ˆ์‹œ๋กœ ๋“ค์–ด์ฃผ์…จ๋Š”๋ฐ ์ •ํ™•ํžˆ ์™€๋‹ฟ์ง€๋Š” ์•Š์•„์„œ ์กฐ๊ธˆ ๋” ์ฐพ์•„๋ด์•ผ ํ•  ๊ฒƒ ๊ฐ™๋‹ค.
๋‚˜๋Š” ์ ์ ˆํ•œ ์˜ˆ์‹œ๊ฐ€ ๋– ์˜ค๋ฅด์ง€ ์•Š๋Š”๋ฐ ๋ฉ˜ํ‹ฐ๋‹˜๊ป˜์„œ ์Šค์ผ€์ฅด๋ง์—์„œ ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค๊ณ  ๋ง์”€ํ•ด์ฃผ์…จ๋‹ค. ํ•ด๋‹น ๋ถ€๋ถ„๋„ ์•Œ์•„๋ด์•ผ๊ฒ ๋‹ค!

+) Redis ์—์„œ๋Š” ์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ์ง€์›ํ•œ๋‹ค. ์™œ?

 

5. Hash Collision

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

๐Ÿ“ Separator Chining
ํ•ด์‹œ ์ถฉ๋Œ์ด ์ผ์–ด๋‚œ ๋ฐ์ดํ„ฐ๋ฅผ ํ•ด๋‹น ์ธ๋ฑ์Šค์— ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ์‹์„ ๋งํ•œ๋‹ค. Node ํด๋ž˜์Šค์˜ next ํ•„๋“œ๊ฐ€ ์ด์— ํ•ด๋‹นํ•œ๋‹ค.
๋งˆ์น˜ LinkedList ํด๋ž˜์Šค์ฒ˜๋Ÿผ ํ•ด์‹œ ์ถฉ๋Œ์ด ์ผ์–ด๋‚œ ์ธ๋ฑ์Šค์— ๋“ค์–ด์˜จ ์ˆœ์„œ๋Œ€๋กœ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ ‡๊ฒŒ Chaining๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒ ํ•  ๋•Œ๋Š” O(h/n)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„๋‹ค.

๐Ÿ“ Open Address
๋งŒ์•ฝ ๋ฉ”๋ชจ๋ฆฌ์— ๊ณต๊ฐ„์ด ๋‚จ์•„ ์žˆ๋‹ค๋ฉด ๋‚จ์€ ๊ณต๊ฐ„์„ ์ฐพ์•„ ํ•ด์‹œ ์ถฉ๋Œ์ด ์ผ์–ด๋‚œ ์ค‘๋ณต ๋ฐ์ดํ„ฐ๋ฅผ ๋นˆ ๊ณต๊ฐ„์— ๋‹ด๋Š”๋‹ค.
๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด ์ปค์ง€๋ฉด ์ปค์งˆ ์ˆ˜๋ก ๋‚จ์•„ ์žˆ๋Š” ๊ณต๊ฐ„์„ ์ฐพ๋Š” ํšจ์œจ์ด ๋–จ์–ด์ง€๋Š” ๋‹จ์ ์ด ์กด์žฌํ•œ๋‹ค.

+) Open Address ์— ๋Œ€ํ•œ ๋‚ด์šฉ์ด ์ž˜ ๊ธฐ์–ต๋‚˜์ง€ ์•Š๋Š”๋‹ค. ์กฐ๊ธˆ ๋” ์•Œ์•„๋ณด์ž!
++) ๊ทธ๋ฆฌ๊ณ  ๋ฉ˜ํ‹ฐ๋‹˜๊ป˜์„œ Rehashing ์ด๋ผ๋Š” ํ‚ค์›Œ๋“œ๋ฅผ ๋ง์”€ํ•ด์ฃผ์…จ๋Š”๋ฐ, ์ด๋Š” ์žฌํ•ด์‹ฑ์ด๋ผ๋Š” ์˜๋ฏธ๋กœ HashMap์€ Load Factor๋ผ๋Š” ๊ฐ’์„ ๊ฐ€์ง€๋Š”๋ฐ ํ˜„์žฌ ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ์˜ ์‚ฌ์šฉ๋Ÿ‰์ด Load Factor ๋งŒํผ ๋„๋‹ฌํ•˜๊ฒŒ ๋˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๋Š˜๋ฆฌ๊ณ  ๊ธฐ์กด ๋ฉ”๋ชจ๋ฆฌ์— ๋‹ด๊ธด ๋ฐ์ดํ„ฐ์˜ ํ•ด์‹œ์ฝ”๋“œ๋ฅผ ๋ฆฌํ•ด์‹ฑ ์ž‘์—…์„ ํ•˜์—ฌ ๋Š˜์–ด๋‚œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์— ์žฌํ• ๋‹น ํ•ด์ฃผ๋Š” ์ž‘์—…์„ ์˜๋ฏธํ•œ๋‹ค.

์ถ”๊ฐ€์ ์œผ๋กœ ๊ณต๋ถ€ํ•  ๋‚ด์šฉ๋“ค

๐Ÿ’ฅ Context-Switch

๐Ÿ’ฅ ๋™์‹œ์„ฑ ๋ฌธ์ œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• > Synchronized ์šฉ๋ก€ ์ฐพ์•„๋ณด๊ธฐ > ๋Œ€์šฉ๋Ÿ‰ ํŠธ๋ž˜ํ”ฝ์˜ ์ƒํ™ฉ์—์„œ ์š”์ฒญ์ด ๋ฐ€๋ฆฐ๋‹ค๋ฉด?

๐Ÿ’ฅ Atomic Operation, JNI(Java Native Interface)

๐Ÿ’ฅ  Thread Lock, Monitor

๐Ÿ’ฅ Semaphore Mutex

๐Ÿ“š Type Token

๐Ÿ“š ํŽ˜์ด์ง•๊ณผ ํ”„๋ ˆ์ž„์˜ ๊ฐœ๋…์— ๋Œ€ํ•ด์„œ ์ •ํ™•ํžˆ ํŒŒ์•…ํ•˜๊ธฐ


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

์–ผ๋ฅธ ์ž๋ฐ”์˜ ์‹ ์„ ๋๋‚ด์•ผ ๋‹ค์Œ ์ฑ…์œผ๋กœ ๋„˜์–ด๊ฐ€๋Š”๋ฐ ๋‚˜๋Š” ์™œ์ด๋ ‡๊ฒŒ ์ดํ•ด๊ฐ€ ๋”๋”˜์ง€..๐Ÿ˜ฟ
๊ทธ๋ž˜๋„ ์ง€๊ธˆ๊นŒ์ง€ ์ด๋ ‡๊ฒŒ ์ดํ•ด ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š”๊ฒŒ ๋‚˜๋ฆ„์˜ ๋‹คํ–‰์ธ ๊ฒƒ ๊ฐ™๋‹ค..!
์ด์ œ ์ž๋ฐ”์˜ ์‹ ์„ ๋ฆฌ๋ทฐํ•  ์ฃผ์ฐจ๋„ ์–ผ๋งˆ ์•ˆ๋‚จ์•˜๋Š”๋ฐ, ๋” ์น˜์—ดํ•˜๊ฒŒ ๊ณต๋ถ€ํ•ด์•ผ๊ฒ ๋‹ค!

'์‚ถ > F-Lab' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Week 7  (0) 2021.06.18
Week 6  (0) 2021.06.11
Week 4  (0) 2021.05.27
Week 3  (0) 2021.05.20
Week 2  (0) 2021.05.13