목록전체 글 (58)
계발자 블로그
inline 함수 코틀린에서 인라인 함수(inline function)은 함수 호출 시 해당 함수의 본문이 호출 위치에 "인라인"되어 실행되도록 하는 특별한 종류의 함수입니다. 인라인 함수는 함수 호출로 인한 오버헤드를 줄이고 성능을 최적화하는 데 도움이 됩니다. 일반적으로 함수 호출은 호출 지점에서 호출되는 함수로 이동하고, 해당 함수가 실행을 마친 후에 호출 지점으로 다시 돌아와야 합니다. 이러한 과정은 함수 호출을 위해 스택에 프레임을 추가하고 제거하는 작업을 수반하며, 성능에 영향을 줄 수 있습니다. 인라인 함수는 이러한 함수 호출 오버헤드를 제거하기 위해 컴파일러에게 해당 함수의 본문을 호출 지점에 직접 복사하도록 요청합니다. 이렇게 하면 함수 호출이 발생하지 않고 호출 지점에 함수의 본문이 인..
디자인 패턴이란? 객체 지향 프로그래밍 설계를 할 때 자주 발생하는 문제들을 피하기 위해 사용되는 패턴입니다. 디자인패턴은 반복적으로 일어나는 문제를 해결하기 위한 일종의 해결책을 정리한 것입니다. 디자인 패턴을 사용하면 미리 고안된 솔루션을 사용하여 시간과 비용을 절감할 수 있습니다. 디자인 패턴 중 가장 잘 알려진 패턴은 Gof 디자인 패턴입니다. Gof 디자인 패턴은 23가지의 디자인 패턴을 정리한 것으로 생성, 구조, 행위 디자인 패턴으로 구성됩니다. 생성 패턴(Creational Patterns) 객체 생성에 관련된 패턴입니다. 객체의 생성과 조합을 캡슐화 해 특정 객체가 생성 되거나 변경 되어도 프로그램 구조에 영향을 크게 받지 않도록 유연성을 제공합니다. 구조 패턴(Structural Pat..
NullPointException Java 언어로 개발을 하다 보면 NullPointException이라는 오류를 자주 만나게 됩니다. 이는 객체의 주소 값이 담겨져 있지 않는(null 값이 들어있는) 참조 변수를 통해 객체 접은을 시도하면 발생되는 오류입니다. 자바에서는 컴파일 단계에서 null을 체크할 수 없습니다. 그래서 런타임 시에 null 값이 들어가 있다면 Exception이 발생하는 것을 볼수 있습니다. 이런 점들은 에러를 찾기 더 어렵고 많은 이슈들을 만들수 있습니다. 그래서 코틀린은 null이 될수 있는 값과 될수 없는 값을 분류하면서 null에 대한 안정성을 가질수 있습니다. Null Safe Kotlin은 개발자가 null이 담겨 있는 참조변수를 통해 객체 접근을 시도할 때 오류가 발..
Companion Object란? companion object는 Java에서 static과 비슷한 개념입니다. companion object는 클래스 내부에 선언되며, 클래스의 인스턴스가 생성되지 않아도 접근할 수 있는 멤버를 정의할 수 있습니다. 클래스 내부의 한번만 선언할 수 있으며 보통 맨 마지막에 선언해주는 것이 일반적입니다. Java의 상수 자바에서는 위 처럼 static을 사용하여 변하지 않는 데이터를 외부에서 접근할 수 있게 생성해 주었습니다. Kotlin의 companion object 이렇게 사용할 수 있습니다. kotlin에서 const는 상수를 선언하기 위한 키워드입니다. const를 사용하면 런타임 시간에 값이 할당되는 val와 달리 컴파일 시간에 할당되는 상수를 선언할 수 있습니..
Property란? 코틀린에서 프로퍼티는 클래스 내부에 선언된 멤버 변수를 의미합니다. 다른 언어에서는 멤버변수를 필드(field)라고도 부르는데, 코틀린에서는 이를 프로퍼티로 부릅니다. 코틀린의 프로퍼티는 자바와 달리 기본적으로 getter와 setter 메서드를 자동으로 생성해 줍니다. 그동안 자바에서 getter와 setter를 만들어주고 코드가 길어지는 모습과 비교 해보면 코틀린은 매우 간결해졌습니다. 프로퍼티는 다음과 같은 형태로 선언합니다. var 변수이름 : 변수타입 = 초기값 var는 변수를 선언할 때 사용하는 키워드입니다. var로 선언하게 되면 값을 변경해 줄 수 있어 getter와 setter가 같이 생성됩니다. val 변수이름: 변수타입 = 초기값 또한 val으로도 프로퍼티를 생성할..
Garbage Collection이란? 프로그램을 개발 하다 보면 더 이상 사용되지 않는 메모리인 가비지가 발생하게 됩니다. C언어에서는 개발자가 직접 메모리 해제를 해줘야 했지만 Java나 Kotlin을 이용해 개발을 하면 개발자가 직접 해제 하지 않습니다. JVM의 가비지 컬렉터가 불필요한 메모리를 알아서 정리 해주기 때문입니다. 따라서 가비지 컬렉션은 동적으로 할당했던 메모리 영역 중 필요 없게 된 메모리 영역을 주기적으로 삭제하는 프로세스를 말합니다. 가비지 컬렉터가 메모리 관리를 대행 해주기 때문에 개발자 입장에서 메모리 관리, 메모리 누수(Memory Leak) 문제의 대해 완벽하게 관리하지 않아도 되어 개발에만 집중할 수 있다는 장점이 있습니다. Garbage란 더 이상 사용되지 않는 메모리..
전에 블로그에서 Navigation을 간단하게 다뤄 본 적이 있었는데 [JetPack] Navigation https://developer.android.com/guide/navigation 탐색 | Android 개발자 | Android Developers Android Jetpack의 탐색 구성요소를 사용하여 앱에서 탐색 구현 developer.android.com Navigation이란? 화면전환을 위한 Android Jetpack 라 thuglife.tistory.com 실무에 Navigation을 직접 도입하면서 여러가지 기능들을 함께 사용 해 보는 계기가 되었습니다. 그래서 블로그에 한번 정리를 해보겠습니다 자바 프로젝트라 예제 코드도 자바로 만들었습니다. Android developer에 코..
안드로이드에는 백그라운드 작업을 수행할 수 있게 해주는 여러가지 방법들이 있습니다. AlarmManager, JobScheduler, Firebase JobDispatcher 등등 하지만 구글은 계속 백그라운드 작업을 제한 하는 정책을 제안하게 됩니다. 그러다 2018년 구글 I/O에서 새롭게 백그라운드 작업을 도와줄 WorkManager가 공개 되었습니다. WorkManager란 안드로이드의 백그라운드 작업을 처리하는 방법 중 하나로 Android Jetpack 아키텍처의 구성 요소 중 하나입니다. 앱이 종료 되거나 기기가 다시 시작 되어도 실행 예정인 지연 가능한 비동기 작업을 쉽게 예약할 수 있게 해줍니다. WorkManager 특징 실행이 보장되며 제약조건을 붙일 수 있습니다. 예를 들면 네트워크..
프로세스(Process)란 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램을 의미합니다. 메모리에 올라와 실행되고 있는 프로그램의 인스턴스(독립적인 개체) 운영체제로부터 시스템 자원을 할당받는 작업의 단위 동적인 개념으로는 실행된 프로그램을 의미합니다. 할당 받는 시스템 자원으로는 cpu 시간 운영되기 위해 필요한 주소 공간 Code, Data, Stack, Heap의 구조로 되어 있는 독립된 메모리 영역이 있습니다. 프로세스의 특징 프로세스는 각각 독립된 메모리 영역(Code, Data, Stack, Heap)을 할당 받습니다. 기본적으로 프로세스당 최소 1개의 스레드를 가지고 있습니다. 각 프로세스는 별도의 주소 공간에서 실행되며, 한 프로세스는 다른 프로세스의 변수나 자료 구조에 접근할 수 없습..
운영체제(OS, Operating System)란 운영체제란 컴퓨터 시스템과 사용자 사이에서 중개자 역할을 하는 프로그램입니다. 컴퓨터를 켜면 제일 먼저 만나는 프로그램입니다. 운영체제는 하드웨어와 사용자 사이에서 인터페이스를 제공하고, 한정된 시스템 자원을 더욱 효율적으로 관리하여 컴퓨터의 성능을 향상 시키는 시스템 소프트웨어입니다. 일반적으로 윈도우, 맥, 유닉스, 리눅스 등이 있습니다. 운영체제의 목적 처리량 향상 : 컴퓨터 시스템이 단위 시간 동안 처리하는 작업량을 늘린다. 응답 시간 단축 : 컴퓨터 시스템에 작업을 맡긴 후 결과가 나올 때까지 소요되는 시간을 단축 시킨다. 신뢰성 향상 : 컴퓨터 시스템을 구성하는 하드웨어 장치나 프로그램이 주어진 기능을 실패 없이 안정적으로 수행할 수 있도록 한..