| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
- 타입스크립트
- TypeScript
- Kustomize.io
- 알고리즘
- 키클락
- 디자인 패턴
- spring boot 3.x.x
- 생산자 소비자 패턴
- MSA
- java 정렬
- 멀티스레드
- Kubernetes
- java21
- spring cloud
- JPA
- 배치
- 스레드
- Java
- spring batch
- 쿠버네티스
- 스프링 배치
- thread
- Spring Boot 4.0
- 디자인패턴
- saga pattern
- 사가 패턴
- spring boot 4.x.x
- spring boot
- spring boot 4.0.0
- kubernates
- Today
- Total
목록Backend/JAVA (6)
PSD( Private-Self-Development )
JAVA 21은 가장 중요한 성능에 큰 개선이 이루어진 아주 중요한 버전이다. 1. Virtual Threadsjava 21 의 알파이자 오메가 기존 자바 스레드 1개 = OS 스레드 1개 생성 비용이 비싸고 개수 제한이 있음IO작업(DB, 네트워크) 을 대기 시 스레드가 멈춤 (블로킹) Virtual Threads자바 스레드 N개 = OS 스레드 1개생성 비용이 거의 없음, 개수 제한 없음 IO작업(DB, 네트워크) 을 대기 시 즉시 다른 가상 스레드가 OS 스레드 점유 (논블로킹)주의! 가상스레드가 블로킹 되는 경우가 있는데 synchronized 블록안에 있으면 블로킹되어 버림사용하는 대부분 라이브러리에서 synchronized 를 걷어내는 처리가 되었지만 최신버전으로 유지해야함 // 기존Exe..
JAVA 17의 경우 코드를 예쁘고 간결하게 줄여주는 문법이 많이 등장하였다. 1. Record 추가 기존 단순 데이터 전송용 객채(DTO) 를 만들기 위해서는 Lombok 이나 기본적인 코드들을 많이 작성하여 생성해야 했음.이를 Record 를 사용하여 단순하게 대체할 수 있다. (단, 불변 객체이다) // 기존public class UserDto { private final String name; private final int age; public UserDto(String name, int age) { this.name = name; this.age = age; } // Getter, toString, hashCode 등}// recordpubl..
JAVA 11 은 개발 편의성 개선이 되었다. 1. 타입 추론(var) 추가Javascript 에서 사용하던 var 와 비슷하지만 다르다. 동적 타입이 아닌 컴파일 시점에서 타입을 추론하여 고정한다. 단, 남발해서는 안된다( 어떤 타입인지 알아보기 힘들기 때문 )우측 항이 정확히 알아보기 쉬운 상태에서만 사용하고 함수의 실행 결과 와 같이 해당 함수에 가서야 확인 가능해야하면 지양해야 한다. // 기존Map> usersMap = new HashMap();// 타입 추론var usersMap = new HashMap>(); 2. 불변 컬렉션 팩토리 메서드 추가 (LIst.of)// 기존 List list = Arrays.asList("A", "B");// list.add("C"); 에러 남 (하지만 ..
JAVA 8 은 드디어 기반이 다져진 느낌이다. 1. 람다식 지원기존에는 객체지향 프로그래밍만 가능했다면 이제는 함수지향 프로그래밍도 지원한다.// 기존new Thread(new Runnable() { @Override public void run() {...}).start();// 람다new Thread(() -> System.out.println("Start!")).start(); 2. Stream API 지원이제 다건 데이터 타입(LIst, Map 등) 을 사용할 때, 어떻게(시작은 뭐부터 끝나는건 어디까지 와 같이)를 명령하지 않고 무엇을 할건지만 선언List names = users.stream() .filter(user -> user.getAge() >= 20) .map..
가비지 컬렉션 이란? 러닝타임에서 유효하지 않은 메모리 즉 사용하지 않는 메모리인 가비지 가 발생하고, java 와 kotlin 은 jvm 이 가비지 컬렉터를 이용해 메모리를 정리 해 준다. Old 와 Young JVM 의 Heap 메모리 영역은 Young, Old 두 가지 영역으로 설계되었다. Young 새롭게 생성된 객체가 할당되는 지역 1개의 Eden 영역 과 2개의 Survivor 영역으로 나뉜다. Eden 영역: 새로 생성된 객체가 할당되는 영역 Survivor 영역: 최소 1번의 GC 이상 살아남은 객체가 존재하는 영역 대부분의 객체가 Young 영역에 생성되었다가 사라진다. Young 영역에 대한 가비지 컬렉션 을 Minor GC라고 부른다. Old Young 영역에서 살아남은 객체가 복사..
소스 분석 과 인터넷 강의를 듣던 중 @Autowired 어노테이션 대신, @RequiredArgsConstructor 를 사용을 지향하여 이유를 찾아보게 되었다. 의존성 주입 ? Spring 프레임워크는 사용자가 new 키워드를 사용하여 객체를 생성 및 소멸시키는 과정을 대신 해주는데 객체간의 의존성을 주입해주고(DI) Spring 컨테이너가 Bean들의 생명 주기를 관리한다.(IoC) 이러한 의존성 주입에는 3가지 방식이 있는데, 이 중 생성자 주입을 지향해야 한다. 이유를 알아보자. 의존성 주입의 종류 1. 필드 주입 @Service public class AService{ @Autowired pivate ARepository aRepository; @Autowired pivate BService ..