분류 전체보기 194

Java Jdbc를 이용한 데이터베이스 접근하기

Java Jdbc를 이용한 데이터베이스 접근하기Hive를 사용할때 결과값이 몇천건만인 경우에는 메모리가 부족해서 GC 에러가 발생이 될수가 있다.여러번을 쪼개서 가지기 오기에는 Hive 특성상 일정한 시간 (Map, Reduce로 전체 데이터를 로딩을 처리하는 과정)이 걸리기 때문에 속도가 느리다쿼리를 1번만에 처리를 하고 메모리가 부족하지 않게 하는 방법은 JDBC의 ResultSet를 활용을 하면 된다.Low Level 접근 방식중 하나인 ResultSet 디비로 부터 fetchSize만큼 데이터를 가지고 온다.데이터의 결과가 큰 경우에는 ResultSet을 이용하여 Chunk 단위로 파일을 생성하는 방법으로 할수가 있다.1. Connection 생성하기# DriverManager를 통해 Connec..

Programing/Java 2018.10.23

Akka Actor Hierarchy

Akka Actor Hierarchysystem.actorOf()로 만들어진 Actor user guardian에서 만들어 진다.getContext().actorOf()를 이용하여 자식(Child) Actor를 생성을 할수 있다./ - root guardian이라고 불린다. 시스템에 있는 모든 Actor의 부모 엑터이다./user - 유저가 생성된 모든 엑터의 부모 엑터이다./system - system guardianExample - Print reference부모/자식 관계의 actor를 알아보는 방법중에 제일 쉬운 방법은 ActorRef의 Reference를 출력하는 방법이다.package com.lightbend.akka.sample; import akka.actor.AbstractActor;im..

Programing/Akka 2018.10.22

Akka Actor Life Cycle

Akka Actor Life CycleActor는 UID, Mailbox, Path를 가지고 있다.외부에서는 ActorRef를 통해 접근을 한다., Path, UID를 가지고 있는다.객체를 직접 접근하지는 못한다 (Hides the instance)ActorSelection를 통해 ActorRef를 가지고 온다.actorOf를 통해 액터를 생성을 할수 있다.preStart() method : 엑터가 시작되고 첫번째 메시지를 받기 전에 실행이 된다postStop() method 엑터가 중단될때 시작된다, 실행이 되후 메시지를 받지 못한다.resume와 restart의 차이는 새로운 Actor를 생성을 하나 안하나의 차이이다.context.stop() 또는 Posion Pill를 이용하여 Actor를 종료할..

Programing/Akka 2018.10.21

Spring 자체 인스턴스화 된 객체에 종속성을 주입하는 방법

Spring 자체 인스턴스화 된 객체에 종속성을 주입하는 방법private @Autowired AutowireCapableBeanFactory beanFactory; public void doStuff() { MyBean obj = new MyBean(); beanFactory.autowireBean(obj); // obj will now have its dependencies autowired.} AutowireCapableBeanFactory의 autowireBean을 이용하여 자체 인스턴스화 된 객체에 종속성을 주입을 할수가 있다. 직접 ApplicationContext를 접근해서 하는 방법 방법AutowireCapableBeanFactory factory = applicationContext.ge..

Event Sourcing

Event Sourcing 애플리케이션의 모든 상태변화를 순서에 따라 이벤트로 저장을 한다.Event StoreImmutableAppend Only모든 상태 변화의 이벤트를 저장을 한다.최종 상태를 찾기위해서는 모든 이벤트를 replay를 해야 되기 떄문에 이벤트가 많아지는 경우는 속도가 조회 속도가 느릴수가 있다.이 경우에는 snapshot를 통해 최종 상태를 따로 저장을 한다. Snapshot이벤트의 최종 상태를 저장한다. 장점모든 이벤트를 다 저장을 하기 때문에 100% 정확한 검증 로깅을 할수 있다. CQRS상태 변화 이벤트를 처리하는 Command과 조회하는 Read를 분리

Programing 2018.10.16

순서도 - Flowchart

순서도 - Flowchart다이어그램의 종류 중 하나로 여러 종류의 상자와 이를 이어주는 화살표를 이용해 명령의 순서를 보여주는 알고리즘 혹은 프로세스를 말한다. 데이터의 흐름에서는 DFD (데이터 흐름도)가 대신 사용 된다.종류System Flow chart자료가 정보를 변환, 처리되는 과정을 나타내는 순서도데이터의 흐름을 중심을 도식화 한것Program Flow Chart프로그램을 작성할때 일반적으로 쓰는 순서도개략순서도전체적, 종합적으로 나타낸 순서도논리적으로 이상이 없는 검토하고 이어서 상세 순서도를 작성을 한다.상세 순서도프로그램 내부를 상세히 나태는 순서도모든 조작 자료의 이동 과정을 순서대로 나타내 그대로 코딩할 수 있도록 상세하게 작성한 순서도

설계 2018.10.15

Redis 자료구조

Redis 자료구조Remote Dictionary System메모리 기반의 Key/Value Store동그라미Key/Value Store기본적인 Key/Value Store특정 키 값에 값을 저장하는 구조DataTypeValue가 단순한 Object가 아니라 자료구조를 갖는다.String최대 512mbyteSetstring의 집합set간의 연산을 지원한다. 교집합, 합집합, 차이를 매우를 빠른 시간내에서 추출할 수 있다.Sorted Setset에 score 라는 필드가 추가된 데이터 형이다score 범위 따른 쿼리가 가능하다.Hashesvalue 내에서 field/string value 쌍으로 이루어진 테이블 저장하는 데이터 구조체PK 1개와 String 필드 하나로 이루어진 테이블ListString 들..

Database 2018.10.14

Akka Pulling Pattern

Akka Pulling Pattern 일반적인 시나리오Email 마켓팅 타겟 고객을 DB에서 읽는다. (Customer Target Read Actor) FASTEmail 컨텐츠를 생성을 한다. (Email Content Create Actor) FASTEmail를 보낸다. (Email Sender Actor) SLOWActor를 이용하여 간단한 구조의 시스템을 제작하는 경우 위와 같은 시나리오의 시스템을 제작을 할수 있다.Email Send할때 속도가 느리기 때문에 Email를 보내는 Actor가 Mailbox가 Overflow가 되거나 GC로 인해 시스템이 정상 작동이 되지 않을수가 있다.Pulling Pattern을 적용한 시나리오작업을 하는 Worker Actor들이 있다.Worker Actor는..

Programing/Akka 2018.10.13

Amazon VPC

Amazon VPC VPC 및 서브넷Virtual Private Cloud (VPC)AWS 계정 전용 가상 네트워크AWS클라우드에서 다른 네트워크와 논리적으로 분리되어 있다.IP 주소 범위서브넷을 추가하고, 보안 그룹, 라우팅 테이블을 구성한다.서브넷VPC의 IP 주소 범위지정된 서브넷으로 AWS 리소스를 시작할수 있다.인터넷이 연결이 되어있는 경우 퍼블릭 서브넷인터넷이 연결이 되어있지 않는 경우 프라이빗 서브넷서브넷의 단위 AZ 단위 인터넷 액세스기본 VPC에서는 인터넷 게이트웨이가 포함, 기본 서브넷은 퍼블릭 서브넷기본이 아닌 서브넷에서 시작한 인스턴스에 대해 해당 VPC에 인터넷 게이트 웨이를 추가하고 인스턴스에 탄력적 IP주소를 연결하여 인터넷 액세스를 가능하게 한다.NAT를 통해 여러개의 프라이..

인프라/AWS 2018.10.12

Guava Eventbus @AllowConcurrentEvents

Guava Eventbus @AllowConcurrentEvents@Subscribe@AllowConcurrentEventspublic void receive(String message) throws InterruptedException {log.info("Receiving message... {}", message);receiving(3, message);log.info("Done");}@Subscribe 만 쓴 경우에는 synchronized로 감싸져서 호출이 되기 때문에 멀티 쓰레드에서 동시 호출이 막혀있다. 이는 성능에 엄청난 영향을 미치게 된다.@Subscribe 매서드를 Thread-Safe하게 개발을 한뒤 @AllowConcurrentEvents를 붙어 주면 멀티 쓰레드 상황에서 문제없이 사..

Programing/Java 2018.10.10