본문 바로가기

분류 전체보기

(72)
메모리 가상 메모리프로세스는 프로그램을 실행하기 위해 메모리를 사용한다.그러나 사용되는 프로그램이 많고 모든 프로세스가 메모리에서 동작할 수 없기 때문에 효율적으로 사용하기 위해 프로세스는 가상 메모리를 사용한다.가상 메모리는 32bit 기준 프로세스 당 4GB가 할당된다.가상 메모리는 아래와 같은 구조로 구성되어 있다. 리눅스에서는 사진 외에도 커널 영역도 할당되어 있지만 중요한 것은 TEXT 영역과 스택 영역, 힙 영역이다. TEXT 영역 : 프로그램의 코드(명령어)가 저장된 영역PC(Procram Counter): CPU 내부에 있는 레지스터로 다음에 실행될 명령어의 주소를 가지고 있다. 이때 명령어의 주소가 TEXT 영역의 주소를 가리킨다.명령어가 실행될 때 값이 증가한다.STACK 영역 : 프로그램이 ..
TCP Header TCP 헤더 필드Source Port & Destination Port송수신 포트 주소Sequence Number송신 프로세스가 지정하는 순서 번호세그먼트 전송 과정에서 전송되는 바이트의 수를 기준으로 증가TCP에서는 전송 데이터의 각 바이트마다 순서 번호가 존재Acknowledgement Number수신 프로세스가 제대로 수신한 바이트의 수를 읍닫하기 위해 사용ACK 플래그 비트가 지정된 경우에만 유효다음에 수신을 기대하는 데이터의 순서 번호를 표시ACK 응답을 받은 송신 프로세스는 ACK Number-1까지의 모든 데이터가 올바로 전송되었음을 확인할 수 있다.Data OffsetTCP 세그먼트가 시작되는 위치를 기준으로 데이터의 시작 위치를 나타낸다.TCP 헤더의 크기Window슬라이딩 윈도우 프로토..
WorkManager(feat.Hilt) Background Task백그라운드 작업을 선택할 때 위와 같이 조건에 따라 API를 선택할 수 있다.WorkManager특징1. 제약 조건Wifi 상태에서 작업 실행배터리 충전 중일 경우 실행기기가 유휴 상태일 경우…다양한 조건을 설정하여 조건에 맞는 경우 작업을 실행할 수 있다.2. 작업 예약 관리일회성 또는 반복적으로 실행할 작업을 예약할 수 있다.작업 그룹을 함께 모니터링하거나 취소할 수 있다.예약된 작업은 내부적으로 관리되는 SQLite 데이터베이스에 저장되며 WorkManager에서 기기를 재부팅해도 작업이 유지되고 다시 예약되도록 보장절전 기능을 사용하고 권장사항(Doze Mode)을 준수배터리 소모를 우려하지 않아도 됨3. 신속 처리 작업백그라운드에서 즉시 실행할 작업을 예약할 수 있다...
HTTP와 HTTPS 프로토콜 우리는 하나의 서비스를 제작할 때, 크게 3가지로 나눈다. 1. 사용자들이 직접 접하는 클라이언트2. 클라이언트로부터 요청 받은 내용을 추려 전달해주는 서버3. 데이터를 저장하는 데이터베이스 보통은 서버에서 데이터베이스까지 관리하는 경우가 많다. 클라이언트와 서버는 서로 통신을 하여 데이터를 주고 받아야 하는데 이때 사용되는 통신 프로토콜이 Http 프로토콜이다. HTTP 프로토콜이란?Http 프로토콜은 정보(데이터)를 송·수신하도록 설계된 프로토콜이다. 기본적으로 요청과 응답으로 나누어지며, 요청은 클라이언트가 서버에 데이터를 요청할 때 사용되며, 구성 요소는 다음과 같다. 요청 구성 요소1. 요청 HeaderHearder는 클라이언트가 사용하는 브라우저 및 앱, 요청되는 데이터와 같은 핵심 정보를 전..
이차원 배열 회전 fun main(){ val n = 5 val array = Array(n){ row -> IntArray(n){ 10*row + it + 1 } } val rotationArray = Array(n){ IntArray(n){ 0 } } for(i in 0 until n){ for(j in 0 until n){ rotationArray[j][n-i-1] = array[i][j] } }} 배열12345678910111213141516171819202122232425 회전21161161221712722318138324191494252015105
Data Layer DataSource네트워크, 로컬 DB, 파일, 메모리 등에서 데이터를 제공한다.데이터와 직접적인 연관이 있는 클래스이기 때문에 해당 클래스에서는 CRUD의 기능만 담당한다. DataSource 클래스에서는 하나의 데이터 저장소만 사용해야 한다.예를 들어, 네트워크 통신 DataSource에는 네트워크 통신과 관련 된 기능만 존재해야 한다.class NewsRemoteDataSource( private val newsApi: NewsApi, private val ioDispatcher: CoroutineDispatcher) { /** * Fetches the latest news from the network and returns the result. * This executes ..
runCatching 예외 처리 runCatching은 Kotlin에서 제공하는 예외처리 함수로 성공, 실패에 따른 결과를 Result 객체로 변환하여 반환한다.inline fun runCatching(block: () -> R): Resultinline fun T.runCatching(block: T.() -> R): Result Result 생성runCatching 내부적으로도 try-catch문을 사용하여 작업의 성공, 실패 여부를 통해 Result 객체의 value 를 설정한다.@InlineOnly@SinceKotlin("1.3")public inline fun runCatching(block: () -> R): Result { return try { Result.success(block()) } c..
데이터베이스 체계화 된 데이터의 집합데이터를 구조화하여 효율적으로 처리할 수 있도록 관리 스키마(Schema)데이터 모델을 기반으로 데이터베이스의 구조를 기술한 것External Schema특정 유저들이 필요로 하는 데이터만 표현그 외의 필요 없는 데이터들은 숨김사용 언어: VDLConceptual Schema전체 DB의 구조를 기술물리적인 저장 구조에 관한 내용은 숨김사용 언어: DDLInternal Schema물리적으로 데이터가 어떻게 표현되는지사용 언어: SDLVDL(View Definition Language) : External Schema를 정의하기 위해 사용되는 언어 대부분의 DBMS에서는 DDL이 VDL 역할까지 수행DDL(Data Definition Language) : Conceptual Schem..
SOILD 원칙 1. 단일 책임 원칙 (SRP)각 클래스는 하나의 책임만 갖고 있어야 한다.책임 별로 클래스를 분리함으로써 각 책임에 변경사항이 발생될 때만 해당 클래스만 변경하면 된다. 적용 전class 회사{ fun 영업(){...} fun 개발(){...} fun 인사(){...}} 적용 후class 영업{ fun 업무(){...}}class 개발{ fun 업무(){...}}class 인사{ fun 업무(){...}} 안드로이드에서의 SRP1. ViewModel은 UI 데이터 상태를 관리하는 역할로만 사용한다. 2. 개방 폐쇄 원칙 (OCP)확장에는 열려있고, 변경에는 닫혀 있어야 한다.하나의 기능을 갖고 있지만 여러가지 경우에 따라 작업이 달라지는 경우라면 메서드가 복잡해지거나, ..
SingleTon Singleton Pattern오직 하나의 인스턴스만 제공하는 클래스 Why?하나의 클래스를 여러 곳에서 사용하다보면 불필요하게 여러 개의 동일한 클래스가 생성되어 메모리 낭비가 일어날 수 있다.또는 setting과 같이 인스턴스가 하나여야만 하는 클래스가 있을 수 있다. 따라서 어디서 사용되어도 동일한 기능을 제공하는 클래스라면 불필요하게 여러 개의 인스턴스를 생성할 필요 없이 하나의 인스턴스만 제공하면 효율적으로 메모리를 사용할 수 있게 된다.class Test{ companion object { private var instance: Test? = null fun getInstance(): Test{ return instance ?: Single..