๐Ÿ“– ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž ๋ฉด์ ‘๋Œ€๋น„

๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ๋ฉด์ ‘ ๋Œ€๋น„ ์งˆ๋ฌธ ๋ฐ ๋‚ด์šฉ๋“ค์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ •๋ฆฌํ•œ ์ž๋ฃŒ์ž…๋‹ˆ๋‹ค.



์งˆ๋ฌธ์ž๋ฃŒ List

CS
Web
Algorithm & Data Structure
Database
Spring
Java



CS

์Šค๋ ˆ๋“œ์™€ ํŠธ๋žœ์žญ์…˜

  • ์Šค๋ ˆ๋“œ๋Š” ํ”„๋กœ์„ธ์Šค์—์„œ ์‹คํ–‰๋˜๋Š” ๋…๋ฆฝ์ ์ธ ์‹คํ–‰ ๋‹จ์œ„
    • ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค์—๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์Šค๋ ˆ๋“œ
    • ๋™์‹œ์„ฑ ์ง€์›์„ ์œ„ํ•œ ๋…๋ฆฝ์ ์œผ๋กœ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ๋‹จ์œ„
    • ๋ณ‘๋ ฌ์ฒ˜๋ฆฌ๋Š” ๋ณต์ˆ˜์˜ CPU ์ฝ”์–ด ๋˜๋Š” ํ”„๋กœ์„ธ์„œ๋ฅผ ํ™œ์šฉํ•ด์„œ ์—ฌ๋Ÿฌ ์ž‘์—…์„ ๋™์‹œ์— ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค.
  • ํŠธ๋žœ์žญ์…˜์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ จ ์ž‘์—…์„ ACID ์— ๋งž๊ฒŒ ์›์ž์ , ์ผ๊ด€์ , ๊ฒฉ๋ฆฌ์ , ์ง€์†์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๊ฐœ๋…
    • ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž‘์—…์„ ํ•˜๋‚˜์˜ ๋…ผ๋ฆฌ์ ์ธ ์ž‘์—… ๋‹จ์œ„๋กœ ์ฒ˜๋ฆฌ

๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์Šค์™€ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ

  • ํ”„๋กœ๊ทธ๋žจ๋Š” ์ฝ”๋“œ์˜ ์ง‘ํ•ฉ, ๊ทธ ํ”„๋กœ๊ทธ๋žจ์ด RAM์—์„œ ๋™์ž‘ํ•˜๋Š” ์ƒํƒœ๊ฐ€ ํ”„๋กœ์„ธ์Šค
  • ํ•˜๋“œ์— ์ €์žฅ๋œ ๋ฆฌ์†Œ์Šค ๋ฐ ์ฝ”๋“œ๋กœ ๊ตฌ์„ฑ๋œ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋ฉด, ๋ฉ”๋ชจ๋ฆฌ์—์„œ ํ”„๋กœ์„ธ์Šค๋กœ ๋™์ž‘ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์Šค๋ ˆ๋“œ๋Š” ํ•œ ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ์‹คํ–‰๋˜๋Š” ๋™์ž‘์˜ ํ๋ฆ„์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
  • ์ปดํ“จํ„ฐ์˜ ๋ฉ€ํ‹ฐ์ž‘์—…์„ ์œ„ํ•ด ํ”„๋กœ์„ธ์Šค๋งŒ์„ ์ด์šฉํ•œ ๊ฒฝ์šฐ ์ปดํ“จํ„ฐ ๋ฆฌ์†Œ์Šค๋ฅผ ๋„ˆ๋ฌด ๋งŽ์ด ์ฐจ์ง€ํ•˜๊ฒŒ ๋˜๋Š”๋ฐ, ์Šค๋ ˆ๋“œ๋Š” ํ•œ ํ”„๋กœ์„ธ์Šค์—์„œ heap ์ž์›์„ ๊ณต์œ ํ•˜๋ฉด์„œ stack์„ ํ• ๋‹น๋ฐ›๋Š” ํ˜•ํƒœ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ์ƒ๋Œ€์ ์œผ๋กœ ์ž‘์Šต๋‹ˆ๋‹ค.
  • ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค๋Š” ํ”„๋กœ์„ธ์Šค ์—ฌ๋Ÿฌ ๊ฐœ๋กœ ๋™์ž‘ํ•˜๋Š” ๊ฒƒ, ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋” ๋งŽ์ด ์†Œ์š”ํ•˜๊ณ  ๋™์ž‘ ์‹œ๊ฐ„์ด ๋งŽ์ด ๋“ ๋‹ค. ํ•˜์ง€๋งŒ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ๋กœ ๋™์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณด์™„์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ๋Š” ํ•œ ํ”„๋กœ์„ธ์Šค ์•ˆ์— ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์ž‘ํ•˜๋Š” ๊ฒƒ
  • ์–ด๋–ค ํ”„๋กœ๊ทธ๋žจ์ด ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค์ธ์ง€ ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ๋กœ ๋„๋Š” ๊ฑด์ง€์— ๋Œ€ํ•ด
    • ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ์–ธ์–ด: Java, C#
    • ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ & ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์Šค ์–ธ์–ด: Python, C, C++

๋กœ์ปฌ๋ณ€์ˆ˜, ๋ฉค๋ฒ„๋ณ€์ˆ˜, ์ „์—ญ๋ณ€์ˆ˜

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

๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ

  • ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ƒํ™”ํ•˜๊ณ  ์ƒํƒœ์™€ ํ–‰์œ„๋ฅผ ๊ฐ€์ง„ ๊ฐ์ฒด๋กœ ๋งŒ๋“ค์–ด ๊ฐ์ฒด ๊ฐ„ ์ƒํ˜ธ์ž‘์šฉ์œผ๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•˜๋Š” ๋ฐฉ๋ฒ•
  • ๊ฐ์ฒด๋Š” ๋ฐ์ดํ„ฐ ๋˜๋Š” ์‹๋ณ„์ž์— ์˜ํ•ด ์ฐธ์กฐ๋˜๋Š” ๊ณต๊ฐ„
  • ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋žจ์˜ 3๋Œ€ ์š”์†Œ: ์บก์Šํ™”, ๋‹คํ˜•์„ฑ, ์ƒ์†
    • 4๊ฐ€์ง€ ํŠน์ง•๊ณผ ๋‹ฌ๋ฆฌ 3์š”์†Œ์—๋Š” ์ถ”์ƒํ™”๊ฐ€ ๋น ์ง€๋Š”๋ฐ ์™œ ์ด๋Ÿฐ๊ฒจโ€ฆ
  • ์ถ”์ƒํ™”, ์บก์Šํ™”, ์ƒ์†, ๋‹คํ˜•์„ฑ
    • ์ถ”์ƒํ™”: ๊ฐ์ฒด์—์„œ ๊ณตํ†ต๋œ ์†์„ฑ๊ณผ ํ–‰์œ„๋ฅผ ์ถ”์ถœ
    • ์บก์Šํ™”: ๋ฐ์ดํ„ฐ ๊ตฌ์กฐํ™” ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๋Š” ๋ฐฉ๋ฒ•์„ ๊ฒฐํ•ฉ์‹œ์ผœ ๋ฌถ๋Š” ๊ฒƒ, class
    • ๋‹คํ˜•์„ฑ: ํ•˜๋‚˜์˜ ๋ณ€์ˆ˜๋ช…, ํ•จ์ˆ˜๋ช…์ด ์ƒํ™ฉ์— ๋”ฐ๋ฅธ ๋‹ค๋ฅธ ์˜๋ฏธ๋กœ ํ•ด์„๋  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ

class, instance์˜ ์ฐจ์ด

  • ํด๋ž˜์Šค๋Š” ๊ฐ์ฒด์˜ ๊ตฌ์กฐ์™€ ํ–‰๋™์„ ์ •์˜ํ•˜๊ณ , ๋ณ€์ˆ˜์™€ ๋ฉ”์„œ๋“œ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ธ์Šคํ„ด์Šค๋Š” ํด๋ž˜์Šค๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒ์„ฑ๋œ ์‹ค์ œ ๊ฐ์ฒด! ํด๋ž˜์Šค์˜ ์‹ค์ฒดํ™”๋œ ํ˜•ํƒœ
class Dog:
    def __init__(self, name):
        self.name = name

    def bark(self):
        print(f"{self.name} is barking!")

# ๊ฐ์ฒด(์ธ์Šคํ„ด์Šค) ์ƒ์„ฑ
my_dog = Dog(name="Buddy")

๊ฐ์ฒด์ง€ํ–ฅ ๋””์ž์ธ ํŒจํ„ด

์ƒ์„ฑํŒจํ„ด: Singleton, Factory Method, Abstract Factory, Builder, Prototype
๊ตฌ์กฐํŒจํ„ด: Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Proxy
ํ–‰์œ„ํŒจํ„ด: Chain of Responsibility, Command, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Template Method, Visitor

  • Singleton ํŒจํ„ด
    • ํŠน์ • ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๊ฐ€ ํ”„๋กœ๊ทธ๋žจ ์ „์ฒด์— ํ•˜๋‚˜๋งŒ ์ƒ์„ฑ๋˜๋„๋ก ๋ณด์žฅํ•˜๋Š” ํŒจํ„ด
    • ์ „์—ญ๋ณ€์ˆ˜์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ  ๋ฆฌ์†Œ์Šค์˜ ์ ‘๊ทผ ์ œ์–ด๋‚˜ ์ค‘๋ณต ์ƒ์„ฑ์„ ๋ฐฉ์ง€ํ•˜๋Š”๋ฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
public static Singleton getInstance() {
    if (uniqueInstance == null) {
        uniqueInstance = new Singleton();
    }
    return uniqueInstance;
}

Stateful์™€ Stateless์˜ ์ฐจ์ด์ 

  • Stateless ์‹œ์Šคํ…œ์€ ์ด์ „์˜ ์ƒํ˜ธ์ž‘์šฉ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜ˆ, HTTP ํ”„๋กœํ† ์ฝœ
  • Stateful์€ ์ƒํƒœ์œ ์ง€๋กœ ์ด์ „์˜ ์ƒํ˜ธ์ž‘์šฉ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ณ  ์œ ์ง€ํ•˜๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋กœ๊ทธ์ธ ์„ธ์…˜์„ ์˜ˆ๋กœ ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.



Web

์ธํ„ฐ๋„ท์˜ ๋™์ž‘์›๋ฆฌ

  • ์ธํ„ฐ๋„ท์€ ๋„คํŠธ์›Œํฌ ์ธํ”„๋ผ, ์›น์€ ์ธํ„ฐ๋„ท ์œ„์—์„œ ๋™์ž‘ํ•˜๋Š” ์„œ๋น„์Šค
    • ์ธํ„ฐ๋„ท ์œ„์—์„œ ๋™์ž‘ํ•˜๋Š” ์„œ๋น„์Šค๋Š” ๊ทธ ์™ธ์—๋„ ์ด๋ฉ”์ผ, ํŒŒ์ผ๊ณต์œ  ์„œ๋น„์Šค, ์ŠคํŠธ๋ฆฌ๋ฐ ์„œ๋น„์Šค, ํด๋ผ์šฐ๋”ฉ ์ปดํ“จํŒ… ์„œ๋น„์Šค, ์˜จ๋ผ์ธ ๊ฒŒ์ž„ ์„œ๋น„์Šค ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์›น ๋ง๊ณ ๋„ ์ด๋ฉ”์ผ์„ ์†Œํ”„ํŠธ์›จ์–ด๋กœ๋„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์œผ๋‹ˆ๊นŒ SMTP, POP3 ๋“ฑ..
  • ์ปดํ“จํ„ฐ - ๋ผ์šฐํ„ฐ - ISP - ISP - ๋ผ์šฐํ„ฐ - ์ปดํ“จํ„ฐ
  • ์ธํ„ฐ๋„ท ์„œ๋น„์Šค ์ œ๊ณต์—…์ฒด(Internet Service Provider, ISP)๋Š” ์—ฐ๊ฒฐ๋˜๋Š” ๋ผ์šฐํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ๋‹ค๋ฅธ ISP ๋ผ์šฐํ„ฐ์— ์—‘์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
  • ์ปดํ“จํ„ฐ์—์„œ IP์ฃผ์†Œ or ๋„๋ฉ”์ธ ์ด๋ฆ„์„ ํ†ตํ•ด ๋ฉ”์‹œ์ง€๋ฅผ ๋ง์„ ํŠน์ • ์ปดํ“จํ„ฐ๋ฅผ ์ง€์ •

์›น์˜ ๋™์ž‘์›๋ฆฌ

  • ํด๋ผ์ด์–ธํŠธ๋Š” ์›น ์‚ฌ์šฉ์ž์˜ ์ธํ„ฐ๋„ท์ด ์—ฐ๊ฒฐ๋œ ์žฅ์น˜, ์„œ๋ฒ„๋Š” ์›น์‚ฌ์ดํŠธ, ์•ฑ ๋“ฑ์„ ์ €์žฅํ•˜๋Š” ์ปดํ“จํ„ฐ
  • ๋ธŒ๋ผ์šฐ์ € ์ฃผ์†Œ ์ž…๋ ฅ - DNS ์„œ๋ฒ„ - IP์ฃผ์†Œ ์„œ๋ฒ„์— HTTP ์š”์ฒญ (TCP/IP ์—ฐ๊ฒฐ๋กœ ์ „์†ก) - ์‘๋‹ต๊ณผ ์›น์‚ฌ์ดํŠธ ํŒŒ์ผ์ธ ๋ฐ์ดํ„ฐ ํŒจํ‚ท์„ ๋ธŒ๋ผ์šฐ์ €๋กœ ์ „์†ก - ๋ธŒ๋ผ์šฐ์ €์—์„œ ์›น ์‚ฌ์ดํŠธ๋กœ ์กฐ๋ฆฝํ•ด์„œ ๋ณด์—ฌ์คŒ

