묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
AtomicInteger.get()을 CAS 연산 후 반환값으로 사용하면 안 되는 이유 공유
AtomicInteger.get()을 CAS 연산 후 반환값으로 사용하면 안 되는 이유 🚨 핵심 문제: 원자성에 대해서 다시 생각해보기CAS 연산의 원자성은 compareAndSet() 호출 자체에만 적용됨CAS 성공 후 get() 호출은 완전히 별개의 연산두 연산 사이에 다른 스레드가 개입 가능멀티스레드 환경에서는 언제든지 다른 스레드가 개입 가능개발자는 OS가 중간에 어떤 스레드를 호출할지 알 수 없음 🔍 문제 발생 메커니즘1. 시간적 틈(Time Gap) 존재result = atomicInteger.compareAndSet(getValue, getValue + 1); // ✅ 원자적 // ← 이 시점에서 다른 스레드가 값을 변경할 수 있음 return atomicInteger.get(); // ❌ 별개의 연산, 원자성 보장 안됨 2. 스레드 스케줄링의 불확실성sleep(100) 동안 CPU가 다른 스레드로 전환CAS 성공 직후에도 스케줄러가 해당 스레드를 중단시킬 수 있음먼저 시작된 스레드가 먼저 완료된다는 보장 없음 📊 실제 문제 시나리오초기값: atomicInteger = 0 Thread A: getValue = 0 Thread A: compareAndSet(0, 1) 성공! → atomicInteger = 1 Thread A: CPU 스케줄러에 의해 중단됨 Thread B: getValue = 1 Thread B: compareAndSet(1, 2) 성공! → atomicInteger = 2 Thread A: 재개됨 Thread A: atomicInteger.get() 호출 → 2 반환 ❌ 결과: Thread A가 실제로는 0→1로 증가시켰지만, 2를 반환하게 됨 ✅ 올바른 해결책: getValue + 1 사용동작 원리private static int incrementAndGet(AtomicInteger atomicInteger) { int getValue; boolean result; do { getValue = atomicInteger.get(); // 현재값 저장 result = atomicInteger.compareAndSet( // CAS 연산 getValue, getValue + 1 ); } while (!result); return getValue + 1; // CAS에서 사용한 기댓값 + 1 } 장점CAS 연산 시점의 값 고정: getValue는 CAS 연산에서 사용한 정확한 기댓값다른 스레드 개입 무관: 이후 다른 스레드가 값을 어떻게 변경하든 영향받지 않음메서드 의미 보장: "이 메서드가 실제로 설정한 값"을 정확히 반환 🎯 핵심 교훈❌ 잘못된 가정"CAS 성공 후 바로 get()을 호출하면 방금 설정한 값을 가져올 것이다" ✅ 올바른 이해원자성은 단일 연산에만 적용연산 간의 순서나 연속성은 보장되지 않음멀티스레드 환경에서는 언제든지 다른 스레드가 개입 가능개발자는 OS가 중간에 어떤 스레드를 호출할지 알 수 없음 💡 실무 적용점AtomicInteger의 내장 메서드 활용// 직접 구현하지 말고 내장 메서드 사용 int result = atomicInteger.incrementAndGet(); CAS 패턴 사용 시 주의사항연산 결과는 CAS에서 사용한 값을 기준으로 계산별도의 get() 호출로 "현재값"을 가져오려 하지 말 것원자성의 범위 명확히 이해단일 메서드 호출 = 원자적여러 메서드 호출의 조합 = 원자적이지 않음
-
해결됨웹소켓/STOMP 채팅서비스(spring, vue, redis)
웹소켓 서버 재배포시 고려해야 할 상황 질문
안녕하세요. 우선 좋은 강의 만들어주셔서 정말 감사드립니다. 한가지 질문이 있습니다. 만약 spring boot 이용해서 stomp 프로토콜을 이용해서 채팅 서비스를 구축 한다고 하였을 때 특정 사용자가 최초 웹소켓 connection 연결 후 해당 웹소켓 서버가 재배포 했을때 고려해야 될 상황이 있습니다. 그럼 프론트 서버에서는 기존에 연결되었던 프론트 서버 정보는 모두 삭제가 될텐데요. 이렇게 된다고 하면 사용자는 채팅 페이지에서 채팅 서비스가 멈춤 현상이 발생 할 것 같습니다. 이것을 해결하기 위해 특정 프론트 서버 정보는 백엔드 서버 메모리에 저장 하는 것보다 외부 서버에 (Ex> Redis) 관리 해야 할까요?
-
미해결바이브 코딩으로 만드는 재미있는 재무제표 (커서 ai)
무료버전이라 그런가요 .. accept 버튼이 안보이네요 파일 형태로 자동으로 만들어주는 기능이없어요
무료버전이라 그런가요 .. accept 버튼이 안보이네요 파일 형태로 자동으로 만들어주는 기능이없어요
-
해결됨한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
함수 사용식 문의합니다
강의에서function Header () {}와 const Header = () => {}이 식이 똑같다고 하셔서function Header () {} 이 식으로 컴포넌트header.jsx파일에 붙혀넣었더니 페이지오류가 나오더라구요import로 연결할땐 차이가 있는걸까요?
-
미해결김영한의 실전 자바 - 중급 1편
내부 클래스의 바깥 클래스 참조
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]교재 챕터7(중첩클래스, 내부클래스) 16쪽에서 "실제로는 내부 인스턴스는 바깥 인스턴스의 참조를 보관"이라고 나와있는데, 정확히 어느 공간에 저장하는건가요?
-
미해결FlutterFlow 쉽게하는 노코드 앱개발
icon 과 iconbuttn 의 기능차이가 뭐가 있나요
선생님~icon 과 iconbuttn 의 기능차이가 뭐가 있나요
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
gradlew.bat이 되지 않습니다.
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요?아니오[질문 내용]libs파일이 없어서 gradlew.bat을 해봤는데 결과창이 나오질 않고 아무런 반응이 없습니다..
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
빌드 오류
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 아니오3. 질문 잘하기 메뉴얼을 읽어보셨나요? 아니오[질문 내용]경로까진 들어왔는데 gradlew.bat, gradlew, ./gradlew을 해도 아무것도 되지 않고 내부 또는 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아니라고 뜹니다.
-
미해결실전에서 바로 써먹는 Kafka 입문
Kafka timeout 설정
안녕하세요.보통 RestTemplate, WebClient, FeignClient 등으로 외부 요청 등을 시도할 경우에는 timeout 설정을 중요하게 생각하는데, 카프카에서는 Connection Timeout, Read Timeout 등과 같은 셋팅 값을 몇 초로 설정해야할까요? 그리고 몇 초에 해당하는 값을 정하는 기준이 어떻게 될까요?
-
미해결[Unity6] 함께 만들어가는 서바이벌 게임 개발 - 스팀 출시 도전기
21. 화염구에서 CardSelector 문제
그동안 수업을 정말 열심히 가르쳐주셔서 아주 즐겁게 들었습니다. 감사드립니다.하지만 제가 어디서부터 무언가를 빠뜨렸는지 이런 오류가 생겼는데 이걸 어떻게 해결해야 할지 모르겠습니다.NullReferenceException: Object reference not set to an instance of an objectCardSelector.Initalize () (at Assets/00.scripts/UI/CardSelector.cs:17)Base_Canvas.SelectCard () (at Assets/00.scripts/UI/Base_Canvas.cs:73)Base_Canvas.Start () (at Assets/00.scripts/UI/Base_Canvas.cs:25)현재 이런 오류가 나고 있습니다. 실행하면 낙뢰 카드만 3개가 나오고 눌러도 진행이 안됩니다.Base_Canvas에서private void Start() 여기서 SelectCard();이 부분을 지우면 실행은 됩니다만, 이렇게 해결하는 것은 아닌 것 같아서 질문합니다.저는 21.화염구 강의를 듣고 있던 사람인데,그동안 열심히 오류를 해결해왔지만 이번엔 어떻게 해결해야할지 모르겠습니다.
-
해결됨[취업폭격기] 공공기관 전산직(IT) 취업 준비를 위한 정규과정 (기초~고급)
구글 폼 작성 완료했습니다!
깃 허브 권한 부탁드립니다!
-
미해결아바타 커뮤니티앱 만들기 (React Native Expo)
headershown 관련 질문
[2-2] 네비게이션 구조 설정 with Expo Router여기서 최상단 _layout.tsx뿐만 아니라 모든_layout.tsx 에 모두 headershown을 false로 하는 이유가 따로 있는지 궁금합니다!
-
해결됨코딩 없이 AI 자동화 전문가가 되는 법, n8n 완벽 가이드
n8n 에서 생성한 AI Bot 외부 접속은 되는데 채팅은 불가
어떤 강의에 대한 질문인지 자세하게 알려주시면 답변을 드리는데 도움이 됩니다. 스크린샷윈도우키 + 쉬프트키 + S(윈도우)을 자세히 첨부하시면 답변 드리는데 많은 도움이 됩니다. 동영상 재생 관련 같은 인프런 서비스 관련 문의는 1:1 문의하기를 이용해 주세요 n8n으로 chatbot을 만들고 외부에서 링크로 접속해서 chat 화면에 접속하는 것까지 진행했습니다. 그런데, 질문을 하면 n8n에서 정상 작동하던 것이 Error: Failed to receive response 라는 메시지만 출력합니다. n8n의 로그를 확인해도, output 이 없는데도 성공한 것으로 나옵니다. 무엇을 확인해봐야할까요? .
-
해결됨코딩 없이 AI 자동화 전문가가 되는 법, n8n 완벽 가이드
localhost:5678 주소 입력했는데 이메일 입력 하라고 나옵니다
localhost:5678 입력했는데 아래와 같이 이메일을 입력하고 나옵니다. 지난 주 강의들을때는 주소만 입력하면 n8n에 접속이 됐는데 지금은 어떤 부분이 문제일까요? 네이버, 지메일 이메일과 비밀번호를 입력해도 첨부한 캡쳐 화면 우측 하단 메세지만 나옵니다. 어떤 이메일과 비밀번호를 입력하는 건가요?
-
해결됨350개의 개인 앱을 만들어 월급의 7배 수익을 달성한 방법
애드몹 앱 스토어 추가 시 출시된 앱이 검색되지 않는 현상
안녕하세요. 프로그래밍좀비님!좀비님 강의를 듣고 이번에 2번째 앱을 출시하게 되었는데요.앱 출시된 지는 2일이 지났고 앱 출시하자마자 애드몹 실제 광고 키를 넣고 게시된지는 1일도 되지 않은 상태입니다. 첫번째 앱을 만들고 나서도 애드몹에서 앱 스토어 추가할 떄 앱 검색이 몇일 지나야 검색이 되더라구요. 혹시 원래 이런 것일까요? 아니면 제가 애드몹 광고 셋팅하는 방식이 잘못되어서 그런 것일까요?[애드몹 셋팅 진행한 방법]<첫번쨰 앱>- 애드몹 앱 추가 -> 광고 단위 추가 -> 앱 출시(실제 키 넣은 상태로 바로 출시)<두번째 앱>- 애드몹 앱 추가 -> 앱 출시(실제 키 넣지 않은 상태) -> 광고 단위 추가 후 실제키 넣고 앱 게시
-
미해결Next.js 완벽 마스터 (v15): 노션 기반 개발자 블로그 만들기 (with 커서AI)
스타일이 적용 안되는 문제
안녕하세요, 선생님.현재 블로그 상세 목차 UI까지 강의 수강했는데 코드 수정한 후 local에 띄어보니 스타일이 적용 안되는 문제가 발생했습니다. 선생님 github에서 해당 강의 관련 코드 다 가져와서 복붙 했는데도 저러네요...제가 왕초보라서 도와주시면 감사하겠습니다!
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
@EnableWebSecurity
@EnableWebSecurity 꼭 붙여야 된다고 하셨는데 안붙여도 움직이는데 붙이고 안붙이고의 차이가 있나요?의존성에 spring-security 들어가 있으면 AutoConfiguration 에 의해 자동구성된다면 붙일 이유가 없을것 같은데 뭔가 다른게 더 초기화작업에 추가되거나 하는건가요?
-
미해결김영한의 실전 데이터베이스 입문 - 모든 IT인을 위한 SQL 첫걸음(SQL부터 차근차근)
자바 강의 듣고있는데
병행해서 할까요?아니면 자바 강의를 완강하고 들을까요?
-
해결됨챗GPT와 파이썬으로 주식 자동매매 앱 및 웹 투자 리포트 만들기
pykrx 설치 실패
https://inf.run/zqFYv 이 게시글과 실패 로그가 완전히 동일하고 댓글대로 했지만 해결되지 않았습니다.파이썬 32bit 와 호환이 잘 안되는 것 같은데 32bit 파이썬으로 꼭 설치해야하는 것이죠?혹시 패키지별로 어떤 버젼들을 설치하셨는지,requirements.txt 알려주실 수 있으실까요? 감사합니다.
-
해결됨LangGraph를 활용한 AI Agent 개발 (feat. MCP)
yfinance 429 Client Error 문제
429 Client Error: Too Many Requests for url: https://query2.finance.yahoo.com/v10/finance/quoteSummary/SNOW?modules=secFilings&corsDomain=finance.yahoo.com&formatted=false&symbol=SNOW&crumb=Edge%3A+Too+Many+Requests안녕하세요 강사님, 현재 3.7 Multi agent 강의 듣고 따라하고 있는데, yfinance 로 agent 를 통해 필요한 정보를 받아오도록 시키면 위와 같은 문제가 뜹니다. 확인해보니 url request를 단기간에 너무 많이 하는게 원인인것 같다는데, Agent를 통해 tool로 알아서 호출 하는 방식이니 횟수를 제한하거나 할 방법이 없습니다. 혹시 어떻게 해결해야 할지 아시면 해결책을 제시해주시면 감사하겠습니다.