Map이라는 자바 내 인터페이스를 구현한 구현체 입니다.Map은 key-value 값을 가지는 자료구조이며, key는 유일한 값, value는 중복을 허용하는 구조를 가지고 있습니다.빠른 검색을 위해서 사용합니다. 보통 검색을 하기 위해서는 배열의 저장된 값을 선형탐색
이진탐색트리란 이진탐색(binary search)과 연결리스트(linked list)를 결합한 자료구조의 일종입니다. 이진탐색의 효율적인 탐색 능력을 유지하면서도, 빈번한 자료 입력과 삭제를 가능하게끔 고안됐습니다.이진 탐색 트리는 정렬된 이진트리로써 다음과 같은 속성
트라이 알고리즘은 문자열을 트리 구조로 저장해 빠르게 찾는 알고리즘 기법 중의 하나입니다.보통 트리의 구조에는 단일 int형 변수를 저장하는 경우가 많은데, 이를 문자열 형태로 저장한다고 생각하면 됩니다.검색어 자동완성, 사전 검색, 문자열 검사 등에 사용됩니다.하나의
프로세스란? > * 운영체제로부터 자원을 할당받아 메모리 상에 올라와 실행되고 있는 프로그램을 뜻합니다. 프로그램이란 파일이 저장 장치에 저장되어 있지만, 정적인 상태를 가지고 있는 파일을 뜻합니다. 프로그램에서 프로세스 상태로 변경되면 프로세스 제어 블록(PCB)를
응용 프로그램이 운영체제의 기능을 사용하기 위해 운영체제의 API를 호출하는 함수입니다.운영 체제는 사용자 모드와 커널 모드로 나뉘어 구동되는데 open(), exec(), fork(), kill()와 같은 기능들을 사용하려면 커널 모드로의 전환이 필요합니다. 시스템
프로그램을 실행하는 도중에 예기치 않은 상황이 발생할 경우 현재 실행 중인 작업을 즉시 중단하고, 발생된 상황에 대한 우선 처리가 필요함을 CPU에게 알리는 것입니다.지금 수행 중인 일보다 더 중요한 일(ex. 입출력, 시스템 콜 등의 예외상황)이 발생하면 그 일을 먼
프로세스는 OS에 의해 메모리를 할당받습니다.이 메모리는 프로세스의 주소 공간으로, 영역이 3가지로 구성 되어 있습니다.Code Segment(코드 부분)읽기만 가능하며, 프로그램의 코드가 저장되어 있습니다.Data Segment (데이터 부분)전역 변수(global
IPC란? >* 프로세스는 각자 독립된 메모리 공간을 가지고 있어 서로간의 데이터를 공유할 방법이 없습니다. 그렇기 때문에 나온 방식이 IPC로 프로세스 간 통신을 하는 방법입니다. 프로세스는 커널이 제공하는 IPC 설비를 이용해 프로세스간 통신을 할 수 있게 되며,
CPU를 효율적으로 사용하기 위해 운영체제가 CPU의 자원을 어떤 프로세스에게 할당해 줄 지 그 일정을 짜는 것입니다.프로세스는 작업을 진행하기 위해 CPU를 할당받아야 합니다. 하지만 CPU는 하나의 프로세스만 할당이 가능합니다. 따라서 특정 프로세스가 I/O 요청에
둘 이상의 프로세스가 다른 프로세스가 점유하고 있는 자원을 서로 기다릴 때 무한 대기에 빠지는 상황을 일컫습니다.위 상황은 두 프로세스 모두 Resource 1, 2가 필요한 상황입니다. 하지만 서로 자원을 각각 하나씩 점유하고 있고, 상대방이 자원을 해제할때까지 기다
네트워크 통신이 일어나는 과정을 7단계로 나눈 것을 말합니다.스프링과 웹을 MVC로 나누면 디버깅이 수월한 것 처럼, 각 통신 과정을 계층화 하여 어떤 계층에서 문제가 발생했는지 한눈에 보기 위함입니다. 각 계층의 역할이 다르기 때문입니다.전송 단위 : 비트(Bits)
전송 계층의 주요 프로토콜로, 연결 지향형 프로토콜입니다.TCP는 상위층이 넘겨준 데이터를 세그먼트라는 단위로 쪼개어 가공하고 하위층으로 넘겨주며 상위층이 신뢰할수 있는 연결방식을 제공합니다.ex) 3way, 4wayTCP는 기본적으로 IP와 함께 사용이 됩니다. 이유
데이터의 무결성은 데이터의 정확성, 일관성, 유효성이 유지되는 것을 말합니다. 데이터의 무결성을 유지하는 것은 데이터베이스 관리시스템 (DBMS)의 중요한 기능이며, 주로 데이터에 적용되는 연산에 제한을 두어 데이터의 무결성을 유지합니다.개체 무결성 제약조건은 기본키를
데이터베이스(DB: database)는 통합하여 관리되는 데이터의 집합체를 의미합니다.이는 중복된 데이터를 없애고, 자료를 구조화하여, 효율적인 처리를 할 수 있도록 관리됩니다.따라서, 여러 업무에 여러 사용자가 데이터 베이스를 사용할 수 있습니다.이러한 데이터베이스는
인덱스란 추가적인 쓰기 작업과 저장 공간을 활용하여 데이터베이스 테이블의 검색 속도를 향상시키기 위한 자료구조입니다.테이블을 만들고 안에 데이터가 쌓이게 되면 테이블의 레코드는 내부적으로 순서가 없이 뒤죽박죽으로 저장됩니다. 이렇게 되면 Where절에 특정 조건에 맞는
객체를 직렬화하여 전송 가능한 형태로 만드는 것을 의미합니다. 객체를 네트워크로 전송하기 위해 연속적인 데이터로 변환한뒤, Stream을 통해 데이터를 읽도록 합니다.주로 객체들을 통째로 파일로 저장하거나 전송하고 싶을 때 사용됩니다.역직렬화? 직렬화된 파일 등을 역으
메모리 관리 방법 중에 하나로, 시스템에서 더이상 사용하지 않는 동적 할당된 메모리 블럭을 찾아 자동으로 다시 사용 가능한 자원으로 회수하는 기법입니다.일반적으로 Heap 영역의 오브젝트 중 stack 에서 도달 불가능한 (Unreachable) 오브젝트들은 가비지 컬
프로세스를 구성하는 세부 실행단위(Unit)를 말합니다. 자바는 JVM을 통해 멀티 쓰레드를 구성하여 concurrent 하게 동작하여 동시에 여러 작업을 수행할 수 있습니다. 하지만 동시에 수행되는 쓰레드의 수행순서는 보장되어 있지 않습니다.또한, 모든 프로세스는 메
싱글톤, 팩토리 패턴과 마찬가지로 GoF의 생성 패턴에 속하는 패턴입니다.원래 사용하던 자바빈즈 패턴의 경우, 생성자에 맞게 파라미터를 일일이 설정해줘야 하며, 만약 그러한 생성자가 없을경우 일일이 setter를 활용해 데이터를 입력해줘야 합니다.하지만 후자의 경우 객
단일 프로그램을 각 컴포넌트 별로 나누어 작은 서비스의 조합으로 구축하는 방법입니다.독립적으로 배포 가능한 각각의 기능을 수행하는 서비스로 구성된 프레임워크각 컴포넌트가 독립적으로 기능하기 때문에 해당 기능이 마비되더라도, 전체적인 서비스에 영향을 주지 않습니다.모놀리