트리 구조에서 각각의 노드를 단 한 번만, 체계적인 방법으로 방문하는 과정

 

전위 순회(=깊이 우선 순회) : F, B, A, D, C, E, G, I, H (root, left, right)

중위 순회(=대칭 순회) : A, B, C, D, E, F, G, H, I (left, root, right)

후위 순회 : A, C, E, D, B, H, I, G, F (left, right, root)

레벨 순서 순회(=너비 우선 순회) : F, B, G, A, D, I, C, E, H

 

 

 

 

 

 

반응형

Roy Fielding 의 2000년 논문에 의해 소개. 
웹의 장점을 최대한 활용할 수 있는 네트워크 기반의 아키텍쳐, Representational state transfer (REST)  

3가지요소 (리소스메소드메시지)로 구성

HTTP POST, http://test/user/ 

"id":"developyo", 
"blog":"https://developyo.tistory.com/" 

위 요청은 POST 메소드(create), 생성 대상이 되는 리소스인 http://test/user/ 
생성하고자 하는 사용자 내용은 JSON 을 사용 

[HTTP 메소드]

POST,GET,PUT,DELETE 만 사용 

POST : create, Idempotent X 
GET : select, Idempotent O 
PUT : update, Idempotent O 
DELETE : delete, Idempotent O 

POST, GET, PUT, DELETE 는 CRUD 역할 
Idempotent 한 메소드(GET, PUT, DELETE)는 수행 실패시 한 번 더 호출하면 되지만 Idempotent 하지 않은 메소드(POST(create))는 실패시 트랜잭션 처리에 주의해야한다. 


※ Idempotent 는 여러번 호출되도 같은 실행결과가 나오는 것을 의미한다. 
예를 들어 a++는 호출시마다 값이 증가하므로 Idempotent 하지 않으며, a=1 은 호출시 값이 같으므로 Idempotent 하다. 

[REST의 리소스]

REST는 리소스 지향 아키텍쳐 스타일 답게 모든 것을 리소스(명사)로 표현, 각 세부 리소스에는 id 를 붙임 
즉 사용자라는 리소스 타입을 http://test/user 라고 정의했다면 
developyo 란 id를 갖는 리소스는 http://test/user/developyo 와 같이 표현 

POST/생성 의 예 :

HTTP POST, http://test/user/ 

"id":"developyo", 
"blog":"https://developyo.tistory.com/" 

GET/조회 의 예 :

HTTP GET, http://test/user/developyo 

PUT/수정 의 예 :

HTTP PUT, http://test/user/developyo 

"id":"developyo", 
"blog":"https://developyo2.tistory.com/" 

DELETE/삭제 의 예 :

HTTP DELETE, http://test/user/developyo 

 

[REST의 특징]

1. 유니폼 인터페이스(Uniform interface) : 
특정 언어나 기술에 종속받지 않으며 HTTP와 JSON(혹은 XML)을 사용할 수 있는 모든 플랫폼에서 사용이 가능한 느슨한 결합 형태의 구조 
2. 무상태성(stateless) : 클라이언트 상태를 서버쪽에 유지하지 않는다는 의미 (참고)
3. 캐싱 가능 
4. 자체 표현 구조 : 직관적인 이해가 가능 
5. 클라이언트 서버 구조 

[REST 안티 패턴]

1. GET/POST 터널링 : http://test/user?id=developyo&method=update (GET 터널링의 예)
2. 자체 표현 구조가 아닌 경우 (위 1번과 같은 경우) 
3. response code 사용하지 않음 :
response code 는 항상 200(성공) 으로 응답하며, 실제 성공/실패 리턴코드를 body 에 담아 따로 리턴하는 경우

 

 

참고 : https://bcho.tistory.com/953

참고 : https://blog.npcode.com/2017/04/03/rest%EC%9D%98-representation%EC%9D%B4%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80/

 

반응형

[ IP 클래스 ]

IPv4 ( 32 bit 주소체계 )

IPv6 (128 bit 주소체계)

 

네트워크 / 호스트

네트워크 주소는 대표주소

호스트 주소는 하나의 네트워크 밑의 피씨를 구분하기 위한 주소

0???????.????????.????????.???????? A클래스 (0~127.x.x.x)

10??????.????????.????????.???????? B클래스 (128~191.x.x.x)

11??????.????????.????????.???????? C클래스 (192~255.x.x.x)

 

* 브로드캐스트(같은 네트워크 안의 모든 피씨에 데이터 전송)는 IP 대역에서 가장 끝번호 

 

ex)

192.125.62.0 은 C클래스. 192.125.62.0 는 네트워크 주소

192.125.62.1 는 PC 2번의 호스트 주소

192.125.62.2 는 PC 2번의 호스트 주소

192.125.62.3 는 PC 2번의 호스트 주소

192.125.62.255 는 브로드캐스트 IP

 

 

[ 서브넷 마스크 ]

IP 대역을 나누기 위함.

비트연산 AND 연산(하나라도 0이면 0)으로 0을 만들 수 있는 수로 서브넷 마스크 사용

 

ex)

192.125.62.0 C 클래스를 2개의 네트워크 대역으로 나누고 싶은 경우,

서브넷마스크로 192.125.62.128 을 사용 

 

네트워크 주소 192.125.62.0 -> 11000000.01111101.00111110.00000000

서브넷마스크 192.125.62.128 -> 11111111.11111111.11111111.10000000

네트워크 대역1 (192.125.62.0~192.125.62.127): 11000000.01111101.00111110.00000000 ~ 01111111네트워크 대역2 (192.125.62.127~192.125.62.255): 11000000.01111101.00111110.10000000 ~ 11111111

* 네트워크 대역1 의 브로드캐스트 IP 는 192.125.62.127(11000000.01111101.00111110. 01111111)

* 네트워크 대역2 의 브로드캐스트 IP 는 192.125.62.255(11000000.01111101.00111110. 11111111)

 

ex2)

192.125.62.0 C 클래스를 4개의 네트워크 대역으로 나누고 싶은 경우, 

서브넷마스크로 192.125.62.192(11111111.11111111.11111111.11000000) 을 사용 

 

ex3)

192.125.62.0 C 클래스를 8개의 네트워크 대역으로 나누고 싶은 경우, 

서브넷마스크로 192.125.62.192(11111111.11111111.11111111.11100000) 을 사용 

반응형

+ Recent posts