728x90
반응형

개인 공부 37

Is와 As의 차이 ( feat. casting )

① 업캐스팅(Upcasting) 서브 클래스 인스턴스를 "슈퍼 클래스의 타입"으로 참조한다 업 캐스팅은 항상 성공한다 as 연산자를 사용해서 할 수도 있다 (컴파일 시점에 캐스팅 가능 여부를 결정한다) as : "컴파일 시점"에 타입 캐스팅(업캐스팅)을 하며, 실패할 경우 에러가 발생한다. 패턴 매칭(switch)에도 사용한다 서브 클래스의 인스턴스를 슈퍼 클래스의 타입으로 참조하는 것을 업캐스팅이라고 함 => 사용할 수 있는 기능은 업캐스팅된 부분에 한정이됨, teacher은 person이라는 것을 상속받는다고 할때 업캐스팅을 하면 person의 기능에 한정지어 사용하게됨. ② 다운캐스팅(Downcasting) 슈퍼 클래스 인스턴스를 "서브 클래스의 타입"으로 참조한다 업캐스팅된 인스턴스를 다시 원래 ..

개인 공부 2023.03.20

Protocol Buffer 사용법 - 컴파일링

java_package (file option) 생성된 Java나 Kotlin 클래스에서 사용하기 위해 사용 .proto 파일에 java_package 옵션을 명시하지 않으면 기본 proto 패키지가 사용 proto 패키지는 도메인 역순 이름으로 생성되지 않기 때문에 일반적인 Java package를 생성하지 않음 Java나 Kotlin 코드를 생성하지 않을 경우 옵션은 무시됨 option java_package = "com.example.foo"; java_outer_classname (file option) 생성하기 원하는 자바 클래스 래퍼에 대한 클래스 이름을 지정 .proto 파일에 java_outer_classname을 명시하지 않으면 클래스 이름은 .proto 파일에 명시된 이름을 camel-..

개인 공부 2023.02.09

Protocol Buffer 사용2

required : 반드시 값이 입력 되어야 하는 필드. 입력되지 않을 경우 객체는uninitialized 로 판단되며 build 하려 할 경우RuntimeException 을 던지며, Parsing 하려 할 경우IOException 을 던진다. 이것을 제외하면 optional과 동일하다. 더보기 Required 키워드는 “매우” 조심스럽게 사용해야 한다. 어떤 시점에서 Required 키워드로 정의된 필드를optional 로 변경해야 할 경우가 생기는데, 이 경우 상당한 문제를 야기 할 수 있다. 바로, 해당message 의 필드가optional 로 변경된 상태에서 값이 정의되지 않고 전송될 경우, 예전 버전의reader 는 이 값이 없기 때문에 message 가 초기화되지 않았다고 판단, messag..

개인 공부 2022.12.22

Protocol Buffer 사용

앞서 프로토 파일을 만드는것은 아래의 링크에 있다. https://machine-woong.tistory.com/639 Android Protocl Buffers ver.3 사용하기 proto3 1. build.gradle(모듈) plugins { id 'com.android.application' id ('com.google.protobuf') version "0.8.17" } 추가 id ('com.google.protobuf') version "0.8.17" dependencies { ..... // Proto Buffer implementation 'androidx.datastore:datastore:1.0.0' impleme machine-woong.tistory.com Setter Person...

개인 공부 2022.12.22

네트워크 - 버퍼, 버퍼링, 캡슐화 ,큐

버퍼(buffer, 문화어: 완충기억기) 데이터를 한 곳에서 다른 한 곳으로 전송하는 동안 일시적으로 그 데이터를 보관하는 메모리의 영역이다. 버퍼링(buffering) 버퍼를 활용하는 방식 또는 버퍼를 채우는 동작을 말한다. 다른 말로 '큐(Queue)'라고도 표현한다. 버퍼링 종류 완전버퍼링(fully buffered) : 버퍼가 가득차면 전송. 파일 입출력에 사용 라인버퍼링(line buffered) : 개행 문자가 나타날때마다 전송. 키보드 입력에서 사용 캡슐화 송신 측에서는 애플리케이션 계층에서 순서대로 각 계층에서 페이로드에 헤더를 붙여 PDU로 만들어 한단뎨 아래 계츠응로 전달합니다. 여기서 헤더를 추가하는 과정, 필요한 데이터를 추가해 나가는 과정을 캡슐화 ( encapsulation )이..

개인 공부 2022.12.20

네트워크 - 채널, 터널링

1. 용어 정리 - 데이터 스트림을 인터넷 상에서 가상의 파이프를 통해 전달시키는 기술[1] - 컴퓨터 네트워크에서 터널링 프로토콜을 사용하면 네트워크 사용자는 기본 네트워크가 직접 제공하지 않는 네트워크 서비스에 접근하거나 제공할 수 있다[2] 2. 터널링의 특징 - 호스트와 호스트 사이에 통신이 어떤 프로토콜을 사용하던 간에 일단 터널이 구성되면, 그 안에 원래 내용물(패킷)은 감싸지기(캡슐화) 때문에 내용물이 무엇인지는 중요하지 않게 됨[3] - 특정 프로토콜을 지원하지 않는 네트워크를 통해 외부 프로토콜을 실행 할 수 있다[2] - 기본 네트워크 서비스만을 사용하여 제공하기에는 비실용적이거나 안전하지 않은 서비스를 제공할 수 있다. 예를 들면 실제 네트워크 주소가 회사 네트워크의 일부가 아닌 원격..

개인 공부 2022.12.20

네트워크 - PDU , MTU

PDU PDU는 Protocol Data Unit의 약자입니다. => 컴퓨터데이터를 세는단위를 PDU라고 보면 될거 같다. 그림에 왼쪽에 있는게 세는 단위입니다. (각 계층의 데이터 단위) 보통 비트, 프레임, 패킷, 세그먼트 까지는 알고있어야 한다. 세그먼트 (전송 계층(4)) 예를 들면, 상위 계층에서 데이터를 전달받은 전송계층에서는 아래의 정보들를 추가해 그룹화 한다. 이때부터 데이터는 데이터가 아니라, 세그먼트라고 불리는 것이다. 발신지 포트 : 발신하는 application의 포트 목적지 포트 : 수신해야 할 application의 포트 순서 번호 : 순차적 전송할 경우 순서를 붙이며, 순서가 어긋나면 목적지 프로토콜이 이를 바로 잡는다. 오류검출코드 : 발신지와 목적지 프로토콜은 세그먼트를 연..

개인 공부 2022.12.20

Socket, Web Socket 란?

정의 소켓(Socket) : 네트워크상에서 동작하는 프로그램 간 통신의 종착점. 1대1 통신의 경우 양 측다 소켓이 존재해야 통신이 가능하다. 현재 대부분의 통신은 인터넷 프로토콜(TCP, UDP)에 기반하고 있으므로 대부분의 네트워크 소켓은 인터넷 소켓이다. 웹 소켓(Web Socket) : 웹소켓은 하나의 TCP 접속에 전이중 통신 채널을 제공하는 컴퓨터 통신 프로토콜이다. 그리고 HTTP나 HTTPS 위에서 동작하도록 설계되었으며, 따라서 포트는 80번 혹은 443번이다. HTTP 프로토콜과 구별은 되지만 호환이 된다. 기본적으로 HTTP의 통신 포트는 80번, HTTPS는 443번이다. 차이점 동작 계층 : OSI 7계층 기준으로 소켓은 인터넷 프로토콜에 기반하므로 TCP, UDP가 속한 4계층에..

개인 공부 2022.12.16
728x90
반응형