게시글
질문&답변
H2 접속 에러
위 에러는 item 테이블이 존재하지 않아서 발생합니다.h2 console (웹브라우저) 에서 item table 을 먼저 만들고 쿼리를 수행하면 될듯합니다. 좀 더 자세한 해결책을 원하시면, 어디까지 성공했고 어느 부분에서 에러가난다. 와 같이 나름대로 확인한 과정을 상세히 남겨주셔야 좋겠습니다.(남겨주신 github 로 접속하면 404 에러가 납니다. )
- 0
- 3
- 19
질문&답변
item을 id로 get하는데 1을 넣었을 때 500에러가 나와요.
예외가 발생한것 같은데, 예외발생시점의 intellj 의 console 에 찍힌 stacktrace 를 보면 에러난 코드 및 라인을 알 수 있습니다. 한번 봐보세요. 예상되는 원인은...DB 에 1 이라는 id 값으로 된 데이터가 없는데, 이걸 읽으려다가 null pointer exception 이 발생할 수 있습니다. 코드를 보면 select 만 이고 insert 문은 없는데, DB 에 값은 수동으로 쿼리문으로 입력했나요?보다 정확한 원인은 stacktrace 를 보면 알 수 있습니다. :)
- 0
- 1
- 41
질문&답변
ThreadPoolTaskExecutor에서의 가상스레드
좋은 질문이네요. SimpleAsyncTaskExecutor를 아래처럼 spring 에서 제공하는 builder 를 이용하지 않고 직접 만들면 virtual thread 를 사용하지 않습니다.@Bean public SimpleAsyncTaskExecutor taskExecutor(SimpleAsyncTaskExecutorBuilder builder) { return new SimpleAsyncTaskExecutor(); // return builder.build(); }아래처럼 virtual thread factory 를 설정해서 bean 을 만들었다면 virtual thread 로 동작합니다.new SimpleAsyncTaskExecutor(factory);결국, SimpleAsyncTaskExecutor 자체는 virtual thread 를 사용할수도 있고, 아닐수도 있습니다. 해당 객체를 생성할 때 어떤 설정을 했냐에 따라 달라지는 것이죠.yml 에 virtual thread 를 사용하겠다고 설정을 해두었기에, spring 에서 만든 thread pool 관련 builder bean 들은 virtual thread 사용하는 설정이 되어 있어서, builder 를 통해 만들면 항상 virtual thread 를 사용합니다. ThreadPoolTaskExecutor 의 경우에도 아래처럼 spring 이 만든 builder 를 통해 만든다면 virtual thread 를 사용합니다.@Bean public ThreadPoolTaskExecutor threadPoolTaskExecutor(ThreadPoolTaskExecutorBuilder builder) { return builder.build(); } 도움이 되셨길 바랍니다. :) *주의할점은 task scheduler 도 내부적으로 thread pool 을 사용하므로 ,TaskExecutor 공부할때는 TaskScheduler 는 disable 해두고 공부하는게 좋습니다. ( 특정 상황에서 @Async 에서TaskExecutor 가 아닌 taskScheduler 의 thread pool 을 사용할 수 도 있는데 , 이 경우 처음 공부하는 입장에서는 상당히 혼란스럽게 느껴집니다.)
- 0
- 2
- 66
질문&답변
swagger spring boot 3 적용 run 실행 에러
제가 방금 springboot 3.4.3 으로 변경하고swagger 2.8.5로 변경하면 아래처럼 잘 다운받아집니다. github 에 올린 코드 그대로를 사용했을 때 문제가 있는지, 버전만 올리면 문제인지 등을 확인해보세요.(사진)
- 0
- 2
- 98
질문&답변
다음 강의를 준비하신다면 음질좀 높여주실 수 있으신가요..?ㅠㅠㅠ
본 강의가 제가 인프런에 올린 첫번째 강의라서 음량이 낮게 녹화되었습니다. ㅡㅜ 제가 이후에 올린 다른 강의들은 음량문제는 해결하였습니다. 저도 속상하네요 ㅜㅡ
- 0
- 2
- 163
질문&답변
Invalid bound statement (not found): com.helloword.fitstStart.mapper.QuickMapper.findById 에 대한 질의 입니다.
1) mybatisX 플러그인 설치시 mapper xml 이동이 잘 되나요? 2) yml 에 xml 파일의 위치를 정확히 설정했나요? 오타등등3) xml 의 namespace 부분에 java package + class name 에 오타가 없나요?4) 위 에러 코드를 보면 firstStart 가 아니라 fitstStart 라고 오타가 있는데, java, xml 모두 동일한 단어를 썼나요? 위 체크를 해도 여전히 알수 없으면 github 에 전체 코드 push 한 후 알려주시면 확인해보겠습니다.
- 0
- 1
- 392
질문&답변
pinned 확인법
https://docs.oracle.com/en/java/javase/21/core/virtual-threads.html#GUID-2BCFC2DD-7D84-4B0C-9222-97F9C7C6C521위 oracle guide 에는 명확히 적혀있지 않아서 저도 잘 몰랐네요. 제보 감사합니다.
- 0
- 3
- 262
질문&답변
1강 성능비교 질문
네 맞습니다. 500개로 늘리면 둘다 성능이 비슷하게 나올겁니다. 그러나 500개가 아니라 1만개 처럼 숫자가 너무 커져버리면 virtual thread 가 훨씬 빨라집니다. 제일 처음나오는 성능 비교영상은 intro 성격이라서 자세한 설명을 생략한것이고, 뒤쪽 강의 다 보시면 특정 갯수 이상의 platform thread 생성은 성능 한계가 있는걸 알 수 있을겁니다. :)
- 0
- 1
- 277
질문&답변
Performance 테스트에서 CPU 작업도 Virtual이 빠른것 같습니다
2000바퀴라는건 platform thread pool size도 2000개로 설정했을것 같습니다. 너무 많은 platform thread 를 생성했기에 그 자체만으로 thread 생성비용 및 context switching 비용이 많이 들어서 오히려 느려진것 같습니다. 2000개가 아닌 100개, 300개 정도 적정(?)수준의 thread pool 에서는 platform thread 가 더 빠르게 나올겁니다.
- 0
- 1
- 296
질문&답변
스케쥴러 질문드립니다
virtual thread 가 생성될 때 마다 숫자가 하나씩 증가합니다.virtual thread 는 생성->수행->삭제 되므로, 5초마다 새로운 virtual thread 가 생성되어 번호가 1,2,3... 식으로 증가하게 됩니다.virtual thread 실행시 platform thread 를 사용하는데, 질문자님의 cpu core 수는 10개여서 ForkJoinPool-1-worker-1 부터 ForkJoinPool-1-worker-10 까지 나오는 걸로 보입니다. ForkJoinPool 은 platform thread pool 이며, cpu core 수 만큼 만들어집니다.
- 0
- 2
- 237