묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결자바 동시성 프로그래밍 [리액티브 프로그래밍 Part.1]
corePoolSize & maximumPoolSize 수강 중 질문입니다.
corePoolSize & maximumPoolSize - 기본 스레드 & 최대 스레드 22분 35초 정도 듣고 있는데 궁금한게 있습니다.ArrayBlockingQueue에 4개의 태스크가 모두 차면큐에 적재되지 못한 나머지 태스크는 어디서 대기 하나요?(핸들러가 없다는 가정하에) 그리고 max thread 까지 생성되면 큐에 적재되지 못한 나머지 태스크들을 max thread개수 만큼 처리하고 이후 찐으로 초과된 태스크는 처리하지 못해 Exception이 발생하나요? 뭔가 제가 이해를 잘 못하고 있는 것 같은데corePoolSize와 Queue 의 사이즈를 왜 더해서 태스크 개수와 비교하는지 이해를 못하겠어요. 태스크가 큐에 모두 채워지면 나머지 태스크 중 전체 쓰레드 개수 까지는 큐에 적재되지 못해도 처리가 된다로 이해 하면 될까요?아니면 원랜 큐가 다 차면 Exception이 발생하는데 해당 시간대의 예제에선 defaultHandler 가 뭔가 태스크가 모두 차도 쓰레드 개수만큼은 추가로 처리 할 수 있도록 뭔가 처리를 한 걸까요?--> 뒤에 더 보니 worker에서 바로 처리 하는 군요;; 추가로큐에서 태스크가 처리되면 다시 공간이 생길 것 같은데 왜 모두 차는지 이해가 잘 안되요. (제가 뭔가 잘못 알고 있는 걸까요) 강의 너무 좋습니다. 이후 강의도 빨리 내주세요 ㅠ_ㅜ
-
미해결자바 동시성 프로그래밍 [리액티브 프로그래밍 Part.1]
interrupt 스레드 시작안했는데도 걸리나요
sleep 1초 동안 thread1 시작도 안했었는데,어떻게 thread2에서 thread1을 interrupt 해서 결과가 true인지 궁금합니다.다시 말해서 아직 시작도 안한 스레드를 어떻게 interrupt 한걸까요?
-
미해결자바 동시성 프로그래밍 [리액티브 프로그래밍 Part.1]
synchronized 블록 동기화 마지막 예제
데드락 걸릴 수 있을거 같은데 맞나요?thread a: accountA.lockthread b: accountB.lockthread a : accountB.lock (대기)thread b: accountA.lock (대기)
-
미해결자바 동시성 프로그래밍 [리액티브 프로그래밍 Part.1]
SpinLock & Busy Waiting 강의 질문입니다.
안녕하세요! 강의 너무 잘 듣고 있는 수강생입니다.이전 동기화와 CPU의 관계 강의에서는 CPU가 두 개 이상의 명령어를 처리하면 원자성이 보장이 안된다고 설명을 하셨는데, SpinLock & Busy Waiting 강의에서 test_and_set(int *lock) 메서드는 CPU 하드웨어 계층에서 원자성이 보장된다는 게 이해가 잘 가지를 않습니다. test_and_set(int *lock) 이 메서드는 하나의 명령어만 처리하는 건가요??
-
미해결자바 동시성 프로그래밍 [리액티브 프로그래밍 Part.1]
사용자모드와 커널모드 피드백
유저 모드에서 I/O 장치들과 같은 특정 리소스에 접근이 불가한 것을 배웠습니다.스레드가 커널 모드가 필요하지 않는 작업을 수행할때도 어쨌든 CPU를 할당받아서 연산을 할 수 있다는 점도 직관적으로 알 수 있도록 그림이 아래와 같이 바뀌면 어떨까요?
-
미해결자바 동시성 프로그래밍 [리액티브 프로그래밍 Part.1]
cpu 개수만큼 실제로 할당되는지.. 궁금합니다.
강의에서 cpu 개수만큼 데이터 생성하고 병렬처리 하셨는데요.실제로 cpu 개수만큼 java 런타임에 모두 할당이 되나요? https://docs.oracle.com/javase/8/docs/api/java/lang/Runtime.html여기 문서보니까, 자바에 할당된 cpu 개수를 의미하는거 같기도하고요.. chatgpt 는 운영체제에 할당된걸 인식하는거라고 하는데 뭔지 잘모르겠네용
-
미해결고수가 되는 파이썬 : 동시성과 병렬성 문법 배우기 Feat. 멀티스레딩 vs 멀티프로세싱 (Inflearn Original)
4분:59초 질문 그룹쓰레드 (5). 대기중인 작업 -> Queue -> 완료 상태조사 -> 결과 또는 예외 -> 단일화(캡슐화) 에 관해서
그룹쓰레드 (5). 대기중인 작업 -> Queue -> 완료 상태조사 -> 결과 또는 예외 -> 단일화(캡슐화) 에 관해서 궁금한것인데, 쓰레드를 사용할 때 시나리오 - 쓰레드가 여러개 생성되면 GIL로 인해 대기중인 작업은 내부적으로 Queue에 담긴다. - 10개를 실행했을 때 누군가는 완료했고, 누군가는 진행중인지 완료 상태조사를 진행한다. - 플래그 값을 조사해서 결과 또는 예외 등의 결과값을 받아오고 이것을 단일화한다단일화한다는 것을 예시를 들어서 설명해주실 수 있나요?그리고 왜 단일화를 해야하나요??
-
미해결고수가 되는 파이썬 : 동시성과 병렬성 문법 배우기 Feat. 멀티스레딩 vs 멀티프로세싱 (Inflearn Original)
데몬스레드 설명
주로 백그라운드 무한 대기 이벤트 발생 실행하는 부분 담당이란 말이 정확하게 무슨뜻인가요?
-
미해결파이썬 동시성 프로그래밍 : 데이터 수집부터 웹 개발까지 (feat. FastAPI)
비동기 함수를 동기적인 실행으로 만드는 부분 질문입니다
안녕하세요. 강의 잘 보고 있습니다. 다름이 아니라 [섹션1 - 동기 vs 비동기] 강의 내용 중 "비동기 함수로 정의된 것들을 동기적인 실행으로 만드는 부분"을 설명해주셨는데요! 예를 들어, 수업 내용에서 언급된 아래와 같은 코드일 때입니다. import asyncio async def delivery(name, mealtime): print("start:", name) await asyncio.sleep(mealtime) print("end") async def main(): await delivery('A', 10) await delivery('B', 5) await delivery('C', 3)그러면 위 코드를 async def가 아닌 일반적인 동기 함수 def 로 정의해서 아래처럼 동기적으로 프로그래밍한 것이랑 성능적인 차이가 있나요? 비동기 함수로 정의하고 굳이 동기적인 프로그래밍을 작성하는 경우가 예시로 뭐가 있으려나요..? 단순히 생각했을 때 어차피 동기적인 프로그래밍으로 작성할 것이라면 애초에 동기함수로 작성하는 게 코드를 읽는 다른 사람들에게도 좀 더 헷갈리지 않게 하는 게 아닐까..싶은데 궁금합니다! import time def delivery(name, mealtime): print("start:", name) time.sleep(mealtime) print("end") async def main(): delivery('A', 10) delivery('B', 5) delivery('C', 3)
-
미해결1시간만에 끝내는 virtual thread in spring boot
스케쥴러 질문드립니다
위 그림처럼 동일한 스케쥴러 1개가콘솔 출력에서는 mySch-2, 3, 4 형태로 계속 숫자가 증가하는데, 이것은 동일한 스케쥴러가 예를들어 2번째 구동, 3번째 구동 한다는 의미일까요? 아니면 5초마다 스케쥴러가 구동되지만 각 구동은 개별적인 가상 스레드에 의해 구동되고 삭제되어 숫자가 증가하는 의미일까요?
-
미해결1시간만에 끝내는 virtual thread in spring boot
Performance 테스트에서 CPU 작업도 Virtual이 빠른것 같습니다
2000바퀴 돌릴때Platform은 279000ms가 나오는데Virtual은 97480ms가 나오네요
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
docker restart시에 java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)
2024-04-22 21:51:48.515 ERROR 1928 --- [ main] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Exception during pool initialization. java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YESTerminal상에서 아래와 같이 Docker를 재시동해서Docker restart 8550a9a141fdDocker ps로 아래와 같이 제대로 동작하는 것도 확인했고igwangmin@igwangmin-ui-MacBookPro ~ % docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8550a9a141fd mysql "docker-entrypoint.s…" 2 days ago Up 17 minutes 0.0.0.0:3306->3306/tcp, 33060/tcp mysql컨테이너가 잘 작동하는것도 아래처럼 보았습니다.다른 게시물에서 알려주신 방법으로 Terminal을 확인했을때 아래와 같이 로그인을 하고 databases를 정상적으로 사용했지만 서버를 가동시켰을 때 하루 전에는 잘 작동했지만 다시 시작을 해보니 아래와 같이 오류가 발생합니다. 아래의 오류 구문이 발생합니다. 혹시 다른 방법이 있을까요?java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)
-
해결됨재고시스템으로 알아보는 동시성이슈 해결방법
네임드락 테스트 오류
저는 @Query 어노테이션의 값을 아래와 같이 강의 내용대로 따라했을 때 오류가 발생해서 public interface LockRepository extends JpaRepository<Stock, Long> { @Query(value = "select get_lock(:key, 3000)", nativeQuery = true) void getLock(String key); @Query(value = "select release_lock(:key)", nativeQuery = true) void releaseLock(String key); }아래와 같이 정합성이 맞지 않아서 테스트를 통과하지 못했습니다.그래서 구문을 아래와 같이 바꿔서 통과했는데 참고 하시길 바랍니다. ?1의 값은 key로의 값으로 고정되어 있는데 이럴 경우 문제가 없을지 궁금합니다.@Query(value = "select get_lock(?1, 3000)", nativeQuery = true) void getLock(String key); @Query(value = "select release_lock(?1)", nativeQuery = true) void releaseLock(String key);
-
미해결운영체제 공룡책 강의
강의에서 사용된 Source code는 어디서 볼 수 있을까요?
안녕하세요 교수님, 좋은 강의 무료로 제공해 주셔서 정말로 감사드립니다. 강의에서 사용된 코드 중 일부는 교재에 수록된 그대로인데, 또 일부는 교재에 없는 것 같습니다. (ch.4 Thread를 보여주는 Java 예시 코드)혹 github 등에 source code를 업로드하신 것이 있을까요? 감사합니다.
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
Docker restart시 spring boot 연동이 안됩니다.
igwangmin@igwangmin-ui-MacBookPro ~ % docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8550a9a141fd mysql "docker-entrypoint.s…" 15 hours ago Exited (0) 11 hours ago mysql igwangmin@igwangmin-ui-MacBookPro ~ % docker container restart 8550a9a141fdaee67b6f7c586a24085c98a9b99512cb7a8901f0c23cf9082536 8550a9a141fdaee67b6f7c586a24085c98a9b99512cb7a8901f0c23cf9082536 igwangmin@igwangmin-ui-MacBookPro ~ % docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8550a9a141fd mysql "docker-entrypoint.s…" 15 hours ago Up 4 minutes 0.0.0.0:3306->3306/tcp, 33060/tcp mysqlDocker restart를 한 후 Spring을 가동했을 때 아래와 같은 오류가 발생합니다. 2024-04-21 09:25:02.485 INFO 1378 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting... 2024-04-21 09:25:03.641 ERROR 1378 --- [ main] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Exception during pool initialization. java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES) at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129) ~[mysql-connector-java-8.0.29.jar:8.0.29] at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122) ~[mysql-connector-java-8.0.29.jar:8.0.29] at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:828) ~[mysql-connector-java-8.0.29.jar:8.0.29] at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:448) ~[mysql-connector-java-8.0.29.jar:8.0.29] at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:241) ~[mysql-connector-java-8.0.29.jar:8.0.29] 기존에 알려주신 방법인 아래와 같은 터미널 창에서 입력후 재실행하였으나 똑같은 오류가 발생해 혹시 다른 방법이 존재할까요igwangmin@igwangmin-ui-MacBookPro Mikor % docker exec -it mysql bash bash-4.4# mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 8 Server version: 8.3.0 MySQL Community Server - GPL Copyright (c) 2000, 2024, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> use stock_example; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | stock_example | | sys | +--------------------+ 5 rows in set (0.00 sec) mysql> use stock_example; Database changed mysql> Spring 버전은 아래와 같고 plugins { id 'org.springframework.boot' version '2.7.1' id 'io.spring.dependency-management' version '1.0.11.RELEASE' id 'java' } group = 'com.shop' version = '0.0.1-SNAPSHOT' sourceCompatibility = '11' configurations { compileOnly { extendsFrom annotationProcessor } } 도커 버전은 아래와 같습니다. igwangmin@igwangmin-ui-MacBookPro ~ % docker version Client: Docker Engine - Community Version: 26.0.0 API version: 1.44 (downgraded from 1.45) Go version: go1.22.1 Git commit: 2ae903e86c Built: Wed Mar 20 15:10:03 2024 OS/Arch: darwin/arm64 Context: desktop-linux Server: Docker Desktop 4.28.0 (139021) Engine: Version: 25.0.3 API version: 1.44 (minimum version 1.24) Go version: go1.21.6 Git commit: f417435 Built: Tue Feb 6 21:14:22 2024 OS/Arch: linux/arm64 Experimental: false containerd: Version: 1.6.28 GitCommit: ae07eda36dd25f8a1b98dfbf587313b99c0190bb runc: Version: 1.1.12 GitCommit: v1.1.12-0-g51d5e94 docker-init: Version: 0.19.0 GitCommit: de40ad0
-
미해결자바 동시성 프로그래밍 [리액티브 프로그래밍 Part.1]
뮤텍스 수도 코드에 대한 질문
락을 점유중인 스레드만이 락을 해제할 수 있으므로 release에 while문은 필요없지않나요? 1. 락을 점유한 스레드만이 release할 수 있음.2. 즉 release할때는 하나의 스레드만이 접근 가능함.3. 고로 release에 있는 while문은 필요가없음.추가로 제공해주신 아래 코드에서 lock 변수가 강의에서 보여주신 수도코드에서는 synchronized가 lock을 의미하고 value를 의미하는거죠?? 용어가 헷갈려서 문의드립니다. public class Mutex { private boolean lock = false; public synchronized void acquired() { while (lock) { try { wait(); } catch (InterruptedException e) { e.printStackTrace(); } } this.lock = true; } public synchronized void release() { this.lock = false; this.notify(); } }
-
미해결자바 동시성 프로그래밍 [리액티브 프로그래밍 Part.1]
SimpleThreadPool에 대한 질문
아래 코드에서 if이 왜 필요한지 궁금합니다.while문을 빠져나왔다는것은 이미 taskQueue가 비어있지않단는 뜻 아닌가요? synchronized (taskQueue) { while (taskQueue.isEmpty() && !isShutdown) { try { taskQueue.wait(); // 작업이 있을 때까지 대기 } catch (InterruptedException e) { Thread.currentThread().interrupt(); } } if (!taskQueue.isEmpty()) { task = taskQueue.poll(); // 작업 큐에서 작업 가져옴 } else { continue; // 작업이 없으면 다시 대기 } }
-
미해결자바 동시성 프로그래밍 [리액티브 프로그래밍 Part.1]
서버가 이중화인 경우
안녕하세요. synchronized, cas 등 동시성 이슈를 해결하는 기법들인데, 서버가 한대인 경우에 한해서만 위 기법들이 적용될 것 같은데요. 제가 생각한게 맞을까요?서버를 여러 개로 실행하는 경우 DB 자체에 락을 걸고 사용해야 하나요?
-
미해결자바 동시성 프로그래밍 [리액티브 프로그래밍 Part.1]
코어갯수..
int cpuCores = Runtime.getRuntime().availableProcessors();챕터 01에 exam01 코드 실행시cpuCores가 12개 로 나오는 이유가뭘까요시피유가 6코어에 12쓰레드인데쓰레드 갯수로 나오는거같아요..
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
Docker의 mysql과 스프링 연동이 안됩니다 (윈도우)
docker pull mysql:8.3.0 $ docker run --name mysql-container -e MYSQL_ROOT_PASSWORD=1234 -d -p 3305:3305 mysql:8.3.0 ... use stock_example로컬에 mysql이 이미 깔려있어서 포트번호를 3305로 바꿔서 만들었어요. 위와같이 도커 초기설정 후 만든 yml 파일입니다spring: jpa: hibernate: ddl-auto: create show-sql: true datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://127.0.0.1:3305/stock_example username: root password: 1234 logging: level: org: hibernate: SQL: DEBUG type: descriptor: sql: BasicBinder: TRACE 이렇게하고 Application을 실행했는데 com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failureThe last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. at com.mysql.cj.jdbc.exceptions.SQLError.createCommunicationsException(SQLError.java:174) ~[mysql-connector-j-8.3.0.jar:8.3.0] at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:64) ~[mysql-connector-j-8.3.0.jar:8.3.0] at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:815) ~[mysql-connector-j-8.3.0.jar:8.3.0] at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:438) ~[mysql-connector-j-8.3.0.jar:8.3.0] at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:241) ~[mysql-connector-j-8.3.0.jar:8.3.0] at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:189) ~[mysql-connector-j-8.3.0.jar:8.3.0] at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:138) ~[HikariCP-5.0.1.jar:na] at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:359) ~[HikariCP-5.0.1.jar:na] at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:201) ~[HikariCP-5.0.1.jar:na] at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:470) ~[HikariCP-5.0.1.jar:na] at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:561) ~[HikariCP-5.0.1.jar:na] at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:100) ~[HikariCP-5.0.1.jar:na] at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112) ~[HikariCP-5.0.1.jar:na] at org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl.getConnection(DatasourceConnectionProviderImpl.java:122) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess.obtainConnection(JdbcEnvironmentInitiator.java:428) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcIsolationDelegate.delegateWork(JdbcIsolationDelegate.java:61) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.getJdbcEnvironmentUsingJdbcMetadata(JdbcEnvironmentInitiator.java:276) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:107) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:68) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:130) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:263) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:238) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:215) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] at org.hibernate.boot.model.relational.Database.<init>(Database.java:45) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.getDatabase(InFlightMetadataCollectorImpl.java:223) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.<init>(InFlightMetadataCollectorImpl.java:191) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:170) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:1432) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1503) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:75) ~[spring-orm-6.1.5.jar:6.1.5] at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:390) ~[spring-orm-6.1.5.jar:6.1.5] at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:409) ~[spring-orm-6.1.5.jar:6.1.5] at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:396) ~[spring-orm-6.1.5.jar:6.1.5] at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:366) ~[spring-orm-6.1.5.jar:6.1.5] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1833) ~[spring-beans-6.1.5.jar:6.1.5] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1782) ~[spring-beans-6.1.5.jar:6.1.5] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:600) ~[spring-beans-6.1.5.jar:6.1.5] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:522) ~[spring-beans-6.1.5.jar:6.1.5] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326) ~[spring-beans-6.1.5.jar:6.1.5] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-6.1.5.jar:6.1.5] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324) ~[spring-beans-6.1.5.jar:6.1.5] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) ~[spring-beans-6.1.5.jar:6.1.5] at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1234) ~[spring-context-6.1.5.jar:6.1.5] at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:952) ~[spring-context-6.1.5.jar:6.1.5] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:624) ~[spring-context-6.1.5.jar:6.1.5] at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) ~[spring-boot-3.2.4.jar:3.2.4] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754) ~[spring-boot-3.2.4.jar:3.2.4] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:456) ~[spring-boot-3.2.4.jar:3.2.4] at org.springframework.boot.SpringApplication.run(SpringApplication.java:334) ~[spring-boot-3.2.4.jar:3.2.4] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1354) ~[spring-boot-3.2.4.jar:3.2.4] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1343) ~[spring-boot-3.2.4.jar:3.2.4] at com.example.stock.StockApplication.main(StockApplication.java:10) ~[main/:na]Caused by: com.mysql.cj.exceptions.CJCommunicationsException: Communications link failureThe last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. 이런 오류가 나네요 ㅠㅠ 보면 연결이 안되는거 같은데 어디서 문제일까요..