HTTP(HyperText Transfer Protocol)

  • ์›น ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ํ”„๋กœํ† ์ฝœ
  • HTTPS(secure version of HTTP)๋Š” SSL/TLS ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์ „์†ก์„ ์•”ํ˜ธํ™”ํ•˜๊ณ  ๋ณด์•ˆ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
    • SSL(secure sockets layer)์™€ TLS(transport layer security)๋Š” ๋„คํŠธ์›Œํฌ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์ „์†กํ•˜๊ธฐ ์œ„ํ•ด ์„ค๊ณ„๋œ ์•”ํ˜ธํ™” ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค. SSL์€ ์›๋ž˜ ๋„ท์Šค์ผ€์ดํ”„์—์„œ ๊ฐœ๋ฐœ๋˜์—ˆ์œผ๋ฉฐ, TLS๋Š” ๊ทธ ์ดํ›„์— IETF(Internet Engineering Task Force)์— ์˜ํ•ด SSL์˜ ํ‘œ์ค€ํ™”๋œ ๋ฒ„์ „์œผ๋กœ ๊ฐœ๋ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

Restful API๋ž€

  • HTTP ๊ธฐ๋ฐ˜์˜ ์›น ์„œ๋น„์Šค์˜ ์•„ํ‚คํ…์ฒ˜ ์Šคํƒ€์ผ, ๋ฆฌ์†Œ์Šค๋ฅผ ํ‘œํ˜„ํ•˜๊ณ  ์ƒํƒœ ์ „๋‹ฌ์„ ์œ„ํ•œ ์›น API ๋””์ž์ธ ์›์น™
  • ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ํ†ต์‹ ์˜ ์ผ๊ด€์„ฑ
  • GET, POST, PUT, DELETE
    • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— ์ •๋ณด๋ฅผ ์š”์ฒญํ•˜๊ฑฐ๋‚˜ ์ „์†กํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ HTTP ๋ฉ”์„œ๋“œ ์ข…๋ฅ˜
    • GET์€ ์ฃผ๋กœ ์„œ๋ฒ„์—์„œ ์ •๋ณด๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๊ณ  ์„œ๋ฒ„์˜ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
    • POST๋Š” ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์ œ์ถœํ•˜๊ฑฐ๋‚˜ ์ €์žฅํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•˜๊ณ , ์„œ๋ฒ„์˜ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
// User ์ƒ์„ฑ (POST ์š”์ฒญ)
POST /users
Content-Type: application/json

{
    "name": "John Doe",
    "email": "john.doe@example.com"
}

// ์‘๋‹ต
{
    "id": 1,
    "name": "John Doe",
    "email": "john.doe@example.com"
}

// User ์กฐํšŒ (GET ์š”์ฒญ)
GET /users/1

// ์‘๋‹ต
{
    "id": 1,
    "name": "John Doe",
    "email": "john.doe@example.com"
}

gRPC(google remote procedure cell)

  • google ์‚ฌ์—์„œ ๊ฐœ๋ฐœํ•œ ์˜คํ”ˆ์†Œ์Šค RPC ํ”„๋ ˆ์ž„์›Œํฌ
  • HTTP/2๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ํ”„๋กœํ† ์ฝœ ๋ฒ„ํผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•œ๋‹ค๋Š” ์ ์— ์ฐจ์ด
    • ํ”„๋กœํ† ์ฝœ ๋ฒ„ํผ๋Š” ์ด์ง„ ๋ฐ์ดํ„ฐ ํฌ๋งท์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ง๋ ฌํ™”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋” ์ž‘์€ ๋ฉ”์‹œ์ง€ ํฌ๊ธฐ์™€ ๋” ๋†’์€ ์ง๋ ฌํ™” ๋ฐ ์—ญ์ง๋ ฌํ™” ์†๋„๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
    • HTTP/1.1์€ ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ๋ฒ„์ „์ด๋ฉฐ, HTTP/2๋Š” ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์ œ๊ณตํ•˜๊ณ , HTTP/3์€ ์ƒˆ๋กœ์šด ์ „์†ก ํ”„๋กœํ† ์ฝœ QUIC๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋” ๋‚˜์€ ์„ฑ๋Šฅ๊ณผ ๋ณด์•ˆ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • Restful API๋Š” ๋ฆฌ์†Œ์Šค ์ค‘์‹ฌ, gRPC๋Š” ์„œ๋น„์Šค ์ค‘์‹ฌ์˜ API ๋””์ž์ธ์„ ์ฑ„ํƒ
    • ๋ฆฌ์†Œ์Šค๋Š” ๋ฐ์ดํ„ฐ์˜ ๊ฐœ์ฒด ๋˜๋Š” ์„œ๋น„์Šค์—์„œ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ํ•ญ๋ชฉ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์‚ฌ์šฉ์ž, ์ƒํ’ˆ, ์ฃผ๋ฌธ ๋“ฑ์ด ๋ฆฌ์†Œ์Šค๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์„œ๋น„์Šค์˜ ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ์„ ์ค‘์‹ฌ์œผ๋กœ ํ•˜๋ฉฐ, ๊ฐ ๋ฉ”์„œ๋“œ๋Š” ํŠน์ • ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
syntax = "proto3";

service UserService {
    rpc CreateUser(CreateUserRequest) returns (User);
    rpc GetUser(GetUserRequest) returns (User);
}

message CreateUserRequest {
    string name = 1;
    string email = 2;
}

message GetUserRequest {
    int32 id = 1;
}

message User {
    int32 id = 1;
    string name = 2;
    string email = 3;
}

Web Server์™€ WAS์˜ ์ฐจ์ด

  • ์›น ์„œ๋ฒ„(์•„ํŒŒ์น˜, niginx, iis)๋Š” ์ •์  ์›น ํŽ˜์ด์ง€, ์ด๋ฏธ์ง€, css ๋“ฑ ์ฝ˜ํ…์ธ  ์ฒ˜๋ฆฌ
  • WAS ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„๋Š” ๋™์  ์ฝ˜ํ…์ธ  ์ฒ˜๋ฆฌ ์ƒ์„ฑ ๋ฐ ์ฒ˜๋ฆฌ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์•ก์„ธ์Šค, ๋น„์ง€๋‹ˆ์Šค ๋กœ์ง ์‹คํ–‰ ๋“ฑ ๋‹ด๋‹น

