μ·¨λ½€πŸ‘©πŸ»‍πŸ’»

[μ‹ μž…κ°œλ°œμžλ©΄μ ‘] JAVA κ΄€λ ¨ λ©΄μ ‘μ˜ˆμƒμ§ˆλ¬Έ 1

div_yeri 2023. 6. 9. 00:12
728x90

μ˜€λ²„λ‘œλ”© / μ˜€λ²„λΌμ΄λ”© 차이

  • μ˜€λ²„λ‘œλ”©(Overloading)은 같은 μ΄λ¦„μ˜ λ©”μ„œλ“œλ₯Ό λ§€κ°œλ³€μˆ˜μ˜ 개수 λ˜λŠ” νƒ€μž…μ— 따라 λ‹€λ₯΄κ²Œ μ •μ˜ν•˜λŠ” 것.
  • μ˜€λ²„λΌμ΄λ”©(Overriding)은 λΆ€λͺ¨ 클래슀의 λ©”μ„œλ“œλ₯Ό μžμ‹ ν΄λž˜μŠ€μ—μ„œ μž¬μ •μ˜ν•˜λŠ” 것.

객체지ν–₯ μ–Έμ–΄μ˜ νŠΉμ§•

  • 상속 (Inheritance): ν΄λž˜μŠ€λ“€ 간에 상속 관계λ₯Ό ν˜•μ„±ν•˜μ—¬ μ½”λ“œμ˜ μž¬μ‚¬μš©μ„±μ„ λ†’μž…λ‹ˆλ‹€.
  • μΊ‘μŠν™” (Encapsulation): 데이터와 ν•΄λ‹Ή 데이터λ₯Ό μ²˜λ¦¬ν•˜λŠ” λ©”μ„œλ“œλ₯Ό ν•˜λ‚˜λ‘œ λ¬Άμ–΄ μ™ΈλΆ€μ—μ„œμ˜ 직접적인 접근을 μ œν•œν•©λ‹ˆλ‹€.
  • λ‹€ν˜•μ„± (Polymorphism): 같은 μ΄λ¦„μ˜ λ©”μ„œλ“œλ₯Ό λ‹€μ–‘ν•œ λ°©μ‹μœΌλ‘œ ν˜ΈμΆœν•˜κ±°λ‚˜ 객체λ₯Ό λ‹€μ–‘ν•œ νƒ€μž…μœΌλ‘œ λ‹€λ£° 수 μžˆμŠ΅λ‹ˆλ‹€.
  • 좔상화 (Abstraction): κ³΅ν†΅μ˜ 속성과 λ™μž‘μ„ μΆ”μΆœν•˜μ—¬ 클래슀둜 μ •μ˜ν•©λ‹ˆλ‹€.

상속과 κ΅¬ν˜„μ˜ 차이점 κ³Ό νŠΉμ§• 및 μž₯단점

  • 상속: 클래슀 간에 상속 관계λ₯Ό ν˜•μ„±ν•˜μ—¬ λΆ€λͺ¨ 클래슀의 속성과 λ©”μ„œλ“œλ₯Ό μžμ‹ ν΄λž˜μŠ€κ°€ λ¬Όλ €λ°›λŠ” 것을 μ˜λ―Έν•©λ‹ˆλ‹€. 상속은 extends ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ κ΅¬ν˜„ν•©λ‹ˆλ‹€. 상속은 μ½”λ“œμ˜ μž¬μ‚¬μš©μ„±μ„ 높이고, λ‹€ν˜•μ„±μ„ κ΅¬ν˜„ν•˜λŠ” 데에 ν™œμš©λ©λ‹ˆλ‹€.
  • κ΅¬ν˜„: μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ •μ˜ν•˜κ³  ν•΄λ‹Ή μΈν„°νŽ˜μ΄μŠ€λ₯Ό ν΄λž˜μŠ€κ°€ κ΅¬ν˜„ν•˜λŠ” 것을 μ˜λ―Έν•©λ‹ˆλ‹€. μΈν„°νŽ˜μ΄μŠ€λŠ” ν΄λž˜μŠ€κ°€ κ°€μ Έμ•Ό ν•  λ©”μ„œλ“œμ˜ λͺ…μ„Έλ₯Ό μ •μ˜ν•˜λ©°, ν΄λž˜μŠ€λŠ” μΈν„°νŽ˜μ΄μŠ€μ— μ •μ˜λœ λͺ¨λ“  λ©”μ„œλ“œλ₯Ό κ΅¬ν˜„ν•΄μ•Ό ν•©λ‹ˆλ‹€. κ΅¬ν˜„μ€ 클래슀의 νŠΉμ • λ™μž‘μ„ 보μž₯ν•˜κ³ , 닀쀑 상속을 μ§€μ›ν•˜μ§€ μ•ŠλŠ” μ–Έμ–΄μ—μ„œ 닀쀑 κ΅¬ν˜„μ„ κ°€λŠ₯ν•˜κ²Œ ν•©λ‹ˆλ‹€.

쑰인의 μ’…λ₯˜μ™€ μ„€λͺ…- Outer Joinκ³Ό Inner Join μ„€λͺ…ν•˜κ³  μ‚¬μš©λ˜λŠ” 예λ₯Ό λ“€μ–΄λ³΄μ„Έμš”

  • Outer Join : 쑰인 쑰건에 λ§žμ§€ μ•ŠλŠ” 행도 결과에 ν¬ν•¨μ‹œν‚€λŠ” 것
  • ex) μ™Όμͺ½ ν…Œμ΄λΈ”μ€ μ£Όλ¬Έ 정보λ₯Ό λ‹΄κ³  있고 였λ₯Έμͺ½ ν…Œμ΄λΈ”μ€ 배솑 정보λ₯Ό λ‹΄κ³  μžˆλ‹€λ©΄, μ™Όμͺ½ ν…Œμ΄λΈ”μ˜ λͺ¨λ“  μ£Όλ¬Έκ³Ό μΌμΉ˜ν•˜λŠ” 배솑 정보λ₯Ό κ°€μ Έμ˜΅λ‹ˆλ‹€.
  • Inner Join :  쑰인 쑰건에 λ§žλŠ” ν–‰λ§Œ 결과에 ν¬ν•¨μ‹œν‚€λŠ” 것
  • ex) μ£Όλ¬Έ ν…Œμ΄λΈ”κ³Ό μƒν’ˆ ν…Œμ΄λΈ”μ„ Inner Joinν•˜μ—¬ μ£Όλ¬Έν•œ μƒν’ˆμ˜ 정보λ₯Ό κ°€μ Έμ˜¬ 수 μžˆμŠ΅λ‹ˆλ‹€.

