반응형

전체 글 164

[자료구조] 스택,큐,힙

스택 (Stack)스택은 LIFO (Last In, First Out, 후입선출) 방식의 자료구조로, 가장 나중에 삽입된 데이터가 가장 먼저 삭제되는 구조입니다.특징삽입(Push)과 삭제(Pop) 연산만 허용되며, 두 연산은 항상 스택의 최상단(Top)에서만 수행됩니다.데이터 접근이 제한적이며, 가장 마지막에 추가된 데이터부터 접근 가능.재귀(Recursion) 구현이나 DFS(깊이 우선 탐색) 등의 알고리즘에서 많이 사용됨.시간복잡도삽입(푸시) 및 삭제(팝): O(1) (항상 스택의 Top에서만 연산)탐색: O(n) (순차적으로 접근해야 하기 때문)큐 (Queue)큐는 FIFO (First In, First Out, 선입선출) 방식의 자료구조로, 먼저 삽입된 데이터가 가장 먼저 삭제되는 구조입니다.특징..

CS/자료구조 2025.02.26

스프링 Junit5 와 Mockito를 이용한 단위 테스트

JUnit 5(Jupiter)와 Mockito를 이용한 단위 테스트1. 의존성 설정JUnit 5와 Mockito를 사용하여 단위 테스트를 진행하려면 먼저 프로젝트에 필요한 의존성을 추가해야 합니다. Spring Boot 환경에서 테스트를 진행할 경우 아래와 같이 build.gradle 또는 pom.xml에 추가하면 됩니다.// build.gradletestImplementation("org.mockito:mockito-core")testImplementation("org.mockito:mockito-junit-jupiter")testImplementation 'org.springframework.boot:spring-boot-starter-test'2. User 엔티티아래는 User 엔티티의 예제 코드입..

[파이썬] 백준 3190 뱀

[파이썬] 백준 3190 뱀https://www.acmicpc.net/problem/3190 문제Dummy라는 도스 게임이 있다. 이 게임에는 뱀이 나와서 기어 다니는데 , 사과를 먹으면 뱀 길이가 늘어난다.뱀이 벽 또는 자기 자신의 몸과 부딪히면 게임이 끝이 난다. N x N 정사각 보드 위에서 진행되고 몇몇 칸에 사과가 놓여 있다. 보드 상하좌우 끝에는 벽이 있다.뱀의 처음 시작위치는 맨 위 맨 좌측에 위치하고 처음 길이는 1이다. 뱀은 처음에는 오른쪽으로 향한다. 뱀은 매초 마다 움직이는데 아래의 규칙을 따른다.먼저 뱀은 몸길이를 늘려 머리를 다음칸에 위치시킨다.만약 벽이나 자기 자신의 몸과 부딪히면 게임이 끝난다.만약 이동한 칸에 사과가 있다면, 그 칸에 있던 사과가 없어지고 꼬리는 움직이지 않는..

스프링 - 이메일 인증

이메일 인증- 앞서 스프링에서 이메일 인증을 하기위해 구글 이메일 설정및 앱 비밀번호 생성하는 부분은 생략하겠다. 1. 의존성 추가이메일 기능을 사용을 위한 의존성 추implementation 'org.springframework.boot:spring-boot-starter-mail' 2.application.yml 설정spring: mail: host: smtp.gmail.com port: 587 username: ${MAIL_USERNAME} password: ${MAIL_PASSWORD} properties: mail: smtp: auth: true starttls: enable: true ..

클라우드 타입을 이용하여 리액트,스프링부트 배포

클라우드 타입을 이용하여 리액트, 스프링부트 배포 처음 배포할때에는 db와 서버는 클라우드 타입 리액트는 netlify로 배포하였다. 그러나 서로 도메인이 달라 cors문제가 발생하였고 이걸 해결하기 위해 이것저것 해봤지만 시큐리티의 세션을 쿠키로 전달하는 과정 때문에 대부분 막혀 결국 리액트도 크라우드 타입으로 같은 도메인은 사용하도록 배포하였다.  클라우드 타입으로 스프링부트 배포 하는법깃허브 레퍼지토리에서 자신의 스프링부트 레퍼지토리를 선택하고 그 후자신의 프로젝트에 맞는 자바 버전을 저기서 설정할 수 있다. 환경변수는이렇게 설정할수 있는데 이때 application.yml 파일에spring: profiles: active: ${PROFILE}profile는 환경변수가 집어넣을 파일명을 의미..

프로젝트 2024.12.30

TaskHub

TaskHub 기술 스택1. FrontendReact:ReduxRouter2. BackendSpring Boot:Spring SecurityJPA3. DatabaseMySQL 기능로그인 : 시큐리티의 세션 기반 인증을 이용하여 로그인하고 리액트에서 세션값을 리덕스에서 관리todo : 사용자 개인의 todo 리스트 생성,저장,불러오기,삭제메시지 : 사용자 간 메시지 전송,수신,확인,삭제 동작과정메인 로그인 TODO메시지메시지 작성메시지 확인 향후보환 계획웹소켓을 추가하여 채팅기능등 여러 기능을 추가해볼생각OAuth2 로그인 추가UI 개선모바일 지원 결론TaskHub는 개인 생산성과 커뮤니케이션을 동시에 향상시키기 위해 설계된 프로젝트입니다.현재 기본 기능을 충실히 구현한 상태이며, 향후 WebSocket을..

프로젝트 2024.12.28

TaskHub 프로젝트 개요

TaskHub 프로젝트 개요목적: React와 Spring Boot를 사용하여 사용자 인증, 상태 유지, 메시지 전송 및 관리, TODO 기능을 제공하는 애플리케이션을 개발.주요 기능1. 회원가입기능: 사용자 계정을 생성하며, 아이디 중복 여부를 확인.세부사항:아이디 중복 확인 API 구현 (Spring Boot).회원가입 폼 유효성 검사 (React).비밀번호 해시 암호화 (Spring Security).2. 로그인기능: 사용자가 로그인하여 애플리케이션을 사용할 수 있게 함.세부사항:세션 기반 인증 (Spring Security).React에서 로그인 폼 구현 및 세션 토큰 관리.3. 리덕스를 이용한 로그인 상태 유지기능: 로그인 후 상태 정보를 Redux에 저장하여 상태 유지.세부사항:로그인 성공 시..

프로젝트 2024.12.21

리액트 리덕스툴킷 사용법

리액트 리덕스툴킷 사용법 리덕스 툴킷 설치npm install @reduxjs/toolkit react-redux  리덕스 툴킷 흐름1.적용할 컴포넌트 만들기2.슬라이스 3.스토어4.컴포넌트에 리덕스 적용하기 1.컴포넌트 import React from 'react';const Counter = () => { return ( Redux Toolkit Counter Increment Decrement Increment by 5 Count: );}export default Counter; 2.슬라이스 만들기슬라이스에서 액션함수와 리듀서 함수를 만들어 사용합니다.import {createSlice} from '@r..

리액트 기존 리덕스 사용방법

리액트 기존 리덕스(redux) 사용방법전체 흐름Actions: 상태 변화를 위한 액션 정의 (INCREMENT, DECREMENT).Reducers: 액션을 처리하는 함수로, 상태(state)를 업데이트.Store: 상태 관리 중심. Provider로 앱과 연결.Components: store를 연결하여 랜더링 구현방법1. 액션 함수 정의-액션은 객체 형태로 애플리케이션에서 어떤 동작이 발생했는지를 설명하는 함수-type이라는 액션의 고유 식별자가 필수로 이었야 하면 상태 업데이트할 때 필요한 값을 포함할 수 있다.//액션타입정의const INCREASE = 'counter/+'const DECREASE = 'counter/-'// 액션 생성 함수 예시export const increase=()=>({..

반응형