인터페이스는 과연 무엇일까? 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둘다 해당 된다는 것을 알 수 있다. 근데..
sql null SQL에서 NULL을 활용하는 방법은 무수히 많습니다. count(*)이거랑 count(칼럼명) 이 두 개는 값이 다릅니다. 전자같은 경우는 null을 포함해서 계산을 하게 되고 후자는 null을 포함하지 않는 상태에서 계산 되어집니다. 또한, null은 어떤 값과 연산을 하여도 무조건 null이 나오는 특징을 가지고 있습니다. null 관련 함수 nvl(값1, 값2); 값1이 null인 경우 값1 아닌 경우 값2 nullif(값1, 값2) 값1 = 값2인 경우 null 다른 경우 값1 coalesce(값1,값2,값3...) 최초로 null이 아닐때까지 반복 오라클에서는 null이 가장 무겁지만 mssql 에서는 null이 가장 가볍다. sql 읽는 순서 (중요) sql를 읽을때 가장 먼..