11월, 2013의 게시물 표시

서버만들기

서버측 ServerSoket serverSock = new ServerSocket(4242); //4242번포트 감시작업 시작 클라이언트측 Socket sock = new Sockt("190.165.1.103",4242); //서버소켓연결 서버측 Socket sock = serverSock.accept();//계속 기다림. 클라인트접속시 별도의 socket을 열어 리턴해줌

파일저장(텍스트)

쓰기 FileWriter -> BufferedWriter연쇄 읽기 FileReader -> BufferedReader연쇄 파싱 .split()

파일컨트롤 java.io.File

1. 파일 가리키기 File f = new File("neofile.txt"); 2. 디렉토리만들기 File d = new File("momo"); d.mkdir(); 3. 디렉토리내 목록출력하기 if (d.isDirectory()){    String[] dirContents = dir.list();    for(int i=0; i<dirContents.length; i++){   System.out.println(disContents[i]); } } 4. 파일의 절대경로구하기 sysout(dir.getAbsolutePath()); 5. 디렉토리삭제 boolean isDeleted  = f.delete();

패키지를 jar로 만들기 (확장lib포함시)

1. Fat jar 이클립스 플러그인을 다운받아 설치한다 2. 다운받은 jar 를 이클립스 plugin폴더에 복사한다 3. 이클립스 재실행 4. File->export의 other에 새로 추가된 "Fat Jar Exporter" 선택후 next 5. Jar로 패키징할 프로젝 또는 패키지를 선택후 next 6. Jar-name : jar 생성위치선택     Main-Class:에서 메인스레드 선택 7. next 8. 포함할 외부라이브러리 확인 9. finish

패키지를 jar로 만들기

1. 패키지 우클릭 2. export 3. java > Jar file 4. 왼쪽창에서 JAR로 만들 이름과 위치를 선택 5. next 6. next 7. Main class선택(실행시 처음 접근할 클래스) 8. finish(지정한 위치에 생성된다)

역직렬화: 객체복구

FileInputStram fileStream = new FileInputStream("MyGame.ser"); //file지정 ObjectImputStream os  = new ObjectInputStream(fileStream);//get Object Object one = os.readObject(); Object two = os.readObject(); Object three = os.readObject(); GameCharactor elf = (GameCharactor) one; GameCharactor troll = (GameCharactor) two; GameCharactor magician = (GameCharactor) three; os.close();

직렬화

FileOutputStream fs = new FileOutputStream("MyGame.ser");//파일연결법을 알고 있습니다 ObejctOutputStream os = new ObjectOutputStream(fileStream); //stream chain //객체저장법을 압니다 os.writeObject(characterOne); os.wrteObject(characterTwo); os.writeObejct(characterThree); os.close();

JCheckBox

JCheckBox check = new JCheckBox("Goes to 11"); check.addItemListener(this); public void itemStateChanged(ItemEvent ev){    String onoff = "off";   if(check.isSelected()) onoff = "on";   System.out.println("Check boxis "+ onoff); } check.setSelected(true); select.setSelected(false);

JTextArea

JTextArea text = new JTextArea(10,20); JScrollPane scroller  = JScrollPane(text); text.setLineWrap(true); scroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); scroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); panel.add(scroller); text.setText("Not at all"); text.selectAll(); text.requestFocus();

JTextField

JTextField f = new JTextField(20); JTextField f = new JTextField("Your name"); System.out.println(f.getText()); f.setText("watever"); f.setText(""); f.addActionListener(myActionListener); f.selectAll(); f.requestFocus();

GUI 만들기

1. JFrame frame = new JFrame(); 2. frame.getContentPane().add(button); 다른 대부분의 구성요소와 달리 JFrame에는 다른 위젯을 직접 추가할 수 없다 3. frame.setSize(300,300); frame.setVisible(true); 4. button.addActionListener(this); 5. public void actionPerformed(ActionEvent event){    button.setText("button clicked!!"); }

<강연:베르나르베르베르>

