순환참조란?두 개 이상의 객체가 서로를 참조하여 끊을 수 없는 고리를 만드는 상황이다. 가비지 컬렉터 (Garbage Collector) 가 더 이상 사용되지 않는 객체라고 판단하지 못해서 메모리에서 해제하지 못하는 문제가 발생할 수 있다. 결국, 메모리 누수로 이어질 수 있다.주로 객체들이 서로를 필요로 하는 복잡한 관계를 가질 때 발생한다. Spring Bean 생성 메커니즘Spring IoC 컨테이너는 Bean 을 생성하고 관리하기 위해 체계적인 단계가 있다. 순환 참조는 이 과정에서 두 개 이상의 Bean 이 서로의 생성을 기다리며 무한 대기 상태에 빠질 때 발생한다. Bean 의 생성 과정 1. 정의(Definition)가장 먼저, Spring 컨테이너는 Bean을 어떻게 만들어야 하는지에 대..
빌드를 실행하는데 자꾸 entityManagerFactory 오류가 발생했다. 억울한게, Entity 추가한 것도 없고 나는 그저 순박하게 Dto 만 추가했을 뿐이라구 .... 그리고 추가한 코드를 전부 주석처리하고 실행해도 계속 에러가 발생했다.Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Unsatisfied dependency expressed through method 'entityManagerFactory' parameter 0: Error crea..
breakbreak문은 자신이 포함된 가장 가까운 반복문을 벗어난다. 주로 if 문과 함께 사용되어 특정 조건을 만족하면 반복문을 벗어나도록 한다. continue반복이 진행되는 도중에 continue 문을 만나면 반복문의 끝으로 이동하여 다음 반복으로 넘어간다. For 문의 경우 증감식으로, while문과 do - while 문의 경우 조건식으로 이동한다. break 과 continue 의 차이continue 문은 반복문 전체를 벗어나지 않고 다음 반복을 계속 수행한다는 점이 break 문과 차이가 있다. public class BreakContinueExample { public static void main(String[] args) { System.out.println("..
난수를 얻기 위해서는 Math.random() 을 이용해야 한다.이 메서드는 0.0과 1.0 사이의 범위에 속하는 하나의 double 값을 반환한다. 0.0 ex) 1과 3 사이의 정수를 구하길 원한다면, 1. 각 변에 3을 곱한다.0.0 * 3 2. 각 변을 int 형으로 반한다.(int) 0.0 3. 각 변에 1을 더한다.0 + 1 위와 같이 식을 변환해가며 값의 범위를 조절하면 된다.
BufferedReaderBufferedReader 은 Scanner 과 같은 기능이다. 다만 속도 측면에서 훨씬 빨라 속도가 중요한 알고리즘에서 필수적으로 사용된다.작성해야 할 코드는 더 많지만 시간과 메모리 측면에서 훨씬 효율이 좋다. BufferedReader 사용법BufferedReader 의 인스턴스를 생성해준다. 아래와 같이 생성해주면 된다.BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 그리고 readLine을 이용해 String으로만 값을 받아온다.String a = br.readLine(); // String Enter 줄마다 값으로 인식해, 여러개의 값이 한 줄에 있을 경우 StringTokeniz..
사용 기술JavaMavenSpring BootLocal Reids 설치Mac 의 Local 환경에서 설치해서 아래 블로그의 도움을 받았습니다.https://herojoon-dev.tistory.com/170 Mac에서 Redis(레디스) 설치하기목표 Mac OS에서 Redis 설치하기 Mac OS에서 Redis 실행 Redis 실행 상태 확인 Redis CLI를 이용해서 Redis 사용해보기 해보기 1. Mac OS에서 Redis 설치 // Homebrew(Mac OS용 패키지 관리자) 설치 여부 확인 brew --versioherojoon-dev.tistory.com 코드 구현pom.xmlDependency '' not found 에러 해결법은 아래 글처럼 해결했습니다.https://skylarc..
환경Java, Spring Boot, Maven, Mybatis, Redis Redis 설치하기나의 경우 맥북이어서 아래 블로그의 도움을 받았다.https://herojoon-dev.tistory.com/170 필요한 코드는 많지 않다.brew install redis // redis 설치brew services start redis // redis 실행brew services stop redis // redis 종료 Redis 포트번호 확인 Redis 환경설정 (RedisConfig.java)redisConnectionFactory() redisConnectionFactory() 메서드에서는 Redis 서버 연결 정보만 설정한다. 실제 통신은 진행하지 않는다.1. RedisStandalongCo..
Dependency not found 가 발생하는 에러이다. 버전도 바꿔보고, parent dependency 버전도 바꿔봤지만 해결하지 못했다. 열심히 검색하다 Maven project 자체를 업데이트 해보라는 글을 발견했다.먼저 Reload Project 가 있길래 해당 작업을 진행했다. 그랬더니 바로 해결...! 나의 경우 버전문제인가 싶어 미리 버전을 다 찾아서 맞춰놓았다. 때문에, 이걸로도 안된다면 아래 MvnRepository 사이트에서 현재에 맞는 버전으로 입력하자. https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-redis 참고https://stackoverflow.com/q..
for-each 루프 설명for-each 루프는 배열이나 컬렉션의 모든 요소를 순회할 때 사용하는 문법이다.인덱스를 직접 관리할 필요가 없어 코드가 간결해지고 가독성이 높아진다.배열 뿐만 아니라 다양한 자바 컬렉션 타입 (ArrayList, Hash 등)에서도 사용할 수 있다. for(데이터타입 변수명 : 배열/컬렉션) { // 변수명을 사용하여 각 요소 처리} 예시int num 은 배열 numbers 의 각 요소를 가리키는 변수이다. 루프가 실행될 때마다 num 에 다음 요소가 할당된다. int[] numbers = {1, 2, 3, 4, 5};for (int num : numbers) { System.out.println(num); // 출력: 1 2 3 4 5} ArrayList 에서 사용하..