안녕하세요, 널널한 개발자님! 이번 강의에서 clone(), Arrays.copyOf(), System.arraycopy()가 깊은 복사를 수행한다고 설명해주셨는데, 제가 알고 있는 바로는 이 기능들이 얕은 복사를 수행한다고 알고 있어 의문이 들어 질문드립니다:) 먼저 다음은 강의의 예제를 바탕으로 작성한 코드입니다. import java.util.Arrays; public class Test_1 { public static void main(String[] args) { int[] array1 = {10, 20, 30, 40, 50}; System.out.println("array1: " + Arrays.toString(array1)); //int[] array2 = array1; int[] array2 = array1.clone(); //int[] array2 = Arrays.copyOf(array1, array1.length); //int[] array2 = new int[5]; //System.arraycopy(array1, 0, array2, 0, array1.length); System.out.println("array2: " + Arrays.toString(array2)); System.out.println(); array1[0] = 100; System.out.println("array1[0] -> 100"); System.out.println("array1: " + Arrays.toString(array1)); System.out.println("array2: " + Arrays.toString(array2)); System.out.println(); array2[1] = 200; System.out.println("array2[1] -> 200"); System.out.println("array1: " + Arrays.toString(array1)); System.out.println("array2: " + Arrays.toString(array2)); } } 위 예시에서 강의에서 설명한 대로 clone(), Arrays.copyOf(), System.arraycopy()가 깊은 복사를 수행한다고 생각할 수 있지만 사실 int[]와 같은 값 타입에서는 이를 깊은 복사보다는 단순한 값 복사로 보는 것이 더 적절하다고 생각이 듭니다.(개인적인 생각입니다!) 다음은 참조 타입을 사용한 코드입니다. import java.util.Arrays; public class Test_2 { public static void main(String[] args) { Person[] array1 = { new Person("Hello"), new Person("Hi"), }; Person[] array2 = array1.clone(); //Person[] array2 = Arrays.copyOf(array1, array1.length); //Person[] array2 = new Person[2]; //System.arraycopy(array1, 0, array2, 0, array1.length); System.out.println(array1[0].name + ", " + array1[1].name); System.out.println(array2[0].name + ", " + array2[1].name); System.out.println(); array1[0].name = "Good"; System.out.println("array1[0].name = Good"); System.out.println(array1[0].name + ", " + array1[1].name); System.out.println(array2[0].name + ", " + array2[1].name); System.out.println(); array2[1].name = "Nice"; System.out.println("array2[1].name = Nice"); System.out.println(array1[0].name + ", " + array1[1].name); System.out.println(array2[0].name + ", " + array2[1].name); } } class Person { String name; Person(String name) { this.name = name; } } 참조 타입인 Person[] 배열을 사용했을 때 clone(), Arrays.copyOf(), System.arraycopy()가 얕은 복사를 수행하는 것을 확인할 수 있습니다. clone(), Arrays.copyOf(), System.arraycopy()와 같은 기능들이 값 타입 배열에서 깊은 복사처럼 동작한다고 생각할 수 있겠지만 단순한 값 복사라고 생각이 들며, 참조 타입 배열에서는 확실하게 얕은 복사를 수행합니다. clone(), Arrays.copyOf(), System.arraycopy()가 값 타입에 대해서만 깊은 복사를 수행한다고 할 수 있는지 이에 대해 좀 더 명확한 설명을 듣고 싶습니다:)
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 강의 마지막에 말씀하신 생성된 걸 그대로 쓰지 말라고 하셨는데 그러면 ddl-auto는 참고만 하고, DB 생성은 직접 하는 게 좋다는 의미인 거죠? 그리고 찾아보니 ddl-auto에 create-drop라는 것도 있던데, 강의에선 create로 하셨지만 create-drop을 하는 게 테이블 참고용으로는 더 편리하려나요?
18:26 본 문제의 case 문에서 switch 조건에 해당하는 숫자는 8이므로, case 8에서 작동을 하였는데, 밑에 있는 case 7, 6은 case8이 아닌데도 작동을 하는건가요? case 문의 위에서 작동하는게 한번 걸렸다면, 아래에는 break 등 제약을 거는게 없다면 모두 작동한다고 보면 되나요?
본 문제의 답변 쿼리문에 대한 질문 세 가지가 있습니다. 쿼리의 영문은 반드시 대문자로 작성해야 하나요? 실제 DBMS 작업에서는 소문자로도 작성하여도 작동하는데 문제가 없어서 문의드립니다. into 학생 (학번, 이름....) 부분에서 into 학생(학번, 이름....) 과 같이 학생과 괄호 부분에 띄어쓰기를 쓰지 않고 붙여써도 답으로 인정될지 궁금합니다. 마지막에 세미콜론(;)을 붙이지 않아도 정답이 될지 궁금합니다.
안녕하세요, 4분 17초에서 conn1.count(); 하면 count++가 되어 conn1에 있는 count는 1이 된다고 하였습니다. private int count; 라고 선언된 부분이 있는데, private인데 static도 없어서 클래스 외부에서 직접 접근할 수 없어 컴파일러 에러가 나지 않나요?
말그대로 입니다. 거의 마지막 강의에서 vercel 프론트엔드 앱에 들어가서 function의 리전을 서울이 아니라 도쿄로 바꾸고 배포했는데, 네트워크탭에 book/[id] 페이지의 문서의 X-Vercel-id는 icn1::~ 이 찍힙니다. 다만 index 페이지의 문서는 icn1::iad1::~~ 으로 찍히는데 그 이유가 무엇일까요? (리전은 도쿄로 하고 배포했습니다.) 또 icn은 인천의 약자인가요?
안녕하세요, (기출) 2023년 1회 코드해석 문제 중 29:16초 질문 있습니다. public Car(String Val)로 넣을 때, 앞서 부모 생성자를 거쳐야하는데, public Vehicle 이라고 되는 부분이 없어서 컴파일 오류 난다고 생각했습니다. 왜 컴파일 오류가 나지 않고 출력이 가능한건가요?
✅ 모든 질문들은 슬랙 채널에서 답변드리고 있습니다. 💡 ”로펀의 인프런 상담소” 슬랙 채널 가입하기 💡 평일중에는 퇴근 이후(저녁 7시)에 답변을 받아보실 수 있고, 주말중에는 상시 답변드리고 있습니다. 강의보고 todolist할때 컴포넌트 분리 안했던 것 같은데... dropbox (선택수강)UI구축에 보면 supabase-todo-list vscode에 컴포넌트폴더에 ui컴포넌트 들이 있네요... 혹시 추가 작업을 하셨던 것일까요??
안녕하세요 강사님. 양질의 강의 잘 듣고 있습니다. 다름이 아니라 클라이언트 컴포넌트와 서버 컴포넌트 개념 설명에서, "상호작용(Interaction)이 지속적으로 발생하는 컴포넌트는 클라이언트 컴포넌트로 작성해야 한다" 라고 이해했었습니다. 그런데 리뷰를 작성하는 기능 또한 상호작용이 지속적으로 발생하는 것이 아닌가 하는 의문이 들었습니다. 제가 이해를 잘 못 한 부분이 있는 걸까요? 아니면 서버 컴포넌트에서도 어느정도 상호작용을 처리할 수 있는건가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 서비스에서 조회가 필요할때 연관관계를 설정하여 객체를 통한 조회가 그냥 Bean의 Repository를 통해 조회하는것보다 실무에서 어떤 점이 좋은지 궁금합니다. 어차피 지연 로딩이면 저장소 조회가 낫지 않나 싶어서요 감사합니다
안녕하세요! 강의 잘 보고있습니다! 사전렌더링시에 해당 페이지에 대한 HTML과 JS bundle을 받고 수화 과정을 통해 상호작용을 하는 건 이해를 하였습니다! 궁금한점은 그럼 해당 페이지가 아닌 다른 페이지의 HTML과 Js파일들은 프리페칭 과정에서 받아 CSR방식으로 동작하는건가요??
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 강의 중 sleep(10) 코드를 넣고, 계산 속도가 너무 빨라서 , 다른 스레드와 동시 실행을 위해 잠깐 쉬었다가 실행을 한거라는데 이게 이해가 잘 안됩니다 제 생각엔 빨리 실행되어야 여러 스레드들이 동시에 공유변수 value에 접근해서 동시 실행될때가 많을 것 같은데, 왜 잠깐 쉬었다가 실행해야 더 충돌 횟수가 많아져서 result가 낮은 값이 나오는지 모르겠습니다. sleep(10)을 하면 실행 속도가 느려져서 오히려 경쟁 상태가 완화되어야하는거 아닌가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 여기에 질문 내용을 남겨주세요. 어떤 것이 문제인지 잘 모르겠습니다. springConfig도 정확히 입력했고 gradle파일과 properties파일도 정확히 작성했습니다. H2도 켜놓은 상태인데 오류가 나오네요. Member에 있는 데이터도 다 지웠고요. java.lang.IllegalStateException: Failed to load ApplicationContext for [WebMergedContextConfiguration@6108fd23 testClass = hello.hello_spring.service.MemberServiceIntegrationTest, locations = [], classes = [hello.hello_spring.HelloSpringApplication], contextInitializerClasses = [], activeProfiles = [], propertySourceDescriptors = [], propertySourceProperties = ["org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true"], contextCustomizers = [org.springframework.boot.test.autoconfigure.OnFailureConditionReportContextCustomizerFactory$OnFailureConditionReportContextCustomizer@6f204a1a, org.springframework.boot.test.autoconfigure.actuate.observability.ObservabilityContextCustomizerFactory$DisableObservabilityContextCustomizer@1f, org.springframework.boot.test.autoconfigure.properties .PropertyMappingContextCustomizer@0, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverContextCustomizer@7b4c50bc, org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@491b9b8, org.springframework.boot.test.json.DuplicateJsonObjectContextCustomizerFactory$DuplicateJsonObjectContextCustomizer@5a5a729f, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.web.client.TestRestTemplateContextCustomizer@1500b2f3, org.springframework.boot.test.web.reactor.netty.DisableReactorResourceFactoryGlobalResourcesContextCustomizerFactory$DisableReactorResourceFactoryGlobalResourcesContextCustomizerCustomizer@3aa078fd, org.springframework.test.context.support .DynamicPropertiesContextCustomizer@0, org.springframework.boot.test.context.SpringBootTestAnnotation@6e5c6e5c], resourceBasePath = "src/main/webapp", contextLoader = org.springframework.boot.test.context.SpringBootContextLoader, parent = null] at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:180) at org.springframework.test.context.support .DefaultTestContext.getApplicationContext(DefaultTestContext.java:130) at org.springframework.test.context.web.ServletTestExecutionListener.setUpRequestContextIfNecessary(ServletTestExecutionListener.java:200) at org.springframework.test.context.web.ServletTestExecutionListener.prepareTestInstance(ServletTestExecutionListener.java:139) at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:260) at org.springframework.test.context.junit.jupiter.SpringExtension.postProcessTestInstance(SpringExtension.java:160) at java.base/ java.util.stream .ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184) at java.base/ java.util.stream .ReferencePipeline$3$1.accept(ReferencePipeline.java:197) at java.base/ java.util.stream .ReferencePipeline$2$1.accept(ReferencePipeline.java:179) at java.base/ java.util.stream .ReferencePipeline$3$1.accept(ReferencePipeline.java:197) at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1708) at java.base/ java.util.stream .AbstractPipeline.copyInto(AbstractPipeline.java:509) at java.base/ java.util.stream .AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) at java.base/ java.util.stream .ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151) at java.base/ java.util.stream .ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174) at java.base/ java.util.stream .AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.base/ java.util.stream .ReferencePipeline.forEach(ReferencePipeline.java:596) at java.base/java.util.Optional.orElseGet(Optional.java:364) at java.base/java.util.ArrayList.forEach(ArrayList.java:1596) at java.base/java.util.ArrayList.forEach(ArrayList.java:1596) Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'memberController' defined in file [C:\Users\deukr\hello-spring\hello-spring\out\production\classes\hello\hello_spring\controller\MemberController.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'springConfig' defined in file [C:\Users\deukr\hello-spring\hello-spring\out\production\classes\hello\hello_spring\SpringConfig.class]: Unsatisfied dependency expressed through constructor parameter 0: No qualifying bean of type 'hello.hello_spring.repository.MemberRepository' available: expected single matching bean but found 2: memoryMemberRepository,springDataJpaMemberRepository
안녕하세요 쿠케님 ! CommentApiTest에서 readAll() 메서드의 body(CommentPageResponse.class); 부분에서 SQLException이 발생하는 것을 확인했습니다. 하지만 테이블 컬럼을 확인해보니, Comment 테이블에 content 컬럼이 분명히 존재하는걸 확인할 수 있었습니다. 그리고 실제로 readAll() 메서드가 사용되는 쿼리에서는 content 컬럼이 사용되지도 않는데, 어째서 content 컬럼을 찾을 수 없다고 하는지 모르겠습니다. findAll()의 쿼리가 잘못됐나 해서 쿼리문을 직접 실행을 해도 잘 돌아가는걸 확인할 수 있었습니다. 코드도 첨부하겠습니다.
========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 다수의 생산자와 소비자 스레드를 실행하는 환경에서 소비자 스레드와 생산자 스레드가 waiting이 되어 있는 경우, 한 생산자 스레드가 lock을 얻어 notify()를 실행하는 경우, WAITING이던 스레드가 BLOCKED가 되는데 소비자 스레드가 lock을 얻어 데이터를 사용한다는 보장이 되는 걸까요? 다른 생산자 스레드가 lock을 얻고 버퍼에 데이터를 가득채우는 경우도 발생할 수 있을 것 같아 궁금합니다! 결론적으로, 소비자는 생산자를 깨우고, 생산자는 소비자를 깨워야만 하는데 이를 notify()로 보장해줄 수 있는 지 궁금합니다!