์ถ”์ƒ ํด๋ž˜์Šค & ๋ด‰์ธ ํด๋ž˜์Šค

2025. 4. 17. 10:42ยทBackend/JAVA
728x90

๐Ÿ“˜ ์ถ”์ƒ

์‚ฌ์ „์  ์˜๋ฏธ์˜ ์ถ”์ƒ(abstract)์€ ์‹ค์ฒด ๊ฐ„์— ๊ณตํ†ต๋˜๋Š” ํŠน์„ฑ์„ ์ถ”์ถœํ•œ ๊ฒƒ

์ถ”์ƒ ํด๋ž˜์Šค

๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ํด๋ž˜์Šค๋ฅผ ์‹ค์ฒด ํด๋ž˜์Šค๋ผ๊ณ  ํ•œ๋‹ค๋ฉด,
์ด๋Ÿฐ ํด๋ž˜์Šค๋“ค์˜ ๊ณตํ†ต์ ์ธ `ํ•„๋“œ`๋‚˜ `๋ฉ”์†Œ๋“œ`๋ฅผ ์ถ”์ถœํ•ด์„œ ์„ ์–ธํ•œ ํด๋ž˜์Šค๋ฅผ ์ถ”์ƒ ํด๋ž˜์Šค๋ผ๊ณ  ํ•จ

์˜ˆ์‹œ 
์ƒˆ, ๊ณค์ถฉ, ๋ฌผ๊ณ ๊ธฐ๋Š” ๋™๋ฌผ์ด๋ผ๋Š” ๊ณตํ†ต์ ์ธ ํŠน์„ฑ์„ ๊ฐ€์ง
์‹ค์ฒด ํด๋ž˜์Šค =  ์ƒˆ, ๊ณค์ถฉ, ๋ฌผ๊ณ ๊ธฐ
์ถ”์ƒ ํด๋ž˜์Šค = ๋™๋ฌผ

์ถ”์ƒ ํด๋ž˜์Šค๋Š” `new ์—ฐ์‚ฐ์ž`๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ์ฒด๋ฅผ ์ง์ ‘ ์ƒ์„ฑํ•  ์ˆ˜ ์—†๋‹ค.


์ถ”์ƒ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ  โ“

1. ๊ณตํ†ต ๊ธฐ๋Šฅ์„ ๋ฌถ์–ด์„œ ์ฝ”๋“œ ์ค‘๋ณต ๋ฐฉ์ง€

  • ์—ฌ๋Ÿฌ ์ž์‹ ํด๋ž˜์Šค์— ๊ณตํ†ต๋œ ํ•„๋“œ๋‚˜ ๋ฉ”์„œ๋“œ๋ฅผ ์ถ”์ƒ ํด๋ž˜์Šค์— ์ •์˜ํ•ด์„œ, ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ์Œ.
abstract class Animal {
    String name;

    void breathe() {
        System.out.println("์ˆจ์„ ์‰ฐ๋‹ค");
    }

    abstract void sound(); // ๊ณตํ†ต ๊ธฐ๋Šฅ์ด์ง€๋งŒ ๋™์ž‘ ๋ฐฉ์‹์€ ๋‹ค๋ฆ„
}

→ breathe()๋Š” ๋ชจ๋“  ๋™๋ฌผ์ด ๊ณต์œ ํ•˜๋‹ˆ๊นŒ ์ถ”์ƒ ํด๋ž˜์Šค์—์„œ ๊ตฌํ˜„,
→ sound()๋Š” ๋™๋ฌผ๋งˆ๋‹ค ๋‹ค๋ฅด๋‹ˆ๊นŒ ์ถ”์ƒ ๋ฉ”์„œ๋“œ๋กœ ์„ ์–ธํ•ด์„œ ์ž์‹์ด ๊ตฌํ˜„ํ•˜๊ฒŒ ํ•จ.

2. ์ž์‹ ํด๋ž˜์Šค๊ฐ€ ๋ฐ˜๋“œ์‹œ ๊ตฌํ˜„ํ•ด์•ผ ํ•  ๋ฉ”์„œ๋“œ ๊ฐ•์ œ

  • ์ถ”์ƒ ๋ฉ”์„œ๋“œ๋ฅผ ์„ ์–ธํ•˜๋ฉด, ์ž์‹ ํด๋ž˜์Šค๋Š” ๊ทธ ๋ฉ”์„œ๋“œ๋ฅผ ๋ฐ˜๋“œ์‹œ ์˜ค๋ฒ„๋ผ์ด๋”ฉํ•ด์•ผ ํ•ด.
    → ํ†ต์ผ๋œ ์ธํ„ฐํŽ˜์ด์Šค ์ œ๊ณต์ด ๊ฐ€๋Šฅํ•ด์ง€๊ณ , ์‹ค์ˆ˜๋กœ ๋น ๋œจ๋ฆด ๊ฑฑ์ •์ด ์—†์–ด์ง.
