๋ฐ์ํ Java16 Modern Java: An In-Depth Guide from Java 8 to Java 21 Modern Java์ ๋ํด, Java 8 ~ Java 21๊น์ง์ ๋ณ๊ฒฝ์ง์ ์ ์ ๋ฆฌํด๋ณด๋ ํฌ์คํ ์ ๋๋ค. ํด๋น ํฌ์คํ ์ ์๋ ๋ธ๋ก๊ทธ๋ฅผ ๋ฒ์ญํ ํฌ์คํ ์ ๋๋ค.https://medium.com/@akineralkan/modern-java-an-in-depth-guide-from-version-8-to-21-by-akiner-alkan-f89b50e13c72 Modern Java: An In-Depth Guide from Version 8 to 21 | by Akiner AlkanDiscover Java’s evolution from 8 to 21, unveiling features like lambdas to sealed classes and records.medium.com ์๋ฐ 8์ ์์์ผ๋ก ํฅ๋ฏธ๋ก์ด ๊ธฐ๋ฅ๋ค์.. 2024. 9. 8. Java ํด๋์ค ์ค๊ณ ์์ ํ๊ฒ ์ ํ๊ธฐ (feat. ์์ง๋) ์ง๋ ํฌ์คํ Java ํด๋์ค ์ค๊ณ ์์ ํ๊ฒ ์ ํ๊ธฐ ํธ์์๋ ํด๋์ค ์ค๊ณ์ ๊ด๋ จํ์ฌ ๋ค์ ๋ด์ฉ๋ค์ ์ดํด๋ดค์๋๋ฐ์, ์์ฑ์๋ฅผ ํตํด ์ ์์ ์ธ ๊ฐ ์ค์ ํ๊ธฐ ๋ณ์๋ฅผ ๋ถ๋ณ์ผ๋ก ๋ง๋ค์ด์ ์์ํ์ง ๋ชปํ ๋์ ์๋ฐฉํ๊ธฐ ๋ถ๋ณ์ ๋ณ๊ฒฝํด์ผ ํ๋ ๊ฒฝ์ฐ, ์๋ก์ด ์ธ์คํด์ค๋ฅผ ์์ฑํ๊ธฐ ๋ฉ์๋ ๋งค๊ฐ๋ณ์์ ์ง์ญ ๋ณ์๋ ๋ถ๋ณ์ผ๋ก ๋ง๋ค๊ธฐ ๋ฉ์๋์ ์๋ชป๋ ๊ฐ์ ์ ๋ฌ์ ์๋ฐฉํ๊ธฐ ์ด๋ฒ ํฌ์คํ ์์๋ ์์ง๋๋ฅผ ๊ธฐ์ค์ผ๋ก ํด๋์ค ์ค๊ณ์ ๊ด๋ จ๋ ๋ด์ฉ์ ์ ๋ฆฌํด ๋ณด๊ฒ ์ต๋๋ค. ์์ง๋๋, 'ํด๋์ค ๋ด๋ถ์ ์๋ ๋ฐ์ดํฐ์ ๋ก์ง ์ฌ์ด์ ๊ด๊ณ๊ฐ ์ผ๋ง๋ ๊ฐํ์ง ๋ํ๋ด๋ ์งํ' ๋ก ์ ์ํฉ๋๋ค. 1. static ๋ฉ์๋ ์ค์ฉ static ๋ฉ์๋๋ ์ธ์คํด์ค๋ฅผ ์์ฑํ์ง ์๊ณ ์ฌ์ฉํ ์ ์๋ค๋ ํธ๋ฆฌํจ์ด ์์ง๋ง, ๋ค๋ฅธ ํํธ์ผ๋ก๋ ์์ง๋๊ฐ ๋ฎ์์ง ์ ์์ต๋๋ค. static ๋ฉ์๋.. 2023. 12. 20. Java ํด๋์ค ์ค๊ณ ์์ ํ๊ฒ ์ ํ๊ธฐ ํด๋์ค๋ ์ฝ๋๋ฅผ ์์ฑํ๊ธฐ ์ํ ์ด๊ธฐ ๋จ๊ณ๋ผ๊ณ ํ ์ ์์ ๊ฒ ๊ฐ์๋ฐ, ๊ฐ์ฒด ์งํฅ ์ธ์ด์์ ํด๋์ค๋ฅผ ํ์ฉํ์ฌ ์ค๊ณ๋ฅผ ์ ํ๊ธฐ ์ํด ์ด๋ ํ ์ ๋ค์ ๊ณ ๋ คํด์ผ ํ ์ง ์ดํด๋ด ๋๋ค ์์ ๋ ๊ธ์ก์ ๋ํ๋ด๋ Money ํด๋์ค๋ฅผ ํ ๋๋ก ์ค๊ณ ๋ฐฉ๋ฒ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค. 1. ์์ฑ์๋ฅผ ํตํด ์ ์์ ์ธ ๊ฐ ์ค์ ํ๊ธฐ ์์ ๊ฐ์ด ๋ชจ๋ ์ธ์คํด์ค ๋ณ์๋ฅผ ์ด๊ธฐํํ๋ ๋ฐ ํ์ํ ๋งค๊ฐ๋ณ์๋ค์ ๋ฐ๋ ์์ฑ์๋ฅผ ๋ง๋ค ์ ์๋๋ฐ, ์์ ๋ฌธ์ ์ ์ ๋งค๊ฐ๋ณ์๋ก ์๋ชป๋ ๊ฐ์ด ์ ๋ฌ๋ ์ ์๋ค๋ ์ ์ ๋๋ค. ์์ ๊ฒฝ์ฐ ๊ฐ์ฒด๋ ์ ์์ ์ผ๋ก ์์ฑ๋์ง๋ง, ํ๋ก๊ทธ๋จ์ด ๋์ํ์ฌ ๊ฐ์ฒด๊ฐ ์ฌ์ฉ๋๋ค๋ฉด ๋ฒ๊ทธ๊ฐ ๋ฐ์ํฉ๋๋ค. ๋ฐ๋ผ์, ์๋ชป๋ ๊ฐ์ด ์ ์ ๋์ง ๋ชปํ๊ฒ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ๊ฐ์ฒด๊ฐ ์์ฑ๋ ๋ ์งํํฉ๋๋ค. ๊ธ์ก (amount): 0 ์ด์์ ์ ์ ํตํ (currency): null .. 2023. 12. 16. Java Map - compute(), computeIfAbsent(), computeIfPresent() Map ์ธํฐํ์ด์ค์์ Java 8 ๋ฒ์ ์ ์ถ๊ฐ๋ ์ผ๋ถ API์ ๋ํด ์ดํด๋ด ๋๋ค. putIfAbsent() compute() computeIfPresent() computeIfAbsent() getOrDefault() ํด๋น ์ฝ๋๋ Map ์ธํฐํ์ด์ค์ ๊ตฌํ์ฒด์ธ HashMap์ ๊ธฐ์ค์ผ๋ก ์ ๋ฆฌํ์์ต๋๋ค. 1. putIfAbsent(K key, V value) putIfAbsent() ๋ฉ์๋๋ ๋ค์ด๋ฐ์์ ์ ์ถํ ์ ์๋ฏ์ด, ๋ค์๊ณผ ๊ฐ์ด ๋์ํฉ๋๋ค. Key๊ฐ ์กด์ฌํ ๊ฒฝ์ฐ: Value ๋ณ๊ฒฝ ์์ด ๊ธฐ์กด์ ์กด์ฌํ๋ Key์ Value๋ฅผ ๋ฆฌํดํฉ๋๋ค. Key๊ฐ ์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐ: Key์ ํด๋นํ๋ Value๋ฅผ ์ ์ฅํ ํ null์ ๋ฆฌํดํฉ๋๋ค. Map์ ๊ตฌํ์ฒด์ธ HashMap์ ๋ณด๋ฉด putVal() ๋ฉ์๋๋ฅผ ํตํด ์งํ๋๊ณ ,.. 2023. 3. 13. EasyRandom - Java beans๋ฅผ ๋๋ค์ผ๋ก ์์ฑํด ์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๐ EasyRandom - Java beans๋ฅผ ๋๋ค ์์ฑํด ์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ณดํต ํ ์คํธ๋ฅผ ์์ฑํ ๋ ๊ฐ์ฒด๋ฅผ ์์๋ก ์์ฑํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ์ข ์ข ์์ต๋๋ค. ๊ฐ์ฒด์ ํ๋๊ฐ 1~2๊ฐ๋ผ๋ฉด ์๊ด์๊ฒ ์ง๋ง, ์กฐ๊ธ ๋ง์์ง๋ค๋ฉด ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋ ์๊ทผ(?) ๊ท์ฐฎ์๋ฐ์, ์ ์ฌ์ง์ฒ๋ผ ๊ฐ ํ๋์ ๋ง๋ ๊ฐ์ ํ๋์ฉ ์ค์ ํด ์ฃผ์ด์ผ ํ๊ธฐ ๋๋ฌธ์ ๊ฝค๋ ๋ฒ๊ฑฐ๋ก์ด ์์ ์ ๋๋ค. ์ด์ ๊ฐ์ ๋, ๊ฐ์ฒด์ ํ๋๋ฅผ ๋ฐ๋ก ์ค์ ํ์ง ์๊ณ ๊ฐ์ฒด๋ฅผ ์๋์ผ๋ก ์์ฑํด์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ EasyRandom ์ ๋๋ค. (์ฌ์ฉ๋ฒ๋ ๊ต์ฅํ ๊ฐ๋จํ๋, ์์ธํ ๊ฑด ๊นํ๋ธ ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํด ์ฃผ์ธ์.) ๐ ์ฌ์ฉ๋ฒ ์์กด์ฑ ์ถ๊ฐ ํ ์คํธ์์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๊ทธ๋ ์ด๋ค์ testImplementation์ผ๋ก ์ค์ ํ์ต๋๋ค. Member ํด๋์ค Post ํด๋์ค EasyRandom Cust.. 2023. 1. 27. [Java DeepDive] - Map(HashMap) 1. ๊ฐ๋ , ํ๋, ์์ฑ์ ๐ Map(HashMap) Java์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ ์๋ฃ๊ตฌ์กฐ๋ List์ Map์ด ์๋๊น ์๊ฐํฉ๋๋ค. ์ด๋์์๋ ๊ต์ฅํ ๋ง์ด ํ์ฉํ๋ ์๋ฃ๊ตฌ์กฐ๋ก ์ ๋ํ ๋ง์ด ์ฌ์ฉํ๋๋ฐ์, ์ด๋ฒ์๋ Map ์ธํฐํ์ด์ค์ ๊ฐ๋ ๊ณผ ์ ๊ณต๋๋ API๋ค, ๊ตฌํ์ฒด์ธ HashMap์ ๋ํด ์ดํด๋ณด๊ฒ ์ต๋๋ค. (์์ ์ฝ๋๋ ๊นํ๋ธ์์ ํ์ธํ์ค ์ ์์ผ๋ฉฐ, ๋ฒ์ ์ Java 11์ ์ฌ์ฉํ์ต๋๋ค.) Map ์ธํฐํ์ด์ค๋ Collection ํ๋ ์์ํฌ์๋ ๋ค๋ฅด๊ฒ ํค์ ๊ฐ์ ํ๋์ ์์ผ๋ก ์ ์ฅํ๋ Key-Value ํ์์ ์๋ฃ๊ตฌ์กฐ ์ ๋๋ค. Key๋ ์ด๋ฆ ๊ทธ๋๋ก ๊ฐ(Value)์ ์ฐพ๊ธฐ ์ํ ์ญํ ์ ํ๋ฉฐ Map ์ธํฐํ์ด์ค์ key, value๋ ๋ค์๊ณผ ๊ฐ์ ํน์ง์ ๊ฐ์ง๊ณ ์์ต๋๋ค. key๋ ์ค๋ณต์ด ๋ถ๊ฐ๋ฅํ์ง๋ง, value๋ ์ค๋ณต์ด ๊ฐ๋ฅํฉ๋๋ค. ๊ฐ .. 2022. 11. 27. [Java DeepDive] - List (ArrayList) ๐ List (ArrayList) ์๋ ํ์ธ์, ์ด๋ฒ ์๊ฐ์๋ Java์ Collection Framework ์ค ํ๋์ธ List์ ๋ํด ์ดํด๋ณด๊ฒ ์ต๋๋ค. List ์ธํฐํ์ด์ค๋ Collection ์ธํฐํ์ด์ค๋ฅผ ์์๋ฐ๊ณ ์์ต๋๋ค. Collection ์ธํฐํ์ด์ค๋ ๋ฐ์ดํฐ์ ์ ์ฅ, ์ญ์ , ์ฝ์ ๊ธฐํ ๋ฑ๋ฑ์ ๋ก์ง์ ๋ณด๋ค ํธํ๊ฒ API๋ก ์์ฑํ์ฌ ๊ฐ๋ฐ์๊ฐ ๋ณด๋ค ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ ์ ์๊ฒ๋ ๋์์ฃผ๋ ์๋ฐ์ ์ปฌ๋ ์ ํ๋ ์์ํฌ์ ๋๋ค. ์ ์ฌ์ง๊ณผ ๊ฐ์ด Collection์ collection hierarchy์ ์ต์์ ์ธํฐํ์ด์ค์ด๋ฉฐ ํ์ ์ธํฐํ์ด์ค์ธ List, Queue, Set ๋ฑ์ด ์ด๋ฅผ ์์๋ฐ๊ณ ์๊ณ , List ์ธํฐํ์ด์ค๋ ArrayList, Vector, LinkedList์ ๊ตฌํ์ฒด๋ค์ด ์กด์ฌํฉ๋๋ค. ์ ๋ List ์ธํฐํ.. 2022. 10. 29. [Java DeepDive] - String (2) ๋ด์ฅ ํจ์ ๐ String (2) - ๋ด์ฅ ํจ์ ์๋ ํ์ธ์, ์ง๋ ์๊ฐ์๋ String - ๋ฌธ์์ด ์์ฑ ๊ด๋ จํด์ ์ดํด๋ณด์๋๋ฐ์, ์ด๋ฒ์๋ String ํด๋์ค์ ์กด์ฌํ๋ ๋ฉ์๋๋ค ์ค ์ผ๋ถ ๋ฉ์๋๋ค์ ๋ํด ๋ด๋ถ ์ฝ๋๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค. (์์ ์ฝ๋๋ ๊นํ๋ธ์์ ํ์ธํ์ค ์ ์์ผ๋ฉฐ, ๋ฒ์ ์ Java 11์ ์ฌ์ฉํ์ต๋๋ค.) String ํด๋์ค ๋ด์ ๋ฉ์๋๋ค์ ์ ์ฌ์ง์ฒ๋ผ ๊ต์ฅํ ๋ง์ด ์กด์ฌํ๋๋ฐ์, ๊ฐ์ธ์ ์ผ๋ก ์์ฃผ ์ฌ์ฉํ๋ ๋ฉ์๋๋ค์ ๋ํด ์ ๋ฆฌํด ๋ณด๊ฒ ์ต๋๋ค. · String.length() @Stable private final byte[] value; ... static final boolean COMPACT_STRINGS; static { COMPACT_STRINGS = true; } ... public int lengt.. 2022. 10. 23. [Java DeepDive] - String (1) ๋ฌธ์์ด ์์ฑ ๐ String (1) - ๋ฌธ์์ด ์์ฑ ์๋ฐ์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ํ์ ์ค ํ๋์ธ ๋ฌธ์์ด(String)์ ๋ํด ์ดํด๋ณด๊ฒ ์ต๋๋ค. (์์ ์ฝ๋๋ ๊นํ๋ธ์์ ํ์ธํ์ค ์ ์์ผ๋ฉฐ, ๋ฒ์ ์ Java 11์ ์ฌ์ฉํ์ต๋๋ค.) String ๋ฌธ์์ด ์์ฑ - new, literal ๋ณดํต ์๋ฐ์์ ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋๋ new ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ธ์คํด์ค๋ฅผ ์์ฑํ์ง๋ง, String์ ๊ฒฝ์ฐ ๋ฆฌํฐ๋ด(literal)์ ํตํด ๊ฐ์ ๋ฐ๋ก ํ ๋นํ ์ ์์ต๋๋ค. public static void main(String[] args) { final String str1 = "JuHyun"; // [1] final String str2 = "JuHyun"; // [2] final String str3 = new String("JuHyun"); .. 2022. 10. 10. [Java, ๋์์ธ ํจํด] - ์ฑ๊ธํด ํจํด(Singleton Pattern) ๐ ๊ธ๋ 6๊ธฐ ํฌ์คํ 1. ๋ฏธ์น๋๋ก ๋์ ๋ 7์์ ํ๊ณ 2. ์ฌ์ฉ์๊ฐ ๊ฒ์๋ฌผ์ ์์ฑํ ๋์ ํธ๋์ญ์ ์ฒ๋ฆฌ 3. Spring AOP - (1) ํ๋ก์ ํจํด, ๋ฐ์ฝ๋ ์ดํฐ ํจํด 4. [MySQL] - ํธ๋์ญ์ ์ ๊ฒฉ๋ฆฌ ์์ค(Isolation level) 5. Spring AOP - (2) AOP ๊ฐ๋ ๋ฐ ์ค์ต 6. ์ธํ ๋ฆฌ์ ์ด(IntelliJ) - ๋๋ฒ๊น (Debugging) ํ๊ธฐ 7. [Java, ๋์์ธํจํด] - ์ฑ๊ธํด ํจํด(Singleton Pattern) 8. ์๊ฐ ์ฝ๋๋ฆฌ๋ทฐ Ver_0.1: ์ปค๋ฆฌ์ด ์ฑ์ฅ CODE ์ธ๋ฏธ๋ ์ ๋ฆฌ 9. ํฌ์คํธ๋งจ(API ํ ์คํธ) ํ์ฉํ๊ธฐ 10. ๋ป๊น์ 2021๋ ํ๊ณ ๐ ๋์์ธ ํจํด - ์ฑ๊ธํด ํจํด(Singleton Pattern) ํฌ์คํ ์์ ์์ฑํ ์์ ์ฝ๋๋ ๊นํ๋ธ์์ ํ์ธํ์ค ์.. 2021. 10. 24. ์ด์ 1 2 ๋ค์ ๋ฐ์ํ