public class JoinMainV3 { public static void main(String[] args) throws InterruptedException { log("Start"); SumTask task1 = new SumTask(1, 50); SumTask task2 = new SumTask(51, 100); Thread thread1 = new Thread(task1, "thread-1"); Thread thread2 = new Thread(task2, "thread-2"); thread1.start(); thread2.start(); // 스레드가 종료될 때 까지 대기 log("join() - main 스레드 대기 시작"); thread1.join(); thread2.join(); log("main 스레드 대기 완료"); log("task1.result = " + task1.result); log("task2.result = " + task2.result); int sumAll = task1.result + task2.result; log("task1 + task2 = "+ sumAll); log("End"); } static class SumTask implements Runnable { int startValue; int endValue; int result = 0; public SumTask(int startValue, int endValue) { this.startValue = startValue; this.endValue = endValue; } @Override public void run() { log("작업 시작"); sleep(2000); int sum = 0; for (int i = startValue; i <= endValue; i++) { sum += i; } result = sum; log("작업 완료 result = " + result); } } } 안녕하세요. 위 코드는 강의실습에 사용된 코드입니다. 개인적으로 thread1.join(), thread2.join() 에 대해 main쓰레드가 WAITING 상태인지를 확인하고 싶어 아래와 같이 코드 중간 중간에 상태를 체크해봤습니다. log("main 쓰레드 상태: " + Thread.currentThread().getState()); thread1.join(); log("main 쓰레드 상태: " + Thread.currentThread().getState()); thread2.join(); log("main 쓰레드 상태: " + Thread.currentThread().getState()); 결과는 모두 RUNNABLE로 나타나는데요. sleep시간을 늘려봐도 여전히 RUNNABLE상태가 나옵니다. 코드의 어떤 부분을 수정해야지 WAITING상태를 확인할 수 있는지 궁금합니다~!
1-7. 4:30 에서 N*N이 아닌이유가 뭔가요? 갑자기 26을 상수취급하는 이유를 모르겠어요.. 1-6에서는 N*N이었던 것 같은데요... 1. 현재 학습 진도 몇 챕터/몇 강을 수강 중이신가요? 어떤 알고리즘을 학습하고 계신가요? 여기까지 이해하신 내용은 무엇인가요? 2. 어려움을 겪는 부분 어느 부분에서 막히셨나요? 코드의 어떤 로직이 이해가 안 되시나요? 어떤 개념이 헷갈리시나요? 3. 시도해보신 내용 문제 해결을 위해 어떤 시도를 해보셨나요? 에러가 발생했다면 어떤 에러인가요? 현재 작성하신 코드를 공유해주세요 이렇게 구체적으로 알려주시면, 더 정확하고 도움이 되는 답변을 드릴 수 있습니다! 😊
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. import관련해서 문제가 생겼습니다.. jakarta는 아예 안됩니다.
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 현재 회원 엔티티 시점 Member(회원) 1 : N Pet(반려견) 일대다 관계인 상태입니다. -Member(회원) 엔티티 -Pet(반려견) 엔티티 연관관계 설정해 둔 모습입니다. -이게 문제가 되고 있는 서비스 로직입니다. MemberRepository에서 회원의 role(역할)을 찾은 후, role(역할)이 CUSTOMER(고객)인 경우 해당 회원의 정보와 갖고 있는 List<>형태의 pet을 한 번에 갖고 와서 DTO로 변환 해서 반환하려고 합니다. 실제로 어떻게 리포지토리에서 조회하고 있는지 보여드리겠습니다. -role(역할)이 CUSTOMER(고객)인 경우 findByCustomerId()로 위와 같이 회원과 pet을 한 번에 조회하고 있습니다. (실제 쿼리문이 나가는 것을 봤을 때도 fetch join 쿼리로 나가서 pet이 프록시가 아닌 실 객체 데이터로 조회되는 것을 확인했고, 디버깅도 해봤는데 pet 컬렉션에 데이터가 있는 것도 확인했습니다.) 다음으로 member 엔티티를 DTO로 어떻게 반환하는 지 보여드리겠습니다. -Pet(반려견)을 PetResponse라는 DTO로 다시 바꿔서 반환 시켜주려고 하고 있는 상황이고 -이게 PetResponse 입니다. 여기까지가 현재 저의 문제가 되고 있는 코드와 동작 방식입니다. 현재 뜨고 있는 오류는 lazyinitializationexception 에러가 발생하고 있습니다. 알아보니 트랜잭션 주기 안에서 컬렉션을 조회하는 것이 아니라, 하이버네이트 세션이 끝난 후 영속성 컨텍스트가 사라진 상태에서 엔티티가 갖고 있는 컬렉션(pets)을 조회하게 돼서, 트랜잭션 내에 존재한 영속성 컨텍스트 내의 pets를 조회하는 것이 아닌 새로운 영속성 컨텍스트에서 조회를 하게 돼버려서 실 객체 데이터가 조회되는 것이 아닌 프록시 객체가 조회가 되고 있다는 내용으로 이해했습니다. 그래서 제가 여태 해본 방법으로는, 서비스 레벨의 findById(long id) 메서드에서 member 정보만 따로 조회하고 pet만을 따로 각각 조회한 후 dto로 반환 해보기 (예: memberRepository.findByid()로 회원만 조회, petRepository.findbyCustomerId()로 pet만 따로 조회 후, new MemberResponse.GetCustomer()로 반환 -> 안됨.(X) 현재 메서드 레벨 위에 작성되어 있는 트랜잭션 어노테이션이 readOnly = true로 읽기 전용이면 pets를 초기화 할 수도 없을 수 있다길래 readOnly = true 옵션도 빼 보기 -> 안됨.(X) yml 설정 파일에 spring: jpa: open-in-view: true 옵션 설정 해보기 -> 안됨.(X) Member(회원) 엔티티에 읽기 전용으로 있는 List<> pets를 지연 로딩이 아닌 즉시로딩으로 바꾸기. -> 이 경우에만 됨.(O) Hibernate.initialize(member.getPets()); 을 사용해서 컬렉션 강제 초기화 하기 -> 안됨.(X) 현재 이렇게 까지 시도해 봤고 pets를 즉시 로딩으로 바꾸는 경우 말고는 아예 되지 않는 상황입니다. 보통 저와 같은 경우 간단하게 해결되는 문제던데 스택오버플로우와 구글의 힘을 빌려 검색해서 시도해 본 결과 해결되지 않았습니다.. 제가 어떤 실수를 하고 있는지, 뭐가 문제인지 봐주시면 감사하겠습니다.!! 추가 설명이 필요하거나 깃허브 주소라도 필요하면 댓글로 남기겠습니다!
안녕하세요 I/O 흐름을 제가 제대로 이해했는지 궁금합니다... I/O class : byte class / String class 로 나뉨 byte class output 위주로 정리 기본스트림(FileOutputStream)을 사용하여 1byte씩 loop를 사용해서 쓰기 byte array 사용하여 배열 사이즈 만큼 쓰기 보조스트림(BufferedOutputStream)을 사용하여 쓰기 String class 기본스트림(FileOutputStream) 과 String.getBytes(charset)을 사용하여 직접 인코딩하여 쓰기 보조스트림(OutputStreamWriter : 인코딩 대신 처리)사용하여 쓰기 FileWriter(FileOutputStream을 내부에서 생성 / OutputStreamWriter 상속) 사용하여 쓰기 질문1) 위의 흐름이 맞을까요? 질문2) String class 는 인코딩을 해야하지만 byte class 인코딩을 하지 않는다. 두가지 질문이 맞을까요?
학습 관련 질문을 최대한 상세히 남겨주세요! 고민 과정도 같이 나열해주셔도 좋습니다. 먼저 유사한 질문이 있었는지 검색해보세요. 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. Comment 엔티티 생성시 연관관계를 Long articleId로 해줌으로써 Article 엔티티와 연관관계를 맺어준것일까요? Article과 Comment는 1:N 관계로 보이는데, comment 테이블 설계 당시 Article에 대한 외래키 관리를 comment 테이블에서 안해준 이유도 궁금합니다.
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! 질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요 먼저 유사한 질문이 있었는지 검색해보세요 이전 질문을 다시 드립니다. 질문과는 이질적인 답변이 올라와서 질문을 정확히 전달하기 위해 이미지로 정리하였습니다. 확인 요청에 대한 답변을 부탁 드립니다. 아울러 아래는 실제 강의 내용입니다. 부산에서 알려진 찍먹 비율이 60%정도고 부먹이 40%정도라고 알려져 있다라고 하구요, 수원에서 관찰을 했어요. 찍먹이 1, 부먹이 2라고 하겠다. 수원데이터가 찍먹 1,1,2,2,1 이런 식으로 데이터 값이 나오겠죠. 수원에서 관찰된 데이터가 관찰값이고 부산에 %가 기대도수, 기댓값이다. 나온 관찰값과 기대도수를 카이제곱함수에 넣어주면 끝나는 거다. scipy에 stats모듈이 있고 여기에 카이제곱이 있다. 첫 번째 파라미터가 관찰된 빈도리스트고 두 번째 파라미터가 기대빈도 리스트다. 빈도로 넣어주셔야 한다. 이게 가장 중요하다. -> (관찰된 빈도 리스트[ ], 기대빈도 리스트[ ]) 수원은 카운터 하면 된다. 1이 3개, 2가 2개 즉[3,2] 이렇게 카운터 하면 된다. 기대빈도리스트. 그러니까 지금 퍼센트(%)로 되어 있는데 실수로 퍼센트(%) 그대로 넣는 분들이 계시거든요. 0.6이 있고 0.4가 있다. 이것을 빈도로 변경해줘야 한다. 그래서 수원의 총 개수를 구하고 5개네요. 5씩 곱해주면 된다. [0.6*5, 0.4*5] 이렇게 리스트를 만들고 카이제곱검정에다가 첫 번째 관찰된 빈도리스트 수원값을 넣고, 두 번째 기대빈도 리스트에 부산 데이터를 넣어주면 끝나는 거다. -> 관찰된빈도리스트[수원값], 기대빈도리스트[부산값] 이렇게 실행하면 검정통계량 값과 p벨류 값을 구할 수 있다.
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! 질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요 먼저 유사한 질문이 있었는지 검색해보세요 작업형3의 범주형 데이터 분석(카이제곱 검정)의 적합도검정 설명에서 질문 드립니다.(2분 38초) 문제풀이에 대해 질문드립니다. 문제를 풀기 위해서는 부산의 기대도수가 제시되어야 하지 않나요? 찍먹과 부먹의 비율로 부산 0.6, 0.4이고 수원의 기대도수는 1,1,2,2,1 이라고 했을 때 [3, 2] 부산의 기대도수가 제시되지 않은 상태에서 수원의 기대도수 5를 부산에 그대로 대입하였는데 이는 기대도수는 관찰하려는 도시(부산,수원)을 동일하게 맞췄기 때문인건가요. 왜냐하면 문제에서는 공교롭게도 부산의 60%, 40% -> 3:2비율과 수원의 60%, 40%->3:2비율이 동일하기 때문입니다. 즉, 수원이 5면 부산도 동일한 조건으로 해야 한다는 가정을 두는 것인가요? 부산에 경우 기대도수가 일반적으로 타 지역인 수원과 동일하지는 않습니다. 부산은 1,1,1,1,2처럼 수원과 다르게 나올 수 있습니다. 그럼 4, 1이 되니 총개수 5로 곱하면 [0.8*5=4, 0.2*5=1]이 되어 부산[3,2]과 수원[4,1]의 빈도는 차이가 납니다. 하지만, 문제에서는 결과가 동일하게 나왔던데요 이처럼 뒷 부분을 이해하지 못했습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요?예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] Class clazz = String . class ; // 1. 클래스에서 조회 Class helloClass = Hello.class; 위 방식으로 클래스를 조회하는것을 보면 각각의 클래스에 Class라는 static변수에 접근하는 것으로 보이는데 이는 컴파일 시 모든 클래스들에 직접 입력하지 않아도 Class라는 static변수(private static Class class)가 자동으로 생성되기 때문인가요?
공간복잡도가 N인 경우는 큰 차이가 없다고 이해했습니다. 예제 코드에서도 29, 30 처럼 N인 경우를 확인하였습니다. 그렇다면 공간복잡도가 N^2인 경우는 어떤 예제 코드가 될 수 있을까요?? 시간복잡도는 이해가 갔는데(ex. 이중for문) 공간복잡도가 N^2인 경우는 어떻게 되는지 궁금합니다!
연관관계 매핑: 객체의 참조와 테이블의 외래키를 매핑하고, 객체간의 관계(다대일관계)와 테이블간의 관계(외래키-기본키관계)를 매핑하는것. 객체간의 관계에서는 Member객체는 team필드를 통해 Team객체를 참조한다. 테이블간의 관계에서는 MEMBER테이블의 외래키(TEAM_ID)를 통해 TEAM테이블을 참조한다. 이렇게 객체와 테이블은 구조적으로 다르기 떄문에 객체간의 관계와 테이블간의 관계를 동일하게 해주기 위해 연관관계 매핑이 필요하다. team필드를 통해 Team객체를 참조하던것을 외래키(TEAM_ID)를 통해 기본키(id)를 참조하도록 변경한것이라고 생각하면된다. 이렇게 이해하고 정리해봤는데 이게 맞을까요?
1. intelliJ java file outside of source root 에러가 뜹니다 Snowflake 강의를 듣다가 질문이 생겨서 질문올립니다. 강의자료에 있는 Snowflake 자료를 복사 붙여넣기 하다가 intelliJ java file outside of source root 에러가 뜹니다. 아래와 같이 시도를 해보았습니다. https://stackoverflow.com/questions/63521181/java-file-outside-of-source-root-intellij 이싸이트에 나와있는 IntelliJ의 오른쪽 도구 모음에서 "gradle"을 클릭한 다음 새로 고침 버튼을 클릭합니다. File > Project Structure > Modules > Sources 그리고 Java 파일 디렉토리를 소스로 표시를 변경하라고 나옴. 이 방법 시도 하지만 common->src로 변경했더니 IntelliJ IDEA에서 동일한 resources 디렉터리가 두 개의 모듈에서 중복으로 설정되어 있을 때 발생 하는 문제가 생겨 적용 불가능 현재 프로젝트 close하고 다시 open함. java버전과 스프링부트 버전 확인 build.gradle에서 버전 확인 위와 같이 해결방법을 모색해봤는데 해결방법을 모르겠습니다. 프로젝트 파일 첨부합니다.
학습 관련 질문을 최대한 상세히 남겨주세요! 고민 과정도 같이 나열해주셔도 좋습니다. 먼저 유사한 질문이 있었는지 검색해보세요. 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 갑자기 페이징 쿼리 설명하다가 다음 강의에서 무한 스크롤에 대한 설명을 하시는데요. 1.이는 분산환경에서의 페이징 쿼리시의 단점을 보완하기 위한 방법으로 무한 스크롤을 설명하시는건가요?? 2.아니면 단순 무한 스크롤의 장점에 대해서 설명하시는건가요?? 3.아니면 분산 환경에서의 페이징 쿼리의 단점으로 인해 분산 환경에서는 무한 스크롤 방식을 선호한다는 것 일까요?? 저는 SpringDataJPA를 사용하여 페이징과 Slice를 구현해본적이 있는데 해당 기능이라던가 QueryDSL과 같은 기능을 사용하지 않고 네이티브 쿼리를 사용하는 이유는 무엇일까요??