프로그래밍/kotlin6 [Kotlin] Coroutine Thread 차이 및 Suspend 의 재개방식을 알아보자 (With CPS) 시작하기에 앞서 Thread 와 Coroutine 의 차이부터 알아보겠다.# Thread 란?프로그램이 메모리에 적재되는 순간 생성되는 실행단위인 프로세스 내부에서 실행되는 작업 단위로 여러 개가 실행 가능하고, 프로세스의 힙, 데이터, 코드 영역을 공유하며 각각 독립적인 스택 메모리를 보유하고 관리한다.쓰레드의 생성과 문맥 변환 (Context Switching) 은 상대적으로 오버헤드가 크며, 수천 개의 쓰레드를 동시에 생성하는 것은 실질적으로 많이 어렵다. 아래는 Context Switching 에 대한 설명이다.Context Switching 이란 현재 진행하고 있는 Task(Process, Thread)의 상태를 저장하고 다음 진행할 Task의 상태 값을 읽어 복원(restore)하는 과정을 의.. 2025. 2. 26. [Kotlin] Class 와 Data class 에 대해서 알아보고 Equals 의 작동 원리에 대해서 알아보자 # Class 란?객체를 생성하기 위한 기본적인 설계도(템플릿) 역할을 하며, 객체(인스턴스) 를 만들고 그 안에서 프로퍼티와 메소드를 정의한다. # Data class 란?데이터를 다루기 위해 생성되는 클래스로 Class 에서는 기본적으로 구현해주지 않는 equals(), hashCode(), toString(), copy(), ComponenetN() 기능을 자동 생성한다. 여기서 copy() 는 data class 자기 자신을 새롭게 복사하여 새로운 객체로 생성하는 함수이고, componentN() 의 경우 객체의 프로퍼티를 분해하여 변수에 할당할 수 있도록 설정하는 기능이다. equals(), hashCode(), toString() 에 대해 조금 더 깊은 이야기는 아래에서 설명하도록 하겠다.# .. 2025. 2. 18. [Kotlin] Sealed class 와 Enum class 의 차이가 무엇일까? 면접의 단골 주제로 나오는 Sealed class 와 Enum class 의 차이점에 대해 글을 작성해보려고 한다. 흔히 UiState 와 같이 Ui 상태를 다룰 때 sealed class 를 사용하고 고정된 값을 가진 데이터 집합을 구현할 때 enum class 를 사용하는 것은 알고 있을테지만, 정확히 그렇게 나눠서 사용하고 있는 이유에 대해서 깊게 생각해보지는 않았을 것이다.나의 경우 실무에서는 알고 썻지만 이를 이론적으로 설명하지 못하여 다시 한 번 글을 써내리는 중이다. 글을 보고 다른 이들도 나와 같이 실무에서 적용하는 것 뿐만 아니라 정확히 두 개 사이에서 어떤 차이점이 있는지를 알아내고 이를 설명할 수 있다면 좋겠다.# Sealed Class 란?흔히 데이터 상태의 집합을 나타낼 때 사용하.. 2025. 2. 18. [Kotlin] 개발자를 위한 디자인 패턴 (Design Pattern) 에 대해서 알아보자 (3/3) # 행위 패턴 아래 글에서 이어집니다. 2024.09.26 - [프로그래밍/kotlin] - [Kotlin] 개발자를 위한 디자인 패턴 (Design Pattern) 에 대해서 알아보자 (2/3) # 구조 패턴 # 행위 패턴이란?객체나 클래스 간의 상호작용을 정의하고, 책임을 어떻게 분배할지를 다루는 디자인 패턴객체 간의 통신과 협력을 관리하며, 특정 작업을 수행하는 방법을 조직하는 데 중점을 둔다. # 행위 패턴의 종류행위 패턴의 경우 너무나도 많은 패턴이 존재하므로 일부만 소개하도록 하겠다. 책임 연쇄 패턴 (Chain of Responsibility Pattern) • 개념: 요청이 연쇄적으로 전달되며, 각 객체가 요청을 처리할지 말지를 결정. 처리되지 않으면 다음 객체로 요청이 전달된다.• 사용 예시: 특정 .. 2024. 9. 30. [Kotlin] 개발자를 위한 디자인 패턴 (Design Pattern) 에 대해서 알아보자 (2/3) # 구조 패턴 이 주제는 3편에 걸쳐서 나뉘어집니다.현재는 디자인 패턴에 대한 2번째 설명 게시글로 이전 게시글은 아래 주소를 확인해주세요. 2024.09.26 - [프로그래밍/kotlin] - [kotlin] 개발자를 위한 디자인 패턴 (Design Pattern) 에 대해서 알아보자 (1/3) # 생성 패턴 우리는 이전 시간에 디자인 패턴의 생성 패턴에 대해 알아보았다.이번에는 디자인 패턴의 구조 패턴에 대해 알아보겠다. # 구조 패턴이란?객체 지향 디자인 패턴중 하나로 객체나 클래스 간의 관계를 정의하여 큰 구조를 형성하는 데 중점을 둔 패턴객체 간의 상호작용을 쉽게 만들고, 코드의 재사용성을 높이며, 시스템의 유연성과 확장성을 향상시킨다. 이러한 구조 패턴는 대표적으로 다음과 같은 것들이 존재한다.어댑터 패.. 2024. 9. 30. [kotlin] 개발자를 위한 디자인 패턴 (Design Pattern) 에 대해서 알아보자 (1/3) # 생성 패턴 # 디자인 패턴이란?디자인 패턴의 기본 정의는 소프트웨어 설계에서 반복적으로 발생하는 문제들을 해결하기 위해 만들어진 일반적인 해결 방안으로, 많은 개발자들이 실무에서 이용하고 인정하는 모범 사례를 의미한다.여기에서 설명하는 디자인 패턴은 OOP (객체 지향 프로그래밍) 기준으로 삼으며 이를 참고 바란다. 디자인 패턴이 만들어진 이유디자인 패턴이 만들어진 이유는 여러 가지가 있겠지만, 가장 큰 이유로 뽑히는 것 이유들은 다음과 같다. 1. 코드 구조의 표준화코드 구조를 표준화하여 협업 시 다른 개발자가 동일한 문제를 동일한 방식으로 해결할 수 있게 하여 코드의 일관성을 유지하며 코드 리뷰와 유지 보수를 쉽게 만들어준다. 2. 문제 해결책 재사용 가능표준화 된 코드 구조를 통해 비슷한 문제가 발생 시 성공.. 2024. 9. 30. 이전 1 다음