iterator 사용시에 iterator 구동되는 동안에 insert, update, delete 를 시도하면 ConcurrentModificationException 이 발생합니다.

iterator 가 부모의 내용이 변경되지 않는 것을 전제로 하기 때문인데, 이 때 Iterator 로 빼낼 객체의 clone 을 만들어서 사용하면 해결됩니다.

Iterator it = ((ArrayList<String>)list.clone()).iterator();
while(it.hasNext()) {
    it.remove();
}


Posted by 행복한 프로그래머 궁금쟁이박

댓글을 달아 주세요

  1. 스파게티코더 2011.01.07 22:25 신고  댓글주소  수정/삭제  댓글쓰기

    clone을 하면 deep copy를 하는 것인가?
    아니면 인스턴스의 레퍼런스만 추가하는거?

  2. BlogIcon 박상구 2011.01.11 13:06 신고  댓글주소  수정/삭제  댓글쓰기

    얘기했듯이 셸로우 카피 인가벼.ㅎ

  3. 지나가던 공돌이 2011.07.26 10:31 신고  댓글주소  수정/삭제  댓글쓰기

    덕분에 에러를 하나 해결했습니다. 감사합니다.

  4. BlogIcon 피의화요일 2011.12.22 11:01 신고  댓글주소  수정/삭제  댓글쓰기

    상현아 올만이다.
    오류 난거 찾다보니 네 블로그까지 왔구나 ㅋㅋㅋㅋ

  5. BlogIcon Gucci Guccissima 2012.08.21 16:54 신고  댓글주소  수정/삭제  댓글쓰기

    이 문서는 위대한 작성

  6. 장원준 2012.10.01 16:11 신고  댓글주소  수정/삭제  댓글쓰기

    http://docs.oracle.com/javase/tutorial/collections/interfaces/collection.html
    iterator.remove 를 쓰는게 정석이라고 나오는 구만 ^-^

  7. BlogIcon sweertate 2013.07.02 19:30 신고  댓글주소  수정/삭제  댓글쓰기

    sdfsdfsdfsdfsdfsdfsdfsdfsdf

  8. BlogIcon sweertate 2013.07.04 00:59 신고  댓글주소  수정/삭제  댓글쓰기

    For anybody who values comfort over glamour, flip flops are heaven-sent. No other type of footwear is more comfortable. They are available in every color and can be made out of any material. You can have a pair to use at home, and more classy ones for social engagements.
    Past designs of flip flops were not very foot-friendly. A wearer would often need a few weeks to get used to a pair. Fortunately, modern footwear manufacturers have incorporated comfort in their designs making flip flops more popular. They can now be found in homes throughout out the world.
    Being easy to slip-on and off is just one of the lovely attributes of flip flops. It doesnt matter if they get wet and they allow women to show off their newly painted toenails. Their popularity has prompted almost all footwear companies to manufacture them.
    Some expensive models are available for brand-conscious individuals and some less costly models are available for thrifty costumers. It all depends on you; you can wear what kind of flip flops that satisfy your taste. But no matter how much they cost, they are still adored by countless consumers.
    It would be wonderful if society allowed people to wear flip flops whenever and wherever they went to. Unfortunately they are not allowed at workplaces and are considered to be informal by fashion authorities, limiting the places where you can wear them. I think that our feet would really appreciate it we could wear them more often.
    If you walk through any department store or shoe store and you notice the tons of sandals available. You'll notice that flip flops come in every color and material, which you could easily view in display in most living rooms. They may vary in price range and but are still a girls best friend.


출처 : http://calmmass.tistory.com/126

어떤 프로그램이든 단축키를 사용 하다 보면 작업을 하는데 있어서 효율성이 좋아 진다고 생각 한다.
하지만 단순하게 단축키만 사용 하기 위해서 무조건 외운 다면 큰 낭패를 볼 가능성이 크다.

그것은 Eclipse에서 자바의 기본적고 공통적인 것을 모델링 하여 만든 프로그램이라고 할 수 있다.
만약 어플리케이션을 만들려고 하는데 main을 체크하지 않고 작업을 진행하면 백번 천번을 작업 해도 어플리케이션이 될 수도 되서도 안된다. 
이러한 기본적인 개념을 말하는 것은 아니지만 충분히 자바에서 사용하는 여러가지 객체지향을 알아야 프로그램을 사용하는데 용이하다는 말이기도 하다.

