본문 바로가기

전체 글

(62)
Nothing 타입 Nothing 타입은 실행 흐름이 도달할 수 없는 구역을 나타내기 위한 특수 타입이다. fun throwing(): Nothing = throw Exception() fun main(){ val i:Int = throwing() } fun validate(num: Int) { val result: Int = if (num >= 0) num else throw Exception("num이 음수입니다.") } if 블록이 Int 타입, else 블록이 Nothing 타입이면, if-else는 Int 타입을 따라간다. if 블록이 Int 타입, else 블록이 Unit 타입이므로 서로 호환되지않아 if-else 표현식으로 사용할 수 없다. 따라서 Nothing 타입은 throw를 표현식으로 쓸 수 있게 하기 ..
Reference 와 Garbage Collection Reference Object에서 알아보기 위해서 가비지에 대해서 빠르게 짚고 넘어가겠습니다. 가비지 컬렉터 힙 내의 객체중에 가비지를 찾아내 메모리 힙의 메모리 회수를 수행한다. JDK 1.2 부터는 java.lang.ref 패키지를 추가해 사용자 코드와 GC가 상호작용할 수 있게 하고 있다. 가비지 컬렉터 작동원리를 깊게 알고 싶다면 아래 사이트를 보는게 도움이 될 것 같습니다. 더보기 https://itmining.tistory.com/24 java.lang.ref 패키지 안 객체 참조 방식 Strong Reference 일반적으로 new를 이용해 생성된 객체로 GC에 무조건 제외된다. Soft Reference GC가 메모리가 부족하다고 판단할 때 수거하는 객체, 자주 사용할 수록 수거될 확률이 ..
SSL 이란? SSL ( Secure Socket Layer) SSL은 또한 웹 서버 인증, 서버 인증이라고 불리는데, 클라이언트와 서버 간의 통신을 제 3자가 보증해주는 전자화된 문서다. 클라이언트가 서버에 접속한 직후에 서버는 클라이언트에게 이 인증서 정보를 전달한다. 클라이언트는 이 인증서 정보가 신뢰할 수 있는 것인지를 검증한 후에 다음 절차를 수행하게 된다. 이는 해커가 개인 정보 및 금융 정보를 포함한 전송되는 모든 정보를 열람하거나 훔치는 것을 방지한다. Netscape사에서 웹서버와 웹브라우저간의 보안을 위해 만들어졌으며, 공개키/개인키 대칭키 기반으로 사용한다. https로 통신하는 웹사이트를 이용하다보면 인증서를 확인할 수 있다. 이 인증서에는 인증서의 해당 사이트의 공개키와 사이트의 정보들이 있다...
IPC 를 위한 Serializable, Parcelable, Parcel, 그리고 Bundle 까지 IPC 프로세스 간 통신 ( Internal - Process - Communication, IPC) 프로세스 사이에서 데이터를 서로 주고 받는 행위, 경로, 방법을 의미한다. 대표적인 IPC 1) 메시지 큐(Message Queue) 프로세서 간 주고 받는 메시지를 커널에 복사하고 읽어가는 방식이다. IPC 내의 메시지를 하나의 구조체 형태로 통째로 주고 받을 수 있어서 구현하기에 편리하다. 여러 가지 이벤트를 하나로 관리 사용하기에 편리한 구조다. 2) 공유 메모리(Shared Memory) 프로세스간에 공유 메모리를 지정하여, 이 영역에 복사하고 읽어가는 방식이다. 3) UDS(Unix Domain Socket) 기존 소켓 API와 유사하게 사용할 수 있다. 또한 여러 가지 이벤트를 하나로 사용하기..
멤버 함수의 중위 표기법 (Infix Notation) 함수를 마치 연산자 처럼 호출하는 방법으로 멤버함수의 중위 표기법이 있다. 함수 선언문 앞에 infix를 붙이면 된다. class Point(var x: Int = 0, var y: Int = 0) { infix fun move(base: Point): Point { return Point(x - base.x, y - base.y) } } fun main(args: Array): Unit { val point = Point(2, 7) move Point(1, 1) println(point.x) println(point.y) } 결과 값으로는 1 6 이 나온다.
in 연산자 in 연산자는 어떤 값이 객체에 포함되어 있는지 여부를 조사하는 역할을 한다. println('a' in "dayun") 위 의 결과로는 "true"가 출력된다. dayun에는 a가 포함되어 있기 때문이다. println("da" !in "dayun") 위의 결과로는 "false"가 출력된다. dayun에 da가 포함되어 있기 때문에 in의 반대인 false가 포함가 출력되는 것이다.