묻고 답해요
131만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
PessimisticLock을 분산락으로 활용하는 질문에 대한 답변 남기겠습니다.
github repository url: https://github.com/developer-yoni/ecommerce/tree/study/concurrency/redis여기서 study/concurrency/redis 브랜치를 확인해주시면 됩니다.StockServiceTest의 400번째 라인부터 503번째 라인까지테스트 코드가 작성되어 있습니다.큰 흐름은 동시성 이슈가 발생가능한 Stock에는 Lock을 걸지 않고,다른 Entity인 Market Entity에 PessimisticLock을 걸어,PessimisticLock을 분산락으로 활용하려는 시도 입니다.여기서 4_1 테스트는 Market에 PessimisticLock을 거는 트랜잭션과 Stock의 재고를 감소시키는 트랜잭션을 하나의 트랜잭션으로 묶었고,4_2 테스트는 별개의 트랜잭션으로 분리했습니다.이때 질문은 다음과 같습니다Q1. 동시성 이슈가 일어나지 않는 다른 Entity에 PessimisticLock을걸어 분산락처럼 활용하는게 문제가 되지 않을지 궁금합니다.혹시 문제가 된다면 , 어떤 측면에서 문제가 될지 궁금합니다.왜냐하면 어차피 동시성 이슈가 일어날 수 있는 측면의 값을 커밋하여 update함과 동시에PessmisticLock을 반환하는 것이니 문제가 되지 않을것이라고 생각했기 때문입니다.Q2. PessimisticLock을 건 트랜잭션이 커밋되거나 롤백될 때 비로소 PessmisticLock이 반환된다는 점을 근거로,4_2 테스트에서는 일부로 재고감소를 먼저 커밋한 후,Market의 PessimisticLock을 커밋하여,반드시 업데이트가 이뤄난 후 락을 반환하는것을 의도하였습니다.그러나 제 의도와 다르게 4_2 테스트는 계속 lock이 걸려있는?흐름을 보이면서 테스트에 실패합니다.그원인을 잘 모르겠습니다.바쁘신 와중에 답변 달아주셔서 감사합니다 강사님.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
h2 초기 실행 문제
The Web Console server could not be started. Possible cause: another server is already running at http://192.168.0.25:8082Root cause: Exception opening port "8082" (port may be in use), cause: "java.net.BindException: Address already in use: bind" [90061-224]Exception in thread "main" org.h2.jdbc.JdbcSQLNonTransientConnectionException: Exception opening port "8082" (port may be in use), cause: "java.net.BindException: Address already in use: bind" [90061-224]at org.h2.message.DbException.getJdbcSQLException(DbException.java:690)at org.h2.message.DbException.getJdbcSQLException(DbException.java:489)at org.h2.message.DbException.get(DbException.java:212)at org.h2.util.NetUtils.createServerSocketTry(NetUtils.java:211)at org.h2.util.NetUtils.createServerSocket(NetUtils.java:177)at org.h2.server.web.WebServer.start(WebServer.java:412)at org.h2.tools.Server.start(Server.java:548)at org.h2.tools.Console.runTool(Console.java:216)at org.h2.tools.Console.main(Console.java:72)Caused by: java.net.BindException: Address already in use: bindat java.base/sun.nio.ch.Net.bind0(Native Method)at java.base/sun.nio.ch.Net.bind(Net.java:565)at java.base/sun.nio.ch.Net.bind(Net.java:554)at java.base/sun.nio.ch.NioSocketImpl.bind(NioSocketImpl.java:636)at java.base/java.net.ServerSocket.bind(ServerSocket.java:391)at java.base/java.net.ServerSocket.<init>(ServerSocket.java:278)at java.base/java.net.ServerSocket.<init>(ServerSocket.java:171)at org.h2.util.NetUtils.createServerSocketTry(NetUtils.java:207)... 5 morecmd 에서 h2.bat 실행 시 이렇게 포트가 이미 사용중이라고 뜨는데요 포트 번호 바꿔서 사용해도 될까요? 8083 같은거로요!
-
미해결따라하면서 배우는 고박사의 유니티 기초
다른 강의도 듣고 싶어요
https://www.youtube.com/@unitynote/playlists 에서 2D기초강의를 듣고 싶은데 2D횡스크롤 게임(예 : 메탈슬러그, 슈퍼마리오)을 만들려면 어느 강의를 추천할수 있나요?
-
미해결윤재성의 Oracle SQL Database 11g PL/SQL Developer
급여 최저치 문제
안녕하세요 선생님,좋은 강의 보여주셔서 감사합니다. 다름이 아니라 23강에서 문제 풀이 도중 이해가 안 가는 부분이 있어서 이렇게 여쭙습니다.<문제>-- 각 부서별 급여 최저치보다 더 많이 받는 사원들의 사원번호, 이름, 급여를 가져온다.<선생님 풀이>select empno, ename, salfrom empwhere sal > all (select min(sal) from emp group by deptno); 이렇게 진행되면 각 부서별 최저치에서 가장 높은 급여와 비교되는 것이 아닌가 싶어 질문드립니다. 총 인원이 14명인 경우 가장 최저치를 받는 사람들 3명(부서가 3개)을 제외하면 11명이 나와야 할 듯한데 선생님 답에서는 8명만 나와서요...
-
해결됨블렌더 기초 : 3D그래픽 여행 아이콘을 만들며 배우는 블렌더 애니메이션 기초 과정
모델링 중 face가 뭉개지는 현상 문의
강사님 안녕하세요 :) 카드리더기 모델링 중 face 선택 시 스크린샷처럼 뭉개지는 현상이 있어 질문 드립니다. 처음부터 다시 만들어봤는데도 재현되었습니다. X-ray 모드에서 verticies 선택하고 move 하는 과정에서 뭔가 잘못되었나 싶기도 한데 혹시 짐작가시는 부분이 있을까요? 모델링할 때 어떤 부분을 주의해서 그리면 좋을지 궁금합니다 :)
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
Intellij 클래스만들때 질문
[질문 내용]사진처럼 클래스를 만들면 주황색글씨로 뜨는데 혹시 오류가 있어서 그런걸까요? 제 Git 계정이랑 연동해놔서 그런건지 아니면 뭐가 문제가 생겨서 저렇게 주황색으로 되는건지 모르겠습니다.
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
테스트 할 때 궁금한점입니다!
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]테스트 코드를 작성하다가 궁금한점입니다! assertion을 사용할 때 JUnit이 아닌 AssertJ 를 추천하는 이유가 있을까요?
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
ArrayEx9 문제 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요! 좋은 수업 감사합니다:)배열 문제와 풀이3(ArrayEx9)와 관련하여 질문드립니다. 초기 접근 방식-상품 등록의 제약 조건인 10개 제한을 반복문의 조건으로 사용하고자 했습니다. 1의 문제-배열의 길이를 변수로 설정하여 배열의 길이를 바꾸고자 하였지만, 배열은 최초 생성될 때의 길이가 고정된다는 것을 확인하였습니다. 해결책 탐색배열의 길이를 바꾸는 방법을 찾아보니 총 2가지를 확인했습니다. (새로운 배열을 만든다는 점에서 같은 맥락인 것 같습니다..)-반복문 등을 이용해 배열을 복사하고 길이를 늘려 새로운 배열을 만드는 방법-Array.copyOf()를 사용하여 새로운 배열을 만드는 방법(아직 학습하지 않았습니다.) 질문1) 위의 3의 해결책말고 새로운 배열을 만드는 방법이 더 있나요?2) 실무에서 실제로 제한된 숫자를 정해놓고 배열을 생성하나요? (회원가입에서 아이디와 패스워드의 개념으로 생각했습니다.) 읽어주셔서 감사합니다!
-
미해결Next + React Query로 SNS 서비스 만들기
fresh에 대하여 질문있습니다.
안녕하세요. 제로초님 좋은 강의 감사합니다. 해당 강의에서 fresh 상태일 때는 새로고침을 해도 서버에서 데이터를 가져오지 않고 캐시된 데이터를 사용한다고 하셨습니다. 그래서 fresh 상태일 때 새로고침을 하여 FollowRecommendSection를 트리거 하였고 해당 API가 요청이 되는지 보았습니다.export default function FollowRecommendSection() { const { data } = useQuery<User[]>({ queryKey: ['users', 'followRecommends'], queryFn: getFollowRecommends, staleTime: 60 * 1000, // fresh -> stale, 5분이라는 기준 gcTime: 300 * 1000, }); return data?.map((user) => <FollowRecommend user={user} key={user.id} />); } export async function getFollowRecommends() { const res = await fetch(`http://localhost:9090/api/followRecommends`, { next: { tags: ['users', 'followRecommends'], }, cache: 'no-store', }); ... } 그런데 개발자도구 네트워크 탭에서는 밑에 사진과 같이해당 API가 다시 요청되는것을 확인할 수 있었습니다.fresh라 할지라도 API 요청은 항상 이루어지며 데이터만 캐시된 것을 ?? 가져오는 것인지 궁금합니다. 감사합니다.
-
해결됨Part1: 진짜 왕초보 iOS 배우기(SwiftUI, SwiftData, 2024)
강의 완강하고 앱을 만들어봤어요!
안녕하세요 애그마 쌤 !얼마전 강의 완강하고 4일 동안 틈틈히 개발해서 간단한 앱을 만들어봤습니다,, ㅋㅋㅋ!!자랑하고 싶은데.. 메일 주소가 없어서 일단 여기에 올려요 ㅋㅋㅋ ㅠ직접 만든 첫 앱이라 기분이 좋네요 ㅋㅋ 심사 대처까지 강의에서 알려주셔서 한 번만 리젝당하고 빠르게 통과됐어요 ㅎㅎ좋은 강의 제공해주셔서 감사합니다!!
-
해결됨C개발자를 위한 최소한의 C++
반환유형이 클래스형 참조
안녕하세요 강사님, 반환 유형이 클래스 참조일 때 질문이 있습니다.반환유형이 클래스형인 것보다는 메모리 효율을 위해서 클래스형 참조로 선언을 하는데, 반환하는 참조가 함수 내부에서 생성된 지역 인스턴스의 참조라면 함수 스코프를 벗어나면 해당 인스턴스는 소멸되므로 main함수에서는 참조를 못하게 되는 것 아닌가요?이런 경우에는 반환 유형을 클래스형 참조가 아닌 클래스형으로 선언하는게 적절할까요? 감사합니다!
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
값을 안넘겨주면 똑같이 저도 에러가 나긴 하는데 왜 콘솔창에는 warn이 안뜰까요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]강의에서는 warn이 뜨고 name이 없다라는 콘솔문구가 뜨는데 저는 창을 들어가보면 에러는 똑같이 나는데 warn이 안뜨네여..
-
미해결프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
강의자료 부탁드립니다.
안녕하세요 강의자료 부탁드립니다.
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
MethodEx4
[질문 내용]int 값이 21억 까지로 제한되기에 혹시 이 값을 long으로 바꾸고 싶은데 스캐너에서 롱으로 어떻게 코드를 바꿔야 될지 모르겠습니다. long만 바꾸면 뒤에l이 없어서 int변수로 인식을해서 어떻게 해야될지 모르겠습니다
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
마지막 챕터 질문입니다.
홈 화면과 레이아웃14분에서 resource를 싱크로 나이즈 하는 장면이 나오는데 제화면에서 그버튼이 없는데 혹시 버전이 상승되서 없어진건가요?bootstrap.css 이 파일에서 Cannot resolve '--bs-icon-link-transform' custom property 이렇게 빨간 줄 뜨는데 어떻게 해야 하나요?
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
실행이 되지 않습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]java 와 gradle jvm 버전을 17.0.10으로 설정하고 돌렸습니다. 이런 오류가 발생해서 Upgrade Gradle wrapper to 7.2 version and re-import the project를 클릭해서 grdle 버전을 업그레이드 했습니다. 다시 돌리니 이번에는Cause: class lombok.javac.apt.LombokProcessor (in unnamed module @0x689bd195) cannot access class com.sun.tools.javac.processing.JavacProcessingEnvironment (in module jdk.compiler) because module jdk.compiler does not export com.sun.tools.javac.processing to unnamed module @0x689bd195lombok과 관련된 오류가 발생해서 구글에 검색해보고 롬복 버전을 바꿨습니다. 다시 돌려봤는데또 에러가 발생했습니다.. java 버전과 gradle jvm 버전을 맞췄는데 왜 오류가 발생하는지 모르겠어서 질문드립니다..
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
양방향 연관관계와 연관관계의 주인
안녕하세요! 현재 열심히 공부하고 있는 취준생입니다. 다름이 아니라 지금 복습을 하다가 연관관계의 주인 쪽이 좀 살짝 헷갈려서 질문을 남기게 되었습니다. 제가 이해한 바로는 다대일, 일대다 -> 다(N) 이 연관관계의 주인 , 연관관계의 주인만이 외래키를 등록, 수정 가능하다로 이해했습니다. 지금 제가 첨부한 2번째 사진을 보면 MEMBER 에 TEAM_ID 라는 외래키가 있고 MEMBER 가 다(N) 이기 때문에 연관관계의 주인이다. 여기까지는 완벽하게 이해를 했습니다.근데 제가 지금 헷갈리는 포인트가 뭐냐면, 주인은 mappedBy 속성을 사용할 수 없다고 했습니다. 근데 mappedby 뜻 자체가 ~에 의해 되었다 니까 mappedby = "" 에 오는게 주인 아닌가요?? 결론적으로 제가 궁금한것은 3번째 사진에 @OneToMany(mappedby = "team") 이 부분인데, team 객체와 TEAM_ID 라는 외래키가 연관관계를 맺고 있어서 해준건가요?....ㅠㅜㅜㅜ 너무 헷갈리네요 ㅜㅜㅜㅜㅜ 지금 Member 클래스에 private Team team; 이라는 코드가 있는데, mappedby 뒤에 온 team 이 private Team team 이 team 인거 같은데 왜 mappedby = "team" 이렇게 된건가요?? 외래키와 연관관계를 맺고 있어서 그런건가요?
-
해결됨친절한 블렌더 - [LV.2] 모델링 연습
섹션6 - 캐릭터 모델링 질문 있습니다
캐릭터 손 모델링에서 각각의 손가락을 합쳐줄 때, Auto merge를 켜고 Snap to Vertex도 켠 상태인데 snap을 시켰을 때 점이 합쳐지지 않아요. 어떤 문제인지 궁금합니다ㅠㅠ
-
해결됨친절한 블렌더 - [LV.2] 모델링 연습
1-2 벽 / Y를 눌러도 면끼리 분리가 되지 않을 때
안녕하세요!1-2 강의를 들으며 벽 만들기를 하고 있습니다!그런데 11분 8초 쯤에서 설명 된'앞뒤 벽을 누르고 y를 눌러서 면끼리 분리'를 적용하려고 하는데그대로 이거나 복사..? 되는 현상이 발생해서요 흑흑 ㅠㅠ어떻게 하면 해결할 수 있을까요...? ㅠㅠ
-
미해결[에피소드] 엑셀+파이썬(기초)
데이터프레임 생성도 자동화가가능할까요
안녕하세요 강사님 깔끔한강의 핵심강의 감신드립니다. 데이터프레임 객체를 만들때 프로그램화는 불가능할까요? 반드시 엑셀을 긁어서 범위지정하는방법 밖에 없을까요?? 엑셀 범위에 접근할때 xl내부에 사용되는 범위가 문자열인거같아서 xl()내부에 범위를 문자열로만들어 넣어봤는데 인식하지를 않네요 Xl()함수 내부에 시트와 범위를 변수로 제공해서 사용하는 방법은 없을지 궁금합니다 이것은 드롭다운형태의 유효성검사기능을 이용해 사용자가 각자 다른 시트의 데이터를 직접 드래그하지않아도 변수에다 데이터프레임으로 생성하고자하는 목적입니다