분류 전체보기
-
알고리즘 #해시 테이블알고리즘 2023. 12. 3. 23:18
해시 테이블 1. 해시 테이블이란 - Key와 Value로 이루어진 자료구조 - 해시 함수를 통해 키 값을 해시값으로 변경하여, 해당 해시값을 인덱스 값으로 데이터를 저장한다. 2. 장단점과 사용처 장점 데이터 저장/읽기 속도가 빠르다. => 검색 속도가 빠르다. 충돌이 일어나지 않는다면 시작복잡도가 O(N)이다 단점 일반적으로 저장공간이 더 필요하다. Collision 을 해결하기 위한 별도 자료구조가 필요하다. Collision이 발생한다면 시간복잡도가 O(N)까지 증가한다. 사용처 검색이 많이 필요한 경우 저장, 삭제, 읽기가 빈번한 경우 캐쉬 구현시 (중복 확인 쉽기 때문) 3. 해시충돌(Collision)의 해결 방법 3-1) Separate Chaining 기법(폐쇄형) 중복된 키 값으로 같은..
-
자료구조 #스택,큐,덱알고리즘 2023. 12. 3. 21:14
스택(Stack) - 쌓아 올린 형태로 후입선출(LIFO) 방식의 자료구조 - 특징 맨 위에 위치한 Top이라는 곳을 통해 추가와 삭제가 이루어짐 - 시간 복잡도 추가 O(1) 삭제 O(1) 검색 O(n) 큐(Queue) - 줄을 서서 기다리는 형태로 선입선출(FIFO) 방식의 자료구조 - 종류 선형큐 : 일반 Queue 원형큐 : 원형 모양의 Queue(추후 자세히 알아볼 예정) 덱(Double-ended Queue, Deque) : 양쪽에서 삽입과 삭제가 가능하게 만든 구조이며 스택과 큐의 특징을 합친 것 - 특징 front(프론트) : 제일 앞쪽이며, 삭제가 수행되는 곳 rear(리어) : 제일 뒤쪽이며, 추가가 수행되는 곳 front를 통해 삭제가 되는 것을 deQueue(디큐), rear를 통해..
-
자료구조 #List알고리즘 2023. 12. 2. 21:37
List 1. Array List - 크기가 가변적으로 변하는 선형리스트 - 인덱스로 내부의 객체를 접근 - 용량이 부족하다면 용량이 늘어난다. 1-1) Static Array - 저장공간이 고정됨. - 순차적으로 저장됨 1-2) Dynamic Array - Static Array의 단점을 보완하여, 용량이 부족할 시 용량을 늘리는 Array - 보통 기존 크기의 2배로 늘리지만 일정 크기부턴 정해진 크기만큼만 늘어난다. - Static Array를 보완한 것이기 때문에 Dynamic Array 또한 Static Array로 이루어져 있다. 2. Linked List - 노드와 다음 데이터의 주소 값이 저장된 포인터가 저장된 형태의 리스트이다. - 크기가 정해져 있지 않은 동적 자료구조이다. - 장점 데..
-
-
데이터 렌더링에 따른 분류(SPA, CSR, SSR, SSG, ISR)CS지식의 정석/네트워크 2023. 12. 2. 20:55
웹 애플리케이션의 데이터 렌더링 방식에 따른 분류이다. 1. 클라이언트 렌더링 CSR (Client-Side Rendering): - 특징: 초기에는 빈 HTML이 클라이언트로 전송되고, 이후 JavaScript를 사용하여 동적으로 페이지를 렌더링하는 방식 - 쉽게, React로 구현한 사이트처럼, 서버에 데이터를 요청해서 받은 값을 JavaScript와 같은 것으로 View를 그리는 것 - 장점 컨텐츠가 항상 최신이다. 로딩 화면이 있다. - 단점 첫 페이지 로딩이 느리다. SEO에 친화적이지 않다. 1-2) SPA(Single Page Application) - 특징 : 단일 페이지 사이트, 서버로부터 새 페이지(html)를 불러오지 않고 현재 페이지를 동적으로 변경하는 디자인 패턴 - SPA가 CS..
-
웹 클러스터CS지식의 정석/네트워크 2023. 12. 2. 00:11
웹 클러스터(web cluster)란? 네트워크에 접속된 여러 개의 서버를 하나로 연결하여 하나의 컴퓨터처럼 동작하도록 만드는 기법 웹 클러스터가 갖추어야 할 기능 1. 다수의 서버에 연산을 분배 공유할 수 있는 부하 분산 기능 2. 특정 서버의 문제가 전체 서비스에 영향을 미치지 않도록 하는 페일 세이프 기능(fail safe) 3. 특정 서버의 갱신 내용을 다른 서버에 전달하기 위한 실시간 동기화 기능 등이 있다. 웹 클러스터를 구현하는 방식(아키텍처에 따른 분류) 1. 라운드로빈 DNS(round-robin DNS) 2. 브로드캐스팅(broadcating) 3. 직접 라우팅(direct routing) 4. 디스패쳐(dispatcher) 등이 있다. 1) 라운드로빈 DNS(round-robin DN..
-
서버 과부하 방지 기법들CS지식의 정석/네트워크 2023. 12. 1. 22:40
1. 웹 캐싱(web caching) - 인터넷에서 사용자들이 자주 요청하는 웹 페이지나, FTP 및 기타 다른 파일들을 주된 서버 외의 장소에 저장하고 있다가, 이 들 페이지나 파일들에 대한 요구가 있을 시, 주 서버에서 찾지 않고 캐시 서버에 내용이 있는 경우, 이를 사용자에게 응답하게 하여, 접속 속도를 빠르게 하면서 트래픽을 줄여주기 위한 서버 2. 로드 밸런싱 - 부하를 두 개 이상의 서버에 나누어 분산시키는 기법 - 여러 대의 서버가 마치 한대의 대형 서버와 같이 동작(클러스터 적용) - 일반적으로 라운드로빈(round-robin)스케쥴링, 최소 접속 (least-connection) 스케쥴링 방식을 사용 3. 수락 제어 - 세션을 단위로 하여 해당 세션에 의한 연결 요청의 수락 여부를 결정한..
-
로그인 #3. OAuth 인증 방식CS지식의 정석/네트워크 2023. 11. 29. 03:02
OAuth란 - 해당 서비스에서 로그인을 하지 않고 OAuth를 제공하는 서비스에게 사용자 인증(Authentication)을 통해 사용자의 리소 스 접근 권한(Authorization)을 위임받는 것 PAYCO의 Oauth2.0 인증과정 Oauth2.0 프로세스 Reference https://developers.payco.com/guide/development/start PAYCO 로그인 및 PAYCO 바로가입 개발 가이드 PAYCO 로그인 및 PAYCO 바로가입 개발 가이드, 간편로그인 SDK, 이미지 리소스를 제공합니다. developers.payco.com