묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
main에서 start 호출 시
public class HelloThreadMain { public static void main(String[] args) { System.out.println(Thread.currentThread().getName() + ": main() start"); HelloThread helloThread = new HelloThread(); System.out.println(Thread.currentThread().getName() + ": start() 호출 전"); helloThread.start(); System.out.println(Thread.currentThread().getName() + ": start() 호출 후"); System.out.println(Thread.currentThread().getName() + ": main() end"); } } 개인적으로 궁금한 부분이 있는데요. main에서 start를 호출할 때 main 스택 프레임 위에 start 스택 프레임이 쌓이나요? 쌓이고 바로 삭제되는 건가요?
-
해결됨김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
섹션 3. 교안에 @Override가 빠진 것 같습니다.
섹션 3. 스레드 제어와 생명 주기1[스레드의 생명 주기 - 코드] 파트 첫 번째 코드에서MyRunnable 정적 클래스의 run() 메서드 위에 @Override가 빠진 것 같습니다.물론 코드를 실행하는 점에 있어 문제는 없지만 혹시나 하고 글 남깁니다.
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
자바에서 스레드풀을 생성한다면 어떻게되나요?
질문이 몇가지 더 있어 질문남깁니다.1.톰켓을 실행했을때 톰켓의 스레드풀에 있는 스레드에 의해war의 클래스파일 로직들이 실행된다고하셨는데 만약 자바 로직에서 forkjoinpool같은 스레드풀을 또 생성하면 톰켓의 스레드풀과 별도로 스레드풀이 하나 더 만들어지는건가요? 수업외 질문이라면 죄송합니다 ㅠㅠ
-
해결됨실전! Django 활용
pg_bigm으로 product의 name필드로 상품 검색
안녕하세요, 강의 아주 재밌게 듣고 있습니다! 정말 필요한 강의 제공해주셔서 감사드립니다. 이번에 상품 검색 - 한글 full-text search를 듣고 궁금한게 생겨 질문 남깁니다.이전 강의에서는 tags에 영문 데이터를 추가하여, search_vector과 역인덱스를 생성하여 상품을 검색했을때는 tags가 변경되었을 때, search_vector과 역인덱스도 수정해주는 코드를 마이그레이션에 추가하셨는데요. name에는 따로 그런 코드를 작성하지 않아서, name도 수정될 때 역인덱스가 수정되는지 궁금합니다.
-
해결됨실전! Django 활용
product의 name 필드로 상품 검색시 생성한 gin index사용 여부
안녕하세요 강사님!상품검색 - 한글 full-text search 구현 부분 듣다가 궁금한 점이 생겨 질문 남깁니다.product_list_handler에서 query가 있을 때, products를 필터하는 orm에서 100개로 갯수를 제한하는데요.강의에서처럼 explain으로 쿼리 실행계획을 볼 때, 데이터가 얼마 없을때는 full scan을 하고, 많으면 모델에서 생성한 'product_name_gin_index'를 통해 scan을 하더라구요.언제부터 인덱스에서 스캔하나 궁금해서 limit를 늘려가면서 확인했는데, 제 로컬에서는 limit가 12,800개가 넘어갈 때 인덱스를 사용하더라구요. 이렇게 되면 100개로 제한해서 쿼리하면 어차피 인덱스를 사용하지 않을것 같은데 맞나요?맞다면 결과적으로 product_name_gin_index 인덱스를 사용하지 않는데, 이 인덱스를 생성한게 의미가 있을까요?? 응답할 때 페이지네이션을 필요하니까 한번에 10,000개 이상 보낼 일은 없을 것 같은데 인덱스를 생성한 장점이 있는지 궁금합니다!def product_list_handler( request: HttpRequest, category_id: int | None = None, query: str | None = None ): """ 쿼리 파라미터인 category_id, query에 따라 상품 목록 조회 API """ if query: products = Product.objects.filter( name__contains=query, status=ProductStatus.ACTIVE )[:100] ... (생략) pass
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
자바 스레드관련 질문이 있습니다!
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]여기에 질문 내용을 남겨주세요.예전부터 궁금하던건데 고급강의에서 스레드를 다뤄주셔서 너무 감사드립니다.궁금했던 질문1.war,jar 파일이 tomcat 에서 구동되면 강의에서 설명해준것처럼 tomcat 프로그램을 프로세스가 작동할텐데 동시에 3개의 요청이 tomcat 으로 들어오게 된다면 tomcat 을 돌리고 있는 프로세스는 총 3개의 스레드를 스레드풀에서 가져와서 각 각 요청에 1개씩 스레드를 할당하여 was 가 멀티스레드 처럼 작동되게 되는건가요?2.tomcat 으로 war,jar 파일을 배포하고 운영하면 tomcat 의 스레드가 war,jar 의 소스를 1줄씩 읽는거고 war,jar(자바) 에서는 스레드가 따로 생성되지 않는건가요? (자바에서 멀티스레드 사용하지 않은경우)3.2번이 맞다고 했을때 만약 자바소스에서 멀티스레드를(총3개 스레드사용) 사용했다면 tomcat 의 스레드는 1개일텐데 어떻게 멀티스레드가 되는건가요..? 자바에서 스레드를 2개 더 생성시켜버리는건가요? 궁금합니다 ㅠ4.그리고 자바에서 스레드 숫자를 설정해버리면(4개로 설정) tomcat 에서 4명의 사용자 요청만 동시에 처리할 수 가 있다고 하셨는데자바에서 스레드 숫자를 설정하는순간 톰캣의 스레드풀에서 4개의 스레드만 사용가능해지는건가요..?
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
임포트가 안되요 ㅠ
자바21로 맞췄는데 왜 timeunit을 못가져올까요?>
-
미해결자바 동시성 프로그래밍 [리액티브 프로그래밍 Part.1]
synchronized = 모니터
안녕하세요!좋은강의 해주셔서 감사합니다!저는 모니터라는 개념에 대해 잘 이해를 못하다가 이번 강의를 통해 좀 알것 같기도 한데 애매한 부분이 있어서 질문드리고자 합니다~강의 내용을 보면 synchronized = 모니터라고 볼 수 있을 것 같은데, 41분쯤에 장표에서 나온 모니터는 lock.wait()과 lock.notify()로 구현되어있잖아요!그런데 저는 지금까지 동기화 코드를 작성할때 Object클래스의 wait()이나 notify()함수를 사용안하고, synchronized만 사용해도 동기화가 잘 됬던것 같거든요!synchronized만 사용할때랑 자바 모니터로 구현할때랑 무엇이 다른건지 아직 좀 잘 모르겠습니다..
-
미해결파이썬 동시성 프로그래밍 : 데이터 수집부터 웹 개발까지 (feat. FastAPI, async, await)
몽고Db 기초 질문
안녕하세요 강사님mongoDB를 이번에 처음 사용하는데,세팅하는 과정에서 궁금한게 생겨 질문 남깁니다.저는 지금까지 mysql로 토이프로젝트를 진행했었는데요~fastAPI 기반의 프로그램을 실행시키기 전에 항상 mysql 을 구동시켜 놓았었습니다.그런데 이번 mongoDB의 경우엔, 별도로 mongoDB 를 실행시키지 않고 바로 app을 실행시키더군요 !몽고DB도 결국 별도의 프로그램이기에, webapp이 띄워지기 전에 미리 프로세스로 올라온 상태이어야할 것 같은데, 맞을까요? 그렇다면 mongoDB가 프로세스로 띄워지는 순간은 언제인가요?혹시 __init__.py 에서 connect() 함수에서 프로그램을 띄우고 연결하는 작업을 진행하는걸까요?
-
미해결파이썬 동시성 프로그래밍 : 데이터 수집부터 웹 개발까지 (feat. FastAPI, async, await)
async await 문법 질문
선생님 안녕하세요좋은 강의 감사합니다. async await 등의 문법 관련해서 질문이 있습니다. 코루틴을 만들때 언제 async 나 await을 써야하는지 잘 이해가 되지 않고, 인터넷을 찾아봐도 이해가 잘 되지 않습니다. 이것을 설명하는 자료나 공식문서가 따로 있나요? 예를 들어, 4-2 코드 파일에서 # (a) 부분 async def fetcher(session, url): async with session.get(url) as response: # (b) 부분 return await response.text() # (c) 부분 async def main(): urls = ["https://naver.com", "https://google.com", "https://instagram.com"] * 10 async with aiohttp.ClientSession() as session: # (d) 부분 # (e) 부분 result = await asyncio.gather(*[fetcher(session, url) for url in urls]) "비동기 함수를 만들때 def 앞에 async 라는 것을 쓰는 것이다" 는 이해를 하겠는데,예를 들어 (b) 부분에서 with 앞에 왜 async를 써야 하는지 (함수를 정의할때 async를 썼는데 왜 함수 안의 with 절 앞에 또 async를 써줘야 하나요?) , (c)에서 response.text() 앞에 왜 await을 써줘야 하는지 (async로 정의된 함수안에는 await을 무조건 써줘야 하나요? 그럼 모든 줄에 await을 써줘야 하나요? 아니라면 await을 써주는 줄과 안써주는 줄은 어떻게 구분하죠?)(d) 에서도 왜 async를 써주는지, (e) 에서는 await을 정의해주면서 왜 그 위에 urls 를 정의할때는 안 쓴것인지 이런 문법 자체가 궁금합니다. 혹시 이런것을 설명해주는 자료나 링크도 제공이 가능할까요?
-
해결됨김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
섹션 1. 교안에 오타있습니다!
멀티태스킹과 멀티프로세싱ㄴ첫 번째 줄에 '기념 개념들에 대해서' -> 기본 개념들에 대해서단일 프로그램 실행ㄴ그림5 다음 설명에서 '프로그램 안에 있는 코드를 모두 후에야'-> 모두 실행한 후에야
-
미해결고수가 되는 파이썬 : 동시성과 병렬성 문법 배우기 Feat. 멀티스레딩 vs 멀티프로세싱 (Inflearn Original)
queue 를 사용하는 이유?
선생님 안녕하세요 좋은 강의 감사드립니다. multiprocessing(5) - Queue, Pipe 강의 에서 질문이 있습니다. 파이썬 파일 2-6-1 을 보면 queue 를 사용해서 변수를 집어넣고 출력하는데요. 이것과 queue를 사용하지 않은 2-5-1 파일의 본질적인 차이점을 모르겠습니다.똑같이 메인 프로세스 안에서 서브 프로세스를 실행하고, join을 사용하고, 각 서브프로세스가 끝나면 값을 출력하는 구조인 것 같거든요.queue를 사용하는 이유가 뭔가요?
-
해결됨고수가 되는 파이썬 : 동시성과 병렬성 문법 배우기 Feat. 멀티스레딩 vs 멀티프로세싱 (Inflearn Original)
멀티프로세싱 관련 질문
선생님 안녕하세요좋은 강의 감사합니다. multiprocessing(2) - Naming, Parallel processing12분 경에서 질문이 있습니다. for i in range(1, 10): # 1 ~ 100 적절히 조절 # 생성; name은 str을 받기 때문에 형변환 t = Process(name=str(i), target=square, args=(i,)) # 배열에 담기 - 한번에 풀면서 join 하기 위해서 processes.append(t) # 시작 t.start() 이런식으로 코드가 실행될때, 왜 서브 프로세스가 순서대로 실행이 되지 않는지 잘 이해가 가지 않습니다.분명히 for loop에서 i가 순서대로 증가하면서 t.start()를 하거든요. 예를 들어, i =1 일때 t가 정의되고 t.start()가 된다음에 다시 i=2 가 되면서 반복되는 식으로요.그럼 "논리상" 1번째 서브 프로세스부터 순차적으로 실행되어야 하는 것 아닌가요?
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
유틸 클래스에 대해..
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]여기에 질문 내용을 남겨주세요.로거 만들기에서 로거 클래스 생성할때 abstract 키워드를 추가해서 추상 클래스로 만들었는데, 그 이유가 클래스 내에 static 메서드만 있으니, 굳이 인스턴스로 만들 필요가 없어서 그런건가요??그러면 추상 클래스 말고, 일반 클래스로 만들고 기본 생성자를 private으로 해서 인스턴스화 하지 못하도록 하는 건 어떤가요?
-
해결됨김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
첨부한 이미지에 대해 질문이 있습니다.
위 이미지는 멀티태스킹과 멀티프로세싱 파트에서 나온 이미지인데요 이번 프로세스와 스레드 수업을 듣고 위 이미지에 대해 의문이 생겼습니다.프로그램A는 프로세스A, 프로그램A 안에 있는 1,2,3,4는 스레드라고 봐도 될까요?슬리드
-
미해결자바 동시성 프로그래밍 [리액티브 프로그래밍 Part.1]
Thread의 Context Switching 문의드립니다.
Context Switch 강의에서 예제로 3개의 Thread를 생성해서 실행하는데, 이게 Context Swtiching에 의한 예로 볼 수 있다고 해주셨습니다.근데 이전에 ThreadPoolExecutor를 이용할 경우 여러 개의 코어 프로세스를 이용하여 Thread를 병렬성 + 동시성 실행시킬 수 있었는데, 해당하는 예제에서는 하나의 코어에서 3개의 Thread를 실행시켜서 컨텍스트 스위칭이 일어나는 것으로 보아도 괜찮은걸까요?만약 예제 코드가 ThreadPoolExecutor처럼 3개의 코어가 있을 때 3개의 스레드가 개별적으로 동작한다면 컨텍스트 스위칭이 일어나지 않는다라고 볼 수 있을 것 같아서요!기본적으로 SpringBoot를 이용하여 Tomcat 서버로 구동이될 때, 요청마다 생성되는 쓰레드는 여러 개의 코어에 분배되어 처리되는 것일까요?
-
미해결앨런 iOS Concurrency(동시성) - 디스패치큐와 오퍼레이션큐의 이해
수업자료 markup 에 대해 궁금합니다!
좀 샛길로 샌거 같지만... 이런 질문에도 답변해주신다면 너무 감사합니다ㅠㅠ//: 로 마크업 다시는거 혹시 수정은 어떻게 하는지 알 수 있을까요..? 수업자료로 코드 주신걸 보다가 궁금해졌는데요. 한줄로 마크업 다는거는 //: 이렇게 하니까 달아지던데, 저는 xcode에서 바로 적용이 되더라고요. https://developer.apple.com/library/archive/documentation/Xcode/Reference/xcode_markup_formatting_ref/AddingMarkup.html#//apple_ref/doc/uid/TP40016497-CH100-SW1이 문서 보니까 markup in source editor 랑 rendered documentation mode 에서 다르게 보여지는거 같은데...이건또 어떻게 설정하는지도 모르겠고요ㅠㅠㅠ
-
미해결파이썬 동시성 프로그래밍 : 데이터 수집부터 웹 개발까지 (feat. FastAPI, async, await)
멀티 스레딩 질문..
안녕하세요 강사님 !동시성과 병렬성의 개념을 멀티스레딩과 연계시켜 이해하는게 어려워 질문 남깁니다.asyncio 의 경우에는, 싱글 스레드에서 이벤트루프를 이용해서 동시성을 구현했다는 점은 이해가 되었습니다. 그래서 asyncio는 동시성일 수 밖에 없다는 걸로 이해됩니다.이에 반해, 멀티 스레딩은 동시성일 수도 있고 병렬성일 수도 있다고 생각하는데 제가 맞게 이해한건지 헷갈립니다.저는 이렇게 이해했는데 한번 과정이 맞는지 검토 요청드립니다.우선 [c언어]로 구현된 하나의 프로세스만 띄워져 있고, 해당 프로세스가 여러 쓰레드를 생성하는 상황이라고 가정하겠습니다.이때 멀티 스레딩은, 컴퓨터 환경이 [싱글] 코어였다면, 여러개의 스레드가 결국엔 컨텍스트 스위칭되어 concurrency하게 처리될 수 밖에 없기에 이는 동시성이라고 말할 수 있고,멀티 코어였다면 여러 쓰레드가 병렬적으로 [각각의 코어]에서 처리가 될수 있기에 이런 경우는 병렬성이라고 말할 수 있을 것 같은데 맞을까요?즉, 멀티스레딩으로 구현된 프로그램을 두고 이를 동시성이라 부를지 병렬성으로 부를지는 컴퓨터환경이 싱글코어냐 멀티코어냐에 좌우되는지가 궁금합니다.만약 그런 논리라면 멀티프로세싱도 마찬가지일까요..멀티프로세싱은 병렬처리라고 생각하고 있긴했는데, 위와 같은 논리라면 싱글코어의 환경에선 여러 프로세스가 존재하더라도 결국엔 os에 의해 컨텍스트 스위칭 되면서 한순간에 하나의 프로세스만 실행되는거니까 동시성으로 전락해버리는게 아닌가..생각됩니다.
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
재고시스템 동시성 문제 해결에 redis incr을 사용해도 되나요?
재고 시스템 강의 듣고 난 이후에 쿠폰시스템 강의 들었는데요,재고시스템 강의에서 사용한 lock 방식은 성능에 영향이 있으니 쿠폰발급 강의에서 사용했던 redis incr 명령과 set을 사용해서 재고시스템 문제도 해결할 수 있지 않을까 생각이 드는데요. 가능한 방법인가요?
-
미해결운영체제 공룡책 강의
강사님. 수료 기준이 있을까요?
강의를 이제 막 시작하려고 하는데, 맨 마직막 챕터까지 수강 완료후 수료기준이 있는지 문의드립니다!!