JAVA(143)
-
[μ΄νν°λΈ μλ°] 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 -
[μ΄νν°λΈ μλ°] 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 μ벽곡λ΅. μ€νλ§ IOC
item05. μμμ μ§μ λͺ μνμ§ λ§κ³ μμ‘΄κ°μ²΄μ£Όμ μ μ¬μ©νλΌ. " p30. μμ‘΄ κ°μ²΄κ° λ§μ κ²½μ°μ Dagger, Guice, μ€νλ§ κ°μ μμ‘΄ κ°μ²΄ μ£Όμ νλ μμν¬ λμ μ κ³ λ €ν μ μλ€." μ€νλ§ IoC (Inversion Of Control) : BeanFactory, ApplicationContext μ μ΄μ μμ μ΄λ μ°μ μκΈ° μ½λμ λν μ μ΄κΆμ μκΈ° μμ μ΄ κ°μ§κ³ μμ§ μκ³ μΈλΆμμ μ μ΄νλ κ²½μ°λ₯Ό λ§νλ€. λνμ μΈ μλ‘ μ€νλ§μ΄ μλλ° μ€νλ§ μ ν리μΌμ΄μ μμλ λΉμ μμ±κ³Ό μμ‘΄ κ΄κ³ μ€μ , μ¬μ©, μ κ±° λ±μ μμ μ μ ν리μΌμ΄μ μ½λ λμ μ€νλ§ μ»¨ν μ΄λκ° λ΄λΉνλ€. -> μ΄λ₯Ό μ€νλ§ μ»¨ν μ΄λκ° μ½λ λμ μ€λΈμ νΈμ λν μ μ΄κΆμ κ°κ³ μλ€κ³ ν΄μ IoCλΌκ³ νλ€. SpellChecker ..
2023.01.16 -
[μ΄νν°λΈ μλ°] Item05 μ벽곡λ΅. ν©ν°λ¦¬ λ©μλ ν¨ν΄
item05. μμμ μ§μ λͺ μνμ§ λ§κ³ μμ‘΄κ°μ²΄μ£Όμ μ μ¬μ©νλΌ. " p29. ν©ν°λ¦¬ λ©μλ ν¨ν΄" ν©ν°λ¦¬ λ©μλ ν¨ν΄ Factory Method Pattern μ΄λ? : κ°μ²΄μ§ν₯ λμμΈ ν¨ν΄μΌλ‘ Factory Methodλ λΆλͺ¨(μμ) ν΄λμ€μ μλ €μ§μ§ μμ ꡬ체 ν΄λμ€λ₯Ό μμ±νλ ν¨ν΄μ΄λ©°, μμ(νμ) ν΄λμ€κ° μ΄λ€ κ°μ²΄λ₯Ό μμ±ν μ§λ₯Ό κ²°μ νλλ‘ νλ ν¨ν΄μ΄κΈ°λ νλ€. κ°μ²΄λ₯Ό μμ±ν λ ꡬ체μ μΌλ‘ μ΄λ€ ν΄λμ€μ μΈμ€ν΄μ€λ₯Ό λ§λ€ μ§ μλΈ ν΄λμ€μμ κ²°μ νκ² λλ€. (μΈμ€ν΄μ€μ μμ±μ μλΈν΄λμ€μ μμ) λ°λΌμ λΆλͺ¨ μΆμ ν΄λμ€λ μΈν°νμ΄μ€μλ§ μμ‘΄νκ³ μ€μ λ‘ μ΄λ€ ꡬν ν΄λμ€λ₯Ό νΈμΆν μ§λ μλΈ ν΄λμ€μμ ꡬννλ€. -> μλ‘μ΄ productλ₯Ό μ 곡νλ ν©ν°λ¦¬λ₯Ό μΆκ°νλλΌλ ν©ν°λ¦¬λ₯Ό μ¬μ©νλ ν΄λΌμ΄μΈνΈ ..
2023.01.16 -
[μ΄νν°λΈ μλ°] Item5. μμμ μ§μ λͺ μνμ§ λ§κ³ μμ‘΄ κ°μ²΄ μ£Όμ μ μ¬μ©νλΌ.
item05. μμμ μ§μ λͺ μνμ§ λ§κ³ μμ‘΄ κ°μ²΄ μ£Όμ μ μ¬μ©νλΌ. ν΄λμ€κ° λ΄λΆμ μΌλ‘ νλ μ΄μμ μμμ μμ‘΄νκ³ , κ·Έ μμμ΄ ν΄λμ€μ λμμ μν₯μ μ€λ€λ©΄ μ μ μ νΈλ¦¬ν° ν΄λμ€λ μ±κΈν€ λ°©μμ΄ μ ν©νμ§ μλ€. λ§μ ν΄λμ€κ° νλ μ΄μμ μμμ μμ‘΄νλλ° μ± μμ μμ λ‘λ λ§μΆ€λ² κ²μ¬κΈ°λ₯Ό μλ‘ λ€κ³ μλ€. λ§μΆ€λ² κ²μ¬κΈ°λ Dictionaryμ μμ‘΄νλ€κ³ κ°μ νλ€. 1) μ μ μ νΈλ¦¬ν° ν΄λμ€ public class SpellChecker { // μμμ μ§μ λͺ μν μ½λ (μμμ μ§μ μμ±νλ€, new λ‘ μμ± ) private static final Dictionary dictionary = new Dictionary(); private SpellChecker() { } public static boo..
2023.01.12 -
[μ΄νν°λΈ μλ°] Item4. μΈμ€ν΄μ€νλ₯Ό λ§μΌλ €κ±°λ private μμ±μλ₯Ό μ¬μ©νλΌ.
item04. μΈμ€ν΄μ€νλ₯Ό λ§μΌλ €κ±°λ private μμ±μλ₯Ό μ¬μ©νλΌ. μΈμ€ν΄μ€νλ₯Ό λ§μμΌ νλ μ±κ²©μ ν΄λμ€λ€μ΄ μ‘΄μ¬νλλ° κ·Έ μ€ λνμ μΈ? κ²μ΄ μ μ λ©μλλ§μ λ΄μ μ νΈλ¦¬ν° ν΄λμ€λ μΈμ€ν΄μ€λ‘ λ§λ€μ΄ μ°λ €κ³ μ€κ³ν ν΄λμ€κ° μλλ€. μΈμ€ν΄μ€ν λ§λ λ°©λ² 1) μΆμ ν΄λμ€λ‘ λ§λ€κΈ° public abstract class UtilityClass { public static String hello() { return "hello"; } } μ΄λ°μμΌλ‘ μΆμν΄λμ€λ‘ μ μΈν΄μ μΈμ€ν΄μ€ν νλ κ²μ λ§μ μλ μμ§λ§.. μ΄λ μλΈν΄λμ€λ‘ ν΄λΉ ν΄λμ€λ₯Ό μμλ°μΌλ©΄ μΈμ€ν΄μ€νλ₯Ό ν μ μκΈ° λλ¬Έμ μλ²½ν λ§μ μλ μλ€. 2) private μμ±μ μΆκ° μ± μμλ 1) λ°©λ²λ³΄λ€λ 2) λ°©λ²μ λ κΆμ₯νκ³ μλ€. μλ..
2023.01.11 -
[μ΄νν°λΈ μλ°] Item03 μ벽곡λ΅. μ§λ ¬ν Serializable
item03. private μμ±μλ μ΄κ±° νμ μΌλ‘ μ±κΈν€μμ 보μ¦νλΌ. " p24. μ§λ ¬ν, μμ§λ ¬ν, Serializable, transient" μ§λ ¬ν Serializable λ? : κ°μ²΄λ₯Ό λ°μ΄νΈμ€νΈλ¦ΌμΌλ‘ μνΈ λ³ννλ κΈ°μ μλ° μμ€ν λ΄λΆμμ μ¬μ©λλ κ°μ²΄ λλ λ°μ΄ν°λ₯Ό μΈλΆμ μλ° μμ€ν μμλ μ¬μ©ν μ μλλ‘ byte ννλ‘ λ°μ΄ν° λ³ννλ κΈ°μ μ΄κ³ , μμ§λ ¬νλ μ΄λ κ² byte λ‘ λ³νλ λ°μ΄ν°λ₯Ό λ€μ κ°μ²΄λ‘ λ³ννλ κΈ°μ μ λ§νλ€. JVMμ λ©λͺ¨λ¦¬μ μμ£Ό(ν λλ μ€ν) λμ΄ μλ κ°μ²΄ λ°μ΄ν°λ₯Ό λ°μ΄νΈ ννλ‘ λ³ννλ κΈ°μ (μ§λ ¬ν) κ³Ό λ°μ΄νΈ ννμ λ°μ΄ν°λ₯Ό κ°μ²΄λ‘ λ³νν΄μ JVMμΌλ‘ μμ£Όμν€λ νν(μμ§λ ¬ν) λ°μ΄νΈμ€νΈλ¦ΌμΌλ‘ λ³νλ κ°μ²΄λ₯Ό νμΌλ‘ μ μ₯νκ±°λ λ€νΈμν¬λ₯Ό ν΅ν΄ λ€λ₯Έ μμ€ν μΌ..
2023.01.11 -
[μ΄νν°λΈ μλ°] Item03 μ벽곡λ΅. ν¨μν μΈν°νμ΄μ€
item03. private μμ±μλ μ΄κ±° νμ μΌλ‘ μ±κΈν€μμ 보μ¦νλΌ. " p24. Supplier, ν¨μν μΈν°νμ΄μ€" ν¨μν μΈν°νμ΄μ€ Functional Interface λ? : μλ°κ° μ 곡νλ κΈ°λ³Έ ν¨μν μΈν°νμ΄μ€λ‘ 1κ°μ μΆμ λ©μλλ₯Ό κ°μ§κ³ μλ μΈν°νμ΄μ€λ₯Ό μλ―Ένλ€. Single Abstract Method (SAM) μ΄λΌκ³ νλ€. ν¨μν μΈν°νμ΄μ€λ λλ€ ννμκ³Ό λ©μλ μ°Έμ‘°μ λν "νμΌ νμ "μ μ 곡νλ€. κ·Έλ¦¬κ³ μ΄ νκ² νμ μ λ³μ ν λΉ, λ©μλ νΈμΆ, νμ λ³νμ νμ©ν μ μλ€. /** * ν¨μν μΈν°νμ΄μ€ */ @FunctionalInterface public interface MyFunction { String valueOf(Integer integer); } -> μ΄μ²λΌ..
2023.01.10 -
[μ΄νν°λΈ μλ°] Item03 μ벽곡λ΅. λ©μλ μ°Έμ‘° method reference
item03. private μμ±μλ μ΄κ±° νμ μΌλ‘ μ±κΈν€μμ 보μ¦νλΌ. " p24. λ©μλ μ°Έμ‘°λ₯Ό 곡κΈμλ‘ μ¬μ©ν μ μλ€. " λ©μλ μ°Έμ‘° Method Reference λ? : λ©μλ νλλ§ νΈμΆνλ λλ€ ννμμ μ€μ¬μ°λ λ°©λ² λ©μλ μ°Έμ‘°λ λλ€ ννμμ΄ λ¨ νλμ λ©μλλ§μ νΈμΆνλ κ²½μ°μ ν΄λΉ λλ€ ννμμμ λΆνμν 맀κ°λ³μλ₯Ό μ κ±°νκ³ μ¬μ©ν μ μλλ‘ νλ€. ν΄λμ€μ΄λ¦::λ©μλμ΄λ¦ μ°Έμ‘°λ³μμ΄λ¦::λ©μλμ΄λ¦ public class Person { LocalDate birthday; public Person() { } public Person(LocalDate birthday) { this.birthday = birthday; } public int getAge() { return LocalD..
2023.01.10