20131117 경희대 Who am I by 베르나르 베르베르  강연 ------------------------------- 이 내용은 강연중 필기된 내용을 토대로 재작성된 내용입니다. ------------------------------- 1. 나는 누구인가? 나는 친구로부터 한 영매를 소개받았고 그 영매는 나의 11가지 전생에 관한 이야기를 해 주었습니다 저는 111개 전생중 11개의 의미있는 전생을 가지고 있었습니다 그중 하나는 이집트 하렘여인으로서의 삶이었고 다른 하나는 일본 사무라이 무사로서의 삶이 었습니다 이상하게도 그런 삶들이 제 현실의 삶과 유사한 점이 있었습니다 저는 어린 시절 류머티즘으로 크게 아팠지만 막대기로 하는 운동을 잘하여 검도대회 우승까지 하였습니다 어쨌거나 사무라이와 같은 그런 시대에 상부의 명령에 복종하는 삶 자체는 원하지 않습니다 복종에 의한 삶은 쉬우나 의미없는 일이라고 생각하기 때문입니다 영매와의 만남을 통해 나는 내가 권태를 싫어하고 별을 좋아하고, 결투를 좋아하며, 복종을 싫어하는 사람이라는 사실을 알게되었습니다 또하나의 삶은 영매를 통한 최면 속에서 이루어졌습니다 그것은 아틀란티스에서의 삶이었습니다 그곳에서는 저는 아주 편안한 상태에 있는 삶이었고 800세의 늙은 현자였습니다 특이할 만 한 것은 저는 그곳에서 26세의 한 여자와 사랑을 했습니다 제 전생에서 가장 위대한 러브스토리였죠 물론 현재는 작가로서 여러분을 만나고 있습니다 저는 전생을 믿는 사람이 아니지만, 이러한 생각들은 저의 상상력의 나래를 펼치는데 도움을 줍니다. 상상이지만 이런 상상은 여러분을 만나게 하는 원동력이 되기도 하였습니다 한달 전 즈음, 저는 최면을 통해 다시 아틀란티스로 돌아가기 위한 시도를 하였으며 그 시도는 성공하엿습니다 저는 그곳에서 만나고자 했던 인물을 만나는데 성공을 했고 그 사람에게 가르침을 요구하였습니다("당신의 평화로움의 비결은 무엇입니까?") 그러자

자바 디자인 기타 패턴

자바에서 사용할 수 있는 디자인패턴 정리 Bridge pattern - 구체구현과 추상부를 모두 바꿔야 할 때 Builder pattern - 복합개체의 생성 및 사용(Iterator Pattern의 사고방식과 동일) Chain of responsibility pattern - 요청의 응답개체를 순차분기시킬때 FlyWeight pattern - 1객체로 다수"가상인스턴스"를 제공(상태만 달리해서)-메모리절약 Interpreter pattern - 특정 언어에 대한 파싱 Mediator pattern - 객체간 복잡한 통신과 제어를 한 곳에 모을때 Memento pattern - 객체복구(ex 작업취소 등) Prototype pattern - 어떤 객체의 인스턴스를 만드는 작업이 자원을 먹거나 복잡할때 Visitor pattern - 객체에 기능추가할때 캡슐화가 필요없을때

자바 디자인 패턴 기본정리

데코레이터 - 객체를 감싸 새로운 행동을 제공 스테이트 - 상태기반의 행동을 캡슐화하여 위임을 통해 필요행동을 선택 스트래티지 - 교환가능한 행동을 캡슐화하고 위임을 통해 필요행동을 선택 이터레이터 - 컬렉션이 어떻게 구현되었는지 드러내진 않으면서도 컬렉션 내에 잇는 모든 객체에 대해 반복 작업을 처리할 수 있게 해 줍니다. 퍼사드 - 일련의 클래스에대해 간단한 인터페이스를 제공 프록시-객체를 감싸서 접근을 제어 팩토리메소드-생성할 구상클래스를 서브클래스에서 결정(ex DB연결팩토리) 어댑터-객체를 감싸서 다른 인터페이스를 제공 옵저버-상태가 변경되면 다른 객체에 연락을 돌릴 수 있도록 템플릿메소드-알고리즘의 개별단계구현을 서브클래스에서 결정(ex 알고리즘의 일부기능이관) 컴포지트-클라이언트에서 객체컬렉션과 개별객체를 똑같이 다루도록(ex nod와 leaf) 싱글턴-딱 한 객체만 생성되도록(ex sync) 추상팩토리-클라이언트에서 구상클래스를 지정하지 않으면서도 일군의 객체생성에 도움 커맨드패턴-요청을 객체로 감쌈 -------------- 참고> GoF의 디자인패턴:Design Pattern 23개의 기본패턴모음집

MVC요약

