본문 바로가기

Programming/Java & JSP & Spring

(75)
[Java] Comparable, Comparator 자바에서 데이터를 정렬하고자 할때 보통 Arrays.sort() 를 사용한다. 이것이 가능한 이유는 원시형(primitive) 타입이나 Wrapper 클래스들은 모두 compareTo() 메소드를오버라이드하고 있기 때문이다. compareTo() 메소드가 구현되어 있는 객체는 Arrays.sort() 메소드를 통해 정렬이 가능하다. 하지만 사용자가 만든 객체를 비교하기 위해서는 어떻게 해야할까?사용자가 만든 객체를 정렬하기 위해서는 객체 안에서 비교할 기준을 정하고, Comparable 인터페이스를구현해야한다. Comparable 인터페이스 사용하는 방법구현하는 방법은 비교하려는 객체에 Comparable인터페이스를 implements하고,int compareTo(T) 메소드를 재정의 하면된다. Comp..
Polling과 Long Polling 보통 클라이언트와 서버 모델은 클라이언트가 요청을 하고 서버가 응답해주는 형태이다.즉, 서버는 클라이언트에게 요청이 안오면 응답해주지 않는다. 실시간 웹 구현의 한계성위와 같은 HTTP프로토콜 특성때문에 실시간을 위해 필요한 지속되는 연결을 가질 수 없다.클라이언트에서 서버에 접속하면 응답하고 연결이 끊어진다. 이 때문에 현재 웹에서 운용되는실시간 서비스(ex. 네이버 실시간 검색어)들은 대부분 실시간이 아니다. PUSH SERVERPush Server는 클라이언트의 요청이 없어도 서버가 클라이언트에게 응답을 해주는 방식이다.하지만 HTTP 프로토콜 특성 상 실제 Push Server는 구현되지 않는다. 하지만 Push Server의효과와 비슷한 모델들이 등장한다.웹 서버의 Push Server 모델은 ..
OAuth2.0 란? OAuth 2.0 을 한마디로 표현하자면웹, 앱 서비스에서 제한적으로 권한을 요청해 사용할 수 있는 키를 발급해주는 것이다. 쉽게 말하면 사용자가 페이스북이나 트위터 같은 인터넷 서비스의 기능을 다른 애플리케이션에서도사용할 수 있게 한 것이다. 플랫폼의 시대가 열리면서 IT기업에게 Open API는 가장 중요한 자산으로 자리잡았다.어떤 형식으로 API를 구성하고 어떤 포맷으로 데이터를 주고받을 것인가에 대한 싸움도 치열했는데,SOAP & XML과 REST & JSON이 경합을 벌인 끝에 REST & JSON의 승리로 끝났다.이제 새로 생기는 모든 웹서비스, 모바일 서비스들은 REST & JSON 기반으로 API를 제공하고 있으며,인증방식으로는 OAuth2.0을 택하고 있다. OAuth를 만들고 활성화 시..
쿠키(Cookie)와 세션(Session) 쿠키와 세션은 HTTP프로토콜의 약점을 보완하기 위해 존재한다. HTTP프로토콜의 경우 클라이언트가 정보를 요청하고 서버가 응답하는 방식인데이러한 통신이 끝나면 서로 접속을 끊고, 클라이언트와 서버간의 상태 정보는 유지되지 않는다. 이러한 특성때문에 통신을 유지하고 있으면 드는 자원 낭비를 크게 줄일 수 있다는 장점이 있지만,클라이언트와 서버간의 정보가 유지되지 않으므로 계속해서 인증을 해야한다는 단점이 있다. 이러한 단점을 쿠키와 세션으로 해결할 수 있다. 쿠키(Cookie)쿠키는 클라이언트에 저장되는 키와 값이 쌍으로 이루어진 작은 데이터 파일이름, 값, 만료 날짜, 경로 정보가 들어있다.일정 시간동안 데이터를 저장할 수 있어서 로그인 상태를 유지클라이언트 상태 정보를 하드디스크에 저장하였다가 필요 ..
[Java] 최대값과 최소값 구하기 자바 배열 속에서 최대값과 최소값을 구하는 방법으로는 크게 3가지 방법이 있다. 1) Arrays.sort()를 이용하는 방법자바 기본 내장 배열을 사용하였다면 Arrays.sort()를 사용하고 콜렉션을 사용하였다면Collections.sort()를 사용한다. 기본적으로 오름차순으로 정렬이 되므로 가장 첫 번째 요소가 최소값이 되고, 마지막 요소가최대값이 된다. 가장 많이 사용되는 방법이지만, 단점으로는 배열의 순서가 변경된다는 점이다. 2) for 구문으로 찾기단순하게 for구문을 돌려서 찾는 방법이다. 이 방법은 주로 배열의 순서가 유지되어야 하거나, 최대값이나 최소값의 인덱스를 알아야할 때 주로 사용된다. 3) Collections.max() / Collections.min() 사용콜렉션 배열을 ..
[Java] 문자열을 변환하기 전 정수형인지 확인하는 방법 데이터를 문자열로 입력받고 int형으로 변환하기 전에, 데이터가 정수형인지 아닌지를파악하고 싶을 때가 있다. 1) isNumber() 함수로 확인첫 번째 방법으로 isNumber()함수를 사용해서 확인하는 방법이 있다. 정수형으로 변환이 가능하면True를 리턴해준다. 하지만, 이 함수를 못 쓸 때가 있다. 2) isNumberic() 함수 직접 구현하기if(isNumeric(data[i]))public static boolean isNumeric(String s) { try { Double.parseDouble(s); return true; } catch(NumberFormatException e) { return false; } }
[Java] 날짜 비교 날짜 순으로 정렬하는 문제에서 이용해야할 때가 종종 있다. 우선 SimpleDateFormat 으로 Date형식으로 만드는 것이 첫 번째 단계이다. 그 후, compareTo 함수를 사용하거나 getTime()을 이용해 long값 변환 후 비교하는 두 가지 방법이 있다. 1) Long 값으로 변환 후 비교 다음 코드는 ArrayList에 들어있는 객체 Edge들을 날짜를 비교해서 정렬하는 코드이다.여기서 Edge.getTime() 함수는 Date.getTime()이라고 생각하면 된다.Date.getTime()을 하면 Long타입의 데이터를 반환하게 되는데, 이를 비교하여 날짜를 정렬하는 방식이다."yyyy-MM-dd HH:mm:ss"의 형식으로 된 Date 타입을 비교할 때 유용한 것으로 보인다.Coll..
[Java] 배열 생성과 초기화 자바에서 배열을 생성하고 초기화하는 방법에는 몇 가지 방법이 존재한다.일단 흔히 쓰이는 일반적인 방법은 다음과 같다.int[] arrayint = new int[10];위와 같은 방법으로 배열을 생성하면 자동으로 0으로 채워진 길이가 10인 배열을 생성한다. 0이 아닌 직접 값을 입력하여 초기화할 수 있다.int[] arrayint = new int[]{1, 2, 3, 4, 5, 6, 7,};위와 같은 방법으로 배열을 생성할 경우에는 배열의 길이를 지정하지 않아도 된다. 위와 같이 배열을 생성할 경우 굳이 new를 쓰지 않는 방법도 있다. int[] arrayint = {1, 2, 3, 4, 5, 6, 7,};