μžλ°”λž€ 무엇인가 - μžλ°”μ˜ ꡬ동원리 (컴파일 μˆœμ„œ 같은 ?) - JVM의 νŠΉμ§•

  • μžλ°” (Java): μžλ°”λŠ” 객체지ν–₯ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄λ‘œ, 1995λ…„ Sun Microsystems(ν˜„μž¬ Oracle)μ—μ„œ κ°œλ°œν•œ μ–Έμ–΄μž…λ‹ˆλ‹€. μžλ°”λŠ” μš΄μ˜μ²΄μ œμ— 독립적이며, ν”Œλž«νΌ 독립성을 κ°€μ§€κ³  μžˆμŠ΅λ‹ˆλ‹€. μžλ°”λŠ” 가상 머신인 JVM(Java Virtual Machine) μœ„μ—μ„œ μ‹€ν–‰λ˜λ©°, 개발된 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ€ λ‹€μ–‘ν•œ ν”Œλž«νΌμ—μ„œ λ™μž‘ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • μžλ°”μ˜ ꡬ동원리: μžλ°” μ†ŒμŠ€ μ½”λ“œ(.java 파일)λ₯Ό 컴파일러(javac)둜 μ»΄νŒŒμΌν•˜λ©΄ λ°”μ΄νŠΈ μ½”λ“œ(.class 파일)κ°€ μƒμ„±λ©λ‹ˆλ‹€. 이후 JVM은 λ°”μ΄νŠΈ μ½”λ“œλ₯Ό ν•΄μ„ν•˜μ—¬ ν•΄λ‹Ή ν”Œλž«νΌμ— λ§žλŠ” κΈ°κ³„μ–΄λ‘œ λ³€ν™˜ν•˜μ—¬ μ‹€ν–‰ν•©λ‹ˆλ‹€. μ΄λŸ¬ν•œ ꡬ동 μ›λ¦¬λ‘œ 인해 μžλ°” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ€ ν”Œλž«νΌμ— μ’…μ†λ˜μ§€ μ•Šκ³  λ‹€μ–‘ν•œ ν™˜κ²½μ—μ„œ 싀행될 수 μžˆμŠ΅λ‹ˆλ‹€.
  • JVM의 νŠΉμ§•: JVM은 μžλ°” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ‹€ν–‰ν•˜κΈ° μœ„ν•œ 가상 λ¨Έμ‹ μž…λ‹ˆλ‹€. JVM의 μ£Όμš” νŠΉμ§•μ€ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€
    • ν”Œλž«νΌ 독립성: JVM μœ„μ—μ„œ μ‹€ν–‰λ˜κΈ° λ•Œλ¬Έμ— μš΄μ˜μ²΄μ œλ‚˜ ν•˜λ“œμ›¨μ–΄μ— μ’…μ†λ˜μ§€ μ•Šκ³  λ‹€μ–‘ν•œ ν”Œλž«νΌμ—μ„œ λ™μž‘ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
    • λ©”λͺ¨λ¦¬ 관리: JVM은 κ°€λΉ„μ§€ μ»¬λ ‰μ…˜(Garbage Collection)을 톡해 λ©”λͺ¨λ¦¬λ₯Ό μžλ™μœΌλ‘œ κ΄€λ¦¬ν•©λ‹ˆλ‹€. κ°œλ°œμžκ°€ λͺ…μ‹œμ μœΌλ‘œ λ©”λͺ¨λ¦¬λ₯Ό ν• λ‹Ήν•˜κ±°λ‚˜ ν•΄μ œν•  ν•„μš”κ°€ μ—†μŠ΅λ‹ˆλ‹€.
    • λ³΄μ•ˆ 관리: JVM은 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ λ³΄μ•ˆμ„ κ΄€λ¦¬ν•©λ‹ˆλ‹€.

κΈ°λ³Έν˜• λ³€μˆ˜μ™€ μ°Έμ‘°ν˜• λ³€μˆ˜κ°€ λ­κ°€μžˆλŠ”κ°€?

  • κΈ°λ³Έν˜• λ³€μˆ˜λŠ” μ‹€μ œ 값을 μ €μž₯ν•˜κ³ , μ°Έμ‘°ν˜• λ³€μˆ˜λŠ” 객체의 μ£Όμ†Œλ₯Ό μ €μž₯ν•©λ‹ˆλ‹€.

static에 λŒ€ν•΄ μ„€λͺ…해봐라

  • static은 클래슀 μˆ˜μ€€μ˜ λ³€μˆ˜ λ˜λŠ” λ©”μ„œλ“œλ‘œ, μΈμŠ€ν„΄μŠ€ 생성 없이 λ°”λ‘œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • 정적 λ³€μˆ˜λŠ” 클래슀 λ³€μˆ˜(static variables)둜 뢈리며, μΈμŠ€ν„΄μŠ€ 생성과 관계없이 μ ‘κ·Όν•  수 있고 κ³΅μœ λ©λ‹ˆλ‹€. 정적 λ©”μ„œλ“œλŠ” 클래슀 μˆ˜μ€€μ—μ„œ ν˜ΈμΆœν•  수 μžˆλŠ” λ©”μ„œλ“œλ‘œ, μΈμŠ€ν„΄μŠ€ 생성 없이 직접 클래슀 이름을 톡해 ν˜ΈμΆœν•  수 μžˆμŠ΅λ‹ˆλ‹€. 정적 λ©€λ²„λŠ” 주둜 곡톡적인 λ°μ΄ν„°λ‚˜ λ™μž‘μ„ ν‘œν˜„ν•˜λŠ” 데 μ‚¬μš©λ˜λ©°, μœ ν‹Έλ¦¬ν‹° ν΄λž˜μŠ€λ‚˜ μƒμˆ˜ μ •μ˜μ— 자주 ν™œμš©λ©λ‹ˆλ‹€.