- MVC는 옵저버패턴+스트래티지패턴+컴포지트패턴으로 된 컴파운드패턴이다 - 모델은 옵저버패턴을 이용하여 옵저버에 대한 의존성을 없애면서도 자신의 변경사실을 알린다 - 컨트롤러는 뷰의 전략객체다 - 뷰는 컴포지트패턴을 이용해 UI를 구성한다 - MVC는 서로 느슨하게 결합한다 - 새로운 모델을 도입할 때는 어댑터패턴을 활용한다 - 모델2는 MVC의 웹버전이다 - 모델2의 컨트롤러는 Servlet이며 뷰는 JSP다.

<객체지향원칙>

- 바뀌는 부분은 캡슐화 한다 - 상속보다는 구성을 활용한다 - 구현이 아닌 인터페이스에 맞춰서 프로그래밍한다 - 상호작용하려면 느슨한 결합을 사용한다 - 클래스는 확장에 대해서는 열려잇지만, 변경에 대해서는 닫혀있어야한다(OCP) - 추상화된 것에 의존하라. 구상클래스에 의존하지 마라. - 친한 애들끼리만 얘기한다 - 먼저 연락하지 마세요. 저희가 연락드리겠습니다. - 클래스 변동사유는 한가지 뿐이어야 한다.

MVCPattern(in compoundPattern) & Model 2

1. http request 2. servlet Controller   a. get javaBean   b. set javaBean   c. model request 3. model response 4. servlet Controller   send javaBean to JSP(=view) 5. http response

MVC에서 쓰이는 패턴

스트래티지 패턴 - 뷰와 컨트롤러 옵저버패턴 - 모델에서 뷰와 컨트롤러로(옵저버=뷰를 등록) 컴포지트 패턴-뷰가 그림을 그리는 동작(node & leaf)

<사랑한다면 결핍을 선물하라.>

부모가 아이를 더 크게 성장시키려면 모든 걸 갖추어주는 배려는 독이 될 수 있다. 어느 정도 결핍을 허용하고, 그 속에서 스스로 판단하고 걸어갈 수 있게끔 해야 한다. 인류사의 모든 문명은 결핍에서 성장하고 풍요에서 쇠퇴해갔다. 개인도 마찬가지다. - 한형조 (한국학 중앙연구원 교수) 그야말로 헝그리 정신이 필요한 시대입니다. 그러나 실제로 헝그리 하지 않은 상황에서 헝그리 정신을 갖는다는 것은 매우 어려운 일입니다. 역으로 생각하면, 그렇기 때문에 오히려 사랑하는 자녀, 사랑하는 후배, 부하직원들에게 어떻게 하면 결핍을 선물할까? 헝그리 정신을 어떻게 심어줄까? 더욱 더 고민해야 하는 때라 할 수 있습니다. by kyh

컴파운드 패턴(Compound Pattern)

패턴의 패턴 패턴의 모임

[본문스크랩] java Swing의 효용가치?

이미지
 지식Q&A > 컴퓨터통신 > 프로그래밍 > 웹프로그래밍 > 자바  질문:  java Swing의 효용가치? bei**** / 2003-08-02 18:19 java Swing이라고 아실겁니다.. 기존의 awt의 사용상의 한계를 뛰어넘은.. 어떤 플래폼에서도 영향을 받지않고 똑같은 모양의 자체컴포넌트를 쓸수있고.. 암튼 발전된 구조의 이벤트, 그래픽 처리등등.. 심도깊게 공부를 하지 않아서 자세히는 모르겠지만.. 암튼 자바의 진보된 Application 및 Applet 개발툴 정도로 알고 있는데요.. 아직까지 Swing으로 작성된 프로그램을 데모프로그램이외에는 본적도 없고.. 물론 재미 삼아 짜는 사람들은 극소수 봤습니다만.. Swing으로 작성한 실제로 사용하는 경우를 못봤고.. 타언어로 작성된 프로그램과 비교에서도 속도면에서 엄청 밀리는 느낌인데요.. 이런 상황에서 Swing을 공부할 필요가 있을까하는 생각이 밀려오네요.. 물론 공부해서 해보단 득이 되겠지만.. 그래도 어느정도의 목표의식을 가지고 공부하기엔 약간은 혼란스러운 상황인데요.. 혹시나 Swing 효용성(?)에 관해 생각있으신 분들 답변좀.. 답변:  www.thinkfree.co.kr solik / 2003-08-03 02:42 스윙은 무겁고 느리다... 네 맞습니다..분명히 C++ 에 비하면 느립니다..어쩔 수 없는건 아시죠? JVM 이 있는한 그건 해결되지 못할 듯 싶습니다. Swing 의 효용가치를 얘기하자면 비교해야할...즉..너무나 상대적인 요소들이 많기 때문에 머라 말하기가 어렵네요..하지만 한가지는 확실하죠..^^ Write Once, Run Anywhere.... 어디서든 실행된다는거.. 그 하나만으로도 충분한 효용가치가 있지 않을까요. 스윙 데모만 보셨다구여..여기 좋은 실제 응용예가 있습니다. 씽크프리오피스 라고 들어보셨나요.. 100% 자바로 구현된(Swing) 어플리케이션 이구여, 우리나라에서 개발되어 이미 세계적으로 꽤 알려진 프로그램입니다.

Proxy Pattern 정리

1. 접근제어 2. 원격프록시 - 원격데이터전달 3. 가상 프록시 - 비용이 큰 객체 접근제어(대용량 이미지객체 등) 4. 보호 프록시 - 권한제어 5. 그 밖 - 캐싱, 동기화, 방화벽, 지연복사 6. 데코레이터와 비슷하지만 용도가 다르다 7. 데코레이터는 객체행동을 추가하지만, 프록시는 접근을 제어한다 8. 자바내장프록시는 동적프록시클래스를 즉석에서 생성한다 9. 다른 래퍼와 마찬가지로 포함 클래스가 증가한다

객체 행동을 통제하는 패턴

데코레이터  패턴 - 다른 객체를 감싸서 새로운 행동을 추가 퍼사드 패턴 - 여러 객체를 감싸서 인터페이스를 단순화(대체 인터페이스제공) 프록시 패턴 - 다른 객체를 감싸서 접근제어 어댑터 패턴 - 다른 객체를 감싸서 다른 인터페이스 제공

프록시패턴 vs 데코레이터패턴

프록시 : 원격or가상개체를 대변하여 통신 및 접근통제 데코레이터 : 객체의 기능을 보강

RMI 복습

1. 모니터링이 시작되면, 2. 원격객체의 프록시를 가져온다음 3. 각 원격메서드를 호출합니다 4. 서버의 스켈레톤이 반응하여 상태를 리턴하면 5. 로컬의 프록시가 반응하여 서비스에 전달합니다 -------------------------------------------------------------------------- service&stub-Proxy     ---      skeleton-service&stub

RMI 개조

