๋ชฉ๋ก๐Ÿ’ป Java Study/Java ์ด๋ก  ์ •๋ฆฌ (26)

Coding Planet

[์ดํŽ™ํ‹ฐ๋ธŒ ์ž๋ฐ”]chapter2 : [์•„์ดํ…œ3] private ์ƒ์„ฑ์ž๋‚˜ ์—ด๊ฑฐ ํƒ€์ž…์œผ๋กœ ์‹ฑ๊ธ€ํ„ด์ž„์„ ๋ณด์ฆํ•˜๋ผ

์•„์ดํ…œ3: private ์ƒ์„ฑ์ž๋‚˜ ์—ด๊ฑฐ ํƒ€์ž…์œผ๋กœ ์‹ฑ๊ธ€ํ„ด์ž„์„ ๋ณด์ฆํ•˜๋ผ ์‹ฑ๊ธ€ํ„ด(sigleton)์ด๋ž€ ์ธ์Šคํ„ด์Šค๋ฅผ ์˜ค์ง ํ•˜๋‚˜๋งŒ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ํด๋ž˜์Šค๋ฅผ ๋งํ•œ๋‹ค. ์‹ฑ๊ธ€ํ„ด์˜ ์ „ํ˜•์ ์ธ ์˜ˆ๋กœ๋Š” ํ•จ์ˆ˜์™€ ๊ฐ™์€ ๋ฌด์ƒํƒœ ๊ฐ์ฒด๋‚˜ ์„ค๊ณ„์ƒ ์œ ์ผํ•ด์•ผํ•˜๋Š” ์‹œ์Šคํ…œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋“ค ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ํด๋ž˜์Šค๋ฅผ ์‹ฑ๊ธ€ํ„ด์œผ๋กœ ๋งŒ๋“ค๋ฉด ์ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ๋ฅผ ํ…Œ์ŠคํŠธํ•˜๊ธฐ๊ฐ€ ์–ด๋ ค์›Œ์งˆ ์ˆ˜ ์žˆ๋‹ค. ํƒ€์ž…์„ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ์ •์˜ํ•œ ๋‹ค์Œ ๊ทธ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•ด์„œ ๋งŒ๋“  ์‹ฑ๊ธ€ํ„ด์ด ์•„๋‹ˆ๋ผ๋ฉด ์‹ฑ๊ธ€ํ„ด ์ธ์Šคํ„ด์Šค๋ฅผ ๊ฐ€์งœ(mock)๊ตฌํ˜„์œผ๋กœ ๋Œ€์ฒดํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ฆ‰, ํด๋ž˜์Šค๋ฅผ ์‹ฑ๊ธ€ํ„ด์œผ๋กœ ๋งŒ๋“ค ๊ฒฝ์šฐ ํ•ด๋‹น ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๊ฐ€ ์‹œ์Šคํ…œ ์ „์ฒด์— ํ•˜๋‚˜์ด๊ธฐ ๋•Œ๋ฌธ์— ํ…Œ์ŠคํŠธ์™€ ์‹ค์ œ ํ™˜๊ฒฝ์—์„œ์˜ ๋™์ž‘์ด ๊ฐ•ํ•˜๊ฒŒ ๊ฒฐํ•ฉ๋  ์ˆ˜ ์žˆ๋‹ค. ์‹ฑ๊ธ€ํ„ด์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์€ ๋ณดํ†ต ๋‘๊ฐ€์ง€์ด๋‹ค. ๋‘ ๋ฐฉ์‹ ๋ชจ๋‘ ์ƒ์„ฑ์ž๋Š” ..

[JAVA] ์ง๋ ฌํ™” (Serialization), ์—ญ์ง๋ ฌํ™” (Deserialization)

