본문 바로가기

전체 글

(401)
Unable to determine Dialect without JDBC metadata (please set 'javax.persistence.jdbc.url', 'hibernate.connection.url', or 'hibernate.dialect' 인용: https://velog.io/@baekgom/please-set-javax.persistence.jdbc.url-hibernate.connection.url-or-hibernate.dialect 스프링부트에서 DB연결시 이와 같은 문구(org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Unable to create requested service [or..
어댑터 패턴 어댑터 패턴이란 매우 간단한 패턴이다. 기존에 있는(adaptee)것을 클라이언트 자신이 원하는 방식으로 사용해 주기 위해서 자신이 원하는 방식을 인터페이스로 만들어주고 새로운 클래스를 하나 만들어 그 클래스가 자신이 원하는 인터페이스를 implement해주고 기존에 있는 것을 has-a로 넣어 주는 것이 어댑터 패턴이다. 클라이언트가 adaptee(A)를 자기가 원하는 B타입으로 사용할 수 있게 해주는 것입니다. 여기서 이미 제공되어 있는것(A)의 메서드 이름과 매개변수가 필요한 것(B)의 그것과 다를 수 있다. 이 다른것을 맞추어 주기 위해 어댑터 패턴을 쓰는 것임. 아… 이제 이해가 간다. 이미 있는 것을 자신이 원하는 방식대로 쓸 수 있게 해주기 위해서 자신이 원하는 방식을 인터페이스로 여기고 구..
내부 클래스의 접근제어의 의미를 예시와 함께 내부클래스의 접근 권한은 내부클래스를 다른 클래스가 사용할 때나 의미가 있음. 예를들어 아래 그림의 왼쪽은 BST클래스 파일이고 그 안에 TreeNode라는 내부클래스를 두었다. 오른쪽은 BST_Inorder_Iterator클래스이고 이 클래스에서는 BST클래스의 내부클래스인 TreeNode클래스를 사용한다. 이렇게 되었을때 타클래스인 BST_Inorder_Iterator클래스에서 다른 클래스의 내부클래스인 TreeNode에 접근할 때에는 BST.TreeNode와 같이 점찍고 접근해야 하는 것이다. 그리고 만약 내부 클래스인 TreeNode의 접근제한을 private으로 해 놓는다면 TreeNode의 외부클래스인 BST에서는 아무문제가 없겠지만 타클래스인 BST_Inorder_Iterator에서는 내부 ..
언제 내부 클래스를 써야 적당한가? 내부 클래스 복습:내부 클래스는 언제 만드는 것이 적절한가? 내부 클래스가 매우 간단하게 이루어지고 외부클래스에서만 내부클래스가 될 클래스를 사용할 경우(캡슐화, 은닉성을 얻을 수 있음). 즉 다른 클래스에서는 내부클래스가 될 클래스를 사용하지 않을때. 내부 클래스는 외부 클래스의 맴버변수처럼 사용된다. 따라서 내부 클래스에서 외부클래스의 맴버변수에 자유롭게 접근할 수 있다. 하지만 외부클래스에서는 내부클래스의 객체를 만들어야 내부클래스의 변수에 접근해야 한다. 그리고 이건 당연한 것이다. 왜? 내부 클래스는 클래스니까! 클래스안의 멤버에 접근하려면 당연히 객체를 생성하는게 맞는 거니까! 내부클래스를 사용함으로써 코드의 복잡성을 줄일수 있음. 왜? 클래스 하나를 통째로 없애는 것이므로. 없애서 다른 하나..
(자바 표현법) 반복자(Iterator)를 갖는 범용자료구조의 구현 (반복자패턴 관련자료 중에서) 반복자(Iterator)를 갖는 범용자료구조 구현 코드 /* 반복자(Iterator)를 갖는 범용자료구조 구현 코드 -범용자료구조의 반복자를 구현하려면 해당범용자료구조는 Iterable인터페이스를 구현해야함. -Iterable인터페이스를 구현해야 한다는 것은 iterator()메서드를 구현한다는 것 (public Iterator iterator(){} ) -내가 반복자를 구현할 일이 있을까? 없을 것이다. 범용자료구조도 만들일이 없을것이다. 하지만 구현방식만 기록해 놓자면 아래와 같이 반환값으로 ArrayListIterator를 반환하고 이 반복자는 hasNext와 next를 구현한, 즉, Iterator인터페이스를 구현한 클래스이다. */ import java.util.I..
반복자 패턴중 자바에서 범용 자료구조 구현시 겪게 되는 어려움 코드의 중심내용은 자바에서 범용 자료구조를 만들때 겪게 되는 번거로움에 대한 것임. 왜 범용 자료구조를 반복자 패턴단원에서 설명하나? 반복자는 자료구조와 분리할 수 없는 것이므로! 자바에서 범용리스트 구현시 그 안에 배열을 사용한다고 하면 범용배열, 이를태면 T[ ]list=new T[capacity];이런 식으로 만들수 없고 항상 Object를 사용한 Object배열을 만들수 밖에 없습니다. 이것은 자바의 템플릿 사용 규칙 때문인데 이러한 템플릿 사용 규칙때문에 반복자뿐만이 아니라 여러가지 다른것을 사용할 때 문제점이 있습니다(하지만 배포된 교수의 코드는 강제형변환을 통해서 T배열을 사용함). 또한 템플릿T가 불변객체가 아닌 수정 가능한 객체일때 반환 받은 것을 수정하면 원본인 items배열에도 영향을..
백준(BOJ) 20546: 🐜 기적의 매매법 🐜 https://www.acmicpc.net/problem/20546 한번에 맞긴 했지만 문제 난이도를 생각할때 시간이 너무 오래 걸렸다. 뭔가 solution함수가 분기문이 많아 지저분한 느낌이 든다. 다른 코드는 어떤지 살펴보자. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; public class Main{ static int solution1(int asset, int[]price){ int myStock=0; for(var p:price){ if(asset/p>0) { int num= (asset / p); asset-=(num*p);..
백준(BOJ) 20056: 마법사 상어와 파이어볼 https://www.acmicpc.net/problem/20056 출처: https://tussle.tistory.com/985 https://developer-u.tistory.com/101 접근 방법 이 문제에 핵심 1. 1번행과 N번 행은 연결, 1번열과 N번 열은 연결되어있습니다. 2. 마법사 상어는 문제의 조건에 맞게 파이어볼을 발사합니다. 3. K번 이동 명령을 진행한 후, 남아있는 파이어볼 질량의 합을 결과로 출력합니다. 알고리즘 진행 순서. 1. 입력된 정보를 저장합니다. 2. K번 이동명령을 진행합니다. 3. 남아있는 파이어볼 질량의 합을 결과로 출력합니다. 파이어볼 이동명령 1번행과 N번 행은 연결, 1번열과 N번열은 연결? ※처음에 이 문장에 대해서 이해하지 못하였지만 예제입력을 시..