읡λͺ…ν΄λž˜μŠ€μ™€ 읡λͺ…객체λ₯Ό μ•„λŠ”κ°€?

  • 읡λͺ…ν΄λž˜μŠ€: 읡λͺ…ν΄λž˜μŠ€λŠ” 이름이 μ—†λŠ” 클래슀둜, μΌνšŒμ„±μœΌλ‘œ μ‚¬μš©λ˜λŠ” 클래슀λ₯Ό κ°„λ‹¨ν•˜κ²Œ κ΅¬ν˜„ν•  λ•Œ 주둜 μ‚¬μš©λ©λ‹ˆλ‹€. 읡λͺ…ν΄λž˜μŠ€λŠ” 클래슀 μ •μ˜μ™€ λ™μ‹œμ— μΈμŠ€ν„΄μŠ€λ₯Ό μƒμ„±ν•˜λ©°, 주둜 μΈν„°νŽ˜μ΄μŠ€λ‚˜ 좔상 클래슀λ₯Ό κ΅¬ν˜„ν•œ κ΅¬ν˜„μ²΄λ₯Ό 생성할 λ•Œ ν™œμš©λ©λ‹ˆλ‹€.
  • 읡λͺ…객체: 읡λͺ…κ°μ²΄λŠ” 이름이 μ—†λŠ” 객체둜, 읡λͺ…ν΄λž˜μŠ€λ‘œ μƒμ„±λœ 객체λ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€. 읡λͺ…κ°μ²΄λŠ” 주둜 λ©”μ„œλ“œμ˜ 인자둜 μ „λ‹¬λ˜κ±°λ‚˜ λ©”μ„œλ“œ λ‚΄μ—μ„œ μƒμ„±λ˜μ–΄ μ‚¬μš©λ©λ‹ˆλ‹€. 읡λͺ…κ°μ²΄λŠ” ν•΄λ‹Ή νƒ€μž…μ˜ μΈν„°νŽ˜μ΄μŠ€λ‚˜ 좔상 클래슀λ₯Ό κ΅¬ν˜„ν•œ κ°μ²΄μž…λ‹ˆλ‹€.

μ“°λ ˆλ“œλŠ” μ–Έμ œμ“°κ³  μ“°λ ˆλ“œκ°€ 무엇인가 ? ν”„λ‘œμ„Έμ„œμ™€ μ“°λ ˆλ“œμ˜ 차이

  • μ“°λ ˆλ“œλŠ” λ™μ‹œμ— μ‹€ν–‰λ˜λŠ” μž‘μ—…μ˜ λ‹¨μœ„μ΄λ©°, ν”„λ‘œμ„Έμ„œλŠ” μ“°λ ˆλ“œλ₯Ό μ‹€ν–‰ν•˜λŠ” μ‹€ν–‰ λ‹¨μœ„μž…λ‹ˆλ‹€.
  • μ“°λ ˆλ“œ μ‚¬μš© μ‹œκΈ°: μ“°λ ˆλ“œλ₯Ό μ‚¬μš©ν•˜λŠ” κ°€μž₯ 일반적인 κ²½μš°λŠ” λ™μ‹œμ„±μ΄ ν•„μš”ν•œ μƒν™©μž…λ‹ˆλ‹€. 즉, μ—¬λŸ¬ μž‘μ—…μ„ λ™μ‹œμ— μˆ˜ν–‰ν•΄μ•Ό ν•˜κ±°λ‚˜, ν•œ μž‘μ—…μ΄ μ‹œκ°„μ΄ 였래 걸릴 κ²½μš°μ— μ“°λ ˆλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ μž‘μ—…μ„ λΆ„ν• ν•˜κ³  λ™μ‹œμ— μ‹€ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, GUI μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œλŠ” UI 응닡성을 μœ μ§€ν•˜κΈ° μœ„ν•΄ μ“°λ ˆλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ λ³„λ„μ˜ μž‘μ—…μ„ μ²˜λ¦¬ν•˜λŠ” 것이 μΌλ°˜μ μž…λ‹ˆλ‹€.
  • ν”„λ‘œμ„Έμ„œμ™€ μ“°λ ˆλ“œμ˜ 차이: ν”„λ‘œμ„Έμ„œλŠ” μ»΄ν“¨ν„°μ—μ„œ μ‹€ν–‰ 쀑인 ν”„λ‘œκ·Έλž¨μ„ μ²˜λ¦¬ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” ν•˜λ“œμ›¨μ–΄μž…λ‹ˆλ‹€. μ“°λ ˆλ“œλŠ” ν”„λ‘œμ„Έμ„œμ—μ„œ μ‹€ν–‰λ˜λŠ” μ‹€ν–‰ λ‹¨μœ„λ‘œ, μ—¬λŸ¬ μ“°λ ˆλ“œκ°€ ν•˜λ‚˜μ˜ ν”„λ‘œμ„Έμ„œμ—μ„œ λ™μ‹œμ— 싀행될 수 μžˆμŠ΅λ‹ˆλ‹€. μ“°λ ˆλ“œλŠ” ν”„λ‘œμ„Έμ„œμ˜ μžμ›μ„ κ³΅μœ ν•˜λ©°, 각각 독립적인 μ‹€ν–‰ 흐름을 κ°€μ§€κ³  μžˆμŠ΅λ‹ˆλ‹€.

μ œλ„€λ¦­μ΄λž€ 무엇인가?

  • μ œλ„€λ¦­μ€ λ‹€μ–‘ν•œ νƒ€μž…μ˜ 객체λ₯Ό λ‹€λ£¨λŠ” λ©”μ„œλ“œλ‚˜ ν΄λž˜μŠ€μ— νƒ€μž…μ„ μ •μ˜ν•˜μ—¬ νƒ€μž…μ˜ μ•ˆμ •μ„±μ„ μ œκ³΅ν•˜λŠ” κΈ°λŠ₯μž…λ‹ˆλ‹€.
  • μ œλ„€λ¦­μ€ ν΄λž˜μŠ€λ‚˜ λ©”μ„œλ“œλ₯Ό μ„ μ–Έν•  λ•Œ νƒ€μž… λ§€κ°œλ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ μΌλ°˜ν™”λœ νƒ€μž…μ„ μ²˜λ¦¬ν•  수 μžˆλ„λ‘ ν•©λ‹ˆλ‹€.
// μ œλ„€λ¦­μ„ μ‚¬μš©ν•˜μ§€ μ•Šμ€ 경우
List list = new ArrayList();
list.add("Hello");
String str = (String) list.get(0);

// μ œλ„€λ¦­μ„ μ‚¬μš©ν•œ 경우
List<String> list = new ArrayList<>();
list.add("Hello");
String str = list.get(0);

