์ผ์ฑ์ ์, LG CNS, LG ์ ์ ๋ฑ์ ๊ฑฐ์ณ ํ์ฌ๋ ๋๊ธฐ์ S ์ฌ์์ ๋ฐฑ์๋ ๊ฐ๋ฐ์ ๋ฌด๋ฅผ ํ๊ณ ์์ต๋๋ค.
๊ฐ์์ค๋น๋ฅผ ํ๋ฉด์ ์ค์ค๋ก ๋ ๊น์ด ์๊ฒ ๋์ด ๊ฐ์ํ๋ ๊ฑธ ์ข์ํ๋ ๊ฐ๋ฐ์์ ๋๋ค. ๐ ๐ ๐
youtube: https://www.youtube.com/@HelloWorldStudy
Courses
Reviews
- WebSocket, STOMP in Spring Boot
- Are you properly utilizing springboot?
- Developing a spring boot rest api service in just 1 hour
- Developing a spring boot rest api service in just 1 hour
- Are you properly utilizing springboot?
Posts
Q&A
@Controller ์์ฒญํ๋ ๋ฐฉ์์ ๋ํด ๊ถ๊ธํฉ๋๋ค.
์ธํ๋ฐ์์ ๋ต๋ณ์ด ์ ๋ฌ๋ ค์๋ค์.์๋ ๊ณต์ ์ฌ์ดํธ์์ ์์ธํ ์ค๋ช ์ ์ ์ ์์ต๋๋ค.https://docs.spring.io/spring-framework/reference/web/webmvc/mvc-controller/ann-methods/requestparam.html๋ค์ํ annotation ๋ค์ https://docs.spring.io/spring-framework/reference/web/webmvc/mvc-controller/ann-methods.html ์ ๋ชจ๋ ๋์์์ต๋๋ค.
- 1
- 2
- 16
Q&A
H2 ์ ์ ์๋ฌ
์ ์๋ฌ๋ item ํ ์ด๋ธ์ด ์กด์ฌํ์ง ์์์ ๋ฐ์ํฉ๋๋ค.h2 console (์น๋ธ๋ผ์ฐ์ ) ์์ item table ์ ๋จผ์ ๋ง๋ค๊ณ ์ฟผ๋ฆฌ๋ฅผ ์ํํ๋ฉด ๋ ๋ฏํฉ๋๋ค. ์ข ๋ ์์ธํ ํด๊ฒฐ์ฑ ์ ์ํ์๋ฉด, ์ด๋๊น์ง ์ฑ๊ณตํ๊ณ ์ด๋ ๋ถ๋ถ์์ ์๋ฌ๊ฐ๋๋ค. ์ ๊ฐ์ด ๋๋ฆ๋๋ก ํ์ธํ ๊ณผ์ ์ ์์ธํ ๋จ๊ฒจ์ฃผ์ ์ผ ์ข๊ฒ ์ต๋๋ค.(๋จ๊ฒจ์ฃผ์ github ๋ก ์ ์ํ๋ฉด 404 ์๋ฌ๊ฐ ๋ฉ๋๋ค. )
- 0
- 3
- 60
Q&A
item์ id๋ก getํ๋๋ฐ 1์ ๋ฃ์์ ๋ 500์๋ฌ๊ฐ ๋์์.
์์ธ๊ฐ ๋ฐ์ํ๊ฒ ๊ฐ์๋ฐ, ์์ธ๋ฐ์์์ ์ intellj ์ console ์ ์ฐํ stacktrace ๋ฅผ ๋ณด๋ฉด ์๋ฌ๋ ์ฝ๋ ๋ฐ ๋ผ์ธ์ ์ ์ ์์ต๋๋ค. ํ๋ฒ ๋ด๋ณด์ธ์. ์์๋๋ ์์ธ์...DB ์ 1 ์ด๋ผ๋ id ๊ฐ์ผ๋ก ๋ ๋ฐ์ดํฐ๊ฐ ์๋๋ฐ, ์ด๊ฑธ ์ฝ์ผ๋ ค๋ค๊ฐ null pointer exception ์ด ๋ฐ์ํ ์ ์์ต๋๋ค. ์ฝ๋๋ฅผ ๋ณด๋ฉด select ๋ง ์ด๊ณ insert ๋ฌธ์ ์๋๋ฐ, DB ์ ๊ฐ์ ์๋์ผ๋ก ์ฟผ๋ฆฌ๋ฌธ์ผ๋ก ์ ๋ ฅํ๋์?๋ณด๋ค ์ ํํ ์์ธ์ stacktrace ๋ฅผ ๋ณด๋ฉด ์ ์ ์์ต๋๋ค. :)
- 0
- 1
- 62
Q&A
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
- 135
Q&A
swagger spring boot 3 ์ ์ฉ run ์คํ ์๋ฌ
์ ๊ฐ ๋ฐฉ๊ธ springboot 3.4.3 ์ผ๋ก ๋ณ๊ฒฝํ๊ณ swagger 2.8.5๋ก ๋ณ๊ฒฝํ๋ฉด ์๋์ฒ๋ผ ์ ๋ค์ด๋ฐ์์ง๋๋ค. github ์ ์ฌ๋ฆฐ ์ฝ๋ ๊ทธ๋๋ก๋ฅผ ์ฌ์ฉํ์ ๋ ๋ฌธ์ ๊ฐ ์๋์ง, ๋ฒ์ ๋ง ์ฌ๋ฆฌ๋ฉด ๋ฌธ์ ์ธ์ง ๋ฑ์ ํ์ธํด๋ณด์ธ์.(์ฌ์ง)
- 0
- 2
- 157
Q&A
๋ค์ ๊ฐ์๋ฅผ ์ค๋นํ์ ๋ค๋ฉด ์์ง์ข ๋์ฌ์ฃผ์ค ์ ์์ผ์ ๊ฐ์..?ใ ใ ใ
๋ณธ ๊ฐ์๊ฐ ์ ๊ฐ ์ธํ๋ฐ์ ์ฌ๋ฆฐ ์ฒซ๋ฒ์งธ ๊ฐ์๋ผ์ ์๋์ด ๋ฎ๊ฒ ๋ นํ๋์์ต๋๋ค. ใ กใ ์ ๊ฐ ์ดํ์ ์ฌ๋ฆฐ ๋ค๋ฅธ ๊ฐ์๋ค์ ์๋๋ฌธ์ ๋ ํด๊ฒฐํ์์ต๋๋ค. ์ ๋ ์์ํ๋ค์ ใ ใ ก
- 0
- 2
- 179
Q&A
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
- 470
Q&A
pinned ํ์ธ๋ฒ
https://docs.oracle.com/en/java/javase/21/core/virtual-threads.html#GUID-2BCFC2DD-7D84-4B0C-9222-97F9C7C6C521์ oracle guide ์๋ ๋ช ํํ ์ ํ์์ง ์์์ ์ ๋ ์ ๋ชฐ๋๋ค์. ์ ๋ณด ๊ฐ์ฌํฉ๋๋ค.
- 0
- 3
- 312
Q&A
1๊ฐ ์ฑ๋ฅ๋น๊ต ์ง๋ฌธ
๋ค ๋ง์ต๋๋ค. 500๊ฐ๋ก ๋๋ฆฌ๋ฉด ๋๋ค ์ฑ๋ฅ์ด ๋น์ทํ๊ฒ ๋์ฌ๊ฒ๋๋ค. ๊ทธ๋ฌ๋ 500๊ฐ๊ฐ ์๋๋ผ 1๋ง๊ฐ ์ฒ๋ผ ์ซ์๊ฐ ๋๋ฌด ์ปค์ ธ๋ฒ๋ฆฌ๋ฉด virtual thread ๊ฐ ํจ์ฌ ๋นจ๋ผ์ง๋๋ค. ์ ์ผ ์ฒ์๋์ค๋ ์ฑ๋ฅ ๋น๊ต์์์ intro ์ฑ๊ฒฉ์ด๋ผ์ ์์ธํ ์ค๋ช ์ ์๋ตํ๊ฒ์ด๊ณ , ๋ค์ชฝ ๊ฐ์ ๋ค ๋ณด์๋ฉด ํน์ ๊ฐฏ์ ์ด์์ platform thread ์์ฑ์ ์ฑ๋ฅ ํ๊ณ๊ฐ ์๋๊ฑธ ์ ์ ์์๊ฒ๋๋ค. :)
- 0
- 1
- 304
Q&A
Performance ํ ์คํธ์์ CPU ์์ ๋ Virtual์ด ๋น ๋ฅธ๊ฒ ๊ฐ์ต๋๋ค
2000๋ฐํด๋ผ๋๊ฑด platform thread pool size๋ 2000๊ฐ๋ก ์ค์ ํ์๊ฒ ๊ฐ์ต๋๋ค. ๋๋ฌด ๋ง์ platform thread ๋ฅผ ์์ฑํ๊ธฐ์ ๊ทธ ์์ฒด๋ง์ผ๋ก thread ์์ฑ๋น์ฉ ๋ฐ context switching ๋น์ฉ์ด ๋ง์ด ๋ค์ด์ ์คํ๋ ค ๋๋ ค์ง๊ฒ ๊ฐ์ต๋๋ค. 2000๊ฐ๊ฐ ์๋ 100๊ฐ, 300๊ฐ ์ ๋ ์ ์ (?)์์ค์ thread pool ์์๋ platform thread ๊ฐ ๋ ๋น ๋ฅด๊ฒ ๋์ฌ๊ฒ๋๋ค.
- 0
- 1
- 316