Amenable
Amenable's Blog
Amenable
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (189)
    • ๐Ÿ“‚ JAVA (87)
      • ์ดํŽ™ํ‹ฐ๋ธŒ ์ž๋ฐ” (65)
      • ์ฃผ์š” ๊ฐœ๋… (22)
    • ๐Ÿ“‚ ๊ฐœ๋ฐœ ์„œ์  (22)
      • ์‹ค์šฉ์ฃผ์˜ ํ”„๋กœ๊ทธ๋ž˜๋จธ (1)
      • ๊ฐ์ฒด์ง€ํ–ฅ์˜ ์‚ฌ์‹ค๊ณผ ์˜คํ•ด (2)
      • ํด๋ฆฐ ์ฝ”๋“œ (8)
      • ํ•จ๊ป˜ ์ž๋ผ๊ธฐ (1)
      • ๊ทธ๋ฆผ์œผ๋กœ ๋ฐฐ์šฐ๋Š” HTTP&Network Basic (10)
    • ๐Ÿ“‚ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค (8)
      • ๊ฐœ๋… (8)
      • ๋ฌธ์ œํ’€์ด (0)
    • ๐Ÿ“‚ ๋„คํŠธ์›Œํฌ (14)
      • ๊ฐœ๋… (6)
      • ์„ฑ๊ณต๊ณผ ์‹คํŒจ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” 1%์˜ ๋„คํŠธ์›Œํฌ ์›๋ฆฌ (8)
    • ๐Ÿ“‚ ์Šคํ”„๋ง (13)
      • ๊ธฐ๋ณธ ๊ฐœ๋… (13)
    • ๐Ÿ“‚ WEB (5)
    • ๐Ÿ“‚ ์ž๋ฃŒ๊ตฌ์กฐ (12)
      • ๊ฐœ๋… (2)
      • ์ •๋ ฌ (8)
      • ํŠธ๋ฆฌ (2)
    • ๐Ÿ“‚ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (10)
      • ์ตœ์†Œ์‹ ์žฅํŠธ๋ฆฌ (2)
      • ์ตœ๋‹จ ๊ฒฝ๋กœ (2)
      • ๋ฌธ์ž์—ด (2)
      • ETC (4)
    • ๐Ÿ“‚ ์•Œ๊ณ ๋ฆฌ์ฆ˜_๋ฌธ์ œํ’€์ด (4)
      • BOJ_๋ฐฑ์ค€ (4)
    • ๐Ÿ“‚ ํ”„๋กœ๊ทธ๋ž˜๋ฐ (3)
    • ๐Ÿ“‚ DevOps (2)
      • ๋ฐฐํฌ (2)
    • ๐Ÿ“‚ ํ›„๊ธฐ (8)
      • ์šฐ์•„ํ•œ ํ…Œํฌ์ฝ”์Šค(ํ”„๋ฆฌ์ฝ”์Šค) (4)
      • 2023๋…„ (3)
      • 2024๋…„ (1)
    • ๐Ÿ“‚ ํšŒ๊ณ  (1)
      • 2023๋…„ (1)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ๐Ÿš€ GitHub

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
Amenable

Amenable's Blog

๋ถˆํ•„์š”ํ•œ ๊ฐ์ฒด ์ƒ์„ฑ์„ ํ”ผํ•˜๋ผ - [2์žฅ ๊ฐ์ฒด ์ƒ์„ฑ๊ณผ ํŒŒ๊ดด(์•„์ดํ…œ6)]
๐Ÿ“‚ JAVA/์ดํŽ™ํ‹ฐ๋ธŒ ์ž๋ฐ”

๋ถˆํ•„์š”ํ•œ ๊ฐ์ฒด ์ƒ์„ฑ์„ ํ”ผํ•˜๋ผ - [2์žฅ ๊ฐ์ฒด ์ƒ์„ฑ๊ณผ ํŒŒ๊ดด(์•„์ดํ…œ6)]

