정렬되어 있는 배열에서 데이터를 찾으려 시도할 때, 순차 탐색처럼 처음부터 끝까지 하나씩 모든 데이터를 체크하여 값을 찾는 것이 아니라 탐색 범위를 절반씩 줄여가며 찾아가는 Search 방법입니다. 처음부터 끝까지 우너하는 값을 찾을 때까지 탐색을 계속하는 순차 탐색은
기수정렬은 낮은 자리 수부터 비교하여 정렬해 간다는 것을 기본 개념으로 하는 정렬 알고리즘입니다. 기수 정렬은 비교 연산을 하지 않으며 정렬 속도가 빠르지만 데이터 전체 크기에 기수 테이블의 크기만한 메모리가 더 필요합니다. 0~9 까지의 Bucket(Queue 자료구
완전 이진 트리를 기본으로 하는 힙(Heap) 자료 구조를 기반으로한 정렬 방식삽입할 때 왼쪽부터 차례대로 추가하는 이진 트리 시간복잡도 최대 힙을 구성현재 힙 루트는 가장 큰 값이 존재함. 루트의 값을 마지막 요소와 바꾼 후, 힙의 사이즈 하나 줄임힙의 사이즈가 1보
합병 정렬이라고도 불리우며 분할 정복 방법을 통해 구현할 수 있습니다. 빠른 정렬로 분류되며 퀵소트와 함께 많이 언급되는 정렬 방식입니다. 요소를 쪼갠 후, 다시 병합시키면서 정렬해나가는 방식으로 쪼개는 방식은 퀵정렬과 유사합니다. 재귀를 이용해서 병합 정렬을 구현할
Quick Sort에 대해 설명할 수 있습니다.Quick Sort 과정에 대해 설명할 수 있습니다.Quick Sort 를 구현할 수 있습니다.Quick Sort의 시간복잡도와 공간복잡도를 계산할 수 있습니다.Quick Sort의 처악의 경우를 개선시킬 수 있습니다. Q
Insertion Sort에 대해 설명할 수 있습니다.Insertion Sort 과정에 대해 설명할 수 있습니다. Insertion Sort를 구현할 수 있습니다. Insertion Sort의 시간복잡도와 공간복잡도를 계산할 수 있습니다. Insertion와 Selec
Selection Sort에 대해 설명할 수 있습니다. Selection Sort 과정에 대해 설명할 수 있습니다. Selection Sort을 구현할 수 있습니다.Selection Sort의 시간복잡도와 공간복잡도를 계산할 수 있습니다. Selection Sort는
Goal Bubble Sort에 대해 설명할 수 있다. Bubble Sort 과정에 대해 설명할 수 있다. Bubble Sort을 구현할 수 있다. Bubble Sort의 시간 복잡도와 공간 복잡도를 계산할 수 있다. Abstract Bubble
에러 메시지는 다음과 같습니다. 원격 서버에서 MySQL 서버로 단순 커넥션한 뒤 close 하게 되면 MySQL은 비정상적인 접속으로 판단하여 해당 IP를 블락킹하게 됩니다. 이때 MySQL의 비정상적인 접속 요청 수를 카운트하게 되는데 global max_conne
백엔드 작업을 하다보면 개발 환경, 스테이지 환경, 운영 환경이 있고 여러 보안 그룹이 존재하기 마련입니다. 회사에서는 비교적 최근 컨테이너 기반 배포를 도입했지만 그전 까지는 인스턴스 별로 관리를 했었던 것 같습니다. 유지 보수할 일이 있어 살펴보니 AI 서버, 셀러
업로드중.. SQLAlchemy를 사용하다가 Integer 타입과 INTEGER 타입이 있는 것을 발견하게 되었습니다. 이 두개의 차이는 뭐가 있을 까 검색하다 흥미로운 글을 찾게 되어 정리하게 되었습니다. 우선 자주 사용하는 Column 클래스의 생성자에 sqla
최근에 관심받고 있는 NestJS 와 같은 자바 스크립트 프레임워크에서는 의존성 주입과 같은 부분이 프레임워크 수준에서 제공을 해주고 있다. Flask 나 FastAPI에서는 프레임워크 측면에서 제공해주고 있지는 않아 공부해보기로 생각하고, 파이썬 내에 여러 의존성 관
주로 uwsgi를 보통 이용하는데 gunicorn을 한 번 공부할겸 정리하게 되었습니다. gunicorn을 실행하기 위해서는 wsgi 모듈과 매핑할 필요가 있습니다.$(MODULE_NAME):$(VARIABLE_NAME) 와 같이 설정할 수 있습니다. django의 경
사용자의 다양한 요구 사항을 고려하여 데이터베이스를 생성하는 과정 요구 사항 -> 개념적 설계 -> 논리적 설계 -> 물리적 설계 -> 구현설계 과정 -> 오류 발견 -> 변경 필요 -> 이전 단계 설계 내용 변경 가능 사용자의 요구 사항을 수집 분석하여 개발할 데이터
웹 백엔드 개발 진행 순서 정리 (Python 개발, Docker 배포 가정)DB 섥계 데이터 요구 사항 확인 개념적 설계: 개체간 관계 파악 및 ER 다이어그램 작성DBMS 선택논리적 설계: 데이터 모델링 물리적 설계: ORM 테스트 API 명세 작성 RESTful
여러 코드를 보던 중에 SQLAlchemy를 사용하더라도 스타일이 다른 것을 보게되었다. 어떤 코드에서는 session.query를 어떤 코드에서는 직접적으로 select, update, delete를 session.execute를 통해 query를 진행하는 경우가 있
Flask나 FastAPI를 이용하면서 SQLAlchemy를 주로 이용하고 있고 db를 정의할 때 정확하게 알고 사용하고 있지 않는다는 생각이 들어 찾아보기로 하였습니다다. pool_size와 같은 인자를 넘겨주고는 하는데 이를 검색하다 커넥션 풀에 대해서 알게되었고,
내장 ORM이 있는 Django와 다르게 Flask와 FastAPI는 SQLAlchemy 라는 ORM 라이브러리를 이용합니다. ORM은 이전 포스트에서도 얘기를 했어서 짧게 간략하자면 Object Relation Mapping의 약자로 객체를 이용해서 데이터베이스 En
CKA를 준비하면서 강의를 듣고 준비를 했었는데 환경 문제로 떨어지고 나서 다시 준비하면서 정리할 겸 글을 남기고자 합니다. 1. 쿠버네티스란 쿠버네티스(Kubernetes)는 컨테이너화된 애플리케이션의 자동 배포, 자동 스케일링 등을 제공하는 오픈소스 기반 관
업로드중..최근 ml 모델 서빙에 관한 관심이 늘어나면서 가볍고 빠른 프레임워크인 FastAPI가 관심받기 시작하였다. 회사에서는 flask를 사용해서 어떤 차이가 있는지 궁금하였고, 차이점을 공부하다가 wsgi 와 asgi에 대해 알게 되어 자세히 알아볼 겸 글을 남