JAVA의 특징 객체 지향 언어 객체를 만들기 위해 클래스를 작성 객체 지향 언어의 특징인 캡슐화, 상속성, 다형성, 추상화를 완벽하게 지원 높은 이식성 자바 실행환경이 설치되어 있는 모든 운영체제에서 실행 가능 하이브리드 언어 컴파일 언어인 동시에 인터
논리적 저장 순서와 물리적 저장 순서가 일치함인덱스로 해당 원소에 접근 가능random access 가능삭제 또는 삽입 과정에서는 시간 복잡도가 커짐선언시 크기로 크기 고정같은 타입 데이터를 여러개 나열한 선형 자료구조데이터 개수가 확실하게 저장되어 있을 때삽입/삭제
후입선출(LIFO)한쪽 방향에서만 데이터 삽입과 삭제 가능용어top(peek) : 가장 최근에 저장된 데이터이자 먼저 삭제될 데이터push : 데이터를 삽입. 삽입된 데이터는 삭제시 가장 먼저 삭제될 데이터pop : 데이터를 삭제. 가장 최근에 저장된 데이터가 삭제is
운영체제는 하드웨어 자원을 관리하고, 응용 프로그램과 하드웨어 사이를 중재하는 인터페이스를 의미한다.하드웨어를 관리하고, 컴퓨터 시스템의 자원들을 효율적으로 관리하며, 응용 프로그램과 하드웨어간의 인터페이스로써 다른 응용 프로그램이 유용한 작업을 할 수 있도록 환경을
Heap Heap이란? Heap은 Tree의 구조로 이루어진 자료구조로, 완전이진트리 자료구조임. (완전 이진 트리는 마지막 레벨을 제외하고 모든 레벨이 완전히 채워져 있으며, 마지막 레벨의 노드는 가능한 한 가장 왼쪽에 있는 트리) 최소힙과 최대힙이 존재함. root
데이터를 효율적으로 관리하기 위해, 임의의 길이 데이터를 고정된 길이의 데이터로 매핑하는 것해시 함수를 구현하여 데이터 값을 해시 값으로 매핑함배열이나 링크드 리스트의 단점을 극복하기 위해 제시된 방법해시값은 데이터의 key 값이 해시 함수를 통해 변환된 간단한 정수임
데이터를 효율적으로 관리하기 위해, 임의의 길이 데이터를 고정된 길이의 데이터로 매핑하는 것해시 함수를 구현하여 데이터 값을 해시 값으로 매핑함배열이나 링크드 리스트의 단점을 극복하기 위해 제시된 방법해시값은 데이터의 key 값이 해시 함수를 통해 변환된 간단한 정수임
데이터를 효율적으로 관리하기 위해, 임의의 길이 데이터를 고정된 길이의 데이터로 매핑하는 것해시 함수를 구현하여 데이터 값을 해시 값으로 매핑함배열이나 링크드 리스트의 단점을 극복하기 위해 제시된 방법해시값은 데이터의 key 값이 해시 함수를 통해 변환된 간단한 정수임
데이터를 효율적으로 관리하기 위해, 임의의 길이 데이터를 고정된 길이의 데이터로 매핑하는 것해시 함수를 구현하여 데이터 값을 해시 값으로 매핑함배열이나 링크드 리스트의 단점을 극복하기 위해 제시된 방법해시값은 데이터의 key 값이 해시 함수를 통해 변환된 간단한 정수임
프로세스 VS 스레드 프로세스 운영체제로부터 자원을 할당받은 작업의 단위 스레드 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위 프로그램 VS 프로세스 프로그램 컴퓨터에서 실행할 수 있는 파일을 통칭. 아직 파일을 실행하지 않은 상태이기 때문에 정적
CPU가 특정 기능을 수행하는 도중에 급하게 다른 일을 처리하고자 할 때 사용할 수 있는 기능프로그램 실행중에 예기치 않은 상황이 발생할 경우 현재 실행중인 작업을 즉시 중단하고, 발생된 상황에 대한 우선 처리가 필요함을 CPU에 알리는 것지금 수행중인 일보다 더 중요
이상현상 잘못된 테이블 설계로 데이터를 삽입, 삭제, 수정할 때 논리적으로 생기는 오류를 말한다. 데이터의 중복이 발생하고 전체적인 무결성이 저하된다. 이 이상현상으로 인해 현실세계의 실제 값과 데이터베이스에 저장된 값이 일치하지 않는 문제가 발생한다. 위 DB를 예
옵티마이저는 가장 효율적인 방법으로 SQL을 수행할 최적의 처리 경로를 생성해주는 DBMS의 핵심 엔진! (DBMS의 두뇌는 옵티마이저라고 할 수 있음)SQL을 작성하고 나면 즉시 실행되는게 아니라 옵티마이저에서 실행 순서를 정하고 나서(실행 계획) 그에 따라 쿼리를
not only sql이라는 뜻으로 비관계형 데이터베이스 유형을 가리키며 관계형 테이블과는 다른 형식으로 데이터를 저장한다. 높은 확장성과 가용성이 주요 장점이기 때문에 실시간 웹 어플리케이션 및 빅데이터에 널리 사용된다. 장점명확하게 정의된 스키마데이터 무결성 보장단
(저장) 프로시저란? 어떤 업무를 수행하기 위한 절차. 쿼리문을 마치 하나의 메서드 형식으로 만들고 어떠한 동작을 일괄적으로 처리하는 용도로 사용됨. 프로시저에 쿼리물을 저장했다가 이를 호출하여 사용하면 효율적임. 로직을 처리하기만 하고 결과값을 반환하지 않는 서브 프
OSI 7계층은 네트워크 통신이 일어나는 과정을 7단계로 나눈 ISO에서 정의한 네트워크 표준 모델 --> 다른 통신 장치와의 상호 호환이 가능해지며 용이성 생김송신시에 각 계층을 지날때마다 각각 Header가 붙게 되고(캡슐화), 수신시에 역순으로 헤더를 분석하고 뗀
비연결형 프로토콜IP 데이터그램을 캡슐화하여 보내는 방법과 연결 설정을 하지 않고 보내는 방법을 제공 (데이터그램이란 독립적인 관계를 지니는 패킷)흐름제어, 오류제어 또는 손상된 세그먼트의 수신에 대한 재전송을 하지 않음 (비신뢰성)짧은 요청을 보내고 짧은 응답을 기대
업로드중..암복호화에 사용하는 키가 동일한 암호화 방식을 말함알고리즘 : DES, 3DES, AES, SEED, ARIA특징공개키에 비해 연산 속도가 빠름대용량 데이터 암호화에 적합키를 교환해야 한다는 문제 발생(키 탈취 위험)사용자가 증가할수록 관리해야할 키가 방대하
HTTP HTTP란? HTTP는 Hypertext Transfer Protocol의 약자로, 서로 다른 시스템들 사이에 통신을 주고 받게 해주는 가장 기본적인 프로토콜 서버-클라이언트 모델(클라이언트가 요청을 생성하기 위한 연결을 연 다음 응답을 받을때까지 대기하는 모
HTTPS 통신에서 클라이언트가 서버에 접속하면 서버는 클라이언트에게 SSL 인증서 정보를 전달하고, 해당 인증서가 확인된 이후에 내부에 존재하는 공개키를 활용해 세션키를 생성하고 이를 활용해서 통신하는 과정을 SSL/TLS Handshake라고 함SSL은 Secure
동기란 task를 직렬적으로 수행하는 방식임요청과 그 결과가 동시에 일어난다는 약속요청(request)을 보내고 난 이후에 반드시 응답(response)을 받아야 다음 동작이 이루어짐요청과 응답의 순서 보장 가능HTTP가 대표적인 동기방식 통신 프로토콜반드시 수행이 완
네트워킹 시스템 관리측면에서 운영체제의 역할을 파악할 때, 네트워킹 기능을 빼놓을 수 없다! 응용 프로그램 등에서 네트워크를 사용하려면 운영체제에서 네트워크 프로토콜을 지원해야만 한다! 운영체제는 사용자와 컴퓨터 하드웨어 사이에 위치해서, 하드웨어를 운영 및 관리하고
인터럽트란? 인터럽트란 프로세스 실행 도중 예기치 않은 상황이 발생할 때 현재 실행중인 작업을 일시 중단하고, 발생한 상황을 우선 처리한 후 실행중인 작업으로 복귀하는 것을 말한다. 인터럽트의 종류 외부 인터럽트 전원 이상 인터럽트 : 정전, 파워 이상 등 기계 착오
PCB 운영체제가 프로세스를 제어하기 위해 정보(CPU 레지스터 값들)를 저장해 놓는 곳으로 프로세스의 상태 정보를 저장하는 구조체이다. 프로세스 생성시 PCB가 만들어지며 주기억장치에 저장되다가 프로세스가 완료되면 PCB도 함께 제거된다. 운영체제에서 프로세스는 PC
IPC 프로세스 간 통신을 의미하여 프로세스들끼리 서로 데이터를 주고받는 행위 또는 그에 대한 방법을 뜻한다. 프로세스는 완전히 독립된 실행객체이다. 서로 독립되어 있다는 것은 다른 프로세스의 영향을 받지 않는다는 장점이 있지만, 별도의 설비 없이는 서로간의 통신이 어
필요한 페이지가 메모리에 없을 때 page-fault가 발생하고 Backing Store에서 해당 페이지를 찾아 빈 프레임에 로딩해야 하는데, 이때 빈 프레임이 없을 경우 희생 당할 프레임(victim frame)을 고르는 알고리즘이 페이지 교체 알고리즘이다.page-
프로세스 VS 스레드 프로세스 프로세스는 운영체제로부터 자원을 할당받은 작업의 단위이다. 정적인 프로그램이 동적으로 변하여 프로그램이 돌아가고 있는 상태를 말한다. 운영체제로부터 메모리 공간을 할당받아 시스템 자원을 사용한다. 위의 사진처럼 프로세스는 Code, Da
둘 이상의 프로세스들이 다른 프로세스가 차지하고 있는 자원을 서로 무한정 기다리고 있어 프로세스의 진행이 중단된 상태를 의미한다.상호 배제한 번에 프로세스 하나만 해당 자원을 사용할 수 있다. 점유 대기자원을 최소 하나 보유하고 다른 프로세스에 할당된 자원을 점유하기
short process behind long process! 로 처리 시간이 긴 프로세스가 CPU를 차지하면 다른 프로세스들은 하염없이 기다려 시스템의 효율성이 떨어진다. CPU가 작업하지 않고 쉬는 시간이 많아 작업 효율이 떨어진다. 이로 인해 평균 대기 시간이 길
파일은 논리적인 저장 단위로, 관련된 정보 자료들의 집합에 이름을 붙인 것이다. 하드 디스크나 SSD같은 비휘발성 보조기억장치에 저장된 정보의 집합이다. 논리적으로는 Byte 단위로 저장되어 있다고 볼 수 있지만, 실제 물리적으로는 Block 단위로 Disk에 저장되어
메인 메모리, RAM, 주기억장치를 뜻한다. 프로그램 실행 시 필요한 주소, 정보들을 저장하고 가져다 사용할 수 있게 만드는 공간이다. 즉 작업을 위해서 사용되는 공간이라고 할 수 있다. 하드디스크에 비해 속도가 매우 빠르고 컴퓨터가 꺼지면 저장된 모든 데이터가 날아가
거품 정렬은 인접한 두 수를 비교하여 더 큰 수를 뒤로 보내는 간단한 정렬 알고리즘이다. 큰 그림으로 보면 뒤에서부터 앞으로 정렬해나가는 구조를 가지고 있다. 각 원소의 이동이 거품 방울이 수면으로 올라오는 듯한 모습을 보이기 때문에 거품 정렬이라는 이름을 가지게 되었
동기 VS 비동기 (시간 관점) 동기란? Synchronous는 현재 작업의 응답과 다음 작업의 요청이 동시에 일어나는 것이다. 요청과 그 결과가 동시에 일어나는 것이다. 요청 후 결과가 와야만 그 다음 작업이 이루어지는 방식이다. 특징 간단하고 직관적 어떠한
여러 프로세스가 데이터를 공유하며 수행될 때, 각 프로세스에서 공유 데이터를 접근하는 프로그램 코드 블럭을 임계 영역이라고 한다. 즉, 여러 프로세스가 동일 자원을 동시에 참조하여 값(공유하는 변수명, 파일 등)이 오염될 위험 가능성이 있는 영역이다. 프로그래밍시에 성
선택 정렬은 정렬되지 않은 데이터들에 대해 가장 작은 데이터를 찾아 가장 앞의 데이터와 교환해나가는 방식이다.주어진 리스트 중 최소값을 찾는다.그 값을 맨 앞에 위치한 값과 교체한다맨 처음 위치를 뺸 나머지 리스트를 같은 방법으로 교체한다.우선, 위치(index)를 선
자료 배열의 모든 요소를 앞에서부터 차례대로 이미 정렬된 배열 부분과 비교하여, 자신의 위치를 찾아 삽입함으로써 정렬을 완성하는 알고리즘이다. 매 순서마다 해당 원소를 삽입할 수 있는 위치를 찾아 해당 위치에 삽입한다.삽입 정렬은 두 번째 자료부터 시작하여 그 앞(왼쪽
병합 정렬이란? 분할 정복(Divide & Conquer) 기법을 사용한 알고리즘 중 하나로 재귀를 이용하기도 한다. 주어진 배열을 원소가 하나밖에 남지 않을때까지 계속 둘로 쪼갠 후에 크기순으로 재배열하면서 원래 크기의 배열로 합친다. 병합 정렬의 과정 분할
힙은 완전이진트리 기반 자료구조이다. 최대힙은 부모 노드의 키 값이 자식 노드의 키 값보다 항상 같거나 큰 이진트리를 뜻한다. index i에 대해서부모 노드의 index : i / 2왼쪽 자식 노드의 index : i \* 2 + 1오른쪽 자식 노드의 index :
기수 정렬의 전체적인 컨셉은 데이터의 각 자릿수를 낮은 자리수에서부터 가장 큰 자리수까지 올라가면서 정렬을 수행하는 것이다. 이러한 이유로 자릿수가 존재하지 않는 데이터들은 기수정렬로 정렬할 수 없다.LSD(Least Significant Digit)가장 작은 자릿수부
이름 그대로 배열 내에 특정한 값이 몇 번 등장했는지에 따라 정렬을 수행하기 때문에 비교 연산이 사용되지 않는 정렬이다. 배열의 인덱스를 이용하여 데이터를 저장할 것이기 때문에 배열의 인덱스는 양수만 존재해야 하므로 데이터는 양수여야 한다. 또한 값이 너무 커지만 메모
이진 탐색 알고리즘은 정렬되어 있는 리스트에서 탐색 범위를 절반씩 좁혀가며 데이터를 탐색하는 방법이다.이진 탐색은 배열 내부의 데이터가 정렬되어 있어야만(오름차순) 사용할 수 있는 알고리즘이다.변수 3개를 사용하여 탐색한다.(start, end, mid) 찾으려는 데이
정점(node)과 그 정점을 연결하는 간선(edge)으로 이루어진 자료구조의 일정을 말한다.하나의 정점으로부터 시작하여 차례대로 모든 정점들을 한 번씩 방문하는 것을 말한다.루트 노드에서 시작해서 다음 분기로 넘어가기 전에 해당 분기를 완벽하게 탐색하는 방식 (그러니까
원소가 n개인 배열의 일부 원소를 골라내서 만든 부분 수열 중, 각 원소가 이전 원소보다 크다는 조건을 만족하고(오름차순), 그 길이가 최대한 부분 수열을 최장 증가 부분 수열이라고 함사실 가장 단순한 방법은 완전 탐색이긴 한데, 이 경우는 너무 비효율적이라서 제외하고
LCA란 트리에서 두 정점 u, v에서 가장 가까운 공통조상을 찾는 과정을 말함. 두 점 사이의 거리를 구할 때 사용하며 두 노드에서 시작하여 올라가면서 부모 노드가 같아질 때까지 찾아가면 됨.A와 B 두 점 사이의 거리 = 1부터 A까지의 거리 + 1부터 B까지의 거
다익스트라 알고리즘은 다이나믹 프로그래밍, 즉 DP를 활용한 대표적인 최단 경로 탐색 알고리즘이다. 특정한 하나의 정점에서 다른 모든 정점으로 가는 최단 경로를 알려준다. 이 알고리즘이 DP 문제인 이유는 '최단 거리는 여러 개의 최단 거리로 이루어져 있기 때문'이다.
비트마스크는 이진수를 사용하는 컴퓨터의 연산 방식을 이용하여, 정수의 이진수 표현을 자료 구조로 쓰는 기법을 말한다.이진수는 0 또는 1을 이용하기 때문에 한 비트가 표현할 수 있는 경우는 0과 1 두가지이다. 보통 1은 True를, 0은 False를 나타낸다.NOT
OAuth는 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신드르이 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는, 접근 위임을 위한 개방형 표준이다.너무 어려우니 쉽게 풀어서 설명하면 페이스북이나 카카
JWT는 JSON Web Token의 약자로 사용자를 인증하고 식별하기 위한 토큰 기반 인증이다. 토큰 자체에 사용자의 권한 정보나 서비스를 사용하기 위해 정보가 포함된다. RESTful과 같은 무상태 환경에서도 사용자 데이터를 주고받을 수 있게 된다.
애플리케이션 계층(7계층) : L7 스위치인터넷 계층(3계층) : L3 스위치, 라우터데이터 링크 계층(2계층) : L2 스위치, 브리지물리 계층(1계층) : NIC, 리피터, AP
컴퓨터와 컴퓨터 간의 통신은 IP 주소 기반이라고 알고 있으나 정확히 이야기 하면 IP 주소에서 ARP를 통해 MAC 주소를 찾아 MAC 주소를 기반으로 통신하는 것ARP란 Address Resolution Protocol로, IP 주소로부터 MAC 주소를 구하는 IP
전송 계층 위에 있는 애플리케이션 계층으로서 웹 서비스 통신에 사용됨.기본적으로 한 연결당 하나의 요청을 처리하도록 설계됨\-> RTT 증가를 불러오게 됨RTT란 패킷이 목적지에 도달하고 나서 다시 출발지로 돌아오기까지 걸리는 시간이며 패킷 왕복 시간임서버로부터 파일을
인터넷 프로토콜 스위트 : 인터넷에서 컴퓨터들이 서로 정보를주고 받는 데 쓰이는 프로토콜의 집합\-> 이를 TCP/IP 4계층이나 OST 7계층 모델로 설명함계층들은 특정 계층이 변경되었을 때 다른 계층이 영향을 받지 않도록 설계되었음.웹서비스, 이메일 등 서비스를 실
CPU 스케쥴링과 프로세스 관리메모리 관리디스크 파일 관리I/O 디바이스 관리유조 프로그램이 맨 위에 있고 그 다음으로 GUI, 시스템콜, 커널, 드라이버가 있으며 가장 밑에 하드웨어가 있는 구조. 여기서 GUI, 시스템콜, 커널, 드라이버 부분이 바로 운영체제를 지칭
메모리 계층은 레지스터, 캐시, 메모리, 저장장치로 구성되어 있음.레지스터 : CPU 안에 있는 작은 메모리, 휘발성, 속도 가장 빠름, 기억 용량 가장 작음캐시 : L1, L2 캐시를 저장함. 취발성, 속도 빠름, 기억 용량 적음(L3 캐시도 있음)주기억장치 : RA
프로세스와 스레드 컴퓨터에서 실행되고 있는 프로그램을 말하며 CPU 스케쥴링의 대상이 되는 작업이라는 용어와 거의 같은 의미로 쓰임. 스레드는 프로세스 내 작업의 흐름을 지칭함. 프로그램이 메모리에 올라가면 프로세스가 되는 인스턴스화가 일어나고, 이후 운영체제의 CPU
데이터베이스는 일정한 규칙, 혹은 규악을 통해 구조화되어 저장되는 데이터의 모음임. 해당 데이터베이스를 제어, 관리하는 통합 시스템을 DBMS라고 하며, 데이터베이스 안에 있는 데이터들은 특정 DBMS마다 정의된 쿼리 언어를 통해 삽입, 삭제, 수정, 조회 등을 수행할
ERD는 데이터베이스를 구축할 떄 가장 기초적인 뼈대 역할을 하며, 릴레이션 간의 관계들을 정의한 것임. 만약 서비스를 구축한다면 가장 먼저 신경써야 할 부분임.ERD는 시스템의 요구 사항을 기반으로 작성되며 이 ERD를 기반으로 데이터베이스를 구축함. 데이터베이스를
TCP 통신 네트워크 통신에서 신뢰적인 연결방식 TCP는 기본적으로 unreliable network에서, reliable network를 보장할 수 있도록 하는 프로토콜 TCP는 network congestion avoidance algorithm(혼잡회피)을 사용함
프로세스와 스레드 프로세스란? 프로세스는 실행중인 프로그램을 의미. 메모리에 올라와서 실행되고 있는 프로그램 한 개의 인스턴스. 프로세스는 운영체제에 의해 관리되며, 독립적으로 실행되고 자원을 할당받을 수 있는 단위. 프로세스의 컴파일 과정 컴파일러가 컴파일 과정을
트랜잭션이란 데이터베이스의 상태를 변경시키기 위해 수행하는 작업 단위이다. 상태 변경이라고 함은 SELECT, UPDATE, INSERT, DELETE 와 같은 행동을 뜻한다. 이 트랜잭션은 모두 한꺼번에 수행되어야 할 일련의 연산들을 의미한다.한꺼번에 수행되어야 하기
관계형 데이터베이스(RDBMS) 관계형 데이터베이스는 행과 열을 가지는 표 형식 데이터를 저장하는 형태의 데이터베이스이다. SQL을 이용하여 관리 및 접근한다. Oracle Oracle Corporation에서 개발되었으며 현재 가장 널리 사용되는 RDBMS이다. 사
인덱스란 추가적인 쓰기 작업과 저장 공간을 활용하여 데이터베이스 테이블의 검색 속도를 향상시키기 위한 자료구조이다. 테이블의 모든 데이터를 검색하면 시간이 오래 걸리기 때문에 데이터와 데이터의 위치를 포함한 자료구조를 생성하여 빠르게 조회할 수 있도록 돕는다. 인덱스는
특정한 크기의 입력에 대하여 알고리즘이 얼마나 오래 걸리는지에 관련된 것이 바로 '시간 복잡도'이다. 입력값과 연산 수행 시간의 상관관계를 나타내는 척도를 말하며, 보통 빅오표기법을 사용한다.효율적인 알고리즘을 구현한다는 것은 바꾸어말해 입력값이 커짐에 따라 증가하는
선형 자료 구조란 자료를 구성하는 원소를 하나씩 순차적으로 나열시킨 형태이다. 자료들간의 앞, 뒤 관계가 1:1 관계이다.데이터 요소를 연결된 노드로 표현하는 방식이며, 각 노드는 데이터와 다음 노드를 가리키는 포인터(또는 링크)로 구성된다.이 포인터를 통해 다음 노드
그래프 여러 점들이 서로 복잡하게 연결되어 있는 관계를 표현한 자료구조로, 정점간의 관계를 표현한 조직도이다. 두 정점 사이를 이어주는 간선과 정점으로 이루어진다. 즉, 정점과 그 정점을 연결하는 간선을 하나로 모아 놓은 자료 구조다. 정점 : 데이터가 저장되는 그래
특정 시간동안 실제로 네트워크를 통과할 수 있는 평균 데이터 양을 가리킴. 링크내에서 성공적으로 전달된 데이터의 양을 말하며, 얼만큼의 트래픽을 처리했는지 나타냄.많은 처리량을 가진다 == 많은 트래픽을 처리한다대역폭 (주어진 시간동안 네트워크 연결을 통해 흐를 수 있
왼쪽의 OSI 7계층에서 TCP/IP 계층으로 발전하면서 계층이 많이 사라졌는데 이러한 계층 구분은 특정 계층이 변경되었을 때 다른 계층이 영향을 받지 않도록 설계되었다. OSI 7계층의 세션 계층, 표현 계층, 응용 계층에 해당한다. TCP/UDP 기반의 응용 프로그