인터페이스는 과연 무엇일까? interface?? 초기의 인터페이스는 void test(); 요런식으로 구현체가 없는 상태로 존재하였다. 그래서 인터페이스를 implements을 하게되면, 구현체가 반드시 필요하였습니다. 하지만 자바8부터 인터페이스에도 구현체를 작성할 수 있게 되었다. 구현체를 작성하는 방법은 총 3가지다. 1. static 2. default 3. private 원래 언제 만들어졌는지 적으려 했지만 귀찮은 관계로 넘어가자. 아무튼 이 3가지의 공통점은 구현체를 구현을 해야 된다는 점이다. 근데 여기서 드는 의문점이 있다. static, private같은 경우는 기존 클래스에서 사용법이 크게 다르지 않다. static은 메모리상에 먼저 올라가구 private는 그 클래스내에서만 사용이 ..
오랜만에 디자인 패턴을 공부하는 것 같다. 이 패턴에 대해 간략하게 설명하자면, 공통 부분을 미리 만들어 놓고 그것을 가져다 쓰는 방식이다. 이 패턴은 상속을 통해 이뤄진다. 상속? 상속을 사용한다는 뜻은 부모와 자식의 관계가 명확하다는 이야기다. 즉, 부모쪽에 공통 부분을 뽑아 내고 자식 쪽에서 그것을 오버라이딩 하는 것이다. 예제를 고민해봤는데 생각보다 쉽지 않을 것 같다. 간단하게 숫자를 계산하는 계산기를 만들어 보려구 한다. 시작 public int calculate() { return get(1, 2, 3, 4); } private int get(int... numbers) { int result = 1; for (int number : numbers) { result *= number; } r..
rollup vs cube vs grouping set 공부를 하면서 이 3가지가 굉장히 헷갈렸다. 특히 group by가 2~3개 이상 섞여있을 때 굉장히 문제를 해결하기 어려웠다. 이들을 쉽게? 해결하는 방법은 갯수를 세어 보는 방법이다. 예시 쿼리를 보여주고 싶기는 한데 그거까지 하기에는 조금 귀찮은 감이 조금 있어서 그거는 생략하도록 한다. c1 c2 count A 1 1 A 2 1 A 2 B 1 1 B 2 2 B 3 테이블이 이렇게 되있다고 생각해보자. 그럼 제일 먼저 해야 할 일은 count가 어떻게 들어 오는지 파악해야 한다. 확인 결과 (c1,c2) => A,1 이 1개라는 것을 알 수 있다. 이렇다는 것으로 미뤄봤을때 group by는 c1과 c2둘다 해당 된다는 것을 알 수 있다. 근데..