[Java] Java, Spring ๋ฉด์ ‘ ์ค€๋น„

์ถœ์ฒ˜ ํ•ด๋‹น ๋ธ”๋กœ๊ทธ๋ฅผ ์ฐธ๊ณ ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

  1. JAVA

    JAVA๋Š” ๋„คํŠธ์›Œํฌ์ƒ์—์„œ ์“ธ ์ˆ˜ ์žˆ๋„๋ก ๋ฏธ๊ตญ์˜ ์„  ๋งˆ์ดํฌ๋กœ ์‹œ์Šคํ…œ์ฆˆ๊ฐ€ ๊ฐœ๋ฐœํ•œ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด

    JAVA์˜ ํŠน์ง•

    a. ์ž๋ฐ”๊ฐ€์ƒ๋จธ์‹ (JVM)๋งŒ ์„ค์น˜ํ•˜๋ฉด ์ปดํ“จํ„ฐ์˜ ์šด์˜์ฒด์ œ์— ์ƒ๊ด€์—†์ด ์ž‘๋™ํ•œ๋‹ค.(์ฆ‰, ์šด์˜์ฒด์ œ์— ๋…๋ฆฝ์ )
    
    b. ๊ธฐ๋ณธ ์ž๋ฃŒํ˜•์„ ์ œ์™ธํ•œ ๋ชจ๋“  ์š”์†Œ๋“ค์ด ๊ฐ์ฒด๋กœ ํ‘œํ˜„
    
    c. ๊ฐ์ฒด ์ง€ํ–ฅ ๊ฐœ๋…์˜ ํŠน์ง•์ธ ์บก์Šํ™”, ์ƒ์†, ๋‹คํ˜•์„ฑ์ด ์ž˜ ์ ์šฉ๋œ ์–ธ์–ด
    
    d. Garbage Collector๋ฅผ ํ†ตํ•œ ์ž๋™์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ
    
    e. ๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋“œ(Multi-thread)๋ฅผ ์ง€์›
    
  2. OOP(๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ)

    OOP๋ž€ Object-Oriented Programming์˜ ์•ฝ์–ด๋กœ์จ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์˜๋ฏธ

    ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ์ฒด๋กœ ์ทจ๊ธ‰ํ•˜์—ฌ ํ”„๋กœ๊ทธ๋žจ์— ๋ฐ˜์˜ํ•œ ๊ฒƒ์ด๋ฉฐ, ์ˆœ์ฐจ์ ์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ์ด ๋™์ž‘ํ•˜๋Š” ๊ธฐ์กด์˜ ๊ฒƒ๋“ค๊ณผ๋Š”

    ๋‹ค๋ฅด๊ฒŒ ๊ฐ์ฒด์™€ ๊ฐ์ฒด์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ํ†ตํ•ด ํ”„๋กœ๊ทธ๋žจ์ด ๋™์ž‘ํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค.

    OOP ํŠน์ง•

    a. ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์„ฑ์ด ๋†’๋‹ค.
    
    b. ์ฝ”๋“œ์˜ ๋ณ€๊ฒฝ์ด ์šฉ์ด
    
    c. ์ง๊ด€์ ์ธ ์ฝ”๋“œ๋ถ„์„
    
    d. ๊ฐœ๋ฐœ์†๋„ ํ–ฅ์ƒ
    
    e. ์ƒ์†์„ ํ†ตํ•œ ์žฅ์  ๊ทน๋Œ€ํ™”
    
  3. Object

    Object(๊ฐ์ฒด)๋Š” OOP์—์„œ ๋ฐ์ดํ„ฐ(๋ณ€์ˆ˜)์™€ ๊ทธ ๋ฐ์ดํ„ฐ์— ๊ด€๋ จ๋˜๋Š” ๋™์ž‘(ํ•จ์ˆ˜). ์ฆ‰ ์ ˆ์ฐจ, ๋ฐฉ๋ฒ•, ๊ธฐ๋Šฅ์„ ๋ชจ๋‘ ํฌํ•จํ•œ ๊ฐœ๋…

    ์˜ˆ)๊ธฐ์ฐจ์—ญ์—์„œ ์Šน์ฐจ๊ถŒ์„ ๋ฐœ๋งคํ•˜๋Š” ๊ฒฝ์šฐ, ์‹ค์ฒด์ธ โ€˜์†๋‹˜โ€™๊ณผ ๋™์ž‘์ธ โ€˜์Šน์ฐจ๊ถŒ ์ฃผ๋ฌธโ€™์€ ํ•˜๋‚˜์˜ ๊ฐ์ฒด์ด๋ฉฐ, ์‹ค์ฒด์ธ โ€˜์—ญ๋ฌด์›โ€™๊ณผ

    ๋™์ž‘์ธ โ€˜์Šน์ฐจ๊ถŒ ๋ฐœ๋งคโ€™๋„ ํ•˜๋‚˜์˜ ๊ฐ์ฒด์ด๋‹ค.

    ๊ฐ™์€ ์„ฑ์งˆ, ๊ฐ™์€ ๊ตฌ์กฐ์™€ ํ˜•ํƒœ๋ฅผ ๊ฐ€์ง€๋Š” ๊ฐ์ฒด๋Š” ๋“ฑ๊ธ‰์œผ๋กœ ์ •์˜ํ•˜๊ณ  ๋“ฑ๊ธ‰์— ์†ํ•˜๋Š” ๊ฐ์ฒด๋Š” ๊ทธ ๋“ฑ๊ธ‰์˜ ์ธ์Šคํ„ด์Šค๋ผ๊ณ  ํ•œ๋‹ค.

  4. Overloading vs Overriding ( ํ•œ๋ฒˆ๊ณต๋ถ€ํ• ๋•Œ ํ™•์‹คํžˆ ์ฐจ์ด๋ฅผ ์•Œ์•„๋‘˜ ๊ฒƒ, ํ‰์†Œ์— ์•Œ๊ณ  ์žˆ์–ด๋„ ํ—ท๊ฐˆ๋ฆผ)

    Overloading(์˜ค๋ฒ„๋กœ๋”ฉ)

    • ๊ฐ™์€ ์ด๋ฆ„์˜ ๋ฉ”์†Œ๋“œ๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ ์ •์˜ํ•˜๋Š” ๊ฒƒ

    • ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ํƒ€์ž…์ด ๋‹ค๋ฅด๊ฑฐ๋‚˜ ๊ฐœ์ˆ˜๊ฐ€ ๋‹ฌ๋ผ์•ผ ํ•œ๋‹ค.

    • return type๊ณผ ์ ‘๊ทผ ์ œ์–ด์ž๋Š” ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์Œ.

    Overriding(์˜ค๋ฒ„๋ผ์ด๋”ฉ)

    • ์ƒ์†์—์„œ ๋‚˜์˜จ ๊ฐœ๋…

    • ์ƒ์œ„ ํด๋ž˜์Šค(๋ถ€๋ชจ ํด๋ž˜์Šค)์˜ ๋ฉ”์†Œ๋“œ๋ฅผ ํ•˜์œ„ ํด๋ž˜์Šค(์ž์‹ ํด๋ž˜์Šค)์—์„œ ์žฌ์ •์˜

  5. Servlet, JSP

    Servlet - Container๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ๊ตฌ์„ฑ๋œ ์ˆœ์ˆ˜ ์ž๋ฐ” ์ฝ”๋“œ๋กœ๋งŒ ์ด๋ฃจ์–ด์ง„ ๊ฒƒ(Html in JAVA)

    JSP(Java Server Page) - html๊ธฐ๋ฐ˜์— JAVA์ฝ”๋“œ๋ฅผ ๋ธ”๋กํ™”ํ•˜์—ฌ ์‚ฝ์ž…ํ•œ ๊ฒƒ(JAVA in Html)

  6. JDBC

    Java Data Base Connection์˜ ์•ฝ์ž๋กœ JAVA ์–ธ์–ด๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์— ์ ‘๊ทผ ํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์˜๋ฏธ

  7. Get๊ณผ Post ๋ฐฉ์‹

    Get ๋ฐฉ์‹

    • ํด๋ผ์ด์–ธํŠธ์—์„œ ์„œ๋ฒ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•  ๋•Œ, ์ฃผ์†Œ ๋’ค์— โ€œ์ด๋ฆ„โ€๊ณผ โ€œ๊ฐ’โ€์ด ๊ฒฐํ•ฉ๋œ ์ŠคํŠธ๋ง ํ˜•ํƒœ๋กœ ์ „๋‹ฌ

    • ์ฃผ์†Œ์ฐฝ์— ์ฟผ๋ฆฌ ์ŠคํŠธ๋ง์ด ๊ทธ๋Œ€๋กœ ๋ณด์—ฌ์ง€๊ธฐ ๋•Œ๋ฌธ์— ๋ณด์•ˆ์„ฑ์ด ๋–จ์–ด์ง„๋‹ค.

    • ๊ธธ์ด์— ์ œํ•œ์ด ์žˆ๋‹ค.(=์ „์†ก ๋ฐ์ดํ„ฐ์˜ ํ•œ๊ณ„๊ฐ€ ์žˆ๋‹ค.)

    • Post๋ฐฉ์‹๋ณด๋‹ค ์ƒ๋Œ€์ ์œผ๋กœ ์ „์†ก ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค.

    Post ๋ฐฉ์‹

    • ์ผ์ • ํฌ๊ธฐ ์ด์ƒ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด์•ผ ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

    • ์„œ๋ฒ„๋กœ ๋ณด๋‚ด๊ธฐ ์ „์— ์ธ์ฝ”๋”ฉํ•˜๊ณ , ์ „์†ก ํ›„ ์„œ๋ฒ„์—์„œ๋Š” ๋‹ค์‹œ ๋””์ฝ”๋”ฉ ์ž‘์—…์„ ํ•œ๋‹ค.

    • ์ฃผ์†Œ์ฐฝ์— ์ „์†กํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์ •๋ณด๊ฐ€ ๋…ธ์ถœ๋˜์ง€ ์•Š์•„ Get๋ฐฉ์‹์— ๋น„ํ•ด ๋ณด์•ˆ์„ฑ์ด ๋†’๋‹ค.

    • ์†๋„๊ฐ€ Get๋ฐฉ์‹๋ณด๋‹ค ๋Š๋ฆฌ๋‹ค.

    • ์ฟผ๋ฆฌ์ŠคํŠธ๋ง(๋ฌธ์ž์—ด) ๋ฐ์ดํ„ฐ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ๋ผ๋””์˜ค ๋ฒ„ํŠผ, ํ…์ŠคํŠธ ๋ฐ•์Šค ๊ฐ™์€ ๊ฐ์ฒด๋“ค์˜ ๊ฐ’๋„ ์ „์†ก๊ฐ€๋Šฅ.

    Get๊ณผ Post ์ฐจ์ด์ 

    • Get์€ ์ฃผ๋กœ ์›น ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์›น ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•  ๋•Œ ์‚ฌ์šฉ

    • Post๋Š” ์›น ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์›น ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ.

    • Get์„ ์‚ฌ์šฉํ•˜๋ฉด ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ ์›น ์„œ๋ฒ„๋กœ ์ „๋‹ฌ๋˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์ธ์ฝ”๋”ฉ๋˜์–ด URL์— ๋ถ™๋Š”๋‹ค.

    • Post๋ฐฉ์‹์€ ์ „๋‹ฌ๋˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณด์ด์ง€ ์•Š๋Š”๋‹ค.

    • Get๋ฐฉ์‹์€ ์ „๋‹ฌ๋˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ 255๊ฐœ์˜ ๋ฌธ์ž๋ฅผ ์ดˆ๊ณผํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

    • ์›น์„œ๋ฒ„์— ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” Post ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•˜๋‹ค.

  8. Session๊ณผ Cookie

    Session๊ณผ Cookie ์‚ฌ์šฉ ์ด์œ 

    • ํ˜„์žฌ ์šฐ๋ฆฌ๊ฐ€ ์ธํ„ฐ๋„ท์—์„œ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” HTTPํ”„๋กœํ† ์ฝœ์€ ์—ฐ๊ฒฐ ์ง€ํ–ฅ์ ์ธ ์„ฑ๊ฒฉ์„ ๋ฒ„๋ ธ๊ธฐ ๋•Œ๋ฌธ์— ์ƒˆ๋กœ์šด ํŽ˜์ด์ง€๋ฅผ ์š”์ฒญํ•  ๋•Œ๋งˆ๋‹ค

    ์ƒˆ๋กœ์šด ์ ‘์†์ด ์ด๋ฃจ์–ด์ง€๋ฉฐ ์ด์ „ ํŽ˜์ด์ง€์™€ ํ˜„์žฌ ํŽ˜์ด์ง€ ๊ฐ„์˜ ๊ด€๊ณ„๊ฐ€ ์ง€์†๋˜์ง€ ์•Š๋Š”๋‹ค. ์ด์— ๋”ฐ๋ผ HTTPํ”„๋กœํ† ์ฝœ์„ ์ด์šฉํ•˜๊ฒŒ ๋˜๋Š”

    ์›น์‚ฌ์ดํŠธ์—์„œ๋Š” ์›นํŽ˜์ด์ง€์— ํŠน์ • ๋ฐฉ๋ฌธ์ž๊ฐ€ ๋จธ๋ฌด๋ฅด๊ณ  ์žˆ๋Š” ๋™์•ˆ์— ๊ทธ ๋ฐฉ๋ฌธ์ž์˜ ์ƒํƒœ๋ฅผ ์ง€์†์‹œํ‚ค๊ธฐ ์œ„ํ•ด ์ฟ ํ‚ค์™€ ์„ธ์…˜์„ ์ด์šฉํ•œ๋‹ค.

    Session

    • ํŠน์ • ์›น์‚ฌ์ดํŠธ์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ ๋จธ๋ฌด๋ฅด๋Š” ๊ธฐ๊ฐ„ ๋˜๋Š” ํ•œ ๋ช…์˜ ์‚ฌ์šฉ์ž์˜ ํ•œ๋ฒˆ์˜ ๋ฐฉ๋ฌธ์„ ์˜๋ฏธํ•œ๋‹ค.

    • Session์— ๊ด€๋ จ๋œ ๋ฐ์ดํ„ฐ๋Š” Server์— ์ €์žฅ๋œ๋‹ค.

    • ์›น ๋ธŒ๋ผ์šฐ์ €์˜ ์บ์‹œ์— ์ €์žฅ๋˜์–ด ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋‹ซํžˆ๊ฑฐ๋‚˜ ์„œ๋ฒ„์—์„œ ์‚ญ์ œ์‹œ ์‚ฌ๋ผ์ง„๋‹ค.

    • Cookie์— ๋น„ํ•ด ๋ณด์•ˆ์„ฑ์ด ์ข‹๋‹ค.

    Cookie

    • ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ์œ ์ง€ํ•  ์ˆ˜ ์—†๋‹ค๋Š” HTTP์˜ ํ•œ๊ณ„๋ฅผ ๊ทน๋ณตํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•

    • ์ธํ„ฐ๋„ท ์›น ์‚ฌ์ดํŠธ์˜ ๋ฐฉ๋ฌธ ๊ธฐ๋ก์„ ๋‚จ๊ฒจ ์‚ฌ์šฉ์ž์™€ ์›น ์‚ฌ์ดํŠธ ์‚ฌ์ด๋ฅผ ๋งค๊ฐœํ•ด ์ฃผ๋Š” ์ •๋ณด์ด๋‹ค.

    • Cookie๋Š” ์ธํ„ฐ๋„ท ์‚ฌ์šฉ์ž๊ฐ€ ํŠน์ • ์›น์„œ๋ฒ„์— ์ ‘์†ํ•  ๋•Œ, ์ƒ์„ฑ๋˜๋Š” ๊ฐœ์ธ ์•„์ด๋””์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ, ๋ฐฉ๋ฌธํ•œ ์‚ฌ์ดํŠธ์˜ ์ •๋ณด๋ฅผ ๋‹ด์€ ์ž„์‹œ ํŒŒ์ผ๋กœ์จ,

      Server๊ฐ€ ์•„๋‹Œ Client์— ํ…์ŠคํŠธ ํŒŒ์ผ๋กœ ์ €์žฅ๋˜์–ด ๋‹ค์Œ์— ํ•ด๋‹น ์›น์„œ๋ฒ„๋ฅผ ์ฐพ์„ ๊ฒฝ์šฐ ์›น์„œ๋ฒ„์—์„œ๋Š” ๊ทธ๊ฐ€ ๋ˆ„๊ตฌ์ธ์ง€ ์–ด๋–ค ์ •๋ณด๋ฅผ ์ฃผ๋กœ ์ฐพ์•˜๋Š”์ง€ ๋“ฑ์„ ํŒŒ์•…ํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค.

    • Cookie๋Š” Client PC์— ์ €์žฅ๋˜๋Š” ์ •๋ณด๊ธฐ ๋•Œ๋ฌธ์—, ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์— ์˜ํ•ด์„œ ์ž„์˜๋กœ ๋ณ€๊ฒฝ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.(์ •๋ณด ์œ ์ถœ ๊ฐ€๋Šฅ, Session๋ณด๋‹ค ๋ณด์•ˆ์„ฑ์ด ๋‚ฎ์€ ์ด์œ )

    Q. ๋ณด์•ˆ์„ฑ์ด ๋‚ฎ์€ Cookie ๋Œ€์‹  Session์„ ์‚ฌ์šฉํ•˜๋ฉด ๋˜๋Š”๋ฐ ์•ˆํ•˜๋Š” ์ด์œ ?

    A. ๋ชจ๋“  ์ •๋ณด๋ฅผ Session์— ์ €์žฅํ•˜๋ฉด Server์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ณผ๋„ํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜์–ด Server์— ๋ฌด๋ฆฌ๊ฐ€ ๊ฐ

  9. MVC ํŒจํ„ด

    MVC๋ž€?

    • ๊ฐ์ฒด์ง€ํ–ฅํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ, MVC๋ž€ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์„ฑ๊ณต์ ์ด๋ฉฐ ํšจ๊ณผ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ ๋ชจํ˜•์— ๊ด€๋ จ ์‹œํ‚ค๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•๋ก  ๋˜๋Š” ์„ค๊ณ„ ๋ฐฉ์‹์ค‘ ํ•˜๋‚˜์ด๋‹ค. MVC๋ฐฉ์‹์€ ์ž๋ฐ”, Smalltalk,

    • MVC ํŒจํ„ด์€ ๋ชฉ์  ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์— ์œ ์šฉํ•œ ๊ฒƒ์€ ๋ฌผ๋ก , ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค์™€ ์‘์šฉํ”„๋กœ๊ทธ๋žจ ๊ฐœ๋ฐœ์— ์†Œ์š”๋˜๋Š” ์‹œ๊ฐ„์„ ํ˜„์ €ํ•˜๊ฒŒ ์ค„์—ฌ์ฃผ๋Š” ํ˜•์‹์ด๋ผ๊ณ  ๋งŽ์€ ๊ฐœ๋ฐœ์ž๋“ค์ด ํ‰๊ฐ€ํ•˜๊ณ  ์žˆ๋‹ค.

    MVC ๊ตฌ์„ฑ์š”์†Œ

    Model - ์†Œํ”„ํŠธ์›จ์–ด ์‘์šฉ๊ณผ ๊ทธ์™€ ๊ด€๋ จ๋œ ๊ณ ๊ธ‰ ํด๋ž˜์Šค ๋‚ด์˜ ๋…ผ๋ฆฌ์  ๋ฐ์ดํ„ฐ ๊ธฐ๋ฐ˜ ๊ตฌ์กฐ๋ฅผ ํ‘œํ˜„. ์ด ๋ชฉ์  ๋ชจํ˜•์€ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค์— ๊ด€ํ•œ ์–ด๋– ํ•œ ์ •๋ณด๋„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š๋‹ค.

    View - ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค ๋‚ด์˜ ๊ตฌ์„ฑ์š”์†Œ๋“ค์„ ํ‘œํ˜„(์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ง€๋Š” ํ™”๋ฉด)

    Controller - Model๊ณผ View๋ฅผ ์—ฐ๊ฒฐํ•˜๊ณ  ์žˆ๋Š” ํด๋ž˜์Šค๋ฅผ ๋Œ€ํ‘œ, Model๊ณผ View ๋‚ด์˜ ํด๋ž˜์Šค๋“ค ๊ฐ„ ์ •๋ณด ๊ตํ™˜ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ.

  10. Interface, Abstract

    Interface

    • ์ผ์ข…์˜ ์ถ”์ƒ ํด๋ž˜์Šค

    • ์˜ค์ง ์ถ”์ƒ๋ฉ”์„œ๋“œ์™€ ์ƒ์ˆ˜๋งŒ์„ ๋ฉค๋ฒ„๋กœ ๊ฐ–๋Š”๋‹ค.

    • Implements ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉ

    • ์ƒ์†์˜ ๊ด€๊ณ„๊ฐ€ ์—†๋Š” ํด๋ž˜์Šค๊ฐ„ ์„œ๋กœ ๊ณตํ†ต๋˜๋Š” ๋กœ์ง์„ ๊ตฌํ˜„ํ•˜์—ฌ ์“ธ ์ˆ˜ ์žˆ๋„๋กํ•œ๋‹ค.

    • Extends๋Š” ํ•˜๋‚˜์˜ ํด๋ž˜์Šค๋งŒ ์ƒ์† ๊ฐ€๋Šฅํ•˜๋‚˜ Interface๋Š” ๋‹ค์ค‘ ์ƒ์†์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

    Abstract

    • ์ถ”์ƒ๋ฉ”์„œ๋“œ๋ฅผ ํ•˜๋‚˜ ์ด์ƒ ๊ฐ€์ง„ ํด๋ž˜์Šค

    • ์ž์‹ ์˜ ์ƒ์„ฑ์ž๋กœ ๊ฐ์ฒด ์ƒ์„ฑ ๋ถˆ๊ฐ€๋Šฅ

    • ํ•˜์œ„ ํด๋ž˜์Šค๋ฅผ ์ฐธ์กฐํ•˜์—ฌ ์ƒ์œ„ ํด๋ž˜์Šค์˜ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑ

    • ํ•˜์œ„ ํด๋ž˜์Šค๋ฅผ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ

    Interface vs Abstract

    ๊ณตํ†ต์ 

    • new ์—ฐ์‚ฐ์ž๋กœ ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ ๋ถˆ๊ฐ€๋Šฅ.

    • ํ”„๋กœํ† ํƒ€์ž…๋งŒ ์žˆ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ–๋Š”๋‹ค.

    • ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ•˜์œ„ํด๋ž˜์Šค์—์„œ ํ™•์žฅ/๊ตฌํ˜„ ํ•ด์•ผ ํ•œ๋‹ค.

    ์ฐจ์ด์ 

    • ์‚ฌ์šฉํ•˜๋Š” ํ‚ค์›Œ๋“œ๊ฐ€ ๋‹ค๋ฅด๋‹ค.

    • Abstract๋Š” ์ผ๋ฐ˜ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, Interface๋Š” ๋ฉ”์„œ๋“œ ์„ ์–ธ๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค.

  11. Call by Reference, Call by Value

    Call by Reference - ๋งค๊ฐœ ๋ณ€์ˆ˜์˜ ์›๋ž˜ ์ฃผ์†Œ์— ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹. ํด๋ž˜์Šค ๊ฐ์ฒด๋ฅผ ์ธ์ˆ˜๋กœ ์ „๋‹ฌํ•œ ๊ฒฝ์šฐ

    Call by Value - ์ธ์ˆ˜๋กœ ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐํ˜•์„ ์‚ฌ์šฉ. ์ฃผ์–ด์ง„ ๊ฐ’์„ ๋ณต์‚ฌํ•˜์—ฌ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹. ๋ฉ”์„œ๋“œ ๋‚ด์˜ ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ๋Š” ๋ฉ”์„œ๋“œ ๋ฐ–์˜ ๋ณ€์ˆ˜์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š๋Š”๋‹ค.

  12. Static์˜ ์˜๋ฏธ

    • ํด๋ž˜์Šค๊ฐ€ ๋กœ๋”ฉ๋  ๋•Œ, ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ํ• ๋‹นํ•˜๋Š”๋ฐ ์ฒ˜์Œ ์„ค์ •๋œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด ๋ณ€ํ•˜์ง€ ์•Š์Œ์„ ์˜๋ฏธ

    • ๊ฐ์ฒด๋ฅผ ์•„๋ฌด๋ฆฌ ๋งŽ์ด ๋งŒ๋“ค์–ด๋„ ํ•ด๋‹น ๋ณ€์ˆ˜๋Š” ํ•˜๋‚˜๋งŒ ์กด์žฌ(๊ฐ์ฒด์™€ ๋ฌด๊ด€ํ•œ ํ‚ค์›Œ๋“œ)

  13. Framework

    • ํŠน์ • ํ˜•ํƒœ์˜ ์†Œํ”„ํŠธ์›จ์–ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ƒํ˜ธ ํ˜‘๋ ฅํ•˜๋Š” ํด๋ž˜์Šคํ”„๋ ˆ์ž„๊ณผ ์ธํ„ฐํŽ˜์ด์Šค ํ”„๋ ˆ์ž„์˜ ์ง‘ํ•ฉ
    • ํŠน์ •ํ•œ ํ‹€์„ ๋งŒ๋“ค์–ด๋†“๊ณ  ๊ฑฐ๊ธฐ์— ์‚ด์„ ๋ถ™์—ฌ ๋†“์Œ์œผ๋กœ์จ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค์–ด ์ž‘์—…์‹œ๊ฐ„์„ ์ค„์—ฌ์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.
    • ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ํŠน์ • ๊ฐœ๋…๋“ค์˜ ์ถ”์ƒํ™”๋ฅผ ์ œ๊ณตํ•˜๋Š” ์—ฌ๋Ÿฌ ํด๋ž˜์Šค๋‚˜ ์ปดํฌ๋„ŒํŠธ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.
    • ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ์ด๋ ‡๊ฒŒ ์ถ”์ƒ์ ์ธ ๊ฐœ๋…๋“ค์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ™์ด ์ž‘์—…ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •์˜ํ•œ๋‹ค.
    • ํ”„๋ ˆ์ž„์›Œํฌ ์ปดํฌ๋„ŒํŠธ ๋“ค์€ ์žฌ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
    • ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ์ข€ ๋” ๋†’์€ ์ˆ˜์ค€์—์„œ ํŒจํ„ด์„ ์กฐ์ž‘ํ•œ๋‹ค.

    ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์ค‘์š”ํ•œ ์ด์œ ๋Š” ๊ฐ์ฒด์ง€ํ–ฅ ๊ฐœ๋ฐœ์„ ํ•˜๊ฒŒ ๋˜๋ฉด์„œ ๊ฐœ๋ฐœ์ž์˜ ์ทจํ–ฅ์— ๋”ฐ๋ผ ๋‹ค์–‘ํ•œ ํ”„๋กœ๊ทธ๋žจ์ด ๋‚˜์˜ค๊ฒŒ ๋˜์—ˆ๋‹ค.

    ํ”„๋กœ๊ทธ๋žจ ๊ฐœ๋ฐœ์— ํˆฌ์ž…๋˜๋Š” ๊ฐœ๋ฐœ์ž๋„ ์ ์  ๋Š˜์–ด๋‚จ์— ๋”ฐ๋ผ ์ „์ฒด ์‹œ์Šคํ…œ์˜ ํ†ตํ•ฉ์„ฑ, ์ผ๊ด€์„ฑ์ด ๋ถ€์กฑํ•˜๊ฒŒ ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

    ๊ทธ๋ž˜์„œ ๊ฐœ๋ฐœ์ž์˜ ์ž์œ ๋ฅผ ์ œํ•œํ•˜๊ธฐ ์œ„ํ•ด ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๋„์ž…ํ–ˆ๋‹ค.

    ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ๊ฐ€์ ธ์•ผํ•  ํŠน์ง•

    a. ๊ฐœ๋ฐœ์ž๋“ค์ด ๋”ฐ๋ผ์•ผํ•  ๊ฐ€์ด๋“œ๋ผ์ธ์„ ๊ฐ€์ง„๋‹ค.

    b. ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ”์œ„๊ฐ€ ์ •ํ•ด์ ธ ์žˆ๋‹ค.

    c. ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ๋„๊ตฌ๋“ค์ด ์ง€์›๋œ๋‹ค.

    ํ”„๋ ˆ์ž„์›Œํฌ์˜ ์žฅ/๋‹จ์ 

    ์žฅ์  - ๊ฐœ๋ฐœ ์‹œ๊ฐ„์„ ์ค„์ผ ์ˆ˜ ์žˆ๊ณ  ์˜ค๋ฅ˜๋กœ๋ถ€ํ„ฐ ์ž์œ ๋กœ์šธ ์ˆ˜ ์žˆ๋‹ค.

    ๋‹จ์  - ํ”„๋ ˆ์ž„์›Œํฌ์— ๋„ˆ๋ฌด ์˜์กดํ•˜๋ฉด ๊ฐœ๋ฐœ ๋Šฅ๋ ฅ์ด ๋–จ์–ด์ ธ์„œ ํ”„๋ ˆ์ž„์›Œํฌ ์—†์ด ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•ด์ง€๋Š” ์ ์ด๋‹ค.

  14. Garbage Collection(๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜)

    ์‹œ์Šคํ…œ์—์„œ ๋”์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋™์  ํ• ๋‹น๋œ ๋ฉ”๋กœ๋ฆฌ ๋ธ”๋Ÿญ์„ ์ฐพ์•„ ์ž๋™์œผ๋กœ ๋‹ค์‹œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ž์›์œผ๋กœ ํšŒ์ˆ˜ํ•˜๋Š” ๊ฒƒ์œผ๋กœ

    ์‹œ์Šคํ…œ์—์„œ ๊ฐ€๋น„์ง€์ปฌ๋ ‰์…˜์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ถ€๋ถ„์„ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๋ผ ๋ถ€๋ฅธ๋‹ค.

  15. Primitive type๊ณผ Reference type

    Primitive type - ๋ณ€์ˆ˜์— ๊ฐ’ ์ž์ฒด๋ฅผ ์ €์žฅ

    ์ •์ˆ˜ํ˜• byte, short, int, long

    ์‹ค์ˆ˜ํ˜• float, double

    ๋ฌธ์žํ˜• char

    ๋…ผ๋ฆฌํ˜• boolean

    • Primitive type์€ Wrapper Class๋ฅผ ํ†ตํ•ด ๊ฐ์ฒด๋กœ ๋ณ€ํ˜•ํ•  ์ˆ˜ ์žˆ๋‹ค.

    ์˜ˆ) intโ†’Integer, charโ†’Character(int์™€ char๋ฅผ ์ œ์™ธํ•œ Primitive type์˜ ๋‹ค๋ฅธ ์ž๋ฃŒํ˜•๋“ค์€ ๋งจ ์•ž ์•ŒํŒŒ๋ฒณ์„ ๋Œ€๋ฌธ์ž๋กœ ๋ฐ”๊ฟ”์ฃผ๋ฉด ๋œ๋‹ค. floatโ†’Float)

    Reference type - ๋ฉ”๋ชจ๋ฆฌ์ƒ์— ๊ฐ์ฒด๊ฐ€ ์žˆ๋Š” ์œ„์น˜๋ฅผ ์ €์žฅ

    ์ข…๋ฅ˜ - Class, Interface, Array ๋“ฑ

  16. Wrapper Class

    Primitive type์œผ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ„๋‹จํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ์ฒด๋กœ ๋งŒ๋“ค์–ด์•ผ ํ•  ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋Š”๋ฐ ๊ทธ๋Ÿฌํ•œ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜๋Š” ํด๋ž˜์Šค

  17. Spring Framework(์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ)

    ์ž๋ฐ”(JAVA) ํ”Œ๋žซํผ์„ ์œ„ํ•œ ์˜คํ”ˆ์†Œ์Šค(Open Source) ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋ ˆ์ž„์›Œํฌ(Framework)

    ์ž๋ฐ” ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ฐœ๋ฐœ์„ ํŽธํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ์˜คํ”ˆ ์†Œ์Šค ๊ฒฝ๋Ÿ‰๊ธ‰ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋ ˆ์ž„์›Œํฌ

    ์ž๋ฐ” ๊ฐœ๋ฐœ์„ ์œ„ํ•œ ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ์ข…์† ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด์ฃผ๊ณ , ์กฐ๋ฆฝํ•ด์ฃผ๋Š” ๋„๊ตฌ

    ์ž๋ฐ”๋กœ ๋œ ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ์ž๋ฐ”SE๋กœ ๋œ ์ž๋ฐ” ๊ฐ์ฒด(POJO)๋ฅผ ์ž๋ฐ”EE์— ์˜์กด์ ์ด์ง€ ์•Š๊ฒŒ ์—ฐ๊ฒฐํ•ด์ฃผ๋Š” ์—ญํ• 

    ์Šคํ”„๋ง ํŠน์ง• ๊ฐ„๋‹จํžˆ

    • ํฌ๊ธฐ์™€ ๋ถ€ํ•˜์˜ ์ธก๋ฉด์—์„œ ๊ฒฝ๋Ÿ‰.

    • ์ œ์–ด ์—ญํ–‰(IoC)์ด๋ผ๋Š” ๊ธฐ์ˆ ์„ ํ†ตํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋Š์Šจํ•œ ๊ฒฐํ•ฉ์„ ๋„๋ชจ

    • ๊ด€์ ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(AOP)์„ ์œ„ํ•œ ํ’๋ถ€ํ•œ ์ง€์›

    • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐ์ฒด์˜ ์ƒ๋ช… ์ฃผ๊ธฐ์™€ ์„ค์ •์„ ํฌํ•จํ•˜๊ณ  ๊ด€๋ฆฌํ•œ๋‹ค๋Š” ์ ์—์„œ ์ผ์ข…์˜ ์ปจํ…Œ์ด๋„ˆ(Container)๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Œ

    • ๊ฐ„๋‹จํ•œ ์ปดํฌ๋„ŒํŠธ๋กœ ๋ณต์žกํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์„ฑํ•˜๊ณ  ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Œ

    ์Šคํ”„๋ง ํŠน์ง• ์ž์„ธํžˆ

    a. ๊ฒฝ๋Ÿ‰ ์ปจํ…Œ์ด๋„ˆ๋กœ์„œ ์ž๋ฐ” ๊ฐ์ฒด๋ฅผ ์ง์ ‘ ๊ด€๋ฆฌ.

    ๊ฐ๊ฐ์˜ ๊ฐ์ฒด ์ƒ์„ฑ, ์†Œ๋ฉธ๊ณผ ๊ฐ™์€ ๋ผ์ดํ”„ ์‚ฌ์ดํด์„ ๊ด€๋ฆฌํ•˜๋ฉฐ ์Šคํ”„๋ง์œผ๋กœ๋ถ€ํ„ฐ ํ•„์š”ํ•œ ๊ฐ์ฒด๋ฅผ ์–ป์–ด์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

    b. ์Šคํ”„๋ง์€ POJO(Plain Old Java Object) ๋ฐฉ์‹์˜ ํ”„๋ ˆ์ž„์›Œํฌ.

    ์ผ๋ฐ˜์ ์ธ J2EE ํ”„๋ ˆ์ž„์›Œํฌ์— ๋น„ํ•ด ๊ตฌํ˜„์„ ์œ„ํ•ด ํŠน์ •ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๊ฑฐ๋‚˜ ์ƒ์†์„ ๋ฐ›์„ ํ•„์š”๊ฐ€ ์—†์–ด ๊ธฐ์กด์—

    ์กด์žฌํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋“ฑ์„ ์ง€์›ํ•˜๊ธฐ์— ์šฉ์ดํ•˜๊ณ  ๊ฐ์ฒด๊ฐ€ ๊ฐ€๋ณ๋‹ค.

    c. ์Šคํ”„๋ง์€ ์ œ์–ด์˜ ์—ญํ–‰(IoC : Inversion of Control)์„ ์ง€์›.

    ์ปจํŠธ๋กค์˜ ์ œ์–ด๊ถŒ์ด ์‚ฌ์šฉ์ž๊ฐ€ ์•„๋‹ˆ๋ผ ํ”„๋ ˆ์ž„์›Œํฌ์— ์žˆ์–ด์„œ ํ•„์š”์— ๋”ฐ๋ผ ์Šคํ”„๋ง์—์„œ ์‚ฌ์šฉ์ž์˜ ์ฝ”๋“œ๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.

    d. ์Šคํ”„๋ง์€ ์˜์กด์„ฑ ์ฃผ์ž…(DI : Dependency Injection)์„ ์ง€์›

    ๊ฐ๊ฐ์˜ ๊ณ„์ธต์ด๋‚˜ ์„œ๋น„์Šค๋“ค ๊ฐ„์— ์˜์กด์„ฑ์ด ์กด์žฌํ•  ๊ฒฝ์šฐ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์„œ๋กœ ์—ฐ๊ฒฐ์‹œ์ผœ์ค€๋‹ค.

    e. ์Šคํ”„๋ง์€ ๊ด€์  ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(AOP : Aspect-Oriented Programming)์„ ์ง€์›

    ๋”ฐ๋ผ์„œ ํŠธ๋žœ์žญ์…˜์ด๋‚˜ ๋กœ๊น…, ๋ณด์•ˆ๊ณผ ๊ฐ™์ด ์—ฌ๋Ÿฌ ๋ชจ๋“ˆ์—์„œ ๊ณตํ†ต์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋Šฅ์˜ ๊ฒฝ์šฐ ํ•ด๋‹น ๊ธฐ๋Šฅ์„ ๋ถ„๋ฆฌํ•˜์—ฌ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

    f. ์Šคํ”„๋ง์€ ์˜์†์„ฑ๊ณผ ๊ด€๋ จ๋œ ๋‹ค์–‘ํ•œ ์„œ๋น„์Šค๋ฅผ ์ง€์›

    iBatis๋‚˜ Hibernate ๋“ฑ ์ด๋ฏธ ์™„์„ฑ๋„๊ฐ€ ๋†’์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ฒ˜๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

    g. ์Šคํ”„๋ง์€ ํ™•์žฅ์„ฑ์ด ๋†’์Œ.

    ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ์— ํ†ตํ•ฉํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ธฐ์กด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ฐ์‹ธ๋Š” ์ •๋„๋กœ ์Šคํ”„๋ง์—์„œ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ˆ˜๋งŽ์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€

    ์ด๋ฏธ ์Šคํ”„๋ง์—์„œ ์ง€์›๋˜๊ณ  ์žˆ๊ณ  ์Šคํ”„๋ง์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋ณ„๋„๋กœ ๋ถ„๋ฆฌํ•˜๊ธฐ๋„ ์šฉ์ดํ•˜๋‹ค.

  18. Thread

    Thread(์“ฐ๋ ˆ๋“œ) - ํ”„๋กœ์„ธ์Šค๋‚ด์—์„œ ๋™์‹œ์— ์‹คํ–‰๋˜๋Š” ๋…๋ฆฝ์ ์ธ ์‹คํ–‰ ๋‹จ์œ„๋ฅผ ๋งํ•จ, ์žฅ์ ์œผ๋กœ๋Š” ์ž์›์„ ๋งŽ์ด ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๊ตฌํ˜„์ด ์‰ฌ์šฐ๋ฉฐ ๋ฒ”์šฉ์„ฑ์ด ๋†’๋‹ค

    Process(ํ”„๋กœ์„ธ์Šค) - ์šด์˜์ฒด์ œ์—์„œ ์‹คํ–‰์ค‘์ธ ํ•˜๋‚˜์˜ ํ”„๋กœ๊ทธ๋žจ(ํ•˜๋‚˜ ์ด์ƒ์˜ ์“ฐ๋ ˆ๋“œ๋ฅผ ํฌํ•จํ•œ๋‹ค.)

    Thread ์žฅ์ 

    • ๋น ๋ฅธ ํ”„๋กœ์„ธ์Šค ์ƒ์„ฑ

    • ์ ์€ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ

    • ์‰ฌ์šด ์ •๋ณด ๊ณต์œ 

    Thread ๋‹จ์ 

    • ๊ต์ฐฉ์ƒํƒœ์— ๋น ์งˆ ์ˆ˜ ์žˆ๋‹ค.

    • ๊ต์ฐฉ์ƒํƒœ - ๋‹ค์ค‘ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ฒด์ œ์—์„œ ํ•˜๋‚˜ ๋˜๋Š” ๊ทธ ์ด์ƒ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ˆ˜ํ–‰ ํ•  ์ˆ˜ ์—†๋Š” ์–ด๋–ค ํŠน์ •์‹œ๊ฐ„์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๋Š” ์ƒํƒœ.

    Thread์™€ Process ์ฐจ์ด

    ์—ฌ๋Ÿฌ ๋ถ„์•ผ์—์„œ โ€˜๊ณผ์ •โ€™ ๋˜๋Š” โ€˜์ฒ˜๋ฆฌโ€™๋ผ๋Š” ๋œป์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ์šฉ์–ด๋กœ ์ปดํ“จํ„ฐ ๋ถ„์•ผ์—์„œ๋Š” โ€˜์‹คํ–‰์ค‘์ธ ํ”„๋กœ๊ทธ๋žจโ€™์ด๋ผ๋Š” ๋œป์œผ๋กœ ์“ฐ์ธ๋‹ค.

    ์ด ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ์‹คํ–‰๋˜๋Š” ๊ฐ๊ฐ์˜ ์ผ์„ ์Šค๋ ˆ๋“œ๋ผ๊ณ  ํ•œ๋‹ค. ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ์‹คํ–‰๋˜๋Š” ์„ธ๋ถ€ ์ž‘์—… ๋‹จ์œ„๋กœ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ด๋ฃจ๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

  19. ์ ‘๊ทผ์ œํ•œ์ž(public > protected > default > private)

    public - ์ ‘๊ทผ ์ œํ•œ์ด ์—†๋‹ค.(๊ฐ™์€ ํ”„๋กœ์ ํŠธ ๋‚ด์— ์–ด๋””์„œ๋“  ์‚ฌ์šฉ๊ฐ€๋Šฅ)

    protected - ๊ฐ™์€ ํŒจํ‚ค์ง€ ๋‚ด, ๋‹ค๋ฅธ ํŒจํ‚ค์ง€์—์„œ ์ƒ์†๋ฐ›์•„ ์ž์†ํด๋ž˜์Šค์—์„œ ์ ‘๊ทผ ๊ฐ€๋Šฅ

    default - ๊ฐ™์€ ํŒจํ‚ค์ง€ ๋‚ด์—์„œ๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅ

    private - ๊ฐ™์€ ํด๋ž˜์Šค ๋‚ด์—์„œ๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅ

  20. ์†Œ์ผ“ ํ†ต์‹ (TCP/UDP)

    TCP(Transmission Control Protocol)

    • ์—ฐ๊ฒฐํ˜• ์„œ๋น„์Šค ์ œ๊ณต

    • ๋†’์€ ์‹ ๋ขฐ์„ฑ ๋ณด์žฅ

    • ์—ฐ๊ฒฐ์˜ ์„ค์ •(3-way handshaking)

    • ์—ฐ๊ฒฐ์˜ ํ•ด์ œ(4-way handshaking)

    • ๋ฐ์ดํ„ฐ ํ๋ฆ„ ์ œ์–ด, ํ˜ผ์žก ์ œ์–ด

    • ์ „์ด์ค‘, ์ ๋Œ€์  ์„œ๋น„์Šค(์–‘๋ฐฉํ–ฅ ์†ก์ˆ˜์‹  ์„œ๋น„์Šค)

    UDP(User Datagram Protocol)

    • ๋น„์—ฐ๊ฒฐํ˜• ์„œ๋น„์Šค ์ œ๊ณต

    • ์‹ ๋ขฐ์„ฑ์ด ๋‚ฎ์Œ

    • ๋ฐ์ดํ„ฐ์˜ ์ „์†ก ์ˆœ์„œ๊ฐ€ ๋ฐ”๋€” ์ˆ˜ ์žˆ์Œ

    • ๋ฐ์ดํ„ฐ ์ˆ˜์‹  ์—ฌ๋ถ€ ํ™•์ธ ์•ˆํ•จ(3-way handshaking๊ณผ ๊ฐ™์€ ๊ณผ์ • X)

    • TCP๋ณด๋‹ค ์ „์†ก์†๋„๊ฐ€ ๋น ๋ฆ„

  21. Stack, Queue

    STACK

    • LIFO(Last In First Out)์˜ ํ›„์ž…์„ ์ถœ ๊ตฌ์กฐ

    • push();๋ฅผ ์ด์šฉํ•œ ๋ฐ์ดํ„ฐ ์ž…๋ ฅ, pop();์„ ์ด์šฉํ•œ ๋ฐ์ดํ„ฐ ์ถœ๋ ฅ

    • ์˜ˆ) ์‹œ์Šคํ…œ ์Šคํƒ : ํ•จ์ˆ˜์˜ ํ˜ธ์ถœ๊ณผ ๋ณต๊ท€ ์ˆœ์„œ๋Š” ์Šคํƒ์˜ ๊ตฌ์กฐ๋ฅผ ์‘์šฉํ•˜์—ฌ ๊ด€๋ฆฌ

    • ์—ญ์ˆœ ๋ฌธ์ž์—ด ๋งŒ๋“ค๊ธฐ, ์ˆ˜์‹์˜ ๊ด„ํ˜ธ ๊ฒ€์‚ฌ, ์ˆ˜์‹์˜ ํ›„์œ„ ํ‘œ๊ธฐ๋ฒ• ๋ณ€ํ™˜

    QUEUE

    • FIFO(First In First Out)์˜ ์„ ์ž…์„ ์ถœ ๊ตฌ์กฐ

    • enQueue();๋ฅผ ์ด์šฉํ•œ ๋ฐ์ดํ„ฐ ์ž…๋ ฅ, deQueue();๋ฅผ ์ด์šฉํ•œ ๋ฐ์ดํ„ฐ ์ถœ๋ ฅ

    • ์˜ˆ) ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๊ฐ™์€ ์ž‘์—… ์˜ˆ์•ฝ(์ธ์‡„ ๋Œ€๊ธฐ์—ด), ์„ ์ž…์„ ์ถœ์ด ํ•„์š”ํ•œ ๋Œ€๊ธฐ์—ด(ํ‹ฐ์ผ“ ์นด์šดํ„ฐ)

    • Linear Queue(์„ ํ˜•ํ)๋Š” ๋ฉ”๋ชจ๋ฆฌ ์žฌ์‚ฌ์šฉ์ด ๋ถˆ๊ฐ€๋Šฅ ์ด๋Ÿฌํ•œ ๋ฌธ์ œ์ ์„ ๋ณด์™„ํ•˜์—ฌ Circular Queue(์›ํ˜• ํ)๊ฐ€ ๋‚˜์˜ด
  22. Singleton Design Patter(์‹ฑ๊ธ€ํ†ค ๋””์ž์ธ ํŒจํ„ด, ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด)

    • ํด๋ž˜์Šค ์ธ์Šคํ„ด์Šค๊ฐ€ ํ•˜๋‚˜๋งŒ ๋งŒ๋“ค์–ด์ง€๋„๋ก ํ•˜๊ณ , ๊ทธ ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•œ ์ „์—ญ ์ ‘๊ทผ์„ ์ œ๊ณตํ•œ๋‹ค.
  23. Database์—์„œ Index๋ž€?

    ์ธ๋ฑ์Šค๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ถ„์•ผ์— ์žˆ์–ด์„œ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ๋™์ž‘์˜ ์†๋„๋ฅผ ๋†’์—ฌ์ฃผ๋Š” ์ž๋ฃŒ ๊ตฌ์กฐ๋ฅผ ์ผ์ปซ๋Š”๋‹ค.

    ์ธ๋ฑ์Šค๋Š” ํ…Œ์ด๋ธ” ๋‚ด์˜ 1๊ฐœ์˜ ์ปฌ๋Ÿผ, ํ˜น์€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ปฌ๋Ÿผ์„ ์ด์šฉํ•˜์—ฌ ์ƒ์„ฑ๋  ์ˆ˜ ์žˆ๋‹ค.

    ๊ณ ์†์˜ ๊ฒ€์ƒ‰ ๋™์ž‘๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ ˆ์ฝ”๋“œ ์ ‘๊ทผ๊ณผ ๊ด€๋ จ ํšจ์œจ์ ์ธ ์ˆœ์„œ ๋งค๊น€ ๋™์ž‘์— ๋Œ€ํ•œ ๊ธฐ์ดˆ๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

    ์ธ๋ฑ์Šค๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋””์Šคํฌ ๊ณต๊ฐ„์€ ๋ณดํ†ต ํ…Œ์ด๋ธ”์„ ์ €์žฅํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋””์Šคํฌ ๊ณต๊ฐ„๋ณด๋‹ค ์ž‘๋‹ค.

    ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ํ…Œ์ด๋ธ”๊ณผ ํด๋Ÿฌ์Šคํ„ฐ์— ์—ฐ๊ด€๋˜์–ด ๋…๋ฆฝ์ ์ธ ์ €์žฅ ๊ณต๊ฐ„์„ ๋ณด์œ ํ•˜๊ณ  ์žˆ๋Š” ๊ฐ์ฒด(object)์ด๋‹ค.

    ์‚ฌ์šฉ์ž๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅ๋œ ์ž๋ฃŒ๋ฅผ ๋”์šฑ ๋น ๋ฅด๊ฒŒ ์กฐํšŒํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์‚ฌ์šฉํ•œ๋‹ค.

    DB์—์„œ ์ž๋ฃŒ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•

    FTS(Full Table Scan) : ํ…Œ์ด๋ธ”์„ ์ฒ˜์Œ ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐฉ๋ฒ•

    Index Scan : ์ธ๋ฑ์Šค๋ฅผ ๊ฒ€์ƒ‰ํ•˜์—ฌ ํ•ด๋‹น ์ž๋ฃŒ์˜ ํ…Œ์ด๋ธ”์„ ์•ก์„ธ์Šค ํ•˜๋Š” ๋ฐฉ๋ฒ•.

๋‹ค๋ฅธ ๊ธ€ ์ฝ์–ด๋ณด๊ธฐ โฌ‡๏ธ