본문 바로가기

2019/05

(6)
병렬처리와 동시성 멀티 쓰레드 프로그래밍을 하는중에 병렬처리와 동시성에 대하여 많은 글들을 보고 확인할수있다. 여기서 병렬처리와 동시성의 문구가 다소 혼돈될수있는데 나또한 병렬처리와 동시성이 같은 이야기라 생각했다. 이 두가지의 개념은 각각 이해하여야 하며, 같은 의미로 사용해서는 안대는 것이다. 간단하게 정리하면 다음과 같다. 동시성이란(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..
Mysql 이모지(이모티콘) 4byte 적용 Mysql 이모지(이모티콘) 4byte 적용 Error updating database. Cause: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x80\xF0\x9F...' for column 'report_campaign_name' at row 1 ### The error may involve com.aereport.mybatis.mapper.ReportCampaignManagementMapper.insertReportCampaign-Inline ### The error occurred while setting parameters ### SQL: INSERT INTO report_campaign_management( report_numb..
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() !..