httpν”„λ‘œν† μ½œμ— λŒ€ν•΄μ„œ μ•„λŠ”κ°€?

  • HTTP ν”„λ‘œν† μ½œμ€ μ›Ή μƒμ—μ„œ ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„ κ°„μ˜ 톡신을 μœ„ν•œ κ·œμ•½μž…λ‹ˆλ‹€.
    • μƒνƒœλ₯Ό μœ μ§€ν•˜μ§€ μ•ŠλŠ” ν”„λ‘œν† μ½œ: HTTPλŠ” μƒνƒœλ₯Ό μœ μ§€ν•˜μ§€ μ•ŠλŠ” ν”„λ‘œν† μ½œλ‘œ, 각각의 μš”μ²­μ€ λ…λ¦½μ μœΌλ‘œ μ²˜λ¦¬λ©λ‹ˆλ‹€.
    • 기본적으둜 평문(Plain Text)으둜 톡신: HTTPλŠ” 기본적으둜 ν‰λ¬ΈμœΌλ‘œ 데이터λ₯Ό μ „μ†‘ν•˜λ―€λ‘œ, λ³΄μ•ˆμ΄ ν•„μš”ν•œ 경우 HTTPS와 같은 λ³΄μ•ˆ ν”„λ‘œν† μ½œμ„ μ‚¬μš©ν•΄μ•Ό ν•©λ‹ˆλ‹€.
    • μš”μ²­-응닡 방식: ν΄λΌμ΄μ–ΈνŠΈκ°€ μ„œλ²„λ‘œ μš”μ²­μ„ 보내면, μ„œλ²„λŠ” μš”μ²­μ— λŒ€ν•œ 응닡을 λ°˜ν™˜ν•©λ‹ˆλ‹€.
    • λ¬΄μƒνƒœ(Stateless): 각각의 μš”μ²­μ€ 독립적이며, 이전 μš”μ²­μ— λŒ€ν•œ 정보λ₯Ό μ„œλ²„κ°€ μœ μ§€ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

μŠ€ν”„λ§(Spring)이 무엇인가?

μŠ€ν”„λ§μ€ μžλ°” 기반의 μ˜€ν”ˆ μ†ŒμŠ€ ν”„λ ˆμž„μ›Œν¬λ‘œ, μ• ν”Œλ¦¬μΌ€μ΄μ…˜ κ°œλ°œμ„ μœ„ν•œ ν’€ μŠ€νƒ μ†”λ£¨μ…˜μ„ μ œκ³΅ν•©λ‹ˆλ‹€.

μŠ€ν”„λ§μ€ μ˜μ‘΄μ„± μ£Όμž…(Dependency Injection), μ œμ–΄ μ—­μ „(Inversion of Control), 관점 μ§€ν–₯ ν”„λ‘œκ·Έλž˜λ°(Aspect-Oriented Programming) λ“±μ˜ κ°œλ…μ„ 기반으둜 ν•œλ‹€. μŠ€ν”„λ§μ€ κ²½λŸ‰ μ»¨ν…Œμ΄λ„ˆλ‘œμ„œ 객체의 생λͺ…주기와 의쑴 관계λ₯Ό κ΄€λ¦¬ν•˜λ©°,

λ‹€μ–‘ν•œ λͺ¨λ“ˆμ„ μ œκ³΅ν•˜μ—¬ 개발 νš¨μœ¨μ„±μ„ 높이고 μœ μ§€ 보수λ₯Ό μš©μ΄ν•˜κ²Œ ν•©λ‹ˆλ‹€.

 

μ„Έμ…˜κ³Ό μΏ ν‚€μ˜ 차이 ?

  • μ„Έμ…˜ (Session): μ„Έμ…˜μ€ ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„ κ°„μ˜ μƒνƒœλ₯Ό μœ μ§€ν•˜κΈ° μœ„ν•œ λ©”μ»€λ‹ˆμ¦˜μž…λ‹ˆλ‹€. μ„Έμ…˜μ€ ν΄λΌμ΄μ–ΈνŠΈμ— κ³ μœ ν•œ μ‹λ³„μžλ₯Ό λΆ€μ—¬ν•˜κ³ , μ„œλ²„μ—μ„œλŠ” ν•΄λ‹Ή μ‹λ³„μžλ₯Ό μ‚¬μš©ν•˜μ—¬ ν΄λΌμ΄μ–ΈνŠΈμ˜ μƒνƒœλ₯Ό μœ μ§€ν•©λ‹ˆλ‹€. μ„Έμ…˜μ€ μ„œλ²„ μΈ‘μ—μ„œ 데이터λ₯Ό μ €μž₯ν•˜λ―€λ‘œ 비ꡐ적 μ•ˆμ „ν•œ λ°©λ²•μž…λ‹ˆλ‹€. μ„Έμ…˜μ€ 일정 μ‹œκ°„ λ™μ•ˆ μœ μ§€λ˜λ©°, λΈŒλΌμš°μ €κ°€ μ’…λ£Œλ˜κ±°λ‚˜ μ„Έμ…˜ 만료 μ‹œκ°„μ΄ μ§€λ‚˜λ©΄ μ’…λ£Œλ©λ‹ˆλ‹€.
  • μΏ ν‚€ (Cookie): μΏ ν‚€λŠ” ν΄λΌμ΄μ–ΈνŠΈ 츑에 μ €μž₯λ˜λŠ” μž‘μ€ 데이터 μ‘°κ°μž…λ‹ˆλ‹€. μΏ ν‚€λŠ” μ„œλ²„μ—μ„œ ν΄λΌμ΄μ–ΈνŠΈλ‘œ μ „μ†‘λ˜μ–΄ ν΄λΌμ΄μ–ΈνŠΈμ— μ €μž₯되고, ν΄λΌμ΄μ–ΈνŠΈκ°€ λ™μΌν•œ μ„œλ²„μ— μž¬μš”μ²­μ„ ν•  λ•Œλ§ˆλ‹€ μ„œλ²„λ‘œ μ „μ†‘λ©λ‹ˆλ‹€. μΏ ν‚€λŠ” ν΄λΌμ΄μ–ΈνŠΈ μΈ‘μ—μ„œ κ΄€λ¦¬λ˜λ―€λ‘œ μƒλŒ€μ μœΌλ‘œ λ³΄μ•ˆμ— μ·¨μ•½ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μΏ ν‚€λŠ” λΈŒλΌμš°μ €λ₯Ό μ’…λ£Œν•΄λ„ μœ μ§€λ  수 있으며, μ„€μ •λœ 유효 기간에 따라 μœ μ§€λ˜κ±°λ‚˜ μ‚­μ œλ©λ‹ˆλ‹€.
  • 차이점: μ„Έμ…˜μ€ μ„œλ²„ μΈ‘μ—μ„œ κ΄€λ¦¬λ˜κ³  데이터가 μ„œλ²„μ— μ €μž₯되며, μΏ ν‚€λŠ” ν΄λΌμ΄μ–ΈνŠΈ μΈ‘μ—μ„œ κ΄€λ¦¬λ˜κ³  데이터가 ν΄λΌμ΄μ–ΈνŠΈμ— μ €μž₯λ©λ‹ˆλ‹€. μ„Έμ…˜μ€ λ³΄μ•ˆμ— μƒλŒ€μ μœΌλ‘œ μ•ˆμ „ν•˜κ³ , μΏ ν‚€λŠ” λ³΄μ•ˆμ— μ·¨μ•½ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ„Έμ…˜μ€ 일정 μ‹œκ°„ λ™μ•ˆ μœ μ§€λ˜μ§€λ§Œ, μΏ ν‚€λŠ” μ„€μ •λœ 유효 기간에 따라 μœ μ§€λ˜κ±°λ‚˜ μ‚­μ œλ©λ‹ˆλ‹€.

