Quartz Quartz는 미리 결정된 시간 또는 예약된 시간에 작업을 예약하고 실행하는데 사용할 수 있는데 오픈 소스 라이브러리이다. 간단한 interval , Cront 표현식을 사용하여 작업할 수 있다. 장점 in-Memory, JDBC 방식 제공 스케줄러 간 클러스터링 시스템 Fail-over(Random 방식의 로드 분산처리) 기본 플러그인 제공(ShutdownHookPlugin, LoggingHistoryPlugin) 단점 완벽한 로드 분산처리 불가(Random 방식) GUI 환경 미지원 스케줄러 실행에 대한 히스토리 보관 미지원 fixed delay 미지원 Quartz Maven Dependency org.quartz-scheduler quartz 2.3.2 Quartz Gradle Depe..
Thread를 통해 Service를 호출하려고 하면 @Autowired null 관련 에러가 발생한다. Thread 클래스가 Bean으로 등록된 클래스가 아니어서 IOC Container를 통해 자동 주입되지 않는다. @Autowired는 Bean으로 등록된 클래스에서만 사용 가능하다. 이럴 때는 Bean을 수동으로 주입하면 해결 가능하다. ApplicationContextProvider import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.spri..
Thread는 자원과 안정성 문제가 항상 따라다닌다. Thread가 많다면 대기 중인 상태가 되어, 메모리 사용량이 많아지면서 JVM 가비지 콜렉터에 영향을 주게 된다. 이러한 문제를 해결하기 위해 Thread Pool 관리가 필요하고, Java에서는 java.util.concurrent.* 패키지에서 Thread Pool을 제공하고 있다. ExecutorService 생성자 newFixedThreadPool : 지정된 숫자만큼 고정된 Thread를 유지한다. Thread가 작업이 종료되었으면 Thread 다시 생성하여 주어진 개수를 맞춘다. /** * Creates a thread pool that reuses a fixed number of threads * operating off a shared ..
import java.util.HashMap; public class Maps { public static void main(String[] args) { // Map // key, value 쌍의 집합이다. // 특정 순서를 보장하지 않는다. HashMap empIds = new HashMap(); empIds.put("John", 12345); empIds.put("Carl", 54321); empIds.put("Jerry", 8675309); System.out.println(empIds); System.out.println(empIds.get("Carl")); // 키가 존재하는지 System.out.println(empIds.containsKey("George")); // 값이 존재하는지 Sys..
import java.util.ArrayList; import java.util.LinkedList; public class LinkedListVsArrayList { public static void main(String[] args) { // LinkedList // 첫번째 노드, 마지막 노드에 대한 포인터가 있고, 연결된 노드에 대한 포인터 참조가 있다. // 다음 노드에 대한 포인트 이외에도, 이전 노드에 대한 참조도 가지고 있다. // 요소로 접근할 수 없어 상대적으로 느리다. // 요소의 추가, 삭제에 근접 노드의 포인트 참조만 변경하면 되기때문에 성능 이점이 있다. LinkedList namesLinkedList = new LinkedList(); namesLinkedList.add("Joh..
import java.util.ArrayList; import java.util.Arrays; public class ArrayVsArrayList { public static void main(String[] args) { // Arrays 특징 // - 제네릭 불가능(불안전 유형) // - 생성시 크기가 고정되며 확장하거나 축소 할 수 없다. // - 초기화 시 메모리에 할당되며, 고정크기여서 속도가 빠르다. // String[] friendsArray = new String[4]; String[] friendsArray = {"John", "Chris", "Eric", "Luke"}; // ArrayList 특징 // - 제네릭 가능(안전한 유형) // - 요소의 수에 따라 자동으로 확장 및 축소 ..
RestTemplate를 사용하여 API를 요청할 때 종종 볼 수 있는 오류이다. 인증서와 관련된 오류로써, API를 요청하는 Java의 신뢰하는 인증서 목록(keystore)에 사용하고자 하는 인증기관이 등록되어 있지 않아 나타나는 오류이다. 해결방법 모든 인증서 신뢰하기 인증서 추가 (keytool) 이번에 알아볼 방법은 1번에 해당하는 모든 인증서를 신뢰하는 방법이다. 이 방법은 조금은 위험한 방법이긴 하다. 하지만 대부분 이런 오류는 Local 환경에서 외부 API를 테스트하면서 개발할 때 주로 발생한다. Local 환경에서만 모든 인증서 신뢰하기를 적용하면 된다. import java.security.KeyManagementException; import java.security.KeyStore..
Json String to List Map // Json String to Map Map map = new ObjectMapper().readValue(JsonString변수, new TypeReference(){}); // Json String to List Map List listMap = new ObjectMapper().readValue(JsonString변수, new TypeReference(){});
API를 만들 때 부득이하게 Get요청으로 List로 요청을 보내고 싶을 때가 있다. Spring에서는 @RequestParam을 이용해서 List 형태로 데이터를 받는 것이 가능하다. @RequestParam은 , (comma)로 구분하여 데이터를 요청하게 되면, 자동으로 데이터를 , (comma) 구분하여 List 형태로 데이터를 변환한다. @GetMapping(path = "/test", produces = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity getList(@RequestParam List srnoList) throws Exception { logger.info("*** getList Params ***"); logger.info("*..
import lombok.AccessLevel; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Getter; /** * @author * @desc 결과 리턴용 object */ @Getter @AllArgsConstructor(access = AccessLevel.PRIVATE) @Builder(builderMethodName = "responseObjectBuilder") public class ResponseObject { private int resultCode; private Object resultData; private String resultMessage; public static ResponseObjectBu..
- Tomcat
- 자바
- sort algorithm
- 개발환경
- 오라클
- 프로그래머스
- 리액트
- 자바스크립트
- 회고
- 이직
- 프로그래머
- Collection
- javascript
- 소프트웨어공학
- SQL
- React
- 오라클 내장 함수
- effective java
- spring
- 제주도 여행
- Java
- 제주도 3박4일 일정
- 정렬 알고리즘
- 리액트 16
- 리눅스 명령어
- 경력관리
- Maven
- Linux 명령어
- 성능분석
- Eclipse
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |