본문 바로가기

Language

[java] Serialization IO 속도 향상 Speed Up with Fast Java and File Serialization | Javalobby ince the first version of Java, day-by-day many developers have been trying to achieve at least as good of performance as in C/C++. JVM vendors are doing their best by implementing some new JIT algorithms, but there is still a lot to do, especially in how we use Java. For example, there is a lot to win in objectsfile serialization - nota.. 더보기
[Java] NIO Channel [펌] NIO Channel에 관하여1> 채널(channel)이란?채널은 한마디로 서버와 클라이언트간의 통신수단을 나타낸다. 좀더 깊이 있게 본다면 하드웨어 장비, 파일 ,네트워크 소켓, 혹은 프로그램 컴포넌트와 같이 읽기나 쓰기등 한 개 이상의 뚜렷한 입출력 작업을 수행할 수 있는 개방된 연결을 나타낸다.2> 채널의 역활채널은 비동기적으로 닫히고 중단(interrupt)될 수 있다. 따라서 한 스레드가 한 채널에서 하나의 입출력 작업으로 블록화하면 다른 스레드가 그 채널을 닫을 수도 있다. 비슷하게 한 스레드가 한 채널의 입출력 작업으로 블록화되면 다른 스레드가 블룩화된 스레드를 중단시킬 수 있다. 그래서 파일입출력에서 블록화된 스레드를 언제든지 중지시킬 수 있게 되었으며, 이를 이용해서 네트워크에서 non-.. 더보기
[Java] 객체 직렬화 Serialization (ObjectInputStream / ObjectOutputStream) 객체 직렬화 ObjectInputStream / ObjectOutputStream 객체 스트림은 프로그램 메모리상에 존재하는 객체를 직접 입출력해 줄 수 있는 스트림으로 현재 상태를 보존하기 위한 영속성을 지원할 수 있다. 자바에서 객체 안에 저장되어 있는 내용을 파일로 저장하거나 네트워크를 통하여 다른 곳으로 전송하려면 객체를 바이트 형태로 일일이 분해해야 한다. 이를 위하여 객체를 직접 입출력 할 수 있도록 해주는 객체 스트림이다. 1. 객체 전송의 단계 객체를 분해하여 전송하기 위해서는 직렬화(Serialization) 되어야 한다. 객체를 전송하기 위해서는 3가지 단계를 거친다. (1) 직렬화된 객체를 바이트 단위로 분해한다. (marshalling)(2) 직렬화 되어 분해된 데이터를 순서에 따라.. 더보기
Log4j 사용법 logging-log4j-1.2.14.zip첨부파일 : 압축해제후 log4j-1.2.14.jar 파일을 JDK설치된 폴더의 lib/ext 디렉토리에 카피후 프로젝트 properties 의 Java Build Path > Library > Add External Jars ... 에서 추가시킴 LOG4J I. 들어가면서.. 그리고 log4j log4j는 자바 어플리케이션에서 빠르고 효과적으로 로깅 할 수 있도록 도와주는 오픈 소스 프로젝트입니다. 로깅(logging)은 코드의 가독성을 떨어뜨리는 단점이 있지만 애플리케이션에 문제가 있을 때 개발자가 자세한 상황을 파악할 수 있도록 해 주며 테스팅시 빠질 수 없는 요소입니다. 아마도 여러분들은 여러 어플리케이션이 추가되면서 각 개발자들만의 독특한 로깅방식이 서.. 더보기
J2EE란? 1. J2EE (Java 2 Enterprise Edition) ■ J2EE란? J2EE는 자바 기술로 기업환경의 어플리케이션을 만드는데 필요한 스펙들을 모아둔 스펙 집합입니다. J2EE를 만든 것은 Sun Microsystems이고 SUN에서 J2EE 스펙을 시범적으로 구현해두기는 하지만, IBM, BEA, Oracle, HP, Iona등 여러 벤더들도 그 스펙을 구현할 수 있으며 J2EE 호환성을 검증하 는 기구의 검증을 통과하기만 하면 J2EE 호환 제품으로 시장에 출시할 수 있습니다. 그리고 이런 벤더들은 J2EE 스펙을 개선하는 과정에도 활발히 참여하기 때문에, J2EE는 사실상 SUN의 독점적인 기술이라기 보다는 Java진영으로 불리는 여러 Vendor들과 개발자들이 같이 만들어 가고 공유하는.. 더보기
[Java Tip] clone()과 Cloneable Object 클래스에 clone() 메서드가 protected로 정의 되어있습니다. native 메서드입니다. 기본적으로는 메모리를 복사한다고 합니다. clone()을 지원하려면 그 클래스는 Cloneable 인터페이스를 implements 해야 합니다. 하지만, 우리가 일반적으로 알고있는 것과는 다르게 Cloneable 인터페이스에는 아무런 메서드도 정의되어 있지 않습니다. 제가 처음에 clone()에 대해서 굉장히 헷갈렸던 부분입니다. 일단, clone()을 지원하지 않을 거라면, 상관없고...clone()을 지원 할 클래스라면 Object 클래스에 정의 되어있는 protected Object clone() 메서드를 public으로 재정의 해서 사용해야 합니다. 재정의하지 않으면, 기본적으로 Obje.. 더보기
[Design Pattern: 구조] 11. Flyweight 목적Flyweight 는 동일한 것을 공유해서 객체 생성을 줄여 가볍게 만드는 것클래스 별로 factory를 씁니다. 그리고 그 factory에서는 자신이 찍어내는 객체들을 관리합니다. 이미 가지고 있는 객체에 대한 요청이 들어왔을 때는 관리하고 있던 객체를 던져주고, 가지고 있지 않은 것을 요청하면 새로 객체를 만들어 관리 리스트에 추가시키고 던져줍니다. **FactoryMethod와 굉장히 유사하다-키(이름이 되겠지요)를 통해 객체를 생성하는 부분에서는 거의 동일하다고 할 수 있다. Factory에서 이름을 받아 객체를 생성하니깐요. 하지만 동일한 키가 들어왔을때 동일한 갱체를 넘겨주느냐 새로운 객체를 주느냐에 대한 차이만 있네요예제 public class PersonFactory { private .. 더보기
[Design Pattern: 구조] 10. Pacade 목적여러가지 복잡한 것들을 하나로 간주해서 편하게 다루는 방법예를 들어, 우리가 흔히 자동차라고 하는 물건은 바퀴, 엔진, 오디오, 사이드 미러 등등 으로 이루어져있지만 우리는 그냥 다 자동차라고 생각하는 게 편합니다. 차안에서 음악을 듣고 싶으면, 그냥 오디오를 켜면 됩니다. "차량에 내장된 오디오"라는 것을 굳이 명확히 하기는 귀찮죠. 예제딱히 그닥 별다른 패턴이 아니기에 생략! 더보기