목차 Deadlock 교착 상태(Deadlock)는 다중스레드 환경에서 설계 미스 등으로 발생하는 무한 대기 상태를 말한다. 조금 더 구체적으로는 두 개 이상의 스레드가 서로 상대방이 들고 있는 락의 해제를 기다리며 상황이 더 이상 진행되지 않는 상태를 말하는데, 이를 해결하는 일반적인 방법은 아직 없다고 한다. 때문에 현대의 OS는 언제나 교착 가능성을 염두에 두고 있으며, Unix와 윈도우의 경우 드물게 발생하는 교착 상태를 무시하는 방법과 교착이 예측되는 구역에 자원을 더 할당하는 식으로 이를 회피하고 있다. 이어서 교착 상태의 발생 조건은 아래와 같으며, 상호 배제(Mutual Exclusion) - 임계 영역의 락은 한 스레드만 획득할 수 있음 점유 대기(Hold and Wait) - 자원을 점..
Process ⊃Thread 프로세스 OS로부터 자원을 할당받는 작업의 단위 여기서 자원이란 파일, 메모리, 코드, 스택, 힙 등을 모두 포함 위와 같은 특성상(메모리 공유 X) 프로세스 사이의 Context Switching(정보 교환) 이 어려워 여러 여러 개의 프로세스를 가진 프로그램의 동시 작업 수행 어려움 → 소프트웨어의 복잡도가 증가할수록 발목을 잡는 요인 독립적인 작업이기 때문에, 한 프로세스의 강제종료가 다른 프로세스에 영향을 주지 않는다. 이와 같은 배경에서 탄생한, 프로세스보다 작은 단위가 바로 스레드 스레드 프로세스의 자원을 사용하는 실행의 최소 단위 독립 실행을 위해 각자의 PC Register, 스택을 가지며 프로세스 내부의 힙 메모리, 데이터, 코드는 공유 때문에 생성 및 처리속..
공부를 하고 프로젝트를 하면서 노드라는 단어를 참 많이 듣기도 했고 쓰기도 했다. 그래도 그림자를 따라다니는 기분을 지울 수가 없어서, 내가 사용하는 범위 안에서만 정리하고 가자. 시작하기 전에, 노드는 맥락과 분야에 따라 굉장히 다양한 의미를 가지며, 내가 정리한 것은 오로지 내가 현재 관심 있는 분야에 한정된 자료에 불과하다. Node - Data Structure 자료 구조를 배울 때, 특히 링크드 리스트나 트리, 더 일반적으로는 그래프에 대해 배울 때 노드라는 단어를 처음 만난다. 자료구조에서의 노드란 추상적으로 말하면 구조의 기본 단위, 트리나 그래프로 치면 정점이라고 할 수 있으며 덜 추상적으로 말하면 메모리 곳곳에 흩어져 있는 데이터의 조각, 혹은 그 기본적인 단위를 가리킨다. 추가로 링크드..
목차 Server Load Balancing(SLB) SLB란 말 그대로 하나의 서버에 사용량이 집중되지 않도록 서버를 분산하고, 서버 리소스에게 작업을 나누어주는 기술을 말하며, 당연하게도 그 목적은 가용성과 응답 시간의 최적화에 있다. 주로 연산장치와 저장장치가 그 대상이 되며, 내부 서버끼리는 병렬 처리를 통해 트래픽을 주고받는데, 이때 서버 외부의 트래픽을 받아 내부 병렬 장치로 분산시켜주는 장치를 로드 밸런서(Load Balancer)라고 부른다. 단일 서버의 경우 갑작스러운 트래픽 증가 혹은 내부적인 이유로 뻗어버리면 클라이언트의 UX에 직결되는 위험이 존재한다. 하지만 로드 밸런싱을 통해 분산 시스템을 구축하면 하나의 모듈이 죽어도 나머지가 일을 계속해서 처리하기 때문에 서버의 문제점을 사용..
목차 스택, 큐, 트리, 그래프에 대해선 지난번에 짧게 요약했다. 이번 글에선 자료구조 중 배열 + 컬렉션 프레임워크에 대해 가능한 짧게 요약한다. Array 배열은 한 마디로 말하면 같은 자료형과 길이가 정해진 행렬이라고 할 수 있다. 행렬이기 때문에 인덱스가 정의되어 있고, 메모리를 연속으로 사용할 것을 요구하기 때문에 각각의 값은 변경할 수 있으나 한 번 정해진 크기는 바꿀 수 없다. 또한 엄밀하게 말하면 자바의 배열은 기본적으로 제공하는 자료형이기 때문에 다양한 관련 함수가 정의되어 있으며, 별도의 호출 없이 손쉽게 정의할 수 있다. 배열은 자료형인가? 결론부터 말하자면 자바에서 배열은 자료형이며 동시에 자료구조로도 분류할 수 있다. 자료형은 변수의 타입을 가리키는 단어이며, 자료구조는 데이터의 ..
SQL Mapper와 ORM은 둘 다 JDBC의 단점을 해결하기 위해 나온 기술이다. JDBC의 단점 - DB 연결, SQL CRUD, Data Type Mapping 등의 작업을 일일이 해주어야 함 따라서 당연하게도 둘 다 영속성 프레임워크에 속해 있지만, 상당히 다른 작동 방식을 보인다. 하나씩 알아보자. 먼저 두 기술의 차이를 구조가 아닌 시간순으로 보면 위와 같다. 계속해서 구조의 차이를 보면 다음과 같다. SQL Mapper Object와 SQL의 필드를 매핑하여 데이터를 객체화하는 기술 SQL문 직접 작성 및 쿼리 수행결과를 어떠한 객체에 매핑하여 줄지 바인딩 → SQL 의존적 다른 DB를 도입하거나 변환하는 경우 SQL문을 그 DB에 맞게 새로 작성 → DB 의존적 패러다임 불일치* 발생 M..
SSR(Server Side Rendering)은 이름 그대로 JS가 렌더링을 서버에서 마친 후 클라이언트로 전송하는 방식이다. 매번 완성된 html을 새로 받는 것이라 보면 되는데, 이 때문에 아래와 같은 장단점이 존재한다. 장점 SEO(Search Engine Optimization)에 유리 빠른 초기 로딩 - 단일 파일의 용량이 작음 웹 페이지가 사용자와 상호작용이 적은 경우 유리(블로그, 신문사) 단점 애플리케이션 유지 비용이 높음(자원 이용이 서버에 집중) 요청시마다 새로고침 - UX차원에서 불리 서버에 부하가 걸릴 가능성이 있음 CSR(Client Side Rendering)은 이와는 달리 JS가 사용자의 요청에 따라 필요한 부분만 받아오는 방식을 말한다. 다른 경로로 이동해도 새로고침이 발생..
URI(Uniform Resource Identifier)는 통합 자원 식별자라는 이름 그대로 현재 위치에 대한 고유한 문자열을 말한다. 지금 당장 브라우저의 주소창을 눌렀을 때 나오는 문자열이며, URL 및 쿼리 파라미터를 포함한다. URL(Uniform Resource Locator)은 통합 자원 지시자라고 번역할 수 있으며, 네트워크 상에서 리소스의 위치를 가리킨다. 프로토콜, 도메인, 포트 및 URL Path로 구분할 수 있으며, 보통 웹 주소라 하면 이 URL을 가리킨다. 마지막으로 URN(Uniform Resource Name)은 통합 자원 이름이라고 번역되며 쉽게 정리하면 URI에서 프로토콜을 제외한, 영구적이고 유일한 식별자라고 할 수 있다. URL과의 차이점은 URL - 어디에서, 어떤 ..
목차 Two Way Encryption 양방향 암호화는 다른 말로 Symmetric-Key(대칭키)/Public-Key(공개키) 암호화라고 불린다. HTTPS가 기본적으로 지원하는 암호화이며, 시간 순으로는 연산속도가 빠르지만 암호화/복호화 알고리즘을 전달하기 어려운 대칭키 방식을 보완하기 위해 공개키, 혹은 비공개 키가 도입되었다고 할 수 있다. 공개키는 대칭키와 달리 암호화와 복호화에 서로 다른 키를 사용하는 알고리즘이며, 복호화 키가 공유되지 않기 때문에 비교적 안전하지만 연산에 시간이 많이 소요된다는 단점이 있다. 따라서 HTTPS에서는 두 방식을 적절히 섞어서 사용하는데, 구체적으로는 대칭키를 공개키 방식으로 교환, 이후의 데이터 교환은 대칭키 방식으로 하는 식이다. 추가로 이는 HTTP의 3-..
목차 Cookie 쿠키와 세션은 HTTP의 특징인 비연결성과 무상태성을 보완하기 위한 도구이다. Connectionless - 클라이언트가 요청을 한 후 응답을 받으면 서버가 그 연결을 끊어 버리는 특성 Stateless - 연결을 끊는 순간 클라이언트와 서버의 통신이 끝나며, 상태 정보를 유지하지 않는 특성 쉽게 말하면 페이지 이동마다 로그인을 새로 해야 한다는 의미이다. 쿠키는 웹 서버에 의해 생성되는, 바로 삭제되지는 않는 데이터 패킷으로, 클라이언트의 기기에 저장된다. 서버가 이 쿠키에 인증 정보를 담아 발행하면 클라이언트가 요청과 함께 쿠키를 제출하는 방식으로 연결이 유지된다. 클라이언트의 기기에 저장된다는 특징 때문에 서버의 부담이 줄어든다는 단점과 보안에 취약하다는 단점이 공존한다. 또한 일..
- Total
- Today
- Yesterday
- 칼이사
- Python
- 백준
- a6000
- 세계여행
- 스프링
- 여행
- RX100M5
- 맛집
- 리스트
- 남미
- 파이썬
- 세계일주
- 알고리즘
- 야경
- Backjoon
- 중남미
- Algorithm
- 지지
- 기술면접
- 면접 준비
- 자바
- 세모
- BOJ
- 유럽
- 스트림
- 유럽여행
- spring
- 동적계획법
- java
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |