Programing 101

절자치향 프로그래밍과 객체지향 프로그래밍

절자치향 프로그래밍과 객체지향 프로그래밍절자치향 프로그래밍프로그램 순서와 흐름을 먼저 세우고, 필요한 자료구조와 함수를 설계하는 방식객체지향 프로그래밍자료 구조를 중심으로 한 모듈을 먼저 개발을 한뒤 이들의 실행 순서를 흐름 짜는 방식.객체지향 3대 특성캡슐화내부의 데이터 (attribute)를 감추고, 메서드를 통해 상호작용상속이미 작성된 클래스를 이어 받아 클래스를 생성하는 기법기존 코드를 재활용하여 사용한다.다형성하나의 이름(방법)으로 여러가지 상황에 대처하는 기법인터페이스는 동일하지만 실제 작동이 다르게 구현하는 방법. 그외 궁금점객체지향도 실행순서가 있는데 절차지향과의 차이는 점은?절자지향은 순서에 집중이 되어있다보니 문제의 표현 대상(해결하는 대상)이 정확하게 표현이 되어 있지 않다.객체지향은..

Programing 2018.12.13

Akka Coordinated Shutdown

Akka Coordinated ShutdownAkka의 Actor System 종료 과정에서 특정 Actor 또는 서비스에 대해 작동을 요청을 할수가 있다.밀린 메시지 처리 및 Connect 정리 등에 활용 될수 있는 기능이다. Configuration# CoordinatedShutdown is enabled by default and will run the tasks that# are added to these phases by individual Akka modules and user logic.## The phases are ordered as a DAG by defining the dependencies between the phases# to make sure shutdown tasks are ..

Programing/Akka 2018.12.11

Gradle, Maven

Gradle, MavenMavenApache Maven쉬운 빌드일정한(Uniform)한 빌드 시스템2004년에 출시Gradle범용 빌드 도구멀티 프로젝트에 사용하기 좋음Groovy 빌드 스크립트Apache Ivy를 기반으로한 강력한 의존성 관리빌드를 구축하는 풍부한 도메인 모델원격 저장소나 pom, ivy 파일 없이 의존성 관리 지원Maven과 GradleGradle이 좋은점Gradle의 빌드 스크립트(Groovy based) 정의가 Maven의 xml에 비해 정의하기가 쉽다.Gradle의 Groovy를 사용하기 때문에 동적인 빌드는 Groovy Script를 구현하거나 호출하면 된다.Gradle Maven보다 100배이상 빠르다.Gradle DaemonBuild CacheSmart Classpath A..

Programing/Java 2018.12.10

Nexus Repository

Nexus Repositorymaven, gradle에서 사용하는 내부 repository팀, 회사 내부에서 공유되는 라이브러리를 사용할때, maven에는 존재하지 않는 라이브러리를 사용할때 내부에서 구현한후 사용된다http://www.sonatype.org/nexus/ https://help.sonatype.com/repomanager3 Repository TypeHostedProxy Version PolicyReleaseSnapshot Gradle에서 nexus repository 설정하기repositories { maven { url "http://localhost:8080/nexus/content/groups/public/" }}

Programing 2018.12.09

Blocking, NonBlocking, Synchronous, Asynchronous

Blocking, NonBlocking, Synchronous, AsynchronousBlocking, NonBlockingBlocking, Non-blocking의 관심사는 호출하는 함수가 바로 리턴을 하느냐 마느냐가 관심이다Blocking인 경우에는 함수가 호출하고 그 사이에 다른 작업을 할수가 없다.Non-Blocking인경우에는 함수가 호출을 하고 그사이에 다른 작업을 할수가 있다. Synchronous, AsynchronousSynchronous, Asynchronus의 관심사는 호출하는 함수의 작업 완료를 누가 받는 가에 대한 관심이다.Sync인 경우에는 결과값을 함수를 호출한 대상자가 결과를 가지고 간다Async인경우에는 결과값을 등록된 callback을 통해 처리를 한다. Synchrono..

Programing 2018.12.07

Thread와 Process

Thread와 ProcessProcess프로그램의 실행 단위2개 Process는 서로 다른 메모리 영역이다.Multi Process?여러개의 프로그램이 실행을 한다는 의미이다ex) IntellJ를 키고 Terminal를 실행한다. Thread프로그램의 제어 실행만 분리된 실행 단위 (실행하는 흐름 단위)2개 Thread는 같은 메모리 영역을 공유를 한다.Multi Thread?하나의 프로그램 안에서의 여러개의 Thread를 통해 실행된다ex) Queue로 데이터를 받아 처리 작업과 Http 호출의 처리를 동시에 한다.

Programing 2018.11.29

Java CocurrentHashMap

Java CocurrentHashMap동시성 (Concurrency) 을 보장해주는 MapKey/Value값으로 null이 허용되지 않는다.get method는 blocking이 일어나지 않는다. hashCode()의 값을 동일한 값으로 나오는 Key값은 Map의 성능을 하락 시킨다 (이는 다른 HashMap 동일함) 생성자initialCapacity - 처음 초기 수용량 (Capacitiy)loadFactor - table의 densityconcurrencyLevel - 동시에 몇개의 Thread가 Update를 허용할 수치 Metric으로 사용되는 Counter를 저장하는 예counterMap.computeIfAbsent(key, key -> new Counter()).increment()comput..

Programing/Java 2018.11.27

Akka Stream Materialized values

Akka Stream Materialized values각각의 operator들은 Source와 Sink와 Flow는 실체화된후 (Materialized) 실체화된 값(Materialized values)을 가지고 있는다.데이터로써 의미가 있는 값일수도 있고 Control를 할수 있는 객체가 실체화되기도 한다.Materialized 값에 대한 유지 OperatorKeep.both()전 Stage의 Value와 현재 Operator의 Value를 둘다 유지한다.Keep.left()전 Stage의 Value를 유지한다. 기본값Keep.right()현재 Operator의 Value를 유지한다. Example// Source는 Integer 데이터가 나오고, 외부에서 컨트롤 할수 있는 CompleteableFu..

Programing/Akka 2018.11.24