싱글톤 패턴(Singleton Pattern)이란. 어플리케이션에서 하나의 인스턴스만 만들고 싶을 때 사용하는 디자인 패턴이다. 싱글톤을 만들 때는 private 생성자를 만들어 new를 사용하여 인스턴스 만드는 것을 막고 private static final 변수에 인스턴스 생성하고 public static singleton get메소드로 인스턴스를 return하게 만들어 인스턴스가 필요할 때 get메소드로 인스턴스를 받아서 사용하게 한다. public class Singleton { private static final Singleton instance = new Singleton(); private Singleton(){} public static Singleton getInstance(){ ret..
먼저 람다식을 설명하면 메서드를 하나의 식으로 표현하는 것으로 객체 지향 방식이라기보다는 함수 지향 방식에 가깝다. * 함수 지향 방식에 가깝다고 해도 자바에서 람다 또한 결국 객체이다. 때문에 람다식은 함수 형태 만으로도 사용할 수 있다. import java.util.stream.IntStream; IntStream.range(0, 10).forEach(n -> System.out.println(n)); 아래는 다양하게 작성해본 기본적인 람다식의 형태이다. (int n, String str) -> { return n + str; } (int n, String str) -> n + str (n, str) -> n + str (str) -> str + 1 str -> str () -> "Hello" ()..
자바스크립에서 함수를 생성하는 방법은 세 가지가 있다. 이 방법들은 같은 함수를 생성하지만 동작방법이 조금 다르다. 1. 함수 선언문 2. 함수 표현식 3. Function() 생성자 함수 1. 함수 선언문 함수 선언문은 반드시 함수명이 정의되어 있어야 한다. ex) function a(){} 2. 함수 표현식 함수 표현식은 리터럴 방식으로 함수명이 없는 익명 함수를 만들고 그 함수를 변수에 담아서 사용하는 것이다. ex) var a = function(){} 함수명이 있는 함수를 기명 함수 표현식이라고 하는데 만약 기명 함수 표현식을 함수 표현식으로 사용할 때는 함수명을 사용하면 안 된다. ex) var b = function bb(){} bb; // is not defined 에러가 발생한다. 3. ..
Javascript는 Java와 같은 클래스라는 개념이 존재하지 않는다. Javascript에서 객체를 만드는 방법은 크게 두 가지가 있다. 1. 생성자 함수를 사용하는 방법 2. 객체 리터럴을 이용하는 방법 1. 생성자 함수를 사용하는 방법 Javascript에서는 Object() 객체 생성자 함수를 제공한다. ex) var object= new Object(); // object객체를 생성 그리고 Object()가 아닌 다른 함수를 이용하여 객체를 만들 수도 있다. ex) function a(){}; var a = new a(); // a 객체 생성 만약 프로퍼티를 넣으려 한다면 객체를 담은 변수에 .을 붙인 후 프로퍼티를 추가하면 된다. ex) 객체.name = 'name'; 2. 객체 리터럴을 이..
String을 합치는 방법은 StringBuffer, StringBuilder, +연산, concat 메서드가 있다. 이 네 가지의 차이점을 Test를 통해서 알아보고자 한다. 아래는 테스트 코드와 코드를 통해 테스트한 결과이다. class Test { static int count = 100000; public static void main(String[] args){ testStringBuilder(); testStringBuffer(); testConcat(); testAdd(); } static void testStringBuilder() { long startTime = System.currentTimeMillis(); StringBuilder builder = new StringBuilder(..
호이스팅이란 변수의 선언이 생성될 때나 초기화할 때가 아닌 가장 최상단에서 선언된다는 것이다. ex) { console.log(num); // undefined var num = 10; console.log(num); // 10 }, { var num; console.log(num); // undefined num = 10; console.log(num); // 10 } 위 두 예제는 호이스팅이 적용되기 때문에 에러를 출력하는 것 대신 undefined와 10을 출력한다. 이것은 위에서 설명한 것과 같이 변수의 선언이 최상단에서 이루어지기 때문인데 함수 안에서도 변수의 선언이 함수 최상단에서 선언이 이루어진다. ex) function excemple { console.log(num); // undefin..
Stack : 먼저 들어온게 나중에 나간다. (후입선출, Last In First Out, LIFO) - 예로 물건을 쌓아올린 것으로 생각하면 된다. 쌓아올린 물건들 중 원하는 물건을 꺼내기위해서는 가장 마지막에 올린 물건부터 차례대로 꺼내야 하기 때문이다. Queue : 먼저 들어온게 먼저 나간다. (선입선출, First In First Out, FIFO) - 예로 사람들이 줄을 서있는것을 생각하면 된다. 물론 새치기가 없어야 된다는 조건이 있지만 줄을 서있다는 것은 먼저온 사람이 먼저 일을 처리한 후 먼저 가기 때문이다.
이번에 spring boot 1.4 버전을 사용하기 위해 QueryDSL을 버전업을 하게 되었는데 이전에 사용하던 패키지는 'com.mysema.querydsl' 이고 버전은 3.7.4 버전이 마지막 버전이었다. 그래서 찾아보니 패키지명이 'com.mysema.querydsl' 에서 'com.querydsl' 로 수정이 되었다는 내용이다. 그리고 수정하면서 보니 JPAQuery Class에 Generic을 사용해야 하고 메소드 중에 list()와 uniqueResult()가 사라져 fetch()와 fetchFirst()를 사용했다.