분류 전체보기 300

DI와 IoC에 대해 아는 만큼 설명해주실 수 있을까요?

DI(Dependency Injection)와 IoC(Inversion of Control)는 객체 지향 프로그래밍에서 소프트웨어 컴포넌트 간의 결합도를 낮추기 위해 사용하는 개념들입니다.  IoC(Inversion of Control, 제어의 역전): 전통적인 절차 지향 프로그래밍에서는 프로그램의 흐름을 개발자가 직접 제어합니다. 그러나 IoC는 이 흐름의 제어권을 프레임워크나 컨테이너가 대신 가지도록 하여, 개발자가 신경 써야 할 부분을 줄여줍니다. 대표적으로 Spring 프레임워크에서 IoC 컨테이너가 객체의 생성과 생명 주기를 관리합니다.  DI(Dependency Injection, 의존성 주입): DI는 IoC의 구현 방법 중 하나로, 객체가 필요로 하는 의존성을 외부에서 주입하는 방식입니다...

기술면접 준비 2024.08.13

Java Map의 내부 구현은 어떻게 이루어져 있을지 추측해보실 수 있을까요?

Java 에는 Map 이라는 인터페이스 도구가 있다.대표적으로 Map, HashMap, TreeMap, LinkedHashMap이 있다. 각 Map 인터페이스들의 구조에 대해 정리해보자.  Map기본적으로 Map은 key-value 구조로 구성되어 데이터를 저장할 수 있다.key를 가지고 저장된 value를 찾을 수 있다. key를 이용하여 데이터 검색에 최적화되어있으나, 동일한 key 에 다른 데이터 value가 저장되어 있을 경우 기존에 저장된 데이터는 덮어씌워져 사라진다.따라서, 중복된 key는 존재할 수 없다.  HashMapHashMap은 Hash Table 을 이용하여 만들어졌다.Hash Table은 key 와 value를 저장하며, key를 이용하여 빠르게 데이터를 찾기 위한 자료구조를 가지..

기술면접 준비 2024.08.13

Buyme TIL 240810 .env 파일 세팅하기

.env 파일이란? 프로젝트 바로 밑에 만들고, 비밀번호 등 민감한 정보를 .env 파일에 기록하여 민감 정보 유출 방지 .env 파일에 예 MYSQL_ROOT_PASSWORD=1234 라고 쓴 후, docker-compose.yml 파일에서 mysql_root_password 같은 민감 정보를 다음과 같이 표현할 수 있다. MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} 또한, .gitignore 에 반드시 .env 파일을 추가하여야 한다.

Buyme TIL240809 Dockerfile/DockerCompose 세팅 (intellij 로 실행한 환경과, docker로 실행한 환경은 다르다)

오늘은 Docker/DockerCompose 환경 구축을 하였다. 에러 1 => ERROR [app build 3/6] COPY build.gradle.kts settings.gradle.kts /app/ 0.0s------ > [app build 3/6] COPY build.gradle.kts settings.gradle.kts /app/:------failed to solve: failed to compute cache key: failed to calculate checksum of ref 327dbb8b-f7ef-45d8-92c0-8c553ef7f0db::1ey6bs0voi1gicus18fdcw4wu: "/settings.gradle.kt..

1-2 ERD

User - Order: 1 : M (비식별) - 한 명의 사용자는 여러 개의 주문 가능Order - OrderItem: 1 : M (식별) - 한 개의 주문은 여러 개의 주문 상품을 포함Product - OrderItem: 1 : M (비식별) - 한 개의 상품은 여러 주문 상품에 포함User - Wishlist: 1 : M (비식별) - 한 명의 사용자는 여러 개의 위시리스트 항목을 가질 수 있음Product - Wishlist: 1 : M (비식별) - 한 개의 상품은 여러 위시리스트 항목에 포함Order - Payment: 1: 1 (식별) - 한 개의 주문은 하나의 결제와 연결

Buy me If you can 프로젝트 개요

목표기본적인 E-commerce 서비스를 위한 회원 플랫폼을 개발사용자는 플랫폼을 통해 회원가입, 로그인, 로그아웃, 마이페이지 등의 기본적인 유저 관리 기능을 편리하게 이용커머스를 이용하기 위한 핵심 요소인 WishList, 주문내역, 주문상태 조회 등의 기능을 제공하여 사용자가 원하는 물품의 구매 및 진행 상태를 원할하게 인지할 수 있도록 함올바른 주문 및 결제/환불 등을 처리하기 위해선 회원의 개인정보가 저장 사용 기술 및 개발 환경Java or KotlinJWTHTTP Request / Response프로그래밍 언어: JVM 언어(Java/Kotlin) 버전 21 이상빌드 툴: Gradle프레임워크: SpringBoot 3.XXDocker / Docker Compose왜 Java 21 버전과 Sp..

가비지 컬렉션 요약

Garbage Collection(GC) 이란?가비지 컬렉션(Garbage Collection, 이하 GC)은 자바의 메모리 관리 방법 중의 하나로 JVM(자바 가상 머신)의 Heap 영역에서 동적으로 할당했던 메모리 중 필요 없게 된 메모리 객체(garbage)를 모아 주기적으로 제거하는 프로세스를 말한다.  C / C++ 언어에서는 이러한 가비지 컬렉션이 없어 프로그래머가 수동으로 메모리 할당과 해제를 일일이 해줘야 했었다.반면 Java에서는 가비지 컬렉터가 메모리 관리를 대행해주기 때문에 Java 프로세스가 한정된 메모리를 효율적으로 사용할수 있게 하고, 개발자 입장에서 메모리 관리, 메모리 누수(Memory Leak) 문제에서 대해 관리하지 않아도 되어 오롯이 개발에만 집중할 수 있다는 장점이 있다.

기술면접 준비 2024.08.06

가비지 컬렉션 동작 원리 & GC 종류 총정리

Garbage Collection(GC) 이란?가비지 컬렉션(Garbage Collection, 이하 GC)은 자바의 메모리 관리 방법 중의 하나로 JVM(자바 가상 머신)의 Heap 영역에서 동적으로 할당했던 메모리 중 필요 없게 된 메모리 객체(garbage)를 모아 주기적으로 제거하는 프로세스를 말한다.  C / C++ 언어에서는 이러한 가비지 컬렉션이 없어 프로그래머가 수동으로 메모리 할당과 해제를 일일이 해줘야 했었다.반면 Java에서는 가비지 컬렉터가 메모리 관리를 대행해주기 때문에 Java 프로세스가 한정된 메모리를 효율적으로 사용할수 있게 하고, 개발자 입장에서 메모리 관리, 메모리 누수(Memory Leak) 문제에서 대해 관리하지 않아도 되어 오롯이 개발에만 집중할 수 있다는 장점이 있..

기술면접 준비 2024.08.06