1. ์ง๋ ฌํ™”๋ž€ (Serialization)? ์ง๋ ฌํ™” (Serialization)๋Š” ๊ฐ์ฒด์˜ ์ƒํƒœ๋ฅผ ๋ฐ”์ดํŠธ ์ŠคํŠธ๋ฆผ์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ •์„ ์˜๋ฏธํ•œ๋‹ค. ์ด ๋ฐ”์ดํŠธ ์ŠคํŠธ๋ฆผ์€ ํŒŒ์ผ๋กœ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ๋‹ค๋ฅธ ์‹œ์Šคํ…œ์— ์ „์†กํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฐ˜๋Œ€๋กœ, ์—ญ์ง๋ ฌํ™” (Deserialization)๋Š” ๋ฐ”์ดํŠธ ์ŠคํŠธ๋ฆผ์„ ๋‹ค์‹œ ์›๋ž˜์˜ ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ •์„ ์˜๋ฏธํ•œ๋‹ค. 2. ์ง๋ ฌํ™”์˜ ๋ชฉ์  ์˜์†์„ฑ (Persistence): ๊ฐ์ฒด์˜ ์ƒํƒœ๋ฅผ ์˜๊ตฌ ์ €์žฅ ๋งค์ฒด (์˜ˆ: ํŒŒ์ผ)์— ์ €์žฅํ•˜๊ณ  ๋‚˜์ค‘์— ๋‹ค์‹œ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ์ฒด๋ฅผ ๋ณต์›ํ•  ์ˆ˜ ์žˆ๋‹ค. ์›๊ฒฉ ํ”„๋กœ์‹œ์ € ํ˜ธ์ถœ (Remote Procedure Call): ๊ฐ์ฒด๋ฅผ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ๋‹ค๋ฅธ JVM ๋˜๋Š” ์‹œ์Šคํ…œ์œผ๋กœ ์ „์†กํ•˜๋ ค๋ฉด ๊ทธ ๊ฐ์ฒด๋ฅผ ๋ฐ”์ดํŠธ ์ŠคํŠธ๋ฆผ์œผ๋กœ ๋ณ€ํ™˜ํ•ด์•ผ ํ•œ๋‹ค. ๊ฐ์ฒด์˜ ๊นŠ์€ ๋ณต์‚ฌ (Deep Copy)..

[์ดํŽ™ํ‹ฐ๋ธŒ ์ž๋ฐ”]chapter2 : [์•„์ดํ…œ2] ์ƒ์„ฑ์ž์— ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๋งŽ๋‹ค๋ฉด ๋นŒ๋”๋ฅผ ๊ณ ๋ คํ•˜๋ผ

์•„์ดํ…œ2 : ์ƒ์„ฑ์ž์— ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๋งŽ๋‹ค๋ฉด ๋นŒ๋”๋ฅผ ๊ณ ๋ คํ•˜๋ผ ์ •์  ํŒฉํ† ๋ฆฌ์™€ ์ƒ์„ฑ์ž์—๋Š” ๋˜‘๊ฐ™์€ ์ œ์•ฝ์ด ํ•˜๋‚˜ ์žˆ๋‹ค. ์„ ํƒ์  ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๋งŽ์„ ๊ฒฝ์šฐ ์ ์ ˆํžˆ ๋Œ€์‘ํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๊ธฐ์กด์— ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๋งŽ์„ ๊ฒฝ์šฐ ๊ณ ๋ คํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ์•ˆ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ๋Œ€์•ˆ1. ์ ์ธต์  ์ƒ์„ฑ์ž ํŒจํ„ด ์ ์ธต์  ์ƒ์„ฑ์ž ํŒจํ„ด(telescoping constructor pattern)์ด๋ž€ ๊ฐ์ฒด ์ƒ์„ฑ ์‹œ ํ•„์š”ํ•œ ์กฐํ•ฉ์— ๋”ฐ๋ผ ๋‹ค์–‘ํ•œ ์ƒ์„ฑ์ž๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ํ•„์ˆ˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ฐ›๋Š”์ƒ์„ฑ์ž๋ฅผ ๋จผ์ € ์ƒ์„ฑํ•˜๊ณ  ๋งค๊ฐœ๋ณ€์ˆ˜ 1๊ฐœ๋ฅผ ์ถ”๊ฐ€๋กœ ๋ฐ›๋Š” ์ƒ์„ฑ์ž, ์„ ํƒ ๋งค๊ฐœ ๋ณ€์ˆ˜ 2๊ฐœ๋ฅผ ์ถ”๊ฐ€๋กœ ๋ฐ›๋Š” ์ƒ์„ฑ์ž ๋“ฑ์˜ ํ˜•ํƒœ๋กœ ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐœ์ˆ˜๋งŒํผ ์ƒ์„ฑ์ž๋ฅผ ๋Š˜๋ ค๊ฐ€๋Š” ๋ฐฉ์‹์ด๋‹ค. ์ด ํŒจํ„ด์˜ ์ฃผ์š”ํ•œ ๋ฌธ์ œ๋Š” ์„ ํƒ์  ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์ˆ˜๊ฐ€ ๋งŽ์•„์งˆ์ˆ˜๋ก ์ƒ์„ฑ์ž์˜ ์ˆ˜๊ฐ€ ๊ธฐํ•˜๊ธ‰์ˆ˜์ ์œผ๋กœ ๋Š˜์–ด๋‚˜๊ฒŒ ๋˜๋ฉฐ, ํด..

