안녕하세요.. 강사님 문득 궁금한점이 있어서 질문을 남깁니다.. 보통 고정적인 배열을 생성하실때 Array.from을 많이 사용하시는데 저는 Array().fill 이 조금 더 읽기 쉬운 코드라 생각하여 작성하고 있었습니다. 그러다 문득 궁금한게 고정된 배열을 생성하는 두 가지 방법의 시간 복잡도가 궁금해 졌습니다. Array.from({length:n}, () => 0) 의 경우 배열을 생성하면서 값을 채워 넣기에 O(n) 의 시간 복잡도를 갖고 Array(n).fill(0) 의 경우 배열을 생성후 다시 순회하며 값을 채워 넣기에 O(n) + O(n) 의 시간 복잡도를 갖는다고 생각 했습니다. 1. 위에 제가 생각한 시간 복잡도가 맞을까요~? 2. Array(n) 에 대한 시간 복잡도가 O(1) 이다 와 O(n) 이라는 의견이 존재하는데 어떻게 생각하시나요~? 만약 O(1) 의 복잡도이면 1번의 답이 어떻게 될까요? 읽어주셔서 감사합니다!
안녕하세요^^ 강의 너무 잘 듣고 있습니다. 다름이 아니라 k-means clustering로 군집화를 진행하는 것 까지는 이해했는데, 그 군집화로 어떻게 박스를 그리는지 모르겠습니다ㅜㅜ 또, anchor box라는 개념을 코드로 구현할 때 opencv같은 라이브러리를 활용해서 직접 그려야하는 건가요??
안녕하세요? Hive 의 External Table 이란게...물리적인 데이터는 가지지 않고, RDBM의 View 처럼 그냥 논리적인 구조를 만드는 개념인가요? 예를 들어서 create external table if not exist TABLE_A ..... location '/pilot-pjt/collect/car-batch-log/' 로 선언을 해서 테이블 A를 만들고, 그 후 동일한 하둡 파일로 create external table if not exist TABLE_B ..... location '/pilot-pjt/collect/car-batch-log/' 로 테이블 B 를 만들면 TABLE_A , TABLE_B 이라는 2개의 물리적인 테이블이 생기는지.. 아니면 같은 hadoop 파일을 바라보는 뷰가 2개 생기는 건지 궁금합니다.
/* MemberController*/ @Autowired public MemberController(MemberService memberService) { this.memberService = memberService; System.out.println("memberService = " + memberService.getClass()); // 프록시 조회해보기 } /* MemberService*/ public MemberService(MemberRepository memberRepository) { this.memberRepository = memberRepository; System.out.println("memberRepository = " + memberRepository.getClass()); // 프록시 조회해보기 } 안녕하세요! 프록시 조회에 대해서 질문드립니다!! 프록시를 조회하고 싶어서 print문을 써봤습니다.그런데 MemberService 프록시는 MemberController 생성자에 print문을 작성해주고 MemberRepository 프록시는 MemberService 생성자에 print문을 작성해주어 확인했는데, MemberController 프록시는 어디에 print문을 작성해서 확인해야 하나요? 두번째 질문은 출력 순서를 보면 1. AOP START 다음 2. 레포지토리가 출력되고 3. END 출력 4.그 다음에 서비스 프록시가 출력되는데, 순서가 왜 이렇게 되는지 궁금합니다. 스프링을 실행시키면 어떤 부분이 가장 먼저 실행되나요?? AOP START가 가장 먼저 출력되는 걸 보니 TimeTraceAop가 실행되고 그 다음에 MemberService가 실행되는 것인가요..?? 작동되는 순서를 전혀 모르겠습니다ㅠㅠㅠ SpringConfig이 먼저 실행되어 START에 SpringConfig.memberSerivce 메소드가 찍히는 것인가요?
jar파일을 실행하여 하여 웹서버를 열었을 때, "/hello" 에서는 화면이 잘 나오는데, "/" 루트 경로에서는 404에러가 나옵니다. (intellij에서 Run 했을때는 루트 경로에서도 잘 나왔습니다.) 혹시 "templates/..." 안의 html파일들은 인식하는데 "static/index.html"은 빌드시 인식을 못하는걸까요?
안녕하세요 강사님! 약간 Mapper 에 치중된 질문이 될 수도 있을것 같습니다. 저는 , 스프링 컨버전서비스를 활용할 줄 몰라, 스프링의 ObjectMapper 와 MapStruct 를 병행으로 매핑작업을 하고 있었는데요 `매핑작업`은 , Dto < > Entity 필드값 매핑을 의미합니다. 이번강의를 통해 `컨버전서비스`의 강력한 기능을 보고, 추가 라이브러리 Mapper(MapStruct) 가 필요없겠다는 생각이 들었습니다.(그래도 컴파일 시점에 매핑로직이 생성되는것은 환상적인 기능 같습니다^^) 그리고, 어디선가 강사님의 답글을 읽은 바 로는, 객체매퍼를 (ModelMapper, MapStruct 등) 추가로 사용을 않하시는 것으로 알고있습니다. 그래서 매퍼를 써야할지 고민을 꾸준히 해왔었는데요, 질문입니다 외부 LIB매퍼를 사용안하시는 이유가 , `객체매핑(DTO 엔티티 필드값 매핑)` 이 컨버터/포멧터 를 통해서도 가능하기 때문.이라 추측해도 될까요..? 조심스래 여쭤보아요.. 스프링 ConversionService 를 객체매퍼로 활용하는 것과, 업무처리 효율에 도움이 될지 강사님의 견해를 알고싶습니다. 객체매퍼 라이브러리를 지금도 사용을 쭉 안하시는지(수작업 매핑 선호), 혹시 사용 중이시거나, 사용계획이 있으시다면, 어떤 라이브러리를 사용하실 지가 궁금합니다. 읽어주셔서 고맙습니다.
선생님 안녕하세요! 어제부터 갓 시작했는데 스크립트 강의에서 콘솔창에 결과값이 Hello World 할때는 떴었는데 그 이후에는 콘솔창에 결과값이 안뜨더라구요 계속해보고 찾아봐도 왜그런지 정보를 못찾겠더라구요...그러다 우연히 발견했는데 스크립트 이름을 바꿀경우에 오브젝트에 적용할때 체크표시창이 아예 없더라구요... 혹시 이 문제가 맞는건가요? 맞다면 체크창이 왜 없는걸까요ㅜㅜ
3시간 정도 해결하다가 안되서.. 일단 오류 내용은 이렇습니다.. java.lang.IllegalStateException: Failed to load ApplicationContext at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:132) at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:123) at org.springframework.test.context.web.ServletTestExecutionListener.setUpRequestContextIfNecessary(ServletTestExecutionListener.java:190) at org.springframework.test.context.web.ServletTestExecutionListener.prepareTestInstance(ServletTestExecutionListener.java:132) at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:244) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:227) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:289) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:291) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:246) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97) at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329) at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293) at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70) at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) at org.junit.runners.ParentRunner.run(ParentRunner.java:413) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190) at org.junit.runner.JUnitCore.run(JUnitCore.java:137) at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69) at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38) at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11) at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35) at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:235) at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54) Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is org.hibernate.AnnotationException: No identifier specified for entity: jpabook.jpashop.Member at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1788) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:609) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:531) at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1159) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:588) at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:767) at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:759) at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:426) at org.springframework.boot.SpringApplication.run(SpringApplication.java:326) at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:122) at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:99) at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:124) ... 27 more Caused by: org.hibernate.AnnotationException: No identifier specified for entity: jpabook.jpashop.Member at org.hibernate.cfg.InheritanceState.determineDefaultAccessType(InheritanceState.java:266) at org.hibernate.cfg.InheritanceState.getElementsToProcess(InheritanceState.java:211) at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:781) at org.hibernate.boot.model.source.internal.annotations.AnnotationMetadataSourceProcessorImpl.processEntityHierarchies(AnnotationMetadataSourceProcessorImpl.java:248) at org.hibernate.boot.model.process.spi.MetadataBuildingProcess$1.processEntityHierarchies(MetadataBuildingProcess.java:239) at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:282) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:1224) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1255) at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:58) at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:365) at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:409) at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:396) at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:341) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1847) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1784) ... 43 more MemberRepositoryTest입니다! package jpabook.jpashop; import org.assertj.core.api.Assertions; import org.junit. Test ; import org.junit.runner. RunWith ; import org.springframework.beans.factory.annotation. Autowired ; import org.springframework.boot.test.context. SpringBootTest ; import org.springframework.test.annotation. Rollback ; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.transaction.annotation. Transactional ; @RunWith (SpringRunner. class ) @SpringBootTest public class MemberRepositoryTest { @Autowired MemberRepository memberRepository ; @Test @Transactional public void testMember() throws Exception{ //given Member member = new Member(); member.setUsername( "memberA" ); //when Long savedId = memberRepository .save(member); Member findMember = memberRepository .find(savedId); //then Assertions. assertThat (findMember.getId()).isEqualTo(member.getId()); Assertions. assertThat (findMember.getUsername()).isEqualTo(member.getUsername()); } } MemberRepository입니다 package jpabook.jpashop; import jpabook.jpashop.Member; import lombok.extern.java. Log ; import org.springframework.stereotype. Repository ; import javax.persistence.EntityManager; import javax.persistence. PersistenceContext ; @Repository public class MemberRepository { @PersistenceContext private EntityManager em ; public Long save(Member member) { em .persist(member); return member.getId(); } public Member find(Long id) { return em .find(Member. class , id); } } application.yml입니다! 그리고 질문란에 써있는데로, H2를 실행한 상태이고, jpashop.mv.db도 만들어져 있습니다. 또 혹시 제가 코드를 잘못 작성했을까봐 강의자료에 나와있는 자료들을 모두 복붙하였습니다. gradle까지 복붙했습니다.. 그런데 자꾸 오류가 생성되어 여쭤보게 되었습니다. 감사합니다! 추가로 컴퓨터도 껐다 켜봤습니다! 또 추가적으로, 그 영한님이 주신 강의 소스코드로 전체 완성본은 또 돌아가더라고요.. 그래서 더더욱 뭐가 문제인지를 모르겠습니다 ㅠㅠ
의존 주입 관련 질문입니다. (동영상 5:13초) 코드 예제에서 오른쪽 하단에 schSvc.setCalculator(cal); 코드가 존재하고 있습니다. Q1. 왜 SchSvc.setCalculcator(cal);은 굳이 생성자를 통해서 의존 주입을 하지 않나요? Q2. 혹시 SchSvc.setCalculator(cal);의 이유가 생성된 이후에도 여러 번 setCalculator을 통해 ScheduleService의 cal 필드 변경이 필요해서 일까요? Q3. Q2의 질문의 답변이 만약 맞는 경우(생성된 이후 여러 번 setCalculator를 통해 계산법 변경이 필요하다) setter는 지양해야 된다는 한 블로그를 보게 되었습니다.(출처: https://velog.io/@sezeom/Getter-Setter-%EC%A7%80%EC%96%91%ED%95%98%EA%B8%B0) 혹시 setCalculator 방식 말고 ScheduleService 객체가 이미 생성된 이후에도 private Calculator cal을 변경 시킬 수 있는 다른 방법이 있을까요? 지금 떠오르는 것은 setter로 cal을 갱신하는 것이 아닌 계산과 관련된 메소드를 만들고, 메소드의 파라미터를 계산 기능과 관련된 추상화를 통한 객체 다형성을 통해 해결하는 방법 밖에 생각이 나지 않습니다. 그 외 다른 방법이 존재할까요? Q4. Q3과 연관된 질문인데 만일 조립을 통해 생성된 객체가 생성된 이후 특정 상황에 따라 조립을 통해 생성된 객체가 다른 객체로 변경이 필요한 경우에는 setter(조립된 객체를 저장한 특정 필드를 변경) 말고 다른 방법을 통해 조립을 통해 이미 생성된 객체를 변경이 가능할까요? 기존 강의의 여러 내용을 훑어보았지만 마땅한 해결책이 떠오르지 않습니다. 이 경우는 조립을 쓰지 않는 게 답일까요? 아니면 다른 좋은 해결 방법이 존재하는 지 궁금합니다. Q5. 어떤 특정한 경우에는 새로운 객체를 생성하지 않고 기존 생성한 객체를 계속 사용하면서 setter 등을 통해서 기능을 바꾸어야 할 때가 있을 것 같습니다. (억지 예시로 생성에 비용이 큰 객체는 매번 재생산 시 비용의 부담이 있을수도 있어서 static을 통해 한번만 생성하고 여러 상황에 맞게 setter 등을 통해 기능을 바꾼다. 기능 기능과 책임의 분리 측면에서는 맞지 않지만 아주 억지적인 가정을 한다면요...) 이 때 setter 방식보다는 메소드의 파라미터를 통해서 기능을 메소드 내에서만 사용하도록 하는 방식이 객체지향에 알맞지 않을까 싶습니다. 근데 위 내용의 반론으로 만약 동일한 기능을 여러 메소드에게 공통적으로 전달하여 사용하고 setter 변경 주기가 짧은 편이 아니라면 어쩌면 setter 한번 쓰고 메소드의 파라미터로 기능을 전달하지 않고 메소드를 사용하는 게 옳을수도 있겠다는 생각이 듭니다. 하지만 또 생각해보면 setter를 통해 객체를 전달한 것 자체가 setter로 전달된 객체는 private일지라도 캡슐화 된 객체 내에서 다른 메소드가 접근이 가능해서 오류가 발생하지 않을까 싶기도 합니다. 혹시 강사님이 생각하시는 좋은 해결법이 존재할까요? 이상입니다. 감사합니다. [기타 잡소리] 강의 잘 보고 있습니다. 벌써 마지막에 강의에 가까워지네요. 객체지향이 이렇게 신기한 건지 몰랐습니다. 강사님 책 중 개발자가 반드시 정복해야 할 객체 지향과 디자인 패턴 책을 오늘 서점에서 구매했습니다. 해당 강의 다 보고 책 다시 정독하고 싶네요. 좋은 하루 되세요
title의 하위 div에 각각 ".text"라는 클래스를 부여하고 .text 클래스를 titleText라는 변수에 할당했습니다. 그리고나서 텍스트 모션을 위한 for문을 동작하는데 트윈맥스가 작동하지 않아 질문드립니다. 첫 번째, 제가 작성한 코드는 어떤 오류때문인가요. f12에는 아무것도 나타나지 않았습니다. 두 번째, for문을 작성하실 때, title의 하위 div 속성을 변수로 할당해서 간편히 작성하신게 아니라 일부로 title.querySelectorAll('div').length와 title.querySelectorAll('div')[i]처럼 길게 작성하셨습니다. 따로 이유가 있으실까요?
1. 필요한 검증 애노테이션이 존재하지 않는 경우 직접 구현하는데 강의에서 오브젝트 오류를 Controller 내부에서 구현한 것처럼 Controller 내부에서 구현하나요? 2. 1번이 답이 아니라면 Validator 인터페이스를 상속받아 구현한 검증기를 사용하여 검증하나요? 제가 jsp로 공부했을때 회원 가입시 비밀번호확인 하는 로직을 구현했을때 사용자 정의 Validator를 구현한게 생각나서 질문 드립니다.