블로그 이미지
암초보

calendar

1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

Notice

Tag

05-19 03:15
2013. 5. 20. 17:14 프로그래밍/Java

- Comparator 사용시

Comparator의 구현체를 파라미터로 넘김.

=> Collections.sort(list, comparator);


- Comparable 사용시...

Comparable 구현체의 list를 파라미터로 넘김

=> Collections.sort(list);




차이점은 list안에 들어가는 class를 수정하느냐와 마느냐,,,

그리고 정렬할때 비교 방식을 바꾸느냐 마느냐의 차이인듯...

'프로그래밍 > Java' 카테고리의 다른 글

스레드 풀 활용  (0) 2013.10.31
Callable 과 Thread  (0) 2013.10.31
java.util.ConcurrentModificationException  (1) 2013.05.15
업캐스팅  (0) 2011.09.27
추상화  (0) 2011.09.26
posted by 암초보
2013. 5. 20. 14:22 프로그래밍/Servlet&JSP
<fmt:parseDate value="${dateStr}" var="dateFmt" pattern="yyyy/MM/dd HH:mm:ss"/>
=> 해당 pattern의 String 타입을 Date 타입으로 변환

<fmt:formatDate value="${date}"  pattern="yyyy/MM/dd HH:mm:ss"/>
=> Date 타입을 해당 pattern 으로 변환


'프로그래밍 > Servlet&JSP' 카테고리의 다른 글

<c:forEach>에서 인덱스 사용법  (0) 2013.11.27
URLDecoder  (0) 2009.08.05
JSP 쿠키 생성, 삭제  (0) 2009.08.04
posted by 암초보
2013. 5. 15. 12:32 프로그래밍/Java

list같은 걸 돌리는 for문에서

remove를 호출할 때 발생...

java.util.ConcurrentModificationException


이유는 index 문제.. 생각해보면 금방 알 수 있듯이..

증가된 index와 list의 size를 비교하는데 있어서 문제가 발생하게된다.



아래와 같은 방법으로 해결하면 됩니다.


1. Take a copy of the collection , iterate over the copy and remove elements from the original. 

2. During iteration, build up a set of elements to remove, and then perform a bulk removal after iteration has completed.

3. Use an List implementation which can deal with concurrent modifications, like the CopyOnWriteArrayList



대충 이런식이 좋은거 같다.

List<String> list = new ArrayList<String>();
...
for (Iterator<String> iterator = list.iterator(); iterator.hasNext(); ) {
    String value = iterator.next();
    if (value.length() > 5) {
        iterator.remove();
    }
}


아래와 같이 for문도 두번.. 위의 for문안에 집어넣는다해도..
clone 하는 방식은 좋지 않은거 같다... 쓸데없이 만들필요가 있나..

List<String> toRemove = new ArrayList<String>();
for (String fruit : list) {
    if ("banane".equals(fruit))
        toRemove.add(fruit);
    System.out.println(fruit);
}
for (String fruit : toRemove) {
    list.remove(fruit);
}

'프로그래밍 > Java' 카테고리의 다른 글

Callable 과 Thread  (0) 2013.10.31
Comparator & Comparable 이용한 정렬  (0) 2013.05.20
업캐스팅  (0) 2011.09.27
추상화  (0) 2011.09.26
enum 활용  (0) 2011.09.25
posted by 암초보
2012. 2. 9. 10:39 프로그래밍/기타
자주사용하는 정규표현식 검색 : http://regexlib.com/Default.aspx
파폭 도구 :   http://sebastianzartner.de/firefoxExtensions/RExT/

'프로그래밍 > 기타' 카테고리의 다른 글

json parser oline  (0) 2013.10.22
로딩 이미지 생성 페이지  (0) 2013.06.26
Joda Time 라이브러리  (0) 2011.10.17
tomcat JVM 옵션 설정  (0) 2011.06.23
sftp 간단 접속 방법  (0) 2011.06.01
posted by 암초보
2012. 2. 2. 13:02 프로그래밍/JavaScript
floor : 버림
round : 반올림
ceil : 올림 

'프로그래밍 > JavaScript' 카테고리의 다른 글

addEventListener IE8에서는,..  (0) 2015.01.14
splice  (0) 2013.05.31
Firefox css style float  (0) 2011.06.17
substring  (0) 2011.04.18
escape  (0) 2011.04.18
posted by 암초보
2011. 10. 31. 23:17 프로그래밍/Spring
"토비의 스프링3" 의 내용 정리

자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케이션 프레임워크

- 애플리케이션 프레임워크
특정 계층이나, 기술, 업무 분야에 국한되지 않고 애플리케이션의 전 영역을 포괄하는 범용적인 프레임워크. 스프링은 핵심 기술에 담긴 프로그래밍 모델을 일관되게 적용해서 엔터프라이즈 애플리케이션 전 계층과 전 영역에 전략과 기능을 제공해줌으로써 애플리케이션을 편리하게 개발하게 해줌.

- 경량급
만들어진 코드가 지원하는 기술수준은 비슷하더라도 그것을 훨씬 빠르고 간편하게 작성하게 해줌으로써 생상성과 품질 면에서 유리하다는 것

- 자바엔터프라이즈 개발을 편하게
말그대로

- 오픈소스
소스가 모두에게 공개, 자유롭게 이용. 피드백(문제점. 버그 등)
스프링소스 사업부에서 개발을 전담.
오픈소스의 단점인 지속적이고 안정적인 개발이 계속될지가 불확실하다는 점을 극복.
(미션크리티컬한 시스템 개발에도 사용)

'프로그래밍 > Spring' 카테고리의 다른 글

바인딩  (0) 2014.06.27
타입 변환  (0) 2014.04.29
SpringSource Tool Suite 사용 이유?  (0) 2011.10.31
메시지 컨버터를 이용한 AJAX 애플리케이션 코드 작성 방법  (0) 2011.10.18
WebDataBinder 설정 항목  (0) 2011.10.17
posted by 암초보
2011. 10. 31. 22:58 프로그래밍/Spring

1. 플러그인의 업그레이드 버젼이나 새로운 이클립스 버젼이 나올때마다, 이클립스에 스프링 관련 플러그인을 조합하여 새로운 IDE를 구성해야 하는 부담이 없음
2. 이에 따라오는, 플러그인의 버전 호환성 문제
3. STS는 스프링 팀이 매번 베타버전, RC 버전을 거쳐가면서 플러그인의 호환성 문제나 버전 이슈를 충분히 검증해 준다.

결론 : 스프링소스가 제공하는, 플러그인 조합이 완료된 STS를 사용하는 편이 유리함.

'프로그래밍 > Spring' 카테고리의 다른 글

타입 변환  (0) 2014.04.29
스프링이란?  (0) 2011.10.31
메시지 컨버터를 이용한 AJAX 애플리케이션 코드 작성 방법  (0) 2011.10.18
WebDataBinder 설정 항목  (0) 2011.10.17
Spring 트랜잭션 전파(propagation)  (0) 2011.10.08
posted by 암초보
2011. 10. 26. 05:58 프로그래밍/iBATIS

'프로그래밍 > iBATIS' 카테고리의 다른 글

Complex Type Property  (0) 2013.05.23
posted by 암초보
2011. 10. 18. 18:59 프로그래밍/Spring
스프링소스의 mvc-ajax 프로젝트 참고
: https://src.springsource.org/svn/spring-samples/mvc-ajax/truck

'프로그래밍 > Spring' 카테고리의 다른 글

스프링이란?  (0) 2011.10.31
SpringSource Tool Suite 사용 이유?  (0) 2011.10.31
WebDataBinder 설정 항목  (0) 2011.10.17
Spring 트랜잭션 전파(propagation)  (0) 2011.10.08
POJO  (0) 2011.10.07
posted by 암초보
2011. 10. 17. 21:03 프로그래밍/Spring
도메인 오브젝트 방식을 사용하는 경우, @ModelAttribute로 HTTP  요청을 전달받을 때 보안 문제에 신경을 써야 한다.
예) HTML에 담긴 폼의 내용을 보고 수정 폼에 없는 필드를 추측해서 추가해서 보냈을 때, 일치하는 경우 보안 문제가 생김. (ex: 회원등급)

allowedFields : 허용 필드 목록(명시한 필드 외의 필드는 모두 무시)
disallowedField : 금지 필드 목록(금지필드 모두 무시)

이 두가지 중 하나 선택하면됨.


requiredFields : 필수 필드, 바인딩  시 필수 파라미터 중에서 빠진게 있다면 바인딩 에러로 처리.

fieldMarkerPrefix : 체크박스 같은 경우 체크 안할시 값이 넘어오지 않음.
                          그래서 이전의 체크했던것이, 체크하지 않은 값으로 변경되지 않음.
                          해당 이름의 파라미터가 요청정보에 없다면, 해당 프로퍼티 값을 리셋해줌
                          boolean 타입이면 false, 배열타입이면 빈배열, 그 외라면 null
              hidden 필드에 name에 "_" 접두어 붙임(필드마커라고 함), value="on"
fieldDefaultPrefix : 디폴트 값 지정. "!" 접두어 사용
                          ex)<input type="hidden" name="!type" value="member"/>
                               type이라는 이름의 파라미터가 존재하지않는다면, 필드 디폴트의 value 값에
                               담긴 내용을 해당 프로퍼티에 바인딩해준다. 즉, type에 member가 들어가게 됨
posted by 암초보