728x90

CS 27

[OS] 프로세스와 스레드

[OS] 프로세스와 스레드 학습목표 - 프로세스가 생성된 후 어떤 상태 변화를 거치는지 알아보자 - 프로세스 제어 블록의 구성과 문맥 교환 시 동작 과정을 이해하자 - 프로세스의 생성과 복사, 전환 과정을 이해하자 - 스레드의 개념을 이해하고 멀티스레드 시스템의 장점을 알아보자 프로세스의 개념 프로그램이란 저장장치에 저장되어 있는 정적인 상태입니다. 프로세스란 실행을 위해 메모리에 올라온 동적인 상태, 즉 실행 중인 프로그램을 말합니다. 프로세스는 메모리에 적재되어 운영체제의 제어를 받습니다. 운영체제로부터 PCB라는 프로세스 제어 블록을 할당받는다는 것은 곧 프로세스가 존재한다는 의미입니다. 프로세스 제어 블록 PCB란 프로세스를 위해 관리하는 자료구조입니다. 프로세스 구분자란 PCB에서 각 프로세스 ..

CS/OS 2024.04.09

REST API (3)

왜 API는 REST가 잘 안되나? 일반적인 웹과 비교, 웹페이지 HTTP API Protocol HTTP HTTP 커뮤니케이션 사람-기계 기계-기계 Media Type HTML JSON REST API가 실패한 이유 : 커뮤니케이션, Media Type HTML JSON 커뮤니케이션 Hyperlink 가능(a태그) 불가능 Self-descriptive 가능(html 명세) 불완전 Json이 불완전하다는 의미 : 대괄호, 중괄호 파싱, 배열 해석은 가능하지만 그 안에 있는 값이 무엇인지는 정의되지 않음. 따라서 JSON의 문법 해석은 가능하지만, 의미를 해석하려면 별도로 API 문서가 필요하다. HTML은 REST를 성공하였다. 하지만 JSON은 REST를 성공하지 못하였다. 독립적인 진화에 도움 그런데..

CS/CS 교육팀 2024.03.24

REST API (2)

REST REST란? 추상적인 개념? REST : REpresentational State Transfer REST : a way of providing interoperability(상호운용성) between computer systems on the internet WEB(1991) 등장 배경 : 어떻게 인터넷에서 정보를 공유할 것인가? 팀버너스리의 답 : 정보들을 하이퍼텍스트로 연결한다. 표현방식 : HTML 식별자 : URI 전송방법 : HTTP (프로토콜) HTTP/1.0(1994-1996) Roy.T.Fielding : How do I improve HTTP without breaking the Web? HTTP를 정의하게 된다면 기존에 구축되어진 웹과 호환성 문제가 생기는 것을 피하고 싶음 ..

CS/CS 교육팀 2024.03.09

Rest API (1)

Rest API Rest API 발표 목차 웹 기초 (프론트엔드, 백엔드, AWS, HTTP 요청/응답) 웹 아키텍쳐 HTTP JSON 서블릿엔진 Rest API 웹기초(프론트엔드, 백엔드, AWS, HTTP 요청/응답) HTML/CSS/Javascript/React : 프론트엔드 애플리케이션 개발에 사용, 프론트엔드 애플리케이션은 프론트엔드 클라이언트를 반환하는 서버가 존재한다. 프론트엔드에서 반환하는 서버의 역할은 단 한가지 → 프론트엔드 프레임워크 애플리케이션을 반환하는 것 프론트엔드가 하는 역할 : UI 개발 JAVA/Javascript/python/Spring Boot / Node.js : 백엔드 애플리케이션 개발에 사용. 대체로 스프링 부트를 사용하여 Rest API를 구현한다. (Rest A..

CS/CS 교육팀 2024.03.06

2) 0-1 Knapsack Problem

0-1 Knapsack Problem Fractional Knapsack Problem - Greedy 0-1 Knapsack Problem - Dynamic - Backtracking - Branch and Bound 0-1 Knapsack Problem 0-1 knapsack 문제는 greedy 방식으로 optimal을 보장할 수 없다. 0-1 knapsack 문제의 optimal을 보장하기 위해서는 dynamic, backtracking, branch and bound 3가지 방식을 이용해야 한다. 1) Dynamic 동적 알고리즘은 먼저 입력 크기가 작은 부분 문제들을 모두 해결한 후에 그 해들을 이용하여 보다 큰 크기의 부분 문제들을 해경하여, 최종적으로 원래 주어진 입력의 문제를 해결하는 알고..

CS/알고리즘 2023.12.19

1) Fractional Knapsack Problem

Fractional Knapsack Problem Fractional Knapsack Problem - Greedy 0-1 Knapsack Problem - Dynamic - Backtracking - Branch and Bound Greedy 탐욕 알고리즘 greedy는 '욕심많은'이라는 뜻이다. greedy algorithm이란 선택의 순간마다 당장 눈앞에 보이는 최적의 상황만을 쫒는 방식이다. 배낭문제 배낭문제는 최소 비용으로 자원을 할당하는 문제이다. 조합론, 계산이론, 암호학, 응용수학 분야에서 기초적인 문제로 다뤄진다. 배낭문제 응용사례 - 버리는 부분을 최소화시키는 원자재 자르기 - 자산투자 및 금융 포트폴리오에서 최선의 선택 - Merkle-Hellman 배낭 암호 시스템의 키 생성 Fra..

CS/알고리즘 2023.12.18

[AI 개념 정리] 1. 선형회귀

[AI 개념 정리] 1. 선형회귀 머신러닝 시스템은 한 번도 본 적 없는 데이터로부터 의미 있는 예측을 생산하기 위해 입력값들을 어떻게 조합할지 배웁니다. 손실함수를 최적화하여 문제 상황에 가장 적합한 모델 파라미터를 찾아 모델을 완성시키는 것이 주목적입니다. [기본 용어] Feature : 입력변수 (x 변수) Label : 예측대상 (y 변수) Model : 모델은 Feature와 Label 간의 관계를 정의 Example : data 특정 예시, model을 train 하기 위해 사용 Training : 모델을 만들거나 학습한다. 모델에게 labeled 된 example을 제공하고, 모델이 feature와 label 사이 관계 학습 Inference : 추론, unlabeled 된 example들에..

CS/AI 2023.07.21

[ 자료구조 ] level order iterative inorder tree traversal

[ 자료구조 ] level order iterative inorder tree traversal 1. 반복적 중위 탐색(inorder traversal) 알고리즘 트리 탐색을 꼭 순환 알고리즘으로 작성해야 하는 것은 아니다. 아래 예는 중위 탐색 알고리즘을 반복적인 알고리즘으로 작성한 것이다. 각 노드를 방문하면서 과거 노드를 LIFO 순으로 기억해야 하기 때문에 스택을 사용하였다. void iter_inorder(tree_ptr node){ int top = -1; tree_ptr stack[MAX_STACK_SIZE]; while(1){ while(node){ push(&top, node); node = node->left_child; } node = pop(&top); if(!node) break;..

CS/자료구조 2021.11.29

[ 자료구조 ] inorder preorder postorder traversal 탐색 알고리즘

[ 자료구조 ] inorder preorder postorder traversal 탐색 알고리즘 1. 중위 탐색 (inorder traversal) 알고리즘 , 왼나오 중위 탐색 트리 알고리즘은 순환 알고리즘이 간단하다. void inorder(tree_ptr ptr) { if(ptr) { inorder(ptr->left_child); printf(“%d”,ptr->data); inorder(ptr->right_child); } } 2. 전위 탐색 (preorder traversal) , 나왼오 순환 알고리즘이다, 전위 탐색으로 모든 트리를 탐색한다. void inorder(tree_ptr ptr) { if(ptr) { printf(“%d”,ptr->data); inorder(ptr->left_child..

CS/자료구조 2021.11.28

[ 자료구조 ] Tree Linked List로 구현하기 (2)

[ 자료구조 ] Tree Linked List로 구현하기 (2) #include #include struct tnode { int data; struct tnode* left_child; struct tnode* right_child; }; typedef struct tnode node; typedef node* tree_ptr; int main(){ int i; tree_ptr head = NULL, temp = NULL; temp = (tree_ptr)malloc(sizeof(node)); temp->data = 0; temp->left_child = NULL; temp->right_child = NULL; head = temp; tree_ptr head = NULL, temp = NULL; temp..

CS/자료구조 2021.11.27
728x90