๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Study/Java91

[TIL] Spring :PSA ๐Ÿ™๐Ÿป ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ์˜ ํŠน์ง• ๐Ÿ“ ์ผ๊ด€๋œ ์„œ๋น„์Šค ์ถ”์ƒํ™” : PSA (Portable Service Abstraction) : ์„œ๋น„์Šค ๊ธฐ๋Šฅ์— ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ์‹ ์ž์ฒด๋ฅผ ์ผ๊ด€๋˜๊ฒŒ ์œ ์ง€ํ•˜๋ฉด์„œ ๊ธฐ์ˆ  ์ž์ฒด๋ฅผ ์œ ์—ฐํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๊ฒƒ - ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ถ”์ƒํ™” ๋œ ์ƒ์œ„ ํด๋ž˜์Šค๋ฅผ ์ผ๊ด€๋˜๊ฒŒ ๋ฐ”๋ผ๋ณด๋ฉฐ ํ•˜์œ„ ํด๋ž˜์Šค์˜ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ - ์„œ๋น„์Šค ์ถ”์ƒํ™” : ์ถ”์ƒํ™”๊ฐœ๋…์„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์„œ๋น„์Šค์— ์ ์šฉ โ–ช๏ธ ํด๋ผ์ด์–ธํŠธ - ์„œ๋ฒ„ ์ธก ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฌด์–ธ๊ฐ€ (ex.์›น๋ธŒ๋ผ์šฐ์ €) - ์–ด๋–ค ํด๋ž˜์Šค์˜ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฌด์–ธ๊ฐ€ - ์–ด๋–ค ํด๋ž˜์Šค์˜ ๋ณธ์งˆ์ ์ธ ํŠน์„ฑ ๋งŒ์„ ์ถ”์ถœํ•ด์„œ ์ผ๋ฐ˜ํ™” ํ•˜๋Š” ๊ฒƒ - Java์—์„œ ์ฝ”๋“œ๋กœ ์ถ”์ƒํ™”๋ฅผ ํ•˜๋Š” ๋Œ€ํ‘œ์ ์ธ ๋ฐฉ๋ฒ• : ์ถ”์ƒ ํด๋ž˜์Šค์™€ ์ธํ„ฐํŽ˜์ด์Šค ๐Ÿ“ ์ผ๊ด€๋œ ์„œ๋น„์Šค ์ถ”์ƒํ™”๊ฐ€ ํ•„์š”ํ•œ ์ด์œ  - ์–ด๋–ค ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•˜.. 2022. 6. 14.
[TIL] Spring :AOP ๐Ÿ™๐Ÿป ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ ํŠน์ง• ๐Ÿ“ ๊ด€์‹ฌ ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ : AOP ( Aspect Oriented Programming ) - ์ค‘๋ณต๋œ ์ฝ”๋“œ๋ฅผ ๊ณตํ†ตํ™”ํ•ด์„œ ์žฌ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ๋งŒ๋“ค ์ˆ˜ ์žˆ์Œ - AOP์˜ Aspect๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ํ•„์š”ํ•œ ๊ธฐ๋Šฅ ์ค‘ ๊ณตํ†ต ์ ์šฉ ๊ธฐ๋Šฅ์— ๊ด€์‹ฌ์ด ์žˆ์Œ 2022. 6. 14.
[TIL] Spring :IoC / DI ๐Ÿ™๐Ÿป ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ ํŠน์ง• ๐Ÿ“ IoC / DI : ์ œ์–ด์˜ ์—ญ์ „ / ์˜์กด์„ฑ ์ฃผ์ž… โ–ช๏ธ IoC : ์ œ์–ด์˜ ์—ญ์ „ : ํ๋ฆ„์˜ ์ฃผ๋„๊ถŒ์ด ๋ฐ”๋€ ๊ฒƒ โ–ช๏ธ DI : ์˜์กด์„ฑ ์ฃผ์ž… : ๊ฐ์ฒด๋ฅผ ์ง์ ‘ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ์ƒ์„ฑ์ž ๋“ฑ์„ ํ†ตํ•ด ์ƒ์„ฑ : ํด๋ž˜์Šค๋“ค ๊ฐ„ ๊ฐ•ํ•œ ๊ฒฐํ•ฉ์„ ๋А์Šจํ•œ ๊ฒฐํ•ฉ์œผ๋กœ ๋ฐ”๊พธ์–ด ์คŒ ๐Ÿ’ก ์˜์กด์„ฑ ์ฃผ์ž…์ด ํ•„์š”ํ•œ ์ด์œ  : ํ˜„์žฌ ํด๋ž˜์Šค ๋‚ด๋ถ€์— ์™ธ๋ถ€ ํด๋ž˜์Šค ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ๋•Œ new ํ‚ค์›Œ๋“œ์˜ ์‚ฌ์šฉ ์—ฌ๋ถ€ ๊ฒฐ์ • → ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ ๋‚ด๋ถ€์— ์ง์ ‘์ ์œผ๋กœ new๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„ ๊ด€์ ์—์„œ ๋ฌธ์ œ ๋ฐœ์ƒ ๊ฐ€๋Šฅ โ–ธ Stub์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๐Ÿ’ก Stub ? ๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋˜๋ฉด ๋ฏธ๋ฆฌ ์ค€๋น„๋œ ๋ฐ์ดํ„ฐ ์‘๋‹ต - ๊ณ ์ •๋œ ๋ฐ์ดํ„ฐ๋กœ ํ˜ธ์ถœ ์‹œ ๋™์ผํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฆฌํ„ด = ๋ฉฑ๋“ฑ์„ฑ์„ ๊ฐ€์ง„๋‹ค๊ณ  ํ‘œํ˜„ ! ๐Ÿ’ก ๋ฉฑ๋“ฑ์„ฑ ? ๋ช‡๋ฒˆ์„ ํ˜ธ์ถœํ•ด๋„ ๋™์ผํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฆฌํ„ด.. 2022. 6. 14.
[TIL] Spring : POJO ๐Ÿ‘๐Ÿป POJO : Plain Old - Java Object - PO : ์ˆœ์ˆ˜ํ•œ - JO : ์ž๋ฐ”์˜ ๊ฐ์ฒด - ์ˆœ์ˆ˜ํ•œ Java ๊ฐ์ฒด - IoC/DI, AOP, PSA๋ฅผ ํ†ตํ•ด์„œ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ์Œ ๐Ÿ“ POJO ํ”„๋กœ๊ทธ๋ž˜๋ฐ - ์ˆœ์ˆ˜ํ•œ Java ๊ฐ์ฒด๊ฐ€ ๋‹ค๋ฅธ ๊ธฐ์ˆ ์ด๋‚˜ ํ™˜๊ฒฝ์— ์ข…์†๋˜์ง€ ์•Š๋„๋ก ํ•˜๊ธฐ ์œ„ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋ฒ• โ–ช๏ธ POJO ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์œ„ํ•ด ์ง€์ผœ์•ผ ํ•˜๋Š” ๊ทœ์น™ โ‘  Java ๋‚˜ Java์˜ ์ŠคํŽ™์— ์ •์˜๋œ ๊ฒƒ ์ด์™ธ์—๋Š” ๋‹ค๋ฅธ ๊ธฐ์ˆ ์ด๋‚˜ ๊ทœ์•ฝ์— ์–ฝ๋งค์ด์ง€ ์•Š์Œ - ํŠน์ • ๊ธฐ์ˆ ์„ ์ƒ์†ํ•ด์„œ ์ž‘์„ฑํ•˜๋ฉด ์š”๊ตฌ์‚ฌํ•ญ์ด ๋ณ€๊ฒฝ ๋˜์—ˆ์„ ๋•Œ ์ „๋ถ€ ์ผ์ผ์ด ์ œ๊ฑฐ or ์ˆ˜์ •ํ•ด์•ผ ํ•จ - Java๋Š” ๋‹ค์ค‘ ์ƒ์†์„ ์ง€์›ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ํ•œ ๋ฒˆ ์ƒ์†์„ ํ•˜๋ฉด ๊ฐ์ฒด ์ง€ํ–ฅ ์„ค๊ณ„ ๊ธฐ๋ฒ• ์ ์šฉ์ด ์–ด๋ ค์›Œ์ง โ‘ก ํŠน์ • ํ™˜๊ฒฝ์— ์ข…์†์ ์ด์ง€ ์•Š์•„์•ผ ํ•จ โ–ช๏ธ POJO ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ํ•„.. 2022. 6. 14.
[TIL] ํ”„๋ ˆ์ž„์›Œํฌ : Spring ๐Ÿ‘Š๐Ÿป ํ”„๋ ˆ์ž„์›Œํฌ : Framework - ๋ผˆ๋Œ€, ํ‹€, ๊ตฌ์กฐ - ์–ด๋–ค ๋Œ€์ƒ์˜ ํฐ ํ‹€์ด๋‚˜ ์™ธํ˜•์ ์ธ ๊ตฌ์กฐ๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๊ธฐ ์œ„ํ•œ ํ‹€์ด๋‚˜ ๊ตฌ์กฐ๋ฅผ ์ œ๊ณต - ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด๋‚˜ ์†Œํ”„ํŠธ์›จ์–ด ๊ตฌํ˜„์„ ์ˆ˜์›”ํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ์ œ๊ณต๋˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด ํ™˜๊ฒฝ - ํ”„๋ ˆ์ž„์›Œํฌ๋งŒ์œผ๋กœ ์‹คํ–‰๋˜์ง€ ์•Š๊ณ  ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ํ”„๋ ˆ์ž„์›Œํฌ ๋ผˆ๋Œ€ ์œ„์— ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์—ฌ ๊ฐœ๋ฐœ - ํ”„๋กœ๊ทธ๋žจ ๊ฐœ๋ฐœ์— ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ธํ„ฐํŽ˜์ด์Šค ํŒจํ‚ค์ง€ ex) Collections ํ”„๋ ˆ์ž„์›Œํฌ์˜ Map, Set, List ๋“ฑ ๐Ÿ’ก ์ธํ„ฐํŽ˜์ด์Šค : Interface - ๊ฐœ๋ฐœ์˜ ๊ทผ๊ฐ„์„ ์ด๋ฃจ๋Š” ๊ตฌ์กฐ์™€ ํ•„์š”ํ•œ ์ฝ”๋“œ, ์•Œ๊ณ ๋ฆฌ์ฆ˜, ์•”ํ˜ธํ™” ์ฒด๊ณ„, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๋™ ๋ฐฉ์‹์˜ ์ง‘ํ•ฉ์ฒด - ์‚ฌ๋ฌผ๊ฐ„, ์‚ฌ๋žŒ๊ฐ„, ์‚ฌ๋žŒ๊ณผ ์‚ฌ๋ฌผ๊ฐ„ ์ƒํ˜ธ์ž‘์šฉ์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์—ฐ๊ฒฐํ•ด์ฃผ๋Š” ์žฅ์น˜, ๋ฐฉ๋ฒ•, ํ˜•์‹, ๊ณต๊ฐ„ ๋“ฑ ๐Ÿ™Œ๐Ÿป ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ : Libr.. 2022. 6. 13.
[TIL] ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ •๊ทœํ™” ๐Ÿ‘๐Ÿป ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ •๊ทœํ™” 2022. 6. 10.
[TIL] ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๐Ÿซถ๐Ÿป ์•Œ๊ณ ๋ฆฌ์ฆ˜ Algorithm - ์–ด๋– ํ•œ ์ž…๋ ฅ์ด ์žˆ๋‹ค๋ฉด ์ด ์ž…๋ ฅ์— ๋”ฐ๋ผ ๋ช…๋ น์„ ๋ช…ํ™•ํ•˜๊ฒŒ ์‹คํ–‰ํ•˜๊ณ  ํšจ๊ณผ์ ์œผ๋กœ ์ž…๋ ฅ์— ๋”ฐ๋ฅธ ๊ฒฐ๊ณผ๋ฌผ์„ ๋„์ถœ - ์›ํ•˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ๋„์ถœํ•˜๊ธฐ ์œ„ํ•ด ์ฒ˜๋ฆฌํ•˜๋Š” ์˜์‚ฌ๊ฒฐ์ • ๊ณผ์ • ๐Ÿ‘๐Ÿป ๊ตฌํ˜„ implementation - ๋ฌธ์ œ ํ•ด๊ฒฐ๊ณผ์ •์„ ์ปดํ“จํŒ… ์‚ฌ๊ณ ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์ฝ”๋“œ๋กœ ๊ตฌํ˜„ - ๊ตฌํ˜„์„ ์ž˜ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” โ‘  ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ๋ฌธ๋ฒ•์„ ์ •ํ™•ํžˆ ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•จ โ‘ก ๋ฌธ์ œ์˜ ์กฐ๊ฑด์— ๋ถ€ํ•ฉํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์‹ค์ˆ˜ ์—†์ด ๋น ๋ฅด๊ฒŒ ์ž‘์„ฑํ•ด์•ผ ํ•จ - ๊ตฌํ˜„ ๋Šฅ๋ ฅ ํŒ๋ณ„ ๋ฐฉ๋ฒ• : ์™„์ „ํƒ์ƒ‰ (Brute force) & ์‹œ๋ฎฌ๋ ˆ์ด์…˜ (Simulatiion) ๐Ÿ™๐Ÿป ์‹œ๋ฎฌ๋ ˆ์ด์…˜ Simulation - ๋ฌธ์ œ์—์„œ ์š”๊ตฌํ•˜๋Š” ๋ณต์žกํ•œ ์š”๊ตฌ์‚ฌํ•ญ์„ ๋น ๋œจ๋ฆฌ์ง€ ์•Š๊ณ  ์ฝ”๋“œ๋กœ ์˜ฎ๊ธฐ๋Š” ๊ฒƒ - ๋ชจ๋“  ๊ณผ์ •๊ณผ ์กฐ๊ฑด์ด ์ œ์‹œ๋˜์–ด ๊ทธ ๊ณผ์ •์— ๊ฑฐ์นœ ๊ฒฐ๊ณผ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ํ™•์ธ ๐Ÿ™๐Ÿป .. 2022. 6. 10.
[TIL] ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ์•„ํ‚คํ…์ฒ˜ ๐Ÿ‘Š๐Ÿป ํด๋ผ์ด์–ธํŠธ - ์„œ๋ฒ„ ์•„ํ‚คํ…์ฒ˜ : 2 Tier - Architecture - ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ง์ ‘ ์„œ๋ฒ„์˜ DB์— ์ ‘์†ํ•˜์—ฌ ์ž์›์„ ํ™œ์šฉ - ํŽธ๋ฆฌํ•˜์ง€๋งŒ ๋ณด์•ˆ์— ์ทจ์•ฝํ•˜๋ฉฐ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์–ด๋ ค์›€ ๐Ÿ‘Š๐Ÿป 3 Tier - Architecture ๐Ÿ‘Š๐Ÿป ํด๋ผ์ด์–ธํŠธ - ์„œ๋ฒ„ ์ข…๋ฅ˜ ๐Ÿ–๐Ÿป HTTP๋ฅผ ์ด์šฉํ•œ ํด๋ผ์ด์–ธํŠธ - ์„œ๋ฒ„ ํ†ต์‹ ๊ณผ API ๐Ÿ’ก ํ”„๋กœํ† ์ฝœ Protocol - ํ†ต์‹  ๊ทœ์•ฝ, ์•ฝ์† ๐Ÿ“ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋กœํ† ์ฝœ : HTTP - ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ ์„œ๋กœ HTTP ํ”„๋กœํ† ์ฝœ ๋ฉ”์‹œ์ง€๋ฅผ ์ด์šฉํ•˜์—ฌ ๋Œ€ํ™”๋ฅผ ๋‚˜๋ˆ” ex) ๋–ก๋ณถ์ด๋ฅผ ์‚ด ๋•Œ, ์ฃผ๋ฌธ ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์—ฌ๋Ÿฌ ๊ฐ€์ง€ (1) ์ง์ ‘ ๋งค์žฅ ์ฃผ๋ฌธ (2) ๋ชจ๋ฐ”์ผ ์•ฑ ์ฃผ๋ฌธ (3) ํ‚ค์˜ค์Šคํฌ ์ฃผ๋ฌธ → ์ด๋Ÿฌํ•œ ๋ฐฉ๋ฒ• ์ „๋ถ€ ํ”„๋กœํ† ์ฝœ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Œ ! ๊ฐ™์€ ์ผ์„ ํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ• ์กด์žฌ ๐Ÿ’ก OSI 7 ๊ณ„.. 2022. 6. 10.
[TIL] About SQL ๐Ÿค™๐Ÿป SQL ๋‚ด์žฅ ํ•จ์ˆ˜ - ์ง‘ํ•ฉ์—ฐ์‚ฐ : ๋ ˆ์ฝ”๋“œ๋ฅผ ์กฐํšŒํ•œ ๋’ค ํŠน์ • ์ž‘์—…์„ ํ•˜๋Š” ์—ฐ์‚ฐ โ‘  GROUP BY : ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•  ๋•Œ ๊ทธ๋ฃน์œผ๋กœ ๋ฌถ์–ด์„œ ์กฐํšŒ SELECT * FROM Student GROUP BY Gender; → ํ•™์ƒ ํ…Œ์ด๋ธ”์˜ ์„ฑ๋ณ„์— ๋”ฐ๋ผ ๊ทธ๋ฃนํ™”ํ•˜์—ฌ ์กฐํšŒ โ‘ก HAVING : GROUP BY๋กœ ์กฐํšŒ๋œ ๊ฒฐ๊ณผ๋ฅผ ํ•„ํ„ฐ๋ง ( ๊ทธ๋ฃนํ™” ์‹œํ‚จ ๊ทธ๋ฃน์˜ ์กฐ๊ฑด ์„ค์ • ) - HAVING์€ ๊ทธ๋ฃนํ™”ํ•œ ๊ฒฐ๊ณผ์— ๋Œ€ํ•œ ํ•„ํ„ฐ๋ง - WHERE์€ ์ €์žฅ๋œ ๋ ˆ์ฝ”๋“œ ํ•„ํ„ฐ๋ง ( ๊ทธ๋ฃนํ™” ์ „ ํ•„ํ„ฐ๋ง ) SELECT id, name, gender, AVG(age) FROM student GROUP BY gender HAVING AVG(age) >= 20 ; → ํ•™์ƒ ํ…Œ์ด๋ธ”์˜ ์„ฑ๋ณ„์— ๋”ฐ๋ผ ๊ทธ๋ฃนํ™”๋ฅผ ํ•˜๊ณ  ๋‚˜์ด์˜ ํ‰๊ท ์ด 20 ์ด์ƒ์ธ ๋ฐ์ดํ„ฐ ์กฐํšŒ โ‘ข .. 2022. 6. 9.