Programing 101

Lombok 상위클래스 필드를 이용한 객체 생성 방법

Lombok 상위클래스 필드를 이용한 객체 생성 방법데이터 객체가 상속관계에 있을 경우 lombok의 @Builder 어노테이션을 아래와 같이 이용하면 객체 상위에 필드도 지정할수가 있다.@AllArgsConstructorpublic class Parent { private String a;} public class Child extends Parent { private String b; @Builder private Child(String a, String b){ super(a); this.b = b; }}Child.builder().a("testA").b("testB").build()Referencehttps://projectlombok.org/features/Builder

Programing/Java 2017.08.06

Lombok

Lombok개요java 언어로 프로젝트를 하다보면 반복적인 작업들이 있다. Getter/Setter, 생성자나 File I/O에서의 Stream 객체 close 등등.. 이러한 반복적인 작업들을 깔끔하게 어노테이션(Annotation)을 이용하여 처리할수 있는 라이브러인 롬복(Lombok)에 대해 알아보자.Libary importMaven org.projectlombok lombok 1.16.18 provided Gradlerepositories { mavenCentral()} dependencies { compileOnly 'org.projectlombok:lombok:1.16.18'}intelliJ를 IDE를 사용한다면 설정중에 Processing Annotation 옵션 및 Lombok Plugin..

Programing/Java 2017.07.15

Guava Java 라이브러리

Guava Java 라이브러리Guava Java 라이브러리에서 자주 사용되는 기능을 정리해보자.EventBusPublish/Subscribe 방식의 이벤트 처리 방식AsyncEvnetBushttps://google.github.io/guava/releases/17.0/api/docs/com/google/common/eventbus/AsyncEventBus.htmlSample Code// Class is typically registered by the container. class EventBusChangeRecorder { @Subscribe public void recordCustomerChange(ChangeEvent e) { recordChange(e.getChange()); }} // somew..

Programing/Java 2017.07.02

Akka Tutorial

Akka TutorialReferencehttp://developer.lightbend.com/guides/akka-quickstart-java/?_ga=2.240985411.172449809.1498889504-939982481.1485157124Actor Model의 좋은 점이벤트 기반의 모델Actor는 메시지를 통해 작업Actor 사이간의 통신은 비동기, blocking 없이, 응답을 기다리지 않고 다른 작업을 할수가 있다.강한 격리 원칙일반적인 자바 객체와 달리 Actor는 자신이 가지고 있는 상태에 대한 API 존재하지 않는다. 대신에 메세지를 통해 공유가 가능하다.이는 다른 액터간의 상태(State)를 공유하는 것을 막는다.오로지 메세지를 보내는 것을 통해 다른 액테의 상태를 볼수가 있다.가벼..

Programing/Akka 2017.07.01

@Value 어노테이션 활용

@Value 어노테이션 활용Code exmaple@Value("${property_name}")private String name; @Value("${property_boolean_name}")private Boolean name;Property관련 설정이 있어야 가능.PropertySource 어노테이션을 이용하여 가능(참고) PropertySource AnnotationProfile에 따라 PropertySource를 다르게 설정하는 법.@Componentpublic class PropertyConfig { @Configuration @Profile("develop") @PropertySource("classpath:develop.properties") public static class Develo..

OpenpyXL를 이용하여 Excel 파일 읽기

OpenpyXL를 이용하여 Excel 파일 읽기파이썬 Excel 2010 Library (xlsx/xlsm/xltx/xltm 파일)Install$ pip install openpyxlSimple Sample Codefrom openpyxl import Workbookwb = Workbook() # grab the active worksheet ws = wb.active # Data can be assigned directly to cells ws['A1'] = 42 # Rows can also be appended ws.append([1, 2, 3]) # Python types will automatically be converted import datetimews['A2'] = datetime.date..

Programing/Python 2017.06.27

Minor gc/Major gc/Full gc

Minor GC, Major GC, Full GCGCMinor GCMajor GCFull GCJVM의 Heap 메모리 구조Eden/Young SpaceSurvivor 1Survivor 2Tenured/Old SpaceMinor GCMinor GC는 새로운 객체에 대해서 작동이 된다.Minor GC는 JVM이 새로운 객체를 생성할때 메모리가 부족하다면 발생되는 GCEden 영역이 가득차게 되면 Minor GC가 발생된다.Minor GC가 발생되었을때 Tenured 영역의 객체 생성은 무시된다.일반적으로 알려진 내용과 달리 Minor GC가 발생될때도 Stop-The-World 상태이다Major GC와 Full GC의 차이Major GC : Tenured 영역대부분의 경우에는 Minor GC가 발생되고 그 ..

Programing/Java 2017.06.27

LLVM

LLVMLLVM이란?Low Level Virtual MachineLLVM으로 언어에 가상기계를 생성, 가상 기걔가 언어의 독립적인 최적화를 실행코드를 정적으로 컴파일할수도 있고, 자바처럼 한번 더 컴파일되는 중간언어로 컴파일이 될수가 있다.코드 표현독립적인 명령어 집합과 형식 시스템3-어드레스 코드 형식과 유사3-어드레스 코드 방식 : 2개의 입력용과 1개의 출력용 메모리 주소 혹은 레지스터를 사용하는 방식.배열, 벡터, 구조체, 함수의 5가지가 존재C++의 클래스는 구조체와 함수와 함수에 대한 포인터의 배열을 함께 사용하여 표현구성 요소프론트 엔드 표현중간 표현백엔드 표현프론트 엔드 표현C, C++, Swift 등의 컴파일을 지원일부는 GCC 4.0.1 및 4.2에서 가지고 온것.LLVM의 중간 표현@..

Programing 2017.06.25

Akka Actor

Akka ActorAkka는 오픈 소스 툴킷으로, JVM 상의 동시성과 분산 애플리케이션을 단순화하는 런타임이다. Akka는 동시성을 위한 여러 프로그래밍 모델을 지원하지만, Erlang으로부터 영향을 받아 actor 기반의 동시성이 두드러진다.자바와 스칼라 언어 모두로 작성이 가능하다. Akka는 스칼라 2.10로 작성되었으며, 스칼라 2.10의 Akka의 actor 구현은 스칼라 표준 라이브러리에 포함되어있다.출처 : 위키백과Akka Actor ModelAkka actor를 기반으로하는 애플리케이션의 구별되는 특징은 다음과 같다:동시성은 메시지 기반 이며 비동기 방식 으로 이루어진다: 일반적으로 변형 가능한 데이터를 공유하거나 동기화되는 primitive를 사용해서는 안됩니다: Akka는 액터 모델을..

Programing/Akka 2017.06.25