본문 바로가기

전체 글224

[Kotlin] lateinit, by lazy 지연(늦은) 초기화초기화 작업을 극한으로 미루다가 사용자가 필요로 할 때 진행하는 방법클래스 안에 '이 변수를 사용할 것이다'라고 선언만 해두고 나중에 변수를 실제로 사용하는 시점에 값을 입력해주어 사용하는 것null 로 초기화할 수 없고, 객체의 정확한 값을 뒤에 가서야 알 수 있는 경우에 사용한다. lateinitvar 로 선언된 프로퍼티만 사용 가능하다.Non-null 타입만 사용 가능하다.지연 초기화를 위해 사용되는 lateinit 프로퍼티에는 null 값이 할당될 수 없다.프로퍼티에 대한 사용자 정의 getter, setter 를 사용할 수 없다.클래스 생성자에서 사용이 불가능하다.생성자에서는 프로퍼티가 즉시 초기화되어야 한다.초기화 전에는 변수 접근이 불가능하다.원시 타입은 사용이 불가능하다... 2025. 1. 14.
[Android] LiveData, Flow LiveDataLifecycle 라이브러리 중 하나로, 안드로이드 공통의 라이프사이클과 관련된 문제를 해결할 수 있게 해 주면서 앱 개발시 보다 더 유지보수하기 쉽게, 테스트하기 쉽게 만들어주는 라이브러리옵저버 패턴을 활용하여 구현되었으며, 관찰 가능한 일반 클래스인 ObservableXXX 클래스와는 달리 LiveData 는 생명주기의 변화를 인식하는 데이터 홀더 클래스이다.즉, Activity, Fragment, Service 등 안드로이드 컴포넌트의 생명 주기 인식을 통해 Active 상태에 있는 컴포넌트에서만 업데이트한다.Activity 와 Fragment 는 LiveData 객체를 안전하게 관찰할 수 있고, 생명 주기가 끝나는 즉시 관찰을 멈추기 때문에 누수를 걱정하지 않아도 된다.LiveDat.. 2024. 12. 22.
[CS] 멀티 태스킹(Multi Tasking), 멀티 프로세싱(Multi Processing), 멀티 프로세스(Multi Process), 멀티 스레드(Multi Thread) 단일 프로세스(Single Process)초창기 컴퓨터는 단일 프로세스 시스템으로, 한 번에 하나의 프로그램만이 실행할 수 있어서, 또 다른 프로그램을 실행하고 싶다면 현재 프로그램을 종료해야 했다. 그리고 프로그램 실행 중 *I/O(입출력) 작업이 발생하면 CPU 는 프로세스를 멈추고 대기하게 되어 CPU 사용률이 비효율적으로 낮아지게 된다.I/O(Input/Output) : 프로그래밍에서 파일을 읽고 쓰는 것, 서버 네트워크의 어딘가와 데이터를 주고 받는 것, 마우스, 키보드와 같은 입출력 장치와 데이터를 주거나 받는 것을 의미한다.위 문제를 해결하기 위해 여러개의 프로그램(멀티 프로그래밍)을 메모리에 올려놓고 하나의 CPU 에서 번갈아 가며 동시에 실행시키는 방안을 첨가하였다. 멀티 프로그래밍(Mu.. 2024. 12. 12.
[Android] 프로그램(Program), 프로세스(Process), 스레드(Thread) 프로그램 (Program, 정적 프로그램(Static Program))윈도우의 *.exe 파일이나 Mac의 *.dmg 파일과 같은 컴퓨터에서 실행할 수 있는 파일어떤 작업을 하기 위해 실행할 수 있는 파일. 아직 실행하지 않은 상태이기 때문에 정적 프로그램으로도 불린다.파일이 저장 장치에 있지만 메모리에는 올라가 있지 않은 정적인 상태모든 프로그램은 *운영체제가 실행되기 위한 메모리 공간을 할당해 줘야 실행될 수 있다.운영체제(Operating System, OS) : 컴퓨터 시스템의 핵심 소프트웨어로, 컴퓨터 하드웨어와 응용 프로그램 간의 상호작용을 관리하고 제어하는 역할을 한다. 프로세스(Process)운영체제로부터 자원을 할당받은 작업의 단위프로그램을 실행시켜 정적인 프로그램이 동적으로 변하여 프로.. 2024. 12. 11.
[Kotlin] Enum class, Sealed class Enum class상수값의 타입 안전성을 보장하며, when 문에서 상수에 정의된 값에 대한 처리를 반드시 하도록 강제한다.상수 값에 대한 특정한 동작이 필요할 때 특정 상수값에 대한 동작을 빼먹는 것을 방지할 수 있다.각 상수는 단 하나의 인스턴스만 가질 수 있다. (싱글톤)상수의 속성값은 정의 후 변경할 수 없다.다른 클래스를 상속할 수 없고, 다른 클래스에게 상속받을 수도 없다. 그러나 interface 를 구현할 수 있다.상수와 연관된 변수를 상수에 저장할 수 있다.서브 클래스를 생성할 수 없다.private 생성자만 갖는다. BEFORE문제점 : state 의 종류가 늘어날 경우, 처리 로직을 빼먹거나 처리되지 말아야 할 상수값(Int)이 포함될 수 있습니다. 또한, Int 값이 상수값이므로 s.. 2024. 12. 10.
[BaekJoon][Kotlin] 10989번 - 수 정렬하기 3 https://www.acmicpc.net/problem/10989문제N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.입력첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다.출력첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.예제 입력 1 복사105231423517예제 출력 1 복사1122334557코드import java.io.*fun main() { val br = BufferedReader(InputStreamReader(System.`in`)) val bw = BufferedWriter(OutputStreamWriter(.. 2024. 12. 10.
[BaekJoon][Kotlin] 10431번 - 줄세우기 https://www.acmicpc.net/problem/10431문제초등학교 선생님 강산이는 아이들을 데리고 단체로 어떤 일을 할 때 불편함이 없도록 새로 반에 배정받은 아이들에게 키 순서대로 번호를 부여한다. 번호를 부여할 땐 키가 가장 작은 아이가 1번, 그 다음이 2번, ... , 가장 큰 아이가 20번이 된다. 강산이네 반 아이들은 항상 20명이며, 다행히도 같은 키를 가진 학생은 한 명도 없어서 시간이 조금 지나면 아이들은 자기들의 번호를 인지하고 한 줄로 세우면 제대로 된 위치에 잘 서게 된다.하지만 매년 첫 며칠간 강산이와 강산이네 반 아이들은 자기가 키 순으로 몇 번째인지 잘 알지 못해 아주 혼란스럽다. 자기 위치를 찾지 못하는 아이들을 위해 강산이는 특별한 방법을 생각해냈다.우선 아무나.. 2024. 12. 9.