전체 글 217

[Spring] 회원가입 코드 통해 스프링 구조와 흐름 복습하기

복기하는 내용은 각 코드 주석에 상세히 달아보면서 복습 필요한 의존성을 추가하고 스프링 부트 애플리케이션을 설정해야 하므로, build.gradle 또는 pom.xml 파일에 아래와 같이 의존성을 추가 org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-security org.springframework.boot spring-boot-starter-data-jpa org.springframework.boot spring-boot-starter-thymeleaf 회원 엔티티를 추가 import javax.persistence.Entity; import javax.persistence.Gene..

Framework/Spring 2024.04.11

[Spring] Flyway DB 마이그레이션

DB 마이그레이션이란? 기존 데이터베이스의 스키마와 데이터를 새로운 버전 또는 구조로 이전하는 작업 데이터의 백업, 변환, 이동 등의 작업을 포함 데이터베이스 시스템을 업그레이드하거나 확장 데이터의 일관성과 무결성을 유지하고 새로운 데이터베이스 버전으로 전환 시스템의 안정성과 확장성을 유지 동작 흐름 Application Context → Flyway 실행 → 스키마 생성 → hibernate validation(검증) → 적합한 스키마 실행→ 애플리케이션 실행 완료 Flyway는 스프링에서 DB 마이그레이션을 관리하는 오픈소스 도구. 이를 스프링에 적용하기 위해 먼저 Dependency에 Flyway관련 내용을 입력한다. org.flywaydb flyway-core application.properti..

Framework/Spring 2024.04.11

[Spring] Java 프로젝트 빌드를 위한 Gradle과 Maven의 비교

파이썬에서는 pip, venv 등으로 프로젝트를 진행한다. 마찬가지로 자바에서도 이러한 프로젝트 빌드를 위한 도구들이 존재하는데, 대표적인 도구가 바로 Gradle과 Maven이다. Maven: Apache Maven은 Java 프로젝트 관리 도구로, XML 기반의 프로젝트 객체 모델(POM)을 사용한다. Maven은 중앙 저장소에서 의존성을 가져오고 라이브러리를 다운로드하여 빌드를 수행한다. Maven의 빌드 라이프사이클은 사전 정의된 단계로 구성되어 있으며, 사용자는 특정 단계에 플러그인을 연결하여 확장할 수 있다. Maven은 간단한 프로젝트 구조 및 관리 철학을 제공하며, 표준화된 디렉터리 구조를 권장한다. Gradle: Gradle은 Apache Ant와 Apache Maven의 장점을 결합한 ..

Framework/Spring 2024.04.09

Java static

https://wikidocs.net/228 07-03 스태틱 스태틱(static)은 클래스에서 공유되는 변수나 메서드를 정의할 때 사용된다. 이번 절에서는 스태틱에 대해서 자세히 알아보자. [TOC] ## static 변수 다음과 … wikidocs.net 스태틱(static)은 클래스에서 공유되는 변수나 메서드를 정의할 때 사용된다. 위 링크를 보고 공부했기 때문에 아래 예시를 보면서 static을 더 자세히 이해했다. - static이 있는 경우 class HouseLee { static String lastname = "이"; } public class Sample { public static void main(String[] args) { HouseLee lee1 = new HouseLee();..

언어/Java 2024.04.07

[Java] 추상 클래스란?

추상 클래스(abstract class)는 객체 지향 프로그래밍에서 일종의 템플릿이며, 직접적으로 인스턴스화할 수 없는 클래스다. 추상 클래스는 하나 이상의 추상 메서드(abstract method)를 포함하며, 추상 메서드는 메서드 시그니처만을 가지고 있고 구현은 없는 메서드다. 추상 클래스는 일반적으로 상속을 통해 자식 클래스에서 구체적인 동작을 정의하도록 유도한다. 자식 클래스는 추상 클래스로부터 상속받은 추상 메서드를 반드시 구현해야 한다. 추상 클래스는 클래스의 계층 구조를 설계하는 데 사용되며, 코드의 재사용성과 유연성을 높이는 데 도움이 된다. 또한, 추상 클래스를 사용하여 공통된 기능을 정의하고, 이를 상속받는 여러 개의 클래스에서 필요에 따라 구현할 수 있다. 자바(Java)에서는 추상 ..

언어/Java 2024.04.07

Java 객체 속성 설정 관련 공부

https://wikidocs.net/214 05-02 클래스 이 책에서는 클래스에 대한 개념적인 설명을 하기보다는 가장 간단한 클래스를 작성하는 것에서부터 시작하여 조금씩 클래스의 규모를 키워 가며 설명할 것이다. [TOC] ## 클래… wikidocs.net 위 단계를 공부하다가 문득 신기한 생각이 들어 정리해보았다. 사이트를 보면 아래와 같은 코드가 있다. class Animal { String name; public void setName(String name) { this.name = name; } } public class Sample { public static void main(String[] args) { Animal cat = new Animal(); System.out.println(..

언어/Java 2024.04.06

[Python] Lv.2 캐시

https://school.programmers.co.kr/learn/courses/30/lessons/17680 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 이 문제는 캐시 교체 알고리즘으로 LRU를 사용한다. 이 문제를 통해 LRU라는 개념을 처음 보았기 때문에, 간단하게 ChatGPT로 어떤 알고리즘인지만 이해했다. 아래는 LRU 알고리즘에 대한 요약이다. LRU(Least Recently Used)는 캐시 교체 알고리즘 중 하나로, 주로 메모리 캐싱에서 사용된다. 이 알고리즘은 가장 최근에 사용되지 않은 데이터를 교체하는 방식으로 동작한다. 구체..

cording test 2024.03.29

테스트코드 외에 test%.py 명명 금지

$ python manage.py test accounts [Errno 2] No such file or directory: 'C:\\Users\\jmmas\\OneDrive\\BatangScreen\\Coding\\Project\\kiki-project-django\\kikiproject\\shortcuts\\management\\commands\\shortcuts.json' . . . AttributeError: module 'shortcuts.management.commands.test' has no attribute 'Command' (venv) 테스트코드를 작성하고, 테스트를 해보기 위해 명령어를 눌렀는데 위와 같이 문제가 생겼다. 이상해서 디렉토리를 들여다보니.. test.py가 이미 존재한 ..

Framework/Django 2024.03.19

[Python] Lv3. N으로 표현

https://school.programmers.co.kr/learn/courses/30/lessons/42895 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr DP 문제의 특성으로는 제한사항을 특별히 꼼꼼히 읽어봐야 하는 점이 있다. 제한사항 N은 1 이상 9 이하입니다. number는 1 이상 32,000 이하입니다. 수식에는 괄호와 사칙연산만 가능하며 나누기 연산에서 나머지는 무시합니다. 최솟값이 8보다 크면 -1을 return 합니다. 카테고리부터 DP이기 때문에 DP로 풀어보려고 노력했다. 일단 혼자 풀어보는 것은.. 실패했다. 그 이유는 시작할..

cording test 2024.03.19