Java_tuning4

Reading time ~1 minute

java-tutorial

Interface, Abstract

안에 있는걸 모르고 무슨 기능을 할 것인가만 알고 있는 것 근데 java 8에서 default 라는게 생겼는데 기본적으로 리턴이 돼야한다 이런거. 공통 코드들은 Abstract로 빼고, 아니면 Interface라고 한다.

EJB

모든 것들을 컴포넌트화 한 것. Interface를 하나 만들어 놓고 각각의 들을 만들어 놓고

Static

변수 : 클래스 변수 이냐, 객체 변수이냐

 // 사용하면 위험한 코드
 // jvm이 죽을 때 까지 이 맵은 사라지지 않아
static Map<Long, String> map;

메소드 : 클래스 메소드로 변한다.

static block

static block은 클래스 로딩때 한번만 불린다. 블럭을 여러개 나눠서 써도 성능저하는 없다.

static String rookie;
static {
  rookie = "Rookie";
}
public static void main(String args[]) {
  System.out.println(rookie);
}
static {
  rookie = "Hello Rookie"
}
// Result : Hello Rookie

Static한 메소드에서 this를 쓰면 안된다. 왜냐하면 Static한 메소드는 객체를 생성하지 않아. 또, this()는 기본 생성자입니다.

final

클래스에 final이 붙으면 상속 못하게 막는 것. 변수에 붙으면 반드시 동시에 값을 할당해줘야 함. 그러기 싫으면 생성자에서 할당하면 돼. 근데 모든 생성자에서 다 해줘야 겠지.

Strictfp

소수점을 처리하는 방식이 OS마다 다른데 이걸 명시적으로 지정할 때 쓴다.

Lambda

자바 8에서 나온거 functionalInterface를 씀! 인터페이스 안에 메소드 반드시 1개만 있어야함

Operator op1 = (x,y) -> x+y ;
Operator op2 = (x,y) -> x-y ;

java8

Stream

list.stream().filter(i -> i % 3 == 0).forEach(i-> System.out.println(i));

filter, map, mapToInt, sorted, foreach 등등

언제 쓰지? for loop으로 막 돌리면서 작업할 필요가 없다.

intList.forEach(x -> System.out.println(x));
intList.forEach(System.out::println);

이렇게 x 하나 만 넘겨줄 때는 ::로 쓸 수 있다. 개꿀

parallelStream

원래 Stream은 순차적으로 뽑아서 돌리는데 얘는 멀티스레드로 순서 없이 뽑아서 처리한다. 왠만해선 쓰지말자. 특히 웹에서는 쓰면 골치 아파진다.

Dooray!

Dooray CalDav, IMAP 사용법 Continue reading

Vue.js

Published on February 10, 2018

Java_tuning5

Published on March 06, 2017