"이것이 취업을 위한 컴퓨터 과학이다 with CS 기술면접" 책을 참고했습니다.1. 운영체제의 큰 그림스마트폰의 운영체제인 안드로이드나 iOS나 데스크톱 PC의 윈도우나 맥OS의 경우 형태는 다른 것 같지만 제공하는 핵심적인 기능은 비슷하다. 이런 운영체제의 핵심적인 기능을 담당하는 부분을 커널(Kernel)이라고 하는데, 별다른 언급이 없다면 이제부터 운영체제라고 설명하는 부분은 이 커널을 지칭한다고 이해하면 된다.운영체제에는 2가지의 큰 핵심 기능이 있다. 하나는 자원을 할당하고 관리하는 역할이고, 다른 하나는 프로세스 및 스레드를 관리하는 역할이다. 이제 이 핵심 기능들을 차례대로 살펴보면서 전체적인 큰 그림을 그려보며 설명하겠다.1-2 운영체제의 역할운영체제에서 설명하는 자원이란 프로그램 실행에..
분류 전체보기
"이것이 취업을 위한 컴퓨터 과학이다 with CS 기술면접" 책을 참고했습니다.1. 메모리이전 장에서 CPU에 대해서 설명할 때, 현재 실행 중인 프로그램은 메모리에 저장되어 있고, CPU가 실행할 명령어는 메모리에 저장되어 있어야 한다고 추가적으로 설명했었는데, 이번에 좀 더 알아보자.1-1 RAM메인 메모리 역할을 하는 하드웨어에는 크게 RAM과 ROM이 있다고 했었고, 대부분 메인 메모리의 경우에는 RAM을 지칭한다. RAM은 전원 종료시 데이터가 모두 날라가는 휘발성 저장장치이며, 위에서 설명했던 것처럼 CPU가 실행할 대상을 저장하는 부품이다. 보조기억장치에 있는 프로그램을 CPU가 바로 불러올 수 없기 때문에 메모리로 불러오는 과정을 거쳐야하는데, 이 과정에서 RAM의 크기가 성능에 많은 영..
"이것이 취업을 위한 컴퓨터 과학이다 with CS 기술면접" 책을 참고했습니다.1. CPUCPU는 컴퓨터에서 가장 중요한 핵심 부품 중 하나이지만, 개발자가 내부 회로나 작동 방식을 모두 알아야하는 것은 아니다. 필요한 핵심 정보만 차례차례 알아보자1-1 레지스터레지스터는 CPU 내부에 있는 작은 임시 저장 장치로 다양하게 존재하며 각기 다른 이름과 역할을 지니고 있다. 또한 데이터나 명령어가 실행 전후로 레지스터에 저장되기 때문에 저장된 값만 확인해도 프로그램이 어떻게 동작하는지 알 수 있다.이제 각각의 공통적으로 지니는 핵심적인 레지스터에 대해서 알아보자.프로그램 카운터 : 메모리에서 다음으로 읽어들일 명령어의 주소를 저장한다.CPU에 따라서는 명령어 포인터라고 부르기도 한다.일반적으로 순차적으로 ..
"이것이 취업을 위한 컴퓨터 과학이다 with CS 기술면접" 책을 참고했습니다.1. 컴퓨터 구조의 큰 그림컴퓨터의 구조는 크게 컴퓨터가 이해하는 정보(데이터와 명령어)와 컴퓨터의 핵심 부품(CPU, 메모리, 보조기억장치, 입출력장치)로 나눌 수 있다. 각각의 내용에 대해서 간략히 설명하면 다음과 같다.데이터 : 숫자, 문자, 이미지와 같은 정적 정보로 명령어의 재료명령어 : 수행할 동작과 대상으로 나누어져 있는 기능CPU(Central Processing Unit) : 정보(데이터, 명령어)를 읽고 해석해서 실행하는 부품핵심은 주요 구성 요소(ALU, 제어장치, register)와 빠른 명령어 처리를 위한 기술 정도만 이해하자.메인 메모리 : RAM, ROM이 있지만 주로 RAM을 의미하며, 현재 실행..
소프트웨어를 개발할 때, 객체 간의 의존성은 코드를 확장하거나 수정할 때 많은 영향을 끼친다. IoC와 DI는 이런 부분을 좀 더 효율적으로 관리하고 코드의 유연성을 높여주는 설계 패턴이라고 할 수 있다.1. IoC(Inversion of Control)란?IoC란 단어 뜻 그대로 제어의 역전이라고 부른다. 객체의 생성이나 의존성 관리의 책임을 기존에는 개발자가 담당했었다면, 그걸 프레임워크나 컨테이너가 담당하도록 하는 개념을 말한다. 자바를 기준으로 하면 개발자가 아닌 Spring, 좀 더 깊게 들어가면 IoC 컨테이너에서 그 부분을 담당해서 객체의 생성과 관리를 외부에서 제어하게 된다.구체적으로 살펴보면 스프링에서 IoC 컨테이너라는 개념을 구현하기 위해, BeanFactory와 Application..
1. 핵심 학습 키워드웹 인증웹 애플리케이션에서 사용자의 정체를 확인하고(인증), 그에 따른 적절한 권한을 부여(인가)하는 과정을 의미.로그인 인증에는 다양한 방식이 존재한다.ID / PW 기반의 로그인소셜 로그인(Oauth2)이메일 인증휴대폰 인증MFA(다중 인증요소)위와 같은 방법을 인증하는 방식은 크게 세션 / 쿠키, JWT를 활용해서 하는 것이 일반적이다.1-1 HTTP 세션웹 애플리케이션에서 세션 공간에 사용자 정보를 일정 시간 동안 저장하는 기술.HTTP session은 HTTP 프로토콜의 Stateless한 문제로 인해 요청 시 마다 정보롤 다시 보내는 문제를 해결하기 위해서 서버측에서 저장하고 관리하는 session ID를 발급한다.주로 쿠키를 사용해서 구현된다.사용자가 다시 접속해도 유지..
1. Dispatcher Servlet이란?Dispatcher Servlet은 Dispatcher(보내다 / 파견하다) + Servlet(웹 요청과 응답을 처리하는 자바 객체)의 합친 단어로 그 뜻처럼 HTTP 프로토콜로 들어오는 모든 요청을 가장 먼저 받아 적합한 컨트롤러에게 보내주는 Front Controller를 의미한다.Front Controller는 서블릿 컨테이너에서 클라이언트의 요청을 받아서 처리해주는 컨트롤러로 MVC 구조에서 함께 사용되는 디자인 패턴으로 이해하면 된다. (https://www.geeksforgeeks.org/front-controller-design-pattern/)2. Dispatcher Servlet의 동작 과정클라이언트 요청 확인: 클라이언트의 요청을 받아들인다.H..
문제 링크https://school.programmers.co.kr/learn/courses/30/lessons/42587 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr문제 풀이 과정from collections import dequedef solution(priorities, location): # 초기화 queue_list = deque(enumerate(priorities)) answer = [] while queue_list: current = queue_list.popleft() # 현재 프로세스보다 우..