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

๋…์„œ5

์‹ฌํ”Œ ์†Œํ”„ํŠธ์›จ์–ด ๐Ÿ“’ ์‹ฌํ”Œ ์†Œํ”„ํŠธ์›จ์–ด (Understanding Software) 36์žฅ. ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ๊ฐœ๋–ก ๊ฐ™์€ ์ด์œ  (ํ”„๋กœ๊ทธ๋ž˜๋จธ๋“ค์ด ๋‚˜์œ ์ฝ”๋“œ๋ฅผ ํ•œ ๋ฒˆ ๋งŒ๋“œ๋Š”๋ฐ ๊ทธ์น˜์ง€ ์•Š๊ณ  ๊ณ„์† ๋งŒ๋“œ๋Š” ์ด์œ ๊ฐ€ ๋ฌด์—‡์ผ๊นŒ?) - ํ”„๋กœ๊ทธ๋ž˜๋จธ ๋Œ€๋‹ค์ˆ˜๊ฐ€ ์ž์‹ ์ด ์‹ค์ œ๋กœ ๋ฌด์Šจ ์ผ์„ ํ•˜๋Š”์ง€ ์ „ํ˜€ ๋ชจ๋ฅธ๋‹ค. ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ์‹ค์ˆ˜๋ฅผ ๊ทธ๋Œ€๋กœ ๋”ฐ๋ผ ํ•˜๋ฉฐ, ๊ทธ๋ƒฅ ๋ณต๋ถ™ํ•œ ์ฝ”๋“œ์™€ ๋‹ค๋ฅด์ง€ ์•Š์€ ์˜๋ฏธ์—†๋Š” ์ฃผ๋ฌธ์„ ์ž…๋ ฅํ•˜๋ฉฐ ์ž์‹ ์ด ๋ฐ”๋ผ๋Š” ๋Œ€๋กœ ์›€์ง์—ฌ์ฃผ๊ธธ ๋ฐ”๋ž€๋‹ค. ์ด ๋ชจ๋“  ํ–‰๋™์„ ์ปดํ“จํ„ฐ์˜ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด๋‚˜ ์†Œํ”„ํŠธ์›จ์–ด ์„ค๊ณ„ ์›์น™, ๋ณธ์ธ์ด ์ž…๋ ฅ ์ค‘์ธ ์šฉ์–ด๋‚˜ ๋ถ€ํ˜ธ์˜ ์˜๋ฏธ๋ฅผ ์ œ๋Œ€๋กœ ์ดํ•ดํ•˜์ง€ ๋ชปํ•œ ์ฑ„ ํ•œ๋‹ค. - ๊ฐœ๋ฐœ์„ ์ •๋ง ์ž˜ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์•Œ์•„์•ผ ํ•  ๊ฒƒ์ด ๋„ˆ๋ฌด ๋งŽ๋‹ค. ๊ทธ๋Ÿผ ๋ฌด์—‡์„ ๋ฐฐ์›Œ์•ผ ํ• ๊นŒ? ๊ณต๋ถ€ํ•  ๋ถ„์•ผ๋ฅผ ์•Œ์•„๋‚ด๊ณ  ์‹ถ์„ ๋–„ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ช‡ ๊ฐ€์ง€ ์งˆ๋ฌธ์ด ์žˆ๋‹ค. - ์ž์‹ ์ด ์“ด ๋ชจ๋“  ์ฝ”.. 2024. 1. 25.
2024๋…„๋„ ๋…์„œ ๋ฆฌ์ŠคํŠธ ๐Ÿ“– ์ฝ์€ ๋„์„œ ๋ชฉ๋ก 1์›” 1. ์‹ฌํ”Œ ์†Œํ”„ํŠธ์›จ์–ด (๋งฅ์Šค ์นด๋„ท ์•Œ๋ ‰์‚ฐ๋”) โญโญโญโญ 2. ์†Œํ”„ํŠธ์›จ์–ด ์žฅ์ธ (์‚ฐ๋“œ๋กœ ๋งŒ์ฟ ์†Œ) โญโญโญ 2024. 1. 24.
์Šคํ”„๋ง ์ธ ์•ก์…˜ (3ํŒ) 1์žฅ ์Šคํ”„๋ง ์†์œผ๋กœ ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ : ๊ฐ์ฒด๊ฐ€ ํƒœ์–ด๋‚˜๊ณ , ์ž๋ผ๊ณ , ์†Œ๋ฉธํ•œ๋‹ค. ๋นˆํŒฉํ† ๋ฆฌ(org.springframework.beans.factory.BeanFactory ์ธํ„ฐํŽ˜์ด์Šค์— ์ •์˜๋จ) DI์— ๋Œ€ํ•œ ๊ธฐ๋ณธ์ ์ธ ์ง€์› ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํ…์ŠคํŠธ(org.springframework.context.ApplicationContext ์ธํ„ฐํŽ˜์ด์Šค์— ์ •์˜๋จ) ๋นˆํŒฉํ† ๋ฆฌ๋ฅผ ํ™•์žฅํ•ด ํ”„๋กœํผํ‹ฐ ํŒŒ์ผ์— ํ…์ŠคํŠธ ๋ฉ”์‹œ์ง€๋ฅผ ์ฝ๊ณ  ํ•ด๋‹น ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ์— ๋Œ€ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ด๋ฒคํŠธ ๋ฐœํ–‰ ๊ฐ™์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋ ˆ์ž„์›Œํฌ ์„œ๋น„์Šค ์ œ๊ณต ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ ์ฝ”์–ด ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ ๋นˆ์˜ ์ƒ์„ฑ, ์„ค์ •, ๊ทธ๋ฆฌ๊ณ  ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•์„ ๊ด€๋ฆฌํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ. ๋นˆ ํŒฉํ† ๋ฆฌ์™€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํ…์ŠคํŠธ๊ฐ€ ์—ฌ๊ธฐ์— ํฌํ•จ๋œ๋‹ค. ๋ชจ๋“  ์Šคํ”„๋ง์˜ ๋ชจ๋“ˆ์€ ์ฝ”์–ด ์ปจํ…Œ์ด๋„ˆ ์œ„์— ๊ตฌ์ถ•๋œ๋‹ค. AOP ๋ชจ๋“ˆ(as.. 2023. 3. 18.
์Šคํ”„๋ง ์ž…๋ฌธ์„ ์œ„ํ•œ ์ž๋ฐ” ๊ฐ์ฒด ์ง€ํ–ฅ์˜ ์›๋ฆฌ์™€ ์ดํ•ด ์ฑ•ํ„ฐ 1 ์‚ฌ๋žŒ์„ ์‚ฌ๋ž‘ํ•œ ๊ธฐ์ˆ  ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ์˜ ๊ฐœ๋…์€ OOP ํ”„๋ ˆ์ž„์›Œํฌ์ด๋‹ค ์Šคํ”„๋ง ์‚ผ๊ฐํ˜• IoC/DI, AOP, PSA ์ž๋ฐ” ์•Œ์•„์•ผ ํ•  ๊ฒƒ - OOP ๊ฐœ๋… - ์ž๋ฐ” ์–ธ์–ด์˜ ๋ฌธ๋ฒ• - ์ž๋ฐ”๊ฐ€ OOP ๊ฐœ๋…์„ ๊ตฌํ˜„ํ•œ ๋ฐฉ์‹ ์ฑ•ํ„ฐ 2 ์ž๋ฐ”์™€ ์ ˆ์ฐจ์ /๊ตฌ์กฐ์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ main() ๋ฉ”์„œ๋“œ(ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋Š” ์‹œ์ž‘์ )๊ฐ€ ์‹คํ–‰๋  ๋•Œ T๋ฉ”๋ชจ๋ฆฌ์—๋Š” ์–ด๋–ค ์ผ์ด ์ผ์–ด๋‚˜๋Š”์ง€? JRE๊ฐ€ ํ”„๋กœ๊ทธ๋žจ ์•ˆ์— main() ๋ฉ”์„œ๋“œ ํ™•์ธ ์žˆ์„ ๊ฒฝ์šฐ, JVM ๋ถ€ํŒ… JVM์€ ๋ชฉ์ ํŒŒ์ผ์„ ๋ฐ›์•„ ์‹คํ–‰ JVM์€ ์ „์ฒ˜๋ฆฌ ๊ณผ์ • ์ˆ˜ํ–‰ java.lang ํŒจํ‚ค์ง€๋ฅผ T ๋ฉ”๋ชจ๋ฆฌ์˜ ์Šคํƒœํ‹ฑ ์˜์—ญ์— ๋ฐฐ์น˜ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ž‘์„ฑํ•œ ๋ชจ๋“  ํด๋ž˜์Šค์™€ ์ž„ํฌํŠธ ํŒจํ‚ค์ง€๋ฅผ ์Šคํƒœํ‹ฑ ์˜์—ญ์— ๋ฐฐ์น˜ ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ์™€ ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค๋ž€? ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ(Multi Thread) - ๋ฉ€ํ‹ฐ ์“ฐ๋ ˆ๋“œ์˜ T๋ฉ”๋ชจ๋ฆฌ ๋ชจ๋ธ์€.. 2022. 12. 6.
ํ—ค๋“œ ํผ์ŠคํŠธ ๋””์ž์ธ ํŒจํ„ด ๋””์ž์ธ ํŒจํ„ด์„ ์ƒ์„ฑ ํŒจํ„ด, ํ–‰๋™ ํŒจํ„ด, ๊ตฌ์กฐ ํŒจํ„ด์œผ๋กœ ๊ตฌ๋ถ„ํ•ด์„œ ์ƒ๊ฐํ•ด ๋ณด์•„์•ผ ํ•œ๋‹ค. 2022.11.05(ํ† ) ์ฑ•ํ„ฐ 1 - Strategy Pattern (์ „๋žต ํŒจํ„ด) ์ž๋ฐ” ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๊ตฌํ˜„๋ถ€๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ฝ”๋“œ๋ฅผ ์žฌํ™œ์šฉํ•  ์ˆ˜ ์—†๋‹ค. (Java interfaces have no implementation code, so no code reuse) -> ์ฆ‰, ํ–‰๋™์„ ์ˆ˜์ •ํ•˜๋ ค๋ฉด ํ–‰๋™์ด ์ •์˜๋œ ์ž์‹ํด๋ž˜์Šค ๋˜ํ•œ ๋‹ค ์ˆ˜์ •ํ•ด์•ผ ํ•œ๋‹ค. ๋””์ž์ธ ์›์น™์˜ ๊ธฐ๋ณธ์€ ๋ณ€ํ™”ํ•˜๋Š” ๊ฒƒ๊ณผ ๋ณ€ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ๊ตฌ๋ถ„ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๋˜ ๋‹ค๋ฅธ ์›์น™์€ ๊ตฌํ˜„์ด ์•„๋‹Œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ”„๋กœ๊ทธ๋žจํ•˜๋Š” ๊ฒƒ์ด๋‹ค. (program to an interface, in other words, program to a supertype) Composition์ด inheri.. 2022. 11. 5.