Notice
Recent Posts
Link
Today
Total
07-07 13:09
๊ด€๋ฆฌ ๋ฉ”๋‰ด

๋ชฉ๋ก๐ŸฐJAVA (13)

dingdong coding

[ JAVA ] Reflection

Reflection์˜ ๊ฐœ๋…์„ ์ดํ•ดํ•˜๋Š” ๋ชฉ์ ์œผ๋กœ ํฌ์ŠคํŒ…์„ ์ž‘์„ฑํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. Reflection : ๊ตฌ์ฒด์ ์ธ ํด๋ž˜์Šค ํƒ€์ž…์„ ์•Œ์ง€ ๋ชปํ•ด๋„, ๊ทธ ํด๋ž˜์Šค์˜ ๋ฉ”์†Œ๋“œ, ํƒ€์ž…, ๋ณ€์ˆ˜๋“ค์„ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” Java API : ์ปดํŒŒ์ผ ์‹œ๊ฐ„์ด ์•„๋‹Œ ์‹คํ–‰ ์‹œ๊ฐ„์— ๋™์ ์œผ๋กœ ํŠน์ • ํด๋ž˜์Šค ์ •๋ณด๋ฅผ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋ฒ• Framework, IDE์—์„œ ๋™์ ๋ฐ”์ธ๋”ฉ ๊ธฐ๋Šฅ ์ œ๊ณต(ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์ค‘ ๋™์ ์œผ๋กœ ํด๋ž˜์Šค ์ •๋ณด ๊ฐ€์ ธ์™€์„œ ์‚ฌ์šฉ) ex) IntelliJ ์ž๋™์™„์„ฑ, Spring Framework Annotation ๋“ฑ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ์–ด๋–ค ํƒ€์ž…์˜ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ• ์ง€ ๋ชจ๋ฅด๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. ์ด๋Ÿด ๋•Œ ๋ฆฌํ”Œ๋ ‰์…˜์„ ์‚ฌ์šฉํ•˜๊ณ  ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด ๋Ÿฐํƒ€์ž„์— ํ˜„์žฌ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” ํด๋ž˜์Šค๋ฅผ ๊ฐ€์ ธ์™€์„œ ์‹คํ–‰ํ•ด์•ผ ๋˜๋Š” ๊ฒƒ์ด๋‹ค. ์ฆ‰, ๋ฆฌํ”Œ๋ ‰์…˜์€ ๊ฐ์ฒด๋ฅผ ํ†ต..

๐ŸฐJAVA/Basic 2022. 7. 24. 16:33
Strategy Pattern

ํ•„์š”์„ฑ ๋จผ์ € Strategy Pattern์„ ์™œ ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š”์ง€์— ๋Œ€ํ•ด ์˜ˆ๋ฅผ ๋“ค์–ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋กœ๋ด‡(Robot) ์„ค๊ณ„๋„์— ๋”ฐ๋ผ ์•„ํ†ฐ(Atom)๊ณผ ํƒœ๊ถŒ๋ธŒ์ด(TaekwonV)๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ํƒœ๊ถŒ๋ธŒ์ด์™€ ์•„ํ†ฐ์€ ๊ณตํ†ต์ ์œผ๋กœ ๊ณต๊ฒฉ๊ณผ ์ด๋™ ๊ธฐ๋Šฅ์ด ์žˆ์ง€๋งŒ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ๋กœ๋ด‡ ํด๋ž˜์Šค์—์„œ attack์™€ move๋ฉ”์„œ๋“œ๋ฅผ ์ถ”์ƒ๋ฉ”์„œ๋“œ๋กœ ์„ค์ •ํ•ด ์ž์‹ ํด๋ž˜์Šค์—์„œ ์ •์˜ํ•˜๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ณต๊ฒฉ ์ด๋™ ํƒœ๊ถŒ๋ธŒ์ด ๋ฏธ์‚ฌ์ผ ๊ณต๊ฒฉ ๊ฑท๊ธฐ ์•„ํ†ฐ ์ฃผ๋จน ๊ณต๊ฒฉ ํ•˜๋Š˜ ๋‚ ์•„๋‹ค๋‹ˆ๊ธฐ ๊ทธ๋Ÿฌ๋‹ค ํ•˜๋Š˜๋กœ ๋‚ ์•„๋‹ค๋‹ˆ๋˜ ์•„ํ†ฐ์ด ๊ฐ‘์ž๊ธฐ ๊ฑท๊ธฐ๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์•„ํ†ฐ์˜ move() ๋ฉ”์„œ๋“œ๋ฅผ ์ˆ˜์ •ํ•ด์ฃผ๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๋ฌธ์ œ์ ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ง์ ‘ move( )๋ฉ”์„œ๋“œ๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ์ž‘์—…์€ OCP (Open/Close Principle)์— ์œ„๋ฐฐ๋˜๋Š” ์ž‘์—…๋‹ˆ๋‹ค. ..

