Language 썸네일형 리스트형 [Design Pattern: 생성] 2. Factory Method 목적객체를 생성하는 Factory 클래스를 만들어 코드를 사용한 클래스(Main)에서는 new를 하지 않고 유연하게 사용하고자 하는 목적 JAVA API 예제 Boolean a = Boolean.valueOf(true); Boolean b = Boolean.valueOf(true); System.out.println(a==b); Boolean.valueOf()를 통해 new를 하지 않고 객체가 생성됬다. 그리고 내부적으로 동일한 매개변수가 들어왔을 떄 객체를 생성하지 않고 동일한 레퍼런스를 보내는 로직을 Factory에서 담당하고 있다. 예제 인터페이스 Unit을 상속으로 받은 Marin과 Mdedic을 만든다. Unit은 공통적으로 Attack()을 가지고 있다. public abstract class.. 더보기 [Design Pattern: 구조] 6. Adapter 목적개별적으로 작동하는 특정한 CLASS를 공동의 Interface 규격에 맞추도록 하는 목적즉, 특정한 Interface 규격에 맞도록 중간 연결 클래스를 하나 더 만들어, 개별적인 CLASS의 수정없이 공동 Interface 규격에 맞춤 구현방식 Client에서 요구하는 규격을 맞추기 위해 객체를 변경함기능객체를 상속하고 Client의 요구규격에 맞는 Interface를 implements함쉽게 말해 독립적인 CLASS A가 있다. 근데 다른 클래스와의 인터페이스를 위해 INTERFACE B를 만들고, 이 규격에 맞추기 위해 extends A implements B를 한 class C를 만든다. 기능은 A의 기능을 상속해서 사용하고, 규격만 B로 다시 재정의 하는 것이다. Class C에서 다시 정의.. 더보기 [Design Pattern: 생성] 1. Singleton 목적동일한 인스턴스를 여러 객체에서 사용하고 싶은 경우 사용함즉, 모든 객체에서 사용하는 Global 전역 변수 인스턴스 같은 개념 **여러 객체에서 사용하는 특징에 따라 synchronized 해야 스레드에 안전함예제 public class Singleton { private static Singleton instance = null; // Closed Constructor private Singleton() {}; // Singleton Constructor public static synchronized Singleton getInstance() { if (instance == null) { instance = new Singleton(); } return instance; } } 동기화 때문에 성.. 더보기 Swing Layout [LayoutManager] _레이아웃 관리자 GUI프로그램의 화면구성은 매우 중요함 따라서 대부분의 GUI프로그램을 개발시 도구를 지원 그러나 자바에서는 GUI를 구성하는 개발 도구를 기본 버전에서는 지원하지 않음 도구를 사용하지 않고 가장 효율적으로 컴포넌트 배치관리 방법 레이아웃 관리자는 컴포넌트 배치 역할을 하는 레이아웃 관리자를 사용 컨테이너 클래스를 상속받는 클래스에서만 사용가능 Panel, Frame, Window, Dialog, ScrollPane등 레이아웃의 종류 FlowLayout, GridLayout, BorderLayout, CardLayout, GridBagLayer 등 수동 Layout의 장점 단점. 장점 : 수동으로 컴포넌트를 배치하는 작업은 개발자가 원하는 대로 화면을 구성할.. 더보기 Swing으로 만든 JAR파일을 EXE로 변환 자바 어플리케이션도 실행 jar ( Executable JAR ) 파일로 작성 하면, jar파일을 더블클릭하여 실행하는 것이 가능합니다만.. 정말? 자바어플리케이션을 실행할 PC에 자바구동환경( 자바런타임 JRE )이 미리 설치 되어 있지어야 한다는 약점이 있습니다. 이 때문에 자바 Swing/AWT등으로 작성된 GUI어플리케이션의 경우 어플리케이션 작성 후 Executable JAR파일을 윈도우용 실행 파일(exe)로 감싸는(Wrapping)하는 단계를 거치게 됩니다. Executable JAR 파일을 exe파일로 감싸데는 몇 가지 방법이 있지만 이번 포스팅에서는 launch4j를 이용해 자바 어플리케이션을 exe형태의 파일로 변환하는 방법을 소개토록 하겠습니다. 잠깐 launch4j를 소개하자면 so.. 더보기 Java arraycopy [Java 배열 복사] System.arraycopy(array, 0, copy, 1, 3 ); array[0] = 1; // 이거부터 3개니까 array[1] = 2; // 2번째 array[2] = 3; // 3번째 여까지 복사 array[3] = 4; array[4] = 5; copy[0] = 0; copy[1] = 0; // 복사되는 대상은 1번째 배열부터니 여기서부터 copy[2] = 0; // 저번째 copy[3] = 0; // 3번째 여까지 복사. copy[4] = 0; 결과 찍어보면> 1 2 3 4 5 0 1 2 3 0 public class Test { public static void main(String args[] ) { // 배열복사 int array[] = { 1,2,3,4,5 }; int copy[].. 더보기 JAVA NIO(non-blocking I/O) NIO 기존의 자바IO가 blocking IO였기 때문에 C,C++에 비해 상당히 느렸다. 또한 File Locking 같은 기능도 지원되지 못했다. 두가지 비 효율적인 부분1. 커널 영역 버퍼에서 프로세스 영역 안의 버퍼로 데이터를 복사[디스크]에서 [커널 영역 버퍼]로 데이터를 저장하는 것은 디스크 컨트롤러가 DMA 기술을 사용하기 때문에 CPU를 사용 하지 않는다. 하지만 [커널 영역]에서 [프로세스 영역 버퍼]으로 데이터를 전달하는 것은 CPU를 사용한다. 만약 커널 영역의 버퍼에 저장된 데이터를 직접 사용한다면 복사하는 시간을 단축 할 수 있고, 복사 대상인 데이터의 가비지 컬렉션도 필요 없다. 그리고 CPU자원도 최소화 할 수 있다. 2. 디스크 컨트롤러에서 커널 영역의 버퍼로 데이터를 복사하.. 더보기 Java String interm String.intern() String클랫의 intern()은 String인스턴스의 문자열을 'constant pool'에 등록한다.'constant pool'에 이미 존재할 경우에는 해당 문자열의 주소를 반환한다. ------------------------------------------------------String s1 = "AAA"; String s2 = new String("AAA"); s2 = s2.intern();------------------------------------------------------ s2에는 s1과 같은 주소값이 저장되게 된다(기존의 s2의 인스턴스는 가비지 컬렉트 된다)intern은 Heap에 만들어진 객체를 놓아주고, String pool에 있는 객체를 가.. 더보기 이전 1 2 3 4 5 6 7 다음