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

Programming/์ทจ์—…์ค€๋น„&CS Study

[๋ฉด์ ‘ ์ค€๋น„] ๊ฐœ๋ฐœ์ž "๊ธฐ์ˆ " ๊ด€๋ จ ๊ณตํ†ต ์งˆ๋ฌธ๋“ค ๋ชจ์Œ

 

 

 

>> ๐Ÿ’ป ๊ธฐ์ˆ 

 

  1. ๊ฐ€์žฅ ์ž˜ ์•„๋Š” ๊ฐœ๋ฐœ ๋ฐฉ๋ฒ•๋ก ์€ ๋ฌด์—‡์ธ๊ฐ€?
    • Waterfall ๋ฐฉ๋ฒ•๋ก : ํ•œ๋ฒˆ ๋–จ์–ด์ง€๋ฉด ๋Œ์•„๊ฐˆ ์ˆ˜ ์—†๋Š” ํญํฌ์ˆ˜์ฒ˜๋Ÿผ, ๊ฐ ๊ฐœ๋ฐœ ๋‹จ๊ณ„๋ฅผ ํ™•์‹คํžˆ ๋งค๋“ญ์ง“๊ณ  ๋‹ค์Œ ๋‹จ๊ณ„๋กœ ๋„˜์–ด๊ฐ€๋Š” ๋ฐฉ๋ฒ•๋ก ์ž…๋‹ˆ๋‹ค. ๋‹จ๊ณ„๊ฐ€ ๋ช…ํ™•ํ•ด์„œ ๊ด€๋ฆฌํ•˜๊ธฐ๋Š” ์‰ฝ์ง€๋งŒ, ์š”๊ตฌ๋ถ„์„์— ์‹œ๊ฐ„๊ณผ ๋น„์šฉ์ด ๋งŽ์ด ๋“ค๊ณ  ์š”๊ตฌ์‚ฌํ•ญ ๋ณ€ํ™”์— ๋Œ€์‘์ด ์–ด๋ ต๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
    • Agile ๋ฐฉ๋ฒ•๋ก : Waterfall ๋ฐฉ๋ฒ•๋ก ๊ณผ ๋Œ€๋น„๋˜๋Š” ๋ฐฉ๋ฒ•๋ก ์œผ๋กœ ๋ณ€ํ™” ์ˆ˜์šฉ, ํ˜‘์—…, ๋น ๋ฅธ ์ธ๋„๋ฅผ ๊ฐ•์กฐํ•˜๋Š” ๋ฐ˜๋ณต์  ๊ฐœ๋ฐœ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๊ตฌ์ฒด์ ์ธ ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค๋Š” ์•„๋‹ˆ๊ณ  ์ง€์นจ์ด๋‚˜ ์ฒ ํ•™์— ๊ฐ€๊น๋‹ค๊ณ  ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์š”๊ตฌ์‚ฌํ•ญ ๋ณ€ํ™”์— ๋ฏผ์ฒฉํ•˜๊ฒŒ ๋Œ€์‘ํ•˜๋ฉฐ ๋ฌธ์„œํ™”๋ณด๋‹ค ์ฝ”๋“œ, ํ”„๋กœ๊ทธ๋žจ ์ž์ฒด๋ฅผ ๋” ์ค‘์š”์‹œํ•ฉ๋‹ˆ๋‹ค. 
  2. ์›น๋ธŒ๋ผ์šฐ์ €์— google.com ์น˜๋ฉด ์ผ์–ด๋‚˜๋Š” ๊ณผ์ •์€?
    • URL ์ฃผ์†Œ์˜ ๋„๋ฉ”์ธ ๋„ค์ž„ ๋ถ€๋ถ„์„ DNS ์„œ๋ฒ„์—์„œ ๊ฒ€์ƒ‰ํ•˜์—ฌ, ํ•ด๋‹น ๋„๋ฉ”์ธ ๋„ค์ž„์— ํ•ด๋‹นํ•˜๋Š” IP ์ฃผ์†Œ๋ฅผ ์ฐพ์•„ TCP ํ†ต์‹ ์„ ํ†ตํ•ด IP ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ์„œ๋ฒ„๋Š” ๋ฐ›์€ ์š”์ฒญ์— ๋Œ€ํ•œ ์ผ๋ จ์˜ ์ฒ˜๋ฆฌ ํ›„ ์‘๋‹ต ๋ฉ”์„ธ์ง€๋ฅผ ๋‹ค์‹œ TCP ํ†ต์‹ ์„ ํ†ตํ•ด ํด๋ผ์ด์–ธํŠธ์— ์ „์†กํ•˜๊ณ  ๋ธŒ๋ผ์šฐ์ €๋Š” HTTP ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ›์€ ์‘๋‹ต ๋ฉ”์„ธ์ง€์— ๋Œ€ํ•œ ์›นํŽ˜์ด์ง€๋ฅผ ๊ตฌ์„ฑ, ์‚ฌ์šฉ์ž์—๊ฒŒ ํ™”๋ฉด์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.
  3. CI/CD๊ฐ€ ๋ฌด์—‡์ธ๊ฐ€?
    • Continuous Integration๊ณผ Continuous Delivery, Continuous Deployment์˜ ์•ฝ์–ด๋กœ, ๊ฐœ๋ฐœ์— ์žˆ์–ด์„œ ์ง€์†์ ์ธ ํ†ตํ•ฉ๊ณผ ๋ฐฐํฌ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ ๋ผ์ดํ”„์‚ฌ์ดํด ์ „์ฒด์— ๊ฑธ์ณ์„œ ์ง€์†์ ์ธ ์ž๋™ํ™”์™€ ๋ชจ๋‹ˆํ„ฐ๋ง์„ ์ œ๊ณตํ•˜๋Š”๋ฐ, ์ด๋Ÿฌํ•œ ๊ตฌ์ถ•์„ ์ผ๋ฐ˜์ ์œผ๋กœ CI/CD ํŒŒ์ดํ”„๋ผ์ธ์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
    • CI (Continuous Integration): ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ƒˆ๋กœ์šด ์ฝ”๋“œ ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ์ •๊ธฐ์ ์œผ๋กœ ๋นŒ๋“œ ๋ฐ ํ…Œ์ŠคํŠธ๋˜์–ด์„œ ๊ณต์œ  ๋ ˆํฌ์ง€ํ† ๋ฆฌ์— ํ†ตํ•ฉํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ ํ’ˆ์งˆ ์œ ์ง€์— ์ค‘์š”ํ•œ ๊ฐœ๋…์ž…๋‹ˆ๋‹ค.
    • CD 
      • Continuous Delivery : ๊ฐœ๋ฐœ ์ค‘์— ์ง€์†์ ์ธ ๋นŒ๋“œ๋‚˜ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผํ•œ ์ฝ”๋“œ๋“ค์„ ํ…Œ์ŠคํŠธ ์„œ๋ฒ„์™€ ์šด์˜ ์„œ๋ฒ„์— ์ž๋™์œผ๋กœ ๋ฆด๋ฆฌ์ฆˆํ•˜๋Š” ๊ฒƒ์„ ๋œปํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์œผ๋กœ ๋ฐฐํฌํ•  ์ค€๋น„๊ฐ€ ๋˜์–ด์žˆ๋Š” ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ํ™•๋ณดํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
      • Continuous Deployment : CI/CD ํŒŒ์ดํ”„๋ผ์ธ์˜ ๋งˆ์ง€๋ง‰ ๋‹จ๊ณ„๋กœ, ํ”„๋กœ๋•์…˜ ๋‹จ๊ณ„๊นŒ์ง€ ์ž๋™์œผ๋กœ ๋ฆด๋ฆฌ์ฆˆํ•˜๋Š” ์ž๋™ํ™”๋œ ์ž‘์—…์ž…๋‹ˆ๋‹ค.
    • ๋Œ€ํ‘œ์ ์ธ ์ œ๊ณต ํˆด๋กœ๋Š” ์  ํ‚จ์Šค(Jenkins)์™€ ๋ฐค๋ถ€(Bamboo)๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค
  4. MVC ํŒจํ„ด์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€?
    • ๋””์ž์ธ ํŒจํ„ด : ํ”„๋กœ๊ทธ๋žจ์ด๋‚˜ ์–ด๋–ค ํŠน์ •ํ•œ ๊ฒƒ์„ ๊ฐœ๋ฐœํ•˜๋Š” ์ค‘์— ๋ฐœ์ƒํ–ˆ๋˜ ๋ฌธ์ œ์ ๋“ค์„ ์ •๋ฆฌํ•ด์„œ ์ƒํ™ฉ์— ๋”ฐ๋ผ ๊ฐ„ํŽธํ•˜๊ฒŒ ์ ์šฉํ•˜๋„๋ก ์ •๋ฆฌํ•œ ํ˜•ํƒœ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
    • Model, View, Contoller์˜ ์•ฝ์ž๋กœ ํ”„๋กœ์ ํŠธ์˜ ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ์ด ์„ธ ๊ฐœ๋กœ ๋‚˜๋ˆ„๋Š” ๋””์ž์ธ ํŒจํ„ด์ž…๋‹ˆ๋‹ค.
    • Model์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ •๋ณด๋‚˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋‚˜ํƒ€๋‚ด๊ณ (๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ๋™์ž‘ํ•˜๋Š” ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•œ๋‹ค), View๋Š” ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค ์š”์†Œ๋ฅผ ๋‚˜ํƒ€๋‚ด๋ฉฐ, Controller๋Š” ๋ฐ์ดํ„ฐ์™€ ์ธํ„ฐํŽ˜์ด์Šค ์š”์†Œ๋ฅผ ์ž‡๋Š” ๋‹ค๋ฆฌ ์—ญํ• ๋กœ์„œ ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ์ฒ˜๋ฆฌ์™€ ํ๋ฆ„์ œ์–ด๋ฅผ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋ธ๊ณผ ๋ทฐ๊ฐ€ ์„œ๋กœ์˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ์— ๋Œ€ํ•ด ์ข…์†์ ์ด์ง€ ์•Š๊ณ  ์—ญํ• ์ด ๋ถ„๋ฆฌ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐœ๋ฐœ ๋ฐ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ํŽธ๋ฆฌํ•œ ํŒจํ„ด์ด๋ผ๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. 
    • MVC1: ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ์˜์—ญ(Controller)์— ํ”„๋ ˆ์  ํ…Œ์ด์…˜ ์˜์—ญ(View)๋ฅผ ๊ฐ™์ด ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์š”์ฒญ์„ JSP๊ฐ€ ์ „๋ถ€ ๋‹ค ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. 
    • MVC2: ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ์˜์—ญ๊ณผ ํ”„๋ ˆ์  ํ…Œ์ด์…˜ ์˜์—ญ์ด ๋ถ„๋ฆฌ๋˜์–ด ์žˆ๋Š” ๊ตฌํ˜„ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ์›น ๋ธŒ๋ผ์šฐ์ € ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์„ Servlet์ด ๋ฐ›์•„ View๋กœ ์‘๋‹ตํ•˜๊ฑฐ๋‚˜ Model๋กœ ๋ณด๋‚ด ๋กœ์ง์ฒ˜๋ฆฌ๋ฅผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฐฉ์‹์„ ์ฑ„ํƒํ•˜๋ฉด View์™€ Controller๊ฐ€ ๋ถ„๋ฆฌ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐœ๋ฐœ ๋‚œ์ด๋„๋Š” ๋†’์•„์ง€์ง€๋งŒ ๋””์ž์ด๋„ˆ์™€ ๊ฐœ๋ฐœ์ž์˜ ๋ถ„์—…์ด ๊ฐ€๋Šฅํ•ด์ง€๋ฉฐ ์œ ์‹œ๋ณด์ˆ˜์— ์œ ๋ฆฌํ•ด์ง„๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  5. ์ ˆ์ฐจ์ง€ํ–ฅ(PP)๊ณผ ๊ฐ์ฒด์ง€ํ–ฅ(OOP)์˜ ์ฐจ์ด๋Š” ๋ฌด์—‡์ธ๊ฐ€?
    • ์ ˆ์ฐจ์ง€ํ–ฅ (Procedure Programming): ์ผ์ •ํ•œ ๋‹จ๊ณ„์— ๋”ฐ๋ผ ์ง„ํ–‰ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•  ๋•Œ ์ฃผ๋กœ ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ, TOP-DOWN์˜ ์ ‘๊ทผ๋ฐฉ์‹์„ ์ทจํ•ฉ๋‹ˆ๋‹ค. ๋Œ€ํ‘œ์ ์œผ๋กœ C์–ธ์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ๊ฐ์ฒด์ง€ํ–ฅ (Object Oriented Programming): ํ˜„์‹ค์„ธ๊ณ„์˜ ์–ด๋–ค ๋Œ€์ƒ์„ ๋ชจ๋ธ๋งํ•˜๋Š”๊ฐ€์˜ ๊ด€์ ์œผ๋กœ ๋ฐ”๋ผ๋ณด๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋ฒ•์ž…๋‹ˆ๋‹ค. ๊ฐ์ฒด๋‚˜ ์„ธ๋ถ€๋ชจ๋ธ๋ถ€ํ„ฐ ๋””์ž์ธ๋˜์–ด BOTTOM-UP ๋ฐฉ์‹์œผ๋กœ ์กฐ๋ฆฝ๋ฉ๋‹ˆ๋‹ค.
    • ์ ˆ์ฐจ์ง€ํ–ฅ์ด ๊ธฐ๋Šฅ ์ค‘์‹ฌ์œผ๋กœ ํ•จ์ˆ˜๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ์‹์ด์—ˆ๋‹ค๋ฉด, ๊ฐ์ฒด์ง€ํ–ฅ์€ ๊ฐ์ฒด๊ฐ€ ๋˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์ค‘์‹ฌ์ด ๋˜์–ด ๊ฐ์ฒด๋“ค์ด ์œ ๊ธฐ์ ์œผ๋กœ ๋™์ž‘ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.
  6. ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด์˜ 4๋Œ€ ํŠน์ง•์€ ๋ฌด์—‡์ธ๊ฐ€? (+์ •๋ณด์€๋‹‰)
    • ์ถ”์ƒํ™”: ๋ถˆํ•„์š”ํ•œ ๋ถ€๋ถ„์€ ์ƒ๋žตํ•˜๊ณ  ์ค‘์š”ํ•œ ๋ถ€๋ถ„, ์ฆ‰ ๊ฐ์ฒด์˜ ๊ณตํ†ต์ ์ธ ์†์„ฑ๊ณผ ๊ธฐ๋Šฅ์„ ์ถ”์ถœํ•˜์—ฌ ์ •์˜ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. 
    • ์บก์Šํ™”: ๋ฐ์ดํ„ฐ์˜ ์ฝ”๋“œ์™€ ํ˜•ํƒœ๋ฅผ ์™ธ๋ถ€์—์„œ ์•Œ ์ˆ˜ ์—†๋„๋ก ํ•˜๋‚˜์˜ ์บก์Šํ˜•ํƒœ๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ๋œปํ•ฉ๋‹ˆ๋‹ค. ์ด๋กœ์ธํ•ด ์ •๋ณด์€๋‹‰์ด ๊ฐ€๋Šฅํ•ด์ง€๋ฉฐ ์ž์‹ ๋งŒ์˜ ์—ฐ์‚ฐ์„ ํ†ตํ•ด์„œ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
    • ์ƒ์†์„ฑ: ์ƒ์œ„ํด๋ž˜์Šค์˜ ๋ชจ๋“  ์†์„ฑ๊ณผ ์—ฐ์‚ฐ์„ ํ•˜์œ„ ํด๋ž˜์Šค๊ฐ€ ๋ฌผ๋ ค๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ํ•˜์œ„ํด๋ž˜์Šค๋Š” ์†์„ฑ๊ณผ ์—ฐ์‚ฐ์„ ๋‹ค์‹œ ์ •์˜ํ•˜์ง€ ์•Š๊ณ  ์ฆ‰์‹œ ์ž์‹ ์˜ ๊ฒƒ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ๋‹คํ˜•์„ฑ: ํ•˜๋‚˜์˜ ๋ฉ”์„ธ์ง€์— ๋Œ€ํ•ด ๊ฐ ๊ฐ์ฒด๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ณ ์œ ํ•œ ํŠน์„ฑ์œผ๋กœ ์‘๋‹ตํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค.
  7. Call By Value/ Call By Reference์˜ ์ฐจ์ด์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์‹œ์˜ค.
    • Call By Value : ํ•จ์ˆ˜ ํ˜ธ์ถœ์‹œ ์ „๋‹ฌ๋˜๋Š” ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ๋ณต์‚ฌํ•˜์—ฌ ์ธ์ž๋กœ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๋ณต์‚ฌ๋œ ์ธ์ž๋Š” ํ•จ์ˆ˜ ์•ˆ์—์„œ ์ง€์—ญ์ ์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. JAVA์˜ ๊ฒฝ์šฐ ์ „๋‹ฌ๋˜๋Š” ํƒ€์ž…์— ๋”ฐ๋ผ์„œ ํ˜ธ์ถœ ๋ฐฉ์‹์ด ๋‹ฌ๋ผ์ง€๋Š”๋ฐ, ๊ธฐ๋ณธ ์ž๋ฃŒํ˜•์˜ ๊ฒฝ์šฐ์—๋Š” call by value๋กœ ๋™์ž‘ํ•˜๊ณ , Array๋‚˜ Class Instance์™€ ๊ฐ™์€ ์ฐธ์กฐ์ž๋ฃŒํ˜•์€ call by reference๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.
    • Call By Reference : ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋  ๋•Œ ์ธ์ž๋กœ ๋ณ€์ˆ˜์˜ ๋ ˆํผ๋Ÿฐ์Šค๋ฅผ ์ „๋‹ฌ, ์ฆ‰ ํ•ด๋‹น ๋ณ€์ˆ˜๋ฅผ ๊ฐ€๋ฅดํ‚ค๊ฒŒ ์ „๋‹ฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•จ์ˆ˜ ์•ˆ์—์„œ ์ธ์ž์˜ ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜๋ฉด ํ•จ์ˆ˜ ํ˜ธ์ถœ์‹œ์— ์žˆ๋˜ ๋ณ€์ˆ˜๋“ค๋„ ํ•จ๊ป˜ ๊ฐ’์ด ๋ฐ”๋€Œ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
  8. ์˜ค๋ฒ„๋ผ์ด๋“œ์™€ ์˜ค๋ฒ„๋ผ์ด๋”ฉ์˜ ์ฐจ์ด๋Š”?
    • ์˜ค๋ฒ„๋ผ์ด๋”ฉ (Overriding): ์ƒ์œ„ ํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ๋ฅผ ํ•˜์œ„ ํด๋ž˜์Šค๊ฐ€ ์žฌ์ •์˜ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ƒ์œ„ ํด๋ž˜์Šค์˜ ๋™์ž‘์„ ํ•˜์œ„ ํด๋ž˜์Šค์—์„œ ๋ณ€๊ฒฝํ•˜๊ธฐ ์œ„ํ•ด ์ฃผ๋กœ ์‚ฌ์šฉ๋˜๋Š”๋ฐ, ์ด๋•Œ ๋ฉ”์„œ๋“œ์˜ ์ด๋ฆ„, ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ๊ฐฏ์ˆ˜๋‚˜ ํƒ€์ž…๊นŒ์ง€ ๋ชจ๋‘ ๋™์ผํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.
    • ์˜ค๋ฒ„๋กœ๋”ฉ (Overroading): ๋ฉ”์„œ๋“œ์˜ ์ด๋ฆ„๋งŒ ๊ฐ™๊ณ  ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๊ฐœ์ˆ˜๋‚˜ ํƒ€์ž…์ด ๋‹ค๋ฅธ ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฆฌํ„ด๊ฐ’๋งŒ ๋‹ค๋ฅด๊ฒŒ ๊ฐ–๋Š” ์˜ค๋ฒ„๋กœ๋”ฉ์€ ์ž‘์„ฑํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  9. HTTP ๊ด€๋ จ ์งˆ๋ฌธ๋“ค
    • HTTP๋ž€? : 
    • HTTP RESTFUL :
    • HTTP ์‘๋‹ต์ฝ”๋“œ :
  10. DI (์˜์กด์„ฑ ์ฃผ์ž…)๋ž€ ๋ฌด์—‡์ธ๊ฐ€?
    • Dependency Injection์˜ ์ค„์ž„๋ง๋กœ ๊ฐ์ฒด๋ฅผ ์ง์ ‘ ์ƒ์„ฑํ•˜๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ์™ธ๋ถ€์—์„œ ์ƒ์„ฑํ•œ ํ›„ ์ฃผ์ž…์‹œ์ผœ์ฃผ๋Š” ๋ฐฉ์‹์„ ๋œปํ•ฉ๋‹ˆ๋‹ค. ์Šคํ”„๋ง์ด ๋‹ค๋ฅธ ํ”„๋ ˆ์ž„์›Œํฌ์™€ ์ฐจ๋ณ„ํ™”๋˜์–ด ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ์œผ๋กœ, DI๋ฅผ ํ†ตํ•ด์„œ ๋ชจ๋“ˆ ๊ฐ„์˜ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถ”๊ณ  ์œ ์—ฐ์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  11. IoC (์ œ์–ด์˜ ์—ญ์ „)๊ฐœ๋…์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์‹œ์˜ค
    • Inversion of Control์˜ ์ค„์ž„๋ง๋กœ, ๋ฉ”์†Œ๋“œ๋‚˜ ๊ฐ์ฒด์˜ ํ˜ธ์ถœ ์ž‘์—…์„ ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์™ธ๋ถ€์—์„œ ๊ฒฐ์ •ํ•จ์„ ๋œปํ•ฉ๋‹ˆ๋‹ค. ์ด ์—ญ์‹œ ์Šคํ”„๋ง์—์„œ ์ฐจ๋ณ„ํ™”๋˜๋Š” ๊ธฐ๋Šฅ์œผ๋กœ, ์™ธ๋ถ€ ์ฆ‰ ์Šคํ”„๋ง์ด ๋ชจ๋“  ์˜์กด์„ฑ ๊ฐ์ฒด๋ฅผ ์‹คํ–‰๋  ๋•Œ๋งˆ๋‹ค ๋งŒ๋“ค์–ด์ฃผ๊ณ  ํ•„์š”ํ•œ ๊ณณ์— ์ฃผ์ž…์‹œํ‚ด์œผ๋กœ์„œ ์ œ์–ด์˜ ํ๋ฆ„์„ ์‚ฌ์šฉ์ž/๊ฐœ๋ฐœ์ž๊ฐ€ ์ปจํŠธ๋กคํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์Šคํ”„๋ง์—๊ฒŒ ๋งก๊ฒจ ์ž‘์—…ํ•˜๊ฒŒ ๋˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  12. ์‹ฑ๊ธ€ํ†ค(Singleton) ํŒจํ„ด์ด๋ž€?
    • ๊ฐ„๋‹จํžˆ ๋งํ•˜์ž๋ฉด ๋ง ๊ทธ๋Œ€๋กœ ๊ฐ์ฒด์˜ ์ธ์Šคํ„ด์Šค๊ฐ€ ์˜ค์ง ๋‹จ ํ•œ ๊ฐœ๋งŒ ์ƒ์„ฑ๋˜๋Š” ํŒจํ„ด์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์˜ ์‚ฌ์šฉ ์ด์œ ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒƒ๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์ฒซ ๋ฒˆ์งธ๋กœ ๋ฉ”๋ชจ๋ฆฌ ์ธก๋ฉด์—์„œ ์ตœ์ดˆ ํ•œ ๋ฒˆ์˜ new ์—ฐ์‚ฐ์ž๋ฅผ ํ†ตํ•ด ๊ณ ์ •๋œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ถ”ํ›„ ๊ทธ ๊ฐ์ฒด์— ๊ณ„์†ํ•ด์„œ ์ ‘๊ทผํ•  ๋•Œ ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 
    • ๋˜ํ•œ ์‹ฑ๊ธ€ํ†ค ๊ฐ์ฒด๋ฅผ ํ˜ธ์ถœํ•จ์œผ๋กœ์„œ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋””์„œ๋“  ์ ‘๊ทผํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์ƒ์„ฑ) ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๋ฅผ private์œผ๋กœ ์„ ์–ธํ•˜์—ฌ ๋‹ค๋ฅธ ํด๋ž˜์Šค์—์„œ ์ƒ์„ฑํ•˜์ง€ ๋ชปํ•˜๋„๋ก ํ•˜๊ณ , ์ธ์Šคํ„ด์Šค๋ฅผ ๋ฆฌํ„ดํ•ด์ฃผ๋Š” ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ์ ‘๊ทผํ•ฉ๋‹ˆ๋‹ค.
  13. JSP์™€ Servlet
    • ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งํ•˜์ž๋ฉด Servlet์€ Java ์–ธ์–ด๋กœ ์ด๋ฃจ์–ด์ง„ ์›นํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฌธ์„œ์ด๊ณ , JSP๋Š” HTML ํŽ˜์ด์ง€ ๋‚ด์—์„œ Java ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • JSP (Java Server Page): ์ •์  ํŽ˜์ด์ง€์ธ HTML์— ์ž๋ฐ” ์ฝ”๋“œ๋ฅผ ์‚ฝ์ž…ํ•˜์—ฌ ๋™์  ํŽ˜์ด์ง€๋กœ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๊ธฐ์ˆ ์„ ๋œปํ•ฉ๋‹ˆ๋‹ค. ์›น ์„œ๋ฒ„์—์„œ ๋™์ ์œผ๋กœ ์›นํŽ˜์ด์ง€๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์›น ๋ธŒ๋ผ์šฐ์ €๋กœ ๋Œ๋ ค์ค๋‹ˆ๋‹ค. ์ด ๋•Œ ์›น ์„œ๋ฒ„์—์„œ๋Š” JSP ํŒŒ์ผ์„ ์„œ๋ธ”๋ฆฟ์œผ๋กœ ๋ณ€ํ™˜ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
    • Servlet: ์ž๋ฐ”๋ฅผ ์ด์šฉํ•˜์—ฌ ์›นํŽ˜์ด์ง€๋ฅผ ๋™์ ์œผ๋กœ ์ƒ์„ฑํ•˜๋Š” ์„œ๋ฒ„ ์ธก ํ”„๋กœ๊ทธ๋žจ์„ ๋งํ•œ๋‹ค. ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์— ๋™์ ์œผ๋กœ ์ž‘๋™ํ•˜๊ณ  ์‘๋‹ต์€ HTML์„ ์ด์šฉํ•ฉ๋‹ˆ๋‹ค.
    • MVC ํŒจํ„ด์—์„œ JSP๋Š” View๋‹จ์—, Servlet์€ Controller ๋‹จ์œผ๋กœ ์ด์šฉ๋ฉ๋‹ˆ๋‹ค.
  14. JVM (Java Virtual Machine)์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€
    • JVM์€ ๊ฐ„๋‹จํžˆ ๋งํ•˜์ž๋ฉด ์šด์˜์ฒด์ œ์™€ ํ”„๋กœ๊ทธ๋žจ ์‚ฌ์ด์— ์œ„์น˜ํ•˜์—ฌ ํ”„๋กœ๊ทธ๋žจ์ด OS์— ์ƒ๊ด€์—†์ด ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ค‘๊ณ„์ž ์—ญํ• ์„ ํ•˜๋Š” ๊ฐ€์ƒ๋จธ์‹ ์ž…๋‹ˆ๋‹ค.
    • ์ผ๋ฐ˜์ ์ธ ํ”„๋กœ๊ทธ๋žจ์€ ์ปดํŒŒ์ผ๊ณผ ๋งํ‚น์„ ๊ฑฐ์ณ์„œ Executable File(exeํŒŒ์ผ)์˜ ํ˜•ํƒœ๋กœ ์ƒ์„ฑ๋˜๊ณ  ์ด๋ฅผ ์šด์˜์ฒด์ œ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌ, CPU์— ๋ช…๋ น์–ด ํŒจ์น˜, ์ด๋ฅผ ๋””์ฝ”๋”ฉ ํ›„ ์‹คํ–‰ํ•˜๋Š” ๊ณผ์ •์„ ๊ฑฐ์นฉ๋‹ˆ๋‹ค.
    • ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ์˜ ๊ฒฝ์šฐ ์ž๋ฐ” ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ž๋ฐ” ์†Œ์ŠคํŒŒ์ผ(.java)์„ JAVA Byte Code(.class)๋กœ ๋ณ€๊ฒฝํ•˜๊ณ , ์ด๋Š” JVM ๋‚ด์˜ ํด๋ž˜์Šค ๋กœ๋”์— ๋กœ๋“œ๋˜๋ฉฐ, Execution Engine์ด ๋กœ๋”ฉ๋œ ํด๋ž˜์Šค์˜ Bytecode๋ฅผ ํ•ด์„(Interpret)ํ•ฉ๋‹ˆ๋‹ค.
    • ์ดํ›„ ํ•ด์„๋œ ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋“ค์€ JVM์ด OS๋กœ๋ถ€ํ„ฐ ํ• ๋‹น๋ฐ›์€ ๋ฉ”๋ชจ๋ฆฌ์˜์—ญ Runtime Data Area์— ๋ฐฐ์น˜๋˜์–ด ์‹ค์งˆ์ ์ธ ์ˆ˜ํ–‰์ด ์ด๋ค„์ง‘๋‹ˆ๋‹ค.
    • ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ JVM์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ช…์‹œ์ ์œผ๋กœ ํ•ด์ œํ•˜์ง€ ์•Š์€ ์“ฐ๋ ˆ๊ธฐ ๊ฐ์ฒด๋“ค์„ ์ฐพ์•„ ํ•ด์ œํ•˜๋Š” ์—ญํ• ๋„ ํ•ฉ๋‹ˆ๋‹ค. Heap ์˜์—ญ์„ ์œ„์ฃผ๋กœ ํƒ์ƒ‰ํ•˜๋ฉฐ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

 

 

 

 

 

 

 

 

 

๐Ÿ’Ž ๐Ÿ’Ž ๐Ÿ’Ž

 

 

๏ผฐ๏ฝ๏ฝ“๏ฝ”๏ฝ…๏ฝ„ ๏ผข๏ฝ™ ๏ผณ๏ผก๏ผน

๐˜›๐˜ฉ๐˜ข๐˜ฏ๐˜ฌ๐˜ด ๐˜ง๐˜ฐ๐˜ณ ๐˜ณ๐˜ฆ๐˜ข๐˜ฅ๐˜ช๐˜ฏ๐˜จ