STUDY ๐Ÿ“š

์—ด๊ณตํ•˜๊ธฐ!
๐Ÿ€ํ”„๋กœ์ ํŠธ ๋‚ด์šฉ ๋ฉ‹์Ÿ์ด์‚ฌ์ž์ฒ˜๋Ÿผ ๋™์•„๋ฆฌ์—์„œ ํ•ด์ปคํ†ค์„ ์ค€๋น„ํ•˜๊ธฐ ์œ„ํ•ด NCP๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค! ์šฐ๋ฆฌ ํŒ€์€ ์ด๋ฒˆ ํ•ด์ปคํ†ค ์ฃผ์ œ๊ฐ€ '๋””์ง€ํ„ธ ๊ฒฉ์ฐจ๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•œ ์„œ๋น„์Šค' ์˜€๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๊ณ ๋ฏผํ•ด๋ณด๋‹ค๊ฐ€ ํƒ€์ด์†Œ(tire, so)๋ผ๋Š” ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“ค์–ด๋ณด๊ธฐ๋กœ ํ•˜์˜€๋‹ค! :) ๊ธฐํš 1๋ช…, ํ”„๋ก ํŠธ 3๋ช…, ๋ฐฑ 2๋ช…์œผ๋กœ ๊ตฌ์„ฑ๋œ ์šฐ๋ฆฌ ํŒ€์—์„œ ๋‚˜๋Š” ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์„ ๋งก์•˜๋‹ค! ๊ทธ ๊ณผ์ •์—์„œ NCP์˜ ์•„์ฃผ ๋‹ค์–‘ํ•˜๊ณ  ์‹ ๊ธฐํ•œ ๊ธฐ๋Šฅ๋“ค์„ ๋งŽ์ด ์ ‘ํ•ด๋ณผ ์ˆ˜ ์žˆ์—ˆ๋‹ค! ์–ด๋–ค ์„œ๋น„์Šค๋“ค์„ ์‚ฌ์šฉํ–ˆ๋Š”์ง€ ์†Œ๊ฐœํ•˜๊ธฐ ์•ž์„œ ์šฐ๋ฆฌ ํ”„๋กœ์ ํŠธ ์‚ด์ง ๋ง›๋ณด๊ธฐ ํ•ด๋“œ๋ ค์•ผ๊ฒ ๋‹ค ใ…Žใ…Ž ๐Ÿ€๋‚ด๊ฐ€ ์‚ฌ์šฉํ•œ ์„œ๋น„์Šค๋“ค! VPC ๊ฐ€์ƒ ์‚ฌ์„ค ํด๋ผ์šฐ๋“œ ๋…๋ฆฝ๋œ ๋„คํŠธ์›Œํฌ ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•˜๊ณ  ๊ด€๋ฆฌ ํ•  ์ˆ˜ ์žˆ๋‹ค! Server ๊ฐ€์ƒ ๋จธ์‹ (VM) ํ˜•ํƒœ๋กœ ์ œ๊ณต๋œ๋‹ค!! Object Sotrage ํŒŒ์ผ, ์ด๋ฏธ์ง€, ๋น„๋””์˜ค ..
Integer.parseInt() // ๋ฌธ์ž์—ด -> ์ •์ˆ˜ String.valueOf() // ์ •์ˆ˜ -> ๋ฌธ์ž์—ด // ๋ฌธ์ž์—ด ๋ฐฐ์—ด = ๋Œ€์ƒ๋ฌธ์ž์—ด.split("๊ธฐ์ค€๋ฌธ์ž"); String str = "abc" String[] arr = str.split("") // -> ๋ฌธ์ž์—ด ํ•˜๋‚˜์”ฉ ๋ฐฐ์—ด์— ๋‹ด๊ธฐ arr[0] = a, arr[1] = b, arr[2] = c String str = "abc-def" int index = str.indexOf("-") // ์ธ๋ฑ์Šค ๊ฐ’ ("-"์˜ ์œ„์น˜) = 3 String str = "abcdef" String ans1 = str.substring(0, 3); // -> "abc" 0๋ฒˆ์งธ ๋ถ€ํ„ฐ 2๋ฒˆ์งธ ๊นŒ์ง€๋งŒ ์ถœ๋ ฅ String ans2 = str.substring(3); // ->..
์‚ฌ์ „ ์ง€์‹ ์ž„๊ณ„ ๊ตฌ์—ญ(Critical section) : ๋‹ค์ˆ˜์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•˜๋ฉฐ ์‹คํ–‰๋˜๋Š” ์ƒํ™ฉ์—์„œ ๊ฐ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ณต์œ  ์ž์›์— ์ ‘๊ทผํ•˜๋Š” ์ฝ”๋“œ ๋ธ”๋ก์„ ์˜๋ฏธ ๋‹ค์ˆ˜์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์‹œ์— ๊ณต์œ  ์ž์›์— ์ ‘๊ทผํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๊ฒŒ ๋จ ์ฆ‰, ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์ผ ์ž์›์„ ๋™์‹œ์— ์ฐธ์กฐํ•˜์—ฌ ๊ฐ’(๊ณต์œ ํ•˜๋Š” ๋ณ€์ˆ˜๋ช…, ํŒŒ์ผ ๋“ฑ)์ด ์˜ค์—ผ๋  ์œ„ํ—˜ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š” ์˜์—ญ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์‹œ, ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์œ„ํ•ด ์ž„๊ณ„์˜์—ญ์„ ์ตœ์†Œํ™”ํ•˜๋Š” ์„ค๊ณ„๋ฅผ ํ•ด์•ผ ํ•จ ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋งŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ์ œํ•œ์„ ๋‘๋Š” ๋™๊ธฐํ™” ๋ฐฉ์‹์„ ์ทจํ•ด์•ผ ํ•จ ๋™๊ธฐํ™” ๋„๊ตฌ์—๋Š” ๋Œ€ํ‘œ์ ์œผ๋กœ ๋ฎคํ…์Šค(Mutex)์™€ ์„ธ๋งˆํฌ์–ด(Semaphore)๊ฐ€ ์žˆ์Œ ์ด๋“ค์€ ๋ชจ๋‘ ๊ณต์œ ๋œ ์ž์›์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ/ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์„ ๋ง‰๋Š” ์—ญํ• ์„ ํ•จ ๋ฎค..
CPU ์Šค์ผ€์ค„๋ง์ด๋ž€? ํ”„๋กœ์„ธ์Šค๋Š” ์ƒ์„ฑ๋œ ํ›„ ์—ฌ๋Ÿฌ ์ƒํƒœ๋ฅผ ๊ฑฐ์นจ (์ƒ์„ฑ, ์ค€๋น„, ์‹คํ–‰, ์™„๋ฃŒ, ๋Œ€๊ธฐ ์ƒํƒœ) ์ด๋•Œ, ์šด์˜์ฒด์ œ์˜ CPU ์Šค์ผ€์ค„๋Ÿฌ๋Š” ์ค€๋น„ ์ƒํƒœ์˜ ํ”„๋กœ์„ธ์Šค ์ค‘์—์„œ ์–ด๋–ค ํ”„๋กœ์„ธ์Šค์—๊ฒŒ CPU๋ฅผ ํ• ๋‹นํ• ์ง€ ๊ฒฐ์ •ํ•ด์•ผํ•จ! ์ด ๊ณผ์ •์„ CPU ์Šค์ผ€์ค„๋ง์ด๋ผ ํ•จ โžก๏ธ CPU ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋”ฐ๋ผ์„œ ํ”„๋กœ์„ธ์Šค์—์„œ ํ•ด์•ผ ํ•˜๋Š” ์ผ์„ ์Šค๋ ˆ๋“œ ๋‹จ์œ„๋กœ CPU์— ํ• ๋‹น CPU ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๋ชฉํ‘œ : CPU ์ด์šฉ๋ฅ ์€ ๋†’๊ฒŒ, ์ฃผ์–ด์ง„ ์‹œ๊ฐ„์— ๋งŽ์€ ์ผ์„ ํ•˜๊ฒŒ, ์ค€๋น„ ํ์— ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๋Š” ์ ๊ฒŒ, ์‘๋‹ต์‹œ๊ฐ„์€ ์งง๊ฒŒ ์„ค์ •ํ•˜๋Š” ๊ฒƒ CPU ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ข…๋ฅ˜ CPU ์Šค์ผ€์ค„๋Ÿฌ๋Š” ์–ธ์ œ ์Šค์ผ€์ค„๋ง์„ ๊ฒฐ์ •ํ• ๊นŒ? 1) ์‹คํ–‰์ƒํƒœ์—์„œ ๋Œ€๊ธฐ์ƒํƒœ๋กœ ์ „ํ™˜๋  ๋•Œ 2) ์‹คํ–‰์ƒํƒœ์—์„œ ์ค€๋น„์ƒํƒœ๋กœ ์ „ํ™˜๋  ๋•Œ 3) ๋Œ€๊ธฐ์ƒํƒœ์—์„œ ์ค€๋น„์ƒํƒœ๋กœ ์ „ํ™˜๋  ๋•Œ 4) ์ข…๋ฃŒ๋  ๋•Œ ..
MVC ํŒจํ„ด : ๋ชจ๋ธ(Model), ๋ทฐ(view), ์ปจํŠธ๋กค๋Ÿฌ(Controller)๋กœ ์ด๋ฃจ์–ด์ง„ ๋””์ž์ธ ํŒจํ„ด → ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์„ธ ๊ฐ€์ง€ ์—ญํ• ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค์—์„œ ๊ฐ๊ฐ์˜ ๊ตฌ์„ฑ ์š”์†Œ์—๋งŒ ์ง‘์ค‘ํ•ด์„œ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ์Œ ์žฅ์ : ์žฌ์‚ฌ์šฉ์„ฑ๊ณผ ํ™•์ •์„ฑ์ด ์šฉ์ดํ•จ ๋‹จ์ : ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋ณต์žกํ•ด์งˆ์ˆ˜๋ก ๋ชจ๋ธ๊ณผ ๋ทฐ์˜ ๊ด€๊ณ„๋„ ๋ณต์žกํ•ด์ง ๋ชจ๋ธ : ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฐ์ดํ„ฐ์ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ์ƒ์ˆ˜, ๋ณ€์ˆ˜ ๋“ฑ์„ ๋œปํ•จ ๐Ÿ’ก ex) ์‚ฌ๊ฐํ˜• ๋ชจ์–‘์˜ ๋ฐ•์Šค ์•ˆ์— ๊ธ€์ž๊ฐ€ ๋“ค์–ด ์žˆ๋‹ค๋ฉด ๊ทธ ์‚ฌ๊ฐํ˜• ๋ชจ์–‘์˜ ๋ฐ•์Šค ์œ„์น˜ ์ •๋ณด, ๊ธ€์ž ๋‚ด์šฉ, ๊ธ€์ž ์œ„์น˜, ๊ธ€์ž ํฌ๋งท์— ๊ด€ํ•œ ์ •๋ณด๋ฅผ ๋ชจ๋‘ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ ํ•จ. → ๋ทฐ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•˜๋ฉด ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ํ†ตํ•ด ๋ชจ๋ธ์„ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ๊ฐฑ์‹ ํ•จ ๋ทฐ : ๋ชจ๋ธ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์‚ฌ์šฉ์ž๊ฐ€ ๋ณผ ์ˆ˜ ์žˆ๋Š” ํ™”๋ฉด(UI)์„ ๋œปํ•จ → inp..
SOLID ๋ž€? → ๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„ ์‹œ ์ง€์ผœ์•ผ ํ•˜๋Š” ์„ค๊ณ„ ์›์น™ 5๊ฐ€์ง€๋ฅผ ์ค„์—ฌ์„œ ๋ถ€๋ฆ„ ์‹œ๊ฐ„์ด ์ง€๋‚˜๋„ ์œ ์ง€๋ณด์ˆ˜์™€ ํ™•์žฅ์ด ์šฉ์ดํ•œ ์‹œ์Šคํ…œ์„ ๋งŒ๋“ค๊ณ ์ž ํ•  ๋•Œ ์ ์šฉํ•˜๋Š” ์›์น™ ์žฅ์ : ์œ ์—ฐ์„ฑ, ์žฌ์‚ฌ์šฉ์„ฑ, ์œ ์ง€๋ณด์ˆ˜์„ฑ์ด ๋†’์•„์ง 1) ๋‹จ์ผ ์ฑ…์ž„ ์›์น™ SRP : ํ•œ ํด๋ž˜์Šค๋Š” ํ•˜๋‚˜์˜ ์ฑ…์ž„๋งŒ ๊ฐ€์ ธ์•ผ ํ•˜๊ณ  ํด๋ž˜์Šค๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ์ด์œ ๋„ ๋‹จ ํ•˜๋‚˜์—ฌ์•ผ ํ•œ๋‹ค. ์ง€ํ‚ค์ง€ ์•Š์„ ์‹œ, ํ•œ ์ฑ…์ž„์˜ ๋ณ€๊ฒฝ์— ์˜ํ•ด์„œ ๋‹ค๋ฅธ ์ฑ…์ž„๊ณผ ๊ด€๋ จ๋œ ์ฝ”๋“œ์— ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ์Œ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ๋งค์šฐ ๋น„ํšจ์œจ์ ์ด๊ฒŒ ๋จ ์ฑ…์ž„ = ๊ธฐ๋Šฅ ํ•œ ํด๋ž˜์Šค๊ฐ€ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ด ์—ฌ๋Ÿฌ ๊ฐœ๋ผ๋ฉด, ํด๋ž˜์Šค ๋‚ด๋ถ€์˜ ํ•จ์ˆ˜์—์„œ ๊ฒฐํ•ฉ๋„๊ฐ€ ๋†’์•„์ง ์‘์ง‘๋„๋Š” ๋†’๊ณ  ๊ฒฐํ•ฉ๋„๋Š” ๋‚ฎ์€ ํ”„๋กœ๊ทธ๋žจ์„ ์„ค๊ณ„ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„์˜ ํ•ต์‹ฌ ์ฑ…์ž„์„ ์ž˜๊ฒŒ ์ชผ๊ฐœ์–ด ๋ถ„๋ฆฌ์‹œํ‚ฌ ํ•„์š”๊ฐ€ ์žˆ์Œ ex) A ๋ผ๋Š” ๋ฉ”์†Œ๋“œ๊ฐ€ ์žˆ๊ณ , A ๋ฉ”์†Œ๋“œ๋Š” ..
๐Ÿ’ก ๋””์ž์ธ ํŒจํ„ด์ด๋ž€?: ํ”„๋กœ๊ทธ๋žจ ์„ค๊ณ„ํ•  ๋•Œ ๋ฐœ์ƒํ–ˆ๋˜ ๋ฌธ์ œ์ ๋“ค์„ ๊ฐ์ฒด ๊ฐ„์˜ ์ƒํ˜ธ ๊ด€๊ณ„ ๋“ฑ์„ ์ด์šฉํ•˜์—ฌ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋‚˜์˜ ๊ทœ์•ฝ ํ˜•ํƒœ๋กœ ๋งŒ๋“ค์–ด ๋†“์€ ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค! ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด : ํ•˜๋‚˜์˜ ํด๋ž˜์Šค์— ์˜ค์ง ํ•˜๋‚˜์˜ ์ธ์Šคํ„ด์Šค๋งŒ ๊ฐ€์ง€๋Š” ํŒจํ„ด์ด๋‹ค. ํ•˜๋‚˜์˜ ํด๋ž˜์Šค๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ฐœ๋ณ„์ ์ธ ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์ง€๋งŒ, ๊ทธ๋ ‡๊ฒŒ ํ•˜์ง€ ์•Š๊ณ  ํ•˜๋‚˜์˜ ํด๋ž˜์Šค๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋‹จ ํ•˜๋‚˜์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค์–ด ์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋กœ์ง์„ ๋งŒ๋“œ๋Š” ๋ฐ ์“ฐ์ด๋ฉฐ, ๋ณดํ†ต ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ๋ชจ๋“ˆ์— ๋งŽ์ด ์‚ฌ์šฉ๋œ๋‹ค! ์žฅ์  ํ•˜๋‚˜์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค์–ด ๋†“๊ณ  ํ•ด๋‹น ์ธ์Šคํ„ด์Šค๋ฅผ ๋‹ค๋ฅธ ๋ชจ๋“ˆ๋“ค์ด ๊ณต์œ ํ•˜๋ฉฐ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ƒ์„ฑํ•  ๋•Œ ๋น„์šฉ์ด ์ ๊ฒŒ ์ฆ˜ ๋‹จ์  ๋ชจ๋“ˆ ๊ฐ„ ๊ฒฐํ•ฉ์„ ๊ฐ•ํ•˜๊ฒŒ ๋งŒ๋“ค๊ธฐ ๋•Œ๋ฌธ์— ์˜์กด์„ฑ(์ข…์†์„ฑ)์ด ๋†’์•„์ง TDD๋ฅผ ํ•  ๋•Œ ๊ฑธ๋ฆผ๋Œ์ด ๋จ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋Š” ํ…Œ์ŠคํŠธ๊ฐ€ ์„œ๋กœ..
daxx0ne
'STUDY ๐Ÿ“š' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก