2020년 9월 23일 수요일

(자바/JAVA/자바교육)객체 직렬화(object serialization), 자바강의/자바동영상/자바강좌/JAVA교육/JAVA동영상,JAVA강의/JAVA강좌

 


(자바/JAVA/자바교육)객체 직렬화(object serialization), 자바강의/자바동영상/자바강좌/JAVA교육/JAVA동영상,JAVA강의/JAVA강좌 

 

1. 객체 직렬화(object serialization)

 

객체는 클래스를 통해 필요 한 시기에  생성되며 프로그램이 종료되지 않더라도  소멸된다. 물론 프로그램이 종료하면 사라진다. 

실행 시간에 유지하고 있던 객체 내부의 정보와 객체 자신의 정보를 어디엔가 기록해 놓고 나중에 필요한 시기에 다시 볼 수 있는 방법을 제공하는 것이 객체 직렬화 이다.

객체의 내용을 화일 혹은 네트워크를 통하여 byte stream으로 입출력한다.

객체를 저장장치(파일, DB)등에 저장, 검색, 로딩 할 수 있도록 함으로서 객체의 영속성 제공한다.

객체의 영속성을 위해 직렬화를 사용하여 꼭 필요한 데이터만 직렬화 하는 경량성을 제공

Java.io.Serializable 인터페이스 : 직렬화 가능 여부 판단

 

java.lang.Object : 직렬화 안된다. 즉 객체를 스트림으로 보낼수 없다.

java.lang.String : 직렬화 가능하며 객체를 스트림으로 보낼수 있다.

Serializable을 구현한 창(Window)를 스트림으로 다른 컴퓨터에 보내는 것이 가능하다.

직렬화 될 때 static필드, transient 필드는 제외

직렬화의 과정은 “인스턴스 변수의 값을 저장”하는 일인데 만약 인스턴스 변수가 다른 객체를 참조하고 있는 참조형의 변수일 경우 그 변수가 가리키는 객체 또한 직렬화 되어야 한다. 이렇게 직렬화는 복잡한 Tree형태로 계속 진행된다.

 

만약 참조형 변수가 가리키는 객체 또는 상위 클래스가 Serializable, Externalizable을 구현 하지 않았다면 직렬화가 되지 않으므로 제한적이나마 직렬화에 포함하기 위해서는 readObject 메소드및 writeObject를 적절히 프로그램 내부에 기록해 줌으로서 제한적이지만 가능한 방법을 제시한다(defaultReadObject, defaultWriteObject를 사용한다.)

 

OutputStream

ObjectOutputStream implements ObjectOutput

InputStream

ObjectInputStream implements ObjectInput

 

객체를 출력하기 위한 메소드 정의

DataOutput의 하위 인터페이스

writeObject(Object obj)

 

 

class ObjectOutputTest  {

    public static void main(String[] args)    {

        try {

            ObjectOutput s = new ObjectOutputStream(

                new FileOutputStream( "ObjectOutput.dat" ) );

 

            s.writeObject( “Hello~" );

            s.writeObject( new java.util.Date() );

            s.flush();

        } catch( Exception e ) {

            e.printStackTrace(); }

    }

}

 

객체를 입력하기 위한 메소드 정의

DataInput의 하위 인터페이스

Object readObject() throws ClassNotFoundException

 

class ObjectInputTest {

    public static void main(String[] args)    {

        try {

            ObjectInput s = new ObjectInputStream(

                new FileInputStream( "ObjectOutput.dat" ) );

 

            String hello = (String) s.readObject();

            java.util.Date date = (java.util.Date) s.readObject();

            System.out.println(hello);

            System.out.println(date);

        } catch( Exception e ) {

            e.printStackTrace(); }

    }

}

 

Hello~

Thu Sep 24 08:45:16 KST 2020

 

2. AWT 윈도우 객체직렬화 실습

 

 

package javatest;

 

import java.awt.Frame;

import java.awt.TextArea;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.ObjectInput;

import java.io.ObjectInputStream;

import java.io.ObjectOutput;

import java.io.ObjectOutputStream;

 

public class AwtTest extends Frame {

TextArea view = new TextArea();

 

// 윈도우가 생성될 때 가운데 위치시킴

public AwtTest() {

add(view, "Center");

}

 

public static void main(String[] args) {

Frame f = null;

try {

// 파일이 있으면 객체직렬화로 저장된 윈도우를 읽어옴

FileInputStream inFile = new FileInputStream("AwtTest.dat");

ObjectInput in = new ObjectInputStream(inFile);

f = (Frame)in.readObject();

}

catch(IOException ioe) {

// 파일이 없다면(최초실행되는 경우) 500, 300자리 윈도우 생성

f = new AwtTest();

f.setSize(500, 300);

}

catch(ClassNotFoundException e) {

e.printStackTrace();

}

 

// 윈도우 종료 이벤트 핸들러 처리

f.addWindowListener( new WindowAdapter() {

public void windowClosing(WindowEvent we) {

try {

FileOutputStream outFile = new FileOutputStream("AwtTest.dat");

ObjectOutput out = new ObjectOutputStream(outFile);

out.writeObject(we.getWindow());

out.close();

System.exit(0);

}

catch(IOException e) {

e.printStackTrace();

}

}

});

f.setVisible(true);

}

}

 

 

 

#자바직렬화#자바객체직렬화, #ObjectInputStream#ObjectOutputStream#자바#JAVA#자바동영상#자바강의#자바교육#자바강좌#자바동영상강의#추천자바강의#추천자바강좌#JAVA동영상#JAVA강의#JAVA강좌#JAVA교육#JAVA#추천JAVA강의#추천JAVA교육#추천JAVA강좌#자바소스#자바온라인교육#자바온라인강의 

(추천자바교육/추천자바동영상강의)자바 Set이란? TreeSet, SortedSet, HashSet, LinkedHashSet, EnumSet,(자바/JAVA/JAVA동영상/자바강좌/자바강의/JAVA동영상/JAVA강의/추천자바교육/추천JAVA교육/JAVA교육)

 (추천자바교육/추천자바동영상강의)자바 Set이란? TreeSet, SortedSet, HashSet, LinkedHashSet, EnumSet,(자바/JAVA/JAVA동영상/자바강좌/자바강의/JAVA동영상/JAVA강의/추천자바교육/추천JAVA교육/JAVA교육)


(


 

[Set 인터페이스]

java.util 패키지에 있고 Collection 인터페이스를 확장하는 Set 인터페이스는 중복 값을 저장할 수 없는 정렬되지 않은 객체 컬렉션이다. 

모든 Java 객체를 Set에 추가 할 수 있으며 Generics를 사용하지 않을 경우 다른 유형 (클래스)의 객체를 혼합 할 수도 있지만 그런 경우는 많지 않다.

4가지의 구현체가 있다.

java.util.EnumSet : 열거형 값만 포함할 수 있다.

java.util.HashSet : 해싱을 이용하여 구현, 중복을 허락하지 않고 순서를 보장하지 않는 Set의 대표 구현체

java.util.LinkedHashSet :  모든 요소가 Double Linked List로 유지되는 HashSet의 정렬 된 버전으로 데이터의 저장된 순서가 유지된다.

java.util.TreeSet : 값 저장을 위해 이진탐색트리를 사용, 추가와 삭제에는 시간이 조금 더 걸리지만 정렬, 검색에 높은 성능을 보이는 자료구조. 기본적으로 데이터를 오름차순으로 정렬한다.cc4a953a44044b405af0fc91e20c58dd_1600872


 

2020년 9월 22일 화요일

(JAVA교육/자바/JAVA/추천자바동영상교육/자바동영상강좌/자바교육)JAVA의 Map, HashMap, TreeMap 및 LinkedHashMap(자바/JAVA/자바동영상/자바강의/자바강좌)

 (JAVA교육/자바/JAVA/추천자바동영상교육/자바동영상강좌/자바교육)JAVA의 Map, HashMap, TreeMap 및 LinkedHashMap(자바/JAVA/자바동영상/자바강의/자바강좌)

(자바동영상교육/자바동영상강좌)JAVA의 Map, HashMap, TreeMap 및 LinkedHashMap(자바/JAVA/자바동영상/자바강의/자바강좌)

 

1. Map 인터페이스

 

키(Key)를 값(Value)에 매핑하며 각 키는 하나의 값에 매핑할 수 있으며 키값은 중복 될 수 없다.

Java 플랫폼에는 HashMap, TreeMap 및 LinkedHashMap의 세 가지 범용 맵 구현이 포함되어 있다

Map을 위한 일반 목적의 클래스

HashMap : 키들을 해쉬함수를 사용하여 해쉬함, 내부적으로 해당 키에 대한 HashCode를 생성하고 HashMap에 추가

LinkedHashMap : 키/값 하나의 엔트리를 이중 링크드 리스트로 구성. 링크드 리스크의 순서는 키가 맵에 삽입 된 순서 (삽입 순서) 이다.

TreeMap : 탐색트리 내에서 키들에 대한 전체적인 정렬을 Comparable 또는 Comparator 기능을 이용하여 정렬, 키/값 쌍을 정렬 된 순서로 저장하는 효율적인 방법을 제공하고 빠른 검색을 허용한다.

 

크기 정보 추출

int size()

boolean isEmpty()

검색, 비교, 복사

boolean containsKey(Object key)

boolean containsValue(Object value)

Object get(Object key)

Set keySet()

Collection values() : 모든 value를 포함하는 Collection 객체를 반환 한다.

Set entrySet()

boolean equals(Object o)

 

키-값 추가, 제거

Object put(Object key, Object value)

putAll(Map t)

Object remove(Object key)

Map.Entry 인터페이스

Map에 저장된 Key-Value pair의 객체 자료형(엔트리)

Map.Entry 객체를 열거하려면 해당 iterator() 메소드를 사용 한다.

Object getKey()

Object getValue()

Object setValue(Object value)

 

 

2. 클래스 계층 구조

248d2689cbcd9dfc2d61077093080416_1600782
 

 

3. 실습

 

package javatest;

 

import java.util.HashMap;

import java.util.Map;

import java.util.SortedMap;

import java.util.TreeMap;

 

public class MapTest {

public static void main(String[] args) {

Map<String, String> map0 = new HashMap<>();

map0.put("대한민국", "서울");

map0.put("중국", "베이징");

map0.put("이탈리아", "로마");

for(Map.Entry<String, String> entry : map0.entrySet()) {

System.out.println("Key : " + entry.getKey() + ", value : " + entry.getValue());

}

map0.forEach( (key, value) -> {

System.out.println("key : " + key + ", value = " + value);

});

SortedMap<String, String> sm = new TreeMap<String, String>();

sm.put("대한민국", "서울");

sm.put("중국", "베이징");

sm.put("이탈리아", "로마");

for(Map.Entry<String, String> entry : sm.entrySet()) {

System.out.println("Key : " + entry.getKey() + ", value : " + entry.getValue());

}

}

}

 

 

Key : 중국, value : 베이징

Key : 대한민국, value : 서울

Key : 이탈리아, value : 로마

key : 중국, value = 베이징

key : 대한민국, value = 서울

key : 이탈리아, value = 로마

Key : 대한민국, value : 서울

Key : 이탈리아, value : 로마

Key : 중국, value : 베이징

 

 

 

 

--------------------------

{중국=베이징, 대한민국=서울, 이탈리아=로마}

Key : 중국, value : 베이징

Key : 대한민국, value : 서울

Key : 이탈리아, value : 로마

--------------------------

{1=One, 2=Two, 3=Three}

Key : 1, value : One

Key : 2, value : Two

Key : 3, value : Three

--------------------------

{1=One, 2=Two, 3=Three}

Key : 1, value : One

Key : 2, value : Two

Key : 3, value : Three

--------------------------

Key : 1, value : One

Key : 2, value : Two

Key : 3, value : Three


 

 

#자바Map, #자바맵이란, #TreeMap, #SortedMap, #HashMap, #자바동영상#자바강의#자바교육#자바강좌#자바#JAVA#자바동영상강의#추천자바강의#추천자바강좌#JAVA동영상#JAVA강의#JAVA강좌#JAVA교육#JAVA#추천JAVA강의#추천JAVA교육#추천JAVA강좌#자바소스#자바실습     

(자바교육/자바동영상)JAVA의 익명클래스(Anonymous) 클래스 이론 및 실습(자바강의/JAVA교육/JAVA동영상/JAVA강의)(자바교육강의/자바교육동영상)JAVA의 익명클래스(Anonymous) 클래스 이론 및 실습(자바강의/JAVA교육/JAVA동영상/JAVA강의)

 (자바교육/자바동영상)JAVA의 익명클래스(Anonymous) 클래스 이론 및 실습(자바강의/JAVA교육/JAVA동영상/JAVA강의)(자바교육강의/자바교육동영상)JAVA의 익명클래스(Anonymous) 클래스 이론 및 실습(자바강의/JAVA교육/JAVA동영상/JAVA강의)


(자바교육/자바동영상)JAVA의 익명클래스(Anonymous) 클래스 이론 및 실습(자바강의/JAVA교육/JAVA동영상/JAVA강의)

 

1. 익명 클래스(annoymous class)

 

이름이 없이 포함된 클래스

클래스를 정의하지 않고 필요할 때 이름없이 즉시 선언하고 인스턴스화 해서 사용

이름이 없다는 점을 제외하면 로컬 클래스와 같다

형식 : new 클래스이름(or 인터페이스 이름) (…) {…}

제공된 클래스나 인터페이스를 구현한 하위 클래스를 정의한 후 객체를 생성하고 그 참조 값을 반환 한다.

new 수식이 올 수 있는 곳 어디든지 사용 가능하다.

필드, 메소드, 인스턴스 초기화 수식, 지역 클래스를 선언 할 수 있지만 생성자를 정의 할 수는 없다.

 

익명 클래스는 new 수식의 연장 이므로 반드시 세미콜론(;)을 붙여야 한다.

익명 클래스내부에서 외부의 메소드 내 변수를 참조할 때는 메소드의 지역 변수중 final로 선언된 변수만 참조 가능하다.

해당 클래스나 인터페이스를 정의하여 사용 할 때 여러 곳에서 사용되는 것이 아니라 단 한번만 정의해서 사용 하는 경우에 유용하다.

 

자바 GUI 프로그래밍에서 이벤트의 리스너 인터페이스에 대한 구현 클래스를 작성 하는데 사용된다.

자바 쓰레드에서 Runnable 인터페이스를 구현해야 하는데 외부에서 Runnable 인터페이스 구현 클래스를 만들지 않고 익명 클래스를 사용한다.

 

 

new Thread(new Runnable() {

    @Override

    public void run() {

        …..

    }

}).start();

 

 

class MyWork implements Runnable {

    @Override

    public void run() {  … }

}

 

new Thread(new MyWork()).start();

 

 

2. 실습

public class AnonymousClassTest {

 

   interface Hello {

      public void sayHello();

   }

 

   public void sayHello(String name) {

      class SayEnglish implements Hello {

            public void sayHello() {

                System.out.println("Hello " + name);

            }

      }

 

      Hello sayEnglish = new SayEnglish();

      sayEnglish.sayHello();

 

      Hello sayKorean = new Hello() {

         public void sayHello() {

           System.out.println("안녕~ " + name);

          }

      };

      sayKorean.sayHello();

   }

 

 

public static void main(String... args) {

   AnonymousClassTest myApp = new    AnonymousClassTest();

        myApp.sayHello("OracleJavaCommnunity");

    }

}

 

 

Hello OracleJavaCommnunity

안녕~ OracleJavaCommnunity


 

 

#자바익명클래스, #익명클래스란, #Anonymous클래스, #자바AnonymousClass, #자바동영상#자바강의#자바교육#자바강좌#자바#JAVA#자바동영상강의#추천자바강의#추천자바강좌#JAVA동영상#JAVA강의#JAVA강좌#JAVA교육#JAVA#추천JAVA강의#추천JAVA교육#추천JAVA강좌#자바소스#자바실습    


(C#교육동영상)C# ADO.NET 실습 ODP.NET/ODAC 설치 오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원

  (C#교육동영상)C# ADO.NET 실습  ODP.NET/ODAC 설치  오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원 https://www.youtube.com/watch?v=qIPU85yAlzc&list=PLxU-i...