2025/02 36

[Kotlin] 코틀린 문법 2

📌 1. 리스트(List)✅ Java에서 리스트 사용import java.util.*;public class Main { public static void main(String[] args) { List list = new ArrayList(); list.add("Apple"); list.add("Banana"); list.add("Cherry"); System.out.println(list); }} 🔹 Java의 특징 • ArrayList를 명시적으로 선언해야 함. • add() 메서드를 사용해야 함. ✅ Kotlin에서 리스트 사용fun main() { val list = listOf("Apple", "Banana", ..

BE/Kotlin 2025.02.16

[Spring Boot] REST Docs + Asciidoctor

Spring Boot에서 REST Docs와 Asciidoctor를 사용하면 API 명세서를 자동으로 생성할 수 있음.이는 테스트 코드 기반으로 문서를 생성하기 때문에, 코드와 문서가 항상 일치하도록 유지할 수 있음.📌 1. REST Docs + Asciidoctor란?🔹 Spring REST Docs • API 문서를 자동으로 생성할 수 있도록 지원하는 라이브러리 • API 응답을 테스트하며, 이를 기반으로 문서를 생성함 • 문서와 실제 동작하는 코드의 일관성 유지 가능 🔹 Asciidoctor • AsciiDoc 문법을 사용하여 문서를 작성하는 도구 • 마크다운(Markdown)과 비슷하지만 기능이 더 강력함 • HTML, PDF, ePub 등의 다양한 형식으로 변환 가능 ✅ 왜 REST Doc..

DFS, BFS

DFS(깊이 우선 탐색) & BFS(너비 우선 탐색)1. DFS(Depth-First Search, 깊이 우선 탐색)개념DFS(Depth-First Search)는 그래프 탐색 알고리즘 중 하나로, 최대한 깊이 내려간 후, 더 이상 갈 곳이 없으면 되돌아오는 방식으로 탐색함.동작 과정시작 노드를 방문하고 스택에 넣음.현재 노드에서 방문하지 않은 인접 노드가 있으면 해당 노드를 방문하고 스택에 넣음.방문할 수 있는 모든 노드를 방문하면, 스택에서 노드를 하나씩 꺼내면서 탐색을 계속 진행함.스택이 비면 탐색이 종료됨.구현 방법스택(Stack) 또는 재귀(Recursion) 를 사용하여 구현할 수 있음.코드 (Java)import java.util.*;public class DFSSample { stat..

CS 2025.02.14

[Kotlin] 코틀린 문법

1. 변수 선언 (Variable Declaration)Javaint number = 10;String text = "Hello";boolean isActive = true; Kotlinval number: Int = 10val text: String = "Hello"val isActive: Boolean = true 차이점1. val vs var • val(Immutable, 변경 불가) = Java의 final • var(Mutable, 변경 가능) = 일반적인 변수 선언 2. 타입 추론(Type Inference) • Kotlin에서는 val number = 10 처럼 타입을 생략해도 자동으로 Int로 인식됨. 2. 함수 선언 (Function)Javapublic int add(int a, int ..

BE/Kotlin 2025.02.14

[React] useEffect, useState

1. useState - 상태 관리 (State Management) useState는 컴포넌트의 상태를 선언하고 관리할 때 사용되는 React 훅입니다. 상태란 사용자 입력, API 응답 데이터, 컴포넌트 내의 동적 값을 의미합니다. 사용법:const [state, setState] = useState(initialValue); • state: 현재 상태 값. • setState: 상태 값을 업데이트하는 함수. • initialValue: 상태의 초기 값. 예제:import React, { useState } from "react";const Counter = () => { const [count, setCount] = useState(0); // count의 초기값은 0 const handleI..

FE/React 2025.02.13

git branch 별 차이 (dev, origin dev, origin/dev)

명령어 병합 대상 최신 상태 여부병합 대상의 특성git merge dev로컬 dev 브랜치로컬 dev가 최신 상태여야 함로컬 브랜치git merge origin dev 로컬 origin/dev (원격의 로컬 복사본) git fetch로 최신 상태 보장리모트 트래킹 브랜치git merge origin/dev fetch된 최신 origin/dev 참조 항상 최신 상태 (fetch 필요)리모트 트래킹 브랜치명령어별 설명1) git merge devgit merge dev병합 대상: 로컬 dev 브랜치로컬 dev 브랜치가 최신 상태여야 제대로 병합할 수 있음.만약 로컬 dev가 최신 상태가 아니면 구버전 변경사항이 병합될 수 있는 위험이 있음.최신 상태 보장을 위해서는 병합 전에:git checkout dev ..

CS 2025.02.11

[Spring Boot] JaCoCo (Java Code Coverage)

Java 애플리케이션의 코드 커버리지를 측정하는 오픈 소스 도구로, 테스트 코드가 실제로 소스 코드의 어느 부분을 실행했는지 분석하는 역할을 함.주로 JUnit 테스트와 함께 사용되며, 테스트 코드가 작성된 클래스의 몇 %를 실행했는지 측정하여 테스트의 품질을 향상시키는 데 도움을 줌. 1. JaCoCo의 코드 커버리지 지표JaCoCo는 다음과 같은 커버리지 지표를 제공함:커버리지 유형설명Line Coverage실행된 코드 라인의 비율Branch Coverageif-else, switch 등의 분기 실행 비율Instruction Coverage실행된 JVM 바이트코드 명령어의 비율Method Coverage실행된 메서드 개수와 비율Class Coverage실행된 클래스 개수와 비율 ✅ 이 커버리지 지표를..

[Spring Boot] @Slf4j

Lombok 라이브러리에서 제공하는 어노테이션.클래스 내부에 SLF4J(Simple Logging Facade for Java) 기반의 로깅 객체를 자동으로 생성해 주는 기능을 함.즉, @Slf4j를 클래스에 추가하면, log라는 이름의 Logger 객체가 자동으로 생성되며, 이를 통해 로깅을 쉽게 사용할 수 있음. 1. @Slf4j 사용법@Slf4j 적용 및 사용 예제import lombok.extern.slf4j.Slf4j;@Slf4jpublic class LogExample { public static void main(String[] args) { log.info("Hello, this is an INFO log message!"); log.debug("Debuggi..

소프트딜리트 Soft Delete, 하드딜리트 Hard Delete

데이터베이스에서 데이터를 삭제하는 방식에는 소프트 딜리트(Soft Delete)와 하드 딜리트(Hard Delete)라는 두 가지 주요 방식이 있음. 이 두 가지 방식은 데이터 삭제의 목적과 보존 여부에 따라 선택하여 사용됨. 1. 하드 딜리트(Hard Delete) 정의데이터베이스에서 데이터를 완전히 삭제하는 방식.DELETE SQL 명령어를 실행하면 해당 데이터는 물리적으로 데이터베이스에서 사라짐. 예시DELETE FROM users WHERE id = 1;위 쿼리를 실행하면 id = 1인 데이터가 완전히 삭제되어 복구가 불가능함. 장점저장 공간 확보:데이터를 완전히 삭제하므로 디스크 공간을 절약할 수 있음.데이터베이스 성능 향상:불필요한 데이터가 사라지기 때문에 쿼리 성능에 긍정적인 영향을 줄 수 ..

CS 2025.02.08

[Spring Boot] QueryDSL

QueryDSL 개념 QueryDSL은 타입 안전한 JPQL(또는 SQL) 쿼리를 작성하기 위한 라이브러리임. 일반적으로 JPA를 사용할 때 JPQL을 문자열로 작성하는데, 이는 컴파일 타임에 오류를 잡을 수 없고 실행 시에 오류가 발생할 위험이 있음. QueryDSL은 이를 보완하여, 코드를 작성하는 시점에 컴파일러가 쿼리의 오류를 검출할 수 있도록 해줌. QueryDSL은 Java 코드를 통해 쿼리를 작성할 수 있게 해주며, 이를 통해 가독성과 유지보수성을 높일 수 있음.주요 특징타입 안전(Type-safe):컴파일 타임에 쿼리의 구조와 필드 타입을 검증함.예를 들어, 정수 필드에 문자열을 비교하는 등의 오류를 방지할 수 있음.코드 자동 생성:엔티티 클래스를 기반으로 QClass라는 쿼리용 클래스를 ..