[OS] 뮤텍스 / 세마포어
·
OS
정의 여러 프로세스나 쓰레드가 공유자원에 접근하는 것을 제어하는 방법 병행처리를 위한 동기화 기법 뮤텍스 공유된 자원 데이터를 여러쓰레드가 접근하는 것을 막는 것 한 쓰레드, 프로세스에 의해 소유될 수 있는 Key를 기반으로 하는 상호배제 기법 Critical Section을 가진 스레드의 Running time이 서로 겹치지 않도록 각각 단독으로 실행하게 하는 기술 다중 프로세스들의 공유 리소스에 대한 접근을 조율하기 위해 synchronized 또는 lock을 사용 세마포어 공유된 자원 데이터를 여러프로세스가 접근하는 것을 막는 것 현재 공유자원에 접근할 수 있는 쓰레드, 프로세스를 나타내는 수를 나타내는 값을 두어 상호배제를 달성하는 기법 차이점 뮤텍스는 동기화대상이 하나일 경우, 세마포어는 동기화..
[JAVA] HashMap 원리
·
JAVA
정의 Key-Value가 1:1로 Mapping되는 자료구조 Mapping으로 인해 삽입, 삭제, 검색이 평균적으로 O(1)인 자료구조 Key에 대한 해시값을 기반으로 값을 저장 및 조회하는 자료구조 개념 정리 HashMap은 기본적으로 내부구조는 배열로 되어 있음 Key는 직접 내부 배열의 인덱스가 될 수 있으며, 이를 버킷이라고 함 인덱스는 hashcode()에서 리턴하는 int값(정수값) % 실제 표현이 가능한 정수범위(n)보다 작은 M개의 원소로 만들어짐, 해당 인덱스는 1 / M 확률로 동일한 값으로 발생할 수 있으며, 이를 해시충돌이라고 함 해시충돌 방지 기법으로 Open Addressing 방식과 Seperate Chaning 방식이 있으며, Java HashMap 같은 경우 Seperate..
[OS] PCB(Process Control Block)
·
OS
PCB 정의 운영체제가 프로세스를 제어하기 위해 정보를 저장 놓은 곳, 프로세스의 상태 정보를 저장하는 구조체 프로세스 상태관리와 문맥 교환을 위해 필요함 PCB는 프로세스 생성시 만들어지며 주기억장치에 유지됨 PCB에 포함되는 정보 Process ID : 프로세스를 구분하는 정보 Process State : 각 State (생성, 준비, 실행, 대기, 종료)를 저장 Program Counter : 다음에 실행할 Instruction의 주소를 저장하는 카운터, CPU는 이 값을 통하여 Process의 Instruction을 수행함 Register Information : Accumulator, CPU Register, General Register 등을 포함 CPU Scheduling Informatio..
[JAVA] 일급컬렉션
·
JAVA
정의 Collection을 Wrapping하면서, Wrapping한 Collection 외 다른 멤버 변수가 없는 상태 예시 public class BookStore { private String name; private List books; } public class Book { private String name; private double price; } BookStore클래스에 List인 books를 선언하였음 해당 List books를 사용하지 않고, Wrapping 처리를 함 (아래 예시 참조) public class Books { /* Book을 Wrapping한 Books */ private List books; .. } public class BookStore { private Strin..
[NETWORK] Polling / Long Polling / Streaming
·
OTHER
많이 들어봤지만 개념을 몰라서 정리 Polling 정의 Client가 서버에 주기적으로 Request를 보내는 기법 주기적으로 Client가 처리해야할 이벤트나 받을 데이터가 있는지 체크 특징 주기적으로 요청하기 때문에 응답 간격을 일정하게 가능 요청 오는 폴링 요청이 처리 이후 다음 폴링이 이루어지기 전에는 언제오는지 몰라서 실시간 처리가 불가능 리소스 낭비가 심함 (http는 단발성 통신이라, header가 무거움, 지속적으로 요청이 오면 서버에 부하 줄 수 있음) 장점도 있지만, 문제점이 더 크기에 Long Polling이 등장함 Long Polling 정의 Client가 Request를 보내고 서버가 바로 Response를 보내지 않고, 이벤트가 발생하거나 보낼데이터가 생길 시 Response로 ..
[JAVA] Map / getOrDefault
·
JAVA
getOrDefault 찾는키가 존재하면 해당 키의 값을 반환하고 없으면, Default 값을 반환하는 메소드 사용법 getOrDefault(Object key, V defaultValue) key : 값을 가져와야하는 요소 키 defaultValue : 지정된 키에 매핑 된 값이 없는 경우 설정 된 default 값 public class Main { public static void main(String[] args) { Map map = new HashMap(); map.getOrDefault("키", "기본값"); /* 결과 null로 나옴 */ System.out.println(map.get("키")); } } public class Main { public static void main(Str..
[OTHER] 블록킹 / 논블록킹과 동기 / 비동기
·
OTHER
정의 블록킹 : 자신의 작업을 진행하다가 다른 주체의 작업이 시작되면 다른작업이 끝날때까지 기다렸다가 자신의 작업을 시작하는 것 (Thread관점에서 본다면, 요청 작업을 마칠 때까지 계속 대기) 논블록킹 : 다른 주체의 작업과 상관없이 자신의 작업을 하는 것 동기 : 두주체의 작업을 동시에 수행하거나, 동시에 끝나거나, 끝나는 동시에 시작함을 의미 비동기 : 시작, 종료가 불일치, 끝나는 동시에 시작하지 않음을 의미 (두 주체가 서로의 시작 종료시간 관계없이 별도의 작업 수행 시작 / 종료시간을 가지고 있을 때를 의미함) 블록킹 / 논블록킹 기준 블록킹과 논블록킹은 다른 작업을 수행하는 주체를 어떻게 상대하는지에 따라 정해짐 동기 / 비동기 기준 작업을 수행하는 것이 동시에 이루어지거나 동시에 종료되거..
[SPRING] DISPATCHER-SERVLET
·
SPRING
DispatcherServlet 정의 서버로 들어오는 모든 요청(Request)을 처리하는 프론트 컨트롤러 (서블릿컨테이너의 제일 앞에서 서버로 들어오는 클라이언트의 요청을 받아서 처리해주는 컨트롤러를 프론트컨트롤러라고 정의함) 요청을 받아들여서 적절한 Controller로 요청을 위임해줌 Spring MVC 사용전에는 JSP환경에서는 서블릿 객체를 직접 생성하여 web.xml에 매핑을 해줘야 했으나 Spring MVC를 사용하면서 DispatchServlet이 모든 요청을 핸들링 처리를 해줘서 해당 작업이 필요가 없어짐 요청에 맞는 핸들러로 요청을 Dispatch하고 핸들러 실행 결과를 Http Response형태로 응답해줌 DispatcherServlet 구조 DispatcherServlet은 Ser..
[JAVA] 예외(Exception)
·
JAVA
오류와 예외 오류(Error)는 예상하지 못한 비정상적인 상황 (시스템 레벨에 발생한 심각한 수준) 예외는 발생할 상황을 미리 예측하여 처리하는 상황 (개발자가 구현한 로직에서 발생) Exception 개념 및 설명 Throwable : JAVA 언어의 모든 오류 및 예외의 슈퍼클래스 Error : Throwable의 하위클래스, 응용프로그램의 심각한문제를 나타냄 Exception : 응용프로그램이 catch 할 수 있는 조건을 나타내는 Throwable 형식 Exception은 처리 방식에 따라서 Checked Exception과 UncheckedException(Runtime Exception)으로 분류됨 Checked Exception / Unchecked(Runtime) Exception Chec..