수강한 클립명
파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음
코딩 비전공자라 학원에서 자바(코딩수업)수업을 수료했지만 실력부족을 느껴 기초부터 다시 해보자라는 생각과 웹개발의 전체적인 방법을 알아보고 싶어 주위에서 괜찮다고 했던 패스트캠퍼스 java/spring 웹 개발 마스터 를 수강하게 되었다.
완강을 하여 나만의 웹페이지를 만들고 이 미션수행을 통과해 환급을 받는게 올해 목표이다.
미션 일정
방법
직렬화(Serialization)
인스턴스의 상태를 그대로 저장하거나 네트윅으로 전송하고 이를 다시
복원(Deserialization)하는 방식
* 시스템 내부적으로 많이 씀 (프레임워크 등)
자바에서는 ObjectInputStream 과 ObjectOutputStream 및 보조 스트림을 사용하여 구현
--
Serializable 인터페이스
직렬화는 인스턴스의 내용이 외부(파일,네트웤)로 유출되는 것이므로 프로그래머가 객체의 직렬화 가능 여부를 명시함
구현 코드가 없는 mark interface
<사진 참조>
--
transient << 변수 앞에 붙이면 이 값은 직렬화 하지말라 이런뜻임
* 소켓등을 직렬화 할수 없을때는 transient 를 써야 함
--
Externalizable
> writeExternal, readExternal 메서드 : 직접 읽고 쓰는것을 구현할수 잇음
그 외 입출력 클래스와 데코레이터 패턴 - 1
File 클래스
파일개념을 추상화한 클래스
입출력 기능은 없고 파일의 속성, 경로, 이름등을 알 수 있음
RandomAccessFile 클래스 (자바에서 유일)
입출력 클래스 중 유일하게 파일 입출력을 동시에 할 수 있는 클래스
파일 포인터가 있어서 읽고 쓰는 위치의 이동이 가능함 (Seek 메서드)
다양한 자료형에 대한 메서드가 제공 됨
--
데코레이터 패턴 (Decorator Pattern)
자바의 입출력 스트림은 데코레이터 패턴을 사용
실제 입출력 기능을 가진 객체(컴포넌트)와 그 외 다양한 기능을 제공하는
데코레이터(보조스트림)을 사용하여 다양한 입출력 기능을 구현
상속보다 유연한 확장성을 가짐
지속적인 서비스의 증가와 제거가 용이함
그 외 입출력 클래스와 데코레이터 패턴 - 2
데코레이터 패턴을 활용 하여 커피를 만들어 봅시다.
아메리카노
라떼 = 아메리카노 + 우유
모카커피 = 아메리카노 + 우유 + 모카시럽
Whipping cream 모카 커피 = 아메리카노 + 우유 + 모카시럽 + Whipping cream
> 클래스를 각각 만들어서 그 전껄 상속받으면 만들 수 있음
<사진 참조>
Thread 구현하기
*안드로이드에서 요즘 많이 구현 함 (웹쪽은 내부적으로 지원함)
*Shared Resource (공유자원)을 중복으로 일어나면 문제가 될 수있어
동기화 (순서 맞추기)를 해줘야 함
Thread란?
Process : 실행중인 프로그램, OS로부터 메모리를 할당 받음
Thread : 실제 프로그램이 수행되는 작업의 최소 단위,하나의 프로세스는 하나 이상의 Thread를 가지게 됨
스케쥴러에 의해서 CPU를 점유하게 됨
<사진참조>
--
Thread 구현하기
-> 자바 Thread 클래스로 부터 상속받아 구현
-> Runnable 인터페이스 구현
<사진 필 참조>
크게 차이가 없지만 쓰레드 쓰는방법은 2가지다!!
----
Multi-thread 프로그래밍
동시에 여러 개의 Thread가 수행되는 프로그래밍
Thread는 각각의 작업공간(context)를 가짐
공유 자원이 있는경우 race condition이 발생
critical section에 대한 동기화 (synchronization|)의 구현이 필요
<사진 참조>
--
Thread의 여러가지 메서드 활용 - 1
sleep(시간) : 그 시간동안 runnable 상태로 빠짐 //-- 1/1000 시간
wait() : shared resource 메서드를 기다리기 위해 쓰는 메소드
join() : 두개의 쓰레드가 동시에 돌아간다고 했을때 한 쓰레드가 다른쓰레드에 join을 걸면 다른 쓰레드가 끝날때까지 join을 건 쓰레드가 runnable 상태로 빠짐
--
Thread 우선순위
Thread.MIN_PRIORITY(=1) ~ Thread.MAX_PRIORITY(=10)
디폴트 우선 순위 : Thread.NORM_PRIORITY(=5)
setPriority(int newPriority)
int getPriority()
우선 순위가 높은 thread는 CPU를 배분 받을 확률이 높음
currentThread 메서드 <사진참조>
--
join() 메서드
다른 thread의 결과를 보고 진행해야 하는 일이 있는 경우 join()메서드를 활용
join() 메서드를 호출한 thread가 non-runnable 상태가 됨
<사진참조>
* 하나의 쓰레드가 다른 쓰레드의 결과가 필요한 경우 보통 join() 메서드를 사용
--
->
*****영상을 보면 start() 메서드를 써서 하는데 내가하면 자꾸 에러가 난다. start()메서드가 없다고 나오는데 한번 확인할 필요성이 있는 듯 한다
--
Thread의 여러가지 메서드 활용 - 2
다른 thread에 예외를 발생시키는 interrupt를 보냄
thread가 join(), sleep(), wait()메서드에 의해 블럭킹 되었다면 interrupt에 의해
다시 runnable 상태가 될 수 있음
--
Thread 종료하기
데몬등 무한 반복하는 thread가 종료될 수 있도록 run()메서드 내의 while 문을 활용
Thread.stop()은
[패스트캠퍼스 수강후기] Java 웹 개발 마스터 올인원 패키지 Online 26회차 미션 - 자바인강 (2) | 2021.05.13 |
---|---|
[패스트캠퍼스 수강후기] Java 웹 개발 마스터 올인원 패키지 Online 25회차 미션 - 자바인강 (0) | 2021.05.11 |
[패스트캠퍼스 수강후기] Java 웹 개발 마스터 올인원 패키지 Online 23회차 미션 - 자바인강 (0) | 2021.05.06 |
[패스트캠퍼스 수강후기] Java 웹 개발 마스터 올인원 패키지 Online 22회차 미션 - 자바인강 (0) | 2021.05.01 |
[패스트캠퍼스 수강후기] Java 웹 개발 마스터 올인원 패키지 Online 21회차 미션 - 자바인강 (0) | 2021.04.28 |