abstract class Animal {
    abstract void sound(); // ๋ฌด์กฐ๊ฑด ์˜ค๋ฒ„๋ผ์ด๋”ฉํ•ด์•ผ ํ•จ
}

3. ๊ฐ์ฒด ์ƒ์„ฑ์„ ๋ง‰๊ณ  ์„ค๊ณ„ ์šฉ๋„๋กœ๋งŒ ์‚ฌ์šฉ

  • ์ถ”์ƒ ํด๋ž˜์Šค๋Š” ์ง์ ‘ ๊ฐ์ฒด๋กœ ๋งŒ๋“ค ์ˆ˜ ์—†์Œ → ์˜ค์ง `์ƒ์† ์ „์šฉ`
  • ์ฆ‰, ์„ค๊ณ„๋„์ฒ˜๋Ÿผ "๊ณตํ†ต ๊ทœ๊ฒฉ"๋งŒ ์ œ๊ณตํ•˜๊ณ , ์‹ค์ œ ๋™์ž‘์€ ์ž์‹์ด ์ฑ„์›Œ๋„ฃ๋Š” ๊ตฌ์กฐ
Animal a = new Animal(); // โŒ ์—๋Ÿฌ! ์ถ”์ƒ ํด๋ž˜์Šค๋Š” ์ธ์Šคํ„ด์Šคํ™” ๋ถˆ๊ฐ€

4. ์ธํ„ฐํŽ˜์ด์Šค๋ณด๋‹ค ์œ ์—ฐํ•œ ์„ ํƒ์ง€

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

Q. ์ถ”์ƒ ํด๋ž˜์Šค๊ฐ€ ์ถ”์ƒ ํด๋ž˜์Šค๋ฅผ ์ƒ์†ํ•  ์ˆ˜ ์žˆ์„๊นŒ?

A. ์ถ”์ƒ ํด๋ž˜์Šค๋Š” ๋‹ค๋ฅธ ์ถ”์ƒ ํด๋ž˜์Šค๋ฅผ ์ƒ์†ํ•  ์ˆ˜ ์žˆ์Œ

์™œ ์ถ”์ƒ ํด๋ž˜์Šค๊ฐ€ ์ถ”์ƒ ํด๋ž˜์Šค๋ฅผ ์ƒ์†ํ•˜๋Š”๊ฐ€?

1. ์ถ”์ƒํ™” ๋‹จ๊ณ„(๋ ˆ๋ฒจ)๋ฅผ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—

๋ณต์žกํ•œ ์‹œ์Šคํ…œ์ผ์ˆ˜๋ก ํ•œ ๋ฒˆ์— ๋ชจ๋“  ๊ฑธ ์ •์˜ํ•˜๊ธฐ๋ณด๋‹จ, ์ ์ง„์ ์œผ๋กœ ์ถ”์ƒํ™”ํ•ด์„œ ๊ณ„์ธต์ ์œผ๋กœ ๊ตฌ์กฐํ™”ํ•˜๋Š” ๊ฒŒ ์ข‹์Œ

abstract class Animal {
    abstract void makeSound();
}

abstract class Canine extends Animal {
    abstract void sniff();
}

class Dog extends Canine {
    void makeSound() { System.out.println("๋ฉ๋ฉ"); }
    void sniff() { System.out.println("ํ‚ํ‚"); }
}

 

  • `Animal`: ๋ชจ๋“  ๋™๋ฌผ์˜ ๊ณตํ†ต ๊ธฐ๋Šฅ ์ •์˜
  • `Canine`: ๊ฐœ๊ณผ ๋™๋ฌผ๋งŒ์˜ ๊ณตํ†ต ๊ธฐ๋Šฅ(sniff) ์ •์˜ (์•„์ง ๊ตฌ์ฒด์ ์ด์ง€ ์•Š์Œ)
  • `Dog`: ๊ตฌ์ฒด์ ์ธ ๋™๋ฌผ → ์—ฌ๊ธฐ์„œ์•ผ ์‹ค์ œ ๋ฉ”์„œ๋“œ ๊ตฌํ˜„!

