본문 바로가기

개발

(155)
UUID type3, UUID type4 (JAVA) UUID(Universally Unique IDentifier)란? 네트워크에서 id의 uniqueness를 보장하고자 만든 국제 표준이다. UUID 표준에 따라 이름을 부여하면 uniqueness를 완벽하게 보장할 수는 없지만 실제 사용상에서 중복될 가능성이 거의 없다고 인정되기 때문에 많이 사용되고 있다. UUID는 32개의 16진수로 표현되며 총 36개 문자(32개 문자와 4개의 하이픈)로 된 8-4-4-4-12라는 5개의 그룹을 하이픈으로 구분한다. UUID type3, UUID type4 아래와 같이 UUID 를 만들어서 데이터베이스에 저장했다고 가정해보자. UUID customerId = UUID.randomUUID(); 그리고 이런식으로 UUID를 가지고 오면다른 결과값이 반환되는걸 확인 할..
mvn clean package spring-boot:repackage 오류 mvn clean package spring-boot:repackage 하는 과정에서 2개의 오류를 만났다🥲 1) Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile 다음과 같은 명령어를 실행했더니 아래와 같은 오류가 남. mvn -version 으로 확인해보니 자바 버전이 1.8로 설정되어져 있음. (해당 프로젝트는 자바 16으로 설정되어있는 상태) 자바 버전을 변경해주고, Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile 는 해결 되었지만, 두번째 오류가 났음. 2) Failed to execute goa..
[Design Pattern] Bridge Pattern Bridge Pattern 구현부에서 추상층을 분리하여 각자 독립적으로 변형 가능하고 확장 가능하도록 하는 패턴으로, 기능과 구현에 대해서 두 개의 별도 클래스로 구현한다. 기능 클래스 계층 : A 상위 클래스를 상속받는 B 하위 클래스에서 새로운 기능을 추가하는 계층이다. 구현 클래스 계층 : A 인터페이스(API)를 구현한 B 객체가 존재할 경우 구현 클래스 계층이라고 한다. Abstraction(추상화) : 기능 클래스 계층의 상위 클래스로 기본 기능 정의만 한다. RefinedAbstraction(개선된 추상화) : 기능 클래스 계층의 하위 클래스로 기능을 추가한다. Implementor(구현자) : 구현 클래스 계층의 상위 클래스로 인터페이스 API를 규정한다. Concrete Implement..
[Design Pattern] Observer Pattern Observer Pattern 객체 사이에 1: N 의 종속성을 정의하고 한 객체의 상태가 변하면 종속된 다른 객체에 통보가 가고 자동으로 수정이 일어나게 하는 패턴이다. Subject(Observable) : 관찰되는 대상을 관리한다. ConcreteSubject : 구체 Subject를 표현하고, 상태 변경을 알려준다. Observer : 상태 변경을 전달 받는다. ConcreteObserver : 구체 Observer를 표현하고, 상태 변경 알림을 받는다. 언제 쓰면 좋을까? 한 객체의 상태가 다른 객체의 변화를 요구하는 경우에 사용한다. 즉 A 유투버가 새로운 영상을 올렸을 때, A를 구독하는 구독자들에게 알람을 줘야하는 상황과 비슷한 맥락에서 사용하면 좋다. 예시 코드 천재 개발자 Addison..
[Design Pattern] Prototype Pattern Prototype Pattern ? 생성할 객체들의 타입이 프로토타입인 인스턴스로부터 결정되도록 하는 패턴으로 인스턴스는 새 객체를 만들기 위해 자신을 복제한다. Prototype : 인스턴스를 복사하여 새로운 인스턴스를 만들기 위한 메소드를 결정하는 역할을 한다. ConcretePrototype : 인스턴스를 복사해서 새로운 인스턴스를 만드는 메소드를 실제로 구현하는 역할을 한다. Client : 인스턴스 복사 메소드를 사용해서 새로운 인스턴스를 만드는 역할을 한다. 언제 쓰면 좋을까? 객체를 만들 때 new 키워드를 사용해서 만들 수 있지만, new 키워드는 비용이 크다. 그래서 객체 생성비용이 클 경우에 사용하면 좋다. (ex. db 에서 데이터를 가져와서 객체 생성 후 또 똑같은 객체가 필요할 때..
백준 1655 가운데를 말해요 문제 https://www.acmicpc.net/problem/1655 1655번: 가운데를 말해요 첫째 줄에는 수빈이가 외치는 정수의 개수 N이 주어진다. N은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수이다. 그 다음 N줄에 걸쳐서 수빈이가 외치는 정수가 차례대로 주어진다. 정수는 -1 www.acmicpc.net 아이디어 처음에 접근법을 모르겠어서 인터넷에서 문제풀이 참고하여 풀었다. 만약 수빈이가 동생에게 1, 20, 9, 100, 30, 50 을 순서대로 외쳤다면 동생은 1, 1, 9, 9, 20, 20 을 차례대로 말했을 것이다. 그 다음 수빈이가 25를 말하면 동생이 25를 말할 것이다. 25는 지금까지 나온 수의 가운데 수이다. 25가 가운데 수인걸 어떻게하면 알 수 있을까?..
[Design Pattern] 디자인 패턴 23 가지 디자인 패턴이란 디자인 패턴의 저명한 인사들이 내린 정의로, 소프트웨어를 설계할 때 자주 사용되는 패턴을 정형화한 것 이라고 할 수 있다. GoF : 특정한 상황에서 일반적 설계문제를 해결하기 위해 상호교류하는 수정 가능한 객체와 클래스들에 대한 설명. 라만(C. Larman) : 숙련된 객체지향 개발자 및 기타 소프트웨어 개발자는 소프트웨어 개발의 가이드라인이 되는 일반적인 원칙들과 관용적인 해결책들의 레퍼토리(repertorie)를 구축한다. 패턴은 이러한 원칙들과 관용적 해결책들이 문제와 해결책을 기술하는 구조적인 형태로 체계화되고 명명된 것. GoF의 디자인 패턴에서는 객체지향 디자인 패턴을 생성 패턴(Creational Patterns), 구조 패턴(Structural Patterns), 행동 ..
[Java] Java OOP(Object-Oriented Programming) 란 객체지향 프로그래밍 객체지향 프로그래밍은 컴퓨터 프로그래밍의 패러다임 중 하나로, 여래 개의 독립된 단위인 객체들로 프로그램을 구성하는 것이다. 객체는 작은 기능을 수행하고, 객체는 객체끼리 서로 협력하는 관계를 가진다. 즉 프로그램의 일을 잘게 나눈다음 객체에게 위임하고 객체끼리 서로 협력하게 만드는 것이라고 할 수 있다. 타입으로 객체를 구분할 수 있으며, 객체와 클래스가 가지는 차이는 아래와 같다. - 클래스 : 객체를 생성하기위해 속성과 행의를 변수와 메서드로 정의한 것을 의미한다. - 객체 (인스턴스) : 클래스를 실제 메모리상에 할당하고, 실제 프로그램에서 사용되는 데이터를 의미한다. 객체지향 특성 캡슐화 (Encapsulation) 캡슐화는 객체에 필요한 데이터나 기능을 책임이 있는 객체에 ..