๐ŸฐJAVA/Design Pattern 2022. 7. 6. 02:09
Factory Method Pattern

ํ•„์š”์„ฑ ๋จผ์ € Factory Method Pattern ํŒจํ„ด์„ ์™œ ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š”์ง€์— ๋Œ€ํ•ด ์•Œ์•„๋ด…์‹œ๋‹ค. ํ”„๋กœ๊ทธ๋žจ์ด ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ์€ ์ƒํ™ฉ์— ๋”ฐ๋ผ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๊ธฐ๋Šฅ์˜ ๊ตฌํ˜„์€ ๊ฐœ๋ณ„ ํด๋ž˜์Šค๋ฅผ ํ†ตํ•ด ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•ฉ๋‹ˆ๋‹ค. ๋•Œ๋ฌธ์— ๊ธฐ๋Šฅ์˜ ๋ณ€๊ฒฝ์ด๋‚˜ ์ƒํ™ฉ์— ๋”ฐ๋ฅธ ๊ธฐ๋Šฅ ์„ ํƒ์€ ํ•ด๋‹น ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์ฝ”๋“œ์˜ ๋ณ€๊ฒฝ์„ ์ดˆ๋ž˜ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์ ์ ˆํ•œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์ฝ”๋“œ๋Š” ์ž์ฃผ ์ค‘๋ณต๋  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ถ”์ƒํ™”ํ•ด ํ•œ ๊ณณ์—์„œ ๊ด€๋ฆฌํ•˜์ง€ ์•Š์œผ๋ฉด ๋ณ€ํ™”๊ฐ€ ๋ฐœ์ƒ ํ–ˆ์„ ์‹œ ํ•ด๋‹น ํด๋ผ์ด์–ธํŠธ์˜ ์ฝ”๋“œ๋ฅผ ์ „๋ถ€ ์ˆ˜์ •ํ•ด์ฃผ์–ด์•ผํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์™œ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด๋‚ด๋Š” ๊ณต์žฅ์ด ํ•„์š”ํ• ๊นŒ์š”? Factory Pattern Factory์˜ ๋œป์€ ๊ณต์žฅ์œผ๋กœ ์—ฌ๊ธฐ์„œ๋Š” ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด๋‚ด๋Š” ๊ณต์žฅ(๋ชจ๋“ˆ)์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฐ..

๐ŸฐJAVA/Design Pattern 2022. 7. 5. 01:16
[ JAVA ] Garbage Collection

