๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ—ฃ๏ธ ์‹ ์ž… ์ธํ„ฐ๋ทฐ

(23)
์‹ ์ž… ๊ฐœ๋ฐœ์ž ๊ธฐ์ˆ ๋ฉด์ ‘ ์‹ค์ „ ๊ธฐ์ถœ : IOCP ๋ž€? ๋ฉด์ ‘๊ด€ : IOCP ์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด ์ฃผ์‹œ๊ฒ ์–ด์š”? ๋‚˜: ๋จผ์ €, IOCP์˜ ๋ชฉ์ ์€ ๋™์‹œ์— ์ˆ˜ํ–‰๋˜๋Š” ์Šค๋ ˆ๋“œ์˜ ์ƒํ•œ์„ ์„ค์ •ํ•ด์„œ CPU์˜ ์ž์›์„ ์ตœ๋Œ€ํ•œ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚˜: IOCP๋Š” Overlapped I/O๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด, ์ด๋ฅผ ๊ฐ์ง€ํ•ด์„œ ์‚ฌ์šฉ์ž์—๊ฒŒ ์•Œ๋ ค์ฃผ๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ๋ฉด์ ‘๊ด€ : Overlapped I/O๊ฐ€ ๋ญ”๊ฐ€์š”? ๋‚˜ : Overlapped I/O๋Š” I/O์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๋ฅผ Device Driver์— ๊ถŒํ•œ์„ ๋„˜๊น€์œผ๋กœ์„œ ๋ณ„๋„์˜ ์Šค๋ ˆ๋“œ ์—†์ด ๋น„๋™๊ธฐ๋กœ ๋‘˜ ์ด์ƒ์˜ ๋ฐ์ดํ„ฐ ์ „์†ก์„ ์ค‘์ฒฉ์‹œํ‚ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. Device Driver๋Š” ์ž‘์—…์„ ๋๋‚ด๋ฉด ์œ ์ € ๋ฒ„ํผ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ฑ„์›Œ๋„ฃ์œผ๋ฏ€๋กœ I/O์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๋ฅผ ์ค‘์ฒฉํ•ด์„œ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฉด์ ‘๊ด€ : Overlapped I/O์™€ Nonblock Socket..
์‹ ์ž… ๊ฐœ๋ฐœ์ž ๊ธฐ์ˆ ๋ฉด์ ‘ C++ : Cast ์—ฐ์‚ฐ์ž (๐Ÿ†š C) Dynamic_cast๊ฐ€ ๋‚ด๋ถ€์ ์œผ๋กœ ์—…, ๋‹ค์šด ์บ์ŠคํŒ…์ด ๊ฐ€๋Šฅํ•œ์ง€ ๊ฒ€์‚ฌํ•ด ์ค€๋‹ค๊ณ  ํ–ˆ๋Š”๋ฐ, C++์—์„œ C#์ฒ˜๋Ÿผ ๋ฆฌํ”Œ๋ ‰์…˜์ด ์—†๋Š”๋ฐ ์–ด๋–ป๊ฒŒ ๊ฐ€๋Šฅํ•œ๊ฐ€? ๊ฐ€์ƒํ•จ์ˆ˜ ํ…Œ์ด๋ธ”์„ ์ด์šฉํ•˜์—ฌ ์บ์ŠคํŒ…์ด ๊ฐ€๋Šฅํ•œ ์ž๋ฃŒ์ธ์ง€ ๊ฒ€์‚ฌํ•ฉ๋‹ˆ๋‹ค. C์—์„œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ (ํƒ€์ž…)๋ณ€์ˆ˜ ํ˜•์‹์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ์บ์ŠคํŒ… ๋ฐฉ์‹์€ ํƒ€์ž… ์•ˆ์ „์„ฑ์„ ์ œ๊ณตํ•˜์ง€ ์•Š์œผ๋ฉฐ, ์–ด๋– ํ•œ ํƒ€์ž…์˜ ๋ณ€ํ™˜๋„ ๊ฐ•์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. C ์บ์ŠคํŒ…์€ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ํƒ€์ž… ์˜ค๋ฅ˜๋ฅผ ์žก์•„๋‚ด์ง€ ๋ชปํ•  ์ˆ˜ ์žˆ์–ด ๋ฒ„๊ทธ๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค. int i = 3; double d = 3.5; cout ๊ฐ•์ œ ์บ์ŠคํŒ…์„ ์‚ฌ์šฉํ•˜๋ฉด ๋Ÿฐํƒ€์ž„์‹œ seg fault, runtime error ๋“ฑ ์˜ˆ๊ธฐ์น˜ ๋ชปํ•œ ์—๋Ÿฌ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š”๋ฐ ์ปดํŒŒ์ผ๋Ÿฌ๋”ด์—์„œ ์˜ค๋ฅ˜๋ฅผ ์žก์•„ ์ถ”ํ›„ ๋ฌธ์ œ๊ฐ€ ๋  ๊ฐ€๋Šฅ์„ฑ์„ ์ค„์—ฌ์ฃผ๋Š” ์ด์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์ƒ์†๊ด€๊ณ„์— ์žˆ์–ด..
์‹ ์ž… ๊ฐœ๋ฐœ์ž ๊ธฐ์ˆ ๋ฉด์ ‘ ์•Œ๊ณ ๋ฆฌ์ฆ˜ : ๋™์ ๊ณ„ํš๋ฒ• DP #include using namespace std; long long d[100]; long long fibo(int x){ if(x==1 || x==2){ return 1; } if(d[x]!=0){ return d[x]; } d[x]=fibo(x-1)+fibo(x-2); return d[x]; } int main(){ cout
์‹ ์ž… ๊ฐœ๋ฐœ์ž ๊ธฐ์ˆ ๋ฉด์ ‘ C++ ์†์ฝ”๋”ฉ : Array, Vector, List, Stack, Queue, Tree, Heap, Hash ๋ชจ๋“ˆ ์—†์ด ๊ตฌํ˜„ 1. Vector, List, Map ์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด ๋ณด์„ธ์š”. stl์— ๋“ฑ๋ก๋˜์–ด ์žˆ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๋“ค๋กœ์„œ vector๋Š” ๋™์ ๋ฐฐ์—ด๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์œผ๋ฉฐ, List๋Š” ๋”๋ธ”๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ๋กœ ์ด๋ฃจ์–ด์ ธ์žˆ์Šต๋‹ˆ๋‹ค. Map์„ Key์™€ Value๋ฅผ ์Œ์œผ๋กœ ์ด๋ฃจ๋ฉฐ ๋ ˆ๋“œ๋ธ”๋ž™ํŠธ๋ฆฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์–ด์„œ ๋น ๋ฅธ ํƒ์ƒ‰์†๋„๋ฅผ ์ž๋ž‘ํ•ฉ๋‹ˆ๋‹ค. 2. Vector, List ์˜ ์ฐจ์ด์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•˜์„ธ์š”. vector๋Š” ๋™์ ๋ฐฐ์—ด์˜ ํด๋ž˜์Šค ํƒฌํ”Œ๋ฆฟ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. vector๊ฐ์ฒด๋Š” ์š”์†Œ๊ฐ€ ์ถ”๊ฐ€๋˜๊ฑฐ๋‚˜ ์‚ญ์ œ๋  ๋•Œ๋งˆ๋‹ค ์ž๋™์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์žฌํ• ๋‹นํ•˜์—ฌ ํฌ๊ธฐ๋ฅผ ๋™์ ์œผ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. list๋Š” ์ด์ค‘์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ์˜ ํด๋ž˜์Šค ํƒฌํ”Œ๋ฆฟ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ปจํ…Œ์ด๋„ˆ๋Š” ๋ชจ๋“  ์š”์†Œ์—์„œ ์–‘๋ฐฉํ–ฅ ์ ‘๊ทผ, ๋น ๋ฅธ ์‚ฝ์ž…๊ณผ ์‚ญ์ œ๋ฅผ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์ž„์˜ ์ ‘๊ทผ์€ ๋ถˆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ฆฌ..