XML๊ณผ JSON์˜ ์ฐจ์ด ๋ฐ ์žฅ๋‹จ์ 

  • ๋‘˜ ๋‹ค ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ์กฐํ™”ํ•˜๊ณ  ์ „์†กํ•˜๊ธฐ ์œ„ํ•œ ํฌ๋ฉง
  • XML(eXtensible Markup Language)์€ ํƒœ๊ทธ ๊ธฐ๋ฐ˜์˜ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์‚ฌ์šฉ์ž ์ •์˜ ํƒœ๊ทธ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ํ‘œํ˜„, ํŒŒ์‹ฑ์ด ๋ณต์žกํ•˜๊ณ  ๋Š๋ฆฝ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์‚ฌ์šฉ์ž ์ •์˜ ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ™•์žฅ์„ฑ์ด ์ข‹๊ณ  ๋งŽ์€ ์‹œ์Šคํ…œ๊ณผ ์–ธ์–ด์—์„œ ์ง€์›๋ฉ๋‹ˆ๋‹ค.
  • JSON(JavaScript Object Notation)์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตํ™˜ํ•˜๊ฑฐ๋‚˜ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ€๋ฒผ์šด ๋ฐ์ดํ„ฐ ํฌ๋งท์œผ๋กœ ํŒŒ์‹ฑ์ด ๋น ๋ฅด๊ณ  ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค.

XML์—์„œ node, element, attribute์˜ ์ฐจ์ด ๋ฐ ์šฉ๋„

  • ์ „์ฒด ๋ฌธ์„œ๋Š” ํ•˜๋‚˜์˜ node์ด๊ณ  element๋Š” ๋…ธ๋“œ ์ค‘ ํ•˜๋‚˜๋กœ ๊ฐ ํƒœ๊ทธ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
  • attribute๋Š” ํƒœ๊ทธ์— ์†์„ฑ ๋…ธ๋“œ๋กœ ์—˜๋ฆฌ๋จผํŠธ ๋‚ด์— ์ถ”๊ฐ€์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์‹œ์ž‘ ํƒœ๊ทธ ๋‚ด ์ด๋ฆ„๊ณผ ๊ฐ’ ์Œ์œผ๋กœ ํ‘œ์‹œ
<!-- This entire document is a Node -->
<bookstore>  <!-- 'bookstore' is an Element Node -->
  <book category="fiction">  <!-- 'book' is an Element Node, 'category' is an Attribute Node -->
    <title lang="en">The Great Gatsby</title>  <!-- 'title' is an Element Node, 'lang' is an Attribute Node -->
    <author>F. Scott Fitzgerald</author>  <!-- 'author' is an Element Node -->
    <year>1925</year>  <!-- 'year' is an Element Node -->
    <price>10.99</price>  <!-- 'price' is an Element Node -->
  </book>
</bookstore>

JSON์—์„œ {}์™€ []์˜ ์šฉ๋„

  • ์ค‘๊ด„ํ˜ธ๋Š” JSON ๊ฐ์ฒด๋ฅผ ๋Œ€๊ด„ํ˜ธ๋Š” JSON ๋ฐฐ์—ด์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
  • ์ค‘๊ด„ํ˜ธ๋Š” ํ‚ค-๊ฐ’ ์Œ์˜ ์ปฌ๋ ‰์…˜์œผ๋กœ ๊ตฌ์„ฑ



Algorithm & Data Structure

Stack, Queue, List, Tree, Hash Table

  • Stack์ด๋ž€ LIFO ์„ ํ˜•๋ฐ์ดํ„ฐ ๊ตฌ์กฐ, push ์ถ”๊ฐ€, pop ์ œ๊ฑฐ, ํ›„์œ„ํ‘œ๊ธฐ๋ฒ• ๊ณ„์‚ฐ์— ์‚ฌ์šฉ
  • Queue๋ž€ FIFO ์„ ํ˜•๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋กœ enqueue ์ถ”๊ฐ€, dequeue ์ œ๊ฑฐ, ์Šค์ผ€์ค„๋ง, ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ์— ์‚ฌ์šฉ
  • List๋Š” ์ˆœ์„œ๋ฅผ ์œ ์ง€ํ•˜๋Š” ๋™์‹œ์— ํ•ญ๋ชฉ์˜ ๋น ๋ฅธ ์ถ”๊ฐ€์™€ ์ œ๊ฑฐ๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” ์„ ํ˜• ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ
    • ๋ฐฐ์—ด ๋˜๋Š” ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋กœ ๊ตฌํ˜„
  • Tree๋Š” ๊ณ„์ธต์  ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง„ ๋น„์„ ํ˜• ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ, ๋…ธ๋“œ์™€ ์—ฃ์ง€๋กœ ๊ตฌ์„ฑ
    • ์ด์ง„ ๊ฒ€์ƒ‰ ํŠธ๋ฆฌ, AVL ํŠธ๋ฆฌ, B-ํŠธ๋ฆฌ ๋“ฑ
  • Hash Table์€ ํ‚ค๋ฅผ ๊ฐ’์— ๋งคํ•‘ํ•˜๋Š” ํšจ์œจ์ ์ธ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋กœ, ๋น ๋ฅธ ๊ฒ€์ƒ‰, ์‚ฝ์ž…, ์‚ญ์ œ๋ฅผ ์ง€์›
    • ํ•ด์‹œํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ‚ค๋ฅผ ํ•ด์‹œ ๊ฐ’์œผ๋กœ ๋ณ€ํ™˜ํ•˜๊ณ  ์ด ํ•ด์‹œ ๊ฐ’์ด ์ €์žฅ๋˜๋Š” ๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค๋กœ ์‚ฌ์šฉ

์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜

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



Database

๊ฐ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค๋ณ„ ์ข…๋ฅ˜

  • MSSQL
    • Window ์ƒํƒœ๊ณ„์—์„œ ์ข‹์€๋ฐ ํŠน์ • ์šด์˜ ์ฒด์ œ ์ข…์†๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋‹จ์ 
  • MariaDB
    • MySQL ์˜คํ”ˆ์†Œ์Šค ํฌํฌ๋กœ ์ผ๋ถ€ ์Šคํ† ๋ฆฌ์ง€์—”์ง„ Aria, TokuDB์™€ ๊ฐ™์€ ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„ ์ถ”๊ฐ€
    • ๋น ๋ฅธ ์ฟผ๋ฆฌ ์ง€์›
    • ๋ณด์•ˆ ๊ฐ•ํ™”
    • NoSQL ์ง€์›
  • MySQL
    • InnoDB ๋กœ์šฐ๋ ˆ๋ฒจ ๋ฝ์œผ๋กœ ํŠธ๋žœ์žญ์…˜ ๋™์‹œ์„ฑ ํ–ฅ์ƒ๊ณผ ๋ฐ๋“œ๋ฝ ์ด์Šˆ๋ฅผ ์ค„์—ฌ์คŒ
    • ๋ฐ์ดํ„ฐ ์••์ถ•์„ ์ง€์›ํ•˜์—ฌ ๋””์Šคํฌ ๊ณต๊ฐ„์„ ์ค„์ด๊ณ  I/O ์„ฑ๋Šฅํ–ฅ์ƒ
  • Redis
    • Remote Dictionary Server
    • SSD, HDD๊ฐ€ ์•„๋‹Œ RAM์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ •๊ทœํ™”

  • ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์„ค๊ณ„ ์ค‘๋ณต์„ ๋ง‰๊ธฐ ์œ„ํ•œ ํ”„๋กœ์„ธ์Šค
  • ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ๊ณผ ํšจ์œจ์„ฑ, ๋ณต์žก์„ฑ์„ ์ค„์ด๋Š”๋ฐ ์‚ฌ์šฉ
  • 1์ •๊ทœํ˜•: ๋ฐ์ดํ„ฐ ์›์ž๊ฐ’
  • 2์ •๊ทœํ˜•: ๋ถ€๋ถ„ ํ•จ์ˆ˜ ์ข…์†์„ฑ์ด ์ œ๊ฑฐ
  • 3์ •๊ทœํ˜•: ์ดํ–‰ ํ•จ์ˆ˜ ์ข…์†์„ฑ์ด ์ œ๊ฑฐ
  • ๋ณด์ด์Šค-์ฝ”๋“œ ์ •๊ทœํ˜•(BNCF): ๋ชจ๋“  ๋น„ ๊ธฐ๋ณธํ‚ค ์†์„ฑ์ด ๊ธฐ๋ณธ ํ‚ค์— ๋Œ€ํ•ด ์ดํ–‰์  ์ข…์†
  • 4์ •๊ทœํ˜•: ๋‹ค์น˜ ์ข…์†์„ฑ ์ œ๊ฑฐ
  • 5์ •๊ทœํ˜•: ์กฐ์ธ ์ข…์†์„ฑ ์ œ๊ฑฐ

