Skip to content

pms131/techStudy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

28 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

์ œ๋ชฉ ์—†์Œ


Spring

Q2.ย Spring์„ ์‚ฌ์šฉํ•˜๋ฉด ์–ด๋–ค ์ด์ ์ดย ์žˆ์Šต๋‹ˆ๊นŒ?

์ž์นด๋ฅดํƒ€ EE ๊ฐœ๋ฐœ์„ ๋” ์‰ฝ๊ฒŒ ๋งŒ๋“œ๋Š” Spring ๋ชฉํ‘œ.ย ์‚ฌ์šฉ์˜ ์žฅ์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๊ฒฝ๋Ÿ‰ :

    ๊ฐœ๋ฐœ์—์„œ ํ”„๋ ˆ์ž„ ์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ ์•ฝ๊ฐ„์˜ ์˜ค๋ฒ„ ํ—ค๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • IoC (Inversionย of Control) :

    Spring ์ปจํ…Œ์ด๋„ˆ๋Š” ์ข…์† ๊ฐœ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ์ฐพ๋Š” ๋Œ€์‹  ๋‹ค์–‘ํ•œ ๊ฐœ์ฒด์˜ ์—ฐ๊ฒฐ ์˜์กด์„ฑ์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

  • AOP (Aspect Oriented Programming) :

    Spring์€ ์‹œ์Šคํ…œ ์„œ๋น„์Šค์—์„œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๋ถ„๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด AOP๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

  • IoC ์ปจํ…Œ์ด๋„ˆ :

    Spring Bean ๋ผ์ดํ”„ ์‚ฌ์ดํด ๋ฐ ํ”„๋กœ์ ํŠธ ๋ณ„ ๊ตฌ์„ฑ์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

  • MVC ํ”„๋ ˆ์ž„ ์›Œํฌ :

    XML / JSON ์‘๋‹ต์„ ๋ฐ˜ํ™˜ ํ•  ์ˆ˜์žˆ๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋˜๋Š” RESTful ์›น ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

  • ํŠธ๋žœ์žญ์…˜ ๊ด€๋ฆฌ :

    Java ์–ด๋…ธํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ Spring Bean XML ๊ตฌ์„ฑ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜์—ฌ JDBC ์ž‘์—…, ํŒŒ์ผ ์—…๋กœ๋“œ ๋“ฑ์—์„œ ์ƒ์šฉ๊ตฌ ์ฝ”๋“œ์˜ ์–‘์„ ์ค„์ž…๋‹ˆ๋‹ค.

  • ์˜ˆ์™ธ ์ฒ˜๋ฆฌ :

    Spring์€ ๊ธฐ์ˆ  ๋ณ„ ์˜ˆ์™ธ๋ฅผ ํ™•์ธ๋˜์ง€ ์•Š์€ ์˜ˆ์™ธ๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ์œ„ํ•œ ํŽธ๋ฆฌํ•œ API๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

Q4.ย ์˜์กด์„ฑ ์ฃผ์ž…์ด๋ž€?

IoC (Inversion of Control)์˜ ํ•œ ์ธก๋ฉด ์ธ ์˜์กด์„ฑ ์ฃผ์ž…์€ ๊ฐœ์ฒด๋ฅผ ์ˆ˜๋™์œผ๋กœ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ  ๋Œ€์‹  ์ƒ์„ฑ ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•˜๋Š” ์ผ๋ฐ˜์ ์ธ ๊ฐœ๋…์ž…๋‹ˆ๋‹ค.ย IoC ์ปจํ…Œ์ด๋„ˆ๋Š” ํ•„์š”ํ•œ ๊ฒฝ์šฐ ํ•„์š”ํ•œ ํด๋ž˜์Šค๋ฅผ ์ธ์Šคํ„ด์Šคํ™”ํ•ฉ๋‹ˆ๋‹ค.

Q5.ย Spring์— Bean์„ ์–ด๋–ป๊ฒŒ ์ฃผ์ž… ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋ช‡ ๊ฐ€์ง€ ๋‹ค๋ฅธ ์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์„ธํ„ฐ ์ฃผ์ž…
  • ์ƒ์„ฑ์ž ์ฃผ์ž…
  • Field ์ฃผ์ž…

๊ตฌ์„ฑ์€ XML ํŒŒ์ผ ๋˜๋Š” ์–ด๋…ธํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜ํ–‰ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Q7.ย Beanfactory์™€ Applicationcontext์˜ ์ฐจ์ด์ ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

