목록분류 전체보기 (156)
개발자공부일기
IP의 개념인터넷 프로토콜(Internet Protocol)의 약자로, 인터넷이 통하는 네트워크에서 어떤 정보를 수신하고 송신하는 통신에 대한 규약을 의미합니다. 인터넷 계층의 IP 프로토콜은 IP 주소를 사용하여 호스트나 네트워크 장비를 식별합니다. 인터넷에 접속한 컴퓨터와 라우터에 고유한 IP 주소를 할당하고, 그 IP 주소를 사용해서 컴퓨터를 특정하거나 통신 상대방으로 지정합니다. IP 프로토콜에서는 현재 IPv4(Internet Protocol version 4)의 주소 체계를 사용하고 있습니다. 하지만 스마트폰의 등장 및 모든 사물이 인터넷으로 연결되는 사물 인터넷으로 인해 IP 주소를 사용하는 기기가 폭발적으로 증가하면서 IPv4보다 월등히 많은 수의 IP 주소를 할당할 수 있는 IPv6(In..
Express란?Express는 웹 및 모바일 애플리케이션을 위한 일련의 강력한 기능을 제공하는 간결하고 유연한 Node.js 웹 애플리케이션 프레임워크이다. 사실상 Nodejs의 표준 웹서버 프레임워크로 불려질 만큼 많은 곳에서 사용하고 있다. 그렇다면 Node.js와 Express는 무슨 관계인가? Node.js는 Chrome의 V8엔진을 이용하여 javascript로 브라우저가 아니라 서버를 구축하고, 서버에서 JavaScript가 작동되도록 해주는 런타임 환경(플랫폼)이라고 했다. Express는 이런 Nodejs의 원칙과 방법을 이용하여 웹애플리케이션을 만들기 위한 프레임워크이다. 프레임워크란?이처럼 목적에 필요한 것을 고민할 필요 없이 이용할 수 있도록 일괄로 가져다 쓰도록 만들어 놓은 '구조..
────────────────1.화살표 함수(Arrow Function)란?────────────────화살표 함수는 ES6에서 추가된 새로운 함수 문법이다.기본 형태const add = (a, b) => { return a + b;};조금 더 줄이면const add = (a, b) => a + b; // 한 줄이면 return 생략 가능매개변수가 하나면 괄호도 생략 가능const square = x => x * x;객체를 바로 반환할 때는 소괄호로 감싸야 한다const makeUser = (name, age) => ({ name, age });여기서 객체를 반환할때 소괄호를 쓰는 이유는 {}만 있으면 이게 로직을 감싼건지 객체인지 구별하지 못하기 때문이다. ────────────────2. this와..
1) SSR (Server-Side Rendering)서버가 매 요청마다 HTML을 생성해 응답하는 방식. 사용자는 첫 화면을 HTML로 즉시 받고, 이후 브라우저가 JS를 받아 하이드레이션(Hydration)을 수행.요청 흐름클라이언트가 /page 요청서버가 데이터 fetch → HTML 렌더링HTML 전달(콘텐츠 보임) → JS 로드 → 하이드레이션장점SEO 최상: 첫 응답에 실제 콘텐츠 포함개인화/권한 기반 UI에 유리: 쿠키·세션을 보고 매 요청마다 다르게 그림실시간성 높은 페이지(주가, 대시보드)에 적합단점서버 부하↑, TTFB↑매 요청 렌더링 비용 큼(스케일 비용)캐시 전략이 까다로움(쿠키 등으로 CDN 캐시가 깨질 수 있음)적합한 상황로그인 대시보드, 장바구니/주문내역 등 사용자별 화면크롤러..
C++에서 new / delete를 직접 다루다 보면 메모리 누수, 이중 해제, 예외 안전성 문제가 자주 발생합니다.이를 자동으로 처리해주는 도구가 바로 스마트 포인터(smart pointer)입니다.스마트 포인터는 객체의 수명을 자동으로 관리하는 RAII(Resource Acquisition Is Initialization) 기법의 대표적인 예 입니다.이 글에서는 unique_ptr, shared_ptr, weak_ptr의 동작을 아주 간단한 예제로 살펴보겠습니다.RAIIRAII(Resource Acquisition Is Initialization)란,"자원의 생명주기를 객체의 생명주기에 묶는 것”을 의미합니다.스마트 포인터는 이 원칙을 그대로 따릅니다.생성 시 → new로 자원 획득소멸 시 → del..
https://www.acmicpc.net/problem/1717기본적인 유니온 파인드를 사용해서 푸는 문제입니다. 첫째줄에 n,m이 주어지고 n개의 원소의 집합이 있으며 m개의 줄만큼 명령이 주어집니다.0 a b는 union을 1 a b는 두 수가 같은 집합에 속하는지 판별하는것을 의미합니다.우리는 vector로 "arr[n] = 대표 노드" 이렇게 표현할겁니다. 초기 상태모든 노드가 자기 자신을 대표 노드로 가집니다.즉, arr[i] = i 입니다.12345671234567집합 상태: {1}, {2}, {3}, {4}, {5}, {6}, {7}1단계: 0 1 3 (union(1,3))1의 루트 = 1, 3의 루트 = 3 → 3을 1의 대표로 연결.12345671214567집합 상태: {1,3}, ..
유니온 파인드(Union-Find) 알고리즘은 여러 원소들을 몇 개의 그룹(집합)으로 나누고, 다음 두 연산을 빠르게 수행하는 데 목적이 있는 서로소 집합(Disjoint Set Union, DSU)을 효율적으로 관리하기 위한 자료구조이자 알고리즘입니다.핵심 연산Find(찾기)어떤 원소가 속한 집합(대표자, 루트 노드)을 찾는 연산.보통 트리 구조로 구현되고, 루트 노드가 그 집합의 대표자가 됩니다.경로 압축(Path Compression) 기법을 쓰면 시간 복잡도를 크게 줄일 수 있습니다.Union(합치기)두 원소가 속한 집합을 하나로 합치는 연산.두 집합의 대표자를 찾아서 하나로 연결해 줍니다.보통 "랭크(rank) 기반 합치기" 또는 "사이즈 기반 합치기"를 사용해서 트리가 한쪽으로 치우치지 않게 ..
https://www.acmicpc.net/problem/2251 세 개의 물통 A, B, C가 있다. A, B, C 물통의 용량이 주어지고, 처음에는 C 물통에만 물이 가득 차 있다.이때 A 물통이 비어 있을 때, C 물통에 담겨 있을 수 있는 물의 양을 모두 구하는 문제다. 물이 다양하게 담겨있는 여러가지 경우의 수 를 따지는 BFS(너비 우선 탐색) 방법을 이용하는 문제다.핵심 아이디어상태 표현(A, B, C) 세 물통에 들어 있는 물의 양으로 상태를 표현한다.하지만 세 개 다 저장할 필요는 없다.왜냐하면 C = 전체 물의 양 - (A+B)로 항상 계산할 수 있기 때문이다.따라서 (A, B) 두 값만 저장하면 충분하다.상태 전이(물 붓기)물을 옮기는 경우의 수는 6가지다.A→B, A→C, B→A, ..