GC ( Garbage Collection ) GC๋ž€ Heap ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์žฌํ™œ์šฉํ•˜๊ธฐ ์œ„ํ•ด Root Set์—์„œ ์ฐธ์กฐ๋˜์ง€ ์•Š๋Š” ๊ฐ์ฒด๋“ค์„ ํ•ด์ œํ•ด ๊ฐ€์šฉ๊ฐ€๋Šฅํ•œ ๊ณต๊ฐ„์„ ๋งŒ๋“œ๋Š” ์ž‘์—…์ž…๋‹ˆ๋‹ค. * ์ฐธ์กฐ๋œ ๊ฐœ์ฒด : ํ”„๋กœ๊ทธ๋žจ์˜ ์ผ๋ถ€๊ฐ€ ์—ฌ์ „ํžˆ ํ•ด๋‹น ๊ฐœ์ฒด์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ๋ฅผ ์œ ์ง€ํ•˜๊ณ  ์žˆ์Œ์„ ์˜๋ฏธ * ์ฐธ์กฐ๋˜์ง€ ์•Š์€ ๊ฐœ์ฒด : ํ”„๋กœ๊ทธ๋žจ์˜ ์–ด๋–ค ๋ถ€๋ถ„์—์„œ๋„ ๋” ์ด์ƒ ์ฐธ์กฐ๋˜์ง€ ์•Š์Œ ๋”ฐ๋ผ์„œ ํ•ด๋‹น ๊ฐœ์ฒด๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ํšŒ์ˆ˜ ์ž๋ฐ”์—์„œ๋Š” ์ด๋Ÿฌํ•œ ๋ฉ”๋ชจ๋ฆฌ ํ•ด์ œ ์ž‘์—…์„ Garbage Colletor๊ฐ€ ๋‹ด๋‹นํ•˜๋ฉฐ, ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ•ด์ œํ•˜๋Š” ์ž‘์—…์€ Garbage Collection์ด๋ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰ null, System.gc() ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋“ฑ๊ณผ ๊ฐ™์ด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์ง€์ •ํ•ด ํ•ด์ œํ•˜๋Š” ์ž‘์—…์€ ํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค. null๋กœ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์€ ํฐ ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š์ง€๋งŒ..

๐ŸฐJAVA/Basic 2022. 7. 1. 15:47
[JAVA ] Set Interface

SET INTERFACE • ์ €์žฅ ์ˆœ์„œ๊ฐ€ ์—†๋Š” ๋ฐ์ดํ„ฐ์˜ ์ง‘ํ•ฉ์œผ๋กœ, ๋ฐ์ดํ„ฐ์˜ ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ex) HashSet, LinkedHashSet( Hash Set์˜ ํ•˜์œ„ ํด๋ž˜์Šค ), TreeSet 1. HashSet • Hash๊ธฐ๋Šฅ๊ณผ Set ์ปฌ๋ ‰์…˜์ด ํ•ฉ์ณ์ง„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. • Hash Algorithm ์— ์˜ํ•ด ๋ฐ์ดํ„ฐ์˜ ์œ„์น˜๋ฅผ ํŠน์ •์‹œ์ผœ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“  ๊ฒƒ์ž…๋‹ˆ๋‹ค. • ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ Set ์ปฌ๋ ‰์…˜์˜ ํด๋ž˜์Šค๋กœ ์ž…๋ ฅ์ˆœ์„œ์— ์ƒ๊ด€์—†์ด ์ €์žฅ๋˜์–ด ์ •๋ ฌํ•ด์ฃผ์ง€ ์•Š๊ณ  ์ค‘๋ณต๋œ ๊ฐ’์€ ์ €์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. • ๋งŒ์•ฝ ์š”์†Œ์˜ ์ €์žฅ์ˆœ์„œ๋ฅผ ์œ ์ง€ํ•ด์•ผ ํ•œ๋‹ค๋ฉด LinkedHashSet ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. • Null ์š”์†Œ๋„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. Hash Algorithm : ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ํ•ด์‹œ ํ…Œ์ด๋ธ”์— ..

๐ŸฐJAVA/Basic 2022. 6. 28. 14:08
Singleton Pattern