BeanFactoryย ๋Š” Bean ์ธ์Šคํ„ด์Šค๋ฅผ ์ œ๊ณตํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ธํ„ฐํŽ˜์ด์Šค์ž…๋‹ˆ๋‹ค.ย ๊ธฐ๋ณธ ๊ตฌํ˜„ย ์€ย getBean ()ย ์ด ํ˜ธ์ถœย ๋  ๋•Œ ๋นˆ์„ ๋Š๋ฆฌ๊ฒŒย ์ธ์Šคํ„ด์Šคํ™”ย ํ•ฉ๋‹ˆ๋‹ค.

ApplicationContextย ๋Š”ย ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ย ๋ชจ๋“  ์ •๋ณด, ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ ๋ฐ Bean์„ ๋ณด์œ ํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ธํ„ฐํŽ˜์ด์Šค์ž…๋‹ˆ๋‹ค.ย ๋˜ํ•œย BeanFactoryย ์ธํ„ฐํŽ˜์ด์Šค๋ฅผย ํ™•์žฅย ํ•˜์ง€๋งŒ ๊ธฐ๋ณธ ๊ตฌํ˜„์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‹œ์ž‘๋  ๋•Œ ์—ด์‹ฌํžˆ ๋นˆ์„ ์ธ์Šคํ„ด์Šคํ™”ํ•ฉ๋‹ˆ๋‹ค.ย ์ด ๋™์ž‘์€ ๊ฐœ๋ณ„ Bean์— ๋Œ€ํ•ด ์žฌ์ •์˜ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Q**. ๊ทธ๋Ÿผ Path Variable๊ณผ Query Parameter๋ฅผ ๊ฐ๊ฐ ์–ธ์ œ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”๊ฐ€?**

๋งŒ์•ฝ ์–ด๋–คย resource๋ฅผ ์‹๋ณ„ํ•˜๊ณ  ์‹ถ์œผ๋ฉดย Path Variable์„ ์‚ฌ์šฉํ•˜๊ณ ,์ •๋ ฌ์ด๋‚˜ ํ•„ํ„ฐ๋ง์„ ํ•œ๋‹ค๋ฉดย Query Parameter๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด Best Practice์ด๋‹ค.

Q25.ย Aspect-Oriented Programming์ด๋ž€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

Aspectย ๋Š” ์˜ํ–ฅ์„๋ฐ›๋Š” ํด๋ž˜์Šค๋ฅผ ์ˆ˜์ •ํ•˜์ง€ ์•Š๊ณ  ๊ธฐ์กด ์ฝ”๋“œ์— ์ถ”๊ฐ€ย ๋™์ž‘์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์—ฌ๋Ÿฌ ์œ ํ˜• ๋ฐ ๊ฐ์ฒด์— ๊ฑธ์ณ์žˆ๋Š” ํŠธ๋žœ์žญ์…˜ ๊ด€๋ฆฌ์™€ ๊ฐ™์€ ๊ต์ฐจ ์ ˆ๋‹จ ๋ฌธ์ œ๋ฅผ ๋ชจ๋“ˆํ™” ํ•  ์ˆ˜ ์žˆ๋„๋กํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ์€ย aspect ๊ธฐ๋ฐ˜ ์‹คํ–‰ ์‹œ๊ฐ„ ๋กœ๊น…ย ์˜ ์˜ˆ์ž…๋‹ˆ๋‹คย .

Q26.ย Aop์—์„œ Aspect, Advice, Pointcut ๋ฐ Joinpoint๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

  • Aspect

    : ํŠธ๋žœ์žญ์…˜ ๊ด€๋ฆฌ์™€ ๊ฐ™์€ ๊ต์ฐจย ๋ฌธ์ œ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ํด๋ž˜์Šค

  • Adviceย JoinPoint

    :์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œย Pointcutย ๊ณผ ์ผ์น˜ํ•˜๋Š” ํŠน์ •

    ์—๋„๋‹ฌํ–ˆ์„ ๋•Œ ์‹คํ–‰๋˜๋Š” ๋ฉ”์†Œ๋“œ

  • Pointcutย JoinPoint

    :ย Adviceย ๋ฅผ ์‹คํ–‰ํ•ด์•ผํ•˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•˜๊ธฐ ์œ„ํ•ด

    ์™€ ์ผ์น˜ํ•˜๋Š” ์ •๊ทœ์‹ ์„ธํŠธ

  • JoinPoint

    : ๋ฉ”์†Œ๋“œ ์‹คํ–‰ ๋˜๋Š” ์˜ˆ์™ธ ์ฒ˜๋ฆฌ์™€ ๊ฐ™์€ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์ค‘ ์ง€์ 

