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

๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ

(32)
์‹ฑ๊ธ€ํ†ค ํŒจํ„ด(Singleton pattern) ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด (์ƒ์„ฑํŒจํ„ด) ํ•˜๋‚˜์˜ ํด๋ž˜์Šค์— ์˜ค์ง ํ•˜๋‚˜์˜ ์ธ์Šคํ„ด์Šค๋งŒ ๊ฐ€์ง€๋Š” ํŒจํ„ด ์ž๋ฐ”๋Š” ํ•˜๋‚˜์˜ ํด๋ž˜์Šค๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ฐœ๋ณ„์ ์ธ ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์ง€๋งŒ, ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์—์„œ๋Š” ํ•˜๋‚˜์˜ ํด๋ž˜์Šค์— ๋‹จ ํ•˜๋‚˜์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค์–ด ์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋กœ์ง์„ ๋งŒ๋“œ๋Š” ๋ฐ ์“ฐ์ด๋ฉฐ, DB ์—ฐ๊ฒฐ ๋ชจ๋“ˆ์— ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค. ์žฅ์  ํ•˜๋‚˜์˜ ์ธ์Šคํ„ด๋“œ๋ฅผ ๋‹ค๋ฅธ ๋ชจ๋“ˆ๋“ค์ด ๊ณต์œ ํ•˜๋ฉฐ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ๋“œ๋Š” ๋น„์šฉ์ด ์ค„์–ด๋“ ๋‹ค. ํด๋ž˜์Šค๊ฐ„์˜ ๋ฐ์ดํ„ฐ ๊ณต์œ ๊ฐ€ ์‰ฝ๋‹ค. ๋‹จ์  ์˜์กด์„ฑ์ด ๋†’์•„์ง„๋‹ค. ๋ชจ๋“ˆ ๊ฐ„ ๊ฒฐํ•ฉ์ด ๊ฐ•ํ•˜๋‹ค. TDD๊ฐ€ ์–ด๋ ต๋‹ค. ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์€ TDD(Test Driven Development)๋ฅผ ํ•˜๊ธฐ ํž˜๋“ค๋‹ค. TDD๋ฅผ ํ•  ๋•Œ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ฅผ ์ฃผ๋กœ ํ•˜๋Š”๋ฐ, ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋Š” ํ…Œ์ŠคํŠธ๊ฐ€ ์„œ๋กœ ๋…๋ฆฝ์ ์ด์–ด์•ผ ํ•˜๋ฉฐ ํ…Œ์ŠคํŠธ๋ฅผ ์–ด๋–ค ์ˆœ์„œ๋กœ๋“  ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ..
2022๋…„ ํšŒ๊ณ  (feat. SSAFY) ๋ณดํ˜ธ๋˜์–ด ์žˆ๋Š” ๊ธ€์ž…๋‹ˆ๋‹ค.
๋ฒกํ„ฐ, ์Šคํƒ, ํ ๋ฒกํ„ฐ ๋ฒกํ„ฐ๋Š” ๋™์ ์œผ๋กœ ์š”์†Œ๋ฅผ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๋Š” ๋™์  ๋ฐฐ์—ด์ด๋‹ค. ์ค‘๋ณต์„ ํ—ˆ์šฉํ•œ๋‹ค. ์ˆœ์„œ๊ฐ€ ์žˆ๋‹ค. ๋žœ๋ค ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์‹œ๊ฐ„ ๋ณต์žก๋„ ํƒ์ƒ‰ O(1) ๋งจ ๋’ค์˜ ์š”์†Œ ์‚ญ์ œ O(1) ๋งจ ๋’ค์˜ ์š”์†Œ ์‚ฝ์ž… O(1) ๊ทธ ์™ธ ์š”์†Œ ์‚ญ์ œ O(n) ๊ทธ ์™ธ ์š”์†Œ ์‚ฝ์ž… O(n) push_back O(1) push_back (C++) : ๋ฒกํ„ฐ ๋์— ์›์†Œ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค. #include #include using namespace std; int main() { vector myvector; int myint; cout > myint; myvector.push_back(myint); } while (myint); cout O(1)) ํ•˜๋ฉฐ, ๋ฐฐ์—ด์ด ๋ชจ๋‘ ๊ฝ‰ ์ฐผ์„ ๊ฒฝ์šฐ ํ˜„์žฌ ํฌ๊ธฐ์˜ 2๋ฐฐ์˜ ๋ฐฐ์—ด์„ allocate ํ•˜์—ฌ ์ƒˆ๋กœ์šด ๊ณต๊ฐ„์œผ๋กœ ๊ฐ’์„ ..
[DB] ์ธ๋ฑ์Šค์™€ ์กฐ์ธ ์ธ๋ฑ์Šค์˜ ํ•„์š”์„ฑ ์ธ๋ฑ์Šค๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ํ•˜๋‚˜์˜ ์žฅ์น˜์ด๋‹ค. ์ธ๋ฑ์Šค๋ฅผ ์„ค์ •ํ•˜๋ฉด ํ…Œ์ด๋ธ” ์•ˆ์— ๋‚ด๊ฐ€ ์ฐพ๊ณ ์ž ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค. B-ํŠธ๋ฆฌ ํŠธ๋ฆฌ ์ž๋ฃŒ๊ตฌ์กฐ์˜ ์ผ์ข…์œผ๋กœ, ์ด์ง„ ํŠธ๋ฆฌ๋ฅผ ํ™•์žฅํ•ด ํ•˜๋‚˜์˜ ๋…ธ๋“œ๊ฐ€ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ์ž์‹ ๋…ธ๋“œ์˜ ์ตœ๋Œ€ ์ˆซ์ž๊ฐ€ 2๋ณด๋‹ค ํฐ ํŠธ๋ฆฌ ๊ตฌ์กฐ์ด๋‹ค B-ํŠธ๋ฆฌ ์ž๋ฃŒ ๊ตฌ์กฐ๋Š” ๋ฃจํŠธ ๋…ธ๋“œ, ๋ฆฌํ”„ ๋…ธ๋“œ, ๋ธŒ๋žœ์น˜ ๋…ธ๋“œ๋กœ ๋‚˜๋‰œ๋‹ค. ํŠธ๋ฆฌ ํƒ์ƒ‰์€ ๋งจ ์œ„ ๋ฃจํŠธ ๋…ธ๋“œ๋ถ€ํ„ฐ ํƒ์ƒ‰์ด ์ผ์–ด๋‚˜๋ฉฐ ๋ธŒ๋žœ์น˜ ๋…ธ๋“œ๋ฅผ ๊ฑฐ์ณ ๋ฆฌํ”„ ๋…ธ๋“œ๊นŒ์ง€ ๋‚ด๋ ค์˜จ๋‹ค. ๋ฐ์ดํ„ฐ ํฌ์ธํ„ฐ๋ฅผ ํ†ตํ•ด ๊ฒฐ๊ณผ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์ธ๋ฑ์Šค๊ฐ€ ํšจ์œจ์ ์ธ ์ด์œ ์™€ ๋Œ€์ˆ˜ํ™•์žฅ์„ฑ ์ธ๋ฑ์Šค๊ฐ€ ํšจ์œจ์ ์ธ ์ด์œ ๋Š” ํšจ์œจ์ ์ธ ๋‹จ๊ณ„๋ฅผ ๊ฑฐ์ณ ๋ชจ๋“  ์š”์†Œ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๊ท ํ˜• ์žกํžŒ ํŠธ๋ฆฌ ๊ตฌ์กฐ์™€ ํŠธ๋ฆฌ ๊นŠ์ด์˜ ๋Œ€์ˆ˜ํ™•์žฅ์„ฑ ๋•Œ๋ฌธ์ด๋‹ค. * ๋Œ€์ˆ˜ํ™•์žฅ์„ฑ : ํŠธ๋ฆฌ ๊นŠ์ด๊ฐ€ ๋ฆฌํ”„ ๋…ธ๋“œ ์ˆ˜์— ๋น„ํ•ด..
API ๋ถ„๋ฆฌ์™€ ํŒŒ๋ผ๋ฏธํ„ฐ API ๋ถ„๋ฆฌ ๊ณตํ†ต์œผ๋กœ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ํ• ๋•Œ ํŒจํ‚ค์ง€๋‚˜ ๊ตฌ์„ฑ๋‹จ์œ„๋กœ ๋งŽ์ด ํ•œ๋‹ค. API์™€ ํ™”๋ฉด์€ ๊ณตํ†ต ์ฒ˜๋ฆฌํ•ด์•ผํ•  ์š”์†Œ๊ฐ€ ๋‹ค๋ฅด๋‹ค. ⇒ ํŒจํ‚ค์ง€๋ฅผ ๋ถ„๋ฆฌํ•˜์ž Post๋ฐฉ์‹ API ์ž‘์„ฑ 1๋ฒˆ ๋ฐฉ์‹ @PostMapping("/api/v1/members") public CreateMemberResponse saveMemberV1(@RequestBody @Valid Member member){ Long id = memberService.join(member); return new CreateMemberResponse(id); } API ์ŠคํŽ™์„ ์œ„ํ•œ ๋ณ„๋„์˜ DTO๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค. ๋ณ„๋„์˜ ํด๋ž˜์Šค๋ฅผ ์•ˆ ๋งŒ๋“ค์–ด๋„ ๋˜๋‹ˆ ํŽธํ•  ๊ฒƒ ๊ฐ™์ง€๋งŒ ์™ธ๋ถ€์—์„œ ์˜ค๋Š” json์„ ๋ฐ”์ธ๋”ฉ ๋ฐ›์•„์“ฐ๋ฉด ๋‚˜์ค‘์— ํฐ ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. ๐Ÿ’ก API๋ฅผ ๋งŒ๋“ค ๋•Œ๋Š” E..
์šด์˜์ฒด์ œ์™€ ์ปดํ“จํ„ฐ [OS] SECTION 3.1 ์šด์˜์ฒด์ œ์™€ ์ปดํ“จํ„ฐ OS๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ปดํ“จํ„ฐ๋ฅผ ์‰ฝ๊ฒŒ ๋‹ค๋ฃจ๊ฒŒ ํ•ด์ฃผ๋Š” ์ธํ„ฐํŽ˜์ด์Šค์ด๋‹ค. OS๋Š” ํ•œ์ •๋œ ๋ฉ”๋ชจ๋ฆฌ๋‚˜ ์‹œ์Šคํ…œ ์ž์›์„ ํšจ์œจ์ ์œผ๋กœ ๋ถ„๋ฐฐํ•œ๋‹ค. ์šด์˜์ฒด์ œ ↔ ํŽŒ์›จ์–ด (ํ•˜๋“œ์›จ์–ด์˜ ์ œ์–ด์™€ ๊ตฌ๋™์„ ๋‹ด๋‹นํ•˜๋Š” OS) 3.1 ์šด์˜์ฒด์ œ์™€ ์ปดํ“จํ„ฐ 3.1.1 ์šด์˜์ฒด์ œ์˜ ์—ญํ• ๊ณผ ๊ตฌ์กฐ ์šด์˜์ฒด์ œ์˜ ์—ญํ•  CPU ์Šค์ผ€์ค„๋ง๊ณผ ํ”„๋กœ์„ธ์Šค ๊ด€๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ๋””์Šคํฌ ํŒŒ์ผ ๊ด€๋ฆฌ I/O ๋””๋ฐ”์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ ์ž์› ๊ด€๋ฆฌ, ์‚ฌ์šฉ์ž์™€ ์ปดํ“จํ„ฐ๊ฐ„์˜ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ์ง€์›, ์šด์˜์ฒด์ œ์˜ ๊ตฌ์กฐ GUI : ์‚ฌ์šฉ์ž๊ฐ€ ์ „์ž์žฅ์น˜์™€ ์ƒํ˜ธ ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค์˜ ํ•œ ํ˜•ํƒœ ๋ฆฌ๋ˆ…์Šค ์„œ๋ฒ„ : GUI๊ฐ€ ์—†๊ณ  CUI๋งŒ ์žˆ์Œ * CUI : ๊ทธ๋ž˜ํ”ฝ์ด ์•„๋‹Œ ๋ช…๋ น์–ด๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค CUI๋Š” ์†๋„๊ฐ€ ๋น ๋ฅด๊ณ  ๋ฆฌ์†Œ์Šค๋ฅผ ์ ๊ฒŒ ์‚ฌ์šฉํ•œ๋‹ค. ํ•˜์ง€๋งŒ ํŽธ..
Network๊ธฐ๊ธฐ & IP ์ฃผ์†Œ [Network] SECTION 2.3 ๋„คํŠธ์›Œํฌ ๊ธฐ๊ธฐ 2.3.1 ๋„คํŠธ์›Œํฌ ๊ธฐ๊ธฐ์˜ ์ฒ˜๋ฆฌ ๋ฒ”์œ„ ๋„คํŠธ์›Œํฌ ๊ธฐ๊ธฐ๋Š” ๊ณ„์ธต์— ๋”ฐ๋ผ ์ฒ˜๋ฆฌ ๋ฒ”์œ„๋ฅผ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค. ์ƒ์œ„ ๊ณ„์ธต์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ธฐ๊ธฐ๋Š” ํ•˜์œ„ ๊ณ„์ธต์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. (์—ญ์€ ๋ถˆ๊ฐ€ํ•˜๋‹ค) ๊ณ„์ธต๊ธฐ๊ธฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ L7 ์Šค์œ„์น˜ ์ธํ„ฐ๋„ท ๋ผ์šฐํ„ฐ, L3 ์Šค์œ„์น˜ ๋ฐ์ดํ„ฐ ๋งํฌ L2 ์Šค์œ„์น˜, ๋ธŒ๋ฆฌ์ง€ ๋ฌผ๋ฆฌ NIC, ๋ฆฌํ”ผํ„ฐ, AP 2.3.2 ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ„์ธต์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ธฐ๊ธฐ L7 ์Šค์œ„์น˜(=๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ) ์„œ๋ฒ„์˜ ๋ถ€ํ•˜๋ฅผ ๋ถ„์‚ฐํ•˜๋Š” ๊ธฐ๊ธฐ์ด๋‹ค. (ํŠธ๋ž˜ํ”ฝ ๋ถ„์‚ฐ) ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ์˜ค๋Š” ์š”์ฒญ๋“ค์„ ๋’ค์ชฝ์˜ ์—ฌ๋Ÿฌ ์„œ๋ฒ„๋กœ ๋‚˜๋ˆ„๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. ์‹œ์Šคํ…œ์ด ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ํŠธ๋ž˜ํ”ฝ ์ฆ๊ฐ€๋ฅผ ๋ชฉํ‘œ๋กœ ํ•œ๋‹ค. ๋ถˆํ•„์š”ํ•œ ์™ธ๋ถ€ ๋ฐ์ดํ„ฐ ๋“ฑ์„ ๊ฑธ๋Ÿฌ๋‚ด๋Š” ํ•„ํ„ฐ๋ง ๊ธฐ๋Šฅ๋„ ํ•  ์ˆ˜ ์žˆ๋‹ค. (๋ชจ๋‹ˆํ„ฐ๋ง) ์ •๊ธฐ์ ์œผ๋กœ ํ—ฌ์Šค ์ฒดํฌ๋ฅผ ์ด์šฉํ•˜์—ฌ ์žฅ์• ๊ฐ€..
CS ์Šคํ„ฐ๋”” ์‹œ์ž‘ SSAFY ๋™๊ธฐ๋“ค๊ณผ CS ์Šคํ„ฐ๋””๋ฅผ ์‹œ์ž‘ํ•˜์˜€๋‹ค. ์ƒ๋ฐ˜๊ธฐ ๊ณต์ฑ„๊ฐ€ ์ง„ํ–‰๋˜๋Š” 3~4์›”๊นŒ์ง€ ์ฑ… 1~2๊ถŒ ์™„๋…์„ ๋ชฉํ‘œ๋กœ ๊ณต๋ถ€ํ•˜๊ณ  ๊ฐ์ž ํ•™์Šตํ•œ ๋‚ด์šฉ์„ ๊ฐœ์ธ ๋ธ”๋กœ๊ทธ๋‚˜ Notion์— ๊ธฐ๋กํ•˜๊ณ  ๋ฐœํ‘œํ•˜๊ธฐ๋กœ ํ•˜์˜€๋‹ค. ์ฑ…์€ ์ฃผํ™์ฒ  ์ €์ž์˜ '๋ฉด์ ‘์„ ์œ„ํ•œ CS ์ „๊ณต์ง€์‹ ๋…ธํŠธ' ๋กœ ์ •ํ•˜์˜€๋‹ค. ๐Ÿ”ฅ (2022.12.14 ~ ing) GitHub - Leeh9/myeonbu-CS: ๋ฉด์ ‘ ๋ถ€์‹œ๋Š” CS ์Šคํ„ฐ๋”” ๋ฉด์ ‘ ๋ถ€์‹œ๋Š” CS ์Šคํ„ฐ๋””. Contribute to Leeh9/myeonbu-CS development by creating an account on GitHub. github.com