일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- iBatis
- 자바 병렬스트림
- generic
- parallelStream
- spring cloud
- 멀티스레드
- mismatch
- bindmismatch
- ##
- 바인딩
- circuit breaker
- generic return
- 제네릭 리턴
- #
- Multi Threading
- 타입캐스트
- RESTful API
- 제네릭
- hystrix
- binding
- iBatis # $
- Netflix Hystrix
- $$
- $
- Type Cast
- java
- oracle
- bind mismatch
- ForkJoinPool
- 하이스트릭스
- Today
- Total
목록분류 전체보기 (5)
Milk's development review

MSA 서비스가 늘어나면서 개발자는 각 모듈간 장애 전파, 연쇄에 대한 처리에 좀 더 신중을 기울여야합니다. 오늘은 API Consumer입장에서 fail over관리를 효율적이고 일관되게 할 수 있도록 도와주는 Hystrix에 대해서 간단히 정리해보겠습니다. Hystrix란 이미 알고있는 분들도 계시겠지만, Hystrix는 Netflix에서 Circuit Breaker Pattern을 구현한 라이브러리 입니다. MSA에서 분산된 서비스간 통신이 원활하지 않은 경우에 각 서비스가 장애내성과 지연내성을 갖게하도록 도와줍니다. 사용해보기 - Supplier Supplier는 아래와 같이 단순한 String을 return해주는 API를 작성했습니다. - Consumer Hystrix는 스프링에서 스프링 친화적..

개발 중 다음과 같은 코드를 만났습니다. new ForkJoinPool(10).submit(() -> { integerList.parallelStream().forEach((integer) -> { ... parallelStream이 내부적으로 ForkJoinPool을 사용하는데 어째서 위와 같은 코드가 작성되었는지 의문이 들었습니다. 먼저 ForkJoinPool에 대해서 간단하게 정리해보겠습니다. 아래 내용은 java docs에서 발췌했습니다. An ExecutorService for running ForkJoinTasks. A ForkJoinPool provides the entry point for submissions from non-ForkJoinTask clients, as well as ma..
ibatis의 sql문에는 보통 변수처리를 해준다.그때 사용하는 binding 방법이 ##과 $$을 이용한 방법이다. 결론부터 말하자면 다음과 같다. 1. DB관점에서 ##은 소프트 파싱, $$은 하드파싱2. JDBC관점에서 ##은 파라미터 바인딩, $$은 문자열 replace 정도로 말할 수 있겠다. 한 가지 짚고 넘어가야 할게 ibatis의 모든 sql문은 preparedStatement로 수행된다.즉, ##이든 $$이든 preparedStatement로 sql문이 수행된다. 예를 들어 아래와 같은 쿼리가 있다고 하자. UPDATE test SET column1 = #var1# // var1은 String "aaa" , column2 = #var2# // var2는 String "bbb" WHERE ..
oracle에서는 sql문장 뿐 아니라 실행계획까지 같다고 하더라도 하드 파싱하는 경우가 있는데 다음과 같다. 1. 공백 문자 또는 줄바꿈2. 대소문자 구분3. 테이블 Owner명시4. 주석5. 힌트 사용6. 조건절 비교값 (바인딩 처리 여부) 1 ~ 4번은 쉽게 말해 쿼리문의 스트링이 하나라도 틀어지면 오라클은 다른 문장으로 받아들인다고 볼 수 있다.5번은 오라클 옵티마이저의 실행 계획자체를 사용자가 컨트롤 하므로 당연히 오라클 입장에서는 다른 sql문장이다. 이번에 다룰 내용은 6번 조건절 비교값에 대한 부분이다. 아래 두 쿼리를 보자. SELECT * FROM test WHERE a=1; SELECT * FROM test WHERE a=2; 조건에 대입되는 값만 다를 뿐이지만 오라클입장에서는 완전하..
java에서는 primitive type을 제외한 모든 클래스는 Object의 서브 클래스들이다.그래서 다양한 type의 오브젝트를 return하고 싶을 때 return type을 Object로 설정 해주고는한다.예제 코드로 보면 아래와 같다. private Object testMethod(String type) { Object returnObejct = method(type); : : return returnObject; } method() 는 argument로 전달된 type에 따라서 다른 형식의 오브젝트를 리턴 해 주는 팩토리 메서드라고 가정하자.위와같은 testMethod()는 다양한 타입의 object를 리턴 할 것이다. 하지만 testMethod()를 사용하는 클라이언트 메서드는 Object ..