
AbstractAutoProxyCreatorSpring 에서는 AOP 기능을 수행하기위해 객체를 빈으로 등록하기 전에 Proxy 로 감싸진 클래스를 생성하여 빈으로 관리한다. 이때 사용되는 Proxy Library 가 CGLIB 와 Dynamic Proxy 이다. 이 중 CGLIB 가 만들어지는 과정을 코드 레벨로 확인한다. 테스트 코드 작성에 사용된 spring, aspectj 버전은 아래와 같다. implementation group: 'org.springframework', name: 'spring-context', version: '5.3.19' implementation group: 'org.aspectj', name: 'aspectjweaver', version: '1.9.9.1' Spring..

StringBuilder 와 StringBuffer 모두 AbstractStringBuilder 를 상속받아 메서드를 구현하고 있다. 두 클래스는 모두 String 을 만들기 위해 사용되지만 어떤 차이점으로 인해 구분되어있는지를 확인해본다. append() 함수로 알아보는 두 클래스의 차이 StringBuilder.java 의 append() 함수 @Override public StringBuilder append(String str) { super.append(str); return this; } StringBuffer.java 의 append() 함수 @Override public synchronized StringBuffer append(String str) { toStringCache = null..

BinaryMessageEncoder / BinaryMessageDecoder 예제 코드 public class BinaryMessageEncoderMain { public static final String TEST_FILE_NAME = "serizlied-object.avro"; public static void main(String[] args) throws IOException { AvroExampleDto before = AvroExampleDto.newBuilder().setTestNickName("Woongs").setTestTeamName("Platform").setTestName("Sondevv").build(); write(before); AvroExampleDto after = rea..

Primitive Types null : 값이 없음 boolean : a binary 값 int : 32-bit signed integer long : 64-bit signed integer float : single precision (32-bit) IEEE 754 소숫점 숫자 double : double precision (64-bit) IEEE 소숫점 숫자 bytes : 8-bit unsigned 바이트 배열 string : unicode characther 배열 Primitive 타입은 속성을 갖지 않는다. Primitive 타입 이름은 또한 type name 으로 정의된다. 그래서 예를들어 "string" Schema 는 {"type":"string"} 과 동일하다. Complex Types A..

Download Avro library Dependency org.apache.avro avro 1.11.0 Avro Plugin org.apache.avro avro-maven-plugin 1.11.0 generate-sources schema ${project.basedir}/src/main/avro/ ${project.basedir}/src/main/java/ org.apache.maven.plugins maven-compiler-plugin 1.8 1.8 Defining a schema Avro 의 Schema 는 JSON 으로 정의되어있다. Schema 는 Primitive type 과 Complext Type 으로 구성되어있다. {"namespace": "example.avro", "type"..
Introduction Apache Avro 는 데이터 직렬화 시스템이다. Avro 는 아래 기능들을 제공한다. 풍부한 데이터 구조 간결하고 빠른 Binary Data 포멧 영구 데이터를 저장하기 위한 컨테이너 파일 Remote 프로시져 콜 (RPC) 다양한 언어와 간단하게 연동 가능. RPC 프로토콜을 사용하거나 구현하거나 데이터를 읽거나 쓰기 위해 코드 Generation 이 필수는 아니다. 코드 Generation 은 정적인 타입을 가지는 언어를 구현할때 가치가 있는 최적화 옵션이다. Schemas Avro 는 Schema 에 의존한다. Avro 데이터를 읽을때는 Avro 데이터가 쓰여질 당시에 사용되었던 Schema 가 필요하다. 이것은 각 데이터가 per-value 오버헤드 없이 쓰여질 수 있도..

쿼리를 정의했다면, 카산드라 테이블을 설계한 준비가 된 것이다. 첫번째로 각 쿼리에 포함되어있는 논리 모델을 포함하는 테이블을 만들고 구상중인 모델의 엔티티와 관계를 그린다. 각 테이블의 이름을 지정하려면 주로 조회하는 엔티티 이름으로 시작하는 이름을 지을 수 있다. 다른 관계가 있는 에티티의 요소로 Query 를 한다면 이 두가지 테이블의 이름을 붙이고 by 로 구분을 지을 수 있다. 예를 들어 hotels_by_poi 다음에 테이블의 PK 를 결정하고 추가 Parititon Key 를 Query 요소를 기반으로 추가하고 Clustering 요소를 고유성과 필요한 정렬을 제공하기 위해 추기해야한다. PK 를 설계하는 것은 특히 중요하다. PK 가 각 Partition 에 어떻게 저장될지 그리고 Disk..

이 호텔 도메인을 위해 Query 우선 접근 방법으로 데이터 모델링을 해보자. Application 을 위한 UI 디자인은 쿼리를 추출해내기 위한 좋은 결과물이다. 당신이 프로젝트 Stakeholder 와 UX 디자이너와 논의한다고 가정해보자. 그 대화를 통해 아래오 같은 Query 들을 추출해낼 수 있을 것이다. Q1. 호텔 근처의 관광지는? Q2. 주어진 호텔의 이름과 위치와 같은 정보는? Q3. 관광지 근처의 호텔은? Q4. 주어진 기간동안 이용 가능한 객실은? Q5. 객실의 별점과 어메니티는? 이와 같이 쿼리를 속기헤보는 것은 전체를 설명하는 것보다 도움이될 때가 종종 있다. 여기에 리스트된 Query 들은 Q1, Q2, 등등 으로 넘더링되어있다. 이제 Application 이 성공하여 고객이 호..

데이터 모델링을 하기 위해 호텔 도메인을 이용해보자. 호텔에 객실에 머무는 게스트가 있고 각 호텔은 여러개의 Room 을 가지고 있다. 게스트가 예약한 Room 에 대한 정보가 있고 각 Room 에서 제공되는 Amentity 가 있다. 관심이 있을만한 "공원", "박물관", "쇼핑" 과 같이 게스트들이 관심있어할만한 데이터 또한 Point Of Interest 에 저장된다. RDBMS Design 만약 당신이 새로운 데이터 기반 Application 을 구축한다면, 적절한 normalized 테이블과 FK 를 사용하여 데이터를 모델링할것이다. 아래 도표는 관계형 데이터베이스를 사용한 데이터 모델링을 나타낸다. 관계형 데이터베이스는 Many to Many Join 을 활용한다. Hotel Points , ..
카산드라는 테이블에 데이터를 저장한다. 각 테이블은 Row 와 Column 으로 구성되어있다. CQL 은 테이블에 저장된 데이터를 찾기위한 Query 로 사용된다. 카산드라 데이터 모델은 Query 에 최적화 되어있다. 카산드라는 관계형 데이터베이스에서 사용하는 관계형 데이터 모델링을 지원하지 않는다. What is Data Modeling? 데이터 모델링은 엔티티와 엔티티간의 관계를 식별하는 과정이다. 관계형 데이터베이스에서는 다른테이블의 데이터와 연관짓기 위하여 FK 를 테이블에 지정하였다. Application 에서 데이터베이스로 만드는 쿼리는 테이블의 구조에 기인하고 테이블 조인에 의해서 데이터가 조회된다. 카산드라에서는 데이터 모델링은 Query-Driven 이다. 데이터 접근 패턴과 Appli..
- Total
- Today
- Yesterday
- ResultSet
- Seperate Chaining
- mariada-connector
- reative
- MariaDB
- mariadb-connector-j
- router
- custom config data convertion
- N+1
- dynamodb
- HashMap
- msyql-connector-java
- circurit breaker
- ConcurrentHashMap
- RouteDefinition
- Lazy
- AbstractMethodError
- getBoolean
- spring cloud gateway
- aurora
- DyanomoDB
- notifyAll()
- GlobalFilter
- reactor
- notify()
- wait()
- referencedColumnName
- rate limit
- RoutePredication
- Flux
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |