본문 바로가기

728x90

전체 글

(454)
[Spring boot] 프록시 객체(Proxy Object) 프록시 객체란?원본 객체를 감싸는 객체로 실제 객체를 대신하여 요청을 처리하는 객체입니다.메소드 호출을 가로채 추가적인 기능(로깅, 트랜잭션, 보안 등)을 수행할 수 있도록 합니다.  프록시 객체의 주요 특징AOP 적용 시 프록시 객체 사용AOP는 메소드 실행 전후에 부가 기능을 삽입하기 위해 프록시 객체를 활용합니다.@Transactional을 적용하면 대상 객체 대신 트랜잭션을 관리하는 프록시 객체를 생성동적 프록시 방식런타임에 동적으로 프록시 객체 생성트랜잭션 관리와 관련@Transactional을 사용할 경우 해당 객체의 메소드를 실행할 때 프록시를 통해 트랜잭션을 시작하고 정상적으로 종료되면 커밋을 하고 예외가 발생할 때는 롤백을 합니다. 프록시 객체 종류JDK 프록시 객체인터페이스를 구현한 객..
[Java] BigInteger란? 사용법 BigInteger란?BigInteger는 자바에서 제공하는 클래스 중 하나로, 기본 정수형 int와 long의 범위를 넘어서는 정수를 표현할 수 있는 자료형입니다. BigInteger는 java.math 패키지에 포함되어 있으며, 매우 큰 정수뿐만 아니라 부동소수점 오차를 처리하는 데에도 유용하게 사용될 수 있습니다.  언제 사용할까?범위 확장 : long 자료형으로 표현할 수 없는 큰 수를 다룰 수 있습니다. (long의 최대값은 9223372036854775807)부동소수점 오차 처리 : 실수 연산에서 발생하는 부동소수점 오차를 해결하기 위해 BigDecimal과 함께 사용되는 경우가 많습니다. BidDecimal은 고정 소수점 연산을 하여 부동소수점 오류를 방지할 수 있습니다. 사용 예제impor..
[Spring Boot] 상속관계 매핑 전략 개발을 진행하던 중 스, 드, 메 테이블을 작성하였고 밑의 그림처럼 테이블을 작성하였습니다.스드메의 공통 속성들을 상품 테이블로 묶고 1대1 관계로 연관관계를 설정하였으며 개발에 들어가니 너무 귀찮은 작업을 하기 시작했습니다. 처음 개발을 진행했을 때 드레스 1개 상품을 등록을 할 때 상품 테이블에 데이터 1개 드레스 테이블에 데이터 1개를 저장하고 있었습니다. 하지만 문뜩 드는 생각은 이렇게 번거롭고 귀찮은 작업을 무수히 많은 사람들이 했을텐데 간편하게 만든게 있지 않을까? 라는 생각을 찾아보았습니다.  상속 관계 매핑에 대해서 검색을 하니 바로 검색으로 나왔었습니다.https://victorydntmd.tistory.com/209 [Spring JPA] 상속 ( JOINED 전략을 중심으로 )객체지향..
[알고리즘] 위상 정렬 위상 정렬(Topological Sort)이란?방향성이 있는 그래프(Directed Acyclic Graph, DAG)에서 선행 관계를 유지하면서 모든 노드를 순서대로 나열하는 방법즉, 어떤 일을 수행하는 순서가 있을 때 그 순서를 결정하는 알고리즘 예시 : 특정 작업이 끝나야만 다른 작업이 가능할 때   위상 정렬을 알기 전 알아야 할 지식진입 차수(indegree) : 특정 노드로 들어오는 간선의 개수진출 차수(outdegree)  : 특정 노드에서 나가는 간선의 개수  위상 정렬 알고리즘 동작 과정위상 정렬 알고리즘은 큐를 사용하여 구현을 합니다.진입 차수가 0인 노드를 큐에 넣습니다.큐가 빌 때까지 다음 과정을 반복합니다.큐에서 원소를 꺼내 해당 노드에서 나가는 간선을 그래프에서 제거새롭게 진입 ..
[Spring Boot] @PrePersist 어노테이션 @PrePersist란?JPA의 라이프사이클 이벤트 어노테이션 중 하나로, 엔티티가 영속화(저장)되기 전에 실행할 로직을 정의할 때 사용EntityManager.persist() 혹은 save() 중 하나라도 호출이 될 때 데이터베이스에 INSERT 되기 직전 실행되는 메소드  예제 : 유저 가입일 자동 값 입력UserEntityimport jakarta.persistence.*;import lombok.*;import java.time.LocalDateTime;@Getter@Entity@Table(name = "user")@AllArgsConstructor@NoArgsConstructor@Builder@ToStringpublic class UserEntity { @Id @GeneratedVa..
[백준] DFS 스페셜 저지 (16964번) 1. 문제 해석사용자가 DFS를 통해 정답을 제출했을 때 복수의 정답을 채점하는 경우의 알고리즘을 짜는 문제이다즉 답이 여러 개일 경우 해당 제출한 답이 맞는지 확인하는 코드를 작성하는 문제이다 2. 사용되는 자료구조Set[] 인접 리스트 사용목적 : 노드끼리 연결된 노드들만 저장하기 위해 사용이유 : 인접 행렬(int[][])를 사용했을 때 공간 복잡도에 걸림또한 List[]를 사용했을 때 해당 노드에 접근하는데 시간복잡도(73%에서 걸렸습니다)가 걸림Stack목적 : 사용자가 입력한 값을 이용하여 해당 노드로 접근이 가능한지 파악할 때 접근을 할 수 없다면 이전 노드로 돌아가야 하기 때문이유 : 매개변수로 제어해볼려고 했었지만 이전의 이전 노드를 저장할 수 없어 사용하게 되었음 3. 핵심 아이디어최초..
[백준] 후위 표기식 (1918번) 후위 표기식(Reverse Polish Notation, RPN) 변환 방법1. 후위 표기식이란?일반적으로 우리가 사용하는 수식은 중위 표기식(Infix Notation)입니다.예를 들어:중위 표기식: A + B * C후위 표기식: ABC*+후위 표기식은 연산자가 피연산자 뒤에 위치하는 표기법으로, 괄호 없이도 연산 순서를 명확히 표현할 수 있습니다. 2. 사용되는 자료구조후위 표기식으로 변환할 때는 스택(Stack)과 큐(Queue) 를 활용합니다.스택(Stack): 연산자를 저장하는 용도로 사용됩니다.큐(Queue) 또는 문자열: 변환된 후위 표기식을 저장하는 용도로 사용됩니다.이유연산자는 우선순위에 따라 LIFO(Last-In-First-Out, 후입선출) 구조인 스택에 저장해야 합니다.피연산자와 ..
[Java] Queue 구현 Queue를 잘 모르신다면 여기를 클릭해주세요.  구현하는 Queue 기능offer(element) -> 뒤에 요소 추가poll() -> 앞에 요소 추출 후 반환peek() -> 앞에 요소 반환size() -> 크기 반환isEmpty() -> 비어있는지 true/false 반환clear() -> queue 비우기 Queue 구현하기(Linked List)혹시 기능만 보고 구현하시고 싶으신 분을 위해 숨김으로 하겠습니다.더보기더보기package util;import java.util.NoSuchElementException;public class Queue { Node head; Node tail; int size; public Queue() { size = 0; }..

728x90