Q. ย ๋””์ŠคํŒจ์ฒ˜ ์„œ๋ธ”๋ฆฟ(Dispatcher Servlet)์ด๋ž€?

๋””์ŠคํŒจ์ฒ˜ ์„œ๋ธ”๋ฆฟ์ด๋ž€ ํ†ฐ์บฃ๊ณผ ๊ฐ™์€ ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํ†ตํ•ด ๋“ค์–ด์˜ค๋Š” ๋ชจ๋“  ์š”์ฒญ์„ ์ œ์ผ ์•ž์—์„œ ๋ฐ›๋Š” ์ปจํŠธ๋กค๋Ÿฌ์ž…๋‹ˆ๋‹ค. ๋””์ŠคํŒจ์ฒ˜ ์„œ๋ธ”๋ฆฟ์€ ๊ณตํ†ต๋œ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•œ ํ›„์—, ์ ์ ˆํ•œ ์„ธ๋ถ€ ์ปจํŠธ๋กค๋Ÿฌ๋กœ ์ž‘์—…์„ ์œ„์ž„ํ•ด์ค๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฐ๊ฐ์˜ ์„ธ๋ถ€ ์ปจํŠธ๋กค๋Ÿฌ๋Š” ์ฒ˜๋ฆฌํ•  ๋ถ€๋ถ„์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ๋ฐ˜ํ™˜ํ•  view๋ฅผ Dispatcher Servlet์— ๋„˜๊ธฐ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

https://blog.kakaocdn.net/dn/MRXX3/btqK7014LOZ/wMKgG9RVkdZR7Ag5nD4wh0/img.png

Q.ย ํŠธ๋žœ์žญ์…˜์˜ ACID๋ž€?

  • ์›์ž์„ฑ(Atomicity): ํŠธ๋žœ์žญ์…˜์— ํฌํ•จ๋œ ์ž‘์—…์€ ์ „๋ถ€ ์ˆ˜ํ–‰๋˜๊ฑฐ๋‚˜ ์ „๋ถ€ ์ˆ˜ํ–‰๋˜์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค.
  • ์ผ๊ด€์„ฑ(Consistency): ํŠธ๋žœ์žญ์…˜์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์ „์ด๋‚˜ ํ›„๋‚˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ํ•ญ์ƒ ์ผ๊ด€๋œ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•ด์•ผ ํ•œ๋‹ค.
  • ๊ณ ๋ฆฝ์„ฑ(Isolation): ์ˆ˜ํ–‰ ์ค‘์ธ ํŠธ๋žœ์žญ์…˜์— ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด ๋ผ์–ด๋“ค์–ด ๋ณ€๊ฒฝ์ค‘์ธ ๋ฐ์ดํ„ฐ ๊ฐ’์„ ํ›ผ์†ํ•˜์ง€ ์•Š์•„์•ผํ•œ๋‹ค.
  • ์ง€์†์„ฑ(Durability): ์ˆ˜ํ–‰์„ ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒํ•œ ํŠธ๋žœ์žญ์…˜์€ ๋ณ€๊ฒฝํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์˜๊ตฌํžˆ ์ €์žฅํ•ด์•ผ ํ•œ๋‹ค.

Q. ย Byte Ordering์ด๋ž€

Byte Ordering์ด๋ž€ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜๋Š” ์ˆœ์„œ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. Byte Ordering์˜ ๋ฐฉ์‹์—๋Š” ๋น…์—”๋””์•ˆ(Big Endian)๊ณผ ๋ฆฌํ‹€์—”๋””์•ˆ(Little Endian)์ด ์žˆ์Šต๋‹ˆ๋‹ค.

Big Endian

  • MSB๊ฐ€ ๊ฐ€์žฅ ๋‚ฎ์€ ์ฃผ์†Œ์— ์œ„์น˜ํ•˜๋Š” ์ €์žฅ ๋ฐฉ์‹
  • ๋„คํŠธ์›Œํฌ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉ๋จ
  • ๊ฐ€์žฅ ๋‚ฎ์€ ์ฃผ์†Œ์— MSB๊ฐ€ ์ €์žฅ๋˜๋ฏ€๋กœ, offset=0์ธ Byte๋ฅผ ๋ณด๋ฉด ์–‘์ˆ˜/์Œ์ˆ˜๋ฅผ ๋ฐ”๋กœ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋‹ค.

Little Endian

  • MSB๊ฐ€ ๊ฐ€์žฅ ๋†’์€ ์ฃผ์†Œ์— ์œ„์น˜ํ•˜๋Š” ๋ฐฉ์‹
  • ๋งˆ์ดํฌ๋กœํ”„๋กœ์„ธ์„œ์—์„œ ์ฃผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.
  • ๊ฐ€์žฅ ๋‚ฎ์€ ์ฃผ์†Œ์— ๋ถ€ํ˜ธ๊ฐ’์ด ์•„๋‹Œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋จผ์ € ์˜ค๊ธฐ ๋•Œ๋ฌธ์—, ๋ฐ”๋กœ ์—ฐ์‚ฐ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

Q. Thread vs Process

  • ํ”„๋กœ์„ธ์Šค
    • ์ •์˜: ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์™€ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ์ธ์Šคํ„ด์Šค
    • ํŠน์ง•
      • ์šด์˜์ฒด์ œ๋กœ๋ถ€ํ„ฐ ๋…๋ฆฝ๋œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ํ• ๋‹น๋ฐ›๋Š”๋‹ค. (๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์˜ ์ž์›์— ์ ‘๊ทผ X)
      • ํ”„๋กœ์„ธ์Šค๋“ค์€ ๋…๋ฆฝ์ ์ด๊ธฐ ๋•Œ๋ฌธ์— ํ†ต์‹ ํ•˜๊ธฐ ์œ„ํ•ด IPC๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.
      • ํ”„๋กœ์„ธ์Šค๋Š” ์ตœ์†Œ 1๊ฐœ์˜ ์“ฐ๋ ˆ๋“œ(๋ฉ”์ธ ์“ฐ๋ ˆ๋“œ)๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
  • ์“ฐ๋ ˆ๋“œ
    • ์ •์˜: ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ํ• ๋‹น๋ฐ›์€ ์ž์›์„ ์ด์šฉํ•ด ๋™์ž‘ํ•˜๋Š” ์‹คํ–‰ ๋‹จ์œ„
    • ํŠน์ง•
      • ์“ฐ๋ ˆ๋“œ๋Š” ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ Stack๋งŒ ๋”ฐ๋กœ ํ• ๋‹น ๋ฐ›๊ณ , Code, Data, Heap ์˜์—ญ์€ ๊ณต์œ ํ•œ๋‹ค.(Stack์„ ๋ถ„๋ฆฌํ•œ ์ด์œ ๋Š” Stack์—๋Š” ํ•จ์ˆ˜์˜ ํ˜ธ์ถœ ์ •๋ณด๊ฐ€ ์ €์žฅ๋˜๋Š”๋ฐ, Stack์„ ๊ณต์œ ํ•˜๋ฉด LIFO ๊ตฌ์กฐ์— ์˜ํ•ด ์‹คํ–‰ ์ˆœ์„œ๊ฐ€ ๋ณต์žกํ•ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ์‹คํ–‰ ํ๋ฆ„์„ ์›ํ™œํ•˜๊ฒŒ ๋งŒ๋“ค๊ธฐ ์œ„ํ•จ์ด๋‹ค.)
      • ์“ฐ๋ ˆ๋“œ๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์ž์›์„ ๊ณต์œ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ์“ฐ๋ ˆ๋“œ์— ์˜ํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ฆ‰์‹œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
      • ํ”„๋กœ์„ธ์Šค ๋‚ด์— ์กด์žฌํ•˜๋ฉฐ ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ• ๋‹น๋ฐ›์€ ์ž์›์„ ์ด์šฉํ•˜์—ฌ ์‹คํ–‰๋œ๋‹ค.

Q. ๋ฉ€ํ‹ฐ ์“ฐ๋ ˆ๋“œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ž‘์„ฑ ์‹œ ์œ ์˜์ 

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

Q. ์„ธ๋งˆํฌ์–ด(Semaphore) vs ๋ฎคํ…์Šค(Mutex) ์ฐจ์ด

๋ฎคํ…์Šค๋Š”ย Locking ๋ฉ”์ปค๋‹ˆ์ฆ˜์œผ๋กœ ๋ฝ์„ ๊ฑธ์€ ์“ฐ๋ ˆ๋“œ๋งŒ์ด ์ž„๊ณ„ ์˜์—ญ์„ ๋‚˜๊ฐˆ๋•Œ ๋ฝ์„ ํ•ด์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒย ์„ธ๋งˆํฌ์–ด๋Š”ย Signaling ๋ฉ”์ปค๋‹ˆ์ฆ˜์œผ๋กœ ๋ฝ์„ ๊ฑธ์ง€ ์•Š์€ ์“ฐ๋ ˆ๋“œ๋„ signal์„ ์‚ฌ์šฉํ•ด ๋ฝ์„ ํ•ด์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„ธ๋งˆํฌ์–ด์˜ ์นด์šดํŠธ๋ฅผ 1๋กœ ์„ค์ •ํ•˜๋ฉด ๋ฎคํ…์Šค์ฒ˜๋Ÿผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Q. OOP๋ž€

