기술 정리 & CS 32

[Web] 웹 콘텐츠 캐싱 (브라우저, 프록시-CDN, 서버) 비교

개요웹 콘텐츠 캐싱은 이미지, 비디오, css, js 등과 같은 웹 콘텐츠를 사용자에게 더 빠르고 효율적으로 제공하기 위해 임시로 캐싱(저장)해두는 기술로 사용자의 원본 서버에 다시 접근하지 않고, 캐시에 저장된 데이터를 사용해 웹 페이지를 로드하는 방식 서버와 네트워크 부하를 줄여 응답 속도를 개선하고, 사용자 경험을 향상시킬 수 있는 장점이 있음 브라우저 캐시  vs 프록시 캐시 vs 서버 캐시주요 내용은 다음과 같다. 브라우저 캐시 (Client-Side)프록시 캐시 (Proxy or CDN)서버 캐시 (Server-side)목적동일 웹페이지 재방문시 빠른 로딩빠른 콘텐츠 전송 및 지연 시간 감소서버 부하 ↓ 응답 속도와 효율성 ↑대상정적 리소스 (CSS, JS, 이미지)정적(이미지) 및 동적(비디..

[기술 면접 대비] Operating System 4 - CPU Scheduling

버스트 (Burst)네트워크 트래픽 / 리소스 관점 : 일정 기간 동안 임시로 허용되는 최대치 이상의 트래픽이나 리소스 사용 초과량컴퓨터 과학 관점 : CPU Scheduling이나  I/O 작업에서 프로세스의 한 작업이 연속적으로 실행되는 시간 프로그램은 일반적으로 CPU Burst - I/O Burst를 번갈아 가면서 실행된다. CPU Burst- 프로세스가 CPU에 할당된 후 실행을 시작하고, 중단 없이 처리되는 기간. 이후 I/O 작업이 필요하면 CPU Burst가 끝나고, I/O 작업 후 다시 CPU에 할당되면 새로운 Burst가 시작됨 Disk I/O Burst - 디스크나 네트워크 장치, DB 등에 대한 연속된 데이터 읽거나 쓰는 작업을 수행하는 것 바운드 (Bound)CPU 바운드 (CPU..

[Web 일반] CORS 란?

CORS 란Cross-Origin Resource Sharing(CORS)는 웹 브라우저에서 서로 다른 출처(origin) 간의 자원 요청을 허용 또는 제한하기 위해 사용하는 보안 기능.  (CORS 는 대부분 브라우저 관련 이슈) 교처 출처에 대한 자원 요청을 허용 하더라도 보안적으로 안전하게 하기 위한 작업을 수행. CORS 배경Origin 에 대해 다르다는 것은 다음 3가지 요소들이 다를 때 출처가 다르다고 한다.도메인 (예: example.com)프로토콜 (예: http, https)포트 (예: 80, 443) 웹 브라우저는 보안상의 이유로 기본적으로 동일 출처 정책(Same-Origin-Policy)를 따른다. 동일 출처 정책 : 한 출처(fe-domain.com) 에서 로드된 웹 페이지가 다른..

[WEB 일반] MIME Type, Content-Type 이란

MIME Type 이란MIME Type(Multipurpose Internet Mail Extensions)는 인터넷에서 전송되는 데이터의 형식을 나타내는 표준 방식 MIME 타입은 클라이언트(브라우저)가 데이터를 처리하는 방식을 결정하는 데 중요한 역할웹에서는 HTTP 통신시 Content-Type 이란 Key값으로 Header에 담겨 사용됩니다. MIME Type 구성MIME 타입은 타입(Type)과 / 서브 타입(Subtype) 으로 구성 (ex. type/subtype => text/plain)타입(type): 데이터의 일반적인 범주, ex) 텍스트, 이미지, 오디오, 비디오 서브타입(subtype): 특정 타입(type) 내에서 데이터의 구체적인 형식을 나타냄. ex) 텍스트 - plain, h..

[기술 면접 대비] Operating System 3 - 메모리, 명령어

메모리 영역 종류👉 메모리 영역 4가지Code : 실행 명령과 코드를 포함Data : 전역변수, 정적변수 (Static 변수나 Global 변수)Heap : 사용자가 동적으로 할당한 메모리를 위함Stack : 지역변수, 매개변수, 반환값 등 일시적인 값  👉 메모리 계층 비교레지스터 : 속도 빠름 / 용량 작음 / CPU 안에 있는 매우 빠른 임시 기억장치(휘발성)로 데이터를 저장할 방법이 없는 CPU는 레지스터를 거쳐 데이터를 전달함캐시 : 속도 빠름 / 용량 작음 / CPU와 주기억장치 간의 메모리 사용 속도 향상을 위해 사용하는 메모리 (L1, L2 캐시)주기억장치 : 속도 보통 / 용량 보통 / RAM과 같은 현재 CPU에서 활동되고 있는 메모리보조기억장치 : 속도 낮음 / 용량 많음 // H..

