정렬 알고리즘
·
Algorithm
1. 시간 복잡도먼저, 정렬의 성능과 관련된 시간 복잡도에 대해 알아보겠습니다.1-1. 시간 복잡도시간 복잡도란, 코드의 입력값과 연산 수행 시간의 상관관계를 나타내는 척도입니다.시간 복잡도의 점근 표기법으로는 3가지가 있습니다.최상의 경우 : 오메가 표기법 (Big-Ω Notation)평균의 경우 : 세타 표기법 (Big-θ Notation)최악의 경우 : 빅오 표기법 (Big-O Notation)이 중에서 알고리즘의 시간 복잡도를 측정할 때, 주로 빅오(Big-O) 표기법을 사용합니다.이유는 알고리즘 효율성을 상한선 기준으로 표기하기 때문이며, 입력값의 크기가 증가할 때 표기법을 보고 어떻게 증가하는지 파악할 수 있습니다. 1-2. Big-O 표기법  ① O(1) - 상수 시간 복잡도    · 입력 ..
[NestJS] 간단한 CRUD 기능 만들기
·
NestJS
NestJS에 있는 resource 기능을 이용하여 간단한 CRUD 기능을 하는 REST API를 만들어 보겠습니다. 1. resource 기능기본적으로 NestJS에서 API기능을 만들기 위해서는 module, controller, service 등 여러 작업을 반복해서 만들어야 합니다.Nest에서는 이러한 반복적인 프로세스의 속도를 높이기 위해 resource라는 명령어를 만들었습니다.resource 명령어는 모듈, 서비스, 컨트롤러뿐만 아니라 Entity, DTO 클래스 및 Test 파일도 생성합니다.// 폴더 이름 users에 resource 생성> nest g resource usersusers├── dto│   ├── create-user.dto.ts│   └── update-user.dto...
mysql과 mysql2 차이
·
개발 지식
Mysql과 Mysql2의 가장 큰 차이점은 Promise 지원 여부입니다.Mysql은 Callback 기반으로 동작하는 반면에, Mysql2는 Promise를 지원하며 CallBack과 같이 활용할 수 있습니다.Mysql에서 Promise를 사용하기 위해서는 별도의 모듈인 'promise-mysql'을 설치해야 하는 번거로움이 있습니다.여기서 callback과 promise는 비동기 작업을 처리하는 방법입니다.동기와 비동기동기(Synchronous)란, 한 작업이 끝날 때까지 다음 작업을 기다리는 방식으로, 순차적으로 작업을 처리합니다.비동기(Asynchronous)는 한 작업의 완료 여부와 상관없이 다음 작업을 실행하는 방식으로, 한 번에 여러 작업을 처리할 수 있습니다. callback파라미터로 함..
[NestJS] 알아보기
·
NestJS
이번에 Spring framework를 이용해 간단한 API를 몇 개 만들고 난 후, framework의 강점에 대해 알게 되었습니다.그러다 Node.js의 백엔드 프레임워크 NestJS가 있다는 것을 알고 이를 알아보기 위해 포스팅하게 되었습니다. 1. NestJSNestJS는 Node.js를 보완하기 위해 express 위에서 구축된 프레임워크입니다.TypeScript 기반으로 구축되어 있지만, JavaScript로도 코딩이 가능합니다.NestJS를 만든 개발자는 Node.js의 아키텍처의 주요한 문제( 너무 자유로운 구조 )를 해결하고자 했습니다.자유로우면 장점이 아닌가 생각할 수 있지만, 여러 사람들이 협업하는 곳에서는 정해진 틀을 갖춘 것이 더 효율적일 수 있습니다.그래서 Nest는 개발자와 팀..
Spring security 구조 및 동작
·
개발 지식
Spring SecuritySpring기반 애플리케이션에서 보편적으로 사용되며, 인증과 권한 부여를 제공하는데 중점을 둔 보안 프레임워크입니다.더보기인증 ( Authentication ) - 사용자가 누구인지 확인하는 과정인가 ( Authorization ) - 인증된 사용자가 어떠한 자원에 접근할 수 있는 권한을 부여하는 과정  Servlet FilterSpring Security는 Servlet Filter를 기반으로 하고 있습니다.Filter는 요청과 읍당에 대한 정보들을 변경할 수 있게 개발자들에게 제공하는 Servlet Container입니다.FilterChain은 이러한 Filter들이 체인처럼 서로 연결되어 연쇄적으로 동작합니다.  Spring Security 구조DelegatingFilte..
[Numble] Spring Batch를 활용한 토스 서버 만들기
·
프로젝트
[ 프로젝트 소개 ]Numble에서 제공하는 사이드 프로젝트를 통해 처음으로 백엔드 프로젝트를 진행했습니다.주어진 가이드라인을 참고해, Spring Batch를 이용한 주식 가격 변동 및 간단한 API들을 만드는 프로젝트입니다. [ ERD ] [ API 문서 ]만들어진 API는 POSTMAN을 이용하여 문서로 정리했습니다.https://documenter.getpostman.com/view/25368623/2sA3JKehmR Numble ProjectSpring Batch를 이용하여 가상의 회원정보, 주식 정보를 만들었습니다. 정해진 가이드라인에 맞게 API를 제공합니다.documenter.getpostman.com [ 코드 ]https://github.com/helder53/Numble GitHub -..
Spring batch 5.0 간단한 구현
·
개발 지식
Spring Batch 5.0 제가 작성하는 글의 Spring Batch는 5.0 버전입니다. 변경점 @EnableBatchProcessing 5버전부터 더이상 해당 어노테이션이 필수가 아니게 변경되었습니다. Batch와 관련된 Bean을 등록하게 해주는 필수 어노테이션이었지만 이젠 사용하지 않아도 됩니다. JobBuilderFactory, StepBuilderFactory deprecated 두 빌더 팩토리 대신 JobBuilder와 StepBuilder를 사용하고 있습니다. JobRepository, TransactionManager 명시적 두 용어를 명시적으로 작성하도록 변경되었습니다. 간단한 구현 Spring Batch 5.0버전에 대한 간단한 예제가 많이 없어서 GitHub에서 예제를 참고하여 ..
Spring batch 알아보기
·
개발 지식
Spring batch 배치 애플리케이션을 개발할 수 있도록 설계된 가볍고 포괄적인 배치 프레임워크입니다. 여기서 Batch는 "일괄처리"라는 뜻을 가지고 있다고 생각하면 됩니다. 특징 Transaction 관리 시작 / 멈춤 / 재시작 재시도 / 건너뛰기 Chunk 기반 처리 대용량 데이터 처리 구조 Application - 개발자가 작성한 모든 배치 작업과 사용자 정의 코드 Batch Core - 배치 작업을 시작하고 제어하는 데 필요한 핵심 런타임 클래스 Batch Infrastructure - 개발자와 Application에서 사용하는 일반적인 Reader와 Writer, RetryTemplate와 같은 서비스 사용 큰 단위의 작업을 일괄 처리할 때 특정 시간에 데이터를 처리하고 싶을 때 ( 스케..
[Python] 문자열 관련 함수 -2-
·
Python
① 문자열 확인 1) isalpha - "문자열" . isalpha() - 문자열이 모두 문자(영어 or 한글)이면 True, 아니면 False를 반환합니다. a = 'abc' b = '가나다' c = '123' print(a.isalpha())# True print(b.isalpha())# True print(c.isalpha())# False 2) isalnum - "문자열" . isalnum() - 문자열이 영어,숫자,한글로 이루어져 있으면 True, 아니면 False를 반환합니다. a = "ABC" b = "123" c = "A1@D" d = "A1 2D" print(a.isalnum())# True print(b.isalnum())# True print(c.isalnum())# False pri..
[Python] 힙(heap)
·
Python
힙(heap) 완전 이진 트리의 일종으로 우선순위 큐를 위하여 만들어진 자료 구조 여러 개의 값에서 최댓값 또는 최솟값을 빠른 속도로 찾을 수 있도록 만들어진 자료 구조 힙 트리에서는 중복된 값을 허용합니다. 파이썬에서는 일반적으로 배열로 구현하는 것이 좋습니다. 힙(Heap)은 완전 이진 트리의 일종이기 때문에, 왼쪽에서 오른쪽으로 노드를 채워나갑니다. 힙의 규칙 - 힙의 노드 생성 순서는 위 그림 네모 칸 안의 숫자와 같이 생성됩니다. - 현재 노드를 N이라고 했을 때 다음의 규칙이 성립 - 현재 노드의 번호 = N - 왼쪽 자식 노드의 번호 = 2N - 오른쪽 자식 노드의 번호 = 2N+1 힙 구현 1. heapq 모듈 1) heapify - heapq.heapify(x) - 자료구조 list를 h..
HeoN97
Hollo코딩