분류 전체보기

· ISSUE
발생 상황SpringBoot 3, JPA통계 프로젝트 진행 중 특정 일자에 저장, 그리고 특정 일자를 조회 하기에 인덱스를 사용하기 위해서 복합키를 사용하기로 함.@NoArgsConstructor @AllArgsConstructor @Embeddable public class DataDate implements Serializable { private LocalDate startDate; private LocalDate endDate; private int weekNumber; }@Getter @Entity @NoArgsConstructor @AllArgsConstructor @Builder @EqualsAndHashCode public class Statis..
· Common Sense
메서드를 호출할 때 파라미터를 전달하는 두 가지 방법Call By Value메서드를 호출할 때 값을 넘겨줌Pass By Value메서드를 호출하는 호출자의 변수와 호출 당하는 수신자의 파라미터는 복사된 서로 다른 변수값만 전달하기 때문에 수신자의 파라미터를 수정해도 호출자의 변수에는 아무런 영향이 없음Call By Reference메서드를 호출할 때 참조(주소)를 직접 전달Pass By Reference참조를 직접 넘기기 때문에 호출자의 변수와 수신자의 파라미터는 완전히 동일한 변수메서드 내에서 파라미터를 수정하면 그대로 원본 변수에도 반영됨Java 에서의 파라미터 전달 방법Java는 Call By Value로만 동작함JVM 메모리에 변수가 저장되는 위치Java 에서는 변수를 선언하면 Stack 영역에 ..
· Java
프로그램을 개발 하다 보면 유효하지 않은 메모리인 가비지(Garbage)가 발생한다.C 언어를 이용하면 free() 라는 함수를 사용해서 직접 메모리를 해제해주어야 함JVM의 가비지 컬렉터가 불필요한 메모리를 알아서 정리함null 선언은 함Minor GC와 Major GCJVM의 Heap 영역은 처음 설계될 때 2 가지를 전제로 설계됨대부분의 객체는 금방 접근 불가능한 상태가 된다오랟된 객체에서 새로운 객체로의 참조는 아주 적게 존재한다즉 객체는 대부분 일회성이며, 메모리에 오랫동안 남아있는 경우는 드물다는 것객체의 생존 기간에 따라 물리적인 Heap 영역을 나누게 되었고 Young, Old 2가지 영역으로 설계됨Young 영역새롭게 생성된 객체가 할당되는 영역(Allocation)대부분의 객체가 금방 ..
📌 브릿지 패턴(Bridge Pattern)이란? 구현과 추상화를 분리하여 각각 독립적으로 확장, 변형할 수 있게 하는 패턴이다. 추상적 개념과 구체적 구현을 서로 다른 두 개의 인터페이스로 구현한다. 특히 인터페이스와 구현을 분리함으로써 시스템의 유연성을 향상시킬 수 있다. 예를 들어 Circle(원) 및 Square(정사각형)라는 한 쌍의 자식 클래스들이 있는 Shape(모양) 클래스가 있다고 가정했을 때, 이 클래스의 계층 구조를 확장하여 색상을 도입하기 위해 Red, Blue 모양들을 자식 클래스에 만든다고 한다면 BlueCircle, RedSquare 등 새로운 모양 유형들과 색상 유형들을 추가할 때마다 계층 구조는 기하급수적으로 늘어난다. 위의 예시에서는 모양과 색상 두 가지 독립적인 차원에서..
📌 어댑터 패턴(Adapter Pattern)이란? 호환성이 없는 인터페이스 때문에 함께 동작할 수 없는 클래스들이 함께 동작하도록 해주는 패턴이다. 기존에 있는 시스템에 새로운 써드파티 라이브러리가 추가된다던지, 레거시 인터페이스를 새로운 인터페이스로 교체하는 경우에 코드의 재사용성을 높일 수 있는 패턴이다. 해외여행을 다닐 때 각 국가의 표준전압이 달라 충전기 앞에 흔히 말하는 돼지코(110V 변환)를 사용한 경험이 있을 것이다. 이는 220V를 사용하는 대한민국 충전기의 인터페이스를 외국의 표준전압으로 변환하여 작동시키게끔 하는 어댑터이다. 즉, 어댑터란 이미 구축되어 있는 것을 새로운 어떤 것에 사용할 때 양 쪽 간의 호환성을 유지해 주기 위해 사용하는 것으로 기존 시스템에서 새로운 업체에서 제공..
📌 구조 패턴(Structural Pattern) 이란? 클래스나 객체를 조합하여 더 큰 구조를 만드는 패턴이다. 클래스와 객체 간의 관계를 강화하거나 변경하고, 더 큰 구조를 통해 시스템의 유연성화 효율성을 증가시키는 데 사용된다. 주로 상속이나 인터페이스를 활용하여 객체들 간의 관계를 조직화한다. 📌 구조 패턴의 특징 서로 독립적으로 개발한 클래스 라이브러리를 마치 하나인 것처럼 사용할 수 있다. 여러 인터페이스를 합성하여 서로 다른 인터페이스들의 통일된 추상을 제공한다. 인터페이스나 구현을 복합하는 것이 아니라 객체를 합성하는 방법을 제공한다. 📌 구조 패턴의 종류 [ 어댑터 패턴 (Adapter Pattern) ] 인터페이스가 호환되지 않는 클래스들을 함께 이용할 수 있도록 타 클래스의 인터페이스..
📌 프로토타입 패턴(Prototype Pattern)이란? 프로토타입은 주로 실제 제품을 만들기에 앞서 대략적인 샘플 의미로 사용되는 단어이다. 프로토타입 패턴은 객체의 복사를 통해 새로운 객체를 생성하는 디자인패턴이다. 생성할 객체들의 타입이 프로토타입인 인스턴스로부터 결정되도록 하며, 인스턴스는 새 객체를 만들기 위해 자기 자신을 복제한다. 주로 객체 생성 비용이 높고 유사한 객체가 반복적으로 필요한 경우에 사용된다. 📌 프로토타입 패턴 구조 [ Prototype ] 복제 메서드를 선언한다. [ ConcretePrototype ] 구체 클래스는 복제 메서드를 구현한다. 원본 객체의 데이터를 복제본에 복사하는 것 외에도 복제 프로세스와 관련된 일부 예외적인 경우들도 처리할 수 있다. (연결된 객체 복제..
📌 추상 팩토리 패턴(Abstract Factory Pattern) 이란? 연관성이 있는 객체 군이 여러 개 있을 경우 이들을 묶어 추상화하고, 구체적인 상황이 주어지면 팩토리 객체에서 집합으로 묶은 객체 군을 구현화하는 생성 패턴이다. 추상 팩토리 패턴은 상세화된 서브 클래스를 정의하지 않고도 서로 관련성이 있거나 독립적인 여러 객체의 군을 생성하기 위한 인터페이스를 제공한다. 클라이언트에서 특정 객체를 사용할 때 팩토리 클래스만을 참조하여 특정 객체에 대한 구현부를 감추어 역할과 구현을 분리시킬 수 있다. 예를 들어 모니터, 마우스, 키보드를 묶은 전자 제품군이 있고, 이들 안에서 또 삼성, 애플, 로지텍 등 집합이 브랜드 명으로 나뉠 때 복잡하게 묶이는 제품군들을 관리와 확장하기 용이하게 패턴화 한..
개발의 밀도
'분류 전체보기' 카테고리의 글 목록 (3 Page)