반응형

Knowledge 109

구간합

구간 합은 합 배열을 이용하여 시간 복잡도를 더 줄이기 위해 사용하는 특수한 목적의 알고리즘이다.  🚀 구간 합의 핵심 이론구간 합 알고리즘을 활용하기위해 먼저 합 배열을 구해야 한다.배열 A가 있을 때 합 배열 S는 다음과 같이 정의한다. S[ i ] = A[0] + A[1] + A[2] + ... + A[i-1] + A[i]    ➡️ A[0] 부터 A[i]까지의 합 이렇게 합 배열을 미리 구해놓으면 기존 배열의 일정 범위의 합을 구하는 시간 복잡도가 O(N)에서 O(1)로 감소한다. A[i]부터 A[j]까지의 배열 합을 합 배열 없이 구하는 경우, 최악의 경우는 i가 0이고 j가 N인 경우로 시간 복잡도는 O(N)이다.이런 경우 합 배열을 사용하면 O(1)안에 답을 구할수 있다. ✏️ 합 배열 S..

String vs StringBuffer vs StringBuilder

1. StringString과 다른 클래스 (StringBuffer, StringBuilder)의 차이점은 String은 immutable(불변), StringBuffer는 mutable(변함)에 있다. String은 문자열을 대표하는 것으로 문자열을 조작하는 경우 유용하게 사용할 수 있다. 문자열, 숫자, char 등은 concat할 때 StringBuffer, StringBuilder를 사용할 수 있다. 단, 복잡한 경우에 의미가 있고, 단순한 경우에는 +연산자를 사용해 직접 합치면 된다. String 객체는 한 번 생성되면 할당된 메모리 공간이 변하지 않는다. + 연산자 또는 concat 메서드를 통해 기존에 생성된 String 클래스 객체 문자열에 다른 문자열을 붙여도 기존 문자열에 새로운 문자열..

Knowledge/이론 2024.06.13

CI / CD

1. CI / CD의 개념CI/CD (Continuous Integration / Continuous Delivery 또는 Continuous Deployment)는 '지속적 통합 / 지속적 배포' 라는 의미이다.CI는 소스 코드의 변경 사항을 자동으로 빌드 및 테스트해 통합하는 것으로, 이를 통해 소스코드의 품질을 높이고 빠른 시간 내에 버그를 해결할 수 있다.CD는 웹 애플리케이션을 지속적으로 개발하고 테스트해 언제든지 배포 가능한 상태로 유지하는 것을 말한다.Continuous Delivery의 경우에는 개발된 웹 애플리케이션이 자동화된 빌드-테스트-배포 프로세스를 거쳐 언제든지 배포 가능한 상태로 유지된다. 이때 배포를 할지 말지는 수동으로 결정한다. 즉, 배포 결정을 해야 배포된다.Continu..

Knowledge/이론 2024.06.12

가상화와 컨테이너

1. 가상화의 개념가상화(Virtualization)란 하나의 물리적인 서버를 여러 개의 가상 서버로 분할해 사용하는 기술이다. (1) 가상화의 종류가상화는 크게 개발 환경 가상화, 머신 가상화, 운영체제 수준 가상화로 나뉜다. 개발 환경 가상화개발자가 웹 애플리케이션을 개발할 때 필요한 환경을 가상으로 구축하게 하는 기술이다.이 방식의 경우 한 컴퓨터에서 여러 웹 애플리케이션을 개발하더라도 각각의 환경을 구성할 수 있다.즉, 개발 환경마다 다른 관련 라이브러리나 패키지를 독립적으로 관리해 일관된 개발 환경을 유지할 수 있다.예를 들어 파이썬 개발을 위한 가상 환경을 만들어주는 가상 환경 관리자인 아나콘다(anaconda)가 있다.머신 가상화가상 머신(Virtual Machine)으로 하나의 서버에서 여..

Knowledge/이론 2024.06.12

클라우드 컴퓨팅

