ArrayList란?



배열을 사용하여 리스트를 구현한 것


ArrayList의 구성 - 엘리먼트들로 구성

element의 구성 - 데이터와 인덱스로 구성


장점 - 인덱스를 가지고 있기에 조회가 빠르다

단점 - 추가/삭제시 엘리먼트들을 밀고 당기는 작업이 필요하기 때문에 추가/삭제 속도가 느리다.

   데이터 공간의 낭비가 발생한다.



LinkedList란?


노드와 노드간의 연결로 리스트를 구현한 것


LinkedList의 구성 - Node(or vertex)로 구성, Head는 첫번째 Node를 가리킨다.

Node의 구성 - 데이터를 담는 data field, 연결정보를 담고 있는 linkd field


장점 - 추가/삭제가 빠르다. 데이터 공간의 낭비가 없다

단점 - 조회시 일일히 다 순회하기 때문에 느리다.

'자료구조' 카테고리의 다른 글

[Map] HashMap  (0) 2017.03.10
[Set]HashSet의 특징  (1) 2017.03.09
[그래프]넓이 우선 탐색(BFS)  (0) 2017.03.07
[그래프] 인접리스트와 인접행렬을 이용한 구현  (0) 2017.02.26
Array 배열 for Java  (0) 2016.12.23

패킷 교환 방식



패킷 교환 방식이란?


이메일이나 파일과 같은 데이터를 패킷이라는 작은 단위로 분할할 후 주고 받는 방식

패킷은 자신이 전달되어야 하는지 알 수 있는 Address 정보를 가지고 있다.


*패킷은 송신지와 송신지의 address 모두 가지고 있음



회선 교환 방식과 패킷 교환 방식



회선 교환 방식


아날로그, 유선 전화 , 3G 휴대폰의 경우 회선 교환 방식을 사용

통신하려는 양측을 연결하기 위해 하나의 통신 경로를 점유한 후 통신하는 방식이라 일대일 통신만 가능


패킷 교환 방식


주고 받을 데이터를 작게 쪼갠 후 다른 데이터 조각들과 통신 경로를 공유하며 전송하는 방식이라

여러 상대로 통신할 때 효율적



컴퓨터 네트워크와 계층 모델



컴퓨터 네트워크를 구성하는 계층들



계층 모델이란?


네트워크에 참여한 다양한 통신 장비와 프로그램들의 역할을 이해하기 쉽게 분류하고 추상화한 것


TCP/IP 계층의 종류


애플리케이션 계층 : 웹서비스, 이메일과 같은 서비스를 사용자에게 제공한다. / 서비스를 제공하는 부분

(서버, 클라이언트, HTTP, SMPT, POP3, FTP, SSH ...)


트랜스포트 계층 : 애플리케이션 계층과 인터넷 계층 사이에서 데이터가 올바르게 전달되도록 중계한다. / 통신기능을 담당

(TCP, UDP)


인터넷 계층 : 목적지의 IP 어드레스로 데이터를 전달한다. / 통신기능을 담당

(IP 어드레스, IPv4, IPv6, ICMP, 라우팅...)


네트워크 인터페이스 계층 : 네트워크 어댑터와 같은 하드웨어를 통해 데이터를 전달한다. / 통신기능을 담당

(이너넷, 무선 LAN, MAC 어드레스, PPP, FTTx, xDSL...)



* 유의점 이 계층 모델은 TCP/IP의 계층모델으로 OSI 참조 모델( 흔히 7계층)은 더 세분화된 계층 모델이다.



각 계층을 통과하는 데이터의 형태


애플리케이션 계층  - 쪼개진 데이터

트랜스포트 계층의 헤더 - 쪼개진 데이터의 결합 순서와 이 데이터를 받을 프로그램을 식별할 수 있는 번호

인터넷 계층의 헤더 - 목적지의 컴퓨터를 식별할 수 있는 번호

네트워크 인터페이스 계층의 헤더 - 유선 LAN에서 데이터를 보내는데 필요한 정보


* 헤더와 트레일러


데이터 앞에 붙는 정보가 헤더

뒤에 붙는 정보가 트레일러 



'네트워크' 카테고리의 다른 글

네트워크 서비스와 애플리케이션 계층(2)  (0) 2017.01.11
네트워크 서비스와 애플리케이션 계층(1)  (0) 2017.01.10
프로토콜 종류  (0) 2017.01.04
컴퓨터네트워크(3)  (0) 2017.01.03
컴퓨터 네트워크(1)  (0) 2016.12.22

배열이란?


여러 데이터를 하나의 이름으로 그룹핑하여 관리하기 위한 자료구조


거의 모든 언어에 포함



배열의 구성

    public class ArrayTest {
         int[] numbers1 = new int[4];
       // int[]에서 
       // int는 엘리먼트의 데이터 타입, []은 배열을 의미
       // new int[4]에서
       // new는 생성자, [4]는 배열의 크기
    }
    

배열은 엘리먼트로 구성되어 있고,

엘리먼트는 index와 value로 구성되어 있다.


 학생1

학생2 

학생3 

학생4 

 0


여기서 학생1이 value이고 0은 index

학생1과 0을 묶어서 엘리먼트 하나를 이룬다.


배열의 생성

    public class ArrayTest {
         int[] numbers1 = new int[4];
         int[] numbers2 = {10, 20, 30, 40};
         int[] numbers3 = new int[] {10, 20, 30, 40};
    }
    

배열에 들어갈 값을 미리 알고 있을 경우, 생성과 초기화를 한번에 할 수 있다.



배열의 조회

    public class ArrayTest {    
        public static void main(String[] args) {
                 int[] numbers1 = new int[4];
                 int[] numbers2 = {10, 20, 30, 40};
                 int[] numbers3 = new int[] {10, 20, 30, 40};
          
                 // 나중에 배열 초기화 방법
                numbers1[0] = 10;
                numbers1[1] = 20;
		
                //배열의 값조회(인덱스를 이용)
                System.out.println(numbers1[0]); //  10이 출력
                
               //배열의 길이
               System.out.println(numbers1.length);  // 4가 출력(처음 만들때 4개의 방을 만들었음)
	}     
    }



배열과 반복문 (배열 사용법!!)

  
               //배열의 길이
               System.out.println(numbers1.length);  // 4가 출력(처음 만들때 4개의 방을 만들었음)

               for(int i=0; i


배열의 단점과 장점


단점 : 배열의 크기가 조정이 불가능, 처음 생성할 때 크기로 고정

        별다른 기능(메서드)가 없다.


장점 : 크기가 고정되어있고, 별다른 기능이 없기 때문에 작고 가볍고 단순하다.

         이는 다른 곳의 부품이 되기 쉽다는 의미, 배열의 확장성이 강하다!! 다른 자료구조나 활용도 면에서...



참고: https://opentutorials.org/module/1335/8738

'자료구조' 카테고리의 다른 글

[Map] HashMap  (0) 2017.03.10
[Set]HashSet의 특징  (1) 2017.03.09
[그래프]넓이 우선 탐색(BFS)  (0) 2017.03.07
[그래프] 인접리스트와 인접행렬을 이용한 구현  (0) 2017.02.26
ArrayList와 LinkedList  (0) 2017.01.02

+ Recent posts