<일반 코드를 원격서비스로 개조하는 방법> 1. 원격인터페이스를 만듭니다   ㄱ. 원격 클라이언트에서 호출할 수 잇는 메소드를 정의해야 합니다 import java.rmi.* public interface Aaaaaa extends Remote{    public int getCount() throws RemoteException;   public String getLocation() throws RemoteException;   public state getState() throws RemoteException; //직렬화대상 } 2. 인터페이스의 모든 리턴이 직렬화 가능해야합니다 import java.io.Serializable;//아무메소드도 없습니다 public interface State extends Serializable{   public void insertQuarter();   public void ejectQuarter();   public void turnCrank();   public void dispense(); } 3. 구상클래스에서 인터페이스를 구현합니다

RMI 작동방식

1. Naming.lookup("rmi://127.0.0.1/RemoteHello"); 2. reterned StubObject at RMI registry 3. use StubObject

RMI

<make remote interface> 1. extends java.rmi.remote 2. exception RemoteException at all 3. return value is primitive or serializable. <make service class> 1. make remote interface 2. extends UnicastRemoteObject 3. make Remoteexception 4. registring <make stub and skeleton> 1. execute RMIC 2. result is 2class maked   a. _Stub   b. _Skel <execute rmiregistry> 1. rmiregistry 2. start service

java 및 linux 참고 (제갈장비)

http://dojeun.egloos.com/

Java Serialization by 제갈장비(http://dojeun.egloos.com/317825)

Java Serialization 알자 이 자료는 자바랜드(www.javaland.co.kr)의 박정기께서 기고하신 내용입니다. Java Serialization 맛보기 Java Serializatoin은 자바 객체를 저장하거나 전송하기 위하여 자바 객체의 코드를 다시 복원가능한 형태의 Stream으로 직렬화 시켜주는 것을 말한다.  가장 간단한 형태부터 시작해서 자바 시리얼라이제이션의 예를 살펴 보도록 하겠다. << swrite.java>> import java.lang.*; import java.io.*; import java.util.*; class swrite {     public static void main(String args[])     {        try{               FileOutputStream f = new FileOutputStream("tmp");         ObjectOutput s = new ObjectOutputStream(f);         s.writeObject("Today");         s.writeObject(new Date());         s.flush();        }          catch(IOException e) { }              System.out.println("Today");          System.out.println(new Date());     } } 위의 프로그램은 File Stream을 열어서 tmp라는 파일에 2개의 객체("Today"라는 String 객체와 Date 객체)를 저장하고 있다. 여기서 객체저장을 위해 writeObject라는 메쏘드가 사용되고 있다는 것을 알 수 있다. 위의 프로그램을 실행하면 2 객체가 시리얼라이제이션이 일어나서 다시 복원가능한 형태로되어 직렬화되어 tmp라는 파일로 저장된다. 객체를 파일로 저장하다니? 얼마나 놀라

디자인 패턴

스테이트패턴 - 어떤 상태가 바뀜에 따라 객체의 행동을 바꿀 수 있다 옵저버패턴-어떤 상태가 변경되었을때 일련의 객체들에게 연락을 할 수 있다 어댑터 패턴 - 하나 이상의 클래스의 인터페이스를 변환한다 퍼사드 패턴-일련의 클래스들에 대한 인터페이스를 단순화한다 이터레이터 패턴-컬렉션의 구현을 드러내지 않으면서 컬렉션에 잇는 모든 객체들에 대해 반복작업을 할 수 있다 컴포지트 패턴-클라이언트에서 객체 컬렉션과 개별객체를 똑같은 식으로 처리할 수 있다

초전도현상, 초유동현상

절대 영도에 가까운 극저온 상태에서는  초전도 현상 과  초유동 현상 이 나타난다.  초전도 (Superconductivity)란 어떤 온도(전이온도) 이하에서는 전기 저항이 0이 되는 현상을 말한다.  초유동(superfluidity)은 액체의 점성 저항이 0이 되는 현상으로  액체 헬륨은 2.2K (약 -271 °C) 이하로 냉각시키면 초유동 상태가 된다.  초전도와 초유동은 극저온에서 나타나는 특이한 현상으로  원자 수준의 미시 세계에서 나타나는  양자  현상이 거시 세계에서는 관찰되는 경우다.

[JAVA] 접근 변경자 ( public, protected, default, private )

자바(JAVA)에는 총 4가지의 접근 변경자가 있다. + 접근 허용 가능 범위    public > protected > default >private - public  :   클래스, 변수, 메소드 생성자 등의 모든 접근을 허용              보통 상수(static final 변수), 메소드(get/set) 등에 많이 사용. - protected :  default와 같으나 추가적으로, 다른 패키지의 하위클래스에서도 상속 가능.                 - default :   같은 패키지에 있는 (클래스, 변수, 메소드, 내부클래스)에서 접근 가능               접근 변경자가 없는 선언되지 않은 것이 default - private :   같은 클래스에서만 접근이 가능               보통 인스턴스 변수, 외부에서 호출해서는 안되는 메소드

ORACLE DUMP (버전이 다를때-11G에서 10G로 oracle data pump)

결론. 오라클의 data pump로 하위 호환성을 가지게 덤프를 뜨려면(스키마를 다른이름의 스키마로 다른 테이블 스페이스에) 11g의 DB로부터 expdp test/test@SID schemas=TEST dumpfile=TEST.dmpdp VERSION=10.2  요렇게 떠서 10g의 DB로 impdp test/test schemas=TEST directory=data_pump_dir dumpfile=TEST.dmpdp REMAP_SCHEMA=test:test1 REMAP_TABLESPACE=test:test1  요렇게 밀어 넣는다. 참고) 일반적 덤프(전체DB덤프) 오라클BIN폴더\EXP userid=아이디/패스워드@SID명 buffer=8192 file=덤프파일경로 및 파일명.dmp full=y log=로그파일경로 및 파일명.txt

오라클 전역데이터베이스, SID, 스키마, 로그인계정명

오라클이 설치되면 전역데이터베이스명을 갖는다 SID는 이 전역데이터베이스의 신분증이다 SID의 예하로 각 스키마가 위치하며 스키마는 로그인계정명이다 ------------------------------------------------------------ 전역데이터베이스=SID 로그인계정=스키마