[์ดํŽ™ํ‹ฐ๋ธŒ ์ž๋ฐ”]chapter2 : [์•„์ดํ…œ1] ์ƒ์„ฑ์ž ๋Œ€์‹  ์ •์  ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ๋ฅผ ๊ณ ๋ คํ•˜๋ผ

์•„์ดํ…œ1 : ์ƒ์„ฑ์ž ๋Œ€์‹  ์ •์  ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ๋ฅผ ๊ณ ๋ คํ•˜๋ผ ์ƒ์„ฑ์ž ๋Œ€์‹  ๋ฐ˜๋“œ์‹œ ์ •์  ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ผ๋Š” ์˜๋ฏธ๋Š” ์•„๋‹ˆ๋‹ค. ๋•Œ์— ๋”ฐ๋ผ ์ •์  ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ๊ฐ€ ๋”์šฑ ์œ ์šฉํ•œ ๊ฒฝ์šฐ ์‚ฌ์šฉ์„ ๊ณ ๋ คํ•˜๋ผ๋Š” ๋œป์ด๋‹ค. 1. ์ •์  ๋ฉ”์„œ๋“œ์˜ ์žฅ์  ์ด๋ฆ„์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค. ์ •์  ํŒฉํ† ๋ฆฌ์˜ ์ด๋ฆ„์„ ํ†ตํ•ด ๋ฐ˜ํ™˜๋  ๊ฐ์ฒด์˜ ํŠน์„ฑ์„ ์‰ฝ๊ฒŒ ๋ฌ˜์‚ฌํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฆ„์„ ํ†ตํ•ด ๋ช…์‹œ์  ์„ ์–ธ์ด ๊ฐ€๋Šฅํ•ด ์ง€๋Š” ๊ฒƒ์ด๋‹ค. ์ƒ์„ฑ์ž์˜ ์‹œ๊ทธ๋‹ˆ์ฒ˜๊ฐ€ ์ค‘๋ณต๋˜๋Š” ๊ฒฝ์šฐ ์œ ์šฉํ•˜๋‹ค. ํ˜ธ์ถœ ๋  ๋•Œ๋งˆ๋‹ค ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒˆ๋กœ ์ƒ์„ฑํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค. ๋ถˆ๋ณ€ ํด๋ž˜์Šค์ธ ๊ฒฝ์šฐ๋‚˜ ๋งค๋ฒˆ ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค ํ•„์š”๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ์— ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด๋‘” ์ธ์Šคํ„ด์Šค ๋˜๋Š” ์บ์‹œํ•ด๋‘” ์ธ์Šคํ„ด์Šค๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฐ˜ํ™˜ ํƒ€์ž…์˜ ํ•˜์œ„ ํƒ€์ž… ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ •์  ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ๋Š” ์ƒ์„ฑ์ž์™€ ๋‹ฌ๋ฆฌ, ํ˜ธ์ถœ๋  ๋•Œ ๋ฐ˜ํ™˜ ํƒ€์ž…์ด ๊ณ ์ •๋˜์ง€ ..