Outer join์ด๋ž€?

  • ๋‘ ํ…Œ์ด๋ธ” ๊ฒฐํ•ฉ์—์„œ ์ผ์น˜ํ•˜๋Š” ๊ฐ’์ด ์—†๋Š” ๊ฒฝ์šฐ(null)์—๋„ ๋ ˆ์ฝ”๋“œ๋ฅผ ๋ฐ˜ํ™˜
  • left outer join, right outer join, full outer join

View๋ž€?

  • DBMS์—์„œ ํ•˜๋‚˜ ์ด์ƒ์˜ ํ…Œ์ด๋ธ”์—์„œ ํŒŒ์ƒ๋œ ๊ฐ€์ƒ ํ…Œ์ด๋ธ”์„ ์˜๋ฏธ
  • ๊ธฐ๋ณธ ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐธ์กฐํ•˜์ง€๋งŒ ์‹ค์ œ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
CREATE VIEW EmployeeView AS
SELECT EmployeeName, EmployeeDepartment
FROM EmployeeTable;

Index๋ž€?

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฒ€์ƒ‰ ์†๋„๋ฅผ ๋†’์ด๊ธฐ ์œ„ํ•œ ์ฑ…์˜ ์ƒ‰์ธ๊ณผ ๊ฐ™์€ ์กด์žฌ
  • ์ž˜๋ชป ์„ค์ •์‹œ ์˜คํžˆ๋ ค ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„ค์ •์ด ์ค‘์š”
    • ๋นˆ๋ฒˆํ•œ ์กฐํšŒ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์—ด
    • ๊ณ ์œ ๊ฐ’์ด ๋งŽ์€ ์—ด
    • ์ธ๋ฑ์Šค ํฌ๊ธฐ ์ตœ์†Œํ™”
    • ๋ณตํ•ฉ ์ธ๋ฑ์Šค
      • page lock ๊ฑธ๋ฆผ, ์„ฑ๋Šฅ ์ €ํ•˜๋  ์ˆ˜๋„ ์žˆ์Œ

Stored procedure๋ž€?

  • ์ €์žฅ ํ”„๋กœ์‹œ์ €
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ €์žฅ๋œ ์ฝ”๋“œ ๋ธ”๋ก
  • ์บ์‹œ ์ €์žฅ ํ›„ ์‹คํ–‰ํ•˜๋ฏ€๋กœ ์„ฑ๋Šฅ์„ ๋†’์ผ ์ˆ˜ ์žˆ๊ณ , ํŠน์ • ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ด์„œ ๋ณด์•ˆ๊ด€๋ฆฌ์—๋„ ์ข‹์Šต๋‹ˆ๋‹ค.

Transaction์ด๋ž€?

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ผ๋ จ์˜ ์—ฐ์‚ฐ๋“ค์„ ํ•˜๋‚˜์˜ ๋…ผ๋ฆฌ์  ์ž‘์—… ๋‹จ์œ„๋กœ ๋ฌถ์€ ๊ฒƒ
  • ACID ์†์„ฑ ๋งŒ์กฑ
    • ์›์ž์„ฑ, ์ผ๊ด€์„ฑ, ๊ณ ๋ฆฝ์„ฑ, ์˜๊ตฌ์„ฑ
    • read uncommitted์—์„œ๋Š” ๊ณ ๋ฆฝ์„ฑ ์„ฑ๋ฆฝ ์•ˆ ๋จ.
      • dirty read, non-repeatable read, phantom read ๋ฐœ์ƒ ๊ฐ€๋Šฅ์„ฑ



Spring

Spring์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 

  • ์˜์กด์„ฑ์ด ํŽธ๋ฆฌํ•˜๊ณ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ธฐํƒ€ ์ฐธ๊ณ  ์ž๋ฃŒ๊ฐ€ ๋งŽ์œผ๋ฉฐ, ์ž๋ฐ”์˜ ๋Œ€ํ‘œ์ ์ธ ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ์‚ฌ์šฉ๋˜๊ธฐ ๋•Œ๋ฌธ์—
  • DI, Bean, IoC
    • Bean์€ Spring ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” ๊ฐ์ฒด
    • DI๋Š” Bean์„ ์ด์šฉํ•ด์„œ ์˜์กด์„ฑ ์ฃผ์ž…์— ์‚ฌ์šฉํ•˜๋Š”๋ฐ ์ด๋กœ ์ธํ•ด ์˜์กด์„ฑ์„ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์ง์ ‘ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์˜์กด์„ฑ์ด ์ค„์–ด๋“ญ๋‹ˆ๋‹ค.
    • IoC๋Š” ์ œ์–ด์˜ ์—ญ์ „์œผ๋กœ ๊ฐ์ฒด ์ƒ์„ฑ ๋ฐ ๊ด€๋ฆฌ๋ฅผ ๊ฐœ๋ฐœ์ž๊ฐ€ ์•„๋‹Œ ํ”„๋ ˆ์ž„์›Œํฌ ๋˜๋Š” ์ปจํ…Œ์ด๋„ˆ์— ์œ„์ž„ํ•˜๋Š” ๊ฐœ๋…

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ํ”„๋ ˆ์ž„์›Œํฌ์˜ ์ฐจ์ด

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

