![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/tMpAl/btq0oKiNHzL/IKmcreVvWK4m3ZiNW7DVkk/img.png)
3169 줄. 주석 설명부터 차근 살펴보았다. 그런데 그 내용 중 유니코드가 U+000000 ~ U+10FFFF 까지 지원하는데 자바의 char는 UTF-16 체계이므로 저 범위를 커버하지 못하기에 이를 표현하기 위해 surrogate pairs를 사용한다는 내용이 있었다. surrogate pairs가 무엇인가.. 용어에 대한 정리가 필요했다. 초기에 유니코드는 16비트로 표현하도록 설계되었다. 그러나 동아시아권의 문자를 체계적으로 표현하기 위해 32비트까지 확장되었는데 이 확장을 기준으로 기존 16비트로 표현 가능한 범위 U+0000 ~ U+FFFF 사이의 문자를 Basic Multilingual Plane(BMP)라 부른다. 그리고 확장된 영역 U+10000 ~ U+10FFFF 의 문자를 Suppl..
AbstractMethodMessageHandler.java 254 줄... @Override public void afterPropertiesSet() { if (this.argumentResolvers.getResolvers().isEmpty()) { this.argumentResolvers.addResolvers(initArgumentResolvers()); } if (this.returnValueHandlers.getReturnValueHandlers().isEmpty()) { this.returnValueHandlers.addHandlers(initReturnValueHandlers()); } Log returnValueLogger = getReturnValueHandlerLogger(); if..
AmazonWebserviceClientFactoryBean 은 AbstractFactoryBean를 상속하고 있으며, 이 따라서 메서드에는 createInstance()라는 메서드가 존재하며 이를 Override 하고 있다. @Override protected T createInstance() throws Exception { String builderName = this.clientClass.getName() + "Builder"; Class className = ClassUtils.resolveClassName(builderName, ClassUtils.getDefaultClassLoader()); Method method = ClassUtils.getStaticMethod(className, "s..
명시된 클래스가 클래스패스에 있는 경우에 동작하는 조건 빈.
java에 javax.annotation.Generated 가 있다. 사람이 만든 소스가 아닌, 다른 소스 자동 생성기가 생성한 코드를 지칭할 때 사용하는 어노테이션으로 확인된다. @Override 가 이 메서드는 상위 메서드를 확장하고 있음을 명시하는 것과 같다. 가령 Protobuf의 컴파일을 통해서나 기타 다른 도구를 통하여 XML 설정으로 Java 클래스를 생성했다거나 하는 식으로 도출된 Java 코드에 대하여 이 코드는 사용자가 직접 타이핑 한 것이 아닌, 기계적으로 생성되었다고 명시하는 의의를 지닌다고 본다.
Spring Bean 의 Lite Mode 가 있다. Lite mode 라 함은 Cglib 를 사용하여 바이트 코드 조작을 하지 않음을 의미한다. @Configuration 어노테이션을 지정하게 되면 Cglib가 사용되며 메서드 호출은 모두 1회만 일어나도록 바이트 코드가 수정된다. @Component 어노테이션을 지정하게되면 Lite Mode 로 동작하여 우리가 예상한 대로 코드가 수행된다. 이 때, Configuration 에 proxyBeanMethods 란 설정값을 false로 줄 수 있는데, 이 경우 Lite Mode 라 불리는 상태가 되며 Cglib를 통한 메서드 프록시가 적용되지 않는다. @Configuration public class ConfigurationClass { @Bean pub..
## 4. 리액터 핵심 특징(Reactor core features) 상당 의역. 리액터 프로젝트의 주된 구조는 리액터-코어(reactor-core)로, Java8을 타겟으로 하며 리액티브 스트림 명세에 집중한 리액티브 라이브러리다. 리액터는 퍼플리셔 역할을 하는 플럭스와 모노 두 타입을 제공한다. 플럭스 객체란 0..N개의 반응형 항목 순서에 대응하는 개념이며, 모노 객체는 단일 값이거나 값 없음(0..)의 결과에 대응하는 개념이다. 이 구분을 통해 비동기 처리의 단위가 되는 개념들을 플럭스와 모노로 표현할 수 있다. 예를 들자. HTTP 요청은 유일한 응답만을 생성한다. 따라서 숫자를 셈하는 연산에는 적합하지 아니하다. 그렇기에 이러한 HTTP 요청은 결과를 모노로 표현할 수 있다. 이는 플럭스로 표..
도입 하..... 아파치 카프카는 분산 스트리밍 플랫폼이시다. 그게 무슨 뜻인고... 스트리밍 플랫폼이라 하면 흔히들 아래의 세 기능을 갖는 것을 생각한다지. 레코드 스트림을 구독하고 퍼블리싱 할 수 있는 것. 이건 메시지 큐나 엔터프라이즈 메시징 시스템과 유사하다 볼 수 있다.장애 내결함성을 같는 레코드 스트림 저장 기능.발생한 순서대로 레코드 스트림을 처리할 수 있는 기능. 카프카는 어떤 기능이 좋은가? 크게 두 부류의 애플리케이션에 이용된다. 시스템간 혹은 애플리케이션간 데이터 수신이 보장되는 실시간 스트리밍 데이터 파이프라인 구축시스트림 데이터를 변형하거나 데이터에 반응하는 실시간 스트리밍 애플리케이션 구축 시뭐라는 뜻인가... 카프카가 어떻게 이러한 일들을 수행하는지 이해하기 위해서 카프카의 기..
여러 곳에서 데이터를 받아와 여러 곳으로 결과를 보내야 할 때가 있다. 다수의 입력을 받아 이러한 요구를 처리하는데 적합한 Logstash 파이프라인이 있다.트위터 피드와 파일피트 클라이언트에서 입력을 받아 엘라스틱서치 클러스터로 파일을 직접 전송하는 파이프라인을 만들어 볼 거란다.트위터 피드 읽기 twitter 입력 플러그인만 있으면 된다. 설정을 하기 위해 몇가지 정보를 입력한다.consumer key : 트위터 앱을 유일하게 식별할 키consumer secret : 트위터 앱 비밀번호keywords : 피드를 찾기 위한 하나 이상의 키워드oauth token : 트위터 앱 계정을 식별하기 위한 키oauth token secret : 트위터 앱 계정에 대한 패스워드https://dev.twitter...
Grok 필터 플러그인을 통한 웹 로그 분석 전단계에서 Filebeat를 통해 로그를 읽어들이는 파이프라인을 만들었다. 허나, 출력 로그 포맷이 그닥 인상적이진 않다는 것을 안다. 좀더 원하는 필드로 구분지어 특정한 형태로 로그를 출력시키길 원한다면 어떨까. 이를 위해 grok 필터 플러그인이 존재한다. 이 grok 필터 플러그인은 Logstash에 기본으로 내장된 몇 플러그인 중 하나일 뿐이다. 상세는 역시 플러그인 관리자의 공식 문서를 보길 바란다. 이 플러그인은 비구조화된 데이터를 어떤 질의가능한 구조화된 데이터로 변환하는 작업을 진행할 때 사용한다. 이 grok 필터 플러그인이 들어오는 데이터의 패턴을 찾는 기능을 제공해 주기 때문에 어떤 패턴을 이용하여 데이터를 식별할지를 결정하는 것은 당신의 ..