1. Editing( 편집 )

1-1 커서 이동 / Windows 이동
  • Ctrl + D :  줄 삭제
  • Ctrl + Alt + ↑(위)/↓(아래) : 줄 복사
  • Ctrl + Shift + Enter : 현재 줄에서 새줄 추가
  • Shift + Enter : 다음 줄에 새줄 추가
  • Ctrl + L : 원하는 라인으로 이동
  • Ctrl + →(Right) : 다음 문자로 이동 
  • Ctrl + →(Left) : 이전 문자로 이동
  • F10 : 메뉴창을 활성화
  • Ctrl + F8 : 다음 Perspective로 이동
  • Ctrl + N :  새로운 파일 및 프로젝트 생성
  • Ctrl + Shift + ↓(Down) : Java Editor에서 다음 member로 이동
  • Alt + < : 이전 작업 화면
  • Alt + > : 다음 작업 화면
  • Ctrl + 1 : 컴파일 에러가 발생한 곳에서 Ctrl + 1을 누를 경우 컴파일 에러에 대한 해결책을 제시
1-2 주석
  • Ctrl + Shift + / : 주석 처리 
  • Ctrl + Shift + \ : 주석 풀기
  • Ctrl + / : 라인별로 주석처리

1-3 검색
  • Ctrl + J : 점증적 검색(키 수행 후 원하는 단어 입력하면 이클립스 하단바에서 찍히고 바로 검색 가능
  • Ctrl + K : 다음 찾기
  • Ctrl + Shift + K : 이전 찾기 
  • Ctrl + H : 검색 다이얼로그(메서드, 타입, 패키지 등 검색 가능
1-4 Tab 기능 / 코드어시스트
  • Tab : 들여 쓰기
  • Shift + Tab : 내여 쓰기
  • Ctrl + Space bar : 코드어시스트(키보드 Type3을 쓸 경우에는 왼쪽 Ctrl을 누른 상태에서 오른쪽 Ctrl을 누르고 왼쪽 Ctrl을 뗀 후에(오른쪽  Ctrl은 누른 상태) Space를 눌러 준다.)
1-5 기타
  • Ctrl + Shift + M : 특정 클래스  Import 시키기
  • Ctrl + Shift + O : 자동으로 Import 시키기
  • Ctrl + Shift + F : 코드 자동으로 정리 시키기
  • Ctrl + Shift + G : 특정 메써드나 필드를 Reference하고 있는 곳을 찾는다.
1-6 Information
  • Ctrl + Shift + R : 리소스 찾기
  • Ctrl + O : 레이어로 현재 파일의 Outline 보여줌
  • Ctrl + T : 레이어로 계층 구조 보여짐
  • F3 : 해당 메서드나 클래스가 정의된 곳으로 이동




2. Navigation 

2-1 에디터간의 이동
  • Ctrl + E : 에디터안에서 열린 파일간의 이동(작은 레이어로 뜬다.)
  • Ctrl + Shift + E : 에디터안에서 열린 파일간의 이동
  • Ctrl + F6 : 에디터안에 열린 파일간 이동하는데 F6 누를 때마다 하나씩 순차적으로 넘어감
  • Ctrl + F7  :  다음 View로 이동
  • Ctrl + Shift + F7 +  :  이전 View로 이동
  • Ctrl + F8 : 퍼스펙티브 간 전환
  • F12 : 컴파일 중 에러 등으로 포커스가 다른데로 갔을 때 Editor로 커서 이동

3. Debugging(디버깅)

3-1 디버깅 단축키

  • Ctrl + Shift + B : 현 커서의 위치에 브레이크 포인터 설정/해제
  • F11 : 디버깅 시작
  • F8 :  디버깅 계속
  • F6 : 한줄씩 실행(Step Over)
  • F5 : 한줄씩 실행 하되 함수일 경우 그 함수 내부로 들어감(Step Into)
  • Ctrl + R : 현재 라인까지 실행(Run to Line)

4. Run (컴파일 및 실행)

  • Ctrl + S : 자동으로 컴파일
  • Alt + Shift + X , J : Run Java Application (Alt + Shift + X 그외 여러가지 옵션이 있다.)




참고한 사이트 

http://omen666.tistory.com/98
http://www.javajigi.net/pages/viewpage.action?pageId=155
http://blog.outsider.ne.kr/243
Posted by 행복한 프로그래머 궁금쟁이박

댓글을 달아 주세요

  1. BlogIcon replica christian dior bags 2012.09.11 11:23 신고  댓글주소  수정/삭제  댓글쓰기

    문서는 위대한 작성, 저자는 의미를 표현하고자 써주세요.

자바에서 가비지 컬렉션은 언제 동작할지 알 수 없다.

idle 이거나 메모리가 부족하면 지 멋대로 동작한다고 한다.

하지만 강제로 동작을 시킬 수는 있다.

System.gc();

필요할 때 사용하자.
Posted by 행복한 프로그래머 궁금쟁이박

댓글을 달아 주세요

  1. 바나나용 2009.10.05 16:58 신고  댓글주소  수정/삭제  댓글쓰기

    고객님 System.gc()는 함부로 호출하시면 안됩니다. ㅋㅋㅋㅋㅋㅋ

자바에서 static 으로 변수를 선언하면 어떻게 될까.

여지껏 정확한 동작을 잘 모르고 있었다.

정확한 동작을 살펴본다.

static 으로 멤버변수를 선언하면 그 변수는 인스턴스 레벨이 아닌 클래스 레벨이 된다.

다시말해 클래스 자체에 메모리가 할당되어 변수로 가지게 되는 것이다.

코드를 보자.

public class StaticFieldTest
{
 int total = 0;
 static int grandTotal = 0;
 void accumulate(int amount)
 {
  total += amount;
  grandTotal += amount;
 }

}

grandTotal 을 static 으로 선언했다.

이렇게 되면 이 클래스의 인스턴스를 여러개 생성해도 grandTotal 의 값은 하나인 것이다.

왜냐하면 static 변수는 클래스 레벨에 존재하기 때문이다.

public class StaticFieldTestDrive
{
 public static void main(String[] args)
 {
  StaticFieldTest obj1 = new StaticFieldTest();
  StaticFieldTest obj2 = new StaticFieldTest();
  obj1.accumulate(10);
  obj2.accumulate(20);

  System.out.println("obj1.total = " + obj1.total);
  System.out.println("obj1.grandTotal = " + obj1.grandTotal);
  System.out.println("obj2.total = " + obj2.total);
  System.out.println("obj2.grandTotal = " + obj2.grandTotal);

 }
}

위 코드를 실행하면

---------- Java Running ----------
obj1.total = 10
obj1.grandTotal = 30
obj2.total = 20
obj2.grandTotal = 30

Output completed (0 sec consumed) - Normal Termination

위에서 보는 것과 같이 같은 값의 grandTotal 이 출력된다.

또 다르게 obj1, obj2 라고 코딩하지 않고 클래스 이름 즉 StaticFieldTest.grandTotal 을 직접 출력해도 같은 30 이 출력된다.

더불어 설명하면 static 변수나 메소드를 접근하는 방법은 클래스 이름을 이용하는 것이다.

인스턴스의 생성과는 상관없이 클래스 이름을 통해 접근할 수 있다.

static 으로 선언한 변수나 메소드는 인스턴스가 아닌 클래스 레벨에 존재한다. ( 모든 인스턴스에서 공유되는 자원이다. )

Posted by 행복한 프로그래머 궁금쟁이박

댓글을 달아 주세요

  1. Richpapa 2009.09.22 17:52 신고  댓글주소  수정/삭제  댓글쓰기

    그렇게 하지 않아도, main 메소드를 생각하면 쉬울 듯. 메인을 가지고 있는 클래스의 인스턴스보다 먼저 실행되어야만하는 이유 !!

    그리고 static {} 사용해서 실행해보면 bp 잡지 않는 이상 트레이스가 안되기 때문에 이것도 쉽게 알 수 있겠죠.

  2. 스파게티코드 2009.09.23 14:09 신고  댓글주소  수정/삭제  댓글쓰기

    싱글턴으로 DB 작업하는 메소드 구현할때도 사용했었지...
    기억 안나나 ㅋㅋㅋ

  3. BlogIcon 행복한 프로그래머 궁금쟁이박 2009.09.23 16:16 신고  댓글주소  수정/삭제  댓글쓰기

    아 생각났다.ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

이번주 5일간 ( 9.21 ~ 9.25 ) 자바 교육을 받는다.

몇번이고 배우고 공부했던 내용을 또 배울거라 생각을 하지만...

그래도 자지말고 듣자.

기본이 중요하니까.ㅋ

에디트 플러스에서 자바 컴파일하는 방법을 소개한다.

Tools > Configure User Tools 로 가서..

다음과 같이...











Posted by 행복한 프로그래머 궁금쟁이박

댓글을 달아 주세요

일을 하다가 MVM 이라는 용어가 나왔습니다. 처음 듣는 용어였지만 왠지 낯이 익었습니다.

생각해보니 JVM 과 비슷한 맥락인 것 같아서 찾아보니 앞에 한 글자만 다른 비슷한 용어더군요.

Java Virtual Machine 에서 Java 만 Multitasking 으로 바꾸면 됩니다.

풀네임을 알고나니 뭘 말하는건지 쉽게 알 수 있었습니다.

가상 머신 위에서도 이제 멀티 태스킹이 가능해야 한다는 것입니다.

이 기술의 핵심은 isolation 입니다. 자바에서 멀티 스레딩을 지원하고 있는데 이렇게 여러 어플리케이션들이

실행될 때 각각의 resource 들을 어떻게 분리할 것인가가 멀티 태스킹의 주요 역할인 것이죠.

MVM 은 모바일 기기에서 빛을 발하게 됩니다.

저도 핸드폰에 올라가는 자바 어플 개발자가 되고 싶네요~

Posted by 행복한 프로그래머 궁금쟁이박

댓글을 달아 주세요


 
썬테크블로거로 초대받아 다녀왔습니다^^;

아 역시 선에서 주최하는 행사답게 스케일이 커서 좋았습니다.ㅋ
 


좀 늦는 바람에 도착하자마자 산이이 식당으로 갔습니다. ㅋㅋ 오늘은 초고급 뷔페!!



어제와는 격이 다른 초호화 뷔페.. ㄷㄷㄷ

음식 3접시 + 디저트 1접시 해치우고 바로 세미나를 보러 갔습니다.

다른곳은 사람이 너무 많아서 사람이 비교적 적은 트랙에 가서 세미나를 들었습니다.

효율적인 어플리케이션 개발을 위한 기술이었나... 그 트랙에 갔습니다. 

"javaME를 위한 LWUIT와 JSR" 이라는 강연이었는데, 자바를 이용한 휴대폰 컨텐츠 개발을 다룬 세미나 였습니다.

세미나 도중에 들어가서 들었기 때문에.. 뭔얘기하는진 잘 모르고 그냥 시연하는것만 봤다능;;

다음시간에는 "Comet과 Ajax를 이용한 웹어플 개발" 이라는 세미나를 들었다.


강연자는 중국..? 대만..? 해튼 중국계인듯한 사람이었는데.. 마이클 리.... 님이었던듯.. 

기대하던 데모가 제대로 작동하지 않아 아쉬웠습니다.

같은 url 을 쳐 넣었는데 파폭에선 되고 IE 에선 안되고...

아... 그동안 수많이 삽질해왔던 것 같은데... 세미나와서도 보게 될 줄은 몰랐습니다.ㅋ

"아까는 분명히 잘됐었는데.. 지금은 안되네요ㅠㅠ"  강연자님 살짝 당황...^^; 

원래 개발자가 그래요.. 테스트 할때는 엄청 잘 되던것이 고객 앞에서는 버그 투성이..ㅋ

부끄럽지만 솔직히 2 틀간 가장 기억에 남는 것이 뷔페에서 먹은것이라는....ㄷㄷㄷ
 
즐거웠습니다!!!
Posted by 행복한 프로그래머 궁금쟁이박

댓글을 달아 주세요

  1. chpie 2008.10.18 22:40 신고  댓글주소  수정/삭제  댓글쓰기

    형 블로그 IE7 에서 'null 은 객체가 아닙니다 라고 에러나요

  2. BlogIcon 관리자 2008.10.19 18:17 신고  댓글주소  수정/삭제  댓글쓰기

    이제야 첫 글을 남기다니. 형은 그저 섭섭하구나.

  3. BlogIcon 관리자 2008.10.19 18:18 신고  댓글주소  수정/삭제  댓글쓰기

    alert 창 버그는 daum 에 신고했다;

  4. chpie 2008.10.19 23:59 신고  댓글주소  수정/삭제  댓글쓰기

    댓글을 달기 쑥쓰러워서요.. ㅋㅋ

간만에 자바 포스팅.. ㅋ

졸업작품 관련해서 스크린 캡쳐하는 모듈을 간단하게 구현하여 보았다.

자바를 이용해서 스크린 캡쳐라든지, 마우스, 키보드 제어 같은 저수준의 동작들을

네트워크를 통해서 제어할 수 있느냐가

이번 졸작의 핵심사항인데.. 과연 성공할 수 있을지 흥미진진.

우선 스크린 캡쳐 코드.

package capture;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import java.io.*;
import com.sun.image.codec.jpeg.*;

public class Main extends JPanel implements Runnable, ActionListener {

    JButton btn_capture;
    Image img = null;

    // 생성자. UI 배치.
    public Main() {
        this.btn_capture = new JButton("영상캡쳐");
        this.btn_capture.addActionListener(this);
        this.setLayout(new BorderLayout());
        this.add(this.btn_capture, BorderLayout.SOUTH);
    }

    public void actionPerformed(ActionEvent e) {
        String cmd = e.getActionCommand();
        if (cmd.equals("영상캡쳐")) {
            System.out.println("영상을 캡쳐합니다..");
            this.capture();                     // 영상캡처 버튼이 눌리면 캡쳐.
        }
    }

    private void drawImage(Image img, int x, int y) {
        Graphics g = this.getGraphics();
        g.drawImage(img, 0, 0, x, y, this);
        this.paint(g);
        this.repaint();
    }

    public void paint(Graphics g) {
        if (this.img != null) {
            g.drawImage(this.img, 0, 0, this.img.getWidth(this), this.img.getHeight(this), this);
        }
    }

    public void capture() {
        Robot robot;
        BufferedImage bufImage = null;
        try {
            robot = new Robot();
            Rectangle area = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());

            bufImage = robot.createScreenCapture(area);     // Robot 클래스를 이용하여 스크린 캡쳐.

            //Graphics2D g2d = bufImage.createGraphics();
            int w = this.getWidth();
            int h = this.getHeight();

            this.img = bufImage.getScaledInstance(w, h - 20, Image.SCALE_DEFAULT);
            //this.repaint();
            this.drawImage(img, w, h);
            saveJPEGfile("cap.jpg", bufImage);              // JPG 파일로 변환하여 저장.
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static boolean saveJPEGfile(String filename, BufferedImage bi) {
        FileOutputStream out = null;
        try {
            out = new FileOutputStream(filename);
            JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
            JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(bi);
            param.setQuality(1.0f, false);
            encoder.setJPEGEncodeParam(param);

            encoder.encode(bi);
            out.close();
        } catch (Exception ex) {
            System.out.println("Error saving JPEG : " + ex.getMessage());
            return false;
        }
        return true;
    }

    public void run() {
        while (true) {
            this.setBackground(Color.RED);
            try {
                Thread.sleep(1000);
            } catch (Exception e) {
            }
            this.setBackground(Color.GREEN);

            try {
                Thread.sleep(1000);
            } catch (Exception e) {
            }
        }

    }

    public static void createFrame() {
        JFrame frame = new JFrame("Jv");
        JFrame.setDefaultLookAndFeelDecorated(true);
        Container cont = frame.getContentPane();
        cont.setLayout(new BorderLayout());
        Main mm = new Main();
        //new Thread(mm).start();
        cont.add(mm, BorderLayout.CENTER);

        frame.setSize(400, 400);
        frame.setVisible(true);
    }

    public static void main(String... v) {
        //new Main();
        JFrame.setDefaultLookAndFeelDecorated(true);
        createFrame();
    }
}


이 코드의 핵심은 바로 이곳.
robot = new Robot();
Rectangle area = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
bufImage = robot.createScreenCapture(area);     // Robot 클래스를 이용하여 스크린 캡쳐.

Robot 클래스를 생성하고, 현재 화면의 사이즈를 Rectangle 클래스로 받아 createScreenCapture 메소드의 인자로 넘기면 BufferedImage 인스턴스를 리턴하여 이미지를 얻을수 있다.

다음은 실행화면.

사용자 삽입 이미지


바탕화면을 캡쳐한것이 Panel의 Center에 위치하게 된다.
또한 이 이미지는 JPG 파일로 변환되어 저장되게 된다.(saveJPEGfile 메소드)

참고로 Robot 클래스는 1.3 부터 기본으로 자바에 포함되어 배포되고 있으며 JavaDoc에 설명이 자세하게 되어 있다. 궁금하면 찾아보도록 ㅎㅎ

여기는 Robot 클래스를 잘 설명해놓은 사이트.

출처 : http://semtle.tistory.com  셈틀쟁님이의 블로그
Posted by 행복한 프로그래머 궁금쟁이박

댓글을 달아 주세요

  1. 2011.03.29 23:01  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다

Sun Tech Days 2008 Seoul

Etc 2008.10.01 14:48

이번에 초대를 받아 썬테크데이에 갑니다!

초대해 주신 박안나님께 감사드립니다.^^

Agenda 를 간단히 소개합니다~

http://kr.sun.com 에 가시면 자세한 정보를 볼 수 있습니다~

 
 
 
 
 
시 간 내 용
07:30 ~ 09:00 참가 등록
09:00 ~ 09:10
환영 오프닝쇼
09:10 ~ 09:50
기술 데모 : 참여의 시대 내일의 기술
09:50 ~ 10:10
환영사
10:10 ~ 11:00 기조 연설
Rich Green/썬마이크로시스템즈 소프트웨어부문 수석 부사장
11:00 ~ 11:20
휴식 및 전시부스 방문
  자바와 클라우드
컴퓨팅
효율적인 개발을
위한 혁신
오픈솔라리스 Hands-on-Lab
(실습)
11:20 ~ 12:10 GlassFish와
Java EE의 미래
JavaSE6U10 무엇이
달라졌나
리눅스의 미래 :
오픈솔라리스
JAX_WS와 WSIT를
이용하여 신뢰도와
보안성 높은
웹 서비스 구축하기
12:20 ~ 13:10 Zembly와
SocialSite를 이용한
클라우드 컴퓨팅
MySQL: Web 2.0을
위한 데이터베이스
C/C++/Fortran
애플리케이션 구축
13:20 ~ 14:20 점심 식사 및 부스 방문
14:20 ~ 15:10 Ajax와 프레임워크 JavaFX로 RIA 쉽게
만들기
오픈솔라리스와
리눅스를 위한
애플리케이션 성능
최적화 기술
시스템 어드민 이론:
ZFS를 활용한 간편한
데이터 관리
15:20 -16:10 자바 플랫폼의
신기능
Real Time Java로
예측 가능한
시스템 만들기
오픈솔라리스
개발방법 및
IPS 저장소에의
이용방법
시스템 어드민 이론:
오픈스토리지
16:20- 16:40 휴식 및 전시 부스 방문
16:40 - 17:30 자바 성능 향상 JavaFX로 쉽게
만드는 애니메이션과
미디어
오픈솔라리스 시작과
쿨 피쳐
Ajax 프레임워크를
이용하여 리치 웹
애플리케이션 구축하기
17:40 - 18:30 (J)Ruby와 Rails DTrace로 JVM 내부
들여다 보기
오픈솔라리스에서
개발부터 배포까지
18:40 - 19:05 경품 추첨
 
 
시 간 내 용
09:00 ~ 09:10 환영사
09:10 ~ 09:50
썬 커뮤니티 기조 연설
09:50 ~ 10:40
스폰서 기조연설
10:40 ~ 11:00
개발자 스타킹 대회 - 개발자 스타를 찾아라!
11:00 ~ 11:30
휴식 및 전시 부스 방문
  자바와 Web 2.0 Scripting and
Deployment
오픈솔라리스 Hands-on-Lab
(실습)
11:30 ~ 12:20 REST를 통한
네트워킹
자바 챔피언 세션 오픈솔라리스와
리눅스를 위한 병렬
애플리케이션의 개발
JavaFX
12:30 ~ 13:00 대화의 시간
-여러분이 주인공입니다!
대화의 시간
-여러분이 주인공입니다!
대화의 시간
-여러분이 주인공입니다!
13:00 ~ 14:00 점심 식사 및 전시 부스 방문
14:00 ~ 14:50 클라이언트와 서버를
위한 AMD의 색다른
제안
OpenESB와
기업 네트워킹
Intel 세션 DTrace를 이용하여
자바 애플리케이션
해부하기
15:00 -15:50 Comet 및Ajax를
이용한
웹 어플리케이션 개발
JavaME를 위한
LWUIT와 JSR
고가용과 업무
연속성을 위한
아키텍쳐
16:00 - 16:20 휴식 및 전시 부스 방문
16:20 - 17:10 자바 프레임워크
사례 연구
OpenSSO 및
OpenID를 비롯한
웹보안 강화방안
데스크탑 및 기업을
위한 가상화 기술
ZFS & IPS HOL
17:20 - 18:10 EJB 3, Spring,
SEAM
AMP를 활용하여
애플리케이션 성능
향상하기
안전한 개발부터
배포까지
18:20 - 18:10 경품 추첨

Posted by 행복한 프로그래머 궁금쟁이박

댓글을 달아 주세요

자바에서는 크게 다음 세 가지의 입출력을 다룬다.

1. 1 byte 단위 입출력
2. 2 byte 단위 입출력
3. 객체 단위 입출력


  • 1 byte 출력

콘솔 출력용
FileOutputStream fos = new FileOutputStream(FileDescriptor.out);
BufferedOutputStream bos = new BufferedOutputStream(fos);
DataOutputStream dos = new DataOutputStream(bos);
dos.write...


파일 출력용
File file = new File("파일명");
FileOutputStream fos = new FileOutputStream(file);
BufferedOutputStream bos = new BufferedOutputStream(fos);
DataOutputStream dos = new DataOutputStream(bos);
dos.write...


네트워크 출력용
Socket soc = new Socket(..);
BufferedOutputStream bos = new BufferedOutputStream(soc.getOutputStream());
DataOutputStream dos = new DataOutputStream(bos);
dos.write...


  • 1 byte 입력

콘솔 입력용
FileInputStream fis = new FileInputStream(FileDescriptor.in);
BufferedInputStream bis = new BufferedInputStream(fis);
DataInputStream dis = new DataInputStream(bis);
dos.write...


파일 입력용
File file = new File("파일명");
FileInputStream fis = new FileInputStream(file);
BufferedInputStream bis = new BufferedInputStream(fis);
DataInputStream dis = new DataInputStream(bis);
dos.write...


네트워크 입력용
Socket soc = new Socket(..);
BufferedInputStream bis = new BufferedInputStream(soc.getInputStream());
DataInputStream dis = new DataInputStream(bis);
dos.write...


  • 2 byte 출력

콘솔 출력용
OutputStreamWriter osw = new OutputStreamWriter(System.out);
BufferedWriter bw = new BufferedWriter(osw);
PrintWriter pw = new PrintWriter(bw);
pw.println(..);


파일 출력용
File file = new File("파일명");
FileWriter fw = new FileWriter(file);
BufferedWriter bw = new BufferedWriter(fw);
PrintWriter pw = new PrintWriter(bw);
pw.println(...);


네트워크 출력용
Socket soc = new Socket(..);
OutputStreamWriter osw = new OutputStreamWriter(soc.getOutputStream());
BufferedWriter bw = new BufferedWriter(osw);
PrintWriter pw = new PrintWriter(bw);
pw.println(..);


  • 2 byte 입력

콘솔 입력용
InputStreamReader isr = new InputStreamReader(System.out);
BufferedReader br = new BufferedReader(isr);
br.readLine();


파일 입력용
File file = new File("파일명");
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
br.readLine();


네트워크 입력용
Socket soc = new Socket(..);
InputStreamReader isr = new InputStreamReader(soc.getInputStream());
BufferedReader br = new BufferedReader(isr);
br.readLine();


 

  • 객체 출력

파일 출력용
File file = new File("파일명");
FileOutputStream fos = new FileOutputStream(file);
BufferedOutputStream bos = new BufferedOutputStream(fos);
ObjectOutputStream oos = new ObjectOutputStream(bos);
oos.writeObject(...);


네트워크 출력용
Socket soc = new Socket(..);
BufferedOutputStream bos = new BufferedOutputStream(soc.getOutputStream());
ObjectOutputStream oos = new ObjectOutputStream(bos);
oos.writeObject(...);



  • 객체 입력

파일 입력용
File file = new File("파일명");
FileInputStream fis = new FileInputStream(file);
BufferedInputStream bis = new BufferedInputStream(fis);
ObjectInputStream ois = new ObjectInputStream(bis);
try {
 Object obj = ois.readObject();
}
catch(ClassNotFoundException ee){}


네트워크 입력용
Socket soc = new Socket(..);
BufferedInputStream bis = new BufferedInputStream(soc.getInputStream());
ObjectInputStream ois = new ObjectInputStream(bis);
try {
 Object obj = ois.readObject();
}
catch(ClassNotFoundException ee){}

Posted by 행복한 프로그래머 궁금쟁이박
TAG I/O, Java, 자바

댓글을 달아 주세요