[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? ( 예 /아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? ( 예 /아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? ( 예 /아니오) [질문 내용] 이 코드는 batch가 잘 적용되는데 dto로 다음과 같이 조회하게 되면 batch가 적용되지 않습니다. 원래 dto로 o를 조회하게 되면 배치가 적용되지 않나요?
저도 직전 강의에서 "이 hashCode() 메서드는 굳이 멀티 스레드를 걱정하지 않아도 될 것 같은데?" 라고 생각하면서 좀 자세히 보고 생각해 보게 되었습니다. 책에서 해시를 캐싱할 때 지연 초기화를 하려면 스레드 안전하게 만들도록 신경 써야 한다고 쓰여져 있기에 이 문장에 대한 제 생각을 공유하고자 글 남깁니다! 기선님께서도 말씀하셨듯이 강의 초반에 나오는 hashCode() 메서드는 여러 스레드가 동시에 계산을 하더라도 문제는 없어 보입니다. result라는 로컬 변수에 계산을 하기 때문이죠(로컬 변수는 스레드마다 고유하므로). 계산 결과에는 문제가 없으나, 계산을 동시에 한다는 점에 고민을 해보게 되었습니다. 책에서 설명하는 해시를 캐싱하는 전제조건은 불변 객체이면서 해시코드를 계산하는 비용이 클 때입니다. 즉, 불변 객체이기에 해시 코드를 여러 번 계산할 필요가 없고 처음 한 번만 계산한 후 계속 가져다 사용하는 방식인거죠. 스레드에 안전하지 않게 설계하면 여러 스레드가 동시에 해당 인스턴스의 해시를 계산할 수 있기에(크게 문제가 되지 않다고 생각할 수 있으나 해시코드를 계산하는 비용이 크다고 가정했으므로 중복 계산은 성능 저하로 이어진다고 생각합니다) 스레드 안전에 신경 써야 한다고 쓴 것 같습니다. 그러나 역시 결과에는 문제가 없기에 책에서도 "반드시 스레드에 안전해야 한다!"가 아닌 "스레드 안전하게 만들도록 신경 써야 한다"라고 기술되어 있는 것이라고 생각합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 강의 잘 따라하고 있다가 orderV6 부분에서 갑자기 오류가 나옵니다 왜이럴까요ㅠㅠ? 셋팅이 바뀐 부분은 따로 없는 거 같습니다. yml부분데 h2.driver 부분이 오류가 나오네요ㅠㅠ java.lang.ClassNotFoundException: org.h2.Driver at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass (BuiltinClassLoader.java:64 1) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass (ClassLoaders.java:18 8) at java.base/java.lang.ClassLoader.loadClass (ClassLoader.java:52 0) at java.base/java.lang.Class.forName0(Native Method) at java.base/java.lang.Class.forName (Class.java:46 7) at org.springframework.boot.devtools.restart.classloader.RestartClassLoader.loadClass (RestartClassLoader.java:12 1) at java.base/java.lang.ClassLoader.loadClass (ClassLoader.java:52 0) at java.base/java.lang.Class.forName0(Native Method) at java.base/java.lang.Class.forName (Class.java:46 7) at org.springframework.util.ClassUtils.forName (ClassUtils.java:30 4) at org.springframework.boot.autoconfigure.jdbc.DataSourceProperties.driverClassIsLoadable (DataSourceProperties.java:19 4) at org.springframework.boot.autoconfigure.jdbc.DataSourceProperties.determineDriverClassName (DataSourceProperties.java:17 5) at org.springframework.boot.autoconfigure.jdbc.PropertiesJdbcConnectionDetails.getDriverClassName (PropertiesJdbcConnectionDetails.java:4 9) at org.springframework.boot.autoconfigure.jdbc.DataSourceConfiguration.createDataSource (DataSourceConfiguration.java:5 5) at org.springframework.boot.autoconfigure.jdbc.DataSourceConfiguration$Hikari.dataSource (DataSourceConfiguration.java:11 7) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:7 7) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:4 3) at java.base/java.lang.reflect.Method.invoke (Method.java:56 8) at org.springframework.beans.factory.suppor t.SimpleInstantiationStrategy.instantiate (SimpleInstantiationStrategy.java:14 0) at org.springframework.beans.factory.suppor t.ConstructorResolver.instantiate (ConstructorResolver.java:64 7) at org.springframework.beans.factory.suppor t.ConstructorResolver.instantiateUsingFactoryMethod (ConstructorResolver.java:63 9) at org.springframework.beans.factory.suppor t.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod (AbstractAutowireCapableBeanFactory.java:133 4) at org.springframework.beans.factory.suppor t.AbstractAutowireCapableBeanFactory.createBeanInstance (AbstractAutowireCapableBeanFactory.java:116 4) at org.springframework.beans.factory.suppor t.AbstractAutowireCapableBeanFactory.doCreateBean (AbstractAutowireCapableBeanFactory.java:56 1) at org.springframework.beans.factory.suppor t.AbstractAutowireCapableBeanFactory.createBean (AbstractAutowireCapableBeanFactory.java:52 1) at org.springframework.beans.factory.suppor t.AbstractBeanFactory.lambda$doGetBean$0 (AbstractBeanFactory.java:32 5) at org.springframework.beans.factory.suppor t.DefaultSingletonBeanRegistry.getSingleton (DefaultSingletonBeanRegistry.java:23 4) at org.springframework.beans.factory.suppor t.AbstractBeanFactory.doGetBean (AbstractBeanFactory.java:32 3) at org.springframework.beans.factory.suppor t.AbstractBeanFactory.getBean (AbstractBeanFactory.java:19 9) at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate (DependencyDescriptor.java:25 4) at org.springframework.beans.factory.suppor t.DefaultListableBeanFactory.doResolveDependency (DefaultListableBeanFactory.java:144 3) at org.springframework.beans.factory.suppor t.DefaultListableBeanFactory.resolveDependency (DefaultListableBeanFactory.java:135 3) at org.springframework.beans.factory.suppor t.ConstructorResolver.resolveAutowiredArgument (ConstructorResolver.java:90 7) at org.springframework.beans.factory.suppor t.ConstructorResolver.createArgumentArray (ConstructorResolver.java:78 5) at org.springframework.beans.factory.suppor t.ConstructorResolver.instantiateUsingFactoryMethod (ConstructorResolver.java:54 2) at org.springframework.beans.factory.suppor t.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod (AbstractAutowireCapableBeanFactory.java:133 4) at org.springframework.beans.factory.suppor t.AbstractAutowireCapableBeanFactory.createBeanInstance (AbstractAutowireCapableBeanFactory.java:116 4) at org.springframework.beans.factory.suppor t.AbstractAutowireCapableBeanFactory.doCreateBean (AbstractAutowireCapableBeanFactory.java:56 1) at org.springframework.beans.factory.suppor t.AbstractAutowireCapableBeanFactory.createBean (AbstractAutowireCapableBeanFactory.java:52 1) at org.springframework.beans.factory.suppor t.AbstractBeanFactory.lambda$doGetBean$0 (AbstractBeanFactory.java:32 5) at org.springframework.beans.factory.suppor t.DefaultSingletonBeanRegistry.getSingleton (DefaultSingletonBeanRegistry.java:23 4) at org.springframework.beans.factory.suppor t.AbstractBeanFactory.doGetBean (AbstractBeanFactory.java:32 3) at org.springframework.beans.factory.suppor t.AbstractBeanFactory.getBean (AbstractBeanFactory.java:19 9) at org.springframework.beans.factory.suppor t.AbstractBeanFactory.doGetBean (AbstractBeanFactory.java:31 2) at org.springframework.beans.factory.suppor t.AbstractBeanFactory.getBean (AbstractBeanFactory.java:19 9) at org.springframework.context.suppor t.AbstractApplicationContext.getBean (AbstractApplicationContext.java:123 1) at org.springframework.context.suppor t.AbstractApplicationContext.finishBeanFactoryInitialization (AbstractApplicationContext.java:94 9) at org.springframework.context.suppor t.AbstractApplicationContext.refresh (AbstractApplicationContext.java:62 4) at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh (ServletWebServerApplicationContext.java:14 6) at org.springframework.boot.SpringApplication.refresh (SpringApplication.java:75 4) at org.springframework.boot.SpringApplication.refreshContext (SpringApplication.java:45 6) at org.springframework.boot.SpringApplication.ru n (SpringApplication.java:33 4) at org.springframework.boot.SpringApplication.ru n (SpringApplication.java:135 4) at org.springframework.boot.SpringApplication.ru n (SpringApplication.java:134 3) at jpabook.jpashop.JpashopApplication.main (JpashopApplication.java:1 4) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:7 7) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:4 3) at java.base/java.lang.reflect.Method.invoke (Method.java:56 8) at org.springframework.boot.devtools.restart.RestartLauncher.ru n (RestartLauncher.java:5 0)
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 아니오 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 수업내용 글들은 어디서 확인 할수있나여?
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? ( 예 /아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? ( 예 /아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? ( 예 /아니오) [질문 내용] 총 4개의 Order가 있고, 다음과 같이 xToOne연관관계를 가진 Member와 Delivery까지 페치조인해서 가져온 상황입니다. 여기서 Batchsize가 2라고 가정하고, Order를 순차적으로 돌아가면서 OrderItems에 접근하게 된다면, 다음 그림과 같이 orderItems가 로딩이 되는 것인가요? order.stream ().forEach(o -> o.getOrderItems().getPrice()) (첫 번째) Batchsize가 2이므로 첫 두 Order에 대한 orderItems 로딩 (두 번째) Batchsize가 2이므로 그 다음 두 개의 Order에 대한 orderItems 로딩
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] HashSet의 코드를 보니 HashMap을 사용하여 구현이 되어있는데 실제 구현도 결국에는 강의 내용처럼 배열안에 LinkedList 나 TreeSet으로 구현과 최적화가 되는건가요?
안녕하세요. 터미널에서 h2.sh이 안됩니다. h2 w.bat을 직접 열어서 연결을 누르면 이런 화면이 나오긴 합니다. java --version 화면입니다. H2환경 별수 설정 화면입니다. h2.sh 를 폴더에서 더블클릭해서 실행시키면 명령프롬프트 창이 뜨면서 Error: Could not find or load main class org.h2.tools .Console Caused by: java.lang.ClassNotFoundException: org.h2.tools.Console 라고 잠깐 뜨고 창이 닫힙니다. 홈에는 test.mv .db파일 있습니다. 어떻게 하면 될까요?
안녕하세요. 아래 질문 글을 실수로 수정 대신 삭제를 눌러 다시 질문을 남깁니다. 호스트 파일을 다음과 같이 구성하고 가상 머신을 작동시킨 후에 크롬을 통해 URL을 접속시도를 하면 블루스크린이 뜨며 컴퓨터가 다운됩니다. ㅠㅠ 아래는 가상머신화면 과 호스트 파일을 첨부하여 올립니다.
안녕하세요. 클라우데라 매니져 접속하기를 진행하는 도중 오류가 발생했습니다. server01.hadoop.com:7180 URL로 접속시 다음과 같이 접속이 되지 않고, IP 주소로 접속을 시도를 해보았는데, 블루스크린이 뜨며 컴퓨터가 종료됩니다. hosts 파일은 다음과 같이 수정하였습니다.
자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
spring: datasource: url: "jdbc:mysql://localhost/library" username: "root" password: "비밀번호" driver-class-name: com.mysql.cj.jdbc.Driver 위와 같이 application.yml 파일을 작성했는데, 사용자 등록을 하면 서버 내부 오류라고 뜨면서 아무것도 안되더라구요.개발자 도구로도 봤는데 뭐가 문제인지 잘 모르겠어서 구글을 찾아보다가 jpa: database: mysql hibernate.ddl-auto: update show-sql: true application.yml 파일에 추가로 이걸 입력하니까 정상적으로 작동하네요.. 혹시 이렇게 두고 실행해도 괜찮은건지 여쭤보고싶었습니다!
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 여기에 질문 내용을 남겨주세요. 안녕하세요 강의 중반에 bulid한 이후 맥 환경에서 서버 종료하는 방법은 알려주셨는데 혹시 윈도우 환경에서는 서버를 종료하는 방법이 있는지 궁금합니다.
========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 왜 서비스에 트랜잭션을 적용하냐는 다른 분의 질문에 하나의 트랜잭션으로 묶어서 사용하기 위함이라고 답글이 달린걸 봤는데 이것또한 그러한 이유때문인가요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요:) 강의 너무 잘듣고있습니다. 혹시 실제 프로그래머스 툴로 코딩테스트를 본다면, 빌트인 함수 (예, Character.isAlphabetic..) 들은 이클립스타 인텔리제이처럼 자동완성 되나요? 검색은 안될지라도.. 혹 Java api docs 라도 제공 되는지 궁금합니다.
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] ScannerWhile2 코드를 다음과 같이 int sum = num1 + num2; System.out.println("두 숫자의 합:" + sum); 내용을 else문 안에 적는 것과 else 문을 쓰지 않고 강의처럼 적는 것은 어떻게 적나 상관없는 건가요? if(num1 == 0 && num2 == 0){ System.out.println("프로그램 종료"); break; } else{ int sum = num1 + num2; System.out.println("두 숫자의 합:" + sum); }
https://drive.google.com/file/d/1ZLSuM4WzJVs4Hec74h64ketY0KtzEEFu/view?usp=sharing 이 링크에 가면 pdf가 있는데, 여기에 제가 작성한 코드를 모두 작성했습니다. 이 구글드라이브 링크에 가서 코드를 확인해보시고 답변에 참고가 되셨으면 좋겠습니다. 이 외에 Tag.java , ConsoleMailSendeer.java , check-email.html, checked-email.html, profile.html, fragments.html 는 pdf에 있습니다.
복습하다 문득 이 코드를 보고 생각이 들었습니다. ArrayList<MyUser> list = new ArrayList<>(List.of(myUser1, myUser2, myUser3)); List<MyUser> list1 = List.of(myUser1, myUser2, myUser3); List로 반환되는 건 맞는 거 같은데... static <E> List<E> of(E e1, E e2, E e3) { return ImmutableCollections.listFromTrustedArray(e1, e2, e3); } List.of()는 분명 List타입으로 반환이 되는데 ArrayList에 어떻게 들어가는 건가요? List가 ArrayList를 받을 수는 있지만, 그 반대는 안 되는 거 아닌가 해서요!!