2. ๊ณตํ†ต ๋กœ์ง์€ ์ถ”์ƒ ํด๋ž˜์Šค๊ฐ€ ๋‚˜๋ˆ  ๊ฐ–๊ธฐ ๋•Œ๋ฌธ

  • ์ƒ์œ„ ์ถ”์ƒ ํด๋ž˜์Šค: ์ •๋ง ๊ณตํ†ต์ ์ธ ์ถ”์ƒ ๋ฉ”์„œ๋“œ ์ •์˜
  • ํ•˜์œ„ ์ถ”์ƒ ํด๋ž˜์Šค: ๋” ๊ตฌ์ฒด์ ์ธ ์—ญํ•  ์ •์˜ + ์ผ๋ถ€ ๊ณตํ†ต ๋ฉ”์„œ๋“œ ๊ตฌํ˜„
  • ์ตœํ•˜์œ„ ํด๋ž˜์Šค(๊ตฌํ˜„ ํด๋ž˜์Šค): ์™„์ „ํ•œ ๊ธฐ๋Šฅ ๊ตฌํ˜„

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ค‘๋ณต์„ ์ค„์ด๋ฉด์„œ๋„ ์—ญํ• ์„ ๋ช…ํ™•ํžˆ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด.

ํ•ญ๋ชฉ ์„ค๋ช…
๊ฐ€๋Šฅ ์—ฌ๋ถ€ โœ… ์ถ”์ƒ ํด๋ž˜์Šค๋Š” ์ถ”์ƒ ํด๋ž˜์Šค๋ฅผ ์ƒ์†ํ•  ์ˆ˜ ์žˆ์Œ
์‚ฌ์šฉํ•˜๋Š” ์ด์œ  ์ถ”์ƒํ™” ๋‹จ๊ณ„๋ฅผ ๋‚˜๋ˆ„๊ณ , ์—ญํ• ์„ ๊ณ„์ธต์ ์œผ๋กœ ๋ถ„๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด
์žฅ์  ์ค‘๋ณต ์ œ๊ฑฐ, ๊ตฌ์กฐ์  ์„ค๊ณ„, ์œ ์ง€๋ณด์ˆ˜ ์‰ฌ์›€

 


๋ด‰์ธ๋œ ํด๋ž˜์Šค

  • ๊ธฐ๋ณธ์ ์œผ๋กœ `final` ํด๋ž˜์Šค๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ํด๋ž˜์Šค๋Š” ๋ถ€๋ชจ ํด๋ž˜์Šค๊ฐ€ ๋  ์ˆ˜ ์žˆ์Œ
  • JAVA 15 ๋ถ€ํ„ฐ ๋ฌด๋ถ„๋ณ„ํ•œ ์ž์‹ ํด๋ž˜์Šค ์ƒ์„ฑ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๋ด‰์ธ๋œ(sealed) ํด๋ž˜์Šค๊ฐ€ ๋„์ž… ๋จ

๐Ÿ‘‡๐Ÿป Person์˜ ์ž์‹ ํด๋ž˜์Šค๋Š” Employee์™€ Manager๋งŒ ๊ฐ€๋Šฅ

public sealed class Person permits Employee, Manager { ... }
  • sealed ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด permits ํ‚ค์›Œ๋“œ ๋’ค์— ์ƒ์† ๊ฐ€๋Šฅํ•œ ์ž์‹ ํด๋ž˜์Šค๋ฅผ ์ง€์ •ํ•ด์•ผ ํ•จ.
  • ๋ด‰์ธ๋œ Person ํด๋ž˜์Šค๋ฅผ ์ƒ์†ํ•˜๋Š” Employee์™€ Manger๋Š” `final`, `non-sealed` ๋˜๋Š” ๋˜๋‹ค๋ฅธ ๋ด‰์ธ๋œ ํด๋ž˜์Šค์ธ `sealed` ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ ์–ธํ•ด์•ผ ํ•จ
final ๋” ์ด์ƒ ์ƒ์† ๋ถˆ๊ฐ€
non-sealed ๋ด‰์ธ ํ•ด์ œ

Q. non-sealed๊ฐ€ ์กด์žฌํ•˜๋Š” ์ด์œ ?