μžλ°”μŠ€ν¬λ¦½νŠΈκ°€ 무엇인가? μŠ€ν¬λ¦½νŠΈμ–Έμ–΄κ°€ λ­”μ€„μ•„λŠ”κ°€?

  • μžλ°”μŠ€ν¬λ¦½νŠΈ (JavaScript): μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” μ›Ή νŽ˜μ΄μ§€μ˜ 동적인 κΈ°λŠ₯을 κ΅¬ν˜„ν•˜κΈ° μœ„ν•΄ μ‚¬μš©λ˜λŠ” 슀크립트 μ–Έμ–΄μž…λ‹ˆλ‹€. μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” HTML λ¬Έμ„œ μ•ˆμ—μ„œ μ‚¬μš©λ˜λ©°, μ›Ή λΈŒλΌμš°μ €μ—μ„œ μ‹€ν–‰λ©λ‹ˆλ‹€. μžλ°”μŠ€ν¬λ¦½νŠΈλ₯Ό μ‚¬μš©ν•˜λ©΄ μ‚¬μš©μžμ˜ μƒν˜Έ μž‘μš©μ— 따라 μ›Ή νŽ˜μ΄μ§€μ˜ λ‚΄μš©μ΄ λ³€κ²½λ˜κ±°λ‚˜ 동적인 효과λ₯Ό μ μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • 슀크립트 μ–Έμ–΄: 슀크립트 μ–Έμ–΄λŠ” 컴파일 κ³Όμ • 없이 인터프리터에 μ˜ν•΄ λ°”λ‘œ μ‹€ν–‰λ˜λŠ” μ–Έμ–΄μž…λ‹ˆλ‹€. μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” ν΄λΌμ΄μ–ΈνŠΈ μΈ‘μ—μ„œ μ‹€ν–‰λ˜λ©°, μ›Ή λΈŒλΌμš°μ €μ— λ‚΄μž₯된 μžλ°”μŠ€ν¬λ¦½νŠΈ 인터프리터가 μ½”λ“œλ₯Ό μ‹€ν–‰ν•©λ‹ˆλ‹€.

μ œμ΄μΏΌλ¦¬κ°€ 무엇인가? 제이쿼리의 νŠΉμ§•, 제이쿼리 μ…€λ ‰ν„°

  • 제이쿼리 (jQuery): μ œμ΄μΏΌλ¦¬λŠ” μžλ°”μŠ€ν¬λ¦½νŠΈ 기반의 μ˜€ν”ˆ μ†ŒμŠ€ 라이브러리둜, HTML λ¬Έμ„œλ₯Ό μ‘°μž‘ν•˜κ³  이벀트λ₯Ό μ²˜λ¦¬ν•˜κΈ° μœ„ν•œ κ°„νŽΈν•œ APIλ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€. μ œμ΄μΏΌλ¦¬λŠ” 크둜슀 λΈŒλΌμš°μ§• 이슈λ₯Ό ν•΄κ²°ν•˜κ³ , DOM μ‘°μž‘, 이벀트 처리, μ• λ‹ˆλ©”μ΄μ…˜ 효과 등을 μ‰½κ²Œ κ΅¬ν˜„ν•  수 μžˆλ„λ‘ λ„μ™€μ€λ‹ˆλ‹€. μ œμ΄μΏΌλ¦¬λŠ” μ§§κ³  κ°„κ²°ν•œ μ½”λ“œλ‘œ μž‘μ„±ν•  수 μžˆμ–΄ 개발 νš¨μœ¨μ„±μ„ 높이고 μœ μ§€ 보수λ₯Ό μš©μ΄ν•˜κ²Œ ν•©λ‹ˆλ‹€.
  • 제이쿼리 μ…€λ ‰ν„°: μ œμ΄μΏΌλ¦¬λŠ” CSS μ„ νƒμžλ₯Ό μ‚¬μš©ν•˜μ—¬ HTML μš”μ†Œλ₯Ό μ„ νƒν•˜κ³  μ‘°μž‘ν•˜λŠ” κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€. 제이쿼리 μ…€λ ‰ν„°λ₯Ό μ‚¬μš©ν•˜λ©΄ νŠΉμ • HTML μš”μ†Œλ₯Ό μ‰½κ²Œ μ„ νƒν•˜μ—¬ μŠ€νƒ€μΌ λ³€κ²½, 이벀트 처리 등을 μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 제이쿼리 μ…€λ ‰ν„°λŠ” CSS μ„ νƒμžλ₯Ό ν™œμš©ν•˜μ—¬ μš”μ†Œλ₯Ό μ„ νƒν•˜λŠ” 방식을 μ±„νƒν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

Ajaxκ°€ λ­”μ§€ μ„€λͺ…해봐라

Ajax (Asynchronous JavaScript and XML): AjaxλŠ” μ›Ή νŽ˜μ΄μ§€μ—μ„œ λΉ„λ™κΈ°μ μœΌλ‘œ μ„œλ²„μ™€ 데이터λ₯Ό κ΅ν™˜ν•˜κΈ° μœ„ν•΄ μ‚¬μš©λ˜λŠ” κΈ°μˆ μž…λ‹ˆλ‹€. Ajaxλ₯Ό μ‚¬μš©ν•˜λ©΄ μ›Ή νŽ˜μ΄μ§€μ˜ 일뢀뢄을 μ—…λ°μ΄νŠΈν•˜κ±°λ‚˜ μΆ”κ°€ μš”μ²­ 없이 데이터λ₯Ό κ°€μ Έμ˜¬ 수 μžˆμŠ΅λ‹ˆλ‹€. AjaxλŠ” μžλ°”μŠ€ν¬λ¦½νŠΈ, XML λ˜λŠ” JSON, HTML 등을 μ‚¬μš©ν•˜μ—¬ 데이터λ₯Ό κ΅ν™˜ν•˜λ©°, νŽ˜μ΄μ§€ 전체λ₯Ό μƒˆλ‘œ κ³ μΉ˜μ§€ μ•Šκ³ λ„ 동적인 κΈ°λŠ₯을 κ΅¬ν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

