Programing 101

추상화 (Abstraction)

추상화(Abstraction) 컴퓨터 과학에서 추상화(abstraction)는 복잡한 자료, 모듈, 시스템 등으로부터 핵심적인 개념 또는 기능을 간추려 내는 것을 말한다. - https://ko.wikipedia.org/wiki/추상화_(컴퓨터_과학) 추상화가 중요한 이유 인간이 단기로 기억할 수 있는 아이템의 개수은 7개이다 - 밀러의 매직 넘버 7 전체 시스템을 전부를 다 기억을 할수 있는 사람은 거의 없다 (있을수도) 전체를 기억을 못해도 나무 대신 숲을 알고 있으면 개발을 할때 큰 문제가 없다. 추상화 예제 자바의 Interface / Abstract class 자바에서 interface 또는 Abstract class를 활용하여 내부 작동을 몰라도 사용할수 있도록 개발을 할수 있다. 객체지향개발..

Programing 2020.09.22

Spring Batch - Parallel Processing

시작하기 전에 Spring Batch를 통해 배치 서비스를 개발을 할때 성능이 극대화할 필요가 있을수가 있다. Thread을 이용하여 Parallel Processing을 하는 방법에 대해 알아보자. Multi-threaded step @Bean public TaskExecutor taskExecutor(){ return new SimpleAsyncTaskExecutor("spring_batch"); } @Bean public Step sampleStep(TaskExecutor taskExecutor) { return this.stepBuilderFactory.get("sampleStep") .chunk(10) .reader(itemReader()) .writer(itemWriter()) .taskExe..

Spring Framework - Bean Scope

Singleton 스프링 컨테이너에 관리되는 빈의 기본 Scope 스프링 컨테이너에서 단 하나의 객체만 존재를 한다. Prototype Singleton 가 다르게 다수의 객체가 존재를 할수 있다. 스프링 컨테이너에서 Bean의 Life Cycle를 전부 관리를 하지 않는다. 즉 사용 Reference가 없는 GC에 의해 객체가 정리가 된다. Lifecylce에 의해 정의되는 종료 메서드가 호출이 되지 않는다. (@Predestory 등) Request Http Request 생명주기 안에 유효한 Bean, 즉 Web-aware Spring Application Context에서 유효하다. Session Http Session 생명주기 안에 유요한 Bean, Request와 동일하게 Web-aware A..

Spring Framework, IoC, DI

Spring Framework 엔터프라이즈급 애플리케이션을 만들기 위한 경량솔루션이며 많은 기능을 제공하며 자바 애플리케이션 개발을 위한 포괄적인 인프라스트럭쳐를 제공하는 자바 플랫폼이다. 스프링은 당신이 애플리케이션에 집중할 수 있도록 인프라스트럭쳐를 제공한다. IoC (Inversion of Control) - 제어의 역전 개발자가 객체 생성을 직접하지 않고 컨테이너 (Container)에서 객체 생성/소멸 등을 관리하는 방식 개발자가 직접 컨트롤 할 수 없고, 컨테이너가 (Container)관리를 하기 때문에 제어의 역전(Inversion of control)이라고 표현함. Spring에서 IoC Container인 ApplicationContext에서는 bean xml 또는 annotation을 ..

JdbcTemplate, RowCallbackHandler 이용하기

JdbcTemplate, RowCallbackHandler 이용하기리턴되는 결과값이 사이즈가 큰 경우에는 직접 ResultSet를 받아서 사용할수가 있다.ex) Hive에 리턴되는 값을 처리하는 프로세스 public class RowCallbackHandlerImpl implements RowCallbackHandler { public void processRow(ResultSet rs) throws SQLException { // do something with resultset }} jdbcTemplate.query(sql, values, new RowCallbackHandlerImpl);

AOM (Adaptive Object Model)

AOM (Adaptive Object Model)Active Object Model, Dynamic Object Model 이라고도 불림, 동적인 객체 모델고객별로 다른 요구사항을 수용할 수 있는 설정 가능유연성이 높고 실시간으로 적용이 가능한 애플리케이션을 개발할수 있는 아키텍처 스타일기본 구조와 패턴AOM 아키텍처의 기본적으로 구조 (Class Diagram)존재하지 않는 객체를 관리할때 EntityType에 새로운 객체가 등록이 되고, 해당 객체에 대한 속성도 새로운 타입으로 등록이 된다.특별한 Rule이 필요한 경우에는 MetaLevel 안에서 Rule 클래스를 이용하여 필요한 행위를 하게 된다.Type Object 패턴인스턴스들를 해당 인스턴스들의 클래스로부터 분리시킴으로써 그 클래스들이 하나의..

Programing 2018.12.29

Deadlock

Deadlock교착상태두 개 이상의 작업이 서로 상대방의 작업이 끝나기 만을 기다리고 있기 때문에 결과적으로 아무것도 완료되지 못하는 상태를 가리킨다. 조건상호배제(Mutual exclusion) 프로세스들이 필요로 하는 자원에 대해 배타적인 통제권을 요구한다.점유대기(Hold and wait) 프로세스가 할당된 자원을 가진 상태에서 다른 자원을 기다린다.비선점(No preemption) 프로세스가 어떤 자원의 사용을 끝낼 때까지 그 자원을 뺏을 수 없다.순환대기(Circular wait) 각 프로세스는 순환적으로 다음 프로세스가 요구하는 자원을 가지고 있다.

Programing 2018.12.21

Change Data Capture

Change Data CaptureDatabase 삽입(insert) 업데이트(update), 삭제(delete)를 기록하는 기능주로 Data-warehouse에서 주로 사용되는 기능. 새로 생성된 데이터 및 변경된 데이트를 DW에 저장을 하기 위해 사용데이터 수집 방법데이터의 시간정보(마지막 업데이트 시간)을 활용한다.데이터의 버전 정보를 활용한다.낙관적인 잠금데이터의 status 정보를 활용한다.boolean 값으로 데이터가 변경되어있다는 것을 알리는 status를 포함시킨다.테이블의 Trigger 기능Event 프로그래밍데이터베이스의 Log를 스캔한다 (Mysql binlog 등)데이터베이스마다 log format이 달라 구현 방식이 달라지나 기존의 application이나 schema에 영향이 없..

Programing 2018.12.16