[기술면접 대비] Operating System 2 - Mutex, Semaphore, DeadLock

DeadLock , 임계영역👉 Deadlock (교착상태)의 개념과 막는 방법Deadlock은 서로 필요한 자원 사용을 위해 상대방의 종료를 기다리며, 무한 대기에 빠지는 상황ex) 첫 번째 스레드는 두 번째 스레드가 들고 있는 객체의 락이 풀리기를 기다리고, 두 번째 스레드도 첫 번째 스레드가 들고 있는 객체의 락이 풀리기를 기다리는 상황 예방 : 기존 deadlock이 프로세스들 끼리 자원 사용시 서로 상호 배제한단 것이 문제가 되었으니, 자원을 공유하게 하여, 대기에 빠지지 않도록 함회피 : 프로세스에 대한 교착 상태 가능성을 미리 판단하는 것, 예로 은행원 알고리즘 처럼 사전에 필요로 하는 최대 자원을 파악하여 교착상태를 최대한 피함탐지 및 회복 : deadlock이 발생함을 확인하고, 회복(e..

[기술면접 대비] Operating System 1 - Process, Thread

프로세스 & 스레드👉 프로세스와 스레드의 차이프로세스(Process) : OS로 부터 자원을 할당 받아 독립적으로 실행되고 있는 객체(프로그램)프로세스별로 각각 독립된 메모리 영역(Code, Data, Stack, Heap의 구조)을 할당프로세스당 최소 1개의 스레드(메인 스레드)를 가짐.각 프로세스는 별도의 주소 공간에서 실행되며, 한 프로세스는 다른 프로세스의 변수나 자료구조에 접근 불가한 프로세스가 다른 프로세스의 자원에 접근하려면 프로세스 간의 통신(IPC, inter-process communication)을 사용해야 한다. (ex. 파이프, 파일, 소켓 등을 이용한 통신 방법 이용)Context Switching 비용이 비교적 큼 / 동기화 작업 (공유 자원 관리) 필요 x 스레드 :  프로..

[기술면접 대비] Python & 자료구조

Python 자료구조 👉 Python의 list, dictionary의 메모리 접근 시간 복잡도 리스트 시간 복잡도 append, pop() : 특정 원소 추가, 삭제 - O(1) insert(), remove() : 특정 위치 원소 추가,삭제 - O(N) sort() : 정렬 - O(Nlog(N)) dictionary 시간 복잡도 내부적으로 해시테이블을 사용 데이터의 검색, 삽입, 삭제, 수정 - O(1) 👉 Python List는 Array vs Linked-list? Python의 List의 원소로는 다양한 자료형을 내포할 수 있어, Array처럼 연속된 메모리에 저장되기 어려움. 연속되지 않은 메모리에 저장된다는 점에서 Linked List와 좀 더 가깝지만, 다음 주소를 가리키는 방식이 아니기 ..

Mac 단축키 (일반, IDE)

Mac 관련 단축키 - 일반 스크린샷 Shift + command + 3 (전체 화면 캡처) Shift + command + 4 (부분 화면 캡처) Shift + command + 4 + spacebar ( 창 부분만 캡처) Shift + command + 6 (메뉴바 표시) 숨김 파일 보기 Shift + command + . Mac 관련 단축키 - IDE 멑티 line cursor 컨트롤 Alt 2번 연타 + 방향키 코드 자동 정렬 Ctrl + Alt + L : Code format Mac 관련 프로그램 Karabiner-Elements : 단축키 맵핑 (한영키 위치 변경) Spectacle : 키 맵핑 (화면 분할 등) RunCat : CPU 점유율등을 알려주는 프로그램 iTerm : 터미널 이쁜거

[기술면접 대비] Database 3 - Index, Replication

Index & Cluster Index, Non-Clustered Index 👉 Index란? Index 는 DB Table에 대한 검색 성능의 속도를 높여주는 자료 구조 👉 Index 특징 필드에 Index 설정시 Index Table이 별도의 메모리 공간에 물리 주소와 함께 생성됨 (추가 메모리 사용 발생) Index Table에 쿼리 요청시 해당 주소로 바로 연결하여 결과 값을 조회 index는 테이블은 특정 key로 찾으며, 해당 key 값은 B-Tree 형태로 평소 저장되어 빠르게 탐색 가능 👉 Clustered Index, Non-Clustered index 란? Clustered Index : 특정 컬럼을 index로 설정하여 index table에 정렬된 상태로 유지하는 것 (ex. id를..