@Configuration @ComponentScan( includeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION, classes = MyIncludeComponent.class), excludeFilters= @ComponentScan.Filter(type = FilterType.ANNOTATION, classes = MyExIncludeComponent.class) ) class ComponentFilterAppConfig{ } } 이 코드 static class ComponentFilterAppConfig{ } 에서 static 이 있는 이유가 궁금하여 빼서 돌려보니 org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'componentFilterAppConfigTest.ComponentFilterAppConfig': Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'hello.core.scan.filter.ComponentFilterAppConfigTest' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {} 이런 오류가 나왔습니다. 구글링을 해보니 제생각에는 CommponentFilterAppConfigTest.class 에서 빈을 찾지 못하여 발생한 것 같은데 보통 어노테이션을 지정하지 않으면 이런 오류가 나온다고 하더군요 https://sas-study.tistory.com/385 하지만 저는 단지 static 만 뺏을 뿐인데 이런 오류가 왜 나는지 궁금했습니다. 마우스를 올려보니 Inner class 'ComponentFilterAppConfig' may be 'static' 이런 글이 있었습니다. 그래서 찾아보니 https://siyoon210.tistory.com/141 '외부 참조'로 인한 단점때문에 내부 클래스는 가능한 static으로 만들어야 합니다. 라고 하고 '외부 참조'로 인한 2가지 단점은아래 와 같다고 하더군요 참조값을 담아야 하기 때문에, 인스턴스 생성시 시간적, 공간적으로 성능이 낮아진다. 외부 인스턴스에 대한 참조가 존재하기 때문에, 가비지 컬렉션이 인스턴스 수거를 하지 못하여 메모리 누수가 생길 수 있다. 그러면 종합에서 생각한게 빈을 찾지 못하는건 외부참조가 가능해서인가? 라는 의문이 들었습니다. 그리고 정확한 이유가 궁금해졌습니다. <전체 코드> public class ComponentFilterAppConfigTest { @Test void filterScan(){ ApplicationContext ac = new AnnotationConfigApplicationContext(ComponentFilterAppConfig.class); BeanA beanA = ac.getBean("beanA", BeanA.class); assertThat(beanA).isNotNull(); assertThrows( NoSuchBeanDefinitionException.class, () -> ac.getBean("beanB", BeanB.class)); } @Configuration @ComponentScan( includeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION, classes = MyIncludeComponent.class), excludeFilters= @ComponentScan.Filter(type = FilterType.ANNOTATION, classes = MyExIncludeComponent.class) ) static class ComponentFilterAppConfig{ } } 정리하자면 이 코드에서 static class ComponentFilterAppConfig{ } 가 static 이 없으면 왜 오류가 나는지 궁금합니다.
int main() { struct { bool member1 : 1; bool member2 : 1; unsigned long long : 0; }none; printf("%zu bytes", sizeof(none)); return 0; } 해당 코드를 통해 강의에서와 같이 16bytes가 출력 되는지 확인해봤습니다. 그러나 16bytes가 아닌 8bytes가 출력되더군요. 이유를 알 수 있을까요?
[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
안녕하세요. 학습중 궁급해서 질문 드립니다. test@codefactory.ia:testtest 이 부분을 인코딩하고 포스트맨에서 로직 검사를 여러번 시험해보면서 username 즉 ID값을 다르게 변경해도 패스워드만 정확하게 맞다면 accessToken 과 refreshToken을 받을 수 있었습니다. Password부분 같이 값이 같아야 토큰을 받을 수 있는건데 ID값은 달라도 왜 토큰 값이 받아지는 거죠? 사진은 ID값을 다르게 해서 토큰을 받은 겁니다.
제가 셋팅을 다르게 한 건지 모르겠는데 콘솔창에 create, insert쿼리는 뜨는고 업데이트 쿼리는 따로 안 뜨는데 이유를 알 수 있을까요? try { Address address = new Address("city", "street", "zipcode"); Member member1 = new Member(); member1.setUsername("member1"); member1.setHomeAddress(address); member1.setWorkPeriod(new Period()); Member member2 = new Member(); member2.setUsername("member2"); member2.setHomeAddress(address); member2.setWorkPeriod(new Period()); member1.getHomeAddress().setCity("newCity"); em.persist(member1); em.persist(member2); tx.commit(); 이건 똑같이 작성했씁니다.
public int solution(int n) { int answer = 0, sum = 0, lt = 1; for(int rt=1; rt <= n/2+1; rt++) { sum += rt; if(sum == n) answer++; while(sum >= n) { sum -= lt++; if(sum == n) answer++; } } return answer; } 이렇게 해도 정답이 되었습니다. 문제가 풀리긴 했지만 좋은 답인지는 잘 몰라서 문의드립니다.
안녕하세요 항상 좋은 강의 잘 듣고 있습니다! 선생님께서 가르쳐주신 풀이 방식이 생각한대로 나름 직관적(?)이여서 다른 문제에서도 잘 사용하고 있는데 아무래도 재귀방식이다보니 시간복잡도에서 시간초과가 발생합니다. 이러한 DFS 방식에서 시간복잡도를 낮추는 방법이 있을까요? 또한 선생님께서는 이러한 문제 풀때 시간복잡도 관련해서 어떻게 해결하시나요?(예를들어 다른 풀이방식을 선호한다던지.. 등등)
안녕하세요 강사님 수업을 듣다가 궁금한 점이 생겨서 질문드립니다. while문의 조건이 lt<=rt: 인데 lt>rt가 되는 경우는 탐색이 완료되는 동안에는 없을것같아서 while문의 조건을 true로 하고 실행 시켜봤는데 채점프로그램을 돌려보면 오류가 발생합니다. true가 아니라 lt<=rt를 써야되는 이유가 어떤 상황일까요
useState의 set 함수가 비동기로 실행된다고 이해하고 있는데 setLoading(true); setAuthUser({ uid: authState.uid, email: authState.email, photoURL: authState.photoURL, displayName: authState.displayName, }); setLoading(false); 이 부분의 코드가 어떻게 순서대로 실행이 되는건가요? set 함수끼리는 순서가 지켜지나요?
현재 버전 정보들입니다 "next": "^11.1.4", "prop-types": "^15.8.1", "eslint": "^8.33.0", "eslint-plugin-import": "^2.27.5", "eslint-plugin-react": "^7.32.2", "eslint-plugin-react-hooks": "^4.6.0" TypeScript와 React를 사용해서 프로젝트 했을 때는 VsCode에서(웹스톰만의 기능은 아니라고 생각합니다.) import하지 않은 컴포넌트에 대한 경고문이 나와서, 맥북 기준 커맨드+.을 하면 Code Action으로 import을 시켜줄 수 있었습니다. 그런데강의를 진행하면서 컴포넌트를 import하지 않은 상황인데도 불구하고, 따로 경고문이 나타나지 않는데, 이게 어떤 설정을 해야하는건지 잘 모르겠습니다. <Menu /> , <Col /> , <UserProfile /> 같은 컴포넌트들입니다.(코드는 이 정도만 첨부하겠습니다.) import PropTypes from "prop-types"; import Link from "next/link"; import { Menu, Input, Row, Col } from "antd"; ... <Row gutter={8}> <Col xs={24} md={6}> {isLoggedIn ? <UserProfile /> : <LoginForm />} </Col> <Col xs={24} md={12}> {children} </Col> <Col xs={24} md={6}> <a href="https://velog.io/" target="_blank" rel="noreferrer noopener">Velog</a> </Col> </Row> </div> ); }; AppLayout.propTypes = { children: PropTypes.node.isRequired, }; export default AppLayout; Import되지 않은 컴포넌트인 <UserProfile />, <LoginForm /> 경고문이 뜨지 않는 사진도 첨부했습니다.
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 어제 작성한 질문 답변을 반영하여 다시 작성했습니다. (수정) CoreApplication을 실행하면 테스트 코드 속 내용까지 실행되는 것 같습니다. 1. BeanDefinitionOverrideException 오류 CoreApplication 실행 후 (Run Java / Debug Java 둘 다 안 됐습니다.) 다음과 같은 오류가 떴습니다. (전에는 제가 추려서 간략한 버전으로 올렸지만, 콘솔창 전체를 보여주시라고 하셔서 지저분하지만 사진 올려봅니다.) 제가 로그를 본 후 해당 ApplicationContextExtendsFindTest 테스트 파일 속 TestConfig의 @Configuration을 제거하자 실행은 됐습니다. 2. 1번 문제 해결 후 로그 보니 BeanLifeCycleTest 관련 로그가 뜹니다. TestConfig의 @Configuration을 제거 그 후 다시 실행한 후 콘솔창 전체 사진 위의 두 번째 사진에서 아래와 같이 테스트 코드 관련 출력이 보입니다. "생성자 호출, url = null connect: http://hello-spring.dev call: http://hello-spring.dev message = 초기화 연결 메시지" 3. 결론 왜 이런지 이유가 궁금합니다. 단순히 inteliJ와 vsCode 실행환경 차이인지, 아니면 그 외에 다른 이유가 있는지 궁금합니다.
안녕하세요. switch case(후반전) 강의 3분 30초 부분에서 궁금한 점이 생겨 질문을 남깁니다. 제가 알기로는 switch case를 사용할 때, 그 case에 해당하는 경우에만 수행 동작을 실행하는 걸로 알고 있습니다. 이 영상에서도 마찬가지로 grade를 1이라고 가정할 때, case 1은 조건을 만족하므로 price에 1000을 더해주었습니다. 하지만 그 이후 case 2를 만족하지 않음에도 불구하고 1000을 더해주고, case 3도 만족하지 않지만 1000을 더한 결과 값이 출력 되었습니다. 즉, break를 넣으면 switch문을 빠져나갈 수 있다는 것은 알고 있으나, 왜 break가 없어졌다는 이유로 다음 case의 수행 동작이 실행되는지 잘 모르겠습니다. 이와 관련하여 매커니즘을 조금 더 자세히 설명해주시면 감사할 것 같습니다..!