본문 바로가기

분류 전체보기

(32)
Null safety Nullable types and non-nullable types 출처 : 코틀린 공식문서 https://kotlinlang.org/docs/null-safety.html#collections-of-a-nullable-type (null 이 가능한 타입과 불가능한 타입) null 이 가능한 타입에 접근하는 방법 ? 연산자 사용 ?. 연산자 사용 코틀린타입의 목적은 객체가 null 이 된는 것을 방지하는 것을 목적으로 하고 있다. (The Billion Dollar Mistake 이 아저씨가 말한대로 말이다.) 자바를 포함해서 수많은 프로그래밍언어에서 위험한 내용은 null인 객체의 멤버에 접근하는 것이고 이는 객체 null 예외를 발생시킨다. 자바에서는 NullPointerException 과 같고 줄..
Coroutine2 코루틴에 관해서는 공부해야할게 꽤 많은 것 같아서 공부내용이 추가되는대로 계속 글을 쓰고 나중에 한번에 몰아서 정리를 해야겠다. 코루틴은 경량 쓰레드라고도 불림. 그 이유는? -> 쓰레드당 하나의 명령만 실행된다. 쓰레드 보다 생성비용이 가볍고 빠르다. 근데 코루틴이 contextSwithing 을 계속 해서 상황에 따라서는 쓰는게 오히려 손해일수도 있다. 코루틴을 만드는 방법은 세가지가 있다. 1. CoroutineScope.async() 를 활용하는 방법 -코루틴 내에서 예외가 발생할 수 있기 때문에 이 메소드는 Deffered 를 리턴한다. 리턴값이 존재한다. 2.CoroutineScope.launch() 를 활용하는 방법 -결과를 반환하지 않고 실행하거나 취소할 수 있는 객체인 Job을 리턴해준다..
Debug coroutines using IntelliJ IDEA – tutorial (IntlliJ IDEA를 활용해서 코루틴을 디버깅 하는 방법) 코루틴에서 디버깅 하는 방법에 관해서 알아 볼것이다. 공식문서를 참조했다. https://kotlinlang.org/docs/debug-coroutines-with-idea.html#create-coroutines import kotlinx.coroutines.* // 코루틴을 감싸기 위해서 runBlocking() 을 사용. fun main() = runBlocking { // 지연된 코루틴 값을 설정하기 위해서 async 예약어를 사용해서 변수 a와 b를 설정. val a = async{ println("I'm computing part of the answer") 6 } val b = async{ println("I'm computing another part of the answer") 7 } /..
Coroutine (조금 더 글을 보충해야할 필요가 있다.) 코틀린의 코루틴은 suspending functions 는 future나 promise보다 훨씬 좋다. kotlin 공식문서 피셜 비동기 동작에서 더욱 안전하고 에러도 적은 추상화를 제공해준다고 한다. https://kotlinlang.org/docs/coroutines-guide.html 뭐.. 위의 자료를 참고하면 될듯. kotlin의 공식문서를 참고해서 공부한 내용을 정리한 것이다. 아래는 공식문서 링크. https://kotlinlang.org/docs/coroutines-basics.html#your-first-coroutine Your first coroutine 코루틴은 일시정지가 가능한 구성요소다. 스레드 개념과 비슷한데, 다른 코드를 동시실행하는..
추상화란 추상클래스란 추상화란? 핵심적인 개념 또는 기능을 간추려 내는것을 의미한다. 추상화의 종류 -반복되는 내용을 for문이나 while 문으로 추리는 것도 추상화의 한 내용이라고 한다. -인터페이스 -상속 -추상클래스 추상화의 장점 -일단 데이터를 추상화 하고 나면 여기저기서 다시 추상화했던 데이터를 사용할 수 있기 때문에 좋다. 추상클래스란? -하나 이상의 추상클래스를 가지는 클래스를 추상 클래스라고 부른다. 추상클래스는 OOP타입의 클래스이고, 추상클래스는 하나 이상의 추상 메소드를 선언한다. 추상클래스는 concrete메소드와 마찬가지로 추상 메소드를 가질 수 있다. 일반 클래스는 추상메소드를 가질 수 없다. 추상 클래스는 적어도 하나 이상의 추상메소드를 가질 수 있다. 추상메소드란? -추상메소드란 정의는 되어있지..
객체지향의 4대 특징 1.추상화 추상화란 핵심적으로 중요한 내용과 그렇지 않은 내용을 가려내는 것을 의미한다. 실생활에서 추상화를 설명할때 초기 지하철 지도를 예로 들면서 설명을 한다. 아래의 사진은 세계 최초의 지하철 지도다. 보고 바로 이해가 잘 안된다. 가독성이 떨어지고 불필요한 정보가 많다. 어떤 것이 불필요한 정보인지 일일이 설명하지는 않겠다. 여하튼 '추상화' 의 과정을 거치면 우리가 아는 오늘날의 원형에 가까운 지하철 지도가 등장한다. 훨씬 보기 편해진다. 개발에서 추상화는 공통적인 내용을 가려내는 것을 의미한다. 부모클래스를 둬서 자식클래스에서 중복되지 않는 메소드나 필드를 설정하는 것도 추상화중 하나다. 추상 클래스나 인터페이스를 사용해서 추상메소드를 사용하게끔 만드는 것도 추상화의 한갈래이다. 중복되는 내용..
inline 함수와 reified type inline 함수란? 함수 호출 시 별도로 분리된 위치의 레이블로 점프하여 실행되는 일반 함수와는 달리 호출 부분을 함수 전체 코드로 치환하여 컴파일한다. 고차함수(함수를 인자로 전달받거나 함수를 결과로 반환하는 함수 : 람다)수를 사용할때 오버헤드 현상이 발생하지 않도록 해주는 함수다. 오버헤드(overhead)는 어떤 처리를 하기 위해 들어가는 간접적인 처리 시간 · 메모리 등을 말한다. 예를 들어 A라는 처리를 단순하게 실행한다면 10초 걸리는데, 안전성을 고려하고 부가적인 B라는 처리를 추가한 결과 처리시간이 15초 걸렸다면, 오버헤드는 5초가 된다. 또한 이 처리 B를 개선해 B'라는 처리를 한 결과, 처리시간이 12초가 되었다면, 이 경우 오버헤드가 3초 단축되었다고 말한다 고차함수를 사용할때..
lamda 람다란? 정의 A lambda function is a simple, short, throwaway function which is designed to be created inline in code. They're also known as lambda expressions, anonymous functions, lambda abstractions, lambda form, or function literals. 람다함수란 -함수형 프로그래밍에서 사용되는 개념으로 익명 함수라고도 부른다. -자바8부터 지원하고 불필요한 코드를 줄이고 가독성을 향상 시키는 것을 목적으로 두고 있다. 익명함수를 람다식으로 바꾸기 근데 위와 같이 람다식으로 바꾸기 위해서는 몇가지 충족요건이 필요하다. 안맞으면 람다식으로 표현할 수 없다...