@Controller를 클래스 레벨에 붙이면 스프링에서 애노테이션 기반 컨트롤러로 인식한다고 학습했습니다. 강의 10분 쯤에서 @RequestMapping과@Component를 같이 클래스 레벨에 쓰면 @Component에 의해 스프링 빈에 등록돼서 매핑정보로 인식된다고 하셨는데 그렇다면 이것도 애노테이션 기반 컨트롤러로 인식되는 건가요? 그렇다면 스프링 빈에 등록될 때 빈 이름은 무엇으로 등록되나요?
설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
기존에 이미 작성되어있던 코드를 지우고 제가 영상보면서 연습 차 다시 작성했는데..-_-; 저장하고 그 후에 ./build 실행하니 다양한 오류가 뜨더라구요... raineesm@DESKTOP-VLU7A79:~/Matbi_VerilogHDL_Season1/chapter_2$ ./build WARNING: [ XSIM 43-3479 ] Unable to increase the current process stack size. INFO: [ VRFC 10-2263 ] Analyzing Verilog file "/home/raineesm/Matbi_VerilogHDL_Season1/chapter_2/tb_clock_generator.v" into library work INFO: [VRFC 10-311] analyzing module tb_clock_generator ERROR : [ VRFC 10-8414 ] extra comma in port association list is not allowed [/home/raineesm/Matbi_VerilogHDL_Season1/chapter_2/tb_clock_generator.v:56] ERROR : [ VRFC 10-8530 ] module 'tb_clock_generator' is ignored due to previous errors [/home/raineesm/Matbi_VerilogHDL_Season1/chapter_2/tb_clock_generator.v:21] Vivado Simulator v2022.2 Copyright 1986-1999, 2001-2022 Xilinx, Inc. All Rights Reserved. Running: /home/raineesm/tools/Xilinx/Vivado/2022.2/bin/unwrapped/lnx64.o/xelab tb_clock_generator -debug wave -s tb_clock_generator Multi-threading is on. Using 2 slave threads. ERROR : [ XSIM 43-3225 ] Cannot find design unit work.tb_clock_generator in library work located at xsim.dir/work. ERROR : Please check the snapshot name which is created during 'xelab',the current snapshot name "xsim.dir/tb_clock_generator/xsimk" does not exist
코랩 실행시 에러메시지가 자주 뜹니다 ㅠㅠ 가령 보스턴 집값 예측하기(4-1)강의를 수강 중인데 첫줄부터 실행을 누르면 아래와 같이 에러메시지가 뜨고, 하위 코드도 전부 에러가 뜹니다. [Errno 2] No such file or directory: '/content/gdrive/My Drive/deeplearningbro/pytorch' /content
@Bean @ConditionalOnMissingBean public ServletWebServerFactory jettyServletWebServerFactory(ServerProperties serverProperties){} 이부분에 ServerProperties 을 따로 주입을 안받아도 되나요..? 빈으로 띄워서 그런건가..? 매개변수에 딱 저렇게 누가 넣어주는건가요..? @Autowired없이..? 헷갈리네요 ㅠㅠㅠ
안녕하세요. 11분 15초 쯤부터 Javascript의 람다식을 사용하면 된다고 말씀해주셨습니다. $(document).ready(function() { $("#regBtn").click(()=> { location.href="<c:out value='/register.do'/>"; }); }); 이클립스에서 ES6 문법 사용이 가능한가요??? 람다식은 ES6부터 나온 기능으로 알고 있습니다. 이와 같은 버전에 나온 백틱( ` )을 사용하려고 했는데, 이클립스에서 에러 표시를 내서 사용을 안 하고 있었습니다. 19년 3월 버전의 이클립스 환경에서 보면, Legacy 프로젝트를 생성했는데 ECMA 3 Browser Support Library라고 되어있길래 ES6은 지원이 안 되나 싶었습니다. (다시 보니 ECMA Script가 아니라 ECMA 3 Browser네요 ㅎㅎ; 제가 잘못 예측한 것일 수도 있겠네요) 이클립스에서 ES6 버전의 JS를 쓰면 Ajax 결과로 나오는 흔한 JSON 데이터를 편하게 불러올 수 있을텐데 말이죠 ㅠㅠ 항상 친절한 답변 감사합니다. 강의 잘 보고 있습니다.
[에러문구입니다.] org.junit.runners.model.InvalidTestClassError: Invalid test class 'jpabook.jpashop.MemberRepositoryTest': 1. No runnable methods at org.junit.runners.ParentRunner.validate( ParentRunner.java:525 ) at org.junit.runners.ParentRunner.<init>( ParentRunner.java:92 ) at org.junit.runners.BlockJUnit4ClassRunner.<init>( BlockJUnit4ClassRunner.java:74 ) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.<init>( SpringJUnit4ClassRunner.java:137 ) at org.springframework.test.context.junit4.SpringRunner.<init>( SpringRunner.java:49 ) at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance( NativeConstructorAccessorImpl.java:62 ) at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance( DelegatingConstructorAccessorImpl.java:45 ) at java.base/java.lang.reflect.Constructor.newInstance( Constructor.java:490 ) at org.junit.internal.builders .AnnotatedBuilder.buildRunner( AnnotatedBuilder.java:104 ) at org.junit.vintage.engine.discovery.DefensiveAllDefaultPossibilitiesBuilder$DefensiveAnnotatedBuilder.buildRunner( DefensiveAllDefaultPossibilitiesBuilder.java:114 ) at org.junit.internal.builders .AnnotatedBuilder.runnerForClass( AnnotatedBuilder.java:86 ) at org.junit.runners.model.RunnerBuilder.safeRunnerForClass( RunnerBuilder.java:70 ) at org.junit.internal.builders .AllDefaultPossibilitiesBuilder.runnerForClass( AllDefaultPossibilitiesBuilder.java:37 ) at org.junit.vintage.engine.discovery.DefensiveAllDefaultPossibilitiesBuilder.runnerForClass( DefensiveAllDefaultPossibilitiesBuilder.java:57 ) at org.junit.runners.model.RunnerBuilder.safeRunnerForClass( RunnerBuilder.java:70 ) at org.junit.vintage.engine.discovery.ClassSelectorResolver.resolveTestClass( ClassSelectorResolver.java:66 ) at org.junit.vintage.engine.discovery.ClassSelectorResolver.resolve( ClassSelectorResolver.java:47 ) at org.junit.platform.engine.support .discovery.EngineDiscoveryRequestResolution.lambda$resolve$2( EngineDiscoveryRequestResolution.java:134 ) at java.base/java.util.stream.ReferencePipeline$3$1.accept( ReferencePipeline.java:195 ) at java.base/java.util.ArrayList$ArrayListSpliterator.tryAdvance( ArrayList.java:1632 ) at java.base/java.util.stream.ReferencePipeline.forEachWithCancel( ReferencePipeline.java:127 ) at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel( AbstractPipeline.java:502 ) at java.base/java.util.stream.AbstractPipeline.copyInto( AbstractPipeline.java:488 ) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto( AbstractPipeline.java:474 ) at java.base/java.util.stream.FindOps$FindOp.evaluateSequential( FindOps.java:150 ) at java.base/java.util.stream.AbstractPipeline.evaluate( AbstractPipeline.java:234 ) at java.base/java.util.stream.ReferencePipeline.findFirst( ReferencePipeline.java:543 ) at org.junit.platform.engine.support .discovery.EngineDiscoveryRequestResolution.resolve( EngineDiscoveryRequestResolution.java:185 ) at org.junit.platform.engine.support .discovery.EngineDiscoveryRequestResolution.resolve( EngineDiscoveryRequestResolution.java:125 ) at org.junit.platform.engine.support .discovery.EngineDiscoveryRequestResolution.resolveCompletely( EngineDiscoveryRequestResolution.java:91 ) at org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolution.run ( EngineDiscoveryRequestResolution.java:82 ) at org.junit.platform.engine.support .discovery.EngineDiscoveryRequestResolver.resolve( EngineDiscoveryRequestResolver.java:113 ) at org.junit.vintage.engine.discovery.VintageDiscoverer.discover ( VintageDiscoverer.java:44 ) at org.junit.vintage.engine.VintageTestEngine.discover ( VintageTestEngine.java:63 ) at org.junit.platform.launcher.core.EngineDiscoveryOrchestrator.discoverEngineRoot( EngineDiscoveryOrchestrator.java:103 ) at org.junit.platform.launcher.core.EngineDiscoveryOrchestrator.discover ( EngineDiscoveryOrchestrator.java:85 ) at org.junit.platform.launcher.core.DefaultLauncher.discover ( DefaultLauncher.java:92 ) at org.junit.platform.launcher.core.DefaultLauncher.execute( DefaultLauncher.java:75 ) at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs( JUnit5IdeaTestRunner.java:71 ) 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 ) package jpabook.jpashop; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; => 올려주신 소스는 //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; import static org.junit.Assert.*; @RunWith(SpringRunner.class) @SpringBootTest public class MemberRepositoryTest { @Autowired MemberRepository memberRepository; @Test @Transactional @Rollback(false) 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()); } }
안녕하세요 수업중에 글로벌 validator를 등록하는 소스를 보여주셨는데요. 궁금한 게 있어 질문 드립니다. @SpringBootApplication public class ItemServiceApplication implements WebMvcConfigurer { public static void main(String[] args) { SpringApplication.run(ItemServiceApplication.class, args); } @Override public Validator getValidator() { return new ItemValidator(); } } 글로벌 적용 시 사용하는 WebMvcConfigurer를 들어가봐도 반환 타입이 Validator[]는 없고 Validator만 존재하는데, 여러 개의 validator를 등록이 가능할까요? 아래는 컨트롤러에 적용하는 소스인데 여기는 함수를 까보니 여러 개의 인자를 받을 수 있도록 되어 있더라구요. @InitBinder public void init(WebDataBinder dataBinder) { //dataBinder.addValidators(itemValidator); dataBinder.addValidators(itemValidator, memberValidator, storeValidator); } 글로벌 적용은 복수개의 validator를 어떻게 적용할 수 있을까요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. Caused by: org.springframework.beans.NotReadablePropertyException: Invalid property 'item' of bean class [hello.itemservice.domain.item.Item]: Bean property 'item' is not readable or has an invalid getter method: Does the return type of the getter match the parameter type of the setter? 에러가 발생합니다. Item.java 파일에 private Boolean open; 라고 쳤는데도 오류가 발생하는데 어디서 문제가 생긴걸까요? @Data도 넣었습니다.
참조에 의한 값을 반환받는 함수를 이용해 역시 참조를 이용해 변수를 선언하면 함수가 끝나면서 사라지는 인자를 참조하므로 두번 출력하면 쓰레기값이 나온다고 설명해주셧는데요. Visual Studio 2019에서는 몇번을 출력해도 제대로 나오고 있습니다. 왜그런 건가요?? 아래 코드 46~55줄 입니다. #include <iostream> #include <limits> #include <array> #include <vector> #include <algorithm> using namespace std; //정수를 반환받는 경우 int getValue(int x) { int value = x * 2; return value; } int* getValue2(int x) { int value = x * 3; return &value; } int* allocateMemory(int size) { return new int[size]; } //reference로 반환 int& getValue3(int x) { int value = x * 4; return value; } int main() { int value = getValue(3); int value2 = *getValue2(3); /*dereferencing해서 받는건 문제는 없으나 권장하지 않음 15~17의 value는 getValue2를 벗어나면서 사라지는데, 그 사라지는 변수의 주소값을 dereferencing하는건 위험 빌드해보면 값은 나오나 warning 뜸. 그렇다고 변수에 dereferencing은 더 위험. getValue2를 벗어나면서 사라지는 값의 주소값을 인자로 받는 값을 또 dereferencing 하는거니까 이 방법은 잘 안쓰긴 함. 단, 아래와 같이 배열의 동적할당에는 자주 씀. factory pattern이라고 나중에 배움.*/ int* array = allocateMemory(1024); //int *array = new int[1024];와 동일 //대신, 동적 할당이므로 delete해줘야하는데 delete가 allocateMemory 함수 말고 main 함수에 있어야해서 단점임. delete[] array; int value3 = getValue3(5);//getValue3이 반환하는 레퍼런스가 가리키는 실제 값이 value3로 복사해 들어옴. int& value4 = getValue3(5); //이거는 문제. value4는 getValue3가 끝나면 사라지는 26번째 줄의 value를 참조함 //없어지는 변수의 값을 복사해서 가져오는 value3는 괜찮은데, 없어지는 변수를 직접 참조하는 value4는 문제겠지 //그 얘로 두번 출력해보면 한번은 제대로 나오는데 다음은 쓰레기값 나옴. 지워진 값의 주소를 참조하니까. cout << value3 << endl; cout << value3 << endl; cout << value4 << endl; cout << value4 << endl; cout << value4 << endl; return 0; }
n 은 방의 갯수 1000개 rooms[i].length 은 한 방의 키의 개수 1000개이고 sum(rooms[i].length) 는 모든 방의 키의 합이 아니라 한 방의 키의 합인거 아닌가요??... 그래서 시간복잡도 O(V +E)에서 V= 10^3, E= 10^6 이 되는 게 아닌지 궁금합니다.