본문 바로가기

JAVA

(41)
병렬처리와 동시성 멀티 쓰레드 프로그래밍을 하는중에 병렬처리와 동시성에 대하여 많은 글들을 보고 확인할수있다. 여기서 병렬처리와 동시성의 문구가 다소 혼돈될수있는데 나또한 병렬처리와 동시성이 같은 이야기라 생각했다. 이 두가지의 개념은 각각 이해하여야 하며, 같은 의미로 사용해서는 안대는 것이다. 간단하게 정리하면 다음과 같다. 동시성이란(concurrency)? 동시에 여러 작업을 진행하고자 할때. 동시에 여러 작업을 수행 한다고하여 병렬로 실행되는것과는 다르다. A가 실행될때 B 가 멈추고 B가 실행될때는 A가 멈추는 형식 TASK1 ------ CPU TASK2 ------ CPU TASK3 ------ CPU TASK4 ------ CPU 병렬성이란(paralleism)? 하나의 작업을 하위 작업으로 나누어 동시 ..
CompletableFuture 1. CompletableFuture 하나씩 순차적으로 스테이지를 실행하고자 할때 사용하면 좋다. 병렬처리작업중 순차적으로 작업을 진행해야 하는경우 Callback 의 늪에 빠질수 있다, 이때도 콜백업이 사용가능. CompletableFuture를 사용하면. 1.7에서 자공하는 Feture 의 기능으로 async 작업이 가능 하지만, isDone() 혹은 get()을 이용 하여 결과값을 다음 스테이지 에서 사용할때 Blocking으로 변경되는 단점을 보안한다. A Future that may be explicitly completed (setting its value and status), and may be used as a CompletionStage,supporting dependent functi..
API call back off time(재요청 타시간) back off 알고리즘 통신할때 충돌이 일어난 경우 일정시간동안 기다린후 다시 호출 하는 방식 /** * API 실행 실패에 대한 재시도 정책 적용 * Backoff Time = 재시도 횟수 * 3 SEC , 최대 3회 * * @param apiRequest * @return * @throws Exception */ private String apiCall(APIRequest apiRequest) throws Exception { int tryCount = 0; boolean isSuccess = false; String responseData = null; do { try { tryCount++; responseData = apiRequest.executeBlock(String.class); isSu..
java throws bubble up 예제 예외사항을 호출한 메소드에서 처리하고자 하는경우 예외 사항을 상위로 올려준다. import com.aereport.adtect.common.exception.custom.AEBaseException; import com.aereport.adtect.common.exception.custom.APIBaseException; import lombok.ToString; import org.junit.Test; /** * * Description : throws bubble up test * * * * * @author skan * @version Copyright (C) 2018 by skan. All right reserved. * @since 2018-11-20 */ public class ThrowsTe..
java 8 stream throw exception bubble up (예외사항 전파) 스트림 사용시에 상위 메소드로 익셉션을 전파하고 싶을때 사용 try { customIds.forEach(customId ->{ List ads = null; try { ads = fbAdAPIService.findByAllAds(customId); adTemps.addAll(ads); fbAdDao.fbAdMetaDataSave(ads); } catch (Exception e) { log.error("페이스북 광고(소재) 데이터 수집 실패 = customerId = {}", customId ); throw new RuntimeException(e); } }); } catch (RuntimeException e) { // FIXME : Ad - throw bubble up if (e.getCause() !..
linux java 설치 java 설치 1.1 jdk 확인 > rpm -qa | grep jdk > yum list installed *jdk-devel 1.2 JDK 다운로드 및 설치 > wget --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u191-b12/2787e4a523244c269598db4e85c51e0c/jdk-8u191-linux-x64.rpm > yum localinstall jdk-8u191-linux-x64.rpm JAVA HOME PATH 설정 2.1 시작 설정 파일 변경 > vim /etc/environment or or vim /etc/profile export ..
keytool SSL 사설 인증서 / Spring boot ssl ## java keytool SSL 사설 인증서 ### example 1 1. keystore 생성 > keytool -genkey -alias skan_https_ssl -keypass password1234!!! -storepass password1234!!! -storetype PKCS12 -keyalg RSA -keystore d:\data\https_ssl\.keystore 2. keystore 생성 후 *.cer 내보내기 (cer생성) > keytool -export -alias skan_https_ssl -storepass password1234!!! -file d:\data\https_ssl\server.cer -keystore d:\data\https_ssl\.keystore 3. 인증서..
blockingqueue method ## BlockingQueue Method 요소를 검샐할때 큐가 비어 잇지 않을때 까지 대기하는 작업을 추가로 지원하고 요소를 저장할때 큐에서 공간을 사용할수있을때 가지 대기한다. BlockingQueue는 Queue interface 를 상속 받고 있있다. 연산처리시 다음 네가지 방법으로 제공된다. 하나, 예외를 발생시킨다. 둘 , 특수값 null 또는 false 를 반환한다. 셋, 작업이 성공할때 까지 무기한 차단. 넷, 작업을 포기 하기전에 주어진 최대 시간만 제한 차단. -------------------------------------------------------------------------------- | Throws exception | Special value | Blocks | T..