묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
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. 이런 오류가 나네요 ㅠㅠ 보면 연결이 안되는거 같은데 어디서 문제일까요..
-
미해결운영체제 공룡책 강의
퀴즈 1번 2번
1번 답이 2인데 이해가 안가요..혹시 답이 1인데 잘못되거나 아니면 2^1 = 2일까요?2번은 최소한의 논리 게이트 집합은 NOT, AND, OR 게이트고, 5번 nand는 not+and니까 답이 아니지않나요?
-
미해결자바 동시성 프로그래밍 [리액티브 프로그래밍 Part.1]
CAS 알고리즘 질문
안녕하세요. CAS 이해와 활용 -1 편 강의를 듣다가 질문 드립니다. 3분쯤에 PDF 자료에 'CAS는 CPU 캐시와 메인메모리의 두 값을 비교하고 그 값이 동일할 경우 새로운 값으로 교체하는 동기화 연산으로 여러 스레드가 공유하는 메모리 영역을 보호하는 데 사용된다'라고 나와있는습니다.그런데 이후 강의를 듣다 보면 Main Memory Value, Expected Value, New Value 이렇게 세 가지 키워드로 CAS가 진행되더라구요. 여기서 Expected Value가 PDF 설명에 나와 있는 'CPU 캐시'를 의미하는 것 같은데요(강의 19분 쯤)기대값은 특정 블록 안에 있는 지역 변수인데 지역 변수는 JVM 스택에 저장되는 걸로 알고 있습니다. JVM 스택에 저장되는 것이 CPU 캐시인가요? 어떤 관계인지 잘 모르겠어서 질문을 드립니다ㅠ
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
Lock 해제 시점이 궁금합니다.
안녕하세요!Lock을 해제하는 시점이 궁금합니다.아래 단계에서 어느 시점 이전 혹은 이후 인지 알려주시면 감사드리겠습니다. 1) 트랜잭션 시작2) Lock 획득 후 비즈니스 로직 실행3) 트랜잭션 커밋 (혹시, 3번 이전에 Lock을 해제할 경우 이전과 동일한 동시성 문제가 발생할 것 같은데.. 우선 답변부탁드립니다!)
-
해결됨모든 개발자의 실무를 위한 올인원 기본기 클래스
코드 github
실전프로젝트에서 사용한 코드를 볼수있는 github 주소가있을까요?? 제가 못찾는건가요 ㅠㅠ
-
미해결모든 개발자의 실무를 위한 올인원 기본기 클래스
alembic, dto 위치
안녕하세요!! alembic 을 적용할때는 infrastructure - database - alembic 폴더 이런식으로 구조짜면되는건가요?? 또 dto 는 어디에 위치해야하나요? dto, domain entity, orm entity 모두 필요한거아닌가요?!?! 강의에 dto 가 없어서 헷갈려서 질문드립니다...!! 혹시 domain entity 를 dto 개념으로 사용하신건가요??
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
Redisson을 Ebedded로 실행하는 방법이 있을까요?
안녕하세요.Redisson을 이용해서 분산락을 적용하고 있습니다.로컬과 테스트 코드를 실행할 때, Redis를 로컬에서 띄우지 않으면 사용할 수가 없습니다. 그래서 implementation 'com.github.codemonstur:embedded-redis:1.4.2' 의존성을 추가해서 Redis를 embedded로 실행할 수 있도록 했습니다. 하지만 Redisson은 연결이 되지 않는것처럼 보여서요. 혹시 방법이 있을까요? 만약, embedded로 실행할 수 없다면 로컬, 테스트에서는 어떤 방식으로 진행하시는지 경험적 의견을 여쭤보고 싶습니다. 감사합니다. Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'redisson' defined in class path resource [org/redisson/spring/starter/RedissonAutoConfigurationV2.class]: Failed to instantiate [org.redisson.api.RedissonClient]: Factory method 'redisson' threw exception with message: java.util.concurrent.ExecutionException: org.redisson.client.RedisConnectionException: Unable to connect to Redis server: localhost/127.0.0.1:6379
-
미해결운영체제 공룡책 강의
24:35초에 설명하는 time-sharing이 책에서 다루는 내용과 달라요.
Timesharing is allowing many users to interact concurrently with the single computerMultitasking is when multiple tasks are preformed during the same period of time in a single processor.책이나 다른 자료들에서는 time sharing 이 여러 유저들에게 일정한 시간을 단위로 cpu 를 점유할 수 있게 한다고 하는데, 이 강의에서 다루는 내용은 프로세서들을 메모리에 다 저장해놓고, 시간을 나눠서 사용하는 것이 time sharing 이라고 했어요, 유저들 간의 사용성이 언급되지 않았어요.혹시 강의 내용이 잘못된것인가 저의 이해가 부족한 것인가 싶어서 질문 드립니다.감사합니다.
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
테스트가 실패해요
하다가 안돼서 깃허브 소스 복붙하고 돌려도 테스트가 실패해요.
-
해결됨재고시스템으로 알아보는 동시성이슈 해결방법
docker ps시에 실행되는 이미지가 없다고 나옵니다.
docker ps시에 실행되는 이미지가 아래와 같이 존재하지 않습니다. 혹시 docker를 homebrew를 이용해 설치 한 후 desktop버전도 사이트에서 직접 깔아서 문제가 되는걸까여?
-
해결됨재고시스템으로 알아보는 동시성이슈 해결방법
docker version 오류
homebrew로 docker 설치하는 과정에서 docker version 확인 시에 아래와 같이 오류가 발생합니다. igwangmin@igwangmin-ui-MacBookPro ~ % brew list ==> Formulaeca-certificates libevent protobuf@21docker libfido2 xzdocker-completion lz4 zlibicu4c mysql zstdlibcbor openssl@3 ==> Casksdbeaver-community postmanigwangmin@igwangmin-ui-MacBookPro ~ % brew link docker Warning: Already linked: /opt/homebrew/Cellar/docker/26.0.0To relink, run: brew unlink docker && brew link dockerigwangmin@igwangmin-ui-MacBookPro ~ % docker versionClient: Docker Engine - CommunityVersion: 26.0.0API version: 1.45Go version: go1.22.1Git commit: 2ae903e86cBuilt: Wed Mar 20 15:10:03 2024OS/Arch: darwin/arm64Context: defaultCannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? 그래서 docker 자체를 아래와 같이 삭제하고 새로 시작했는데도 계속 같은 오류가 발생합니다.
-
미해결자바 동시성 프로그래밍 [리액티브 프로그래밍 Part.1]
lock 객체 질문
lock 인터페이스를 사용할 때 해당 클래스 인스턴스 변수로 선언하는데 이렇게 되면 선언한 클래스에 대한 고유 락을 가지는건가요? synchronized와 같은 방식과 같다면 상관없는데 또 다른 방식으로 생각해야 하나 싶어서요
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
테스트 수행 결과가 항상 에러가 발생합니다.
안녕하세요. 해당 강의를 듣고 있는 수강생입니다. 제가 작성한 코드에서는 계속 테스트가 실패하여 강사님이 올려주신 코드를 기반으로 테스트를 재수행하였습니다. 그런데 여전히 해당 화면처럼 테스트가 실패하여서 어떤 문제일까하여 질문드립니다.코드 : https://github.com/sangyongchoi/stock-example 이슈 . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.7.0) 2024-03-24 19:26:47.245 INFO 5004 --- [ main] c.e.s.facade.NamedLockStockFacadeTest : Starting NamedLockStockFacadeTest using Java 17.0.10 on windows with PID 5004 (started by ac2di in C:\Users\ac2di\Desktop\vscode\stock-example-main) 2024-03-24 19:26:47.247 INFO 5004 --- [ main] c.e.s.facade.NamedLockStockFacadeTest : No active profile set, falling back to 1 default profile: "default" 2024-03-24 19:26:48.250 INFO 5004 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode! 2024-03-24 19:26:48.252 INFO 5004 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode. 2024-03-24 19:26:48.519 INFO 5004 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 257 ms. Found 2 JPA repository interfaces. 2024-03-24 19:26:48.532 INFO 5004 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode! 2024-03-24 19:26:48.535 INFO 5004 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data Redis repositories in DEFAULT mode. 2024-03-24 19:26:48.553 INFO 5004 --- [ main] .RepositoryConfigurationExtensionSupport : Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.example.stock.repository.LockRepository. If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository. 2024-03-24 19:26:48.554 INFO 5004 --- [ main] .RepositoryConfigurationExtensionSupport : Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.example.stock.repository.StockRepository. If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository. 2024-03-24 19:26:48.554 INFO 5004 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 8 ms. Found 0 Redis repository interfaces. 2024-03-24 19:26:49.201 INFO 5004 --- [ main] o.hibernate.jpa.internal.util.LogHelper : HHH000204: Processing PersistenceUnitInfo [name: default] 2024-03-24 19:26:49.275 INFO 5004 --- [ main] org.hibernate.Version : HHH000412: Hibernate ORM core version 5.6.9.Final 2024-03-24 19:26:49.465 INFO 5004 --- [ main] o.hibernate.annotations.common.Version : HCANN000001: Hibernate Commons Annotations {5.1.2.Final} 2024-03-24 19:26:49.622 INFO 5004 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting... 2024-03-24 19:26:49.962 INFO 5004 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed. 2024-03-24 19:26:49.986 INFO 5004 --- [ main] org.hibernate.dialect.Dialect : HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect 2024-03-24 19:26:50.663 DEBUG 5004 --- [ main] org.hibernate.SQL : drop table if exists stock Hibernate: drop table if exists stock 2024-03-24 19:26:50.708 DEBUG 5004 --- [ main] org.hibernate.SQL : create table stock (id bigint not null auto_increment, product_id bigint, quantity bigint, version bigint, primary key (id)) engine=InnoDB Hibernate: create table stock (id bigint not null auto_increment, product_id bigint, quantity bigint, version bigint, primary key (id)) engine=InnoDB 2024-03-24 19:26:50.762 INFO 5004 --- [ main] o.h.e.t.j.p.i.JtaPlatformInitiator : HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] 2024-03-24 19:26:50.775 INFO 5004 --- [ main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default' 2024-03-24 19:26:51.083 INFO 5004 --- [ main] org.redisson.Version : Redisson 3.17.4 2024-03-24 19:26:51.313 INFO 5004 --- [isson-netty-2-6] o.r.c.pool.MasterPubSubConnectionPool : 1 connections initialized for localhost/127.0.0.1:6379 2024-03-24 19:26:51.468 INFO 5004 --- [sson-netty-2-20] o.r.c.pool.MasterConnectionPool : 24 connections initialized for localhost/127.0.0.1:6379 2024-03-24 19:26:52.949 WARN 5004 --- [ main] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning 2024-03-24 19:26:54.634 INFO 5004 --- [ main] o.s.b.a.e.web.EndpointLinksResolver : Exposing 1 endpoint(s) beneath base path '/actuator' 2024-03-24 19:26:54.714 INFO 5004 --- [ main] c.e.s.facade.NamedLockStockFacadeTest : Started NamedLockStockFacadeTest in 7.788 seconds (JVM running for 9.06) 2024-03-24 19:26:55.040 DEBUG 5004 --- [ main] org.hibernate.SQL : insert into stock (product_id, quantity, version) values (?, ?, ?) Hibernate: insert into stock (product_id, quantity, version) values (?, ?, ?) 2024-03-24 19:26:55.051 TRACE 5004 --- [ main] o.h.type.descriptor.sql.BasicBinder : binding parameter [1] as [BIGINT] - [1] 2024-03-24 19:26:55.052 TRACE 5004 --- [ main] o.h.type.descriptor.sql.BasicBinder : binding parameter [2] as [BIGINT] - [100] 2024-03-24 19:26:55.052 TRACE 5004 --- [ main] o.h.type.descriptor.sql.BasicBinder : binding parameter [3] as [BIGINT] - [0] 2024-03-24 19:26:55.251 DEBUG 5004 --- [ main] org.hibernate.SQL : select stock0_.id as id1_0_0_, stock0_.product_id as product_2_0_0_, stock0_.quantity as quantity3_0_0_, stock0_.version as version4_0_0_ from stock stock0_ where stock0_.id=? Hibernate: select stock0_.id as id1_0_0_, stock0_.product_id as product_2_0_0_, stock0_.quantity as quantity3_0_0_, stock0_.version as version4_0_0_ from stock stock0_ where stock0_.id=? 2024-03-24 19:26:55.253 TRACE 5004 --- [ main] o.h.type.descriptor.sql.BasicBinder : binding parameter [1] as [BIGINT] - [1] 2024-03-24 19:26:55.316 DEBUG 5004 --- [ main] org.hibernate.SQL : select stock0_.id as id1_0_, stock0_.product_id as product_2_0_, stock0_.quantity as quantity3_0_, stock0_.version as version4_0_ from stock stock0_ Hibernate: select stock0_.id as id1_0_, stock0_.product_id as product_2_0_, stock0_.quantity as quantity3_0_, stock0_.version as version4_0_ from stock stock0_ 2024-03-24 19:26:55.334 DEBUG 5004 --- [ main] org.hibernate.SQL : delete from stock where id=? and version=? Hibernate: delete from stock where id=? and version=? 2024-03-24 19:26:55.335 TRACE 5004 --- [ main] o.h.type.descriptor.sql.BasicBinder : binding parameter [1] as [BIGINT] - [1] 2024-03-24 19:26:55.335 TRACE 5004 --- [ main] o.h.type.descriptor.sql.BasicBinder : binding parameter [2] as [BIGINT] - [0] 2024-03-24 19:26:55.437 INFO 5004 --- [ionShutdownHook] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default' 2024-03-24 19:26:55.441 INFO 5004 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated... 2024-03-24 19:26:55.514 INFO 5004 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed.테스트 수행 시 콘솔 출력 창도 같이 첨부드립니다. 감사합니다.
-
미해결자바 동시성 프로그래밍 [리액티브 프로그래밍 Part.1]
사용자 모드 커널 모드 CPU 반환 시점이 궁금합니다.
궁금한 점강의 내용에서 I/O작업이 필요할 경우 System Call 요청 -> Mode Bit 0 변경 -> I/O 리소스 할당의 과정으로 시스템이 호출된다고 되어있는데 CPU를 할당 받을 때도 커널모드가 필요한지 궁금합니다. 이유강의 자료를 확인해보면 다른 리소스들과 같이 CPU가 존재
-
미해결성공적인 진짜 iOS 개발자 되기 [기초부터 실무까지]
TodoCell UIview 생성 후 연결 시 오류
이 빨간 글씨 오류 때문에 되지 않는데 해결을 어떻게 하나요??