OOP๋Š” ํ˜„์‹ค ์„ธ๊ณ„๋ฅผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์œผ๋กœ ์˜ฎ๊ฒจ์™€ ํ˜„์‹ค ์„ธ๊ณ„์˜ ์‚ฌ๋ฌผ๋“ค์„ ๊ฐ์ฒด๋กœ ๋ณด๊ณ , ๊ทธ ๊ฐ์ฒด๋กœ๋ถ€ํ„ฐ ๊ฐœ๋ฐœํ•˜๊ณ ์ž ํ•˜๋Š” ํŠน์ง•๊ณผ ๊ธฐ๋Šฅ์„ ๋ฝ‘์•„์™€ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•˜๋Š” ๊ธฐ๋ฒ•์ž…๋‹ˆ๋‹ค. OOP๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ์žฌ์‚ฌ์šฉ์„ฑ๊ณผ ๋ณ€ํ˜•๊ฐ€๋Šฅ์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Q. OOP์˜ 5๊ฐ€์ง€ ์„ค๊ณ„ ์›์น™

  • SRP(Single Responsibility Principle, ๋‹จ์ผ ์ฑ…์ž„ ์›์น™): ํด๋ž˜์Šค๋Š” ๋‹จ ํ•˜๋‚˜์˜ ๋ชฉ์ ์„ ๊ฐ€์ ธ์•ผ ํ•˜๋ฉฐ, ํด๋ž˜์Šค๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ์ด์œ ๋Š” ๋‹จ ํ•˜๋‚˜์˜ ์ด์œ ์—ฌ์•ผ ํ•œ๋‹ค.
  • OCP(Open-Closed Principle, ๊ฐœ๋ฐฉ ํ์‡  ์›์น™): ํด๋ž˜์Šค๋Š” ํ™•์žฅ์—๋Š” ์—ด๋ ค ์žˆ๊ณ , ๋ณ€๊ฒฝ์—๋Š” ๋‹ซํ˜€ ์žˆ์–ด์•ผ ํ•œ๋‹ค.
  • LSP(Liskov Substitution Principle, ๋ฆฌ์Šค์ฝ”ํ”„ ์น˜ํ™˜ ์›์น™): ์ƒ์œ„ ํƒ€์ž…์˜ ๊ฐ์ฒด๋ฅผ ํ•˜์œ„ ํƒ€์ž…์œผ๋กœ ๋ฐ”๊พธ์–ด๋„ ํ”„๋กœ๊ทธ๋žจ์€ ์ผ๊ด€๋˜๊ฒŒ ๋™์ž‘ํ•ด์•ผ ํ•œ๋‹ค.
  • ISP(Interface Segregation Principle, ์ธํ„ฐํŽ˜์ด์Šค ๋ถ„๋ฆฌ ์›์น™): ํด๋ผ์ด์–ธํŠธ๋Š” ์ด์šฉํ•˜์ง€ ์•Š๋Š” ๋ฉ”์†Œ๋“œ์— ์˜์กดํ•˜์ง€ ์•Š๋„๋ก ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋ถ„๋ฆฌํ•ด์•ผ ํ•œ๋‹ค.
  • DIP(Dependency Inversion Principle, ์˜์กด ์—ญ์ „ ๋ฒ•์น™): ํด๋ผ์ด์–ธํŠธ๋Š” ์ถ”์ƒํ™”(์ธํ„ฐํŽ˜์ด์Šค)์— ์˜์กดํ•ด์•ผ ํ•˜๋ฉฐ, ๊ตฌ์ฒดํ™”(๊ตฌํ˜„๋œ ํด๋ž˜์Šค)์— ์˜์กดํ•ด์„  ์•ˆ๋œ๋‹ค.

Q. Overloading vs Overriding

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

  • ๊ฐ™์€ ์ด๋ฆ„์˜ ๋ฉ”์†Œ๋“œ๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ ์ •์˜ํ•˜๋Š” ๊ฒƒ
  • ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ํƒ€์ž…์ด ๋‹ค๋ฅด๊ฑฐ๋‚˜ ๊ฐœ์ˆ˜๊ฐ€ ๋‹ฌ๋ผ์•ผ ํ•œ๋‹ค.
  • return type๊ณผ ์ ‘๊ทผ ์ œ์–ด์ž๋Š” ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์Œ.

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

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