1. 클라우드 컴퓨팅의 개념클라우드 컴퓨팅 (Cloud computing)은 언제 어디서든 인터넷을 통해 접속할 수 있는 컴퓨팅 환경이다. 간단히 '클라우드'라고도 한다. 클라우드가 도입되기 전에 개인 또는 기업은 자체적으로 서버를 구축하고 운영하는 온프레미스(on-premise) 시스템을 사용했다. 온프레미스 시스템사용자가 직접 컴퓨팅 자원을 보유하고 관리하는 방식이다. 자체적으로 서버, 스토리지 ,네트워크 장비 등을 구입해 설치한 후 유지, 보수, 업그레이드 등을 수행한다.사용자가 보안과 데이터 소유권을 직접적으로 통제할 수 있다.외부 네트워크와 연결하지 않아도 내부 네트워크에서 서버에 접근할 수 있다.초기 투자 비용과 유지, 보수 비용이 많이 들고, 자원의 확장성과 유연셩이 제한될 수 있다. 클라우..

Knowledge/이론 2024.06.12

API

1. API의 개요(1) API의 개념API(Application Programming Interface) 는 응용 프로그램에서 사용할 수 있도록 운영체제나 프로그래밍 언어가 제공하는 기능을 제어하기 위한 인터페이스이다.'inter(~사이의'와 'face(면)'이 합쳐진 말인 인터페이스는 여러 장치나 프로그램 사이에서 통신이 가능하도록 도와주는 매개체를 가르킨다.클라이언트와 서버는 API를 호출해 요청과 응답을 주고 받는다. 클라이언트가 API를 호출해 필요한 데이터를 서버에 요청하면, 서버는 데이터베이스에서 데이터를 처리한 후 그 결과를 클라이언트에 응답한다.    (2) API 유형① REST APIAPI 작성 규칙을 표준화한 REST API가 개발되었다. REST API는 크게 자원(resource..

Knowledge/이론 2024.06.12

DBMS

DBMS는 데이터를 효율적으로 저장, 관리, 조회하는 프로그램으로, 크게 2가지로 나눈다.데이터 간의 관계와 효율적인 관리에 중점을 둔 RDBMS분산된 대량의 데이터를 저장하고 조회하는데 특화된 NoSQL 1. RDBMS (Relational Database Management System)RDBMS는 관계형 데이터베이스 (RDB : Relational DataBase)를 관리하는 시스템이다.관계형 데이터베이스는 모든 데이터를 테이블 단위로 저장하며, 각 테이블은 속성과 튜플로 구성된다.  관계형 데이터베이스에서는 현실 세계의 복잡한 사건이나 사물의 특성을 관계(Relationship)로 표현하며, 테이블 간의 관계는 일대일, 일대다, 다대다 관계로 구분된다.일대일(1:1) 관계 : 한 튜플이 다른 테이..

Knowledge/이론 2024.06.12

에라토스테네스의 체

✏️ 원리 이해하기에라토스테네스의 체는 소수를 판별하는 간단한 알고리즘이다."소수가 되는 수의 배수를 지우고 남는 수는 모두 소수이다" 라는 원리이다. 정리하면,1) 가장 작은 소수 2의 배수를 모두 지운다.2) 다음 작은 소수인 3의 배수를 모두 지운다.3) 지워지지 않는 수는 소수이다. 🚨 JAVA 로 구현해보기만약, 120까지의 범위에서 소수를 구하는 문제일 때, public class Solution { // 예제와 같이 120까지의 소수를 구하기 위해 120 선언. static boolean prime[] = new boolean[121]; public static void main(String[] args) throws Exception{ // 구하고자 하는 숫자..

순환 참조(Circular References) 해결

🤣 문제 상황***************************APPLICATION FAILED TO START***************************Description:The dependencies of some of the beans in the application context form a cycle: jwtAuthenticationFilter defined in file [C:\Users\admin\IdeaProjects\exercise_board\build\classes\java\main\org\board\exercise_board\user\Security\JwtAuthenticationFilter.class]┌─────┐| jwtTokenProvider defined in f..

java.lang.StackOverflowError: null

⚡문제 상황더보기더보기2024-06-10T16:12:19.324+09:00 ERROR 12272 --- [exercise_board] [nio-8080-exec-3] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Handler dispatch failed: java.lang.StackOverflowError] with root cause java.lang.StackOverflowError: null at org.board.exercise_board.user.domain.model.User.getPassword(Us..

반응형