Hash Map์ด๋ž€?

1. HashSet์ด๋ž€? HashSet์€ Java ์ปฌ๋ ‰์…˜ ํ”„๋ ˆ์ž„์›Œํฌ์˜ ํ•˜๋‚˜๋กœ, ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. HashSet์€ ๋‚ด๋ถ€์ ์œผ๋กœ HashMap ์ธ์Šคํ„ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋ฉฐ, ๋ฐ์ดํ„ฐ ์‚ฝ์ž…, ์‚ญ์ œ, ์กฐํšŒ ์ž‘์—…์„ ๋น ๋ฅด๊ฒŒ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. HashSet์€ ๋ฐ์ดํ„ฐ์˜ ์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ฆ‰, HashSet์— ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…ํ•œ ์ˆœ์„œ์™€ HashSet์˜ ๋‚ด๋ถ€ ๋ฐ์ดํ„ฐ ์ €์žฅ ์ˆœ์„œ๋Š” ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ด์œ ๋กœ HashSet์€ ๋ฐ์ดํ„ฐ ์ˆœ์„œ๊ฐ€ ์ค‘์š”ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. HashSet์€ Set ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋ฏ€๋กœ, Set ์ธํ„ฐํŽ˜์ด์Šค์—์„œ ์ •์˜๋œ ๋ชจ๋“  ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, HashSet์€ null ๊ฐ’์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ, HashSet..

์˜ˆ์™ธ ๋˜์ง€๊ธฐ/๋– ๋„˜๊ธฐ๊ธฐ -throws

์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด์„œ๋Š” ๋ณดํ†ต try~catch~finally๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ธฐ๋ณธ์ ์ด๋‹ค. ์ด์™ธ์—๋„ throws๋ฅผ ํ†ตํ•ด ํŠน์ • ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒ ๊ฒฝ์šฐ์— ์‹คํ–‰ํ•  ๋ช…๋ น์–ด๋ฅผ catch๋ธ”๋Ÿญ์— ์ž‘์„ฑํ•˜์ง€ ์•Š๊ณ ๋„ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค. 1. throws try~catch ์˜ˆ์™ธ์ฒ˜๋ฆฌ ์‹œ ๋ฉ”์†Œ๋“œ๋งˆ๋‹ค try~catch๋ฅผ ์‚ฌ์šฉํ•ด ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ฃผ๋Š”๋ฐ ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ ๊ณณ(์ผ๋ฐ˜์ ์œผ๋กœ main())์—์„œ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ฃผ๋Š” ๋ฐฉ์‹์ด๋‹ค. ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์˜ˆ์™ธ๋ฅผ ์ผ์œผํ‚ค๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ ๋ฉ”์†Œ๋“œ๋กœ ์˜ˆ์™ธ๋ฅผ ๋„˜๊ธฐ๊ณ  ์ฑ…์ž„์„ ์ „๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ• throws๋ฅผ ๋ฉ”์„œ๋“œ ์„ ์–ธ๋ถ€์— ๋ช…์‹œํ•ด ์ฃผ์–ด์„œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š” ์ฝ”๋“œ๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๋ ค์ค€๋‹ค ๋˜ํ•œ, ๋ฐœ์ƒ ๊ฐ€๋Šฅํ•œ ์˜ˆ์™ธ๋ฅผ ํŠน์ • ๋ฉ”์„œ๋“œ์—์„œ ํ•œ ๋ฒˆ์— ์ฒ˜๋ฆฌํ•ด ์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ๊ด€๋ฆฌ๊ฐ€ ์šฉ์ดํ•˜๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ main() ๋ฉ”์†Œ๋“œ..