Java

    [Java] 문자열 연결 방식 비교: String vs StringBuilder vs StringBuffer

    이번 글에서는 String에 + 연산자를 사용하는 방식과 StringBuilder 및 StringBuffer를 사용하는 방식을 비교하여 효율성에 대해 알아보고자 한다. 1. String에 + 연산자를 사용하는 방식 String에 + 연산자를 사용하여 문자열을 연결하는 방식은 간단하고 직관적이다. 하지만 이 방식은 문자열을 연결할 때마다 새로운 String 객체를 생성하므로 메모리 사용량이 많아진다. 특히 반복문 안에서 문자열을 연결할 경우 성능에 부정적인 영향을 미칠 수 있다. String result = ""; for (int i = 0; i < 10; i++) { result += "문자열 " + i; } 위의 예시에서는 반복문을 통해 문자열을 10번 연결하고 있다. 이 경우에는 매번 새로운 Stri..

    [Java] 예외 처리 printStackTrace()의 취약점과 대안

    자바에서 예외 처리를 위해 주로 사용되는 printStackTrace() 메소드에 대해 글을 쓰려고 한다. 이 메소드는 예외 처리에 유용하지만, 보안상의 이유로 프로덕션 환경에서는 사용하지 않는 것이 좋다. 그럼 해당 메소드의 취약점과 대안에 대해 자세히 살펴보자. 1. e.printStackTrace()의 취약점 printStackTrace() 예외 발생 시 예외 메시지와 함께 호출 스택 정보를 출력해주는 메소드이다. 이는 개발 및 디버깅 과정에서 유용하게 사용될 수 있지만, 프로덕션 환경에서는 보안 상의 이유로 사용하지 않는 것이 좋다. 왜냐하면 호출 스택 정보가 외부로 노출될 경우, 악의적인 공격자가 시스템의 취약점을 파악하고 악용할 수 있기 때문이다. 2. 로깅 라이브러리를 활용한 예외 처리 pr..

    [Java] 문자열 연결에 대한 StringBuilder와 StringBuffer 비교

    Java에서 문자열을 연결하는 데 사용되는 StringBuilder와 StringBuffer의 장점과 단점에 대해 알아보고, 이를 통해 어떤 경우에 어떤 클래스를 선택해야 하는지 알아보자. 1. StringBuilder의 장점과 단점 장점: 가변성: StringBuilder는 내부 버퍼에 문자열을 추가하므로, 새로운 객체를 생성하지 않고도 문자열을 효율적으로 연결할 수 있다. 빠른 성능: StringBuilder는 단일 스레드 환경에서 사용할 때 가장 빠른 성능을 제공한다. 동기화 비용 없음: StringBuilder는 동기화를 고려하지 않으므로, 동기화 관련 비용이 없다. StringBuilder sb = new StringBuilder(); sb.append("Hello"); sb.append(" "..

    [JAVA] JVM(JAVA Virtual Machine) 이란?

    1. JVM 이란? JVM은 JAVA Virtual Machine, 자바 가상 머신의 약자이며, JAVA는 하드웨어가 아닌 JVM을 통해 동작하며, JVM은 OS와 JAVA 애플리케이션 사이의 중개자 역할을 한다. JVM은 자바 바이트코드를 실행할 수 있는 환경을 제공해준다. 이를 통해 JAVA는 애플리케이션은 OS에 관계없이, 플랫폼에 독립적으로 실행할 수 있게 된다. 또한 JVM은 메모리를 관리하고 Garbage Collection실행을 통해 메모리를 최적화한다. 2. JVM 구조 2 - 1. 자바 메모리 구조 (Runtime Data Area) JAVA 프로그램을 수행하기 위해 OS에서 할당받은 메모리 공간으로, 힙(Heap)과 메서드(Method)는 전체 공유자원으로 분류되고 스택(Stack), ..

    [JAVA] 자바(JAVA)란?

    1. 자바(JAVA)의 개념 자바(JAVA)는 1995년에 미국의 '썬마이크로시스템즈'라는 회사에서 개발한 객체지향 언어 중 하나이며, 운영체제에 독립적이라는 것이 가장 큰 특징이다. 즉, 자바 언어로 작성된 프로그램은 운영체제의 종류와 관계없이 실행 가능하다. 때문에 운영체제에 따라 프로그램을 변경하지 않아도 실행이 가능하다는 것이다. 또한 다른 객체지향 언어에서 잘 사용되지 않는 부분을 제외시킴으로써 표현이 간결해지고, 비교적 배우기 쉬운 언어이다. 2. 자바(JAVA)의 장단점 2-1. 자바(JAVA)의 장점 - 객체지향 프로그래밍 언어(OOP: Object Oriented Programming) 객체별로 코드를 작성하고 목적에 맞는 객체와 객체를 조합하여 전체 프로그램을 완성하는 프로그램 설계 방..