본문 바로가기
  • Code Smell

Language25

[JAVA] SSLHandshakeException 발생 시 대처 [JAVA] SSLHandshakeException 발생 시 대처 정말 짜증나는 에러다. 1. JDK의 SSL 인증서 넣기 public 망이 아닌 사내 망에서 외부 통신 시 필요 할 수 있다. 보통은 인트라 망이면 SSL 인증서 파일을 제공할텐데 그 인증서 파일을 JDK에 추가 할 수 있다. 설치 된 JDK 홈 아래 lib/security 에 있는 cacerts 라는 파일에 인증서를 추가한다. Windows 기본 설치 경로라면 C:\Program Files\Java 아래 구성되어 있을 것이고 (자세한 사항은 환경변수를 참조하면 된다.) Mac 기본 설치 경로라면 /Library/Java/JavaVirtualMachines 아래 있을 확률이 높다. 예를들어 Mac 기준이라면 /Library/Java/Jav.. 2020. 10. 7.
[Java] Enum 멤버 변수로 Enum 객체 찾기 Enum 멤버 변수로 Enum 객체 찾기 예를들어 결과 코드를 정의한 enum이 있다. public enum ExamEnums { SUCCESS("200", "성공"), WAITING("300", "대기 중"), FAIL("500", "실패"), ETC("999", "기타 에러"); @Getter private final String code; @Getter private final String description; ExamEnums(String code, String description) { this.code = code; this.description = description; } } 어느 REST에서 resultCode를 보내주고, 그 코드와 설명을 enum에 정의했을 때 위와 같이 작성 할 수.. 2020. 9. 29.
[JAVA] Java Collections 생성과 동시에 초기화 Java Collections 생성과 동시에 초기화 출처 JavaCodeExamples 대표 Collections (Map, List, Set) 을 선언과 동시에 초기화 하는 방법. 클래스 인스턴스 시 생성자에서 주입하지 않고 고정으로 들어가는 값을 세팅하거나 할때 필요한 경우가 있다. 기본방법 private Map map = new HashMap() { { put("key1", "value1"); put("key2", "value2"); } }; private List list = new ArrayList() { { add("1"); add("2"); } }; private Set set = new HashSet() { { add("1"); add("2"); } }; List와 Set은 Arrays 클.. 2020. 6. 19.
[JAVA] CompletableFuture - 예제2 CompletableFuture 예제1 공통으로 사용할 로직 public class AsyncTest { public static final Logger log = LoggerFactory.getLogger(AsyncTest.class); public CompletableFuture task; public static void sleep(long time) { try { Thread.sleep(time); } catch (InterruptedException e) { e.printStackTrace(); } } public static void log(String s) { log.info(s); } public static void main(String[] args) { AsyncTest asyncTes.. 2020. 5. 26.
[JAVA] CompletableFuture - 예제1 CompletableFuture 비동기 처리를 위해 JAVA 5에서 Concurrenty API의 Executor, Future, Callable이 등장 했지만 non-blocking 하지 않았다. 이걸 개선하려 Spring framework 4에서는 Future Interface를 개선한 ListenableFuture를 등장 시켰고, AsyncRestTemplate의 Return Type으로 이용 되었다. 이후 JAVA 8의 가장 큰 특징인 lambda와 functinal interface와 결합 된 CompletableFuture가 등장하면서 non-blocking 처리가 쉬워졌다. Spring의 ListenableFuture과 JAVA 8의 CompletableFuture 비교 아래 예제는 JAVA.. 2020. 5. 21.
[JAVA] Optional 총정리 및 예제 Optional 총정리 및 예제 Java의 Optional Class는 NullPointerException에 유연하게 대처 할 수 있도록 JDK 8부터 지원하기 시작했다. if-else 지옥에 빠지지 않도록 하며, 객체의 null check를 메소드 호출로써 대체할 수 있다. (썸네일용) 대충 이렇게 생겼다. 선언과 instance Optional의 원형은 Optional 형태로 제네릭 T를 감싸고 있다. 이 T의 자료형이 null check의 타겟이 된다. public static Optional of(T value) { return new Optional(value); } public static Optional ofNullable(T value) { return value == null ? emp.. 2020. 5. 16.
[JAVA] No serializer found for class X.Y.Z and no properties discovered to create BeanSerializer No serializer found for class X.Y.Z and no properties discovered to create BeanSerializer ObjectMapper에 의한 객체를 문자열로 바꿀 때, 유효한 접근자를 찾을 수 없거나 결정할 수 없을 때 발생하는 에러이다. 또는 직렬화 할 어노테이션이 없는 경우에도 발생 할 수 있다. 기존 ObjectMapper 설정 public static Optional mapToString(Map map) { try { return Optional.of(new ObjectMapper().writeValueAsString(map)); } catch(Exception e) { log.error("Convert Map to Json Error", e); .. 2020. 3. 15.
[ALGORITHM] Binary Search : 이진탐색 [ALGORITHM] Binary Search 업다운 게임과 비슷하다. 찾으려는 값을 한가운데 값((min + max) / 2)과 비교하고 작을 경우 min ~ ((min + max) / 2) 까지 다시 비교 클 경우 ((min + max) / 2) ~ max 까지 다시 비교 첫 탐색에 대한 로직만 구현하고 이후 비교문에서는 재귀함수 방법을 사용한다. 들어오는 배열은 오름차순(sort)으로 정렬 되어있어야 한다. 구현체 public void binarySearch(int[] ar, int start, int end, int search, int cnt) { int index = (start + end) / 2; if(start > end) { System.out.println("not found sear.. 2020. 1. 15.
[JQUERY] 메소드 이벤트 발생시키기 [JQUERY] 메소드 이벤트 발생시키기 예를들어 checkbox의 change 이벤트를 등록 했을 때 다른 이벤트에서 checkbox의 change 이벤트를 발생시키는 방법 EX) checkbox 태그 ... ... ... ... EX) radio button 태그 ... ... ... checkboxFamily라는 name의 checkbox의 checked가 변경 되었을 때 console을 출력하고 아래 TODO 로직을 실행하는 이벤트 $("input:checkbox[name='checkboxFamily']").change(function() { console.log("checkbox changed .. value : " + $(this).val()); //TODO }); 위의 경우 b.. 2020. 1. 15.