Computer Science
-
네트워크 계층 - 제어 평면Computer Science/Network 2021. 2. 19. 01:13
1. 개요 라우터별 제어를 기반으로 하는 제어 평면이란 어떤 것인가? 이러한 경우 네트워크 제어 및 데이터 평면이 “단일체”로 구현된다고 하는데 이는 무슨 의미인가? 라우팅 알고리즘들이 모든 라우터 각각에서 동작하는 경우, 포워딩과 라우팅 기능이 모두 개별 라우터에 포함되어 있음. 각 라우터는 다른 라우터의 라우팅 구성요소와 통신하여 자신의 포워딩 테이블의 값을 계산하는 라우팅 구성요소를 가지고 있다 논리적 중앙 집중형 제어를 기반으로 하는 제어 평면이란 무슨 뜻인가? 논리적으로 집중된 컨트롤러가 포워딩 테이블을 작성하고 이를 모든 개별 라우터가 사용할 수 있도록 배포한 경우를 나타냄 2. 라우팅 알고리즘 중앙 집중형 라우팅과 분산 라우팅 알고리즘의 속성을 비교 대조 중앙 집중형 라우팅 알고리즘은 네트워..
-
네트워크 계층 - 데이터 평면Computer Science/Network 2021. 2. 19. 01:12
1. 네트워크 계층 개요 라우터와 링크 계층 스위치의 기본적인 차이는 무엇인가? 링크 계층 스위치는 링크 계층 프레임의 필드 값(MAC 주소 등..)에 근거하여 포워딩을 결정함, 반면 라우터는 네트워크 계층 필드 값(IP 주소?)에 근거하여 포워딩을 결정 트랜스포트 계층 패킷의 이름은 세그먼트, 링크 계층 패킷의 이름은 프레임이다. 네트워크 계층 패킷의 이름은 무엇인가? 데이터그램, 혹은 그냥 패킷이라고도 부르는 것 같음 라우팅과 포워딩의 차이는 무엇인가? 포워딩 : 패킷이 라우터의 입력 링크에 도달했을 때 그 패킷을 적절한 출력 링크로 이동시키는 것 라우팅 : 송신자가 수신자에게 패킷을 전송할 때 패킷 경로를 결정하는 것 라우터에서 포워딩 테이블의 역할은? 포워딩 테이블 엔트리에 저장되어 있는 헤더의 ..
-
[Kotlin] 인터페이스, 변경자Computer Science/Kotlin 2021. 1. 20. 15:51
코틀린 인터페이스 코틀린 인터페이스 안에는 추상 메소드뿐 아니라 구현이 있는 메소드도 정의할 수 있음(자바의 디폴트 메소드랑 비슷) 하지만 인터페이스에는 아무런 상태(필드)도 들어갈 수 없다 Clickable 인터페이스를 정의해서, Button 클래스에서 click 메서드를 오버라이드 했음 이 인터페이스를 구현하는 모든 비추상 클래스는 click에 대한 구현을 제공해야 함 자바에서는 extends와 implements 키워드를 사용하지만, 코틀린에서는 클래스 이름 뒤에 콜론(:)을 붙이고 인터페이스와 클래스 이름을 적는 것으로 클래스 확장과 인터페이스 구현을 모두 처리함 인터페이스는 개수 제한 없이 마음대로 구현할 수 있지만, 클래스는 오직 하나만 확장할 수 있음 자바에서는 @override를 꼭 붙이지..
-
[Kotlin] 컬렉션 처리, 로컬 함수Computer Science/Kotlin 2021. 1. 20. 00:13
컬렉션 처리 vararg 키워드를 사용하면 호출 시 인자 개수가 달라질 수 있는 함수를 정의할 수 있음 중위 함수 호출 구문을 사용하면 인자가 하나뿐인 메소드를 간편하게 호출할 수 있음 구조 분해 선언을 사용하면 복합적인 값을 분해해서 여러 변수에 나눠 담을 수 있음 가변 인자 함수 정의 라이브러리에서 listOf 메서드를 보면 다음과 같음 fun listOf(vararg values: T) : list { … } 가변 길이 인자는 메소드를 호출할 때 원하는 개수만큼 값을 인자로 넘기면 자바 컴파일러가 배열에 그 값들을 넣어주는 기능 자바에서는 타입 뒤에 …를 붙이지만 코틀린에는 파라미터 앞에 vararg 변경자를 붙인다 이미 배열에 들어있는 원소를 가변 길이 인자로 넘길 때 자바에서는 배열을 그냥 넘기..
-
[Kotlin] 함수 정의와 호출Computer Science/Kotlin 2021. 1. 19. 13:19
코틀린에서 컬렉션 만들기 ) 코틀린에서는 자체 컬렉션을 제공하지 않고 표준 자바 컬렉션을 활용 자바에서 코틀린 함수를 호출하거나 코틀린에서 자바 함수를 호출할 때 자바와 코틀린 컬렉션을 서로 변환할 필요가 없음 ) 코틀린 컬렉션은 자바 컬렉션과 똑같은 컬렉션이지만 자바보다 더 많은 기능을 쓸 수있음 수로 이뤄진 배열에서 최대값을 찾거나 리스트의 마지막 원소를 가져올 수도 있음 함수를 호출하기 쉽게 만들기 ) list를 출력하면 toString()이 출력된다 하지만 이런 출력을 커스터마이징하려면 어떻게 할까 fun를 이용해서 제네릭으로 구현 이 함수를 호출하는 문장을 덜 번잡하게 만들 수 있지 않을까 함수를 호출할 때마다 매번 네 인자를 전달하지 않을 수는 없을까? 이름 붙인 인자 가독성을 위해서 인자에 ..
-
Maven vs GradleComputer Science/JAVA 2021. 1. 18. 00:05
빌드 관리 툴이란? 프로그래밍 개발이 발전됨에 따라 필요한 라이브러리들은 점점 많아지고, 이들을 일일이 관리하기에는 어려움이 따릅니다. 그래서 만들어 진것이 빌드 관리 툴! 소스 코드를 컴파일, 테스트 등을 실행하여 실행 가능한 애플리케이션을 자동 생성합니다 라이브러리를 자동 추가 및 관리해줍니다 라이브러리의 버전을 자동으로 동기화해줍니다 초창기 java의 빌드 도구는 Apache Ant를 사용하였고, Ant의 단점들을 해소하기 위해 만들어 진것이 Apache Maven입니다 Maven 특징 - 라이브러리들을 네트워크를 통해 자동으로 다운 받아줍니다 - pom.xml을 이용해 정형화된 빌드 시스템을 제공합니다 - 개발 가이드 라인을 제공합니다 - 테스트 소스 코드를 별도의 병렬 소스 트리에 보관 - 테스..
-
[Kotlin] 코틀린 기초 - 반복문Computer Science/Kotlin 2021. 1. 17. 22:51
while 자바랑 똑같음 for 코틀린에서는 자바의 for 루프(어떤 변수를 초기화하고 그 변수를 루프를 한 번 실행할 때마다 갱신하고 루프 조건이 거짓이 될 때 반복을 마치는 형태의 루프)에 해당하는 요소가 없다 이런 루프의 가장 흔한 예인 초깃값, 증가 값, 최종 값을 사용한 루프를 대신하기 위해 코틀린에서는 range를 사용한다 코틀린의 범위는 폐구간 또는 양끝을 포함하는 구간임, 무조건 끝값은 범위에 포함됨 1부터 10까지 순서대로 출력 100에서 10씩 내려가며 1까지 반복 0에서 20 - 1 까지 순서대로 반복 맵에 대한 이터레이션 맵을 만들고, 몇 글자에 대한 2진 표현으로 맵을 채운 다음, 그 맵의 내용을 출력하는 코드 ‘A’..’F’ 라는 범위로 for문을 돌릴 수 있음 TreeMap의 ..
-
[Kotlin] 코틀린 기초 - 제어문Computer Science/Kotlin 2021. 1. 17. 18:47
제어문 enum 클래스 자바와 마찬가지로 enum은 단순히 값만 열거하는 존재가 아님 enum 클래스 안에도 프로퍼티나 메소드를 정의할 수 있다 enum 클래스 안에 메소드를 정의하는 경우 반드시 enum 상수 목록과 메소드 정의 사이에 세미 콜론을 넣어야 함 결과 when으로 enum 클래스 다루기 if와 마찬가지로 when도 값을 만들어내는 식 식이 본문인 함수에 when을 바로 사용할 수 있다( return이 없고 =로 바로 사용) 자바의 switch문과 동일한 기능이며, 각 분기의 끝에 break을 넣지 않아도 가능 한 분기 안에서 여러 값을 매치 패턴으로 사용하려면 콤마(,)로 분리해서 사용한다 Color.? 처럼 하지 않고 짧게 하기 위해 colors.Color와 colors.Color.*를 ..