๋ด‰์ธ๋œ ํด๋ž˜์Šค๋Š” ์ž์‹ ํด๋ž˜์Šค๋ฅผ ํ•œ์ •ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š”๋ฐ, ์™œ ์ž์‹์—์„œ ๋ด‰์ธ์„ ํ•ด์ œํ•˜๋Š”๊ฐ€??

A. ์ œํ•œ์„ ํ•˜๋ฉด์„œ๋„ ์œ ์—ฐํ•จ์„ ํ—ˆ์šฉํ•˜๋ ค๋Š” ์„ค๊ณ„ ์ฒ ํ•™ ๋•Œ๋ฌธ์—

1. ์ผ๋ถ€ ์ž์‹๋งŒ ์ œํ•œํ•˜๊ณ , ์ผ๋ถ€๋Š” ์ž์œ ๋กญ๊ฒŒ ํ•˜๊ณ  ์‹ถ์„ ๋•Œ

sealed ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค๋ฉด ์ž์‹ ํด๋ž˜์Šค๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์ œํ•œ ๊ฐ€๋Šฅ

public sealed class Shape permits Circle, Rectangle {}
๋งŒ์ผ `Circle`์€ ๋” ์ด์ƒ ์ž์‹์ด ํ•„์š”์—†๊ณ  `Rectangle`์€ ๋” ์„ธ๋ถ„ํ™”๋œ ํƒ€์ž…์ด ์žˆ์–ด์•ผ ํ•œ๋‹ค๋ฉด?
public final class Circle extends Shape {}       // ์ž์‹ ๋ถˆ๊ฐ€
public non-sealed class Rectangle extends Shape {} // ์ž์‹ ํ—ˆ์šฉ

๐Ÿ‘‰ `non-sealed`์€ "๋‚˜๋Š” ์ž์œ ๋กญ๊ฒŒ ํ™•์žฅ๋  ์ˆ˜ ์žˆ๋‹ค" ๋ผ๊ณ  ์„ ์–ธํ•˜๋Š” ๊ฒƒ

์ฆ‰, ๋ถ€๋ชจ๋Š” ์ „์ฒด์ ์œผ๋กœ ์ž์‹๋“ค์„ ์ œํ•œํ•˜์ง€๋งŒ, ํŠน์ • ์ž์‹์€ ๋‹ค์‹œ ์—ด์–ด๋‘”๋‹ค๊ณ  ์„ ํƒํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“œ๋Š” ๊ตฌ์กฐ

2. ์ƒ์† ๊ณ„์ธต์˜ ์œ ์—ฐ์„ฑ์„ ์œ„ํ•ด

์–ด๋–ค ํด๋ž˜์Šค ๊ณ„์ธต์€ ์—„๊ฒฉํ•˜๊ฒŒ, ์–ด๋–ค ํด๋ž˜์Šค ๊ณ„์ธต์€ ์œ ์—ฐํ•˜๊ฒŒ ์—ด์–ด๋‘˜ ํ•„์š”๊ฐ€ ์žˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด Java์˜ sealed๋Š” OOP์—์„œ ๋„๋ฉ”์ธ ๋ชจ๋ธ์„ ๋” ์•ˆ์ „ํ•˜๊ฒŒ ์„ค๊ณ„ํ•˜๊ธฐ ์œ„ํ•œ ๋„๊ตฌ์ธ๋ฐ,
๋ชจ๋“  ๊ณ„์ธต์ด ๋”ฑ๋”ฑํ•˜๊ฒŒ ๋‹ซํ˜€ ์žˆ์œผ๋ฉด ํ™•์žฅ์ด ๋ถˆ๊ฐ€๋Šฅํ•ด์„œ ๋ถˆํŽธํ•  ์ˆ˜ ์žˆ์Œ

sealed class Expr permits ConstExpr, VarExpr {}

non-sealed class VarExpr extends Expr {} // ๋‹ค์–‘ํ•œ ๋ณ€์ˆ˜ ํ‘œํ˜„์ด ํ•„์š”ํ•จ
final class ConstExpr extends Expr {}     // ๊ณ ์ • ์ƒ์ˆ˜๋Š” ํ™•์žฅ ํ•„์š” ์—†์Œ

3. ๊ถŒํ•œ์„ ์ผ๋‹จ ์ฃผ๊ณ , ์ž์‹์ด ์„ค๊ณ„ ์ฑ…์ž„์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋„๋ก ํ•จ

non-sealed์€ ๋ถ€๋ชจ๊ฐ€ "๋‚˜๋Š” ๋„ˆ๊นŒ์ง€๋Š” ์ œ์–ดํ• ๊ฒŒ"
→ "๊ทธ ๋‹ค์Œ์€ ๋„ค๊ฐ€ ์ฑ…์ž„์ง€๊ณ  ์•Œ์•„์„œ ์—ด๋“  ๋‹ซ๋“  ๊ฒฐ์ •ํ•ด" ๋ผ๋Š” ์˜๋„๋„ ์žˆ๋‹ค.

์‹ค๋ฌด์—์„œ๋Š” ์ด๋ ‡๊ฒŒ ํ•˜์œ„ ๋ชจ๋“ˆ ์„ค๊ณ„ ์ฑ…์ž„์„ ๋„˜๊ธฐ๋Š” ๊ฒฝ์šฐ๋„ ์ž์ฃผ ์žˆ์Œ

 

ํ‚ค์›Œ๋“œ ์„ค๋ช… ์ƒ์† ๊ฐ€๋Šฅ์„ฑ ์‚ฌ์šฉ ๋ชฉ์  ์˜ˆ์‹œ
sealed ์ž์‹ ํด๋ž˜์Šค๋ฅผ ์ œํ•œํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉ ๋ช…์‹œํ•œ ํด๋ž˜์Šค๋งŒ ๊ฐ€๋Šฅ ์ƒ์† ๊ณ„์ธต ์ œ์–ด, ๋ณด์•ˆ์„ฑ ํ–ฅ์ƒ sealed class Shape permits Circle, Square {}
non-sealed ์ƒ์† ์ œํ•œ์„ ํ•ด์ œํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉ ๋ˆ„๊ตฌ๋“  ์ƒ์† ๊ฐ€๋Šฅ ์œ ์—ฐํ•œ ํ™•์žฅ ํ—ˆ์šฉ non-sealed class Rectangle extends Shape {}
final ์ƒ์†์„ ์™„์ „ํžˆ ๋ง‰๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉ ์ ˆ๋Œ€ ๋ถˆ๊ฐ€ ํด๋ž˜์Šค ํ™•์žฅ ๊ธˆ์ง€ final class Circle extends Shape {}
728x90
'Backend/JAVA' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • JDBC ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ
  • JDBC
  • ์ปฌ๋ ‰์…˜ ํ”„๋ ˆ์ž„์›Œํฌ
  • ์ƒ์† ๊ด€๊ณ„์—์„œ ํƒ€์ž… ๋ณ€ํ™˜์˜ ์ด์œ ์™€ ์‚ฌ์šฉ ๋ชฉ์ 
0woy
0woy
Algorithm, CS, Web ๋“ฑ ๋ฐฐ์šด ๋‚ด์šฉ์„ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.
  • 0woy
    0woy dev
    0woy
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
  • ๐ŸŒ LANGUAGE
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (80)
      • Backend (21)
        • JAVA (7)
        • DB (11)
        • Spring (1)
        • Spring Security (2)
      • Computer Science (22)
        • ๋„คํŠธ์›Œํฌ (9)
        • ์šด์˜์ฒด์ œ (5)
        • ๋ณด์•ˆ (7)
      • Frontend (15)
        • HTML5 (1)
        • CSS (1)
        • JS (4)
        • Vue 3 (9)
      • PS (16)
        • LeetCode (2)
        • Baekjoon (1)
        • Programmers (1)
        • ์•Œ๊ณ ๋ฆฌ์ฆ˜ (12)
      • Dev Trivia (6)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    tcp
    ๋Œ€์นญํ‚ค
    DP
    Filter
    dfs
    select
    PreparedStatement
    function
    shortestpath
    leetcode
    javascript
    JS
    ๊ฐ€์šฉ์„ฑ
    ์†์„ฑ
    CA
    Props
    ๊ณต๊ฐœํ‚ค
    Graph
    ํŠธ๋ฆฌ
    Spring
    ๋น„๋ฐ€ํ‚ค
    https
    BFS
    set
    security
    Vue3
    ๊ทธ๋ž˜ํ”„
    JDBC
    RDB
    java
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • 250x250
  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
0woy
์ถ”์ƒ ํด๋ž˜์Šค & ๋ด‰์ธ ํด๋ž˜์Šค
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”