본문 바로가기

분류 전체보기

(63)
인프라란? 제가 지금은 안드로이드 개발을 하고 있지만, 2년 전에 인턴 생활은 네트워크 엔지니어로 했습니다. 경험해보면서 이런저런 것을 겪고 지금은 안드로이드 개발을 하고 있지만 그 당시에 사둔 서적을 공부할 겸 오늘은 인프라에 대해서 포스팅하도록 하겠습니다. 시스템 = 애플리케이션 + 인프라 애플리케이션은 요즘 스마트폰때문에 다들 익숙하시죠? 특정 업무에 맞게 개발된 소프트웨어를 애플리케이션이라고 칭합니다. 그렇다면 인프라는 무엇일까요? 일단은 Infrastructure의 약어입니다. 다음 어학사전에 검색해보면 아래와 같은 결과가 나옵니다. infrastructure 1. 인프라 2.시설 3. 기반 4. 사회간접자본 알듯 모를 듯 모르겠네요 ㅎㅎ.. 여기서 3번째 의미로 봐주시면 될 것 같아요. 하부 조직의 기반..
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가 포함가 출력되는 것이다.