AOP, DI, Interceptor, Filter

  • AOP๋Š” ๊ด€์‹ฌ์‚ฌ์˜ ๋ถ„๋ฆฌ๋ฅผ ํ†ตํ•ด ํŠน์ • ์ฝ”๋“œ๋ฅผ ์—ฌ๋Ÿฌ ์œ„์น˜์—์„œ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
    • @Aspect
    • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ „๋ฐ˜์— ํ•„์š”ํ•œ ๊ด€์‹ฌ์‚ฌ๋กœ ๋กœ๊น…, ํŠธ๋žœ์žญ์…˜ ๊ด€๋ฆฌ, ๋ณด์•ˆ, ์˜ˆ์™ธ์ฒ˜๋ฆฌ
    • ๋Ÿฐํƒ€์ž„์—์„œ ํ”„๋ก์‹œ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ ์šฉ
    • Aspect ๊ด€์ 
    • Join Point ์กฐ์ธ ํฌ์ธํŠธ
    • Advice ์–ด๋“œ๋ฐ”์ด์Šค - ์กฐ์ธํฌ์ธํŠธ์—์„œ ์‹คํ–‰๋  ์‹ค์ œ ์ฝ”๋“œ
    • Pointcut ์–ด๋“œ๋ฐ”์ด์Šค๊ฐ€ ์‹คํ–‰๋  ์กฐ์ธ ํฌ์ธํŠธ๋ฅผ ์ง€์ •ํ•˜๋Š” ํ‘œํ˜„์‹ ๋˜๋Š” ํŒจํ„ด
      • ์—ฌ๋Ÿฌ ์กฐ์ธ ํฌ์ธํŠธ ์ค‘์—์„œ ์‹ค์ œ๋กœ ์–ด๋“œ๋ฐ”์ด์Šค๊ฐ€ ์ ์šฉ๋  ์ง€์ ๋“ค์„ ํ•„ํ„ฐ๋งํ•˜๋Š” ์—ญํ• 
  • Interceptor๋Š” ์Šคํ”„๋ง MVC์˜ ์›น ์š”์ฒญ ์ฒ˜๋ฆฌ ์ค‘ ํŠน์ • ๋‹จ๊ณ„ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์„ค๊ณ„
    • HandlerInterceptor
    • ์ฆ‰ ์›น ์š”์ฒญ์—๋งŒ ๊ตญํ•œ๋œ๋‹ค๋Š”๊ฒŒ AOP ์™€์˜ ์ฐจ์ด
    • ํŠน์ • ๋ ˆ์ด์–ด์— ๊ตญํ•œ๋œ ์ž‘์—…
    • ๋กœ๊ทธ์ธ ๊ฒ€์‚ฌ, ๋กœ๊น…, ๊ถŒํ•œ ๊ฒ€์‚ฌ
  • DI ์˜์กด์„ฑ ์ฃผ์ž…
    • ๊ฐ์ฒด๊ฐ„ ์˜์กด์„ฑ์„ ์™ธ๋ถ€์—์„œ ์ฃผ์ž…
    • ๊ฐ์ฒด ์ƒ์„ฑ๊ณผ ์˜์กด์„ฑ ๊ด€๋ฆฌ๋ฅผ ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์— ์œ„์ž„
    • @Autowired, @Inject
  • Filter ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ ์ˆ˜์ค€์—์„œ ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ๊ฐ€๋กœ์ฑ„์„œ ์ฒ˜๋ฆฌ
    • ์ž๋ฐ” ์„œ๋ธ”๋ฆฟ์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ์œผ๋กœ DispatcherServlet์— ์˜ํ•ด ์ปจํŠธ๋กค๋Ÿฌ์— ๋งคํ•‘๋˜๋Š”๋ฐ Filter๋Š” ๊ทธ ์ „ ํ›„ ๋™์ž‘
    • FilterChain์— ์˜ํ•ด ์—ฐ์‡„์ ์œผ๋กœ ๋™์ž‘
    • ํ† ํฐ ์ธ์ฆ ๋“ฑ ํ™•์ธ์„ ์œ„ํ•ด ์‚ฌ์šฉ
    • init(), doFilter(), destory()
  • Filter - Intercepter - AOP - Intercepter - Filter ์ˆœ์œผ๋กœ ์ฒ˜๋ฆฌ

์Šคํ”„๋ง์—์„œ์˜ reqeust ์ฒ˜๋ฆฌ์ˆœ์„œ

  • DispatcherServlet ์š”์ฒญ์„ ๊ฐ€๋กœ์ฑ„์„œ
  • @Controller์—์„œ @RequestMapping์— ๋”ฐ๋ฅธ request๋ฅผ ์ฐพ์•„์„œ ๋ฉ”์„œ๋“œ์— ๋„๋‹ฌ
  • Controller - Service - DB - Entity - Service - Controller - DispatcherServlet - ViewResolver - DispatcherServlet
  • DispatcherServlet์€ ์‘๋‹ตํ•  view์—๊ฒŒ render๋ฅผ ์ง€์‹œํ•˜๊ณ  view ์‘๋‹ต ๋กœ์ง์„ ์ฒ˜๋ฆฌ

PSA portable service abstraction ์ถ”์ƒํ™” ์„œ๋น„์Šค

  • aop, ioc์™€ ํ•จ๊ป˜ spring triagle ์ค‘ ํ•˜๋‚˜
  • spring cache
  • ํ•˜๋‚˜์˜ ์ถ”์ƒํ™”๋กœ ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ์„ ๋ฌถ์–ด๋‘”
    • @Transactionalย ยป PlatformTransactionManager

Spring vs Spring boot

  • ๋‘˜ ๋‹ค ์ž๋ฐ” ๊ธฐ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์„ ์œ„ํ•œ ํ”„๋ ˆ์ž„์›Œํฌ์ด์ง€๋งŒ, Boot์—์„œ๋Š” ๊ธฐ๋ณธ๊ฐ’์„ ์ œ๊ณตํ•˜๊ณ  ๊ฐœ๋ฐœ์ž๊ฐ€ ์˜์กด์„ฑ ๊ตฌ์„ฑ์„ ๊ด€๋ฆฌํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
    • Spring Boot๋Š” ๋‚ด์žฅ Tomcat, Jetty์™€ ๊ฐ™์€ ์„œ๋ฒ„๋ฅผ ์ œ๊ณตํ•˜๊ณ , ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋” ์‰ฝ๊ฒŒ ์‹คํ–‰ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • Spring Boot Starter๋กœ ์˜์กด์„ฑ์„ ๊ทธ๋ฃนํ™”ํ•˜๊ณ  Spring Boot Dependency Management๋ฅผ ํ†ตํ•ด ์˜์กด์„ฑ ๋ฒ„์ „์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
    • ๋‘˜ ๋‹ค DispatcherServlet์„ ํฌํ•จํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.



Java

์ž๋ฐ”์˜ ์Šค๋ ˆ๋”ฉ

  • synchronized, java.util.concurrent ๋™์‹œ์„ฑ ์ œ์–ด๋ฅผ ์œ„ํ•œ ์œ ํ‹ธ๋ฆฌํ‹ฐ์™€ ํด๋ž˜์Šค ์ œ๊ณต
  • Thread ํด๋ž˜์Šค, Runnable ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๋ฉ”์„œ๋“œ ๊ตฌํ˜„

