전체 글 44

Node.js 란?

Node.js는 서버 사이드 애플리케이션을 구축하기 위한 오픈소스 런타임 환경JavaScript가 브라우즈에서만 실행되던 한계를 넘어 서버에서도 JavaScript를 사용할 수 있게 해줌웹 애플리케이션의 프론트엔드와 백엔드를 동일한 언어로 개발할 수 있게 되었음Node.js란?이벤트 기반, 논블로킹 I/O 모델을 사용하는 서버 사이드 자바스크립트 런타임빠르고 효율적인 네트워크 애플리케이션을 구축하는 데 중점을 둠Node.js는 Google의 V8 JavaScript엔진을 기반으로 하며, 크로스 플랫폼을 지원함Node.js 특징비동기 I/O비동기적으로 I/O작업을 처리함블로킹 없이 높은 성능을 유지할 수 있음이벤트 기반이벤트 루프를 사용하여 이벤트를 처리함서버가 많은 클라이언트 요청을 효율적으로 처리할 수..

Backend · Infra 2024.06.23

KMP 알고리즘 (Knuth-Morris-Pratt Algorithm)

KMP 알고리즘이란? KMP(Knuth-Morris-Pratt) 알고리즘은 문자열 검색을 빠르게 수행하는 알고리즘입니다. 일반적인 문자열 검색(브루트포스)보다 더 효율적으로 검색할 수 있도록 설계되었습니다. 왜 KMP 알고리즘을 사용할까? 🙄일반적인 문자열 검색은 O(N*M)의 시간이 걸리지만,KMP는 O(N+M) 의 시간 복잡도를 가지므로 훨씬 빠르게 검색 가능합니다. ex) 긴 텍스트에서 특정 패턴(문장)을 찾을 때 KMP를 사용하면 성능이 향상됩니다. KMP 알고리즘의 작동 원리KMP의 핵심은 LPS(Longest Prefix Suffix) 배열을 이용하는 것입니다!!👻 즉, 반복되는 패턴을 미리 계산하여 불필요한 비교를 줄이는 방식! 패턴의 실패 함수 계산패턴 검색실패 함수 계산실패 함수는 패..

TIL · 잡담 2024.06.22

Longest Common Subsequence

💡 LCS는 주로 최장 공통 부분 수열을 말한다. 최장 공통 문자열을 말하기도 한다. 부분 수열과 부분 문자열의 차이점은 위와 같다. 최장 공통 문자열 (Longest Common Substring)for i in range(len(string_A)) : for j in range(len(string_B)): if i == 0 or j == 0 LCS[i][j] == 0 elif string_A[i]== string_B[j]: LCS[i][j] = LCS[i-1][j-1] + 1 else : LCS[i][j] = 0부분 수열 보다 조금 더 쉽고 최장 공통 부분 수열을 구하는데 사용됨우선 LCS라는 2차원 배열을 이용해서 두 문자열을 행과 열에 매칭과정문자열 A와 문자열 B의 한 글..

TIL · 잡담 2024.06.20

DB index에 대한 이해

1. index란? DB에서 데이터를 빠르게 검색하고 조회하기 위한 자료구조index는 특정 칼럼 또는 칼럼 조합에 대한 값과 해당 값이 존재하는 테이블 내의 물리적인 위치를 매핑한다.DB성능을 향상시키는 데 중요한 역할Full Scan 하지 않고 데이터를 찾을 수 있다.주로 SELECT문 에서 WHERE절에 사용되는 칼럼 혹은 JOIN에 사용되는 칼럼에 생성하는 것이 일반적이다.2. index 알고리즘 종류 B-TreeB+TreeHash IndexBitmap IndexR-Tree일반적으로 사용 하는 알고리즘은 B-Tree와 B+Tree인데, 특히 B+Tree는 대다수의 관계형 데이터베이스 관리 시스템(RDBMS)에서 기본 인덱스 구조로 채택되고 있다. B-Tree는 이진트리에서 발전되어 모든 리프노드들..

Backend · Infra 2024.06.16