Q. Call By Value์™€ Call By Reference ์ฐจ์ด

  • Call By Value
    • ์ธ์ž๋กœ ๋ฐ›์€ ๊ฐ’์„ ๋ณต์‚ฌํ•˜์—ฌ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹
    • Call By Value์— ์˜ํ•ด ๋„˜์–ด์˜จ ๊ฐ’์„ ์ฆ๊ฐ€์‹œ์ผœ๋„ ์›๋ž˜์˜ ๊ฐ’์ด ๋ณด์กด๋œ๋‹ค.
    • ๊ฐ’์„ ๋ณต์‚ฌํ•˜์—ฌ ๋„˜๊ธฐ๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ๋Š˜์–ด๋‚œ๋‹ค.
  • Call By Reference
    • ์ธ์ž๋กœ ๋ฐ›์€ ๊ฐ’์˜ ์ฃผ์†Œ๋ฅผ ์ฐธ์กฐํ•˜์—ฌ ์ง์ ‘ ๊ฐ’์— ์˜ํ–ฅ์„ ์ฃผ๋Š” ๋ฐฉ์‹
    • ๊ฐ’์„ ๋ณต์‚ฌํ•˜์ง€ ์•Š๊ณ  ์ง์ ‘ ์ฐธ์กฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค.
    • ์›๋ž˜์˜ ๊ฐ’์— ์˜ํ–ฅ์„ ์ฃผ๋Š” ๋ฆฌ์Šคํฌ๊ฐ€ ์กด์žฌํ•œ๋‹ค.

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

  • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ: ์‚ฌ์šฉ์ž๊ฐ€ ํ๋ฆ„์— ๋Œ€ํ•œ ์ œ์–ด๋ฅผ ํ•˜๋ฉฐ ํ•„์š”ํ•œ ์ƒํ™ฉ์— ๊ฐ€์ ธ๋‹ค๊ฐ€ ์“ธ ์ˆ˜ ์žˆ๋‹ค.
  • ํ”„๋ ˆ์ž„์›Œํฌ: ์ „์ฒด์ ์ธ ํ๋ฆ„์„ ์ž์ฒด์ ์œผ๋กœ ์ œ์–ดํ•œ๋‹ค.

ํ”„๋ ˆ์ž„์›Œํฌ์™€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์‹คํ–‰ ํ๋ฆ„์— ๋Œ€ํ•œ ์ œ์–ด ๊ถŒํ•œ์ด ์–ด๋”” ์žˆ๋Š”์ง€์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค.ย ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ๊ด€๋ฆฌํ•ด์•ผ ํ•˜๋Š” ๋ถ€๋ถ„์„ ํ”„๋ ˆ์ž„์›Œํฌ์— ๋„˜๊น€์œผ๋กœ์จ ์‹ ๊ฒฝ์จ์•ผ ํ•  ๊ฒƒ์„ ์ค„์ด๋Š” ์ œ์–ด์˜ ์—ญ์ „(IoC, Inversion Of Control)์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

Q. Session๊ณผย Cookie

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

  • ํ˜„์žฌ ์šฐ๋ฆฌ๊ฐ€ ์ธํ„ฐ๋„ท์—์„œ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š”ย HTTPํ”„๋กœํ† ์ฝœ์€ ์—ฐ๊ฒฐ ์ง€ํ–ฅ์ ์ธ ์„ฑ๊ฒฉ์„ ๋ฒ„๋ ธ๊ธฐ ๋•Œ๋ฌธ์— ์ƒˆ๋กœ์šด ํŽ˜์ด์ง€๋ฅผ ์š”์ฒญํ•  ๋•Œ๋งˆ๋‹ค ์ƒˆ๋กœ์šด ์ ‘์†์ด ์ด๋ฃจ์–ด์ง€๋ฉฐ ์ด์ „ ํŽ˜์ดย ์ง€์™€ ํ˜„์žฌ ํŽ˜์ด์ง€ ๊ฐ„์˜ ๊ด€๊ณ„๊ฐ€ ์ง€์†๋˜์ง€ ์•Š๋Š”๋‹ค.ย ์ด์— ๋”ฐ๋ผย HTTPํ”„๋กœํ† ์ฝœ์„ ์ด์šฉํ•˜๊ฒŒ ๋˜๋Š” ์›น์‚ฌ์ดํŠธ์—์„œ๋Š” ์›นํŽ˜์ด์ง€์— ํŠน์ • ๋ฐฉ๋ฌธ์ž๊ฐ€ ๋จธ๋ฌด๋ฅด๊ณ  ์žˆ๋Š” ๋™์•ˆ์— ๊ทธ ๋ฐฉ๋ฌธย ์ž์˜ ์ƒํƒœ๋ฅผ ์ง€์†์‹œํ‚ค๊ธฐ ์œ„ํ•ด ์ฟ ํ‚ค์™€ ์„ธ์…˜์„ ์ด์šฉํ•œ๋‹ค.

