묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
H2 DB 관련 문의입니다.
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요. 이번에 JPA를 시작하는 학생입니다.H2 DB 실행시 계속 연결할 수 없다고 나오는데 혹시 해결 방법을 알 수 있을까요? 화면 첨부합니다현재 네이버 웨일 브라우저를 사용하고 있는데 크롬에서도 동일 현상이 발생했습니다.감사합니다.
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
26강 서버실행 오류
Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.2024-06-28 18:38:36.868 ERROR 35116 --- [ main] o.s.boot.SpringApplication : Application run failedorg.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'dataSourceScriptDatabaseInitializer' defined in class path resource [org/springframework/boot/autoconfigure/sql/init/DataSourceInitializationConfiguration.class]: Unsatisfied dependency expressed through method 'dataSourceScriptDatabaseInitializer' parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.zaxxer.hikari.HikariDataSource]: Factory method 'dataSource' threw exception; nested exception is java.lang.IllegalStateException: Cannot load driver class: com.mysql.cj.jdbc.Driver at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:800) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:541) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1352) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1195) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:582) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:322) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1154) ~[spring-context-5.3.24.jar:5.3.24] at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:908) ~[spring-context-5.3.24.jar:5.3.24] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583) ~[spring-context-5.3.24.jar:5.3.24] at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:147) ~[spring-boot-2.7.6.jar:2.7.6] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:731) ~[spring-boot-2.7.6.jar:2.7.6] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:408) ~[spring-boot-2.7.6.jar:2.7.6] at org.springframework.boot.SpringApplication.run(SpringApplication.java:307) ~[spring-boot-2.7.6.jar:2.7.6] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1303) ~[spring-boot-2.7.6.jar:2.7.6] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1292) ~[spring-boot-2.7.6.jar:2.7.6] at com.group.libraryapp.LibraryAppApplication.main(LibraryAppApplication.java:10) ~[main/:na]Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.zaxxer.hikari.HikariDataSource]: Factory method 'dataSource' threw exception; nested exception is java.lang.IllegalStateException: Cannot load driver class: com.mysql.cj.jdbc.Driver at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:658) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:638) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1352) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1195) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:582) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1391) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1311) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:887) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:791) ~[spring-beans-5.3.24.jar:5.3.24] ... 21 common frames omittedCaused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.zaxxer.hikari.HikariDataSource]: Factory method 'dataSource' threw exception; nested exception is java.lang.IllegalStateException: Cannot load driver class: com.mysql.cj.jdbc.Driver at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:653) ~[spring-beans-5.3.24.jar:5.3.24] ... 35 common frames omittedCaused by: java.lang.IllegalStateException: Cannot load driver class: com.mysql.cj.jdbc.Driver at org.springframework.util.Assert.state(Assert.java:97) ~[spring-core-5.3.24.jar:5.3.24] at org.springframework.boot.autoconfigure.jdbc.DataSourceProperties.determineDriverClassName(DataSourceProperties.java:171) ~[spring-boot-autoconfigure-2.7.6.jar:2.7.6] at org.springframework.boot.autoconfigure.jdbc.DataSourceProperties.initializeDataSourceBuilder(DataSourceProperties.java:123) ~[spring-boot-autoconfigure-2.7.6.jar:2.7.6] at org.springframework.boot.autoconfigure.jdbc.DataSourceConfiguration.createDataSource(DataSourceConfiguration.java:48) ~[spring-boot-autoconfigure-2.7.6.jar:2.7.6] at org.springframework.boot.autoconfigure.jdbc.DataSourceConfiguration$Hikari.dataSource(DataSourceConfiguration.java:90) ~[spring-boot-autoconfigure-2.7.6.jar:2.7.6] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na] at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) ~[spring-beans-5.3.24.jar:5.3.24] ... 36 common frames omitted기존에 저랑 같은 문제를 갖고 있는 학우 분 코멘트 따라서runtimeOnly 'com.mysql:mysql-connector-j'기존 runtimeOnly 의존성을 지우고 해당 코드를 추가해줬지만 여전히 같은 에러가 나옵니다.어떻게 해결하면 좋을까요?
-
해결됨(2026) 일주일만에 합격하는 정보처리기사 실기
반복문 for 이중일때
반복문 for 이중일때 ..왜두번째 조건문부터 증가하나요 이해가안갑니다!! 더불어 건의사항이 있는데강의듣다가 바로 질문남길수있는 시스템이면 좋겠습니다. 스크린샷도안되고 불편하네요.또 강의재생중 화면 안꺼지도록 할수없나요?일일이 핸드폰기기설정들어가서 하고있는데 상당히 번거롭네요ㅜ 어려운 섹션이나 영상 설명은 질문으로 꼭 남겨주세요.기출문제를 풀다가 막힌 개념이 있나요? 질문으로 회차나 번호, 개념을 예시로 질문해주세요. 답변에 도움이 됩니다.이론 문제는 통합본 PDF 파일로 제공될 예정입니다. (6월 중 업로드 예정)합격을 가르는 것은 역시 코드해석문제. 이론을 외울 시간이 없다면 코드에 익숙해지고, 중요 개념을 몇 가지 외워가면 합격할 수 있습니다.
-
해결됨토비의 스프링 6 - 이해와 원리
스프링 입문, 초보에게도 괜찮은지
안녕하세요! 토비님, 제가 현재 JAVA와 DB를 공부하고 스프링으로 넘어가려고 합니다.다른 스프링 강의들은 구버전이던가 겉핥기 식 강의가 많은걸 후기로 많이 봤습니다.그래서 최신 버전이기도 하고 수강평에 초보자가 들어도 괜찮다해서 스프링 입문을 토비님 강의로 시작하려하는데 괜찮을지 고민이되네요,,!
-
해결됨토비의 스프링 6 - 이해와 원리
@Transactional 에 대해서 질문이 있습니다.
모든 강의를 듣고 따라하면서 재미나게 실습했습니다.그 중에서롤백테스트할 때jakarta.transaction.Transactional또는org.springframework.transaction.annotation.Transactional의@Transactional만을 사용하면 정상동작합니다. 그런데,org.springframework.transaction.annotation.Transactional@Transactional(readOnly = true)readOnly = true 를 사용하여 테스트를 하면 insert 가 진행되지 않을 것을 예상했는데 진행이 되었습니다.왜 그런지 궁금합니다. 그리고,인프런안의 Kotlin 강좌중 추천할만한 강의가 있을까요?어제 유튜브에서 최근의 건강에 대해서 언급하셨는데,건강하고 늘 행복하게 보내세요.
-
해결됨(2026) 일주일만에 합격하는 정보처리기사 실기
typedef 강좌
4분05초쯤에,(ㄱ)에는 -> 이게 이해가 가는데(ㄴ)에도 -> 이거인가요?d2가 포인터라서 -> 이렇게 접근하는건 알겠습니다근데 *d2는 포인터에들어있는 값에서 접근하는거라서 저는 . 이라고 생각했는데 -> 이게 들어가는게 잘 이해가지 않습니다.
-
해결됨객체지향 개념에 바탕을 둔 JAVA 프로그래밍
공지
강좌 운영이나 강의 내용에 관해 궁금한 점이 있으면 자유롭게 나누어주세요.교수자, 수강생 누구나 글쓰기와 댓글 쓰기가 가능합니다.
-
해결됨[자바/Java] 문과생도 이해하는 DFS 알고리즘! - 입문편
graph를 2차원 배열 또는 List로 하는 기준을 어떤식으로 잡으면 좋을까요...?
아직 2차원 배열 또는 List로 해야되는것을 선택하는 기준이 잘 안잡히는데 문제에서 원하는 출력 형태가 연결된 모든 것들을 출력하는 느낌으로 질문한다면 List 이고, 그외에는 2차원 배열로 하면 될까요...? ㅠㅠ
-
해결됨자바 프로그래밍
공지
강좌 운영이나 강의 내용에 관해 궁금한 점이 있으면 자유롭게 나누어주세요.교수자, 수강생 누구나 글쓰기와 댓글 쓰기가 가능합니다.
-
미해결김영한의 실전 자바 - 중급 2편
섹션 10. 문제와 풀이 19분30초
영한이형 종이에 그려서 푼다고 하셨는데어떤 식으로 그리는지 볼 수 있을까요?
-
해결됨(2026) 일주일만에 합격하는 정보처리기사 실기
23년 1회 println(st.b) ?
상기 문제 중 println 두번째 st.b는 정적변수이자 인스턴스 변수로 0이 아닌지요 st.a 가 인스턴스 변수로 20인 것을 보면 st.b 또한 인스턴스 변수로 0이 되는 것이 아닌지 궁금합니다.
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
수업내용 중 환경변수 JAVA_HOME 에 설정값 관련문의
컴퓨터 돋보기에서 시스템 환경변수 편집 >고급 > 환경변수 들어가서 환경변수 JAVA_HOME을 최초엔 C:\Program Files\Java\jdk-8.0.345.1-hotspot\라고 설정되어있는데강의 마지막부에 갑자기 여 끝에 마지막에 bin 붙이셨는데 저도 따라 수정해서 bin 붙여야하나요?이미 "PATH"에 %JAVA_HOME%\bin 이 되어 있는데요?
-
해결됨김영한의 실전 자바 - 중급 1편
문제풀이2 TestString7 공백제거 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 공백 제거 풀이를 보면서 의문이 생겨서 질문을 남깁니다.공백 제거 하는것 을 보면 trim 메서드, strip 메서드가 있는것을 확인 할수가 있는데요.왜 굳이 이렇게 나눈 이유가 뭘까? 라는 생각이 듭니다.그냥 strip으로 통일해서 없애면 되는게 아닌가?라는 생각이요.이렇게 나눈 이유가 있을 것 같은데...이유를 알려주실수 있으신가요? 그리고 현업 에서는 trim 메서드 만 사용하는지 아니면 strip 메서드만 사용하는지 아니면 혼용해서 사용하는지 알고 싶네요.답변 부탁 드립니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
H2 데이터베이스 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]test.mv.db 파일 생성된 것 확인하고 그다음에 jdbc:h2:tcp://localhost/~/test이거 복사 붙여넣기 해서 연결 눌렀더니 사진처럼 연결이 안되네요 이거 관련된 질문 찾아봤는데 파일 지우고 다시 만들라는데 윈도우 cmd에서 touch 명령어가 안먹히는데 어떡하나요?
-
해결됨자바 9부터 자바 21까지
JPMS을 사용하면 빌드 툴 없이 모듈 구성이 가능하다
강사님 안녕하세요 !자바 9 모듈 학습을 하다가 의문점이 생겨서 질문을 드립니다.JPMS을 사용하면 빌드 툴 없이 모듈 구성이 가능하다라는 말이 잘 이해가 되지 않습니다.plugins { id 'java-library' } group = 'com.example' version = '1.0-SNAPSHOT' repositories { mavenCentral() } dependencies { api(project(":domain")) testImplementation platform('org.junit:junit-bom:5.10.0') testImplementation 'org.junit.jupiter:junit-jupiter' } test { useJUnitPlatform() }이렇게 build.gradle 파일 내에 추가로 설정을 해야 접근이 가능하게 되는데 이거는 gradle 빌드를 사용한게 아닌건가요 ?testImplementation platform('org.junit:junit-bom:5.10.0')이렇게 maven을 통해서 가져오는 게 아니라서 빌드툴을 사용하지 않았다고 이해하면 될까요?
-
해결됨(2026) 일주일만에 합격하는 정보처리기사 실기
8번 강이는 문제풀이가 맞나요?
8번강의는 문제풀이가 아니라 문제를 풀어라고 숙제내는것 같습니다.풀이의 느낌이 하나도 안나고 강의만 봐서는 왜 정답인지 너무 알기 힘드네요
-
미해결김영한의 실전 자바 - 중급 2편
해시 알고리즘6 - 해시 충돌 구현 메모리 구조 관련 질문드립니다!
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요 영한님 항상 정성이 담긴 강의해주셔서 대단히 감사합니다:)다름이 아니라 해당 부분 강의를 들었을 때 LinkedList와 배열의 조합으로 메모리 구조가 잘 떠오르지 않아서 제가 생각한 부분이 맞는지 질문드리는 점 양해 부탁드립니다(_ _)LinkedList 인덱스 배열[9] 부분에 9와 99가 같이 들어가는데요, 영한님께서 설명해주셨던 LinkedList 강의 부분 메모리 구조 그림으로 예를 든다면 배열[9] 부분에 노드가 이런식으로 두 개가 생성되는 것이 제가 이해한 부분이 맞을지 질문드립니다!항상 감사합니다 :))
-
해결됨(2026) 일주일만에 합격하는 정보처리기사 실기
교재
교재는 어디서받을수있나요? 이론말고 전체교재
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
값 타입 컬렉션 정말 쓰면 안되나요??
안녕하세요 영한님! 질문이있어서 찾아왔습니다. 현재 프로젝트를 진행중인데 한줄로 요약하면 기준 영양 성분에 맞추어 부족,과잉 영양분을 판별해 주는 프로젝트입니다. 저는 기준 영양성분을 ENUM 타입으로 관리하자는 입장이였습니다. 그 이유는 1) 저희 서비스는 적정영양성분 부족과잉을 판별 하는데 매번 DB를 조회해서 findProperAmountByName("단백질") 을 매번 같은 적정량을 조회하는 게 부담스럽다. => Enum 타입으로 탄수화물의 적정량을 넣어두면 훨씬 편하게 조회할 수 있을 것이다.2) findProperAmountByName("단백질") 은 현재 코드만으로는 DB에 어떤 영양소가 있는지도 모르고 확인하기 어렵다. ENUM 타입으로 묶으면 CARBON_HYDRATE,PROTEIN 등등 이렇게 묶어서 편하게 관리할 수 있다. 이렇게 생각하고 또 개발을 진행중에 있었습니다. 그러던 와중에 "영양제" 라는 컨텐츠에 탄수화물, 단백질 이 부족할 때 좋은 영양제라는 의미로 "탄수화물","단백질" 이라는 키워드를 쓰고 싶을 때 <아래는 영양제 칼럼>@ElementCollection(targetClass = StandardNutrient.class) @JoinTable(name = "StandardNutrient",joinColumns = @JoinColumn(name = "drug_id")) @Column(name ="StandardNutrientName", nullable = false) @Enumerated(EnumType.STRING) private Set<StandardNutrient> efficientNutrient = new HashSet<>();이렇게 쓰고 싶은 마음이 굴둑 같습니다. 이렇게 했을 때 발생할 수 있는 단점에 대해 알고 싶습니다. (StandardNutrient는 Enum 타입입니다. )1) 일단 StandareNutrient 의 종류가 바뀔일이 절대 없습니다!2) 이 서비스의 Manager 만 영양제를 등록할 수 있습니다. 3) List 대신 Set 을 사용함으로써 다 delete 한이후 insert 하지도 않습니다. 어떻게 생각하시나요?
-
미해결자바 동시성 프로그래밍 [리액티브 프로그래밍 Part.1]
AtomicIntegerGetAndUpdateExample 예시가 부자연스럽습니다.
AtomicInteger의 getAndUpdate가 람다를 적용하기 전의 값을 반환하므로,해당 메소드의 반환 값을 출금 후 잔고가 아니고, 출금 전 잔고로 표현하는 것이 의미가 맞습니다. 추가로 출금 전의 잔고가 출금액 보다 작아야 잔고 부족으로 출금이 실패한다고 표현해야 자연스러운 것 같습니다. 해당 예시를 다음과 같이 수정했습니다.// main function for (int i = 0; i < 5; i++) { new Thread(() -> { int withdrawalAmount = 500; // 출금액 int beforeUpdatedBalance = accountBalance.getAndUpdate(balance -> { if (balance >= withdrawalAmount) { return balance - withdrawalAmount; // 출금 성공 } else { return balance; // 출금 실패 } }); if (beforeUpdatedBalance < withdrawalAmount) { System.out.println(Thread.currentThread().getName() + " : 잔고 부족으로 출금 실패"); } else { System.out.println(Thread.currentThread().getName() + " : 출금 전 잔고: " + beforeUpdatedBalance); } }).start(); } 강의 잘 듣고 있습니다. 감사합니다 🙂