프로세스 스케줄러(Process Scheduler)는 OS의 핵심 기능으로서 동시에 실행되는 프로세스의 실행순서와 우선순위를 관리하는 역할을 한다. 조금 더 자세히 말하자면 여러 프로세스가 시스템의 리소스에 접근할 때 필연적으로 경쟁상태에 놓이게 되는데, 프로세스 스케줄러는 이 경쟁상태를 적절히 조율해서 리소스의 사용 효율성과 짧은 응답시간, 처리량과 처리율 등을 극대화시키기 위해 다양한 알고리즘을 이용해 프로세스의 스케줄을 관리한다. 이와 같은 프로세스 스케줄링 알고리즘은 크게 아래의 두 가지로 나뉘며, 선점형 스케줄링 특정 프로세스가 CPU를 점유하고 있더라도 우선순위가 높은 다른 프로세스가 실행되면 강제로 기존 프로세스를 중단시키고 새로운 프로세스를 실행시키는 방식이다. 우선순위 기반, 라운드 로빈..
목차 XSS, CSRF, SQL Injection은 웹 보안에서 가장 많이 발생하는 취약점들이다. 말을 바꾸면 좋지 않은 의도를 가진 사람이 해당 서비스나 서비스를 이용하는 사용자를 공격하는 방법들인데, 이 글에선 하나씩 개괄적으로 보고 그 방지책에 대해 알아본다. XSS(Cross-Site Scripting) XSS는 악성 스크립트를 삽입하여 해당 페이지를 요청하는 사용자의 브라우저에서 실행되도록 하는 방식이다. 이 공격은 주로 사용자의 개인정보가 담긴 쿠키나 세션을 하이재킹해 권한을 탈취하는 것을 목적으로 한다. 최악의 경우 탈취한 권한으로 사용자의 계좌에서 돈을 인출하는 상황도 발생할 수 있기 때문에, XSS는 최악의 보안 위협으로 간주되고 있다. 이를 방지하기 위해서는 입/출력 값의 스크립트 태그..
목차 객체 지향 프로그래밍과 함수형 프로그래밍은 둘 다 프로그래밍 패러다임의 한 종류이며, 여기서 패러다임이란 단순히 말하자면 프로그래밍을 무엇으로 정의할 것인가에 대한 관점이라고 정리할 수 있다. 이런 맥락에서, 본격적으로 두 패러다임에 관해 정리하기 전에 근본적인 차이를 말하자면 객체 지향 프로그래밍은 "프로그래밍은 상호작용하는 객체의 집합이다."라는 관점을 가진 패러다임이며 함수형 프로그래밍은 "프로그래밍은 연속된 함수의 집합이다."라는 관점을 가진 패러다임이라 정리할 수 있다. 추가로 객체 지향 프로그래밍은 일반적으로 명령형 프로그래밍으로, 함수형 프로그래밍은 일반적으로 선언형 프로그래밍으로 작성한다는 차이도 있다. 여기서 명령형/선언형 프로그래밍 역시 프로그래밍 패러다임의 한 종류이며, 대략 아..
목차 Program, Process, Thread 프로그램, 프로세스, 그리고 스레드는 모두 컴퓨터에서 실행되는 코드를 가리킨다. 하지만 당연하게도 중요한 차이점들이 있는데, 짧게 정리하면 아래와 같다. 프로그램 프로그램은 실행 가능한 코드와 데이터의 집합이다. 실행 파일이나 라이브러리 형태로 디스크에 저장되며 실행되기 전에 디스크에서 메모리로 로드되는데, 이를 '프로그램 인스턴스'라고 한다. 프로세스 위에서 말한 '프로그램 인스턴스'가 바로 프로세스이다. 다시 한번 정리하자면 프로그램이 실행되어 운영체제에 의해 메모리상에 올라가면 이를 프로세스라 부른다. 따라서 운영체제로부터 자원을 할당받는 작업의 단위라 볼 수 있으며, 프로세스 사이에는 자원이 공유되지 않는다. 이 때문에 Context Switchi..
컴퓨터공학에서 유독 16진수를 많이 사용하는 이유는 2진수를 4자리씩 끊어 표현할 수 있기 때문이다. 참고로 16진수는 0부터 9의 숫자, 그리고 A부터 F까지의 알파벳으로 수를 표현하는데, 읽는 법을 조금이라도 훈련받은 사람이라면 16진수 숫자를 바로 2진수로 변환하는 게 쉽고 언제나 가능하다. 즉 0과 1의 세계인 컴퓨터공학에서 길게 늘어지는 2진수를 가독성 좋게 축약하기 위해 선택한 진법이며, 8도, 32도 아닌 16인 이유는 위의 이유에 더해 16진수 두 자리가 1바이트(2^8)를 표현할 수 있기 때문이다. 그렇다고 1바이트를 한 자리로 표현하려면 64진수가 필요해 가독성이 심각하게 떨어지고, 8진수는 조금 미묘하므로 16진수를 필연적으로 골랐다고도 할 수 있겠다. 코딩을 하거나 알고리즘을 풀다 ..
목차 https://gnidinger.tistory.com/651 [면접 준비 - Network]CORS에 대하여 - 1 CORS 교차 출처 리소스 공유(Cross-Origin Resource Sharing, CORS)는 추가 HTTP 헤더를 사용하여 웹 애플리케이션이 다른 출처의 선택한 리소스에 접근할 수 있는 권한을 부여하도록 브라우저에 알려주는 메 gnidinger.tistory.com 벌써 세 달이나 이전 일이 되었지만, 처음 적은 CORS의 개념과 관련된 글에 이어 조금 실제적인 부분을 정리하려고 한다. CORS라는 게 무엇인지 경험적으로는 알고 또 처리할 수 있지만 구체적으로 어떻게 표현되는지 알고 싶어서. 짧은 글이 될 것 같지만, 시작! Origin in CORS CORS에서 Origin이..
목차 HTTP 상태 코드는 말 그대로 HTTP 요청에 대한 응답의 상태 코드이다. 크게 100번대부터 500번대까지의 코드가 존재하며, 그중 100번대는 사실상 쓰이지 않는다고 한다. 어디에 어떤 코드가 있는지 대략 정리하고 넘어가자. 1XX - Informational Response 정보 전달을 위한 상태코드. 조건부 응답을 가리키며 요청을 제대로 받았고 작업이 진행되고 있다는 표시이다. 사실상 쓰이지 않는 코드번호가 되었지만 최근 웹소켓(101)과 특정 프로토콜(WebDAV, 102)에서 다시 쓰이고 있다고 한다. 100 - Continue 101 - Switching Protocols 102 - Processing(처리중) 103 - Early Hints(서버는 응답을 준비 중, 사용자의 사전로딩..
Hash 배열은 빠른 검색 속도를 가지고 있으나 삽입/삭제 시 많은 비용이 소모된다. 이를 극복한 LinkedList는 삽입/삭제의 비용이 적지만 데이터가 많아질수록 검색에 비용이 많이 든다. 해시는 이를 극복하기 위해 도입된 개념이다. 해시, 해시 함수(Hash Function)란 임의의 길이를 갖는 임의의 데이터를 받아 고정된 길이의 데이터를 리턴하는 단방향 함수를 말한다. 가장 쉬운 예로는 나머지 연산자(%)가 있을 수 있겠다. 해시 함수의 특징은 아래와 같으며, 비교적 간단한 알고리즘으로 시스템 자원을 덜 소모한다, 즉 해시값 생성에 많은 시간이 들지 않는다. 해시값을 해독할 때는 많은 시간이 든다. 같은 입력 값에 대해선 같은 출력 값이 보장되며, 출력 값은 고르게 분포한다. 입력값이 아주 조금..
목차 자바에는 일반적으로 쓰이는 String 클래스 말고도 두 가지 클래스가 더 존재한다. 똑같이 문자열을 저장 및 관리하는 클래스가 왜 세 가지나 있을까? 차이점을 간결하게 정리하자. String vs. String Buffer / Builder String - 한 번 생성되면 할당된 메모리 주소가 변하지 않는다. '+' 혹은 concat() 메서드를 사용해 문자열을 추가하면 기존 메모리주소에 이어서 할당되는 것이 아닌 문자열이 추가된 새로운 문자열을 생성해 저장한다. 이때 힙 메모리엔 기존의 문자열이 Garbage로 남아 GC에 의해 회수되기 전까지 메모리를 차지하는데, 문자열의 수정이 자주 발생한다면 계속해서 Garbage가 쌓이게 된다. 이를 불변(immutable) 하다고 한다. 굳이 왜 이런 ..
지난 글에서 스키마 정제와 DB 정규화에 대해 정리하다 키(Key)에 대해서도 언급했다. 한 마디로 정의하자면 키란 테이블의 식별자 기능을 할 수 있는 하나 이상의 컬럼의 집합을 말하며, 조금 구체적으로는 아래와 같이 구분할 수 있다. 슈퍼키 - 테이블의 각 행을 유일하게 식별할 수 있는 하나 이상의 컬럼의 집합이다. 유일성을 만족한다. 후보키 - 슈퍼키 중에서 최소성을 만족하는 컬럼의 집합이다. 기본키 - 후보키 중 하나로 최소성과 유일성을 만족하는 컬럼이다. 테이블 별로 오직 하나만 지정할 수 있다. 추가로 null값을 가질 수 없고, 당연히 중복된 값을 가질 수도 없다. 대체키 - 기본키로 선택되지 않은 후보키를 말한다. 기본키와 동일한 속성을 지니며 대체도 가능하다. 이중 보통 내가 만나는 아이는..
- Total
- Today
- Yesterday
- 야경
- java
- 알고리즘
- Backjoon
- 면접 준비
- spring
- 자바
- 스프링
- 맛집
- 유럽
- 남미
- 기술면접
- Algorithm
- 파이썬
- 여행
- 백준
- 유럽여행
- Python
- 세계여행
- 스트림
- 칼이사
- 리스트
- 세모
- BOJ
- 세계일주
- 중남미
- a6000
- 동적계획법
- RX100M5
- 지지
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |