์๋ฐ ๊ณต๋ถ(79)
-
[์ดํํฐ๋ธ ์๋ฐ] Item9. try-finally ๋ณด๋ค๋ try-with-resources ๋ฅผ ์ฌ์ฉํ๋ผ.
item09. try-finally ๋ณด๋ค๋ try-with-resources๋ฅผ ์ฌ์ฉํ๋ผ. https://hyejin.tistory.com/1011 [์ดํํฐ๋ธ ์๋ฐ] Item8. finalizer์ cleaner ์ฌ์ฉ์ ํผํ๋ผ. item07. ๋ค ์ด ๊ฐ์ฒด ์ฐธ์กฐ๋ฅผ ํด์ ํ๋ผ. ์ดํํฐ๋ธ ์๋ฐ part 1์์๋ ๊ฐ์ฒด์ ์์ฑ๊ณผ ์๋ฉธ์ ๋ํด์ ์๊ธฐํ๊ณ ์๋๋ฐ ์ง๊ธ์ ์ ๋ฒ item ๋ถํฐ๋ ๊ฐ์ฒด ์๋ฉธ์ ๋ํด์ ์ด์ผ๊ธฐ ํ๊ณ ์๋ค. ์ฐ์ ์๋ฐ์์๋ ๋ hyejin.tistory.com ์ฌ๊ธฐ์ ๋ด์ฉ์ด ์ถ๊ฐ๋? ๋๋์ผ๋ก Item09. ์์๋ try-with-resources ์ฌ์ฉ์ ๊ถ์ฅํ๊ณ ์๋ค. (๊ถ์ฅ๋ณด๋ค๋ ์ฌ์ฉํ๋ผ๊ณ ํ๊ณ ์๋ค.) ์๋ฐ์์๋ close ๋ฉ์๋๋ฅผ ํธ์ถํด์ ์ง์ ๋ซ์์ค์ผํ๋ ์์์ด InputStream, Out..
2023.01.25 -
[์ดํํฐ๋ธ ์๋ฐ] Item08 ์๋ฒฝ๊ณต๋ต. Finalizer ๊ณต๊ฒฉ
item08. finalizer์ cleaner ์ฌ์ฉ์ ํผํ๋ผ. " p42. Finalizer ๊ณต๊ฒฉ" https://hyejin.tistory.com/1011 [์ดํํฐ๋ธ ์๋ฐ] Item8. finalizer์ cleaner ์ฌ์ฉ์ ํผํ๋ผ. item07. ๋ค ์ด ๊ฐ์ฒด ์ฐธ์กฐ๋ฅผ ํด์ ํ๋ผ. ์ดํํฐ๋ธ ์๋ฐ part 1์์๋ ๊ฐ์ฒด์ ์์ฑ๊ณผ ์๋ฉธ์ ๋ํด์ ์๊ธฐํ๊ณ ์๋๋ฐ ์ง๊ธ์ ์ ๋ฒ item ๋ถํฐ๋ ๊ฐ์ฒด ์๋ฉธ์ ๋ํด์ ์ด์ผ๊ธฐ ํ๊ณ ์๋ค. ์ฐ์ ์๋ฐ์์๋ ๋ hyejin.tistory.com ์ฌ๊ธฐ์ finalizer๋ฅผ ์ฌ์ฉํ๋ฉด ์๋๋ ์ด์ ์ค ํ๋๋ก "finalizer๋ฅผ ์ฌ์ฉํ ํด๋์ค๋ finalizer ๊ณต๊ฒฉ์ ๋ ธ์ถ๋์ด ์ฌ๊ฐํ ๋ณด์ ๋ฌธ์ ๋ฅผ ์ผ์ผํฌ ์ ์๋ค" ๋ผ๊ณ ํ๋๋ฐ ์ด๋ finalizer ๊ณต๊ฒฉ์ ์์ฑ์๋ ์ง๋ ฌํ ๊ณผ..
2023.01.25 -
[์ดํํฐ๋ธ ์๋ฐ] Item08 ์๋ฒฝ๊ณต๋ต
item08. finalizer์ cleaner ์ฌ์ฉ์ ํผํ๋ผ. " p45. ์ ์ ์ด ์๋ ์ค์ฒฉ ํด๋์ค๋ ์๋์ผ๋ก ๋ฐ๊นฅ ๊ฐ์ฒด์ ์ฐธ์กฐ๋ฅผ ๊ฐ๋๋ค. & ๋๋ค ์ญ์ ๋ฐ๊นฅ ๊ฐ์ฒด์ ์ฐธ์กฐ๋ฅผ ๊ฐ๊ธฐ ์ฝ๋ค. " https://hyejin.tistory.com/1011 [์ดํํฐ๋ธ ์๋ฐ] Item8. finalizer์ cleaner ์ฌ์ฉ์ ํผํ๋ผ. item07. ๋ค ์ด ๊ฐ์ฒด ์ฐธ์กฐ๋ฅผ ํด์ ํ๋ผ. ์ดํํฐ๋ธ ์๋ฐ part 1์์๋ ๊ฐ์ฒด์ ์์ฑ๊ณผ ์๋ฉธ์ ๋ํด์ ์๊ธฐํ๊ณ ์๋๋ฐ ์ง๊ธ์ ์ ๋ฒ item ๋ถํฐ๋ ๊ฐ์ฒด ์๋ฉธ์ ๋ํด์ ์ด์ผ๊ธฐ ํ๊ณ ์๋ค. ์ฐ์ ์๋ฐ์์๋ ๋ hyejin.tistory.com ์ฌ๊ธฐ์ State ์ธ์คํด์ค๋ Room ์ธ์คํด์ค๋ฅผ ์ ๋๋ก ์ฐธ์กฐํ๋ฉด ์๋๊ธฐ ๋๋ฌธ์ ์ ์ ์ค์ฒฉ ํด๋์ค๋ก ์์ฑํ๋ค. Room ์ธ์คํด์ค๋ฅผ ์ฐธ์กฐํ ๊ฒฝ์ฐ..
2023.01.25 -
[์ดํํฐ๋ธ ์๋ฐ] Item8. finalizer์ cleaner ์ฌ์ฉ์ ํผํ๋ผ.
item08. finalizer์ cleaner ์ฌ์ฉ์ ํผํ๋ผ. ์ดํํฐ๋ธ ์๋ฐ part 1์์๋ ๊ฐ์ฒด์ ์์ฑ๊ณผ ์๋ฉธ์ ๋ํด์ ์๊ธฐํ๊ณ ์๋๋ฐ ์ง๊ธ์ ์ ๋ฒ item ๋ถํฐ๋ ๊ฐ์ฒด ์๋ฉธ์ ๋ํด์ ์ด์ผ๊ธฐ ํ๊ณ ์๋ค. ์ฐ์ ์๋ฐ์์๋ ๋ ๊ฐ์ง ๊ฐ์ฒด ์๋ฉธ์๋ฅผ ์ ๊ณตํ๋ค. finalizer์ cleaner์ธ๋ฐ ๊ฒฐ๋ก ์ ์๊ธฐํ์๋ฉด ๋๋ค ์ฌ์ฉ์ ๊ถ์ฅํ์ง ์๋๋ค. ์๋ ๊ถ์ฅ์ด ์๋๋ผ ์ฑ ์์๋ ์ฌ์ฉํ๋ ๊ฒ์ ํผํ๋ผ๊ณ ํ๋ค. (ํนํ finalizer) ํนํ finalizer๋ ์์ธกํ ์ ์๊ณ , ์ํฉ์ ๋ฐ๋ผ ์ํํ ์ ์๊ธฐ ๋๋ฌธ์ ์ผ๋ฐ์ ์ผ๋ก ๋ถํ์ํ๋ค. ๊ทธ๋ฆฌ๊ณ ์ค๋์, ๋ฎ์ ์ฑ๋ฅ, ์ด์์ฑ ๋ฌธ์ ์ ์์ธ์ด ๋๊ธฐ๋ ํ๊ธฐ ๋๋ฌธ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฐ์ง ๋ง๋ผ๊ณ ํ๋ค. ํนํ java 9๋ถํฐ๋ deprecated ๋์ด์ ๋์์ผ๋ก cleaner๋ฅผ ์๊ฐ..
2023.01.22 -
[์ดํํฐ๋ธ ์๋ฐ] Item07 ์๋ฒฝ๊ณต๋ต. Executor
item07. ๋ค ์ด ๊ฐ์ฒด ์ฐธ์กฐ๋ฅผ ํด์ ํ๋ผ. " p39. ๋ฐฑ๊ทธ๋ผ์ด๋ ์ฐ๋ ๋, ScheduledThreadPoolExecutor" Executor๋ฅผ ์๊ธฐ์ ์ Thread, Runnable์ด ๋ญ์ง๋ถํฐ ์์์ผ Executor๋ฅผ ์ดํดํ ์ ์๊ธฐ ๋๋ฌธ์ ๋จผ์ Thread์ Runnable์ด ๋ฌด์์ธ์ง๋ถํฐ ์ฐพ์๋ดค๋ค. ์ฐ์ ์ฐ๋ ๋๋ ํ๋ก๊ทธ๋จ ์คํ์ ๊ฐ์ฅ ์์ ๋จ์๋ก, ์ผ๋ฐ์ ์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค์ด ์คํํ๋ฉด 1๊ฐ์ ๋ฉ์ธ ์ค๋ ๋์ ์ํด ํ๋ก๊ทธ๋จ์ด ์คํ๋๋ค. ๊ทธ๋ฐ๋ฐ 1๊ฐ์ ์ค๋ ๋ ๊ฐ์ง๊ณ ๋ ๋์์ ์ฌ๋ฌ ์์ ์ ์ํํ ์๊ฐ ์๋ค. ๋ฐ๋ผ์ ๋์์ ์ฌ๋ฌ ์์ ์ ์ํํ๊ธฐ ์ํด์๋ ๋ณ๋์ ์ค๋ ๋๋ฅผ ๋ง๋ค์ด์ ์คํํด์ผ ํ๋ค. ์๋ฐ์์๋ ๋ฉํฐ ์ค๋ ๋ ๊ธฐ๋ฐ์ผ๋ก ๋์์ฑ ํ๋ก๊ทธ๋๋ฐ์ ์ง์ํ๊ธฐ ์ํด์ Runnable, Thread, Callab..
2023.01.21 -
[์ดํํฐ๋ธ ์๋ฐ] Item07 ์๋ฒฝ๊ณต๋ต. WeakHashMap
item07. ๋ค ์ด ๊ฐ์ฒด ์ฐธ์กฐ๋ฅผ ํด์ ํ๋ผ. " p38. WeakHashMap, ์ฝํ ์ฐธ์กฐ (Weak reference)" WeakHashMap์ด๋? : ๋์ด์ ์ฌ์ฉํ์ง ์๋ ๊ฐ์ฒด๋ฅผ GCํ ๋ ์๋์ผ๋ก ์ญ์ ํด์ฃผ๋ Map์ด๋ค. ์ด๋ ๋งต์ value๊ฐ ์๋๋ผ key๋ฅผ ๊ธฐ์ค์ผ๋ก key๋ฅผ ๋์ด์ ๊ฐํ๊ฒ ์ฐธ์กฐ๋๋ ๊ณณ์ด ์๋ค๋ฉด ํด๋น ์ํธ๋ฆฌ๋ฅผ ์ ๊ฑฐํ๋ค. ๊ทธ๋ฌ๋ฏ๋ก ๋งต์ key์ ์์กดํ๋ ๊ฒฝ์ฐ์ ์ฌ์ฉํ ์ ์๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ ์กฐ์ฌํด์ผ ํ๋ ๊ฒ์ Integer, String ๊ณผ ๊ฐ์ ๊ฐ๋ค์ ๋์ด์ ์ฌ์ฉํ์ง ์๋๋ค๊ณ ํ๋๋ผ๋ ์ ๊ฑฐ๋์ง ์๋๋ค..!! ์ด๋๊ฐ์ ๊ฐ์ด ์ ์ฅ? ๋์ด ์๊ธฐ ๋๋ฌธ์ด๋ค. package chapter01.item07.cache; import java.util.HashMap; import java.util...
2023.01.21 -
[์ดํํฐ๋ธ ์๋ฐ] Item07 ์๋ฒฝ๊ณต๋ต.NullPointerException
item07. ๋ค ์ด ๊ฐ์ฒด ์ฐธ์กฐ๋ฅผ ํด์ ํ๋ผ. " p37 NullPointerException." ๊ฐ๋ฐ์ ํ๋ค๋ณด๋ฉด ์ ์ผ ๋ง์ด ์ ํ๊ฒ ๋๋ ์๋ฌ ์ค ํ๋๊ฐ NPE, NullPointerException ์ด๋ค. ๊ทผ๋ฐ ์๊ฐ์ ํด๋ณด๋ฉด NPE๋ ์๋ฌ ์ค๋ช ๋ง ๋ด๋ ์ถฉ๋ถํ ์ด๋์ ์๋ฌ๊ฐ ๋ฌ๋์ง ํ์ธ๋ ์ฝ๊ณ , ์ ๋ฌ๋์ง๋ ๊ธ๋ฐฉ ์ ์ ์์ด์ ๊ทธ๋๋ง(?) ์์ฝ๊ฒ ํด๊ฒฐํ ์ ์๋ ์๋ฌ์ด๋ค. NPE๋ฅผ ๋ง๋์ง ์๊ธฐ ์ํด์ java 8์์๋ Optional์ด๋ผ๋ ๊ฒ์ ์ ๊ณตํ๊ณ ์๋๋ฐ ์ด๊ฑธ ํ์ฉํ๋ฉด NPE๋ ์ต๋ํ ํผํ ์ ์๋ค. NullPointerException์ด ๋ฐ์ํ๋ ์ด์ : ์ฐ์ NPE ์ฒ๋ฆฌ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํ๊ธฐ ์ ์ ๊ฐ๋จํ๊ฒ๋ผ๋ NPE ๋ฐ์ ์ด์ ๋ฅผ ์์ฑํด๋ณธ๋ค. ๋จผ์ NPE ๊ฐ ๋ฐ์ํ๋ ์ด์ ๋ ๋ฉ์๋์์ null๋ฅผ ๋ฆฌํดํ๊ณ ..
2023.01.21 -
[์ดํํฐ๋ธ ์๋ฐ] Item7. ๋ค ์ด ๊ฐ์ฒด ์ฐธ์กฐ๋ฅผ ํด์ ํ๋ผ.
item07. ๋ค ์ด ๊ฐ์ฒด ์ฐธ์กฐ๋ฅผ ํด์ ํ๋ผ. ์๋ฐ์์๋ ๊ฐ๋น์ง ์ปฌ๋ ์ ๋๋ถ์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ C๋ C++์ ๋นํด์๋ ํธํ๋ค๊ณ ํ ์ ์์ง๋ง ๊ทธ๋ ๋ค๊ณ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ์์ ์ ๊ฒฝ์ฐ์ง ์์๋ ๋๋ ๊ฒ์ ์๋๋ค. ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ง์ ๊ด๋ฆฌํ๋ ํด๋์ค๊ฐ ์๋ค๋ฉด ๋ฉ๋ชจ๋ฆฌ ๋์๊ฐ ์ผ์ด๋ ์ ์๊ณ , ์ด ๋ฉ๋ชจ๋ฆฌ ๋์๋ ๊ฒ์ผ๋ก๋ ์ ๋๋ฌ๋์ง ์๊ธฐ ๋๋ฌธ์ ์์คํ ์ ์๋ ๊ฐ ์ ๋ณตํด ์๋ค๊ฐ.. ์ฌํ ๊ฒฝ์ฐ์๋ ๋์คํฌ ํ์ด์ง์ด๋ OutoutMemoryError๋ฅผ ์ผ์ผ์ผ์ ํ๋ก๊ทธ๋จ์ด ์๊ธฐ์น ์๊ฒ ์ข ๋ฃ๋ ์๋ ์๋ค.. ๊ทธ๋ฌ๋ฏ๋ก ์ด๋ค ๊ฒฝ์ฐ์ ๋ฉ๋ชจ๋ฆฌ ๋์๊ฐ ๋ฐ์ํ ์ ์์ผ๋ฉฐ, ํด๊ฒฐ? ๋ฐฉ๋ฒ์ ๋ฌด์์ธ์ง์ ๋ํด์ item07์์ ์๊ฐํ๊ณ ์๋ค. ๋ฉ๋ชจ๋ฆฌ ๋์๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ ๐พ : ์ด๋ค ๊ฐ์ฒด์ ๋ํ ๋ ํผ๋ฐ์ค๊ฐ ๋จ์์๋ค๋ฉด ํด๋น ๊ฐ์ฒด๋ ๊ฐ๋น์ง ์ปฌ๋ ์ ์ ๋์์ด ๋..
2023.01.21 -
[์ดํํฐ๋ธ ์๋ฐ] Item06 ์๋ฒฝ๊ณต๋ต. ์ ๊ท ํํ์
item06. ๋ถํ์ํ ๊ฐ์ฒด ์์ฑ์ ํผํ๋ผ. " p32. ์ ๊ท ํํ์" : item06 ์๋ฒฝ๊ณต๋ต 2๋ฒ์งธ ์๊ฐ์๋ ์ ๊ท ํํ์์ด ์์๋๋ฐ, ์ดํํฐ๋ธ ์๋ฐ ๊ฐ์์์ ์ ๊ทํํ์์ ์์ธํ ๋ค๋ฃจ๋๊ฑด ๊ฐ์ ์ฃผ์ ์ ๋ง์ง๋ ์๊ณ , ์ ๊ทํํ์ ์์ฒด๋ง ํด๋ ๋ด์ฉ์ด ์๋ ๋ง๊ธฐ ๋๋ฌธ์ ์ฌ๊ธฐ์๋ ์ ๊ทํํ์์ด ์ฌ์ฉ๋๋ ๊ณณ์ ๋ํด์ ๋ค๋ฃฌ๋ค. String.matches(String regex) : ์ด ๋ฉ์๋๋ ํด๋น ๋ฌธ์์ด์ด ์ฃผ์ด์ง ์ ๊ทํํ์์ ๋ถํฉํ๋์ง์ ์ฌ๋ถ๋ฅผ boolean(true, false)๋ก ๋ํ๋ด์ฃผ๋ ๊ฒ์ด๋ค. ๋ณดํต ์ ๊ทํํ์์์ด์ฉํ ์ ํจ์ฑ ๊ฒ์ฌ์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ๋ฐฉ๋ฒ์ด๋ค. s.matches("^(?=.)M*(C[MD]|D?C{0,3})(X[CL]|L?X{0,3})(I[XV]|V?I{0,3})$"); String.sp..
2023.01.19 -
[์ดํํฐ๋ธ ์๋ฐ] Item06 ์๋ฒฝ๊ณต๋ต. Deprecation
item06. ๋ถํ์ํ ๊ฐ์ฒด ์์ฑ์ ํผํ๋ผ. " p31. ์ฌ์ฉ ์์ API (Deprecation)" Deprecation ์๋ฐ API์์ ์ข ์ข ๋ฉ์๋ ์์ @Deprecated ๊ฐ ํ๊ธฐ๋ ์ฝ๋๋ค์ ํ์ธํ ์ ์๋ค. ์ด๊ฒ ํ๊ธฐ๋ ํด๋์ค๋ ๋ฉ์๋๊ฐ ์๋ค๋ฉด ์์ผ๋ก๋ ์ฌ์ฉํ์ง ์๋๊ฒ ์ข์๋ฐ ๊ทธ ์ด์ ๋ ์ด๋ค ์ด์ ๋ก๋ ์์ผ๋ก ์ฌ๋ผ์ง๊ฒ ๋ ๋ฉ์๋๋ก ์ฌ์ฉ ์์ ํ๋ฉฐ ๋ค๋ฅธ ๋ฉ์๋ ์ฌ์ฉ์ ๊ถ์ฅํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์๋ฐ ํน์ ๋ชฐ๋ผ์ ์ญ์ ๋ฅผ ๋ฐ๋ก ํ๋๊ฒ ์๋๋ผ @Deprecated ์ด๋ ธํ ์ด์ ์ ํตํด์ ์๊ณ ?๋ฅผ ํด์ค๋ค๊ณ ํ ์ ์๋ค. @Deprecated : ํด๋ผ์ด์ธํธ๊ฐ ์ฌ์ฉํ์ง ์๊ธธ ๋ฐ๋ผ๋ ์ฝ๋ ์์ ์ด ์ด๋ ธํ ์ด์ ์ ์ฌ์ฉํด์ฃผ๋ฉด ์ปดํ์ผ ์ ๊ฒฝ๊ณ ๋ฉ์์ง๋ฅผ ํตํด ์ฌ์ฉ ์์ ๋ฅผ ๊ถ์ฅํ๋ API๋ผ๋ ๊ฒ์ ํด๋ผ์ด์ธํธ์๊ฒ ์๋ ค์ค ์ ์๋ค. pub..
2023.01.19 -
[์ดํํฐ๋ธ ์๋ฐ] Item6. ๋ถํ์ํ ๊ฐ์ฒด ์์ฑ์ ํผํ๋ผ.
item06. ๋ถํ์ํ ๊ฐ์ฒด ์์ฑ์ ํผํ๋ผ. โ๏ธ ์ฌ๊ธฐ์ ์ฃผ์ํ ์ ์ ๊ทธ๋ฅ ๊ฐ์ฒด ์์ฑ์ ํผํ๋ผ! ๊ฐ ์๋๋ผ๋ ์ ์ด๋ค. 1) ๋ฌธ์์ด public static void main(String[] args) { String hello = "hello"; String hello2 = new String("hello"); // ์ด ๋ฐฉ๋ฒ์ ๊ถ์ฅํ์ง ์์! -> ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ง์ด ์ฌ์ฉํ๋ ๋จ์ String hello3 = "hello"; System.out.println("hello == hello2 = " + (hello == hello2)); System.out.println("hello == hello3 = " + (hello == hello3)); } ๋ฌธ์์ด์ ์ฌ์ฉํ ๋๋ ๋ณดํต ์ฒซ๋ฒ์งธ, ์ธ๋ฒ์งธ ๋ฐฉ์์ฒ๋ผ ๋ฌธ์์ด ๋ฆฌํฐ..
2023.01.18 -
[์ดํํฐ๋ธ ์๋ฐ] Item05 ์๋ฒฝ๊ณต๋ต. ํฉํฐ๋ฆฌ ๋ฉ์๋ ํจํด
item05. ์์์ ์ง์ ๋ช ์ํ์ง ๋ง๊ณ ์์กด๊ฐ์ฒด์ฃผ์ ์ ์ฌ์ฉํ๋ผ. " p29. ํฉํฐ๋ฆฌ ๋ฉ์๋ ํจํด" ํฉํฐ๋ฆฌ ๋ฉ์๋ ํจํด Factory Method Pattern ์ด๋? : ๊ฐ์ฒด์งํฅ ๋์์ธ ํจํด์ผ๋ก Factory Method๋ ๋ถ๋ชจ(์์) ํด๋์ค์ ์๋ ค์ง์ง ์์ ๊ตฌ์ฒด ํด๋์ค๋ฅผ ์์ฑํ๋ ํจํด์ด๋ฉฐ, ์์(ํ์) ํด๋์ค๊ฐ ์ด๋ค ๊ฐ์ฒด๋ฅผ ์์ฑํ ์ง๋ฅผ ๊ฒฐ์ ํ๋๋ก ํ๋ ํจํด์ด๊ธฐ๋ ํ๋ค. ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋ ๊ตฌ์ฒด์ ์ผ๋ก ์ด๋ค ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ๋ง๋ค ์ง ์๋ธ ํด๋์ค์์ ๊ฒฐ์ ํ๊ฒ ๋๋ค. (์ธ์คํด์ค์ ์์ฑ์ ์๋ธํด๋์ค์ ์์) ๋ฐ๋ผ์ ๋ถ๋ชจ ์ถ์ ํด๋์ค๋ ์ธํฐํ์ด์ค์๋ง ์์กดํ๊ณ ์ค์ ๋ก ์ด๋ค ๊ตฌํ ํด๋์ค๋ฅผ ํธ์ถํ ์ง๋ ์๋ธ ํด๋์ค์์ ๊ตฌํํ๋ค. -> ์๋ก์ด product๋ฅผ ์ ๊ณตํ๋ ํฉํฐ๋ฆฌ๋ฅผ ์ถ๊ฐํ๋๋ผ๋ ํฉํฐ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ํด๋ผ์ด์ธํธ ..
2023.01.16