전체 글 95

CS study - 운영체제 - 2

프로세스와 스레드 프로세스(process) 는 컴퓨터에서 실행되고 있는 프로그램의 인스턴스를 말하며 CPU 스케줄링의 대상이 되는 작업(task), 데이터, 메모리등을 포함합니다. 각 프로세스는 운영체제로부터 독립적으로 실행되지만 운영체제로부터 자원을 할당받아 사용합니다. 스레드(thread) 는 프로세스 내 작업의 흐름, 실행되는 작은 실행 단위입니다. 하나의 프로세스는 여러개의 스레드를 가질 수 있으며, 각각 스레드는 프로세스 내에서 병렬적으로 실행됩니다. 스레드는 프로세스 내에서 같은 메모리 공간을 공유하므로 데이터와 자원을 공유합니다. 3-1 프로세스와 컴파일 과정 프로세스는 프로그램으로부터 인스턴스화된 것을 말합니다. 프로그램은 컴파일러가 컴파일 과정을 거쳐 컴퓨터가 이해할 수 있는 기계어로 번..

CS study - 운영체제 - 1

3장 운영체제 - 1 사용자가 컴퓨터를 쉽게 다루게 해주는 인터페이스로 한정된 메모리나 시스템 자원을 효율적으로 분배하는 역할을 하며 유사한것으로 소프트웨어를 추가설치 할 수 없는 펌웨어(firmware)가 있습니다. 1-1 운영체제의 역할과 구조 CPU 스케줄링과 프로세스 관리 : CPU 소유권을 어떤 프로세스에 할당할지, 프로세스의 생성과 삭제, 자원 할당 및 반환을 관리합니다. 메모리 관리 : 한정된 메모리를 어떤 프로세스에 얼만큼 할당하는지 관리합니다. 디스크 파일 관리 : 디스크 파일을 어떤방법으로 보관할지 관리합니다. I/O 디바이스 관리 : 입출력 기기들의 데이터를 주고 받는 것을 관리합니다. 운영체제의 구조 GUI : 사용자가 전자장치와 상호 작용할 수 있도록하는 사용자 인터페이스의 형태,..

CS study - 자료구조 - 2

3. 비선형 자료 구조 비선형 자료 구조란 일렬로 나열하지 않고 자료 순서나 관계가 복잡한 구조를 말합니다. 보통 트리나 그래프를 말합니다. 3-1 그래프 정점과 간선 정점(vertext)는 하나의 노드 라고 이해하고 간선(edge)은 노드와 노드를 이어주는 연결선이라고 한다. 단방향 간선 : 단방향으로만 갈 수 있는 간선 양방향 간선 : 양방향으로 갈 수 있는 간선 outdegree : 정점(vertext)에서 나가는 방향의 간선 indegree : 정점에 들어가는 간선의 방향의 간선 보통 정점을 약자로 “U” 혹은 “V” 라고 하며 다른 정점으로 이동하는 것을 “U에서 V로 간다”고 표현하며 이러한 구조를 바탕으로 간선으로 이루어진 집합을 **그래프(graph)**라고 합니다. 가중치는 건선과 정점 ..

카테고리 없음 2023.03.31

CS study - 자료구조 - 1

자료구조 효율적으로 데이터를 관리하고 수정, 삭제, 탐색, 저장할 수 있는 데이터 집합 1. 복잡도 1-1 시간 복잡도 시간 복잡도란 ‘문제를 해결하는 데 걸리는 시간과 입력의 함수 관계’를 가리킵니다. 어떠한 알고리즘의 로직이 ‘얼마나 오랜 시간’이 걸리는지를 나타내는 데 쓰입니다. public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String a = scanner.next(); System.out.println(a + "In"); } } 시간복잡도에는 평균과 최악의 시간복잡도를 고려하면서 씁니다. 자료 구조의 평균 시간 복잡도자료구조 접근 탐색 삽입 삭제 배열 O(1)..

Kotlin - 코틀린에 대해 (2)

목차 코틀린의 언어적인 장치를 스프링이 지원하는 법 스코프 함수(Scope functions) 환경 변수를 호출하는 코드가 있다고 예시를 들어 보겠습니다. @SpringBootConfiguration class config... @Bean fun dataSource(enviroment: Enviroment): DataSource { val builder = EmbeddedDatabaseBuilder() builder.setType(type) ... builder.setScriptEncoding(encoding) return builder.build() } 자바에서는 빌더패턴을 사용한 코드가 자주 사용되어집니다. 하지만 코틀린에서는 조금 더 간결한 문법으로 코드의 가독성을 높이는 몇가지 방법이 있습니다. ..

Programming/Kotlin 2023.03.04

Kotlin - 코틀린에 대해 (1)

