목록언어/Java (8)
우당탕탕
자바 LTS란 무엇인가?자바는 프로그래밍 언어 중에서 가장 널리 사용되는 언어 중 하나로, 다양한 버전이 존재합니다. 그중에서도 LTS(Long Term Support) 버전은 특히 중요한 역할을 하고 있습니다. 이번 포스팅에서는 자바 LTS에 대해 자세히 알아보도록 하겠습니다.LTS란?LTS는 Long Term Support의 약자로, 장기 지원 버전을 의미해요. 자바의 LTS 버전은 특정 기간 동안 안정적인 지원과 업데이트를 제공받을 수 있는 버전이에요. 일반적으로 LTS 버전은 3년마다 출시되며, 출시 후 5년 동안 기술 지원이 제공되죠. 이로 인해 기업이나 개발자들은 안정적인 환경에서 애플리케이션을 운영할 수 있어요.자바 버전별 특징 및 변경점자바는 여러 버전이 출시되어 존재하며, 각 버전마다 특..
String, StringBuilder, StringBuffer 뭐가 다른 걸까? String String 클래스는 문자열을 불변(immutable)하게 처리한다. 한 번 생성된 문자열은 변경할 수 없으며, 문자열 연산 시에는 새로운 객체를 생성하게 된다. 이로 인해 메모리 소모가 크게 발생할 수 있으니 문자열 연산이 많은 경우에는 StringBuilder 또는 StringBuffer사용을 권장한다. StringBuilder StringBuilder는 가변(mutable)한 특성을 가지고 있어 문자열을 동적으로 변경할 수 있다. 문자열 연산을 효율적으로 처리할 수 있어 성능상의 이점이 있지만, StringBuilder의 경우 단일 스레드 환경에서 안전하지 않기 때문에 멀티스레드 환경에서 사용할 때에는 동..
낙관적 락, 비관적 락에 대해 JPA를 사용하여 데이터베이스와 연결된 애플리케이션을 개발할 때, 동시성 처리와 관련된 이슈가 발생할 수 있다. 이러한 이슈를 해결하기 위한 방법 중 하나는 락(lock)을 사용하는 것이다. 이번 포스팅에는 낙관적 락과 비관적 락에 대해 알아보고, 예제코드와 이를 사용하는 이유 및 장단점을 함께 써보겠다. 낙관적 락(Optimistic Lock) 낙관적 락은 충돌이 거의 발생하지 않을 것이라고 가정하고, 충돌이 발생한 경우에 대비하는 방식이다. 낙관적 락은 JPA에서 버전(Version) 속성을 이용하여 구현할 수 있다. 낙관적 락의 특징으로는 충돌 발생확률이 낮고, 지속적인 락으로 인한 성능저하를 막을 수 있다. 아래는 예시 코드이다. 1. Entity @Entity pu..
static변수와 메모리에 대해 1. static 키워드 자바를 사용하다 보면 static 키워드가 붙은 함수나 변수를 만들어 본 적이 있을 것이다. 오늘은 이 static 키워드를 메모리 관점에서 얘기해보려 한다. 일반적으로 아래와 같은 코드처럼 new를 사용하여 생성한 객체는 메모리의 Heap 영역에 생성되며, static 키워드로 만들어진 변수는 static 영역에 할당된다. static 키워드를 사용하게 되면 메모리에 처음 한번 생성되며, 프로그램이 종료될 때 사라지게 된다. ( 우리가 만드는 class들도 static영역에 한번 생성된다 ) public class Something { public static String some(){ return ""; } } Something somethin..
람다식이란? 나는 처음 시작한 프로젝트가 금융권 프로젝트라 자바 7 버전으로 처음 프로젝트를 시작했었다. 이후 현재는 자바 11을 사용하는 프로젝트를 진행하면서 자바 8 이후 도입된 stream과 람다를 사용하다 보니 편해서 작성하게 되었다. 람다란? Java8 버전 이후에 추가된 기능으로 따지면 메서드를 하나의 식으로 표현한 것이다. 아래 예시 코드를 살펴보자 int num = 10; Runnable runnable = new Runnable() { @Override public void run() { System.out.println("number: " + num); } }; runnable.run(); 보통 람다 설명에서 자주 사용하는 Runnable 코드이다. 이를 람다로 사용하면 아래와 같이 적..
가비지 컬렉션 알고리즘 이 글은 [Java] 가비지 컬렉션(Garbage Collection)이란? 의 2편이다. ( GC에 대한 자세한 내용은 1편을 참고 ) 1편에서 GC 알고리즘 종류에 대해 말을 했었다. 1. Serial GC 2. Parallel GC 3. Parallel old GC 4. CMS(Concurrent Mark & Sweep) GC 5. G1 GC(Garbage First GC) 대충 이런 알고리즘이 있었는데 이에 대해 하나하나 알아보도록 하자 1. Serial GC Serial GC의 경우 Young 영역과 Old 영역이 다르게 실행된다. Young 영역의 경우 1편에서 설명한 Mark Sweep 방식으로 수행되지만 Old 영역의 경우 Compact 가 추가된 Mark Sweep..