JSPκ°€ λ­”μ€„μ•„λŠ”κ°€?

JSP (JavaServer Pages): JSPλŠ” μ„œλ²„ μΈ‘μ—μ„œ 동적인 μ›Ή νŽ˜μ΄μ§€λ₯Ό μƒμ„±ν•˜κΈ° μœ„ν•΄ μ‚¬μš©λ˜λŠ” μ›Ή ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄μž…λ‹ˆλ‹€. JSPλŠ” HTML 내에 μžλ°” μ½”λ“œλ₯Ό μ‚½μž…ν•˜μ—¬ μ‚¬μš©ν•˜λ©°, JSP νŒŒμΌμ€ μ„œλΈ”λ¦ΏμœΌλ‘œ λ³€ν™˜λ˜μ–΄ μ‹€ν–‰λ©λ‹ˆλ‹€. JSPλ₯Ό μ‚¬μš©ν•˜λ©΄ HTMLκ³Ό μžλ°” μ½”λ“œλ₯Ό κ²°ν•©ν•˜μ—¬ 동적인 μ›Ή νŽ˜μ΄μ§€λ₯Ό 생성할 수 μžˆμŠ΅λ‹ˆλ‹€. JSPλŠ” μ„œλ²„ μΈ‘μ—μ„œ λ°μ΄ν„°λ² μ΄μŠ€ 연동, 둜직 처리, 동적인 μ½˜ν…μΈ  생성 등을 μˆ˜ν–‰ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€.

 

ν˜•μƒκ΄€λ¦¬ ν•΄λ΄€λŠ”μ§€? SVN, GIT?

  • SVN (Subversion): SVN은 쀑앙 집쀑식 ν˜•μƒ 관리 μ‹œμŠ€ν…œμœΌλ‘œ, 파일의 버전을 쀑앙 μ„œλ²„μ— μ €μž₯ν•˜κ³  κ΄€λ¦¬ν•©λ‹ˆλ‹€. λ‹€μˆ˜μ˜ κ°œλ°œμžκ°€ λ™μ‹œμ— μž‘μ—…ν•  수 있으며, λ³€κ²½ 사항을 좩돌 없이 톡합할 수 μžˆλ„λ‘ λ„μ™€μ€λ‹ˆλ‹€.
  • Git: Git은 λΆ„μ‚°ν˜• ν˜•μƒ 관리 μ‹œμŠ€ν…œμœΌλ‘œ, 각 κ°œλ°œμžκ°€ 둜컬 μ €μž₯μ†Œλ₯Ό κ°€μ§€κ³  λ…λ¦½μ μœΌλ‘œ μž‘μ—…ν•  수 μžˆμŠ΅λ‹ˆλ‹€. Git은 λ³€κ²½ 사항을 컀밋 λ‹¨μœ„λ‘œ κ΄€λ¦¬ν•˜λ©°, 브랜치, 병합, 리베이슀 λ“±μ˜ κΈ°λŠ₯을 μ œκ³΅ν•˜μ—¬ 효과적인 ν˜‘μ—…μ„ μ§€μ›ν•©λ‹ˆλ‹€. Git은 λŒ€λΆ€λΆ„μ˜ μ˜€ν”ˆ μ†ŒμŠ€ ν”„λ‘œμ νŠΈμ—μ„œ 널리 μ‚¬μš©λ˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

μΆ”μƒν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€ 차이

  • 좔상 클래슀 (Abstract Class): 좔상 ν΄λž˜μŠ€λŠ” ν•˜λ‚˜ μ΄μƒμ˜ 좔상 λ©”μ„œλ“œλ₯Ό ν¬ν•¨ν•œ ν΄λž˜μŠ€μž…λ‹ˆλ‹€. 좔상 ν΄λž˜μŠ€λŠ” μΈμŠ€ν„΄μŠ€λ₯Ό 직접 생성할 수 μ—†μœΌλ©°, μ„œλΈŒ ν΄λž˜μŠ€μ—μ„œ 좔상 λ©”μ„œλ“œλ₯Ό κ΅¬ν˜„ν•΄μ•Ό ν•©λ‹ˆλ‹€. 좔상 ν΄λž˜μŠ€λŠ” κ³΅ν†΅λœ κΈ°λŠ₯을 κ°€μ§„ 클래슀의 곡톡 뢀뢄을 κ΅¬ν˜„ν•  수 있으며, 상속을 톡해 ν™•μž₯λ˜μ–΄ μ‚¬μš©λ©λ‹ˆλ‹€.
  • μΈν„°νŽ˜μ΄μŠ€ (Interface): μΈν„°νŽ˜μ΄μŠ€λŠ” 좔상 λ©”μ„œλ“œμ™€ μƒμˆ˜λ§Œμ„ κ°€μ§„ ν΄λž˜μŠ€μ™€ μœ μ‚¬ν•œ κ°œλ…μž…λ‹ˆλ‹€. μΈν„°νŽ˜μ΄μŠ€λŠ” ν΄λž˜μŠ€μ—μ„œ κ΅¬ν˜„ν•΄μ•Ό ν•˜λŠ” λ©”μ„œλ“œμ˜ λͺ…μ„Έλ₯Ό μ •μ˜ν•˜λŠ” 역할을 ν•©λ‹ˆλ‹€. ν΄λž˜μŠ€λŠ” μ—¬λŸ¬ 개의 μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ΅¬ν˜„ν•  수 있으며, μΈν„°νŽ˜μ΄μŠ€λŠ” 닀쀑 상속이 κ°€λŠ₯ν•©λ‹ˆλ‹€.
  • 차이점:
    • ꡬ쑰: 좔상 ν΄λž˜μŠ€λŠ” ν΄λž˜μŠ€μ΄λ―€λ‘œ 멀버 λ³€μˆ˜λ₯Ό κ°€μ§ˆ 수 있고, λ©”μ„œλ“œμ˜ 일반 κ΅¬ν˜„μ„ 포함할 수 μžˆμŠ΅λ‹ˆλ‹€. μΈν„°νŽ˜μ΄μŠ€λŠ” μƒμˆ˜μ™€ 좔상 λ©”μ„œλ“œλ§Œμ„ κ°€μ§ˆ 수 μžˆμŠ΅λ‹ˆλ‹€.
    • μΈμŠ€ν„΄μŠ€ν™”: 좔상 ν΄λž˜μŠ€λŠ” μΈμŠ€ν„΄μŠ€λ₯Ό 직접 생성할 수 μ—†μŠ΅λ‹ˆλ‹€. μΈν„°νŽ˜μ΄μŠ€λŠ” μΈμŠ€ν„΄μŠ€λ₯Ό 생성할 수 μ—†μŠ΅λ‹ˆλ‹€.
    • 상속: 좔상 ν΄λž˜μŠ€λŠ” 단일 μƒμ†λ§Œμ„ μ§€μ›ν•˜λ©°, μΈν„°νŽ˜μ΄μŠ€λŠ” 닀쀑 상속이 κ°€λŠ₯ν•©λ‹ˆλ‹€.
    • λͺ©μ : 좔상 ν΄λž˜μŠ€λŠ” 클래슀의 μΌλ°˜ν™”λ₯Ό μœ„ν•΄ μ‚¬μš©λ˜λ©°, μΈν„°νŽ˜μ΄μŠ€λŠ” 클래슀 κ°„μ˜ μƒν˜Έ μž‘μš©μ„ μœ„ν•œ λͺ…μ„Έλ₯Ό μ œκ³΅ν•˜κΈ° μœ„ν•΄ μ‚¬μš©λ©λ‹ˆλ‹€.