Session

  • ํŠน์ • ์›น์‚ฌ์ดํŠธ์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ ๋จธ๋ฌด๋ฅด๋Š” ๊ธฐ๊ฐ„ ๋˜๋Š” ํ•œ ๋ช…์˜ ์‚ฌ์šฉ์ž์˜ ํ•œ๋ฒˆ์˜ ๋ฐฉ๋ฌธ์„ ์˜๋ฏธํ•œ๋‹ค.
  • Session์— ๊ด€๋ จ๋œ ๋ฐ์ดํ„ฐ๋Š”ย Server์— ์ €์žฅ๋œ๋‹ค.
  • ์›น ๋ธŒ๋ผ์šฐ์ €์˜ ์บ์‹œ์— ์ €์žฅ๋˜์–ด ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋‹ซํžˆ๊ฑฐ๋‚˜ ์„œ๋ฒ„์—์„œ ์‚ญ์ œ์‹œ ์‚ฌ๋ผ์ง„๋‹ค.
  • Cookie์— ๋น„ํ•ด ๋ณด์•ˆ์„ฑ์ด ์ข‹๋‹ค.

Cookie

  • ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ์œ ์ง€ํ•  ์ˆ˜ ์—†๋‹ค๋Š”ย HTTP์˜ ํ•œ๊ณ„๋ฅผ ๊ทน๋ณตํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•
  • ์ธํ„ฐ๋„ท ์›น ์‚ฌ์ดํŠธ์˜ ๋ฐฉ๋ฌธ ๊ธฐ๋ก์„ ๋‚จ๊ฒจ ์‚ฌ์šฉ์ž์™€ ์›น ์‚ฌ์ดํŠธ ์‚ฌ์ด๋ฅผ ๋งค๊ฐœํ•ด ์ฃผ๋Š” ์ •๋ณด์ด๋‹ค.
  • Cookie๋Š” ์ธํ„ฐ๋„ท ์‚ฌ์šฉ์ž๊ฐ€ ํŠน์ • ์›น์„œ๋ฒ„์— ์ ‘์†ํ•  ๋•Œ,ย ์ƒ์„ฑ๋˜๋Š” ๊ฐœ์ธ ์•„์ด๋””์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ,ย ๋ฐฉ๋ฌธํ•œ ์‚ฌ์ดํŠธ์˜ ์ •๋ณด๋ฅผ ๋‹ด์€ ์ž„์‹œ ํŒŒ์ผ๋กœ์จ, Server๊ฐ€ ์•„๋‹Œย Client์— ํ…์ŠคํŠธย ํŒŒ์ผ๋กœ ์ €์žฅ๋˜์–ด ๋‹ค์Œ์— ํ•ด๋‹น ์›น์„œ๋ฒ„๋ฅผ ์ฐพ์„ ๊ฒฝ์šฐ ์›น์„œ๋ฒ„์—์„œ๋Š” ๊ทธ๊ฐ€ ๋ˆ„๊ตฌ์ธ์ง€ ์–ด๋–ค ์ •๋ณด๋ฅผ ์ฃผ๋กœ ์ฐพ์•˜๋Š”์ง€ ๋“ฑ์„ ํŒŒ์•…ํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค.
  • Cookie๋Š”ย Client PC์— ์ €์žฅ๋˜๋Š” ์ •๋ณด๊ธฐ ๋•Œ๋ฌธ์—,ย ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์— ์˜ํ•ด์„œ ์ž„์˜๋กœ ๋ณ€๊ฒฝ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.(์ •๋ณด ์œ ์ถœ ๊ฐ€๋Šฅ, Session๋ณด๋‹ค ๋ณด์•ˆ์„ฑ์ด ๋‚ฎ์€ ์ด์œ )

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

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

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

  • public -ย ์ ‘๊ทผ ์ œํ•œ์ด ์—†๋‹ค.(๊ฐ™์€ ํ”„๋กœ์ ํŠธ ๋‚ด์— ์–ด๋””์„œ๋“  ์‚ฌ์šฉ๊ฐ€๋Šฅ)
  • protected -ย ๊ฐ™์€ ํŒจํ‚ค์ง€ ๋‚ด,ย ๋‹ค๋ฅธ ํŒจํ‚ค์ง€์—์„œ ์ƒ์†๋ฐ›์•„ ์ž์†ํด๋ž˜์Šค์—์„œ ์ ‘๊ทผ ๊ฐ€๋Šฅ
  • default -ย ๊ฐ™์€ ํŒจํ‚ค์ง€ ๋‚ด์—์„œ๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅ
  • private -ย ๊ฐ™์€ ํด๋ž˜์Šค ๋‚ด์—์„œ๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅ

์ž๋ฐ” ์ปฌ๋ ‰์…˜์˜ ๋Œ€ํ‘œ ์ธํ„ฐํŽ˜์ด์Šค

  • List : ์ˆœ์„œ๊ฐ€ ์žˆ๋Š” ๋ฐ์ดํ„ฐ์˜ ์ง‘ํ•ฉ์œผ๋กœ ๋ฐ์ดํ„ฐ์˜ ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜๋ฉฐ ์ธ๋ฑ์Šค๋กœ ์กฐํšŒํ•œ๋‹ค.
  • Set : ์ˆœ์„œ๋ฅผ ์œ ์ง€ํ•˜์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ์˜ ์ง‘ํ•ฉ์œผ๋กœ ๋ฐ์ดํ„ฐ์˜ ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • Map : ํ‚ค์™€ ๋ฒจ๋ฅ˜๊ฐ’์˜ ์Œ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ์œผ๋กœ ์ˆœ์„œ๋Š” ์œ ์ง€๋˜์ง€ย ์•Š์œผ๋ฉฐ ํ‚ค๋Š” ์ค‘๋ณต์€ ํ—ˆ์šฉํ•˜์ง€ ์•Š์ง€๋งŒ ๋ฒจ๋ฅ˜๊ฐ’์€ ์ค‘๋ณต์„ ํ—ˆ์šฉํ•œ๋‹ค.

@Transactional

Propagation

์šฐ๋ฆฌ๋Š” Spring์ดย ํŠธ๋žœ์žญ์…˜์„ ์–ด๋–ป๊ฒŒ ์ง„ํ–‰์‹œํ‚ฌ์ง€ ๊ฒฐ์ •ํ•˜๋„๋ก ์ „ํŒŒ ์†์„ฑ์„ ์ „๋‹ฌํ•ด์•ผ ํ•˜๋Š”๋ฐ, ์ด๋ฅผ ํ†ตํ•ด ์ƒˆ๋กœ์šด ํŠธ๋žœ์žญ์…˜์„ ์‹œ์ž‘ํ• ์ง€ ๋˜๋Š” ๊ธฐ์กด์˜ ํŠธ๋žœ์žญ์…˜์— ์ฐธ์—ฌํ• ์ง€ ๋“ฑ์„ ๊ฒฐ์ •ํ•˜๊ฒŒ ๋œ๋‹ค.

Spring์ด ์ง€์›ํ•˜๋Š” ์ „ํŒŒ ์†์„ฑ์€ ๋‹ค์Œ์˜ 7๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.

  • REQUIRED
  • SUPPORTS
  • MANDATORY
  • REQUIRES_NEW
  • NOT_SUPPORTED
  • NEVER
  • NESTED

Isolation

ํŠธ๋žœ์žญ์…˜ ๊ฒฉ๋ฆฌ์ˆ˜์ค€์€ย ๋™์‹œ์— ์—ฌ๋Ÿฌ ํŠธ๋žœ์žญ์…˜์ด ์ง„ํ–‰๋  ๋•Œ ํŠธ๋žœ์žญ์…˜์˜ ์ž‘์—… ๊ฒฐ๊ณผ๋ฅผ ์—ฌํƒ€ ํŠธ๋žœ์žญ์…˜์—๊ฒŒ ์–ด๋–ป๊ฒŒ ๋…ธ์ถœํ•  ๊ฒƒ์ธ์ง€๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค. ์Šคํ”„๋ง์€ ๋‹ค์Œ์˜ 5๊ฐ€์ง€ ๊ฒฉ๋ฆฌ์ˆ˜์ค€ ์†์„ฑ์„ ์ง€์›ํ•œ๋‹ค.

  • DEFAULT
  • READ_UNCOMMITTED
  • READ_COMMITTED
  • REPEATABLE_READ
  • SERIALIZABLE

ReadOnly

Timeout

Rollback/Commit ์˜ˆ์™ธ

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages