본문 바로가기
반응형

IT/Java394

PriorityQueue 란? Queue 에 관해서는 이전 포스팅에서 몇번 다룬적이 있다. 자세한 내용은 아래 참고 포스팅 참고 바란다. 이번 포스팅에서는 우선순위 큐 라고 하는 PriorityQueue 에 대해서 작성해볼 것이다. 일단 우선 순위 큐 란. 큐와 동일하게 순서대로 들어는 오되 순서대로 나가는것이 아닌, 그 안에서 우선순위를 정하고 그 순서에 맞게 out 이 되는 queue이다. 자세한 내부적인 절차는, 우선순위 큐는 힙을 이용하여 구현이 된다. 데이터를 삽입할 때 우선순위를 기준으로 최대힙 혹은 최소 힙을 구성하고 데이터를 꺼낼 때 루트 노드를 얻어낸 뒤 루트 노드를 삭제할 때는 빈 루트 노드 위치에 맨 마지막 노드를 삽입한 후 아래로 내려가면서 적절한 자리를 찾아서 옮기는 방식으로 진행이 된다. 특징들은 아래와 같다.. 2023. 8. 4.
@PathVariable 에 대해서(23.08.03) 이전 포스팅 중에서 restapi에 대해서 다룬적이 있다. 자세한 내용은 아래 참고 포스팅을 참고 바란다. 결국 restapi 는 설정해둔 URL 주소로 request를 쏘게 되는데. 다양한 메서드들이 존재하고 데이터 전송하는 방법도 다양하다. 그중 Pathvariable 에 대해서 사용법을 적어두려고 한다. url로 값을 전송하면 보안적인 측면에서는 별로 좋지 않지만 상황에 따라 사용해야하는경우가 생긴다. 사용법은 아래와같다. 호출은 http://localhost:8080/test/url/1234 이런식으로 보내고 받는쪽 구현을 @RestController public class MemberController { @GetMapping("/test/url/{no}") public String findBy.. 2023. 8. 4.
Arrays 클래스 자바에서 기본 클래스 중 하나인 Arrays 클래스에 대해 자주 사용되는 함수들 몇가지 정리 하는 포스팅을 작성한다. Arrays는 set 이나 ArrayList와 같이 java.util 내에 존재한다. 지금 일단 작성 하고 추후에 추가적으로 설명하거나 하는것들이 있다면 계속해서 추가하는 포스팅이 될 예정이다. 함수명 사용법 결과 설명 sort String[] ab= {"A","C","B"}; for(String a : ab) System.out.println(a); System.out.println("+++++"); Arrays.sort(ab); for(String a : ab) System.out.println(a); A C B +++++ A B C 배열을 정렬 해준다. 역정렬은 Arrays.sort.. 2023. 8. 2.
배열의 부분복사(arraycopy, copyOfRange) (23.07.31) 이전 포스팅에서 배열 자체를 깊은 복사와 얕은 복사로 나뉘어서 카피하는 포스팅을 작성한적이 있다. 배열 자체를 복사하는 포스팅은 자세한 내용은 참고 포스팅 참고 바란다. 이번 포스팅에서는 배열의 일부분만 복사를 해오는 함수를 소개한다. 1. System 클래스의 arraycopy 2. Array 클래스의 copyOfRange 하나씩 사용법을 살펴보면 arraycopy int[] arrays = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; int[] test = new int[5]; System.arraycopy(arrays, 2, test, 0, 3); System.out.println(Arrays.toString(test)); 기본 문법은 System.arraycopy(A, B, C, D.. 2023. 8. 1.
Spring DL 이란?(Dependency Lookup) 이전 포스팅에서 스프링의 특징들에 대해 다룬적이 있다. AOP, DI 등 내용이었고 자세한 것은 아래 참고 포스팅 참고 바란다. 이번 포스팅에서는 비슷하지만 좀 다른 DL(Dependency Lookup) 에 대해서 다뤄보려고 한다. 약자만 봐도 대충 이해는 되겠지만 의미는 다음과 같다. 의존관계가 있는 객체를 외부에서 주입 받는 것이 아닌, 의존관계가 필요한 객체에서 직접 검색하는 방식 헷갈릴 수 있는 부분이 클라이언트 객체(의존관계가 필요한 객체)에서는 의존하고자 하는 인터페이스 타입만 지정해서 검색할 뿐 해당 인터페이스를 구현한 구체적인 클래스 객체에 대한 결정과 해당 객체에 대한 생명 주기는 IoC 컨테이너에서 책임진다. 결국 의존관계를 외부에서 주입이 아니라 직접 의존관계를 찾는것으로 DI 랑 .. 2023. 7. 30.
Spring prototype Bean Java Spring을 사용할 경우 Bean 을 Spring 위에 Singleton 으로 올리는것에 대해서는 이전 포스팅에서 다룬적이 있다. Singleton 에 대해서는 아래 참고 포스팅을 참고 바란다. 이번 포스팅에서 다룰 내용인 prototype이란. singleton은 여러번 호출이 되어도 하나의 주소를 반환한다고 한다면 이 prototype이란 요청시마다 객체가 생성이 되는 개념이라고 보면 된다. 그렇기에 당연히 무분별하게 사용하면 안되고 그럴경우엔 OutofMemory 등의 에러가 발생할수 있다. 허나 실제로 실무를 경험하다보면 거의 없지만 간혹 이 prototype을 사용해줘야하는 경우가 있을때도 있다. 그럴 경우에 대비하여 샘플 코드를 아래 작성 해둔다. bean을 생성할때 annotati.. 2023. 7. 29.
Spring 에서 Singleton singleton 패턴에 대해서는 아래 참고 포스팅을 참고 바란다. spring 에서의 기능중 하나는 의존성 주입인 DI 가 있다. 자세한 내용은 아래 참고 포스팅 참고바란다. 스프링에서는 컨테이너 위에 Bean이라고 하는 객체들을 생성한다. 그럼 개발자가 아닌 스프링에서 Bean을 대신해서 관리를 해준다. 여기서 Bean은 스프링위에 생성이 되는데, 호출이 될때마다 생성이 되는것이 아닌. Bean은 하나만 생성해두고, 호출이 될때마다 그 객체를 가져다 쓴다. 여러번 호출이 된다고 해서 객체가 여러개 생기는게 아니고 , 이것이 싱글톤이다. 간단히 코드로 예제를 살펴보면. @RestController @RequiredArgsConstructor public class TestController { priv.. 2023. 7. 28.
Queue (LinkedList) 사용법 이전 포스팅에서 stack, Queue 등에 대해서 다룬 글이 있다. 그리고 또 Message Queue도 다뤘고, 비슷한 kafka 역시 다룬적이 있다. 내용은 아래 참고 포스팅 참고 바란다. 이들의 공통점은 Queue 를 사용한다는 것이다. 그럼 이 Queue 를 자바에서 어떻게 사용하는지 다뤄볼 것이다. 선언 Queue q = new LinkedList(); 값 추가 q.add(1); q.offer(1); 둘의 차이는 아래와 같다. - add() 해당 큐 맨 뒤에 값 삽입 값 추가 성공 시 true 반환 큐가 꽉 찬 경우 IllegalStateException 에러 발생 - offer() 해당 큐 맨 뒤에 값 삽입 값 추가 성공 시 true 반환 값 추가 실패 시 false 반환 값 제거 q.rem.. 2023. 7. 26.
Consider marking one of the beans as @Primary, updating the consumer to accept multiple beans, or using @Qualifier to identify the bean that should be consumed spring 개발 할 시 제목과 같은 이 에러가 날 경우 해결법이다. Consider marking one of the beans as @Primary, updating the consumer to accept multiple beans, or using @Qualifier to identify the bean that should be consumed 그대로 번역기를 돌리면 아래와 같은 내용이다. 빈 중 하나를 @Primary로 표시하거나 여러 빈을 허용하도록 소비자를 업데이트하거나 소비해야 하는 빈을 식별하기 위해 @Qualifier를 사용하는 것을 고려하십시오. 그리고 이 에러도 중요하지만 바로 위에 함께 나왔을 에러도 봐줘야한다. Description: Parameter 0 of construct.. 2023. 7. 23.
반응형