ArrayList와 Vector 차이

  • 곡톡점 : ArrayList와 VectorλŠ” 동적 λ°°μ—΄ 자료 ꡬ쑰λ₯Ό μ œκ³΅ν•˜λŠ” 클래슀둜, μš”μ†Œλ“€μ„ 인덱슀둜 μ ‘κ·Όν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • 차이점 : VectorλŠ” μŠ€λ ˆλ“œ μ•ˆμ „(thread-safe)ν•˜κ²Œ λ™μž‘ν•˜κΈ° μœ„ν•΄ λͺ¨λ“  λ©”μ„œλ“œμ— λŒ€ν•œ 동기화λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€. ArrayListλŠ” 동기화λ₯Ό μ œκ³΅ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ VectorλŠ” λ©€ν‹°μŠ€λ ˆλ“œ ν™˜κ²½μ—μ„œ μ•ˆμ „ν•˜κ²Œ μ‚¬μš©ν•  수 μžˆμ§€λ§Œ, ArrayListλŠ” 동기화 처리λ₯Ό μœ„ν•΄ λ³„λ„μ˜ μž‘μ—…μ΄ ν•„μš”ν•©λ‹ˆλ‹€.
  • μ„±λŠ₯: 동기화 처리둜 인해 VectorλŠ” ArrayList보닀 느릴 수 μžˆμŠ΅λ‹ˆλ‹€. 동기화가 ν•„μš”ν•˜μ§€ μ•Šμ€ κ²½μš°μ—λŠ” ArrayListκ°€ μ„±λŠ₯λ©΄μ—μ„œ μš°μˆ˜ν•©λ‹ˆλ‹€.
  • μš©λŸ‰ 증가: VectorλŠ” μš”μ†Œμ˜ κ°œμˆ˜κ°€ μš©λŸ‰μ„ μ΄ˆκ³Όν•  경우 μžλ™μœΌλ‘œ μš©λŸ‰μ„ μ¦κ°€μ‹œν‚΅λ‹ˆλ‹€. μš©λŸ‰μ΄ λΆ€μ‘±ν•œ 경우 μžλ™μœΌλ‘œ 더 큰 배열을 μƒμ„±ν•˜μ—¬ μš”μ†Œλ₯Ό λ³΅μ‚¬ν•©λ‹ˆλ‹€. ArrayListλŠ” μš©λŸ‰μ΄ λΆ€μ‘±ν•œ 경우 μΌμ •λŸ‰μ”© μš©λŸ‰μ„ μ¦κ°€μ‹œν‚€λŠ” λ°©μ‹μœΌλ‘œ μ²˜λ¦¬ν•©λ‹ˆλ‹€.
  • μ“°λ ˆλ“œ μ•ˆμ „μ„±: VectorλŠ” 동기화λ₯Ό μ œκ³΅ν•˜κΈ° λ•Œλ¬Έμ— λ©€ν‹°μŠ€λ ˆλ“œ ν™˜κ²½μ—μ„œ μ•ˆμ „ν•˜κ²Œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. ArrayListλŠ” 동기화λ₯Ό μ œκ³΅ν•˜μ§€ μ•ŠμœΌλ―€λ‘œ λ©€ν‹°μŠ€λ ˆλ“œ ν™˜κ²½μ—μ„œ μ•ˆμ „ν•˜μ§€ μ•Šμ„ 수 μžˆμŠ΅λ‹ˆλ‹€.

JUnit μ‚¬μš©λ²•

  • JUnit은 μžλ°”μ—μ„œ λ‹¨μœ„ ν…ŒμŠ€νŠΈλ₯Ό μž‘μ„±ν•˜κΈ° μœ„ν•œ ν”„λ ˆμž„μ›Œν¬μž…λ‹ˆλ‹€. JUnit을 μ‚¬μš©ν•˜λ©΄ ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€λ₯Ό μž‘μ„±ν•˜κ³  μ‹€ν–‰ν•˜μ—¬ μ½”λ“œμ˜ 정확성을 검증할 수 μžˆμŠ΅λ‹ˆλ‹€. JUnit을 μ‚¬μš©ν•˜κΈ° μœ„ν•΄μ„œλŠ” λ‹€μŒκ³Ό 같은 단계λ₯Ό λ”°λ¦…λ‹ˆλ‹€:
    1. JUnit μ˜μ‘΄μ„± μΆ”κ°€: ν”„λ‘œμ νŠΈμ˜ μ˜μ‘΄μ„± 관리 파일(예: Maven의 pom.xml)에 JUnit μ˜μ‘΄μ„±μ„ μΆ”κ°€ν•©λ‹ˆλ‹€.
    2. ν…ŒμŠ€νŠΈ 클래슀 μž‘μ„±: JUnit으둜 ν…ŒμŠ€νŠΈν•  μ½”λ“œμ˜ ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€λ₯Ό μž‘μ„±ν•©λ‹ˆλ‹€. ν…ŒμŠ€νŠΈ λ©”μ„œλ“œλŠ” @Test μ–΄λ…Έν…Œμ΄μ…˜μœΌλ‘œ ν‘œμ‹œν•˜κ³ , 각 ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€λ§ˆλ‹€ μ˜ˆμƒλ˜λŠ” κ²°κ³Όλ₯Ό κ²€μ¦ν•˜λŠ” μ½”λ“œλ₯Ό μž‘μ„±ν•©λ‹ˆλ‹€.
    3. ν…ŒμŠ€νŠΈ μ‹€ν–‰: JUnit을 μ‹€ν–‰ν•˜μ—¬ ν…ŒμŠ€νŠΈλ₯Ό μˆ˜ν–‰ν•©λ‹ˆλ‹€. 주둜 IDE의 ν…ŒμŠ€νŠΈ μ‹€ν–‰ κΈ°λŠ₯을 μ‚¬μš©ν•˜κ±°λ‚˜, λΉŒλ“œ λ„κ΅¬μ˜ ν…ŒμŠ€νŠΈ μ‹€ν–‰ λͺ…령을 μ‚¬μš©ν•©λ‹ˆλ‹€.
    4. κ²°κ³Ό 확인: ν…ŒμŠ€νŠΈ κ²°κ³Όλ₯Ό ν™•μΈν•˜μ—¬ ν…ŒμŠ€νŠΈκ°€ μ„±κ³΅ν–ˆλŠ”μ§€ λ˜λŠ” μ‹€νŒ¨ν–ˆλŠ”μ§€ ν™•μΈν•©λ‹ˆλ‹€. JUnit은 각 ν…ŒμŠ€νŠΈμ˜ 성곡, μ‹€νŒ¨, μ—λŸ¬ 등에 λŒ€ν•œ κ²°κ³Όλ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.

