목록Language/Java (6)
miinsun
기상 스테이션은 온도, 습도, 기압의 정보를 구독 신청을 한 디바이스에 제공한다. 이때, 모든 디바이스는 매번 온도, 습도, 기압에 변화가 생길 때 마다 정보를 제공받을 수 있어야한다. 만약 고객이 해지를 원한다면 정보를 계속 받지 않을 수 있다. 옵저버 패턴 위와 같은 기능은 옵저버 패턴의 기본 기능들로 이뤄져있다. 옵저버 패턴은 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체에게 연락이 가고 자동으로 내용이 갱신되는 방식으로 일대다 의존성을 정의한다. 옵저버 패턴에서는 정보를 제공하는 객체는 "주제"라고 하며, 정보를 제공받는 객체는 "옵저버"라 한다. 옵저버 패턴은 일련의 객체 사이에서 일대다 관계를 정의한다. (1:주제, M:옵저버) 옵저버는 주제에 딸려 있으며 주제의 상태가 바뀌면 옵저버..
전략 패턴을 이용해 오리 시뮬레이션 게임을 만들어보자. 오리 시뮬레이션 게임은 다양한 오리들이 날아다니거나 꽥꽥 소리를 낼 수 있는 게임이다. 전략 패턴을 이용해서 가지각색의 오리들을 효율적으로 만들 수 있다. 각각의 오리들은 다음의 기능을 가진다. quack() - 꽥 꽥 울 수 있다. swim() - 수영할 수 있다. display() - 오리의 생김새를 표현한다. fly() - 오리는 날 수 있다. 상속으로 구현하기 만약 상속을 이용해 청둥오리와 고무 오리를 구현한다면 다음과 같을 것이다. 청둥오리는 display메서드를 오버라이드 했고, 고무 오리는 display, quack메서드를 오버라이드 했다. 고무 오리는 날지 않기 때문에 fly메서드가 필요하지 않다. 그렇지만, 슈퍼클래스에 있는 fly메..
자릿수가 아주 큰 수를 사용할 때, int, long의 자릿수로는 수를 표현할 수 없을 때 BigInteger를 사용한다, 1. BigInteger 선언 먼저 java.math.BigInteger 라이브러리를 임포트해준다. BigInteger를 선언할 때, 인자 값으로 문자열을 넘겨준다. import java.math.BigInteger; BigInteger num = new BigInteger("123456789000000"); 2. String to BigInteger ArrayList 를 사용할 때, String 값을 BigInteger로 넘겨 줘야한다 처음에는 String 값을 Long으로 형변환하고 다시 BigInteger로 바꿔서 오류가 발생했다. ArrayList arr = new Array..
자바 배열 채우는 방법 1) 1차원 배열 채우기 int[] arr = new int[10]; Arrays.fill(arr, -1); 2) 2차원 이상 배열 채우기 Arrays.fill 함수는 1차원 배열만 사용가능하기 때문에 2차원 이상의 배열은 따로 1차원 배열 값을 채워줘야 한다. int[][] arr = new int[10][10]; for(int[] tmp : arr) { Arrays.fill(tmp, -1); }
💻 실습 환경 Eclipse JDK 11 📌 원인 : domain의 생성자를 인식하지 못해서 생기는 에러 원래 있던 생성자에 @Builder 어노테이션이 있는데, 어째선지 스프링이 인식하지 못한다. 어쩔 수 없이 새로운 롬북으로 새로운 생성자를 만들어줬다. 📌 해결 방법 @NoArgsConstructor, @AllArgsConstructor 어노테이션 추가 package com.dalc.one.user; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; @Getter @Builder @NoArgsConstructor ..
💻 실습 환경 Eclipse JDK 8 📌 원인 : JDK를 인식하지 못해서 생기는 에러 ⭕ 에러 해결 jdk11을 설치하고, java build path를 수정하자 📌 해결 방법 jdk 11 설치 https://www.oracle.com/kr/java/technologies/javase/jdk11-archive-downloads.html 프로젝트 설정 변경 properties → Java Build Path → JRE System Library 에서 버전 선택 제대로 동작된다