Thread란?


사전적 의미인 실한가닥에서 유래하여 한 가지 작업을 실행하기 위해 순차적으로 실행할 코드를 실처럼

이어 놓았다고 해서 유래된 이름


하나의 스레드에서는 하나의 코드 실행흐름

프로세스 내에서 스레드가 두개면 코드 실행흐름도 두개


*process란? 실행 중인 하나의 애플리케이션



Multi Thread란?


멀티 프로세스는 애플리케이션 단위의 멀티 태스킹

멀티 스레드는 애플리케이션 내부이 멀티 태스킹


멀티 프로세스는 각자 할당받은 메모리를 가지고 실행하기 때문에 각각의 프로세스는 다른 프로세스에게

영향을 주지 않는다.


멀티 스레드는 하나의 프로세스 안에 있기 때문에 하나의 스레드가 예외를 발생시키면 프로세스 자체가 종료될 수도 있음

(이 때문에 멀티 스레드에서는 예외처리가 중요)



멀티 스레드 vs 싱글 스레드


멀티 스레드

 싱글 스레드

 멀티 스레드어플리케이션은 메인 스레드가 

종료되더라도 실행중인 메소드가 하나라도 있으면

프로세스 종료 안된다.

 싱글 스레드 애플리케이션은 메인스레드가 

종료 되면 프로세스 종료


'Java' 카테고리의 다른 글

[제너릭]와일드카드 타입  (0) 2017.02.17
[제너릭]제너릭 메소드  (0) 2017.02.16
[제너릭] 제너릭과 비제너릭 비교  (0) 2017.02.15
Thread 상속으로 thread 생성  (0) 2017.01.27
Runnable을 이용한 Thread 생성 방법들  (0) 2017.01.25

포트 번호


포트번호란?


인터넷 계층에서 전달하는 다양한 종류의 패킷이 각각 어느 애플리케이션들에게 

전달하기위해서 주어지는 번호

(IP는 컴퓨터를 찾을 때 사용하는 주소라면 PORT는 컴퓨터 내부의 애플리케이션을 찾을때 사용하는 번호)



포트 번호의 종류와 범위


0 ~ 65535번까지 사용 가능


웰 노운 포트 

레지스터드 포트 

다이나믹 포트 

 0 ~ 1023번 

 1024 ~ 49151번 

 49152 ~ 65535번 

   서버 프로그램이 수신 대기할 때 사용                    벤더가 할당받아 사용                        클라이언트 프로그램이 사용



주요 웰 노운 포트


포트 번호 

 프로토콜 

 20

 FTP(데이터 커넥션)(하지만 패시브모드에서는 랜덤 포트를 사용) 

 21

 FTP(컨트롤 커넥션) 

 22

 SSH(원격 제어) 

 23

 Telnet(원격 제어)

 25

 SMTP(이메일 전송) 

 80

 HTTP(웹) 

 110

 POP3(이메일 수신) 

 143

 IMAP4(이메일 수신) 


트랜스포트 계층


애플리케이션 계층과 인터넷 계층 사이에 위치

트렌스포트 계층의 역할은 컴퓨터가 받은 데이터를 애플리케이션까지 전달하는 것



트랜스포트 계층은 할당된 포트 번호로 참고하여 데이터를 애플리케이션에 전달


예) 프르토콜 번호가 6이면 TCP, 17이면 UDP로 전달,

     그 후에 포트 번호가 80이면 HTTP로 전달



트랜스포트 계층에서 사용되는 프로토콜 TCP, UDP


TCP


데이터의 정확한 전달을 중시(이메일, 웹 등에 쓰임)

정확한 전달을 중시하기 때문에 도달하지 않은 패킷(데이터 조각)이 있다면 재전송을 요청



UDP


데이터의 전송 속도를 중시(VoIP, 동영상 스트리밍)



filter와 interceptor의 차이


둘의 기본적인 차이점은 호출되는 시점이 다르다는 것이다.


호출되는 시점이 어떻게 다른지 그림을 보면 더욱 이해가 쉽다.





그림을 보면 

filter는 dispatcherServlet가 실행되기 전에 실행되도

interceptor는  dispatcherServlet이 실행된 후 controller 실행 전에 실행되는 것을 알 수 있다.



또한 method가 다르다.


Interceptor


preHandle() : 컨트롤러로 들어가기 전
postHanle() : 컨트롤러에 들어갔다 나온후 뷰로 보내기전
afterCompletion() : 뷰까지 끝난 후



Filter 


init() : 필터 인스턴스 초기화

   doFilter() : 전/후 처리
   destroy() : 필터 인스턴스 종료



참고 : http://changpd.blogspot.kr/2013/03/spring.html

FTP


FTP란?


파일 전송 프로토콜



FTP 주요 명령어


CWD - 디렉터리를 이동한다.

MKD - 디렉터리를 생성한다.

LIST - 파일 목록을 표시한다.

RETR - 파일을 다운로드한다.

STOR - 파일을 업로드한다.

DELE - 파일을 삭제한다.



FTP의 접속 형태


1. 데이터 커넥션

파일 주고받기 위한 커넥션

2. 컨트롤 커넥션

명령어를 보내기 위한 커넥션



FTP의 패시브 모드


방화벽이나 가정용 초고속 인터넷 라우터를 사용하는 경우 외부와의 통신을 차단하는 경우가 많음

특히 FTP 서비스에서는 서버 내부에서 외부로 나가는 통신을 방화벽이 차단하여 파일 전송이 안되는 경우도 발생

이를 해결하기 위해 패시브 모드를 사용하여 클라이언트 쪽에서 서버쪽으로 역으로 데이터 커넥션을 만들어 준다.


* 패시브 모드와 액티브 모드는 누가 접속을 만드느냐에 불과하지만, 이것이 보안과 데이터 전송 가능여부를 좌우한다.



원격 제어


Telnet과 SSH(Secure SHell)


원격지의 컴퓨터를 명령어로 제어하기 위한 프로토콜

보안을 위해 내용이 암호화되는 SSH를 많이 사용



GUI 인터페이스 원격 제어


RDP(Remote Desktop Protocol) 윈도우에 내장된 원격 데스크톱이 사용하는 프로토콜

RFB(Remote FrameBuffer) OS에 독립되어 범용으로 사용 가능한 프로토콜


GUI 인터페이스를 사용할 때는 마우스난 키보드 제어 정보를 서버로 보낸 후 원격 서버의 화면 이미지를

응답으로 받는 방식이기 때문에 화면 이미지의 데이터 크기를 줄여주기 위한 압축기술도 함께 사용




이메일

이메일에 사용되는 애플리케이션 계층 프로토콜


SMTP : 이메일을 발신할 때

POP : 이메일을 수신할 때

IMAP : 서버에 메일을 보관



SMTP의 특징


발신할 때만 쓰이는 것이 아니라, 송신자의 메일 서버에서 수신자의 메일 서버로 메일을 보낼 때도 사용

stateful 프로토콜로 상태를 가지고 있다. --> 이 말은 전송 종료됬다는 명령이 보내져야 통신을 종료

메일 서버간의 메일 중계에도 쓰임


SMTP는 POP과 다르게 사용자 인증 체계가 없음 --> 이를 이용해 스팸 메일 발송에 악용

이를 보안하기 위해 SMTP Auth 프로토콜이 만들어짐(SMTP에 사용자 인증 기능을 추가)



POP의 특징


SMTP 프로토콜을 통해 최종적으로 수신자의 메일서버에 저장되는데,

수신자의 메일 서버에 저장된 메일을 확인할 때 이 POP 프로토콜이 사용


(이 외에도 메일 건수, 용량, 메일 삭제 처리도 POP 프로토콜을 사용)


POP은 사용자 인증을 먼저 한 후 통신을 시작



IMAP의 특징


POP 프르토콜은 클라이언트가 메일을 수신하면 메일서버에 보관된 메일을 삭제한다.

이에 반해 IMAP 프로토콜은 클라이언트 PC가 메일을 수신하더라도 메일 서버에 메일을 저장