2022. 11. 29. 00:15

  ํ•ด๋‹น ์žฅ์—์„œ๋Š” ๋ถˆํ•„์š”ํ•˜๊ฒŒ ๊ฐ์ฒด ์ƒ์„ฑ์„ ํ•˜๋Š” 3๊ฐ€์ง€ ๊ฒฝ์šฐ๋ฅผ ๋งํ•ด์ฃผ๊ณ  ์žˆ๋‹ค. ํ•˜๋‚˜์”ฉ ์•Œ์•„๋ณด์ž.

 

1. ๋ฌธ์ž์—ด

public static void main(String[] args){
    String hello1 = "hello";
    String hello2 = new String("hello");
    String hello3 = "hello";
    
    System.out.println(hello1 == hello2); // false // ๋‹ค๋ฅธ ์ธ์Šคํ„ด์Šค 
    System.out.println(hello1.equals(hello2)); // true // ๊ฐ™์€ ๋ฌธ์ž์—ด
    System.out.println(hello1 == hello3); // true // ๊ฐ™์€ ์ธ์Šคํ„ด์Šค
    System.out.println(hello1.equals(hello3)); // true // ๊ฐ™์€ ๋ฌธ์ž์—ด
}

  hello1๊ณผ hello2๊ฐ€ ๊ฐ™์€ ๋ฌธ์ž์—ด์ž„์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๋‹ค๋ฅธ ์ธ์Šคํ„ด์Šค์ž„์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. JVM์€ ๋‚ด๋ถ€์ ์œผ๋กœ ๋ฌธ์ž์—ด์„ ํ’€(pool)์—์„œ ์บ์‹ฑํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋™์ผํ•œ ๋ฌธ์ž์—ด์„ ํ˜ธ์ถœํ•˜๋Š” ๊ฒฝ์šฐ ์ฐธ์กฐ๋ผ๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ๋ฌธ์ž์—ด์„ ์žฌ์‚ฌ์šฉํ•œ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— new String("hello")์ฒ˜๋Ÿผ ๋ถˆํ•„์š”ํ•˜๊ฒŒ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค. 

 

2. ์ •๊ทœ์‹, Pattern

public class RomanNuberals{
    static boolean isRomanNumberalSlow(String s){
        return s.matches("^(?=.)M*(C[MD]|D?C{0,3})(X[CL]|L?X{0,3})(I[XV]|V?I{0,3})$");
    }
    
    private static final Pattern ROMAN = Pattern.compile("^(?=.)M*(C[MD]|D?C{0,3})(X[CL]|L?X{0,3})(I[XV]|V?I{0,3})$");
    
    static boolean isRomanNumeralFast(String s){
        return ROMAN.matcher(s).matches();
    }
}

  isRomanNumberSlow์—์„œ "^(?=.)M*(C[MD]|D?C{0,3})(X[CL]|L?X{0,3})(I[XV]|V?I{0,3})$"๋ผ๋Š” ์ •๊ทœํ‘œํ˜„์‹(ํŒจํ„ด)์„ ๋ฐ›๊ฒŒ ๋œ๋‹ค. ๋‚ด๋ถ€์ ์œผ๋กœ ํŒจํ„ด์„ ์ปดํŒŒ์ผํ•˜๊ณ  ํŒจํ„ด ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ด ๊ณผ์ •์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฐ๋‹ค.

  ๊ทธ๋ž˜์„œ ๋งŒ์•ฝ ๋™์ผํ•œ ํŒจํ„ด์ด ์—ฌ๋Ÿฌ ๋ฒˆ ์‚ฌ์šฉ์ด ๋œ๋‹ค๋ฉด ROMAN์ฒ˜๋Ÿผ ํ•„๋“œ๋กœ ์„ ์–ธ์„ ํ•ด์„œ ์‚ฌ์šฉ์„ ํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•œ๋‹ค. (isRomanNumeralFast ์ฐธ๊ณ )

 

3. ์˜คํ† ๋ฐ•์‹ฑ(auto boxing)

  ์˜คํ† ๋ฐ•์‹ฑ(auto boxing)์ด๋ž€ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ๊ธฐ๋ณธ ํƒ€์ž…๊ณผ ๋ฐ•์‹ฑ ๋œ ๊ธฐ๋ณธ ํƒ€์ž…์„ ์„ž์–ด ์“ธ ๋•Œ ์ž๋™์œผ๋กœ ์ƒํ˜ธ ๋ณ€ํ™˜ํ•ด์ฃผ๋Š” ๊ธฐ์ˆ ์ด๋‹ค. ์กฐ๊ธˆ ๋” ์ •ํ™•ํžˆ๋Š” primitive ํƒ€์ž…(int, long, boolean)์—์„œ reference ํƒ€์ž…(Integer, Long, Boolean)์œผ๋กœ ๋ณ€ํ™˜ํ•  ๋•Œ๋Š” ๋ฐ•์‹ฑ, ๊ทธ ๋ฐ˜๋Œ€๋Š” ์–ธ๋ฐ•์‹ฑ์ด ์ผ์–ด๋‚œ๋‹ค. 

public static long sum(){
    Long sum = 0L;
    for(long i = 0; i <= Integer.MAX_VALUE; i++){
        sum += i;
    }
    return sum;
}

  ์œ„์˜ ์ฝ”๋“œ์—์„œ ๋ถˆํ•„์š”ํ•œ Long ์ธ์Šคํ„ด์Šค๊ฐ€ (Integer.MAX_VALUE+1) ๊ฐœ๋งŒํผ ๊ณ„์†ํ•ด์„œ ๋งŒ๋“ค์–ด์ง„๋‹ค. ๋งŒ์•ฝ 'long sum = 0L;'๋กœ ์„ ์–ธ์„ ํ•œ๋‹ค๋ฉด ๋ถˆํ•„์š”ํ•œ ์˜คํ† ๋ฐ•์‹ฑ์ด ์ผ์–ด๋‚˜์ง€ ์•Š๊ฒŒ ๋œ๋‹ค.

 

  ์ด์ƒ์œผ๋กœ ๋ถˆํ•„์š”ํ•œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” 3๊ฐ€์ง€ ๊ฒฝ์šฐ๋ฅผ ์‚ดํŽด๋ณด์•˜๋‹ค. ๊ทธ๋ ‡๋‹ค๊ณ  "๊ฐ์ฒด ์ƒ์„ฑ์€ ๋น„์‹ธ๋‹ˆ ํ”ผํ•ด์•ผ ํ•œ๋‹ค."๋กœ ์˜คํ•ดํ•˜๋ฉด ์•ˆ ๋œ๋‹ค. ํ”„๋กœ๊ทธ๋žจ์˜ ๋ช…ํ™•์„ฑ, ๊ฐ„๊ฒฐ์„ฑ, ๊ธฐ๋Šฅ์„ ์œ„ํ•ด์„œ ๊ฐ์ฒด๋ฅผ ์ถ”๊ฐ€๋กœ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด๋ผ๋ฉด ์ผ๋ฐ˜์ ์œผ๋กœ๋Š” ์ข‹์€ ์ผ์ด๋‹ค.

 

ํ•ด๋‹น ๊ธ€์€ ๋ฐฑ๊ธฐ์„  ๋‹˜์˜ '์ดํŽ™ํ‹ฐ๋ธŒ ์ž๋ฐ” ์™„๋ฒฝ ๊ณต๋žต'์„ ์ˆ˜๊ฐ•ํ•˜๊ณ  ์ž‘์„ฑํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

'๐Ÿ“‚ JAVA > ์ดํŽ™ํ‹ฐ๋ธŒ ์ž๋ฐ”' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

finalizer์™€ cleaner ์‚ฌ์šฉ์„ ํ”ผํ•˜๋ผ - [2์žฅ ๊ฐ์ฒด ์ƒ์„ฑ๊ณผ ํŒŒ๊ดด(์•„์ดํ…œ8)]  (0) 2023.01.03
๋‹ค ์“ด ๊ฐ์ฒด ์ฐธ์กฐ๋ฅผ ํ•ด์ œํ•˜๋ผ - [2์žฅ ๊ฐ์ฒด ์ƒ์„ฑ๊ณผ ํŒŒ๊ดด(์•„์ดํ…œ7)]  (0) 2022.12.25
์ž์›์„ ์ง์ ‘ ๋ช…์‹œํ•˜์ง€ ๋ง๊ณ  ์˜์กด ๊ฐ์ฒด ์ฃผ์ž…์„ ์‚ฌ์šฉํ•˜๋ผ - [2์žฅ ๊ฐ์ฒด ์ƒ์„ฑ๊ณผ ํŒŒ๊ดด(์•„์ดํ…œ5)]  (0) 2022.11.28
์ธ์Šคํ„ด์Šคํ™”๋ฅผ ๋ง‰์œผ๋ ค๊ฑฐ๋“  private ์ƒ์„ฑ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ผ - [2์žฅ ๊ฐ์ฒด ์ƒ์„ฑ๊ณผ ํŒŒ๊ดด(์•„์ดํ…œ4)]  (0) 2022.11.28
private ์ƒ์„ฑ์ž๋‚˜ ์—ด๊ฑฐ ํƒ€์ž…์œผ๋กœ ์‹ฑ๊ธ€ํ„ด์ž„์„ ๋ณด์ฆํ•˜๋ผ - [2์žฅ ๊ฐ์ฒด ์ƒ์„ฑ๊ณผ ํŒŒ๊ดด(์•„์ดํ…œ3)]  (0) 2022.11.27
    '๐Ÿ“‚ JAVA/์ดํŽ™ํ‹ฐ๋ธŒ ์ž๋ฐ”' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • finalizer์™€ cleaner ์‚ฌ์šฉ์„ ํ”ผํ•˜๋ผ - [2์žฅ ๊ฐ์ฒด ์ƒ์„ฑ๊ณผ ํŒŒ๊ดด(์•„์ดํ…œ8)]
    • ๋‹ค ์“ด ๊ฐ์ฒด ์ฐธ์กฐ๋ฅผ ํ•ด์ œํ•˜๋ผ - [2์žฅ ๊ฐ์ฒด ์ƒ์„ฑ๊ณผ ํŒŒ๊ดด(์•„์ดํ…œ7)]
    • ์ž์›์„ ์ง์ ‘ ๋ช…์‹œํ•˜์ง€ ๋ง๊ณ  ์˜์กด ๊ฐ์ฒด ์ฃผ์ž…์„ ์‚ฌ์šฉํ•˜๋ผ - [2์žฅ ๊ฐ์ฒด ์ƒ์„ฑ๊ณผ ํŒŒ๊ดด(์•„์ดํ…œ5)]
    • ์ธ์Šคํ„ด์Šคํ™”๋ฅผ ๋ง‰์œผ๋ ค๊ฑฐ๋“  private ์ƒ์„ฑ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ผ - [2์žฅ ๊ฐ์ฒด ์ƒ์„ฑ๊ณผ ํŒŒ๊ดด(์•„์ดํ…œ4)]
    Amenable
    Amenable
    CS, ์ž๋ฐ”, ์ž๋ฃŒ๊ตฌ์กฐ, ์•Œ๊ณ ๋ฆฌ์ฆ˜, ์Šคํ”„๋ง, ์Šคํ”„๋ง ๋ถ€ํŠธ์— ํ•ด๋‹นํ•˜๋Š” ๊ฐœ๋ฐœ์— ๊ด€ํ•œ ๋‚ด์šฉ์„ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค.

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”