Hibernate

  • ORM, JPA ์ง€์›
    • JPA๋Š” ์ž๋ฐ” ORM ํ‘œ์ค€ ๋ช…์„ธ์ด๊ณ , Hibernate๋Š” JPA ๋ช…์„ธ์˜ ๊ตฌํ˜„์ฒด ์ค‘ ํ•˜๋‚˜
    • QueryDSL์€ ํƒ€์ž… ์„ธ์ดํ”„ ์ฟผ๋ฆฌ ์ž‘์„ฑ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

    <session-factory>
        <!-- JDBC Database connection settings -->
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/your_db</property>
        <property name="hibernate.connection.username">your_username</property>
        <property name="hibernate.connection.password">your_password</property>

        <!-- JDBC connection pool settings -->
        <property name="hibernate.c3p0.idle_test_period">3000</property>

        // ...

        <!-- Mention annotated class -->
        <mapping class="com.example.Student"/>
    </session-factory>

</hibernate-configuration>

์ž๋ฐ”์™€ ํŒŒ์ด์ฌ ์ฐจ์ด, ์žฅ๋‹จ์ 

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

class, abstract class, interface

  • ๋ชจ๋‘ ๋‹ค ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ํ•ต์‹ฌ ๊ตฌ์„ฑ ์š”์†Œ
  • class๋Š” ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ํ‹€ ๋˜”๋Š ์„ค๊ณ„๋„. ๋ฐ์ดํ„ฐ(ํ•„๋“œ)์™€ ๋ฉ”์„œ๋“œ๋ฅผ ํฌํ•จํ•จ
  • abstract class๋Š” ์ถ”์ƒ ํด๋ž˜์Šค๋กœ ์™„์ „ํ•˜์ง€ ์•Š์€ ์ถ”์ƒ ๋ฉ”์„œ๋“œ๋ฅผ ํฌํ•จํ•ด ํ•˜์œ„ ํด๋ž˜์Šค์—์„œ ์ถ”์ƒ ๋ฉ”์„œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๊ฒŒ ํ•˜๋Š” ํด๋ž˜์Šค
  • interface๋Š” ๋ฉ”์„œ๋“œ์˜ ์‹œ๊ทธ๋‹ˆ์ฒ˜๋งŒ ์ •์˜ํ•˜๊ณ  ๊ตฌํ˜„์€ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š” ํ‹€๋กœ ๋ฉ”์„œ๋“œ ๊ตฌํ˜„ ์ž์ฒด๊ฐ€ ๋ถˆ๊ฐ€๋Šฅ(java 8 ์ดํ›„ default, static ๋ฉ”์„œ๋“œ ๊ตฌํ˜„์„ ํฌํ•จ ๊ฐ€๋Šฅ)
    • ๋Œ€๋ถ€๋ถ„ ์–ธ์–ด์—์„œ ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋‹ค์ค‘ ๊ตฌํ˜„์€ ๊ฐ€๋Šฅํ•˜๋‚˜ ์ถ”์ƒ ํด๋ž˜์Šค๋Š” ๋‹จ์ผ ์ƒ์†๋งŒ ํ—ˆ์šฉ
    • ์ถ”์ƒ ํด๋ž˜์Šค์™€ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์ธ์Šคํ„ด์Šคํ™” ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

public, protected, private

  • public ์–ด๋””์„œ๋“  ์ž์œ ๋กญ๊ฒŒ ์ ‘๊ทผ ๊ฐ€๋Šฅ
  • protected ๊ฐ™์€ ํŒจํ‚ค์ง€ ๋‚ด์˜ ํด๋ž˜์Šค ๋˜๋Š” ์„œ๋ธŒ ํด๋ž˜์Šค์—์„œ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Œ
  • default ์ ‘๊ทผ์ œํ•œ์ž ๋ณ„๋„ ์ง€์ • ์•ˆํ•œ ๊ฒฝ์šฐ์— ํ•ด๋‹นํ•˜๋ฉฐ, ๊ฐ™์€ ํŒจํ‚ค์ง€ ๋‚ด์˜ ํด๋ž˜์Šค๋งŒ ์ ‘๊ทผ๊ฐ€๋Šฅ, ์„œ๋ธŒ ํด๋ž˜์Šค์—์„œ ์ ‘๊ทผ ๋ถˆ๊ฐ€
  • private ํ•ด๋‹น ํด๋ž˜์Šค์—์„œ๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅ

this, super

  • this ํ˜„์žฌ ํด๋ž˜์Šค๋ฅผ ์ฐธ์กฐ
  • super ๋ถ€๋ชจ ํด๋ž˜์Šค๋ฅผ ์ฐธ์กฐ

static, final

  • static
    • static ๋ณ€์ˆ˜๋Š” ํด๋ž˜์Šค ๋กœ๋“œ์‹œ ํ•œ ๋ฒˆ๋งŒ ๋ฉ”๋ชจ๋ฆฌ์— ํ• ๋‹น
    • static ๋ฉ”์„œ๋“œ๋Š” ํด๋ž˜์Šค ์ด๋ฆ„์œผ๋กœ ํ˜ธ์ถœ๊ฐ€๋Šฅ
    • static ๋ฉค๋ฒ„๋Š” ํด๋ž˜์Šค ๋กœ๋”์— ์˜ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๋กœ๋“œ์‹œ ์ดˆ๊ธฐํ™”
      • ํด๋ž˜์Šค ๋ ˆ๋ฒจ์—์„œ ๋™์ž‘ํ•˜๋ฏ€๋กœ ํด๋ž˜์Šค ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ ๋„ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅ
      • int field = ExampleClass.staticField;
  • final
    • final ๋ณ€์ˆ˜๋Š” ๊ฐ’ ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅ
    • final ๋ฉ”์„œ๋“œ๋Š” ํ•˜์œ„ ํด๋ž˜์Šค ์˜ค๋ฒ„๋ผ์ด๋”ฉ ๋ถˆ๊ฐ€๋Šฅ
    • final ํด๋ž˜์Šค๋Š” ์ƒ์† ๋ถˆ๊ฐ€
  • static fianl
    • ํ•„๋“œ์— ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ, ๋ณ€ํ•˜์ง€ ์•Š๋Š” ์ƒ์ˆ˜๋กœ ๋ชจ๋“  ์ธ์Šคํ„ด์Šค๊ฐ€ ๊ณต์œ 
    • ๋ฉ”์„œ๋“œ์— ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ, ์˜ค๋ฒ„๋ผ์ด๋”ฉ ํ•  ์ˆ˜ ์—†๋Š” ์ •์  ๋ฉ”์„œ๋“œ ์„ ์–ธ์‹œ ์‚ฌ์šฉ
  • final ํ•„๋“œ๊ฐ€ ํด๋ž˜์Šค์˜ ๋ชจ๋“  ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•ด ๋™์ผํ•œ ๊ฐ’์„ ๊ฐ€์ ธ์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ static final์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ final ํ•„๋“œ๊ฐ€ ์ธ์Šคํ„ด์Šค๋ณ„๋กœ ๋‹ค๋ฅธ ๊ฐ’์„ ๊ฐ€์ ธ์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” static final์„ ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ ๋ฉ๋‹ˆ๋‹ค.
  • Java best practice
    • ๋ณ€์ˆ˜ ์„ค์ •์‹œ
      • ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•„์•ผ ํ•˜๋ฉด final, ๋ชจ๋“  ์ธ์Šคํ„ด์Šค๊ฐ€ ๊ณต์œ ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ static, ๋ชจ๋“  ์ธ์Šคํ„ด์Šค ๊ณต์œ ํ•˜๋ฉด์„œ ๊ฐ’ ๋ณ€๊ฒฝ์ด ์•ˆ ๋˜์–ด์•ผ ํ•˜๋ฉด static final
    • ๋ฉ”์„œ๋“œ ์„ค์ •์‹œ
      • ์˜ค๋ฒ„๋ผ์ด๋”ฉ ๋ถˆ๊ฐ€ํ•˜๊ฒŒ ํ•˜๋ ค๋ฉด fianl, ์ธ์Šคํ„ด์Šค ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ ๋„ ํ˜ธ์ถœํ•ด์•ผ ํ•˜๋Š” ๋ฉ”์„œ๋“œ์—์„œ static
    • ํด๋ž˜์Šค ์„ค์ •์‹œ
      • ์ƒ์† ๋ถˆ๊ฐ€์‹œ final

๋ฐ์ดํ„ฐ ํƒ€์ž… ์ค‘ primitive type, reference type

  • primitive type ๊ธฐ๋ณธํƒ€์ž…
    • byte, short, int, long, float, double, char, boolean
  • reference type ์ฐธ์กฐํƒ€์ž…
    • ๊ฐ์ฒด์˜ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•˜๋Š” ํƒ€์ž… (์‹ค์ œ ๋ฐ์ดํ„ฐ X)
    • ํด๋ž˜์Šค, ์ธํ„ฐํŽ˜์ด์Šค, ์—ด๊ฑฐ, ๋ฐฐ์—ด ๋“ฑ

process์™€ thread ์ฐจ์ด ๋ฐ ์šฉ๋„, ๊ทธ๋ฆฌ๊ณ  ์–ด๋–ป๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š”์ง€

  • ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์Šค์™€ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ์ฐธ์กฐ
  • ํ”„๋กœ์„ธ์Šค๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ์ธ์Šคํ„ด์Šค์ด๋ฉฐ ํ•˜๋‚˜ ์ด์ƒ์˜ ์Šค๋ ˆ๋“œ๋ฅผ ๊ฐ–์Šต๋‹ˆ๋‹ค.
  • ์Šค๋ ˆ๋“œ๋Š” ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ์‹คํ–‰๋˜๋Š” ๋…๋ฆฝ์ ์ธ ์‹คํ–‰๊ฒฝ๋กœ, ํ”„๋กœ์„ธ์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ์™€ ์ž์›์„ ๊ณต์œ 
  • Thread ํด๋ž˜์Šค๋ฅผ ํ™•์žฅํ•˜๊ฑฐ๋‚˜ Runnable ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜์—ฌ ์Šค๋ ˆ๋“œ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ง๋ ฌํ™”๋ž€?

  • ๊ฐ์ฒด์˜ ์ƒํƒœ๋ฅผ ๋ฐ”์ดํŠธ ์ŠคํŠธ๋ฆผ์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค
  • ๋ฐ์ดํ„ฐ ์˜์†์„ฑ์„ ์œ ์ง€ํ•˜๋ฉฐ ๋‹ค์‹œ ๊ฐ์ฒด ์ƒํƒœ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
  • Serializable
import java.io.*;

class Person implements Serializable {
    String name;
    int age;
    
    Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

public class SerializationExample {
    public static void main(String[] args) {
        Person p1 = new Person("John Doe", 25);
        
        // ์ง๋ ฌํ™”
        try (ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("person.ser"))) {
            out.writeObject(p1);
        } catch (IOException e) {
            e.printStackTrace();
        }
        
        // ์—ญ์ง๋ ฌํ™”
        try (ObjectInputStream in = new ObjectInputStream(new FileInputStream("person.ser"))) {
            Person p2 = (Person) in.readObject();
            System.out.println(p2.name + ", " + p2.age);  // ์ถœ๋ ฅ: John Doe, 25
        } catch (IOException | ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
}

@Override

  • ์ž๋ฐ”์—์„œ์˜ ์˜ค๋ฒ„๋ผ์ด๋”ฉ ๋ช…์‹œ๋กœ ์ปดํŒŒ์ผ ์‹œ์ ์—์„œ ์˜ค๋ฅ˜๋ฅผ ์žก์„ ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.
  • ์˜ค๋ฒ„๋ผ์ด๋”ฉ(Overriding)์€ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ฐœ๋…์œผ๋กœ, ํ•˜์œ„ ํด๋ž˜์Šค๊ฐ€ ์ƒ์œ„ ํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ๋ฅผ ์ž์‹ ์˜ ํด๋ž˜์Šค ๋‚ด์—์„œ ์žฌ์ •์˜ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
  • ๋™์  ๋ฐ”์ธ๋”ฉ ์ง€์›

๋ฐฐ์—ด๊ณผ ArrayList์˜ ์ฐจ์ด

  • ๋ฐฐ์—ด์€ ์„ ์–ธ์‹œ ํฌ๊ธฐ๊ณ ์ •, ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ์™€ ๊ฐ์ฒด ๋ชจ๋‘ ์ €์žฅ ๊ฐ€๋Šฅ, ์ธ๋ฑ์Šค ์ ‘๊ทผ์ด ๋น ๋ฅด๋‚˜ ํ™•์žฅ์„ฑ์ด ๋–จ์–ด์ง‘๋‹ˆ๋‹ค.
  • ArrayList๋Š” ํฌ๊ธฐ๋ฅผ ๋™์ ์œผ๋กœ ์กฐ์ •ํ•˜๋ฉฐ, ๊ฐ์ฒด ํƒ€์ž…์œผ๋กœ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์–‘ํ•œ ๋ฉ”์„œ๋“œ๋ฅผ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ๊ณต

try, catch, finally์˜ ๊ฐœ๋… ๋ฐ ์šฉ๋„

  • ์˜ˆ์™ธ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ๋ฅผ try ์ฒ˜๋ฆฌํ•˜๊ณ , catch๋กœ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ์ง„ํ–‰ํ•˜๊ณ , finally๋กœ try, catch ์‹คํ–‰ ํ›„ ํ•ญ์ƒ ์ฒ˜๋ฆฌํ•  ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

results matching ""

    No results matching ""