--> 저장 공간이 충분치 않은 스마트폰에 많이 활용






문제

https://www.acmicpc.net/problem/10844



풀이


2차원 배열로 메모이제이션해야 되는 문제였다.

D[N][L]을 N자리수에서 끝자리가 L로 끝나는 수의 계단수의 가지수라고 한다면

N자리 수에서 끝자리가 2로 정해지면, D[N-1][1]과 D[N-1][3]을 구하면 된다.

이를 점화식으로 표현하면

D[N][L] = D[N-1][L-1] + D[N-1][L+1]




'알고리즘 > BaekJoon' 카테고리의 다른 글

[11052]붕어빵 판매하기  (0) 2017.01.11
[9095]1,2,3 더하기  (0) 2017.01.11
[11726]2 x n 타일링  (0) 2017.01.10
[3052]나머지(Modulo)  (0) 2017.01.02

에러 메시지


ora-30036 : unable to extend segment by 4 in undo tablespace



원인 


rollback할 데이터를 저장하는 undo tablespace가 부족해서 생기는 에러

주로 많은 양의 데이터를 update, insert, delete 할 때 발생



해결방법


1. undo tablespace를 확장


alter tablespace <undotablespace 이름> add datafile <'경로'> size <추가할 용량> <m | k>;


예시)

1
alter tablespace UNDOTBS1 add datafile 'C:/oraclexe/app/oracle/oradata/XE/UNDOTBS5.DBF' size 10m;
cs


이 방법은 기존에 있는 undo tablespace의 용량을 확장하는 방법이다.

이 방법 외에 용량이 큰 새로운 undo tablespace를 만드는 방법도 있다.



2. 쿼리문의 로직을 작은 단위로 잘라서 실행


이 오류는 update, delete, insert를 통해 한 번에 실행되는 데이터 양이 많아서 undotablesapce가 모자라기 때문에 발생하는 것이다.

이를 해결하기 위해 쿼리를 작은 단위로 나누어서 실행해주고 commit을 해주면 된다.


문제

https://www.acmicpc.net/problem/11052


풀이

D[i]이 i개를 팔 때 얻을 수 있는 최대 수익

P[i]는 i개를 팔 때 얻는 수익


총 붕어빵이 i개 있을 때

1개를 팔았을 때 최대값은 P[1] + D[i-1]

2개를 팔았을 때 최대값은 P[2] + D[i-2]

j개를 팔았을 때 최대값은 P[j] + D[i-j]


이렇게 따져서 이들 값중에서 최대값이 D[i]

점화식을 살펴보면

D[i] = max(P[j] + P[i-j])

단, j의 범위는 1<= j <= i


이를 바탕으로 코딩을 해보면 된다.


#아직 프로그래밍적 사고와 다이나믹 프로그래밍적 문제 접근 방식이 익숙하지 않은것 같다.

'알고리즘 > BaekJoon' 카테고리의 다른 글

[10844]쉬운 계단 수  (0) 2017.01.13
[9095]1,2,3 더하기  (0) 2017.01.11
[11726]2 x n 타일링  (0) 2017.01.10
[3052]나머지(Modulo)  (0) 2017.01.02

문제

https://www.acmicpc.net/problem/9095


풀이

다이나믹 프로그래밍으로 풀 수 있었다.

n일때 1,2,3을 더해서 n을 표현하는 방법의 가지수를 d[n]이라고 한다.

마지막에 올 수 있는 숫자는 1, 2, 3 인데 

1이 오면 d[n-1]

2가 오면 d[n-2]

3이 오면 d[n-3] 이 성립된다.


이를 바탕으로 점화식을 세워보면

d[n] = d[n-1] + d[n-2] + d[n-3]


top-down 방식



bottom-up 방식


'알고리즘 > BaekJoon' 카테고리의 다른 글

[10844]쉬운 계단 수  (0) 2017.01.13
[11052]붕어빵 판매하기  (0) 2017.01.11
[11726]2 x n 타일링  (0) 2017.01.10
[3052]나머지(Modulo)  (0) 2017.01.02

+ Recent posts