ํ•„์š”์„ฑ ๋จผ์ € Singleton ํŒจํ„ด์„ ์™œ ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š”์ง€์— ๋Œ€ํ•ด ์•Œ์•„๋ด…์‹œ๋‹ค. ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ํ•œ ๋ช…์˜ ์œ ์ €๊ฐ€ ์•„๋‹Œ ์—ฌ๋Ÿฌ ์œ ์ €๊ฐ€ ์ด์šฉํ•˜๋ฉฐ ๊ฐ™์€ ์„œ๋น„์Šค๋ฅผ ๋™์‹œ ๋‹ค๋ฐœ์ ์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์„ ์ ์šฉํ•˜์ง€ ์•Š์€ ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋ผ๋ฉด ์š”์ฒญ์„ ๋ฐ›์„ ๋•Œ ๋งˆ๋‹ค ์š”์ฒญ ๋ฐ›์€ ์„œ๋น„์Šค์— ๋Œ€ํ•œ ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์†Œ๋ฉธ์‹œํ‚ค๋Š” ๊ณผ์ •์„ ๋ฌด์ˆ˜ํžˆ ๋ฐ˜๋ณตํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์—์„œ ์‹ฌํ•œ ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜๋ฉฐ ์ด์™€ ๊ฐ™์€ ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์šฐ๋ฆฌ๋Š” ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. Singleton Pattern • ๊ฐ์ฒด(์ธ์Šคํ„ด์Šค)๊ฐ€ ์˜ค์ง 1๊ฐœ๋งŒ ์กด์žฌํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. • ๊ฐ์ฒด๊ฐ€ ํ˜„์žฌ JVM์•ˆ์— ํ•˜๋‚˜๋งŒ ์žˆ์–ด์•ผํ•˜๋Š” ํŒจํ„ด • private ์ƒ์„ฑ์ž ์™ธ๋ถ€์—์„œ new ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ๊ฐ์ฒด๋ฅผ 2๊ฐœ ์ด์ƒ ์ƒ์„ฑํ•˜์ง€ ๋ชปํ•˜๋„๋ก ๋ง‰์Šต๋‹ˆ๋‹ค. ..

๐ŸฐJAVA/Design Pattern 2022. 6. 21. 21:46
[JAVA ] Collection

Collection Framework ? • ๊ฐ์ฒด์˜ ๊ทธ๋ฃน • ์ž๋ฐ”์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. • Collection ์ธํ„ฐํŽ˜์ด์Šค๋Š” List, Set, Queue ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ํ™•์žฅ๋˜๋Š” ๋ฃจํŠธ ์ธํ„ฐํŽ˜์ด์Šค • Java์—์„œ๋Š” ๋ชจ๋“  Collection ํด๋ž˜์Šค์™€ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํฌํ•จํ•˜๋Š” ์ง‘ํ•ฉ์ธ "Collection Framework"๋ผ๋Š” ๊ฐœ๋…์ด ์ •์˜ • ์ปฌ๋ ‰์…˜ ํ”„๋ ˆ์ž„์›Œํฌ์—๋Š” ์ปฌ๋ ‰์…˜์„ ๋‚˜ํƒ€๋‚ด๊ณ  ์กฐ์ž‘ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ํด๋ž˜์Šค ๋ฐ ์ธํ„ฐํŽ˜์ด์Šค ์ง‘ํ•ฉ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. Java์—์„œ ์ปฌ๋ ‰์…˜ ํ”„๋ ˆ์ž„์›Œํฌ๋ž€ ๋‹ค์ˆ˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‰ฝ๊ณ  ํšจ๊ณผ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ํ‘œ์ค€ํ™”๋œ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•˜๋Š” ํด๋ž˜์Šค์˜ ์ง‘ํ•ฉ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์™€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌ์กฐํ™”ํ•˜์—ฌ ํด๋ž˜์Šค๋กœ ๊ตฌํ˜„ํ•ด ๋†“์€ ๊ฒƒ ์ปฌ๋ ‰์…˜ ์ธํ„ฐํŽ˜์ด์Šค 1) ..

๐ŸฐJAVA/Basic 2022. 6. 20. 12:11