전체 글

Kotlin

Coroutine

코루틴이란? 스레드 내에서 동작하는 일시 중단 가능한 작업 단위이며 경량 스레드라고도 불린다. 코루틴은 스레드와 달리 컨텍스트 스위칭(Context Switching) 없이 동작할 수 있는데, 이는 한 스레드 내에서 실행되기 때문이다. 이러한 특성으로 인해 스레드 및 메모리 사용이 줄어들고, 개발자가 직접 작업을 스케줄링할 수 있다. 코루틴은 비선점형이며 진입과 반환 지점이 여러 개인데, 이는 서브 루틴과 대조된다. 이 특성으로 인해 루틴 간 협력을 통해 비선점적 멀티태스킹이 가능하다. 비동기 처리 코드를 순차 코드로 만들 수 있는데, 이는 콜백 구조의 비동기 처리 코드와 대조된다. 순차 코드로 비동기 처리를 작성할 수 있기 때문에 코드의 흐름을 파악하기 쉽다. 하나의 스레드 안에서 여러 개의 코루틴이 ..

CS/운영체제

프로세스

프로세스는 실행 중인 프로그램을 말한다. 프로그램은 하드디스크/보조기억장치에서 동작 하지 않는 상태를 의미하며 메인메모리에 할당되어 CPU를 사용하면서 실행되는 상태가 프로세스이다. Program : System Resource를 할당받지 못한 상태 Process : 프로그램을 실행한 것으로 System Resource를 할당받은 상태 프로세스 메모리 구조 하나의 프로그램이 실행이 되어 프로세스로 전환되면 메인 메모리 상에서 하나의 세그먼트는 아래와 같은 구조를 가진다. stack 영역 함수를 호출할 때마다 스택 영역에 함수에 관련된 정보가 쌓인다. 지역변수, 함수 호출 주소, 파라미터 등 함수에 필요한 정보가 포함된다. LIFO 구조로 함수를 호출할 때 필요한 정보를 쌓고, 함수가 종료되면 해당 영역을..

안드로이드/라이브러리

Retrofit2

Retrofit2 Retrofit은 OkHttp와 마찬가지로 Square 사에서 개발한 오픈 소스 Android 및 Java 용 HTTP 클라이언트 라이브러리이다. 주로 Restful API와의 통신을 간소화하고 편리하게 만들기 위해 설계되었다. 간결한 API 사용 Retrofit은 간결하고 사용하기 쉬운 API를 제공한다. 인터페이스 기반으로 API를 정의하고, 각 메서드는 원격 서버에 요청을 나타낸다. // Retrofit 인스턴스 생성 val retrofit = Retrofit.Builder() .baseUrl("https://example.com/") .addConverterFactory(GsonConverterFactory.create()) .build() // API 인터페이스 정의 // 각 ..

안드로이드/라이브러리

OkHttp3

OkHttp OkHttp는 Square사에서 만든 오픈 소스 HTTP 클라이언트 라이브러리로, 안드로이드 및 Java 어플리케이션에서 사용하며 REST API, HTTP 통신을 간편하게 구현할 수 있다. OkHttp는 소켓 연결, 요청 및 응답 처리, 캐싱, 인터셉터, 스트리밍 등의 기능을 포함한 고급 네트워크 기능을 제공한다. OkHttp는 소켓 연결을 풀링하고, 헤더를 압축하며, 비동기 및 동기적인 요청을 효과적으로 처리하는 등의 성능 향상을 위해 여러 최적화를 수행한다. OkHttp는 HTTP/1.x와 HTTP/2 프로토콜을 모두 지원하며, 안전한 연결을 제공하기 위해 TLS/SSL을 지원한다. 그리고 여러 인터셉터를 사용하여 요청 및 응답을 가로채고 수정할 수 있도록 풍부한 확장성 역시 제공한다...

과제/우테코 6기 프리코스

우테코 6기 프리코스 안드로이드 - 3주차 미션

로또 게임 3주차의 미션은 '로또' 게임 프로그램을 구현하는 것이다. 이번에 추가된 학습 목표는 아래와 같다. 클래스(객체)를 분리하는 연습 도메인 로직에 대한 단위 테스트를 작성하는 연습 2주차까지 했던 설계 방식으로 해도 기능 구현에는 큰 무리가 없었다. 작성한 코드 역시 직관적이고 간결하다고 생각했다. 그러나 여전히 테스트 코드는 어떤 위주로 작성해야 하고, TDD에 대한 감을 잡지 못한 것 같았다. 지금까지 했던 설계로는 캡슐화나 의존성으로 인해 테스트 코드를 작성하면서 구현 코드를 변경했다. 테스트 코드에 기능을 맞추는 꼴이 되어가는 것 같아 찝찝했다. 또한, 과연 내가 했던 설계가 보기에는 직관적이어도 유지보수에는 용이할까라는 의문도 들었다. 다른 사람들이 왜 MVC 패턴이나 일급 컬렉션을 사..

Kotlin

변수와 상수

var vs val 두 키워드 모두 Kotlin에서 변수 선언 시 사용되는 키워드입니다. 둘의 차이는 초기화한 후 값에 대한 변경이 가능하냐 불가능하냐입니다. var : 변경 가능한 mutable 참조를 저장하는 변수입니다. val 키워드 변수의 값은 재할당(변경)이 가능합니다. 자바의 일반 변수에 해당됩니다. var number = 1 number = 2 println(number) // output: 2 val : 변경 불가능한 immutable 참조를 저장하는 변수입니다. val 로 선언된 변수는 초기값을 변경하는 것이 불가능합니다. 자바의 final 변수에 해당됩니다. val number = 5 number = 3 // Compile Error 코드를 작성할 때 기본적으로 val 키워드의 불변 변..

minux.
minux.log