์ดํํฐ๋ธ ์๋ฐ(84)
-
[์ดํํฐ๋ธ ์๋ฐ] Item10. equals๋ ์ผ๋ฐ ๊ท์ฝ์ ์ง์ผ ์ฌ์ ์ํ๋ผ.
item10. equals๋ ์ผ๋ฐ ๊ท์ฝ์ ์ง์ผ ์ฌ์ ์ํ๋ผ. equals ๋ฉ์๋๋ ์ฌ์ ์ํ๊ธฐ ์ฌ์๋ ๋ณด์ด์ง๋ง ํจ์ ์ด ๋ง๊ธฐ ๋๋ฌธ์ ์ฌ์ ์ ํ์ง ์๋ ๊ฒ์ด ์ต์ ์ด๊ธฐ๋ ํ๋ค. ์ฌ์ ์ํ์ง ์์ผ๋ฉด ๊ทธ ํด๋์ค์ ์ธ์คํด์ค๋ ์ค์ง ์๊ธฐ ์์ ๊ณผ๋ง ๊ฐ๊ฒ ๋๋ค. equals๋ฅผ ์ฌ์ ์ํ์ง ์์๋ ๋๋ ์ํฉ 1๏ธโฃ ๊ฐ ์ธ์คํด์ค๊ฐ ๋ณธ์ง์ ์ผ๋ก ๊ณ ์ ํ๋ค. : ๊ฐ์ ํํํ๋๊ฒ ์๋๋ผ ๋์ํ๋ ๊ฐ์ฒด๋ฅผ ํํํ๋ ํด๋์ค๊ฐ ์ฌ๊ธฐ์ ํด๋น๋๋ค. Thread๊ฐ ์ฌ๊ธฐ์ ํด๋น๋๋๋ฐ, Object์ equals ๋ฉ์๋๋ ์ด๋ฌํ ํด๋์ค์ ๋ฑ ๋ง๊ฒ ๊ตฌํ๋์๋ค. ๊ทธ๋ฆฌ๊ณ ์ฑ๊ธํค ๊ฐ์ฒด ๋๋ enum ํ์ ์ด๋ฉด equals๋ฅผ ๊ตณ์ด ์ฌ์ ์ ํ์ง ์์๋ ๋๋ค.(ํ์๋ ์์) 2๏ธโฃ ์ธ์คํด์ค์ '๋ ผ๋ฆฌ์ ๋์น์ฑ(logical equality)' ์ ๊ฒ์ฌํ ์ผ์ด ์๋ค. ๋ํ..
2023.01.26 -
[์ดํํฐ๋ธ ์๋ฐ] Item09 ์๋ฒฝ๊ณต๋ต.
item09. try-finally๋ณด๋ค try-with-resources ๋ฅผ ์ฌ์ฉํ๋ผ. " p48. ์๋ฐ ํผ์ฆ๋ฌ ์์ธ ์ฒ๋ฆฌ ์ฝ๋์ ์ค์" package chapter01.item09.puzzler; import java.io.*; /** * item09. try-finally ๋ณด๋ค๋ try-with-resources๋ฅผ ์ฌ์ฉํ๋ผ. * ์๋ฐ Puzzler ์ฑ ์ ์ธ๊ธํ ์์ธ ์ฒ๋ฆฌ ์ฝ๋์ ์ค์ */ public class Copy { private static final int BUFFER_SIZE = 8 * 1024; static void copy(String src, String dst) throws IOException { InputStream in = new FileInputStream(src); Out..
2023.01.25 -
[์ดํํฐ๋ธ ์๋ฐ] 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 ์๋ฒฝ๊ณต๋ต. AutoClosable
item08. finalizer์ cleaner ์ฌ์ฉ์ ํผํ๋ผ. " p43. AutoClosable " AutoClosable์ด๋? : try-with-resources๋ฅผ ์ง์ํ๋ ์ธํฐํ์ด์ค์ด๋ค. /* * Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * * * * * * * * * * * * * * * * * * * * */ package java.lang; /** * An object that may hold resources (such as file or socket handles) * u..
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 ์๋ฒฝ๊ณต๋ต. ๊ฐ๋น์ง ์ปฌ๋ ์ Garbage Collection GC
item06. ๋ถํ์ํ ๊ฐ์ฒด ์์ฑ์ ํผํ๋ผ. " p32. ํ ๋ฒ ์ฐ๊ณ ๋ฒ๋ ค์ ธ์ ๊ฐ๋น์ง ์ปฌ๋ ์ ๋์์ด ๋๋ค." ๊ฐ๋น์ง ์ปฌ๋ ์ (Garbage Collection) ์ด๋? : GC๋ผ๊ณ ๋ ๋ถ๋ฆฌ๋ ๊ฐ๋น์ง ์ปฌ๋ ์ ์ด๋ ์๋ฐ์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๋ฐฉ๋ฒ ์ค ํ๋๋ก JVM ์ Heap ์์ญ์์ ๋์ ์ผ๋ก ํ ๋น๋๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ ์ค ํ์ ์๊ฒ ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์ฃผ๊ธฐ์ ์ผ๋ก ์ญ์ ํ๋ ํ๋ก์ธ์ค๋ฅผ ๋งํ๋ค. https://coding-factory.tistory.com/829 [Java] ๊ฐ๋น์ง ์ปฌ๋ ์ (GC, Garbage Collection) ์ด์ ๋ฆฌ ๊ฐ๋น์ง ์ปฌ๋ ์ (Garbage Collection)์ด๋? ๊ฐ๋น์ง ์ปฌ๋ ์ ์ ์์ด๋ก Garbeage Collection์ผ๋ก ์ค์ฌ์ GC๋ผ๊ณ ๋ ๋ถ๋ฆ ๋๋ค. ๊ฐ๋น์ง ์ปฌ๋ ์ ์ ์๋ฐ์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๋ฐฉ๋ฒ ์ค์ ..
2023.01.19