Git을 사용하다 히스토리에 기록된 이메일과 이름 정보를 수정할 일이 생겨 이참에 수정 방법에 대해 포스팅해보려고합니다🚨 주의: 작업 환경 준비기존 프로젝트에 직접 작업하지 마세요!다음 절차를 따라 새로 클론한 저장소에서 작업을 진행하세요.현재 작업 중인 프로젝트가 있다면 변경사항을 커밋하거나 백업하세요.원격 저장소를 새 폴더에 클론합니다:git clone 새로 클론한 저장소에서 아래의 모든 작업을 진행하세요.1. git filter-repo 설치git filter-repo는 Git의 기본 명령어에 포함되지 않으므로 별도로 설치해야 합니다.📝 1.1. Python 설치 여부 확인먼저 Python이 설치되어 있는지 확인합니다:python --version또는:python3 --version팁: Pyt..
전체 글
창업, 사업, 자기개발, 운동, Web, App, Java, python, 이슈, 개발자, JavaScript, amazon, cloud server, 취업, 스펙, Android Studio, Spring, React, Node.js, 여행, 맛집1. ArrayList와 LinkedList의 성능 차이ArrayList와 LinkedList는 중간 삽입/삭제의 시간 복잡도가 모두 O(N)으로 동일합니다. 하지만 실제로는 ArrayList가 더 빠른 경우가 많습니다.ArrayList:내부적으로 배열을 사용하며, 연속된 메모리에 데이터를 저장합니다.특정 위치를 찾는 데 O(1)로 빠르며, 삽입/삭제 시 데이터 이동이 발생하지만, 캐시 최적화 효과로 인해 성능이 더 좋습니다.LinkedList:노드 기반 자료구조로, 삽입/삭제는 연결만 변경하면 되지만 특정 위치를 탐색하는 데 O(N)이 걸립니다.메모리가 비연속적이어서 캐시 효율이 떨어지고, 실제로 더 느릴 수 있습니다.결론: 이론적으로 LinkedList가 유리할 것 같지만, 캐시 친화적인 ArrayL..
PriorityQueue는 자바에서 제공하는 우선순위 큐(Priority Queue) 구현체로, 요소를 우선순위에 따라 자동으로 정렬하여 관리하는 자료구조입니다. 내부적으로 힙(Heap) 자료구조를 기반으로 하며, 최소 힙(Min-Heap)을 기본으로 사용합니다.1. 🌐 PriorityQueue란?1.1 주요 특징자동 정렬: 삽입된 요소는 우선순위에 따라 정렬됩니다.(기본적으로 오름차순으로 정렬되며, 사용자 정의 정렬 순서를 지정할 수 있습니다.)FIFO가 아닌 우선순위 기반 처리:일반적인 큐(FIFO)와 다르게, 요소는 우선순위가 높은 순서대로 처리됩니다.중복 요소 허용:동일한 값을 여러 번 삽입할 수 있습니다.내부적으로 힙(Heap) 자료구조를 사용하여 정렬 및 삽입/삭제 작업을 효율적으로 수행합니..
자바에서 Queue 인터페이스는 기본적인 단방향 큐(FIFO)를 정의하는데 사용됩니다. 하지만, 실제로 Queue 대신 Deque를 사용하여 동일한 동작을 구현해도 성능에 문제가 없습니다. Deque는 큐와 스택 동작을 모두 지원하므로, Queue의 모든 기능을 충분히 대체할 수 있습니다.1. 🌐 Queue와 Deque의 차이1.1 Queue의 특징단방향 삽입/삭제만 가능하며, FIFO(First In, First Out) 동작을 따릅니다.주요 메서드:삽입: add(E e), offer(E e)삭제: poll(), remove()조회: peek(), element()1.2 Deque의 특징양방향 삽입/삭제가 가능하지만, 단방향 동작도 구현 가능합니다.Deque를 단방향 큐로 사용하면, Queue의 모든..
🔒 트랜잭션 격리 수준(Isolation Level)📌 격리 수준의 정의격리 수준은 동시에 실행되는 트랜잭션 간의 데이터 충돌 방지 및 무결성 보장을 위해 설정하는 규칙입니다. 각 수준은 트랜잭션 성능과 일관성 사이에서 트레이드오프를 제공합니다.격리 수준은 ANSI SQL 표준에 정의되어 있으며, Spring에서는 이를 데이터베이스에 전달하여 적용합니다.격리 수준 설정 방법Spring에서 @Transactional 어노테이션에 isolation 속성을 설정하여 격리 수준을 지정할 수 있습니다.예시 코드@Transactional(isolation = Isolation.READ_COMMITTED)public void processData() { // 트랜잭션 동작}📌 격리 수준 값과 특징아래는 S..
📌 트랜잭션 전파(Propagation)란?트랜잭션 전파(Propagation)는 트랜잭션의 존재 여부와 관계를 정의합니다.현재 트랜잭션이 있는 경우 그 트랜잭션에 참여할지,새로 트랜잭션을 생성할지,트랜잭션 없이 실행할지를 결정합니다.Spring에서 제공하는 전파 속성은 @Transactional 어노테이션의 propagation 속성으로 설정할 수 있습니다.📌 트랜잭션 전파와 격리 수준의 차이전파(Propagation)트랜잭션의 관계를 설정합니다.예: 새로운 트랜잭션 생성, 기존 트랜잭션 참여 등.격리 수준(Isolation Level)동시에 실행되는 트랜잭션 간 데이터 접근 규칙을 설정합니다.예: Dirty Read 방지, Repeatable Read 보장 등.간단히: 전파는 트랜잭션의 관계, 격..
📌 @Transactional이란?Spring에서 제공하는 트랜잭션 관리 어노테이션으로, 데이터 작업의 ACID 특성을 보장하며 트랜잭션 시작, 커밋, 롤백을 자동으로 처리합니다.💡 @Transactional의 동작 원리@Transactional은 AOP(Aspect-Oriented Programming) 기반으로 동작하며, 프록시 객체가 트랜잭션의 시작과 종료를 제어합니다.프록시 동작 구조클라이언트가 호출 → 프록시 객체가 메서드를 가로챔.프록시 객체가 트랜잭션을 시작(Commit/Rollback 결정).실제 객체의 메서드 실행.메서드 종료 후 트랜잭션 종료.📌 트랜잭션은 원래 하나인가? 독립적으로 동작한다는 의미는?트랜잭션은 하나의 작업 단위트랜잭션은 데이터를 다루는 논리적 작업 단위입니다. 이..
Spring Boot 프로젝트를 진행하다 보면, 여러 프로젝트에서 재사용할 수 있는 공통 모듈을 패키지화해서 관리하고 싶을 때가 많습니다. 이번 포스팅에서는 공통 모듈을 Maven 패키지로 만들어 GitHub Packages에 등록하고, 이를 다른 프로젝트에서 사용하는 방법을 처음부터 끝까지 자세히 설명합니다.1. 🌱 공통 모듈 프로젝트 생성1️⃣ 프로젝트 구조 만들기Spring Boot 공통 모듈 프로젝트를 생성합니다. Maven 프로젝트로 설정하는 것이 중요합니다.Maven 프로젝트 생성 명령어:mvn archetype:generate -DgroupId=com.example -DartifactId=springboot-common-modules -DarchetypeArtifactId=maven-arc..