개요 코틀린에 대해 공부하고자 찾아보다가 당근마켓에서 올라온 https://youtu.be/RBQOlv0aRl4 이라는 영상을 보고 해당 발표내용을 간단하게 정리해보았습니다. 발표내용을 그냥 보기보다 예제로 올려주신 코드를 간략히 추리며 포인트들만 정리해보고 공부해보았습니다. 코틀린의 철학 1. 간결성 데이터 보관을 목적으로 사용하는 클래스가 필요할 때는 data class 를 정의한다. 이 data class는 property에 대한 getter, setter, equals, hashCode, toString등 같은 메소드를 컴파일 시점에 자동으로 생성해준다. data class Person( val id:UUID, val name: String, val address: Address ) 표준 라이브러..

Programming/Kotlin 2023.03.02

Docker study - 도커 엔진 (3)

목차 도커 이미지 도커는 기본적으로 도커 허브(Docker Hub)라는 중앙 이미지 저장소에서 이미지를 내려받습니다. 단, 도커 허브는 공식 라벨이 없는 이미지를 사용할 경우 사용법을 찾을 수 없거나 제대로 동작하지 않을 수 있습니다. 또한 비공개로 저장소를 사용하려면 비공개 저장소에 따라 요금을 지불해야 합니다. 도커 허브의 이미지를 찾으려면 search 명령어로 찾아볼 수 있습니다. 도커 이미지 생성 먼저 이미지를 만들기 위한 컨테이너를 생성한 후 commit 명령어를 통해 컨테이너를 이미지로 만듭니다. docker run -i -t --name container_test ubuntu:14.04 docker commit [option] container [repository[:tag]] 이미지 생성 ..

Programming/Docker 2023.02.14

Docker study - 도커 엔진 (2)

목차 컨테이너 애플리케이션 구축 먼저 컨테이너를 구축하는 것에 있어서 권장하는 건 하나의 컨테이너에는 하나의 애플리케이션만 동작하도록 구성하는 것이 컨테이너간의 독립성을 보장함과 동시에 애플리케이션의 버전 관리, 소스코드 모듈화 등 다양한 이점을 얻을 수 있으며 도커의 철학이 한 컨테이너에 한 프로세스만 실행하는 것입니다. docker run -d \\ # 옵션 -d 는 background 로 실행시킴 --name wordpressdb \\ -e MYSQL_ROOT_PASSWORD=password \\ -e MYSQL_DATABASE=wordpress \\ # \\(역슬래시) 는 가동성을 위해 명령어의 옵션을 구분할 때 쓰며, 안써도 상관없음 기본 옵션은 컨테이너 내부로 진입하도록 attach 가능한 상..

Programming/Docker 2023.02.13

Docker Study - 도커 엔진 (1)

목차 도커 엔진에서 사용하는 기본 단위는 이미지와 컨테이너 입니다. 도커 이미지 도커 이미지란 컨테이너를 생성할 때 필요한 요소이며, 여러 계층으로 된 바이너리 파일로 존재하고, 컨테이너의 생성과 실행에서 읽기 전용으로 사용됩니다. 이미지의 이름은 기본적으로 [저장소 이름]/[이미지 이름]:[태그]로 구성되어 있습니다. 예제 : (저장소 이름)ailcek106 / (이미지 이름)ubuntu:(태그)14.04 도커 컨테이너 도커 이미지로 컨테이너를 생성하면 해당 이미지의 목적에 맞는 파일이 들어 있는 파일시스템과 격리도니 시스템 자원 및 네트워크를 사용할 수 있는 독립된 공간이 생성되고, 이것이 바로 도커 컨테이너가 됩니다. 대부분의 도커 컨테이너는 생성될 때 사용된 도커 이미지의 종류에 따라 알맞은 설정..

Programming/Docker 2023.02.05

이것이 코딩 테스트다 (JAVA 코드) - Greedy

개요 그리디 (greedy) 알고리즘이란 현재 상황에서 지금 당장 좋은 방법으로만 풀이를 해나가는 것을 그리디 알고리즘이라고 합니다. 그리디 알고리즘의 핵심은 정당성 분석을 통한 풀이 입니다. 단순히 가장 좋아보이는 것만을 반복해도 최적의 해가 나올 수 있는지 검토해야 합니다. 출처 이것이 코딩테스트다 예시 루트 노드부터 시작하여 거쳐가는 노드의 값들의 합을 최대값으로 구하고 싶을 때 최적의 해를 구하려면 어떻게 해야할까요? 최적의 해는 5 - 7 - 9 노드일겁니다. 하지만 그리디 알고리즘은 현재 상황에서 가장 큰 값만 선택하게 되는 경우입니다. 그러므로 보통은 5 - 10 - 4노드를 선택합니다 그렇다면 이 경우 최적의 해가 아니게 됩니다. 일반적인 상황에서 그리디 알고리즘은 최적의 해가 보장받을 수..