컴파일러와 JVM에게 어떠한 정보를 제공하는 메타데이터의 형태로, 코드에 주석과 비슷한 형태로 적용할 수 있다. 어노테이션을 사용하면 코드에 기능을 추가하거나 기존 기능을 수정하지 않고도 특정한 기능을 적용할 수 있다. 예시로 @Override, @Deprecated, @SuppressWarnings 등이 있다. Spring Framework에서는 어노테이션을 활용하여 빈(Bean)의 설정, 트랜잭션 관리, 스케줄링 등 다양한 기능을 제공한다. @Scheduled 어노테이션은 스케줄링 기능을 제공하는데, 메서드에 적용하면 해당 메서드를 주기적으로 실행할 수 있다. @Component public class ScheduledTasks { @Scheduled(fixedRate = 5000) public vo..
Spring Scheduler에서 lock은 스케줄링 된 작업의 동시성을 제어하는 기능이다. 기본적으로 Spring Scheduler는 동시에 여러 작업이 실행될 수 있지만, lock을 사용하면 특정 작업이 진행되는 동안에는 다른 작업이 실행되지 않게 막을 수 있다. @Scheduled(fixedRate = 5000) @Synchronized("lockName") public void scheduleTaskWithLock() { // Your task logic here } @Synchronized 어노테이션을 사용하여 "lockName"으로 이름이 지정된 lock을 scheduleTaskWithLock 메소드에 추가한다. lock은 한 번에 하나의 task 인스턴스만 실행되도록 보장한다.
스프링 프레임워크에서 제공하는 스케줄링 기능이다. 스케줄링을 위해서는 @Scheduled 애노테이션을 추가한 메서드를 만들고, @EnableScheduling 애너테이션이 붙은 설정 클래스가 필요하다. import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; @Component public class Scheduler { @Scheduled(fixedRate = 5000) public void scheduleTask() { System.out.println("Scheduled task running..."); } } @EnableScheduling 애너테이션이 붙은 S..
어플리케이션에서 실행할 작업들의 시간을 관리하는 것이다. 스케줄링은 어플리케이션의 효율성과 사용자 경험을 개선하는데 매우 중요한 역할을 합니다. 자바에서는 Timer, TimerTask, ScheduledExecutorService 등의 클래스를 사용하여 스케줄링을 구현할 수 있다. Timer는 한 번이나 여러 번 예약된 작업을 실행할 수 있지만, 스레드의 안정성 문제가 있어 종종 사용되지 않는다. TimerTask는 Timer에 의해 실행될 작업을 정의하는 클래스이다. ScheduledExecutorService는 ExecutorService 인터페이스의 확장으로, 스케줄링 기능이 추가된 클래스이다. ScheduledExecutorService의 장점은 스케줄링 작업의 안정성 및 스케줄링 작업의 취소 ..
어플리케이션에서 다중서버 중 하나의 서버에서만 작동하도록 lock을 걸어야 하는 경우가 있다. 데이터베이스(MySQL, PostgreSQL 등)를 사용하여 lock을 저장하고 각 서버가 시작하기 전에 lock 상태를 확인한다. 테이블 생성: lock 정보를 저장할 테이블을 데이터베이스에 생성한다. Lock 저장: 특정 서버가 lock을 걸려면 데이터베이스의 lock 테이블에 lock 정보를 저장한다. Lock 확인: 각 서버가 시작하기 전에 데이터베이스의 lock 테이블에서 lock 정보를 확인합니다. 그리고 lock이 이미 걸려있을 경우, 다른 서버에서 동작 중인 것으로 판단하고 종료한다. Lock 해제: 특정 서버가 lock을 해제할 때, 데이터베이스의 lock 테이블에서 lock 정보를 제거한다. ..
etcd는 open-source이고, 분산 키-값 저장소이며 클러스터의 여러 머신에서 데이터를 안정적으로 저장할 수 있도록 제공한다. etcd 클라이언트 라이브러리를 사용하여 etcd 클러스터와 상호 작용하고 데이터 저장 및 검색 등의 작업을 수행할 수 있다. etcd에 대한 Java 클라이언트 라이브러리는 공식 Java 클라이언트와 커뮤니티에서 지원하는 라이브러리 등이 있다. Java 응용 프로그램에서 etcd를 사용하려면 클라이언트 라이브러리를 선택하고 프로젝트 종속성에 추가해한다. etcd 클라이언트의 인스턴스를 생성하여 etcd 클러스터에 key-value 쌍을 저장한다. import mvnrepository.com.coreos.etcd.EtcdClient; import mvnrepository...

StampedLock은 Java 8에서 추가된 잠금 구현이다. ReentrantLock과 비슷하게 동작하지만, 성능 향상이 가능하며, 적은 오버헤드로 더 효율적으로 동작할 수 있다. StampedLock의 특징: Optimistic locking: 클라이언트는 일단 읽기 접근을 시도하고, 실제로 접근이 어렵다면 나중에 락을 잡는다. Read-write locking: 여러 쓰레드가 동시에 읽기 접근이 가능하고, 한 쓰레드만 쓰기 접근이 가능하다. 간단한 API: StampedLock의 API는 간단하고 사용하기 쉽다. import java.util.concurrent.locks.StampedLock; public class Point { private double x, y; private final St..

ReentrantReadWriteLock은 Java에서 제공하는 Lock 인터페이스의 구현체 중 하나이다. ReentrantReadWriteLock은 동시에 여러 스레드에서 읽기 접근이 가능하지만, 하나의 스레드만이 쓰기 접근이 가능한 락 구현이다. 이를 위해 ReadLock과 WriteLock 두 개의 Lock 인터페이스를 제공한다. ReadLock은 여러 스레드에서 동시에 읽기 접근이 가능하며, WriteLock은 하나의 스레드만이 쓰기 접근이 가능하다. ReentrantReadWriteLock은 읽기 접근이 많은 경우 더 효율적인 락 구현을 제공할 수 있으며, 복잡한 락 구현을 요구하는 대신 적은 오버헤드를 갖는 것이 단점이 있다. import java.util.HashMap; import java..
- Total
- Today
- Yesterday
- aws개발공부
- aws공부순서
- aws공부
- 아마존 웹 서비스
- AWS
- amazon web services
- 클라우드 컴퓨팅
- cloud computing
- 클라우드 컴퓨팅과 아마존 웹 서비스
- aws시작
- 클라우드 컴퓨팅(Cloud computing)
- aws기초
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |