본문 바로가기
728x90
반응형

Java19

Strategy Pattern Strategy Pattern, 전략 패턴이라고 한다.전략이라는 것은 여러 분야에서 쓰인다. 특히 스포츠에서 많이 들을 수 있는 단어이다. 그리고 언제나 전략은 한가지일 수는 없다. 딱히 한가지 방법만 있다고 한다면.. 전략이라고 하기에는 좀 부족하지 않을까. 그냥 공식? 이라고 하는 편이 나을지도 모르겠다. 이렇게 전략은 항상 다양하게 존재한다. 상황에 따라서 전략을 바꿀수도 있다. 이러한 사상(?)을 담은 패턴이 Strategy 패턴이다.클래스 다이어크램을 보면 Context 클래스가 존재하고 AStrategy 인터페이스가 존재한다. 그리고 AStrategy 인터페이스를 구현한 ConcreteStrategy 클래스들이 존재한다. 상황에 따라서 ConcreteStategy 클래스를 변경한다!라는 것이다.. 2013. 7. 2.
List 를 Array로 바꾸는 함수. Arrays.asList(array);이렇게 하면 array를 List로 변환해 준다.나름 유용할듯. ^^이것 이외에도 sort도 사용할수 있다.Arrays.sort(array)배열 정렬시킬때 잘 써먹을듯 하다. 2013. 7. 2.
Annotation : Retention Retention Annotation은 meta Annotation이 얼마동안 유지되는지를 정한다.사용법은 아래와 같다Retantion(RetentionPolicy.SOURCE) : Annotation이 소스 코드에만 존재하고 class 파일이나 runtime 시에 나타나지 않는다.Retantion(RetentionPolicy.CLASS) : compiler가 class파일에 기록은 하지만 runtime시에 나타나지 않는다. Retantion을 명시하지 않으면 default가 CLASS이다.Retantion(RetentionPolicy.RUNTIME) : compiler가 class파일에 기록을 하고 runtime시에 영향을 준다. 2013. 7. 1.
Meta Annotaion Annotation을 지정할 때에 특정 field나 method에 한정해서 지정해 줄 수 있다. @Target(ElementType.FIELD)위와 같이 사용하게 되면 해당 Annotation은 Field에만 사용할 수 있게된다.FIELD 이외에도 다른 타입들이 존재한다.TYPE(Class, interface..) METHOD PARAMETER CONSTRUCTOR LOCAL_VARIABLE ANNOTATION_TYPE PACKAGE여러개를 사용하고 싶을 때에는 다음과 같이 Array형태로 지정한다.@Target({ElementType.FIELD,ElementType.METHOD }) 2013. 7. 1.
Fileld명을 테이블 컬럼명으로 바꾸자 가끔 이런것이 필요할 때가 있다.userId 를 USER_ID 로 바꾸는 기능.public class Test { public static void main(String[] args) throws Exception { String regex = "([a-z])([A-Z])"; String replacement = "$1_$2"; String str = "UserId"; String value = ""; value = str.replaceAll(regex, replacement).toUpperCase(); System.out.println(value); }} 2013. 4. 6.
Java에서 Null 값을 비교할 때 음.. 미묘한 내용이라 잘 이해가 되실지 모르겠습니다만.. 좀 전문적인 관점에서 설명을 해드리겠습니다. (어려운 내용이지만 오히려 이편이 이해가 더 빠를 수도 있을거 같아서요) 먼저 객체란 것은 무엇이고 변수란 것은 무엇인가? 그냥 다 그냥 값을 저장하는 공간 아닌가? 객체는 힙(heap)이라는 메모리 영역에 생성됩니다. 힙은 프로그램(프로세스 process)이 실행되는 동안 무언가 저장할 공간이 필요할 때 사용되는 메모리 공간입니다. 변수는 스택(stack)이란 메모리 영역에 생성됩니다. 스택은 쓰레드(thread)가 실행되는 동안 사용되는 영역입니다. (쓰레드란거에 대해서 이해를 하셨는지 모르겠습니다만) 하나의 프로세스에는 여러개의 쓰레드가 있을수 있습니다. 각 쓰레드는 고유의 스택영역을 가지지만 하.. 2013. 2. 12.
Deep Copy vs Shallow Copy 예전에 시험에서 나왔었는데...그때는 이게 뭔말인가 했다. -_-;;어디서 듣도 보지도 못한것이 굴러나왔나 했는데... [직역]Deep copy - 깊은 복사Shallow copy - 얕은 복사 Deep copy원본과 같은 데이터를 저장하고 있는 새로운 객체나 배열을 생성하는것원번이 바뀌어도 복사본은 독립적이기 때무에 영향이 없다. Shallow copy배열이나 객체를 복사할때 단순히 참조만 복사하는것.원본이 변경됨면 복사본도 변경된다. 까먹지 말자꾸나! 2013. 2. 12.
객체에는 메서드가 포함되지 않는다? 객채가 생성되면 인스턴스 변수는 포함이 되지만 메서드는 포함되지 않는다.왜냐고??인스턴스 변수는 인스턴스마다 다른 값을 가질수 있어야 하기 때문에 별도의 메모리 공간이 필요하다.그런데 메서드는 변하는게 아니다.그래서 메모리를 낭비해 가면서 인스턴스를 포함시킬 이유가 없다... 라고 오늘 책에서 봤다...처음 알았네 -_-;;; 2013. 2. 12.
파일 입출력. 가끔 찾아보기가 귀찮아서.. ㅡㅡ; try { BufferedReader in = new BufferedReader(new FileReader("src/input")); String s; while ((s = in.readLine()) != null) { System.out.println(s); } in.close(); } catch (IOException e) { System.err.println(e); System.exit(1); }} 2013. 1. 29.
728x90
반응형