묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
동시성 이슈 원인에 대해 질문드립니다.
안녕하세요. 강의 잘 듣고 있습니다. 4분 17초부터 동시성 이슈의 원인을 db select, update하는 과정이 순서가 보장되지 않아 생기는 문제라고 설명해주시는데요. 해당 관점에 더해서 "stock을 select하고 와서 quantity 변수를 수정할때도 메모리상에 read,update,write가 이루어질텐데 여기서도 스레드들이 메모리 접근 순서를 보장할수 없기때문에 이와 같은 동시성 이슈가 생긴다" 라는 생각도 맞을까요?답변부탁드립니다.감사합니다.
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
스프링 부트 2.7.9 native query 에러
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.혹시 저와 같이 에러가 발생하는 분들이 있을 수도 있을 것 같아서 여기다 글을 적습니다!스프링 부트 2.7.9 버전으로 진행하다 named lock 부분에서 native query를 사용하니 org.springframework.beans.factory.UnsatisfiedDependencyException 이러 에러가 발생하더라구요! 그래서 이런저런 방법을 찾아보다가 혹시나 해서 스프링 부트 2.7.9 를 강의 버전에 맞춰 2.7.0 으로 바꿨더니 해결이 되었습니다.혹시나 저와 같이 오류가 나시는 분들은 참고해주세요!!(근데 오류가 나는 이유까지는 모르겠네요 ㅠㅠ)
-
해결됨성공적인 진짜 iOS 개발자 되기 [기초부터 실무까지]
맵 랜드마크 영상 잘림 확인부탁드립니다
맵 랜드마크 영상 Search Controller 파트 내용 중 앞부분이 전 영상과 이어지지 않는 것 같습니다. (서치 테이블뷰 작성 내용없음)앞 부분이 짤린 걸까요?
-
미해결성공적인 진짜 iOS 개발자 되기 [기초부터 실무까지]
Main.sync 관련 질문입니다.
학습하면서 어려움이 있으면 DispatchQueue.global().async { DispatchQueue.main.sync { Thread.sleep(forTimeInterval: 1) print("finish1") } }위 코드의 굵은 코드들이 실행될때, 어떤 thread들이 실행되고 있는지 설명 부탁드리고 싶습니다. 이렇게 thread가 진행된다고 이해하면 맞나요?
-
미해결성공적인 진짜 iOS 개발자 되기 [기초부터 실무까지]
섹션 8. 앱 만들기 - 맵 랜드마크 에 누락된 부분이 있는 것 같습니다.
2번째 영상과 3번째 영상 사이에 SearchResultTableViewController 작성 부분이 누락된 것 같습니다. 확인 부탁드립니다.
-
미해결고수가 되는 파이썬 : 동시성과 병렬성 문법 배우기 Feat. 멀티스레딩 vs 멀티프로세싱 (Inflearn Original)
강의 정리한 것들
제가 강의 들으면서 VSC나 노트패드로 필기하고 따라하면서 따로 더 조사한 것들을 모았는데요그렇게 level1부터 4까지 완강했습니다. 이것들을 개인 유튜브, 깃헙, 노션, 블로그 같은 곳에 올려도 될까요?나중에 포트폴리오로 쓰고 싶기도 하고 개인 유튜브 영상을 만들 수도 있을 거 같습니다.물론 강의에 나온 대본을 따라한다는 것이 아니고 코드나 내용들이죠.
-
미해결성공적인 진짜 iOS 개발자 되기 [기초부터 실무까지]
[앱 만들기 - ToDo List] 챕터 TableView 만들기에서
강의에서는 ViewController의 createrTodo() 메소드에 아무런 구현도 하지 않았는데 마지막에 `+` 버튼으로 상세 화면으로 이동하는 모습이 나옵니다. xib으로 뷰컨트롤러 생성 후 네비게이션 컨트롤러에 푸쉬하는 내용이 동영상에서 빠진거같네요.
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
lettuce vs reddisson 실무에서 도입 시 고려하는 부분에 대해서 설명할 때 질문있습니다.
lettuce와 같은 경우는 락에 대한 재시도가 필요하지 않아도 사용하고,reddisson는 재시도가 필요한 경우 사용한다고 설명들었습니다.그런데 lettuce는 spinLock 기법으로 lock에 대해서 계속적으로 계속적으로 점유하려고 하는 방식으로 설명들었습니다.재시도가 필요하지 않는 lock이라는게, 제가 이해한 것과는 다른 내용일까요?궁금합니다!
-
미해결운영체제 공룡책 강의
퀴즈 7번의 답에 대한 질문입니다.
Quiz 7의 답안은 4로 표기되어 있습니다.atomic_variable 명령어는 변수에 대한 접근을 제어하는 하드웨어적 명령어교수님이 수업 시간에 설명하신 내용 중 일부를 살펴보면, "An atomic variable can be used to ensure mutual exclusion in situations."라는 내용이 있는데, mutual exclusion에 대해서 설명하실 때,"If process P_i is executing in its critical section, then no other processes can be executing in their critical section."이라고 말씀하셨습니다. 즉, atomic variable은 mutual exclusion을 ensure하기 위해 다른 프로세스(혹은 쓰레드)가 critical-section에 있는 변수에 접근하는 것을 제어(handle)하는 하드웨어적 명령어로 해석할 수 있지 않을까요? 답안에 대한 상세한 해설을 원하는 질문은 아니지만, 저처럼 위 선지를 해석하면 어떻게 되는지 의견 부탁드립니다!
-
해결됨재고시스템으로 알아보는 동시성이슈 해결방법
Spring Boot 3.0.2~ nativeQuery 작성시 에러
안녕하세요 강의듣다가 막혔다 해결한 부분이 있어서 혹여나 동일한 문제를 겪고 있으신 분이 계실까봐 공유드립니다.named lock파트의 native query를 작성하는 부분에서 강의 코드와 동일하게 작성하였음에도 불구하고 스프링 빈을 초기화 하는 과정에서 다음과 같은 에러를 만나게 되었습니다.작성한 코드 @Query("select get_lock(:key, 3000)", nativeQuery = true) fun getLock(key: String) @Query("select release_lock(:key)", nativeQuery = true) fun releaseLock(key: String)발생한 에러Caused by: org.springframework.data.repository.query.QueryCreationException: Could not create query for public abstract void com.waterfogsw.cucurrentsolutions.domain.LockRepository.getLock(java.lang.String); Reason: Cannot invoke "String.contains(java.lang.CharSequence)" because "variable" is null at app//org.springframework.data.repository.query.QueryCreationException.create(QueryCreationException.java:101) at app//org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.lookupQuery(QueryExecutorMethodInterceptor.java:115) at app//org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.mapMethodsToQuery(QueryExecutorMethodInterceptor.java:99) at app//org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.lambda$new$0(QueryExecutorMethodInterceptor.java:88) at java.base@17.0.6/java.util.Optional.map(Optional.java:260) at app//org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.<init>(QueryExecutorMethodInterceptor.java:88) at app//org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepository(RepositoryFactorySupport.java:357) at app//org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.lambda$afterPropertiesSet$5(RepositoryFactoryBeanSupport.java:279) at app//org.springframework.data.util.Lazy.getNullable(Lazy.java:245) at app//org.springframework.data.util.Lazy.get(Lazy.java:114) at app//org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.afterPropertiesSet(RepositoryFactoryBeanSupport.java:285) at app//org.springframework.data.jpa.repository.support.JpaRepositoryFactoryBean.afterPropertiesSet(JpaRepositoryFactoryBean.java:132) at app//org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1798) at app//org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1748) ... 122 more Caused by: java.lang.NullPointerException: Cannot invoke "String.contains(java.lang.CharSequence)" because "variable" is null at org.springframework.data.jpa.repository.query.QueryUtils.createCountQueryFor(QueryUtils.java:620) at org.springframework.data.jpa.repository.query.DefaultQueryEnhancer.createCountQueryFor(DefaultQueryEnhancer.java:49) at org.springframework.data.jpa.repository.query.StringQuery.deriveCountQuery(StringQuery.java:111) at org.springframework.data.jpa.repository.query.AbstractStringBasedJpaQuery.<init>(AbstractStringBasedJpaQuery.java:82) at org.springframework.data.jpa.repository.query.NativeJpaQuery.<init>(NativeJpaQuery.java:58) at org.springframework.data.jpa.repository.query.JpaQueryFactory.fromMethodWithQueryString(JpaQueryFactory.java:53) at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$DeclaredQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:170) at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$CreateIfNotFoundQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:252) at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$AbstractQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:95) at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.lookupQuery(QueryExecutorMethodInterceptor.java:111) ... 134 more 동일한 강의를 수강중이던 지인분과 함께 비교해본 결과 스프링 부트 버전 문제임을 확인하였습니다.지인분은 data jpa 3.0.1 버전을 사용중이셨고, 저는 data jpa 3.0.3버전을 사용하였는데 3.0.2 이상 버전에서 nativeQuery=true 사용시 NullPointerException이 발생하는 이슈가 있음을 알려드립니다.저는 부트버전을 3.0.1로 다운그레이드하여 정상적으로 실습 진행할 수 있었습니다 :)https://github.com/spring-projects/spring-data-jpa/issues/2812
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
PessimisticLock 질문
강력한 데이터 정합성을 보장한다는 Pessimistic Lock이 데이터 자체에 Lock을 거는 방식이라고 한다면 여기서 적용되는 락 기능의 범위가 조회를 통해 얻은 Stock 엔티티 자체를 말하는 건가요 아니면 Stock 테이블 내 모든 값들을 접근하는데 있어 lock이 필요하다는 건가요~~?
-
미해결운영체제 공룡책 강의
이해하고 있는것이 맞는건지 궁금합니다 ㅠㅠ
안녕하세요. 교수님!하드웨어를 제어하고, 애플리케이션 프로그램의 서비스를 제공하며 사용자가 컴퓨터를 사용할 수 있도록 매개역할을 해주는 소프트웨어를 우리가 운영체제라고 한다고 알려주셨는데요! 여기서 '애플리케이션 프로그램의 서비스를 제공'한다는 말이 무슨 말인지 이해를 잘 못하겠습니다..
-
미해결운영체제 공룡책 강의
타우시간
이 식에서 처음 식을 구하면 Tn=10 이라서T0에 대해 구하면 T(n+1) 은 10이 되는거 아닌가요?영상에선 앞의 a*Tn 의 Tn 은 10 이고 (1-a)*Tn 의 Tn 은 6으로 하시는것 같은데둘다 같은 Tn 인데 왜그런건가요?
-
미해결운영체제 공룡책 강의
퀴즈1 1번 질문합니다 !
퀴즈 1의 1번 질문합니다 ! 4지선다형 문제의 답 하나를 알려주었는데 왜 받은 정보량이 2인가요 ? 이해를 못해서 질문 올립니다 !
-
해결됨파이썬 동시성 프로그래밍 : 데이터 수집부터 웹 개발까지 (feat. FastAPI)
db 생성이 안됩니다
db 등록이 안되네요 윈도우입니다.https://yamea-guide.tistory.com/entry/atlas-MongoError-user-is-not-allowed-to-do-action-find-on이 글 참고해서 해봤는데도 안되요 ㅠ
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
추가로 동시성 해결하는 방법
이번 강의에서 나온 방법말고도 자바에서 동시성을 해결하는 방법 중에 쓰레드 로컬을 사용하는 방법도 있는 것으로 압니다. 근데 이번 재고감소 로직에서 적용해보려고 하니까 코드작성이 잘 안되더라구요. 이번 강의예제에서와 같이 계속 변수값이 변하는 상황에서는 쓰레드 로컬을 적용하기 어려운건가요?
-
해결됨파이썬 동시성 프로그래밍 : 데이터 수집부터 웹 개발까지 (feat. FastAPI)
강사님 강의때 사용하신 강의자료나 그림같은건 어디 있을까요 ?ㅠ
강의 내용에 도움이 될거같아서 주소나 첨부자료 보내주시면 강의 들을때 같이 활용해보도록 하겠습니다 감사합니다
-
미해결성공적인 진짜 iOS 개발자 되기 [기초부터 실무까지]
data task
data task가 정확히 무엇인가요?강의를 여러 번 돌려보는데 정확한 설명이 안 나오는 것 같아서요..
-
해결됨파이썬 동시성 프로그래밍 : 데이터 수집부터 웹 개발까지 (feat. FastAPI)
git 주소
강사님 이해안되서 git좀 참고하려고하는데 강의하신 자료랑 git주소좀 알려주세요 ..
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
Transactional 주석 처리에 대한 질문과, 강의 도중 여러 질문
안녕하세요, 강의 잘 듣고 있습니다. 지금까지 발생한 질문들에 대해서 문의드리려 합니다. Transactional 을 주석처리해도 해당 StockService 와 Repository 인터페이스가 잘 동작하는 모습을 확인할 수 있습니다. (듣다가도 당연히 오류날줄 알았습니다)Data Jpa 를 활요하지 않고 일반적인 Jpa Repository 를 직접 만들어서 (em을 사용하는) 시도를 해봤는데 Transactional 이 없으니 예상했던 오류가 그대로 발생하는 것 같았습니다. JpaRepository 인터페이스에 들어가보니, @NoRepositoryBean 이라는 어노테이션만이 붙어 있고, 그냥 다른 Repo를 만들지 못하도록 달아져 있는 것이라는 것을 확인하였습니다. 작동하는 이유가 Data Jpa 가 제공해주는 Repository interface 를 사용해서 인 것 같은데, 어떤 원리로 작동이 가능한건지 알 수 있을까요? Synchronize 를 사용해도 우선 동작을 하는 이유는 @Transactional 의 동작 방식 때문이라고 설명해주시며, 예시 클래스를 짜서 보여주셨습니다. public void decrease(){ startTransaction(); myStockService.decrease(); endTransaction(); }트랜젝션이란 DB와의 통신을 위해 연결을 짓는 행위로 알고 있는데, DB는 공유 자원인 만큼 당연히 동시성 제어가 되어 있어야 하는 것이 아닌가 생각이 들었습니다. 가령, 위에서 startTx, endTx 를 하는 부분에서 세마포어 처리 등을 해서 교착상태가 발생하지 않도록 설계가 되어 있어야 하지 않나 싶은 생각이 들었는데, @Transactional 에서 그런 것을 처리 하지 않아서 이와 같은 상황이 발생하는게 맞을까요? (강사님한테 문의드리는게 좀 이상한 부분일 수도 있지만, 왜 그런 처리를 안해놨을지 궁금.. 합니다) 감사합니다.