2024/08 37

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

클래스와 인스턴스의 차이

📖 클래스(Class)란?Java에서 객체를 생성하기 위한 일종의 설계도이다.흔히 붕어빵(객체)를 만들기 위한 붕어빵 틀(클래스)이라고 비유를 한다.객체가 가지는 속성(필드)와 동작(메서드)으로 이루어져 있다.이들은 생략될 수도 있고 하나 이상 작성될 수도 있다.Java를 실행 시 클래스는 JVM 메모리의 클래스 영역(Class Area)에 로드된다. 📖 인스턴스(Instance)란?클래스가 붕어빵 틀이라면, 그 틀을 통해 생성된 객체(붕어빵) 하나하나를 해당 클래스의 인스턴스라 한다.클래스를 사용하여 힙 영역(Heap Area)에 새로운 인스턴스(객체)를 생성할 수 있다.즉, 인스터스란 현실의 객체를 소프트웨어 내에서 구현한 실체라고 볼 수 있다.📖 요약객체(Object)란 자신 고유의 속성을 가..

기술면접 준비 2024.08.06