μ„œλΈŒν΄λž˜μŠ€μ—μ„œ μ˜€λ²„λΌμ΄λ”©μ„ λͺ»ν•˜κ²Œ ν•˜λ €λ©΄ μ–΄λ–‘ν•΄μ•Όν•˜λŠ”κ°€?

  • μ„œλΈŒν΄λž˜μŠ€μ—μ„œ μ˜€λ²„λΌμ΄λ”©μ„ κΈˆμ§€ν•˜λ €λ©΄ λ©”μ„œλ“œμ— final ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•˜λ©΄ λ©λ‹ˆλ‹€. final ν‚€μ›Œλ“œλ₯Ό λ©”μ„œλ“œ μ•žμ— 뢙이면 ν•΄λ‹Ή λ©”μ„œλ“œλŠ” μ˜€λ²„λΌμ΄λ”©μ΄ λΆˆκ°€λŠ₯ν•˜κ²Œ λ©λ‹ˆλ‹€. λ”°λΌμ„œ μ„œλΈŒν΄λž˜μŠ€μ—μ„œλŠ” ν•΄λ‹Ή λ©”μ„œλ“œλ₯Ό 상속받아 μ˜€λ²„λΌμ΄λ”©ν•  수 μ—†μŠ΅λ‹ˆλ‹€. final ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ 클래슀λ₯Ό μ„ μ–Έν•˜λ©΄ ν•΄λ‹Ή 클래슀λ₯Ό 상속받을 수 μ—†μŠ΅λ‹ˆλ‹€.

λ°˜μ‘ν˜• μ›Ή μ‚¬μš©ν•΄ λ΄€λŠ”κ°€? BootStrap의 κ°œλ°œκ²½ν—˜μ΄ μžˆλŠ”μ§€?

  • λ°˜μ‘ν˜• μ›Ή(RWD, Responsive Web Design)은 λ‹€μ–‘ν•œ λ””λ°”μ΄μŠ€μ™€ ν™”λ©΄ 크기에 λŒ€μ‘ν•˜μ—¬ μ›Ή νŽ˜μ΄μ§€λ₯Ό μžλ™μœΌλ‘œ μ΅œμ ν™”ν•˜λŠ” κΈ°μˆ μž…λ‹ˆλ‹€. λ°˜μ‘ν˜• 웹을 κ΅¬ν˜„ν•˜κΈ° μœ„ν•΄μ„œλŠ” HTML, CSS, JavaScript 등을 μ‚¬μš©ν•˜μ—¬ λ―Έλ””μ–΄ 쿼리(Media Query)와 μœ μ—°ν•œ λ ˆμ΄μ•„μ›ƒ(Flexible Layout) 등을 μ μš©ν•©λ‹ˆλ‹€.
  • Bootstrap은 HTML, CSS, JavaScript 기반의 ν”„λ‘ νŠΈμ—”λ“œ 개발 ν”„λ ˆμž„μ›Œν¬λ‘œ, λ°˜μ‘ν˜• 웹을 κ΅¬μΆ•ν•˜λŠ” 데 도움을 μ£ΌλŠ” λ§Žμ€ κΈ°λŠ₯κ³Ό μ»΄ν¬λ„ŒνŠΈλ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€. Bootstrap을 μ‚¬μš©ν•˜λ©΄ κ·Έλ¦¬λ“œ μ‹œμŠ€ν…œ, 탐색 ν‘œμ‹œμ€„, λ²„νŠΌ, 양식, λͺ¨λ‹¬ μ°½ λ“± λ‹€μ–‘ν•œ UI μ»΄ν¬λ„ŒνŠΈλ₯Ό μ‰½κ²Œ κ΅¬ν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€. Bootstrap은 λ°˜μ‘ν˜• μ›Ή λ””μžμΈμ— 특히 μœ μš©ν•˜λ©°, μ›Ή νŽ˜μ΄μ§€μ˜ λͺ¨μ–‘κ³Ό λ ˆμ΄μ•„μ›ƒμ„ λ‹€μ–‘ν•œ λ””λ°”μ΄μŠ€μ— 맞게 μ‘°μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

String은 ν΄λž˜μŠ€μΈκ°€?

  • String은 μžλ°”μ—μ„œ λ¬Έμžμ—΄μ„ μ²˜λ¦¬ν•˜κΈ° μœ„ν•œ ν΄λž˜μŠ€μž…λ‹ˆλ‹€.
  • String ν΄λž˜μŠ€λŠ” μžλ°”μ—μ„œ 기본적으둜 μ œκ³΅λ˜λŠ” 클래슀이며, java.lang νŒ¨ν‚€μ§€μ— ν¬ν•¨λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.
  • String ν΄λž˜μŠ€λŠ” λ¬Έμžμ—΄μ„ ν‘œν˜„ν•˜κ³  닀루기 μœ„ν•œ λ‹€μ–‘ν•œ λ©”μ„œλ“œμ™€ κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€.
  • λ”°λΌμ„œ, String은 μžλ°”μ—μ„œ 클래슀둜 μ‚¬μš©λ˜λ©° λ¬Έμžμ—΄μ„ ν‘œν˜„ν•˜κΈ° μœ„ν•œ κ°μ²΄μž…λ‹ˆλ‹€.